ESTRUCTURA DE UN COMPILADOR

Etapa de análisis

Análisis lexicográfico

Divide el programa fuente en los componentes básicos
del lenguaje a compilar. Cada componente básico es una subsecuencia

Análisis Sintáctico

Comprueba que la estructura de los componentes básicos
sea correcta según las reglas gramaticales del lenguaje que se compila.

Análisis Semántico

Comprueba que el programa fuente respeta las directrices
del lenguaje que se compila: chequeo
de tipos, rangos de valores, existencia de variables, etc.

Generación de código intermedio

Genera un código independiente de la
máquina muy parecido al ensamblador. No se genera código máquina

Generación de Código Maquina

Crea un bloque de código máquina
ejecutable, así como los bloques necesarios destinados a contener los datos

Fase de Optimización

La optimización puede realizarse sobre el código
intermedio, sobre el código máquina, o sobre ambos

Construcción Sistemática de Compiladores

La etapa inicial también puede hacer cierta optimización de código e incluye además, el manejo de errores correspondiente a cada una de esas fases.

La etapa final incluye aquellas fases del compilador que dependen de la máquina destino y que, en general, no dependen del lenguaje fuente sino sólo del lenguaje intermedio. En esta etapa, se encuentran aspectos de la fase de generación.

La Tabla de Símbolos

Una función esencial de un compilador es registrar los identificadores de
usuario utilizados en el programa
fuente y reunir información sobre los distintos atributos de cada identificador.