Un compilador puede ser dividido a nivel macro en dos grandes fases basándonos en la forma en la que compilan, estas son:
- Fase de análisis
- Fase de síntesis
Fase de análisis de un compilador
Esta fase es conocida como el “front-end” de un compilador, la fase de análisis de un compilador lee el código fuente del programa, luego lo divide en partes (tokens y expresiones) y luego hace un análisis léxico, gramático y sintáctico. La fase de análisis genera una representación intermedia del código fuente y la tabla de símbolos, la cual sera enviada como entrada a la fase de síntesis.
Fase de síntesis de un compilador
También conocida como el “back-end” de un compilador, la fase de síntesis genera un programa objetivo con la ayuda del código fuente intermedio y la tabla de símbolos generados en la fase de análisis
Un compilador entonces puede tener una o varias “pasadas”, donde una pasada se refiere a la cantidad de veces que el compilador lee el código fuente a través del programa completo. (ya veremos esto mas adelante).
Que es una fase de un compilador?
Es una etapa distinguible del proceso de compilación,que toma como entrada la salida de la etapa anterior. La fase procesa esta información y el resultado es entonces pasado a la siguiente fase. Una pasada puede tener mas de una fase.
En una visión mas sistemática de esto podemos decir entonces que el proceso de compilación comienza en la mente del desarrollador, ya que la primera fase del proceso de un compilador es “El programador escribe el código fuente”
Esta es la explicación a nivel de arquitectura de un compilador, en los post siguientes nos adentraremos a la cueva del dragón y aprenderemos los conocimientos técnicos para desarrollar cada una de las fases.