Zadání úlohy č. 10

Blokově strukturovaná tabulka symbolů

Rozšiřte interpret jazyka aritmetických výrazů o konstrukci

let v1 = e1,
    v2 = e2,
    ...
in e
kde v1, v2, ... jsou proměnné, e1, e2, ... jsou výrazy, jejichž hodnota se dosadí za odpovídající proměnné ve výrazu e. Hodnotou celé konstrukce let je hodnota výrazu e.

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. Proměnné jsou označeny identifikátory tvořenými posloupností písmen a číslic začínající písmenem.

Specifikace výstupu:

Program vypíše na standardní výstup hodnoty vyhodnocených výrazů, vždy jeden výsledek na řádku. Je-li detekována syntaktická chyba, překlad se ukončí. Při výskytu jiné chyby se vypíše chybové hlášení.

Příklad:

Vstup:

   let
     a = 5,
     b = a+1
   in let a = 10 in a + b;

Výstup:

   16