Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Compiladores I
Estructura General de un
Compilador
Estructura General de un Compilador
PROGRAMA SALIDA
FUENTE COMPILADOR
Mensajes
de
Error
Análisis
Léxico
Análisis
Sintáctico
Análisis
Tabla Semántico
de Errores
Símbolos Generación de
Código Intermedio
Optimización
Generación de
Código Destino
Salida
Diseño de Compiladores I - 2008 Estructura General de un Compilador
6
Front End (Análisis)
Fases que dependen del lenguaje fuente
l Análisis Léxico
l Análisis Sintáctico
l Análisis Semántico (Estático)
l Creación de la Tabla de Símbolos
l Generación de Código Intermedio
l Algo de Optimización
l Manejo de errores correspondiente a las fases del
Front End
Diseño de Compiladores I - 2008 Estructura General de un Compilador
7
Back End (Síntesis)
Fases que dependen de la máquina destino
l Generación de la salida
l Optimización
l Manejo de errores correspondiente a las fases del
Back End
l Operaciones sobre la Tabla de Símbolos
Análisis
Léxico
Análisis
Sintáctico
Análisis
Tabla Semántico
de Errores
Símbolos Generación de
Código Intermedio
Optimización
Generación de
Código Destino
Salida
Diseño de Compiladores I - 2008 Estructura General de un Compilador
9
Fases de la Compilación
Programa Fuente
Análisis
Léxico
Análisis
Sintáctico
Análisis
Tabla Semántico
de Errores
Símbolos Generación de
Código Intermedio
Optimización
Generación de
Código Destino
Salida
Diseño de Compiladores I - 2008 Estructura General de un Compilador
10
Fases de la Compilación
Errores
Tabla
de
Símbolos
Programa
Fuente * Análisis
Léxico
Análisis
Sintáctico
Generación
de Código
Salida
Tabla
de
Símbolos
Programa
Fuente
Análisis
Léxico * Análisis
Sintáctico
Generación
de Código
Salida
Tabla
de
Símbolos
if Plazo >= 30
then Tasa := Base + Recargo / 100
else Tasa := Base
l Palabras reservadas.
l Ejemplos: IF, THEN, ELSE
l Operadores
l Ejemplos: ‘+’, ‘>=‘, ‘:=‘
l Cadenas de múltiples caracteres
l Ejemplos: Identificador, Constante
[59] [27] [80] [28] [60] [27] [85] [27] [70] [27]
[73] [28] [61] [27] [85] [27]
Tira de
tokens
Programa Análisis Análisis Generación Salida
Fuente Sintáctico
Léxico de Código
Tabla
de
Símbolos
Tira de
tokens
Programa
Fuente
Análisis
Léxico
Análisis
Sintáctico * Generación
de Código
Salida
Tabla
de
Símbolos
asig
expr
(10) (11)
expr term
(15)
(13)
term term
(16) (16)
ID := ID + ID / CTE
Lista de reglas: 17 16 13 17 16 18 15 11 10
Diseño de Compiladores I - 2008 Estructura General de un Compilador
39
Fases de la Compilación
Errores
Tira de Lista de
tokens reglas
Programa Análisis Análisis Generación Salida
Fuente Sintáctico
Léxico de Código
Tabla
de
Símbolos
Tira de Lista de
tokens reglas
Programa Análisis Análisis Generación Salida
Fuente Sintáctico
Léxico de Código
Tabla
de
Símbolos
B
F
C
A
Polaca L
Inversa
ID +
ID /
ID CTE
ID +
ID /
ID ItoF
CTE
:= 14. …
ID +
15. (ItoF, 100, -)
16. (/, Recargo, [15])
ID /
17. (+, Base, [16])
ID ItoF
18. (:=, Tasa, [17])
CTE 19. …
Árbol Sintáctico Tercetos
14. …
14. …
15. (ItoF, 100, -)
15. (/, Recargo, 100.0)
16. (/, Recargo, [15])
16. (+, Base, [15])
17. (+, Base, [16])
17. (:=, Tasa, [16])
18. (:=, Tasa, [17])
18. …
19. …
Tercetos Tercetos Optimizados
Tira de Lista de
tokens reglas
Programa Análisis Análisis Generación Salida
Fuente Sintáctico
Léxico de Código
Tabla
de
Símbolos
Tira de Lista de
tokens reglas
Programa Análisis Análisis Generación Salida
Fuente Sintáctico
Léxico de Código
Tabla
de
Símbolos