Ciele
- Precvičiť základné vlastnosti gramatík. krok 1
- Precvičiť určovanie množín
FIRST
aFOLLOW
krok 2 - Precvičiť typy odvodení a odvodzovacie stromy. krok 3
Úvod
Tematický zámer cvičenia je rozdelený do dvoch logických celkov. V prvej (teoretickej) časti cvičenia sa venuje čas precvičeniu a upevneniu vedomostí nadobudnutých na prednáške: určenie základných vlastností gramatík a vlastností z nej vyplývajúcich, určenie množín FIRST
a FOLLOW
potrebných vo fáze syntaktickej analýzy.
Postup
Krok 1 cieľ 1
Úloha 1.1
Daná je nasledujúca gramatika:
Odpovedzde na nasledujúce otázky týkajúce sa uvedenej gramatiky:
- Vymenujte terminály a neterminály.
- Vymenujte aspoň štyri príklady reťazcov jazyka definovaného danou gramatikou.
- Nakreslite odvodzovací strom pre čiastočnú deriváciu
- Je táto čiastočná derivácia ľavá alebo pravá?
- Uveďte príklad čiastočnej derivácie z
S
v dvoch krokoch pomocou pravej derivácie.
Krok 2 cieľ 2
Úloha 2.1
Daná je nasledujúca gramatika:
Nájdite množiny
FIRST(-)
aFOLLOW(-)
pre neterminályA, B, C
.
Úloha 2.2
Daná je nasledujúca gramatika:
Nájdite množiny FIRST(-)
a FOLLOW(-)
pre jednotlivé neterminály.
Krok 3 cieľ 3
V tomto kroku navrhneme gramatiku pre implementáciu vreckovej kalkulačky aritmetických výrazov. Tento typ kalkulačky obvykle nezohľadňuje štandardné matematické priority operátorov, avšak môže obsahovať zátvorky.
Úloha 3.1
Zostrojte gramatiku pre vreckovú kalkulačku, v ktorej operátory sčítania, odčítania, násobenia (príp. celočíselného delenia) majú štandardnú asociatívnosť a rovnakú prioritu. Jazyk nech obsahuje aj zátvorky.
Nájdite dve rôzne najľavejšie odvodenia vety