Zadání úlohy č. 8

[Calc.jj] [Řešení]

Generátor syntaktických analyzátorů javacc

Implementujte s využitím generátoru javacc interpret jazyka aritmetických výrazů s celými čísly, operátory +, -, *, / (s obvyklými prioritami a levou asociativitou) a závorkami.

Jako základ můžete použít uvedený soubor Calc.jj. Pro spuštění generátoru javacc použijte následující příkaz (cesta k souboru JavaCC může být jiná!):

java -cp c:/prekladace/JavaCC.zip COM.sun.labs.javacc.Main Calc.jj

Specifikace vstupu:

Vstupem je textový soubor obsahující posloupnost aritmetických výrazů ukončených středníkem. Mezery, tabulátory a konce řádků mezi symboly se vynechávají. Čísla mohou být zapsána ve tvaru konstanty jazyka C, tj. v desítkové, osmičkové (začínající nulou) a šestnáctkové (začínající znaky 0x) soustavě.

Specifikace výstupu:

Program vypíše na standardní výstup hodnoty vyhodnocených výrazů (v desítkové soustavě), vždy jeden výsledek na řádku. Je-li detekována syntaktická chyba, překlad se ukončí.

Příklad:

Vstup:

   012-10; 2 * (0xff+5);
   0x23e5-0x201;

Výstup:

   0
   520
   8676