Beruflich Dokumente
Kultur Dokumente
Conceptualizacin
de Compilador Por qu y para qu estudiar tcnicas de compilacin? Fases de un compilador Clasificacin de los Compiladores Compiladores vs. Intrpretes Temticas abordadas en la materia
ndice
Compilador:
Programa que lee un programa escrito en un lenguaje de programacin y lo traduce a un programa equivalente en otro lenguaje de programacin.
Programa Destino
Programa Fuente
Compilador
Mensajes de Error
Compilador
Forma
parte de los conocimientos que un Lic. en Computacin o un Ingeniero de Software debe poseer.
El funcionamiento de una computadora. El cdigo de mquina generado para las construcciones del lenguaje de programacin. Estrategias de diseo de lenguajes. Etc.
Permite
conocer:
Comprensin
de Programas
Transformar
cdigo
Generar
Cdigo
Anlisis
Aplicaciones
HDL
Lenguaje Intermedio
Manejador de Errores
Generador de Cdigo
Fases de un Compilador
Front-end:
mquina.
Operaciones independientes de la
Anlisis Lexicogrfico Anlisis Sintctico Creacin de Tabla de Smbolos Generacin de Cdigo Intermedio Manejo de Errores
Back-end:
mquina.
Operaciones dependientes de la
Como
hay muchas variantes en las formas en que las fases de un compilador se agrupan, se prefiere hablar de fases antes que pasos. Es comn que en diferentes fases se agrupen en un paso y que la actividad de esas fases se solapen durante un paso (scanner, parser, anlisis semntico, generacin de cdigo intermedio).
Fases de un Compilador
Es
importante notar que deseable tener pocas fases porque la lectura y escritura de archivos consume mucho tiempo.
Ejemplo:
Intermedia-Generacin
de
Fases de un Compilador
Anlisis
Lexicogrfico
Agrupa caracteres en tokens (lexema). Produce mensajes de errores lexicogrficos e intenta recuperarse.
a = a+1 1 Id a 5 = 1 Id a 6 + 3 Num 1
Anlisis
Sintctico
Agrupa los tokens en frases gramaticales. Representa las frases gramaticales como un rbol de parser. Produce mensajes de errores sintcticos. Intenta detectar y recuperarse de los errores.
Anlisis
a=a+1
Sintctico
asig
id
exp
id
num
Anlisis
Semntico
Variables usadas y no definidas. Operandos de tipos compatibles. Invocaciones a procedimientos con el nmero y tipo correctos de parmetros. Nmeros reales no pueden ser usados como subndices de arreglos. Conversin de tipos cuando se permiten las cohersiones.
bool a; a= a + 1 !!!!!!
int a; a= a + 1
Generador
de Cdigo Intermedio
aa1+=
id
id
num
Optimizacin
de Cdigo
Generador
de Cdigo
Simple
pasada
Multi
pasada
Compilador
Recuperar un token
Simple Pasada
Compilador
Multi-Pasada
parser Anlisis Semntico rbol Cdigo
scanner caracteres
Tokens
Cada fase lee los datos desde un archivo y escribe el resultado en otro
Front-end
Back-end
Generacin de Cdigo
Representacin Intermedia Ventajas: Importante Portabilidad El front-end es dependiente del Optimizaciones ms fciles de lenguaje hacer El Back-end es dependiente de la Se pueden combinar los frontmquina end y los back-ends
Intrprete:
Programa que lee un programa escrito en un lenguaje de programacin y produce el resultado de ejecutar tal programa.
Intrprete
Compilador
Intrprete
Se compila una vez seSe traduce cada vez que ejecuta n veces. se ejecuta. El proceso dePermite interaccionar compilacin tiene unams con el cdigo en visin global de todo eltiempo de ejecucin. programa. La ejecucin es msNecesita rpida memoria. menos
Anlisis:
Parte el programa fuente en piezas y crea una representacin intermedia. Construye el programa a partir de la representacin intermedia.
Sntesis:
Partes de la Compilacin
Anlisis
Lineal: El programa se lee de izquierda a derecha y se detectan secuencias de caracteres que tienen un significado colectivo (Tokens). Jerrquico: Los tokens se agrupan jerrquicamente en colecciones anidadas con significado colectivo. Semntico: Se realizan ciertos chequeos que garantizan que las componentes del programa tienen sentido.
Anlisis
Anlisis
Anlisis
Sintxis.
Generadores
de Cdigo Automtico.
Preprocesadores
de dos pasadas
and Link-Editors
Otros Traductores
Tabla
Parser
Manejo
Traduccin Chequeo
de Tipos de Cdigo
Generacin
Compilers:
Principles, Techniques and Tools. Aho, Setti and Ullman. (The Dragon ).
Apuntes
de la materia.
Biliografa