Análisis Léxico: Esta fase se encarga de verificar si
todas las cadenas pertenecen o no al lenguaje. Es decir realiza un análisis
símbolo por símbolo indicando el token por cada uno de los elementos
reconocidos o el error en caso de no reconocer
Análisis
Sintáctico: En esta fase se analiza la estructura
de las expresiones en base a gramáticas. Aquí se determina si una estructura
está bien o mal formada. El análisis que se realiza es jerárquico es decir en
base a árboles de derivación que se obtienen de las mismas gramáticas.
Análisis
Semántico: Este fase se
determina el tipo de los resultados intermedios, comprobar que los argumentos
que tienen un operador pertenecen al conjunto de operadores posible, y si son
compatibles entre sí.
Generación de
código intermedio: El código intermedio es una
representación intermedia explícita del programa fuente. Esta representación
intermedia debe tener dos propiedades importantes: debe ser fácil de producir y
fácil de traducir al programa objeto.
Optimización de
código: Consiste en
realizar una mejora en el código intermedio, para reducir el número de líneas y
hacer que la ejecución sea más rápida
Generación de
código: Se genera el código objeto que por lo
general consiste en código en lenguaje máquina o código en lenguaje
ensamblador.
Manejo de Errores: Los errores encontrados en las diferentes fases de análisis se
envían a un módulo de manejo de errores. En el caso más sencillo, sacará un
mensaje indicando el error, el número de línea donde se ha producido y abortará
el proceso de análisis o traducción.
Tabla de Símbolos: Una tabla de símbolos es una estructura de datos que contiene un
registro por cada identificador. El registro incluye los campos para los
atributos del identificador. El administrador de la tabla de símbolos se
encarga de manejar los accesos a la tabla de símbolos, en cada una de las
etapas de compilación de un programa.
Analizador
Léxico