Universidad de Costa Rica
Escuela de Ciencias de la
Computación e Informática
Profesor Adolfo Di Mare
CI-1322
I Semestre 2010
[<=] [home] [<>] [\/] [=>]
CI-1322 Autómatas y compiladores

Tarea #4 [solución]

Analizador Léxico del Dragón en C++

      Tome como base la implementación del analizador léxico del libro del dragón [ASU-86] y produzca un programa C++ similar.

Compilers: Principles, Techniques, and Tools:
      http://dragonbook.stanford.edu/

      Cumpla con la siguiente lista de requerimientos:

  1. Para mostrar que su analizador léxico funciona, escriba un programa que reciba como entrada un programa dragón y grabe la lista de los tokens junto con sus atributos.
  2. Use la versión en inglés del código fuente.
  3. Respeta la estructura de archivos y directorios de la implementación Java original.
  4. En lo posible, trate de que el programa C++ se parezca mucho a la versión Java original.
  5. Incluya en el código C++ la explicación que está en el libro de texto.
  6. Use la clase "lkptr" para facilitar la traducción Java → C++.
  7. Ponga la documentación Doxygen en inglés al final de cada archivo de implementación .cpp de manera que no quede cargado el texto del programa.
  8. Puede usar la implementación de toString() de la biblioteca BUnit.h.
  9. Recuerde dar el crédito correspondiente por usar el trabajo de otros como base para el suyo.

(1) {
(2)     int a;   int b;
(3)     a = 101; b = 32;
(4) }

token(  {    )  len( 1 )  #ln( 1 ) lexeme == {

token( BASIC )  len( 3 )  #ln( 2 ) lexeme == int
token(  ID   )  len( 1 )  #ln( 2 ) lexeme == a
token(  ;    )  len( 1 )  #ln( 2 ) lexeme == ;
token( BASIC )  len( 3 )  #ln( 2 ) lexeme == int
token(  ID   )  len( 1 )  #ln( 2 ) lexeme == b
token(  ;    )  len( 1 )  #ln( 2 ) lexeme == ;

token(  ID   )  len( 1 )  #ln( 3 ) lexeme == a
token(  =    )  len( 1 )  #ln( 3 ) lexeme == =
token(  NUM  )  len( 3 )  #ln( 3 ) lexeme == 101
token(  ;    )  len( 1 )  #ln( 3 ) lexeme == ;
token(  ID   )  len( 1 )  #ln( 3 ) lexeme == b
token(  =    )  len( 1 )  #ln( 3 ) lexeme == =
token(  NUM  )  len( 2 )  #ln( 3 ) lexeme == 32
token(  ;    )  len( 1 )  #ln( 3 ) lexeme == ;

token(  }    )  len( 1 )  #ln( 4 ) lexeme == }
token( ZERO  )  len( 1 )  #ln( 4 ) lexeme ==

      Entregue su tarea por correo electrónico, como lo hizo anteriormente.

[mailto:] Entrega de Tareas

Tiempo de entrega: 1 semana
Modalidad: En parejas

Soluciones

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