[UCR]
[/\]

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

CI-1322 Autómatas y Compiladores

I Semestre 2007 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: Traducción de avisos económicos a XML
# 2: Compilación de un programa
# 3: El menos unario para la calculadora
# 4: Lex/Flex : Traducción de avisos económicos a XML
# 5: Detección de texto terrorista
# 6: Reconocedor LALR(1) basado en Bison/Yacc
: Exposiciones

 

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   15%  
Examen Parcial #1   15%    Viernes 13 abril
Examen Parcial #2   20%    Viernes 25 de mayo
Examen Final   30%    Miércoles 27 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 © 2007
Derechos de autor reservados © 2007
[home] <> [/\]