1.4. Agrupamiento de las Fases

Las fases del proceso de compilación se agrupan en una etapa inicial y una etapa final.

  • Etapa inicial

Comprende aquellas fases que dependen principalmente del lenguaje fuente y son en gran parte independiente de la máquina objeto.

- Análisis léxico

  • Análisis sintáctico
  • Análisis semántico
  • Generación de código intermedio
  • Etapa final

Comprende aquellas fases del compilador que dependen de la máquina objeto. No dependen del lenguaje fuente, solo del lenguaje intermedio.

  • Optimización de código
  •  Generación de código

 

El Manejador de Errores y Administrador de la Tabla de Símbolos se utilizan durante todo el proceso de compilación.

  • Pasadas

Normalmente se aplican varias fases de la compilación en una sola pasada, que consiste en la lectura de un archivo de entrada y en la escritura de un archivo de salida.

En la práctica, hay muchas formas de agrupar en pasadas las fases de un compilador, así que es preferible organizar el análisis de la compilación por las fases, en lugar de por las pasadas.

Como ya se señaló, es común agrupar varias fases en una pasada, y entrelazar la actividad de estas fases durante la pasada. Por ejemplo, el análisis léxico, el análisis sintáctico, el análisis semántico y la generación de código intermedio pueden agruparse en una pasada. En ese caso, la cadena de componentes léxicos después del análisis léxico puede traducirse directamente a código intermedio, Con más detalle, el analizador sintáctico puede considerarse como el “encargado’ del control. Este intenta descubrir la estructura gramatical de los componentes léxicos observados: obtiene los componentes léxicos cuando los necesita, llamando al analizador léxico para que le proporcione el siguiente componente léxico. A medida que se descubre la estructura gramatical, el analizador sintáctico llama al generador de código intermedio para que haga el análisis semántico y genere una parte del código.