Cursada 2017‎ > ‎

Programa


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.