Syntaktická analýza jazyka JMM

Ciele
  1. Oboznámiť sa s jazykom JMM a pochopiť princíp práce prekladača JMM.
  2. 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
  1. 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
  2. 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?
    Poznámka: Na triedy sa zatiaľ odkazuje pomocou špeciálneho zápisu: @MenoTriedy
    Úloha: Preštudujte si kód analyzátora a doplňte rozpoznávanie príkazov forswitch. 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.
Zdroje
  1. Zdrojové kódy pre cvičenie 3
comments powered by Disqus