Ciele
- Doplniť kód prekladača a generátora o operácie porovnávania
- Definovať gramatiku prekladača pre zadanie.
- Vytvoriť kostru prekladača podľa gramatiky.
Úvod
-
Na dnešnom cvičení si doplníte prekladač o operácie porovnávania celých čísel a následne si sami vytvoríte gramatiku, podľa ktorej implementujete prekladač na zadanie. Podľa gramatiky si vytvoríte kostru prekladača do ktorej budete postupne pridávať konštrukcie ktoré umožnia preklad do kódu Computronu.
Postup
-
Úloha: Doplňte do kódu prekladača podporu pre operácie porovnávania.
Vykonajte nasledukúce úkony:
- Upraviť lexikálny analyzátor. Musí akceptovať všetkých 6 operátorov potrebných pre operácie porovnávania
- Upraviť syntaktický analyzátor. Upraviť gramatiku pridaním nového pravidla a teda aj novej funkcie do kódu, ktorá rozpoznáva operácie porovnávania. Operácie sú neasociatívne a majú nižšiu prioritu ako operácia sčítania.
- Vytvoriť funkcie pre generátor, ktoré budú zapisovať kód Computrona.
-
Úloha: Vytvorte si gramatiku pre váš prekladač podľa špecifikácie zadania
Jadro gramatiky už máte hotové, teraz si to obaľte adekvátnymi pravidlami, aby jazyk spĺňal nasledujúce požiadavky:
- Jazyk má porporu pre zátvorkové výrazy aritmetických operácií a operácií porovnávania (to už máte).
- Na začiatku programu sa nachádza deklarácia premenných, používaných v programe.
- Jazyk pozostáva zo sekvencie príkazov. Môžete teda do premenných priradzovať hodnoty alebo výsledky výrazov.
- Jazyk umožňuje vypísať vypočítaný výraz na obrazovku a načítať premenné od používateľa.
- Jazyk obsahuje príkazy pre cyklus a vetvenie.
Poznámka: Môžete sa inšpirovať gramatikou, ktorá je zadefinovaná v knihe Prekladače, kapitola 3.6.2. No nie je podmienkou, aby vaša gramatika používala rovnaké kľúčové slová aké sú v danej gramatike.Úloha: Uistite sa, že vaša gramatika spĺňa podmienky, uvedené vyššie, porpípade si ju nechajte skontrolovať cvičiacim. -
Ak už teda máte gramatiku hotovú, môžete sa pustiť do implementácie. Podobne ako v prvej úlohe, musíte upraviť lexikálny a syntaktický analyzátor. Úpravu generátora ešte nemusíte robiť, to bude náplňou ďalšieho cvičenia.Poznámka: Ak máte kostru hotovú, tak váš prekladač by vám mal bez chyby spracovať gramaticky správny vstup. Takto si môžete overiť správnosť riešenia.