Asignatura Créditos Código Pre-Requisito (s) : Compiladores Digitales :3 : INF-170 : INF-322 Objetivo General: Conocer la estructura interna del proceso de compilación y los mecanismos fundamentales de diseño de un compilador, ya sea en el ámbito específico de la traducción de lenguaje de programación para preparar la ejecución de programas, como en otros procesos de características similares. TEMA I.- INTRODUCCION A LOS COMPILADORES Objetivo.- Conocer qué es un compilador y su aplicación como utilitario de la programación. 1.1 1.2 1.3 1.4 1.5 1.6 1.7 Compiladores Análisis del programa fuente Las fases de un compilador Programas de sistemas relacionados con un compilador El agrupamiento de las fases Herramientas para la construcción de compiladores Intérpretes TEMA II.- COMPONENTES DE UN COMPILADOR SENCILLO DE UN PASADA Objetivo.- Describir a grandes rasgos los procesos de la compilación y las herramientas empleadas para el manejo de los mismos. 2.1 2.2 2.3 2.4 2.5 2.6 2.7 Perspectivas Definición de la sintaxis Traducción dirigida por la sintaxis Análisis sintáctico Traductor de expresiones simples Análisis léxico Incorporación de la tabla de símbolos TEMA III.- ANALISIS LEXICO Objetivo.- Enfocar el analizador de léxico como herramienta básica de la programación y empleo de software de soporte. 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 Función del analizador léxico Manejo de los buffers de entrada Especificación de los componentes léxicos Reconocimientos de componentes léxicos Un lenguaje para la especificación de analizadores léxicos Autómatas finitos Paso de una expresión regular a un AFN Diseño de un generador de analizadores léxicos Herramientas de generación de analizadores léxicos (LEX) y ejecicio INF-170 Compiladores Digitales Pág. # 1 TEMA IV.- ANALISIS SINTACTICO Objetivo.- Enfocar el analizador sintáctico como herramienta básica de la programación y empleo de software de soporte. 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 4.10 El papel del analizador sintáctico Gramáticas independientes del contexto Escritura de unA gramática Análisis sintáctico descendente Análisis sintáctico ascendente Análisis sintáctico por precedencia de operadores Análisis sintáctico LR Uso de gramáticas ambiguas. Generadores de analizadores sintácticos. Herramienta para analizadores sintácticoS (YACC). Ejercicios TEMA V.- TRADUCCION DIRIGIDA POR LA SINTAXIS Objetivo.- Efectuar las evaluaciones de los análisis sintácticos como herramienta principal en la compilación . 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 5.10 Definiciones dirigidas por la sintaxis. Construcción de árboles sintácticos Evaluación ascendente de definiciones con atributos sintetizados Definiciones con atributos por la izquierda Traducción descendente Evaluación ascendente de los atributos heredados Evaluadores recursivos Consideraciones de espacio para valores de atributos en el momento de la compilación Asignación de espacio para valores de atributos en el momento de la compilación Asignación de espacio en el momento de la construcción del compilador TEMA VI.- COMPROBACION DE TIPOS Objetivo.- Entender el desempeño de las definiciones de tipos de datos y su manejo en el proceso de compilación. 6.1 6.2 6.3 6.4 6.5 Sistema de tipos Especificación de un comprobador de tipos sencillos Equivalencia de expresiones de tipos Conversiones de tipos Sobrecargas de funciones y operadores INF-170 Compiladores Digitales Pág. # 2 TEMA VII.- AMBIENTES PARA EL MOMENTO DE LA EJECUCION Objetivo.- Mostrar los mecanismos empleados por el compilador para el manejo eficiente de memoria. 7.1 7.2 7.3 7.4 7.5 7.6 7.7 Aspectos del lenguaje fuente Organización de la memoria Estrategias para la asignación de memorias Acceso a nombres no locales Paso de parámetros Tablas de símbolos Instrumentos de los lenguajes para la asignación dinámica de la memoria TEMA VIII.- GENERACION DE CODIGO INTERMEDIO Objetivo.- Entender las herramientas auxiliares para la ejecucución de una compilación eficiente. 8.1 8.2 8.3 8.4 8.5 8.6 8.7 Lenguajes intermedios Declaraciones Proposiciones de asignación Expresiones booleanas Proposiciones CASE Relleno de retroceso Llamadas a Procedimientos TEMA IX .- GENERACION DE CODIGO Objetivo.- Presentar al estudiante el funcionamiento de un generador de códigos. 9.1 9.2 9.3 9.4 9.5 Aspectos del diseño de un generador de códigos La máquina objeto Administración de la memoria durante la ejecución Un generador de códigos simple Generadores de generadores de códigos TEMA X.- OPTIMIZACION DE CODIGOS Objetivo.- Comprender el proceso de optimización como herramienta final de la compilación. 10.1 Introducción 10.2 Principales fuentes para la optimización 10.3 Optimización de bloques básicos INF-170 Compiladores Digitales Pág. # 3 METODOLOGIA: Audiovisuales Exposición de ejemplos prácticos Cátedras Prácticas con sistemas de apoyo interactivos EVALUACION: Primer parcial : Prácticas 15 puntos Examen 20 puntos Segundo parcial : Prácticas 15 puntos Examen 20 puntos Final : Examen 30 puntos BIBLIOGRAFIA COMPILADORES: PRINCIPIOS, TECNICAS Y HERRAMIENTAS Autor: Aho Sethi Ullman Addison wesley Iberoaméricana ( 1990 ) CRAFTING A COMPILER WITH C Autor: Benjamín / Cummings THE ART OF COMPILER DESIGN AND PRACTICE Autor: Pittman, T. Peter INF-170 Compiladores Digitales Pág. # 4