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 each tool usage, 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.