El escritor del compilador puede usar algunas herramientas especializadas que ayudan a implementar varias fases de un compilador. Estas herramientas ayudan en la creación de un compilador completo o de sus partes. Algunas herramientas de construcción de compiladores de uso común incluyen:
- Generador de analizadores:
produce analizadores de sintaxis (analizadores) a partir de la entrada que se basa en una descripción gramatical del lenguaje de programación o en una gramática libre de contexto. Es útil ya que la fase de análisis de sintaxis es muy compleja y consume más tiempo manual y de compilación.
Ejemplo: PIC, EQM - Scanner Generator:
genera analizadores léxicos a partir de la entrada que consiste en una descripción de expresión regular basada en tokens de un idioma. Genera un autómata finito para reconocer la expresión regular.
Ejemplo: Lex - Motores de traducción dirigidos por sintaxis:
genera código intermedio con formato de tres direcciones a partir de la entrada que consiste en un árbol de análisis. Estos motores tienen rutinas para atravesar el árbol de análisis y luego producen el código intermedio. En esto, cada Node del árbol de análisis está asociado con una o más traducciones. - Generadores automáticos de código:
genera el lenguaje de máquina para una máquina de destino. Cada operación del lenguaje intermedio se traduce usando una colección de reglas y luego el generador de código la toma como entrada. Se utiliza un proceso de coincidencia de plantillas. Una declaración de lenguaje intermedio se reemplaza por su declaración de lenguaje de máquina equivalente utilizando plantillas. - Motores de análisis de flujo de datos:
se utiliza en la optimización de código. El análisis de flujo de datos es una parte clave de la optimización de código que recopila la información, es decir, los valores que fluyen de una parte de un programa a otra. Referir: análisis de flujo de datos en Compiler - Kits de herramientas de construcción del compilador:
proporciona un conjunto integrado de rutinas que ayudan a construir componentes del compilador o en la construcción de varias fases del compilador.