[UCR]
[/\]

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

CI-1322 Autómatas y Compiladores

I Semestre 2004 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  -  #6  -  #7  -  #8
Tareas
# 1: Compilación de un programa
# 2: La calculadora de varios dígitos
# 3: Analizador sintáctico para la calculadora
# 4: Analizador léxico para la calculadora
# 5: El tokenizador yylex() para la calculadora
# 6: Analizador léxico Lex/Flex para la calculadora
# 7: Detector de proyectos copiados
# 8: Analizador sintáctico de Java reducido

 

EVALUACION

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

Tareas y proyectos 20%    (Prof. Quezada)
Quices y trabajos cortos   15%
Examen Parcial #1   20%    Jueves 22 de abril
Examen Parcial #2   20%    Jueves 3 de junio
Examen Final   25%    Miércoles 23 de junio

Tareas y proyectos 20%    (Prof. Di Mare)
Examen Parcial #1   25%    Jueves 22 de abril
Examen Parcial #2   25%    Jueves 3 de junio
Examen Final   30%    Miércoles 23 de junio


 

LIBRO DE TEXTO

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


 

OBRAS DE CONSULTA

Albahari, Ben & Drayton, Peter & Merril, Brad
C# Essentials, 2nd Edition, O'Reilly, ISBN 0-596-00315-3, 2002.
Fisher, C. N. & Leblanc, R.
Crafting a Compiler. Benjamin Cummings 1988.
Hopcroft, John E. & Motwani, Rajeev & Ullman., Jeffrey D.
Introducción a la Teoría de Autómatas, Lenguajes y Computación, segunda edición, ISBN 84-7829-056-7, Pearson Educación S.A, Madrid, 2002.
Hopcroft, John E. & Ullman., Jeffrey D.
Introduction to Automata Theory, Languages and Computation, Addison Wesley. 1979.
Lennan, B.J.
Principles of Programming Languages. HRW editores. 1987.
Levine, John R. & Mason, Tony & Brown, Doug
Lex & Yacc, 2nd Edition, O'Reilly & Associates, ISBN 1-56592-000-7, Octubre 1992.
Muchnick, Steve
Advanced Compiler Design and Implementation. Morgan Kaufmann Publishing, 1997.
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.
Sethi., R.
Lenguajes de Programación. Conceptos y constructores. 1992
Teufel, Bernard & Schmidt, Stephanie & Teufel, Thomas
Compiladores Conceptos fundamentales. Addisson-Wesley Iberoamericana, ISBN 0-201-65365-6, 1995.


C++: FAQ's y Links
[Alb-2000] Albahari, Ben: A Comparative Overview of C# (A comparison of C# to C++ and Java), 2000.
      http://www.genamics.com/visualj++/csharp_comparative.htm
[Bou-91] Boundy, David: A taxonomy of programmers, ACM SigSoft, Vol.16 No.4, pp [23-30], Octubre 1991.
[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/
[Osb-2000] Osborne, John: Deep Inside C#: An Interview with Microsoft Chief Architect Anders Hejlsberg , 2000.
      http://windows.oreilly.com/news/hejlsberg_0800.html
[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 © 2004
Derechos de autor reservados © 2004
[home] <> [/\]