What is a compiler-compiler?

A compiler-compiler is a program that produces compilers (or parts of them), often in a generic and reusable way to be able to produce many differing compilers. The main job of a compiler-compiler is to generate a parser, which is a component of a compiler that reads and interprets the input code according to the defined grammar.

Common Compiler-Compilers:

Yacc (Yet Another Compiler Compiler): Often used with the Lex lexical analyzer generator to create parsers for C-like languages.

Bison: A GNU tool similar to Yacc but with extensions and additional features.

ANTLR (Another Tool for Language Recognition): A powerful tool for generating parsers in multiple target languages, such as Java, C#, Python, and others.

CUP (Constructor of Useful Parsers): Another parser generator for Java, similar to Yacc.