Prílohy:1|2

Recursive descent parser

Zdrojové kódy k nasledovným úlohám sú v prílohách.

Rekurzívny parser

Vytvorte parser a interpreter metódou rekurzívneho volania funkcií. Príklad korektného vstupu:

vstup z; vystup z;
x=3;
y=4;
z=(x+y*y+z)/2+10;
vystup z;
vystup (x+y)/3;

Poznámky k riešeniu

Každý príkaz musí byť oddelený čiarkou, inak sa program ukončí už pri lexikálnej analýze. Interpreter zobrazí len samotné konštanty, úplné vyhodnotenie by vyžadovalo uchovať názvy premenných.

Syntaktický strom

Upravte predošlú úlohu tak, aby namiesto interpretovania vstupu vytvárala abstraktný syntaktický strom.

Poznámky k riešeniu

Syntaktický strom sa vygeneruje pre každý príkaz zvlášť. Hodnota uzla je názov tokenu oddeľujúceho ľavú a pravú stranu príkazu. Ak sa príkaz delí na dve časti, hodnota uzla je null. Stromy vypíšem buď podľa poradia príchodu tokenov zľava doprava (inorder), alebo logickejšie cez preorder (výpis sa potom číta odspodu).