Anda di halaman 1dari 4

qwertyuiopasdfghjklzxcvbnmqwe

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

Diagrama de estados de un Compilador

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

Las fases de un compilador se agrupan en dos partes o etapas: Anlisis y Sntesis

Anlisis lxico
(lineal)
Anlisis sintctico
(jerrquico)
Anlisis semntico
Front end

Generacin de cdigo intermedio

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.

Generacin de Cdigo Intermedio: El cdigo intermedio es una representacin en base a


elementos de 3 y 4 direcciones. Lo que nos permite llegar a la fase de optimizacin de cdigo.
a=b+c
1: + b c T1
2: = a T1
Optimizacin de Cdigo: Consiste en realizar una mejora en el cdigo intermedio, para reducir el
nmero de lneas y hacer que la ejecucin sea ms rpida
a=b+c
1: + b c a
Generacin de Cdigo: Llegamos a la generacin de cdigo ensamblador o cdigo mquina del
procesador que nos interese por ejemplo:
a:=b+c
LOAD B
ADD C
STORE A

Anda mungkin juga menyukai