Un compilador compilador es un programa que toma una descripción sintáctica o semántica de un lenguaje de programación y genera un compilador para ese lenguaje [1] .
La sintaxis se expresa como BNF o su derivado y debe cumplir las reglas del método de análisis que se usará en el compilador generado.
La semántica de un lenguaje generalmente se describe asociando un procedimiento de generación de código con cada construcción sintáctica, con el procedimiento necesario llamado cada vez que el analizador reconoce la construcción correspondiente. Por lo tanto, el usuario de los compiladores del compilador en cualquier caso necesita desarrollar estructuras de ejecución y elegir una forma de convertir cada construcción sintáctica de entrada en operaciones de lenguaje de salida o en operaciones de máquina , después de lo cual es necesario escribir los procedimientos reales de generación de código. Por lo tanto, Compiler of Compilers es una herramienta útil para ayudarlo a escribir compiladores, pero nada más.
Estrictamente hablando, el generador del analizador es parte del compilador de compiladores, sin embargo, los dos términos a menudo se usan indistintamente.