| 
  Universidad de Costa Rica Escuela de Ciencias de la
 Computación e Informática
 |  | 
  CI-1322 Autómatas y compiladores
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:
-  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.
-  Use la versión en inglés del código 
fuente.
-  Respeta la estructura de archivos y directorios de la
implementación Java original.
-  En lo posible, trate de que el programa C++ se parezca mucho 
a la versión Java original.
-  Incluya en el código C++ la explicación que 
está en el libro de texto.
-  Use la clase
"lkptr" para 
facilitar la traducción Java → C++.
-  Ponga la documentación
Doxygen en inglés al 
final de cada archivo de implementación
.cppde manera que no quede cargado el texto del programa.
-  Puede usar la implementación de
toString()de la bibliotecaBUnit.h.
-  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:]](../../../img/mailbox.gif) Entrega de Tareas
  Entrega de Tareas
| 
  | Tiempo de entrega: | 1 semana |  
  | Modalidad: | En parejas |  | 
 Soluciones 
  
  ![[mailto:]](../../../img/mailbox.gif) Adolfo Di Mare <adolfo@di-mare.com>.
  Adolfo Di Mare <adolfo@di-mare.com>.
Copyright © 2010
Derechos de autor reservados © 2010