Ciele
- Oboznámiť sa s jazykom JMM a pochopiť princíp práce prekladača JMM.
- Oboznámiť sa s gramatikou jazyka JMM a s jej definíciu pre Lex a Yacc.
Úvod
-
Ako ukážka postupu konštrukcie prekladača bude slúžiť prekladač jazyka
Java-- (JMM). Tento jazyk je zjednodušenou verziou jazyka Java a
výsledkom prekladu programov v JMM sú class súbory,
ktoré je možné spustiť pomocou JVM.
Postup
-
Prekladač jazyka JMM bude vytvorený s použitím nástrojov Lex a Yacc. Vstupom pre prekladač bude zdrojový kód programu v jazyku JMM a pomocný súbor java.api obsahujúci informácie o štandardných knižniciach. Výstupom budú inštrukcie pre Java Virtual Machine (JVM), ktoré zodpovedajú preloženému programu.
Pre zjednodušenie prekladača budú inštrukcie generované v textovej podobe, ktorú následne program Jal (Java Assembler Language) preloží do binárneho prenositeľného Java bytecode) v class súbore.
Prezrite si informacie o bytecode Bytecode pre JVM.Obr.: Preklad a vykonanie JMM programov -
Prezrite si stručný prehľad syntaxe jazyka JMM a jeho porovnanie s jazykom Java. Pozrite si tiež príklady programov vytvorených v jazyku JMM spolu s ich zdrojovými kódmi: cyklus, grafický test, analógové hodiny.Úloha: Experimentujte s dodaným analyzátorom. Použite pri tom vzorový vstupný súbor "vstup0.jmm". Aké konštrukcie jazyka JMM dokáže analyzátor akceptovať a aké nie?Úloha: Preštudujte si kód analyzátora a doplňte rozpoznávanie príkazov for a switch. Pre testovanie použite súbor "vstup1.jmm".Úloha: Ošetrite možnosť použitia viacerých príkazov v case vetvách a tiež použitie príkazu break. Zabezpečte, aby sa príkazy case a default nemohli používať mimo príkazu switch.Poznámka: Príkaz break zvykne byť definovaný ako jeden z obyčajných príkazov a kontrola toho, či bol použitý v cykle, alebo prepínači sa robí až v sémantickej analýze.
Zdroje
@MenoTriedy