rtyuiopasdfghjklzxcvbnmqwertyui
opasdfghjklzxcvbnmqwertyuiopa
sdfghjklzxcvbnmqwertyuiopasdfg
Diagrama de estados de un Compilador
hjklzxcvbnmqwertyuiopasdfghjklz
xcvbnmqwertyuiopasdfghjklzxcvb
nmqwertyuiopasdfghjklzxcvbnmq
wertyuiopasdfghjklzxcvbnmqwert
yuiopasdfghjklzxcvbnmqwertyuio
pasdfghjklzxcvbnmqwertyuiopas
dfghjklzxcvbnmqwertyuiopasdfgh
jklzxcvbnmqwertyuiopasdfghjklzx
cvbnmqwertyuiopasdfghjklzxcvb
nmqwertyuiopasdfghjklzxcvbnmq
wertyuiopasdfghjklzxcvbnmqwert
yuiopasdfghjklzxcvbnmrtyuiopas
dfghjklzxcvbnmqwertyuiopasdfgh
jklzxcvbnmqwertyuiopasdfghjklzx
cvbnmqwertyuiopasdfghjklzxcvb
Israel Enrique Jimnez Viana
Programa fuente
Anlisis lxico
Anlisis sintctico
Manejo de la Tabla
de smbolos
Manejo de errores
Anlisis semntico
Generacin de cdigo
intermedio
Optimizacin de cdigo
Generacin de cdigo
Programa objeto
Anlisis lxico
(lineal)
Anlisis sintctico
(jerrquico)
Anlisis semntico
Front end
Optimizacin
de cdigo
Generacin de
cdigo
Back end
(sntesis)
(anlisis)
Front end
Dependiente del lenguaje fuente
Independiente de la mquina objeto para la que se va a generar cdigo
Back end
Independiente del lenguaje fuente
Dependiente del lenguaje objeto
Estructura de un compilador.
Un compilador es un programa, en el que pueden distinguirse dos subprogramas o fases principales:
una fase de anlisis, en la cul se lee el programa fuente y se estudia la estructura y el significado
del mismo; y otra fase de sntesis, en la que se genera el programa objeto.
En un compilador pueden distinguirse, adems, algunas estructuras de datos comunes, la ms
importante de las cuales es la tabla de smbolos, junto con las funciones de gestin de sta y de los
dems elementos del compilador, y de una serie de rutinas auxiliares para deteccin de errores.
Las fases de un compilador son:
Anlisis Lxico: Esta fase se encarga de verificar si todas las cadenas pertenecen o no al lenguaje.
Es decir realiza un anlisis smbolo por smbolo indicando el token por cada uno de los elementos
reconocidos o el error en caso de no reconocer. Este anlisis no logra detectar muchos errores por
su caracterstica.
Ejemplo:
total=valor*5
Luego del anlisis lxico:
id = id * num
Anlisis Sintctico: En esta fase se analiza la estructura de las expresiones en base a gramticas.
Aqu ya se puede determinar si una estructura por ejemplo una expresin matemtica mal formada.
El anlisis que se realiza es jerrquico es decir en base a rboles de derivacin que se obtienen de
las mismas gramticas. Ejemplo: position:=initial + rate*60
Anlisis Semntico: Este anlisis es ms difcil de formalizar, 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.