[UCR]
[/\]

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

CI-1322 Autómatas y Compiladores

II Semestre 2002 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
Tareas
# 1: Calculadora en C++
# 2: Analizador léxico para la calculadora
# 3: El tokenizador yylex()
# 4: El tokenizador Lex/Flex
# 5: Cálculo del árbol sintáctico
# 6: Cálculo del árbol sintáctico con Bison/Yacc

 

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%
Examen Parcial #1   25%
Examen Parcial #2   25%
Examen Final   30%


 

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. & Ullman., Jeffrey D.
Introduction to Automata Theory, Languages and Computation, Addison Wesley. 1979.
Lennan, B.J.
Principles of Programming Languages. HRW editores. 1987.
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


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 © 2002
Derechos de autor reservados © 2002
[home] <> [/\]