Compiler-Compilers (Compiler/Parser Generators)
Compiler-compilers are tools that are used to produce a parser from, essentially, a grammar.
The most famous examples of such tools are Lex and Yacc.
- Lex is a lexical analyzer: it transforms a stream of characters into a stream of tokens. Valid tokens are described eg. with regular expressions.
- Yacc (Yet Another Compiler Compiler) is a parser generator: from a grammar-like description, it generates a parser with semantic actions
Usually present on Unix distributions nowadays are Flex (Faster, newer lex) and Bison, a backwards-compatible rewrite of Yacc. By force of habit, though, they're still often referred to as Lex and Yacc.
These tools have been around for a while (since the 70s/80s), but are still very commonly used in C/C++ projects. From the Lex manual:
"The asteroid to kill this dinosaur is still in orbit."