CURSO : Construccion de Compiladores SIGLA : IIC2322 CRÉDITOS : 10 REQUISITOS : IIC1222 Programacion Avanzada; IIC2222 Teoria de Automatas y Lenguajes Formales SEMESTRE : I 1. OBJETIVOS Proveer al alumno con principios y tecnicas utiles para la construccion de compiladores. El enfasis del curso es en las tecnicas usadas en el dise?o de compiladores, en los modelos teoricos que apoyan esas tecnicas, y en la forma de implementar compiladores en un lenguaje de programacion de alto nivel. Al finalizar el curso, el alumno conocera y sera capaz de dise?ar e implementar las distintas componentes de un compilador. 2. CONTENIDO - Introduccion: Traductores. Estructura de un compilador. Compilando un compilador. Lenguajes de programacion. - Analisis lexico: Objetivo. Uso de expresiones regulares y automatas finitos. Generacion de un analizador lexico. Errores lexicos. - Analisis sintactico: Gramaticas libres de contexto. Arboles de derivacion. Analizadores shift-reduce. Analizadores LR. Analizadores descendentes. Errores sintacticos. - Tabla de simbolos: Contenido y utilidad. Estructuras de datos apropiadas. Representacion del alcance de los nombres. Errores semanticos. - Generacion de codigo Intermedio: Traducciones dirigidas por sintaxis. Algunos lenguajes intermedios. Traduccion de expresiones y estructuras de control. - Organizacion de la memoria durante la ejecucion: Un esquema simple de stack. Lenguajes con estructuras de bloques. Traduccion de llamados. - Introduccion a la optimizacion de codigo: Principales fuentes de optimizacion. Optimizacion en iteraciones. Grafos de flujo. - Generacion de codigo: Problemas en la generacion de codigo. Formas de generacion de codigo. Asignacion de registros. Generacion de codigo para expresiones. Algunas mejoras simples. 3. BIBLIOGRAFIA Complementaria: AHO, Alfred, SETHI, Ravi and ULLMAN, Jeffrey D. Compilers: principles, techniques and tools. Reading, Mass., Addison Wesley, 1986. FRASER, Christopher and HANSON, David R. A retargetable C compiler: design and implementation. Menlo Park, CA., Addison Wesley, 1995. HOLUB, Allen. Compiler design in C. Englewood Cliffs, N.J., Prentice Hall, 1990. PITTMAN, Thomas and PETERS, James. The art of compiler design: theory and practice. Englewood Cliffs, N.J., Prentice Hall, 1992. WIRTH, Niklaus. Compiler construction. Harlow, England, Addison Wesley, 1996.