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

Tarea #5 [solución]

Esqueleto de compilador

PROGRAM Armstrong;
{ RESULTADO
  Determina cuantos números son de Armstrong, desde 1 hasta N.
  - Un número es de Armstrong si la suma de los dígitos que lo
    componen elevados al cubo es igual al número.
  - Por ejemplo 153 es un número de Armstrong porque
           3    3    3
    153 = 1  + 5  + 3  = 1^3 + 5^3 + 3^3  }
BEGIN { Armstrong }
  N = 3000;
  WriteLn('Números encontrados (1 .. ', N,
          ') que son de Armstrong:');
FOR numero := 1 TO N DO BEGIN
    suma := 0;
    temp := numero;
    WHILE temp <> 0 DO BEGIN     { suma de dígitos }
      digito := temp MOD 10;     { al cubo         }
      suma   := suma + (digito * digito * digito);
      temp   := temp DIV 10;
    END;
    IF suma = numero THEN BEGIN
      WriteLn(numero,' Suma de sus dígitos al cubo ', suma);
    END
    ELSE BEGIN
      WriteLn('    ', numero, '****');
    END;
  END;
END. { Armstrong }
El programa Armstrong.pas

      El programa Armstrong.pas que se muestra en la figura es el primer programa que se les enseña a los estudiantes del primer curso de programación, pues en él se usan las principales instrucciones de un lenguaje de programación:

      Su trabajo consiste en escribir un compilador para este lenguaje, usando la herramienta de construcción de compiladores Bison, disponible en Internet:
      http://www.fg-soup.com/files/bfwizard-1.6.zip

      Usted debe entregar su proyecto en dos partes. En al primera, haga la especificación de lo que planea implementar. En este primer documento incluya, por lo menos:

  1. La gramática del lenguaje que su compilador procesará.
  2. La definición del lenguaje ensamblador que su compilador producirá. Si lo desea, puede usar el mismo usó en la segunda tarea programada.
  3. Un diagrama de cómo debe compilar cada instrucción, similar al que está en el libro del dragón en la figura 2.33.
  4. El resultado esperado de compilar el programa Armstrong.pas

      Su trabajo consiste sólo en definir la gramática que el procesador Bison convertirá en un programa que producirá el lenguaje ensamblador que corresponde al programa Armstrong.pas. En el documento final, además de los puntos que entregó en la primera parte del proyecto, incluya varios programas pequeños que muestren cómo queda compilada cada una de las construcciones sintáctidas de su lenguaje.

      Entregue la primera parte de su trabajo impresa, en clase. No es necesario que envíe ningún otro tipo de documentación por correo electrónico. Para la segunda parte, envíe todo el programa por correo electrónico. No se olvide de instalar todo su trabajo en Internet.

      Luego de imprimir la documentación de su programa, y entregarla en clase, envíe su trabajo al asistente del curso por correo electrónico.

Envío de tareas por correo electrónico

[mailto:] Andrés Arias

 

Tiempo de entrega:    3 semanas
Modalidad:    En parejas

Soluciones

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