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. Este análisis no logra detectar muchos errores por su característica.
Ejemplo:
total=valor*5
Luego del análisis léxico:
id = id * num
Análisis Sintáctico: En esta fase se analiza la estructura de las expresiones en base a gramáticas. Aqui ya se puede determinar si una extructura por ejemplo una expresión matemática mal formada. El análisis que se realiza es jerarquico es decir en base a àrboles de derivación que se obtienen de las mismas gramáticas. Ejemplo: position:=initial + rate*60
Análisis Sintáctico: En esta fase se analiza la estructura de las expresiones en base a gramáticas. Aqui ya se puede determinar si una extructura por ejemplo una expresión matemática mal formada. El análisis que se realiza es jerarquico es decir en base a àrboles de derivación que se obtienen de las mismas gramáticas. Ejemplo: position:=initial + rate*60
Análisis Semántico: Este análisis es más dificil de formalizar, determina el tipo de los resultados intermedios, compmrobar que los argumentos que tienen un operador pertenecen al conjunto de operadores posible, y si son compatibles entre sì.
Generación de Código Intemedio: El código intermedio es una representación en base a elementos de 3 y 4 direcciones. Lo que nos permite llegar a la fase de optimizaciòn de código.
a=b+c
1: + b c T1
2: = a T1
Optimización de Código: Consiste en realizar uuna 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
a=b+c
1: + b c a
Generación de Codigo: Llegamos a la generación de código ensamblador o código máquina del procesador que nos interese por ejemplo:
a:=b+c
LOAD B
ADD C
STORE A
Bibliografia:
- Aho Alfred, Compiladores principios técnicas y herramientas
- Garrido Alicia, Diseño de Compiladores, 2002


No hay comentarios:
Publicar un comentario