Facultad de Ciencias Exactas

Diseño de Compiladores I

Cursada 2009

 

 

 

Unidad 1    

Introducción a los compiladores. Compilación e interpretación. Ensambladores y compiladores. Cantidad de pasadas. Conversores fuente-fuente. Compiladores incrementales. Autocompiladores. Metacompiladores. Vinculación. Decompiladores. Notaciones para representar implementaciones. Diagramas T.

Unidad 2   

Estructura general de un compilador. Relación entre los tipos de gramáticas y la estructura de los compiladores. Tabla de símbolos. Tabla de palabras reservadas. Mecanismo de acceso.

Unidad 3   

Analizador léxico. Construcción de autómatas finitos a partir de gramáticas regulares. Implementación de analizadores léxicos mediante estructuras de control clásicas y mediante arreglos de punteros.

Unidad 4    

Tabla de símbolos. Problemas de alcance. Relación entre la estructura en tiempo de ejecución y la tabla de símbolos. Etapas en la construcción de la tabla de símbolos.

Unidad 5    

Análisis sintáctico. Análisis sintáctico descendente. Análisis sintáctico ascendente. Retrocesos. Detección y reporte de errores. Análisis sintáctico descendente predictivo. Conflictos desplazamiento-reducción. Conflictos reducción-reducción. Utilización de Yacc y otras herramientas similares.

Unidad 6   

Árboles sintácticos. Traducción guiada por la sintaxis. Semántica estática. Comprobación de tipos. Grafo de las alternativas en la generación de código: árbol sintáctico, tercetos, tercetos indirectos, cuartetos, notación polaca inversa. Caminos posibles.

Unidad 7

Generación de código. Generación de código intermedio. Generación de código ejecutable. Relleno con retroceso. Nociones de manejo de errores. Nociones de optimización de código.

Programa