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 |