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.