En términos generales un compilador puede dividirse en dos fases en función de la forma en que se compila.
Conocido como el extremo frontal del compilador, laanálisis fase del compilador lee el programa fuente, lo divide en partes fundamentales y, a continuación, verifica la existencia de léxico, gramática y errores de sintaxis.La fase de análisis genera una representación intermedia del programa fuente y tabla de símbolos, que deberían ser alimentados a la fase de síntesis como entrada.
Conocido como el back-end del compilador, la fase de síntesis genera al programa de destino con la ayuda de código fuente representación intermedia y tabla de símbolos.
Un compilador puede tener muchas fases y pasa.
Pass : un pase se refiere a la travesía de un compilador a través de todo el programa.
Fase: una fase de un compilador es una etapa distinguible, que toma la entrada de la etapa anterior, los procesos y los rendimientos de salida que puede ser utilizado como entrada para la siguiente etapa. Un pase puede tener más de una fase.