FACULTAD DE INGENIERÍA


DIVISIÓN DE INGENIERÍA ELÉCTRICA
DEPARTAMENTO DE INGENIERIA EN COMPUTACIÓN
Programa de la Asignatura: COMPILADORES Clave: 0434 Núm. de créditos: 8 Carrera: ING. EN COMPUTACIÓN Duración del curso: Semanas: 16 Horas: 64 Semestre: 8º Horas a la semana: Teoría: 4 Obligatoria: SI Prácticas: 0 Optativa: OBJETIVO DEL CURSO El alumno explicará y usará las herramientas y técnicas que le permitan diseñar y construir compiladores. TEMAS Núm: Nombre: Horas I. INTRODUCCION. 3 II. ANALIZADOR LEXICOGRAFICO 5 III. ANALISIS DE SINTAXIS 5 IV. ANALIZADOR SE SINTAXIS ARRIBA-ABAJO 5 V. ANALIZADOR DE SINTAXIS ABAJO-ARRIBA 8 VI. TRADUCCION DIRIGIDA POR SINTAXIS 5 VII. ORGANIZACION DE MEMORIA EN TIEMPO DE CORRIDA 5 VIII. ORGANIZACION DE TABLAS DE SIMBOLOS 5 IX. GENERACION DE CODIGO INTERMEDIO Y ANALISIS SEMANTICO 8 X. OPTIMIZACION DE CODIGO 6 XI. GENERACION DE CODIGO 6 XII. EJEMPLOS DE COMPILADORES 3 XIII. PROYECTO _____ 64 ASIGNATURAS ANTECEDENTES OBLIGATORIAS : PROGRAMACIÓN DE SISTEMAS SISTEMAS OPERATIVOS ANTECEDENTES, OBJETIVOS Y CONTENIDOS DE LOS TEMAS I. INTRODUCCION. ANTECEDENTES: Lenguajes Formales y Autómatas. Sistemas Operativos. OBJETIVO: El alumno explicará los diferentes tipos de lenguajes para computación, los tipos de traductores existentes, así como su estructura. CONTENIDO: I.1 Lenguajes imperativos y declarativos. I.2 Compiladores, ensambladores e intérpretes. I.3 Estructura de un compilador. II. ANALIZADOR LEXICOGRAFICO. ANTECEDENTES: Lenguajes Formales y Autómatas. OBJETIVO: El alumno aplicará las herramientas para diseñar y construir un analizador lexicográfico. CONTENIDO: II.1 Expresiones y gramáticas regulares. II.2 Autómatas de estados finitos. II.3 Programación de un 'scanner'. II.4 Generación automática de 'scanners' III. ANALISIS DE SINTAXIS. ANTECEDENTES: Lenguajes Formales y Autómatas OBJETIVO: El alumno explicará el principio de funcionamiento de los analizadores de sintáxis más importantes y las características principales de estas gramáticas. CONTENIDO: III.1 Funcionamiento de analizadores arriba-abajo y abajo-arriba. III.2 Gramáticas sin ciclos, sin símbolos inútiles y sin recursión por la izquierda. III.3 Gramáticas ambiguas IV. ANALIZADOR SINTAXIS ARRIBA-ABAJO. ANTECEDENTES: Lenguajes Formales y Autómatas OBJETIVO: El alumno aplicará las herramientas para diseñar y construirá un analizador sintáctico arriba-abajo. CONTENIDO: IV.1 Analizador recursivo descendente. IV.2 Gramáticas LL. IV.3 Analizador LL(1). IV.4 Detección y recuperación de errores. V. ANALIZADOR SINTAXIS ABAJO-ARRIBA. ANTECEDENTES: Lenguajes Formales y Autómatas. OBJETIVO: El alumno aplicará las herramientas para diseñar y construirá un analizador sintáctico abajo-arriba. CONTENIDO: V.1 Gramáticas LR. V.2 Analizador SLR(1). V.3 Analizador LR(1). V.4 Analizador LALR(1). V.5 Detección y recuperación de errores. V.6 Generadores de analizadores de sintaxis LALR(1). YACC VI. TRADUCCION DIRIGIDA POR SINTAXIS. ANTECEDENTES: Lenguajes Formales y Autómatas. Sistemas Operativos. OBJETIVO: El alumno modificará gramáticas y realizará la traducción dirigida por sintáxis en analizadores arriba-abajo y abajo-arriba. CONTENIDO: VI.1 Traducción dirigida por sintaxis en analizadores de arriba-abajo. VI.2 Traducción dirigida por sintaxis en analizadores de abajo-arriba. VII. ORGANIZACION DE MEMORIA EN TIEMPO DE CORRIDA. ANTECEDENTES: Sistemas Operativos. Programación de Sistemas. OBJETIVO: El alumno analizará las estructuras para manejar la memoria en el momento de la ejecución del programa. CONTENIDO: VII.1 Diferentes tipos de organizaciones. VII.2 Organización de pila o 'stack'. VII.3 Organización de 'heap'. VII.4 Paso de parámetros. VIII. ORGANIZACION DE TABLA DE SIMBOLOS. ANTECEDENTES: Programación de Sistemas. Sistemas Operativos. OBJETIVO: El alumno analizará las diferentes estructuras para construir la tabla de símbolos. CONTENIDO: VIII.1 Organización de tablas. VIII.2 Direccionamientos. IX. GENERACION DE CODIGO INTERMEDIO Y ANALISIS SEMANTICO. ANTECEDENTES: Lenguajes Formales y Autómatas. Programación de Sistemas. Sistemas Operativos. OBJETIVO: El alumno comprenderá los diferentes tipos de código intermedio y el análisis semántico. CONTENIDO: IX.1 Generación de código y análisis semántico para analizadores arriba-abajo. IX.2 Generación de código y análisis semántico para analizadores abajo-arriba. X. OPTIMIZACION DE CODIGO. ANTECEDENTES: Programación de Sistemas. Sistemas Operativos. OBJETIVO: El alumno utilizará las diferentes técnicas para optimizar código. CONTENIDO: X.1 Tipos de optimización. X.2 Movimiento de código. XI. GENERACION DE CODIGO. ANTECEDENTES: Programación de Sistemas. Sistemas Operativos. OBJETIVO: El alumno usará las técnicas para generar y optimizar código objeto. CONTENIDO: XI.1 Generación de código. XI.2 Optimización de código. XI.3 Generadores de código. XII. EJEMPLOS DE COMPILADORES. ANTECEDENTES: Programación de Sistemas. Sistemas Operativos. OBJETIVO: El alumno explicará las características de diferentes tipos de compiladores. CONTENIDO: XII.1 Compilador Pascal o C. XII.2 Compilador Prolog. XIII. PROYECTO. ANTECEDENTES: Lenguajes Formales y Autómatas. Programación de Sistemas. Sistemas Operativos. OBJETIVO: El alumno construirá un compilador para una gramática sencilla. TECNICAS DE ENSEÑANZA: ELEMENTOS DE EVALUACION: Exposición oral (X) Exámenes parciales (X) Exposición audiovisual (X) Exámenes finales (X) Ejercicios dentro de clase (X) Trabajos y tareas fuera del aula (X) Ejercicios fuera del aula (X) Participación en clase (X) Seminarios ( ) Asistencia a prácticas ( ) Lecturas obligatorias (X) Trabajo de investigación (X) Prácticas de taller o lab. ( ) Prácticas de campo ( ) BIBLIOGRAFIA Textos Temas de la materia para los que se recomienda: TEXTOS BASICOS HOLUB, Allen I. TODOS "Compiler Design in C" Prentice Hall, E.E.U.U., 1990 SETHI, ULLMAN TODOS "Compilers, Principles techniques and tools" Addison Wesley, E.E.U.U., 1986 TREMBLAY, SORENSON TODOS "The Theory and practice of compiler writing" Mc. Graw Hill, E.E.U.U., 1985 SHREINER, FRIEDMAN TODOS "Introduction to compiler construction with Unix" Prentice Hall, E.E.U.U., 1985 TREMBLAY, SORENSON TODOS "An implementation guide to compiler writing" Mc. Graw-Hill, E.E.U.U., 1982