A Compiler Generator (CG) is a program that takes, as input, a Language Specification (a Regular Expression (ER), a Grammar (G), etc.) and produces, as output, another program that is a Processor (a Compiler, an Interpreter, or whatever) for the language specified.
Notice that the correct name for this special program should be Language-Processor Generator. However the actual name is indeed Compiler Generator; alternatively, it is also known as Compilers Compiler.
The usefulness of such a program is unquestionable. From a short and concise formal specification of a language, a complex and efficient program is quickly generated with the guarantee that the generated program will recognize all the valid sentences that belong to that language and will transform/translate them in a systematic way.
From a large list of well known Compiler Generators---Yacc, Btyacc, Mlyacc, Happy, Coco/R, CTB, Tools, JavaCC, CUP, SGen, LRC, LISA, Eli, PCCTS, AnTLR, Silver, Sable, ASF+SDF---we chose a subset of them to install and test. To enable the comparasion of the usage of each tool, all of the CG chosen were experimented with the same language, Lavanda, that is a didatic Domain Specific Language used for teaching purposes. Lavanda is specified by the following grammar: LavandaGrammar.
A small set of input texts, to test the compiler generated by each tool, is available here.
An article comparing three compiler generators (Lex/Yacc, LISA and ANTLR-3) ca be found here.
_________________________________________________________ Click here to download this selection of articles as a PDF book.