Ciele
- Kontrola úloh z predošlého cvičenia.
- Zopakovať si vlastnosti zásobníkových automatov a naučiť sa ich skonštruovať.
- Zopakovať si vlastnosti bezkontextových gramatík a prehĺbiť poznatky o LL(1) parsovaní.
Úvod
Cieľom cvičenia je opakovanie, prehĺbenie a precvičenie učiva zameraného na bezkontextové gramatiky, zásobníkové automaty a LL(1) parsovanie.
Postup
Krok 1
Úloha 1.1
Prekontrolujte a prediskutujte riešenia úloh z cvičenia 7.
Krok 2
Úloha 2.1
Navrhnite zásobníkový automat pre jazyk $L(M) = \left\{ a^{n}b^{2n}~|~n \geq 1\right\}$, $n \in \mathbb{N}$.
Krok 3
V tomto kroku vyriešime dve úlohy zamerané na vlastnosti bezkontextových gramatík.
Úloha 3.1
Daná je nasledujúca gramatika:
$$\begin{array}{ll} (1) & S \rightarrow A\# \\ (2) & A \rightarrow xAx \\ (3) & A \rightarrow C \\ (4) & B \rightarrow yBy \\ (5) & B \rightarrow C \\ (6) & C \rightarrow zBz \\ (7) & C \rightarrow wAw \\ (8) & C \rightarrow \varepsilon \\ \end{array}$$
a) Určte množiny $N$, $T$.
b) Skonštruujte deriváciu reťazca $xzzx\#$ začínajúc v $S$. Vyznačte, ktoré odvodzovacie pravidlá ste použili a nakreslite odvodzovací strom podľa Vašej derivácie.
c) Nájdite množiny $\mathit{FIRST}$ a $\mathit{FOLLOW}$ pre každý neterminálny symbol gramatiky.
d) Pre každé pravidlo gramatiky skonštruujte množinu $\mathit{PREDICT}$.
e) Zostavte rozkladovú tabuľku pre danú gramatiku. Zistite, či daná gramatika je LL(1) gramatikou. Svoju odpoveď odôvodnite.
f) Ukážte kroky, ktoré by váš analyzátor realizoval na analýzu vstupu $xzyyzx\#$.
Úloha 3.2
Daná je nasledujúca gramatika:
$$\begin{array}{ll} (1) & S \rightarrow AB\# \\ (2) & A \rightarrow xA \\ (3) & A \rightarrow B \\ (4) & B \rightarrow yzB \\ (5) & B \rightarrow z \\ \end{array}$$
a) Určte množiny $N$, $T$.
b) Skonštruujte strom odvodenia pre vstupný reťazec $xyzzz\#$
c) Nájdite množiny $\mathit{FIRST}$ a $\mathit{FOLLOW}$ pre každý neterminálny symbol gramatiky.
d) Pre každé pravidlo gramatiky skonštruujte množinu $\mathit{PREDICT}$.
e) Zostavte rozkladovú tabuľku pre danú gramatiku. Zistite, či daná gramatika je LL(1) gramatikou. Svoju odpoveď odôvodnite.
f) Ak do danej gramatiky pridáme pravidlo $A \rightarrow \varepsilon$, zmení sa jej klasifikácia? Svoju odpoveď odôvodnite.