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