[UCR]
[/\]

Universidad de Costa Rica
Escuela de Ciencias de la
Computación e Informática
[<=] [home] [<>] [\/] [=>]

CI-1322 Autómatas y Compiladores

I Semestre 2001 Profesor Adolfo Di Mare

 

REQUISITOS

CI-1221 Estructuras de Datos y Análisis de Algoritmos Horas: 4
CI-1220 Ensambladores y Microprocesadores Créditos: 4

 

OBJETIVO

      Introducir los conceptos principales sobre el diseño e implementación de compiladores para lenguajes modernos.

 

OBJETIVOS ESPECIFICOS

      Al finalizar el curso el estudiante será capaz de:

 

CONTENIDOS

  1. Repaso de grafos y árboles
  2. Autómatas de estado finito y expresiones regulares.
  3. Gramáticas: gramáticas libres de contexto.
  4. Introducción a la compilación: compiladores y traductores, fases y pasadas de un compilador, preprocesadores.
  5. Análisis léxico: reconocimiento de tokens, detección y recuperación de errores.
  6. Análisis sintáctico: analizadores top-down y bottom-up, analizadores LL y LR.
  7. Análisis semántico y chequeo de tipos.
  8. Traducción orientada a la sintaxis, gramáticas con atributos, traducción top-down.
  9. Generación de código intermedio: lenguajes de tres direcciones, parcheo de referencias.
  10. Ambiente de ejecución: manejo de memoria, acceso a variables, paso de parámetros.
  11. Generación de código objeto.
  12. Optimización de código.
  13. Uso de herramientas automatizadas para la construcción de compiladores.

 

INDICE DE MATERIALES DEL CURSO

Exámenes
P1  -  P2
Final
Tareas
#1  -  #2  -  #3
#4  -  #5
Tareas
# 1: Calculadora de expresiones
# 2: Un pequeño compilador
# 3: Procesamiento de gramáticas en Perl
# 4: Generador de analizadores sintácticos predictivos en Perl
# 5: Esqueleto de compilador

 

EVALUACION

      El peso de la evaluación estará en los exámenes, aunque es indispensable que todos los estudiantes realicen los proyectos.

Examen Parcial #1   20%      Tareas y proyectos 30%
Examen Parcial #2   20%      Otros:  5%
Examen Final   25%         


 

LIBRO DE TEXTO

[ASU-86]
                
Aho, Alfred V & Sethi, Ravi & Ullman, Jeffrey D.: Compilers: Principles, Techniques and Tools, Addison Wesley. 1979.

 

OBRAS DE CONSULTA

Hopcroft-Ullman.
Introduction to Automata Theory, Languages and Computation Addison Wesley. 1979.
B.J. Lennan.
Principles of Programming Languages. HRW editores. 1987.
R. Sethi.
Lenguajes de Programación. Conceptos y constructores. 1992
A. Aho et al.
Compiladores. Addison-Wesley. 1990.
C. N. Fisher. & R. Leblanc.
Crafting a Compiler. Benjamin Cummings 1988.
Steve Muchnick
Advanced Compiler Design and Implementation. Morgan Kaufmann Publishing, 1997.


C++: FAQ's y Links
[Bou-91] Boundy, David: A taxonomy of programmers, ACM SigSoft, Vol.16 No.4, pp [23-30], Octubre 1991.
[DiM-94j] Di Mare, Adolfo: Manejo de excepciones en Turbo Pascal, Reporte Técnico ECCI-94-10 (Revisión 4), Proyecto 326-89-019, Escuela de Ciencias de la Computación e Informática (ECCI), Universidad de Costa Rica (UCR), 1994.
      http://www.di-mare.com/adolfo/p/except.htm
[DiM-99a]
                  
Di Mare, Adolfo: C Iterators, Técnico ECCI-98-01, Escuela de Ciencias de la Computación e Informática, Universidad de Costa Rica, Abril, 1999.
      http://www.di-mare.com/adolfo/p/c-iter.htm
[HU-79] Hopcroft, John E. & Ullman, Jefrrey D.: Introduction to Automata Theory, Languages and Computation, Addisson-Wesley Publishing Co., ISBN 0-201-02988-X, pp [1-37, 46-54, 77-94], 1979.
[Mus-98] Musser, David R.: The C++ Standard Template Library (Internet reference index), 1998.
      http://www.cs.rpi.edu/~musser/stl-book/
[PZ-98] Pratt, Terrence W. & Zelkowitz, Marvin V.: Lenguajes de Programación: Diseño e implementación, 3era edición, Prentice-Hall Hispanoamericana, ISBN 0-13-678012-1, 1998.
[Ret-91] Rettig, Marc: Nobody Reads Documentation, Communications of the ACM, Vol.34 No.7, pp [19-24], Julio 1991.
[Sch-93] Schwartz, Randall L.: Learning Perl, O'Reilly & Associates, Inc. ISBN 1-56952-042-2, http://www.perl.com, 1994.
[Set-92] Sethi, Ravi: Activación de Procedimientos, Capítulo 4 del libro Lenguajes de Programación: conceptos y constructores, pp [121-172], Addisson-Wesley Iberoamericana, ISBN 0-201-51858-9, 1992.
[Str-98] Stroustrup, Bjarne: The C++ Programming Language, 3rd edition, ISBN 0-201-88954-4; Addison-Wesley, 1998.
      http://www.research.att.com/~bs/papers.html

[mailto:] Adolfo Di Mare <adolfo@di-mare.com>.
Copyright © 2001
Derechos de autor reservados © 2001
[home] <> [/\]