Rozšiřte interpret jazyka aritmetických výrazů s celými čísly, operátory +, -, *, / a závorkami o celočíselné proměnné a operátor přiřazení = (zprava asociativní a s nejnižší prioritou).
Každá proměnná je definována v okamžiku přiřazení hodnoty. Použití nedefinované proměnné na jiné pozici ve výrazu vede k hlášení chyby; hodnota takové proměnné bude považována za nulovou. Operátor přiřazení vrací jako výsledek přiřazovanou hodnotu.
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ě. Proměnné jsou označeny identifikátory tvořenými posloupností písmen a číslic začínající písmenem.
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ři výskytu nedefinované proměnné se vypíše text CHYBA: následovaný jménem proměnné.
Vstup:
a = b = 3 * 5; a+b; 2 * c + 3;
Výstup:
15 30 CHYBA: c 3