11. A computer-readable device storing computer-readable instructions which, as a result of being executed by a computer, configure the computer to perform a process of generating a set of strings for testing operation of a context-free language compiler, the process comprising acts of: (a) generating a terminal string based, at least in part, on a grammar description comprising a set of production rules, each production rule comprising a replacement string for a non-terminal symbol, the terminal string comprising one or more instances of a terminal symbol; (b) generating a test string replacing, with a value, one or more instances of a terminal symbol in the terminal string; and (c) applying the test string to the context-free language compiler so that the context-free language compiler produces a response based upon the test string; (d) determining whether the response matches an expected response for application of the test string; (e) generating a set of terminal strings by repeating act (a) until each production rule in the set of production rules has been applied at least once; and (f) repeating acts (b), (c), (d) for each terminal string in the set of terminal strings.
11. A computer-readable device storing computer-readable instructions which, as a result of being executed by a computer, configure the computer to perform a process of generating a set of strings for testing operation of a context-free language compiler, the process comprising acts of: (a) generating a terminal string based, at least in part, on a grammar description comprising a set of production rules, each production rule comprising a replacement string for a non-terminal symbol, the terminal string comprising one or more instances of a terminal symbol; (b) generating a test string replacing, with a value, one or more instances of a terminal symbol in the terminal string; and (c) applying the test string to the context-free language compiler so that the context-free language compiler produces a response based upon the test string; (d) determining whether the response matches an expected response for application of the test string; (e) generating a set of terminal strings by repeating act (a) until each production rule in the set of production rules has been applied at least once; and (f) repeating acts (b), (c), (d) for each terminal string in the set of terminal strings. 20. The computer-readable device of claim 11 , wherein act (e) further comprises: (g) collecting statistics relating to a frequency that each production rule has been applied; (h) based on the statistics, reducing a probability of applying a production rule when the production rule has already been applied.