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

Tarea #3 [solución]

Analizador Léxico para PasAHO

FOR numero := 1 TO N DO BEGIN
    suma := 0;
    temp := numero;
    WHILE temp <> 0 DO BEGIN
        digito := temp MOD 10;     { <- }
        suma   := suma + (digito * digito * digito);  
        temp   := temp DIV 10;
    END;
END;
VAR     val

numero: 153
temp:    15
suma:    27
digito:   3
Figura 1: Ejecución de Armstrong.pas

      Examine cuidadosamente el programa que usó en la primera tarea programada, para obtener una lista de los componentes léxicos ("tokens") que contiene el lenguaje PasAHO.

      Luego obtenga los enunciados de las tareas programadas segunda y tercera del semestre anterior, y con base en ellos especifique e implemente la función Extractor_yylex() y la clase Token para el lenguaje PasAHO.

      Una vez que haya obtenido la función Extractor_yylex(), úsela para implementar un programa que reciba de entrada un archivo que contenga un programa escrito en el lenguaje PasAHO y produzca la lista de los tokens y lexemas. Por ejemplo, si su programa recibiera de entrada el bloque de código de la Figura 1, en las sucesivas invocaciones a la función Extractor_yylex() produciría la siguiente lista de tokens y lexemas:

  1. token == FOR       lexema == "FOR"
  2. token == ID        lexema == "numero"
  3. token == ASSIGN    lexema == ":="
  4. token == LITERAL   lexema == "1"
  5. token == TO        lexema == "TO"
  6. token == ID        lexema == "N"
  7. token == DO        lexema == "DO"
  8. token == BEGIN     lexema == "BEGIN"
  9. ...

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