[UCR]
[/\]

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

CI-1322 Autómatas y Compiladores

II Semestre 2009 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.

      Las tareas escritas consistirán en "premios", esto es, asignaciones cortas que cada estudiante debe cumplir. Antes de que termine el lunes de cada semana el estudiante debe instalar en una única página Internet al menos 8 filminas en las que resuma el material cubierto en la semana anterior. También debe enviarle al profesor la dirección Internet en donde dejó sus fichas de estudio, las que le servirán luego al estudiante y a todos sus compañeros para repasar la materia cubierta. Siempre debe usar formato HTML para las filiminas.
      Las filminas son responsabilidad individual de cada estudiante. Si al revisarlas se detectan copias, perderá los puntos tanto el alumno que copió como el que se dejó copiar.

 

INDICE DE MATERIALES DEL CURSO

Exámenes
P1  -  P2
Final
Tareas
#1  -  #2  -  #3
#4  -  #5  -  #6  -  →Exp
Tareas
# 1: Compilación de un programa
# 2: Traza de ejecución de un autómata no determinista
# 3: La calculadora de varios dígitos
# 4: La calculadora de varios dígitos con ANTLR
# 5: Generación de Patrones Cobol+Basic con "Javascript"
# 6: Reconocedor SQLite
: Exposiciones / Video

 

EVALUACION

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

Tareas, proyectos, quices   20%    (Prof. Di Mare)    [Carta al Estudiante]
Exposiciones   5%  
Examen Parcial #1   20%    Viernes 25 de setiembre
Examen Parcial #2   25%    Martes 2 de noviembre
Examen Final   30%    Viernes 27 de noviembre


 

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