domingo, 20 de noviembre de 2011

Fases del Compilador



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
Un analizador léxico es un programa que recibe como entrada el código fuente de otro programa (secuencia de caracteres) y produce una salida compuesta de tokens (componentes léxicos) o símbolos. Estos tokens sirven para una posterior etapa del proceso de traducción, siendo la entrada para el analizador sintáctico.

No hay comentarios:

Publicar un comentario