Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
KAPITOLA 4. BEZKONTEXTOVÉ JAZYKY A ZÁSOBNÍKOVÉ AUTOMATY59<br />
Obrázek 4.6: Podstromy derivačního stromu<br />
Povšimněte si, že definujeme víceznačnou gramatiku, nikoli víceznačný jazyk.<br />
V mnoha případech lze vhodnými transformacemi víceznačné gramatiky odstranit<br />
víceznačnost vět, aniž se samozřejmě změní jazyk generovaný získanou jednoznačnou<br />
gramatikou. Existují však jazyky, které nelze generovat jednoznačnou gramatikou.<br />
Takové jazyky jsou pak nazývány jazyky s inherentní víceznačností.<br />
Příklad 4.7 Uvažujme gramatiku G = ({E}, {+, −, ∗, /, (, ), i}, P, E), kde P je<br />
množina pravidel<br />
E := E + E | E − E | E ∗ E | E / E | ( E ) | i<br />
Jazyk L(G) je totožný s jazykem generovaným gramatikou z příkladu 4.3 a je<br />
tvořen aritmetickými výrazy s binárními operacemi.<br />
Tato gramatika je na rozdíl od gramatiky z příkladu 4.3 víceznačná. Vezměme<br />
například větu i + i ∗ i a uvažujme všechny možné derivační stromy příslušející<br />
k této větě (viz obr. 4.7).<br />
Existence dvou různých derivačních stromů k větě i + i ∗ i dokazuje, že gramatika<br />
G je víceznačná. Označuje-li se + sečítání a ∗ násobení, pak není jasné,<br />
zda první operací bude násobení (první derivační strom), a nebo sečítání (druhý<br />
derivační strom). Jednoznačná gramatika z příkladu 4.3 na druhé straně respektuje<br />
obvyklou prioritou operací (násobení má přednost před sečítáním), jak je<br />
patrno z jediného derivačního stromu věty i + i ∗ i na obr. 4.8<br />
Pro bezkontextové gramatiky bylo dokázáno, že problém, zda daná gramatika<br />
je a nebo není víceznačná, je nerozhodnutelný, tj. neexistuje algoritmus, který by<br />
v konečném čase odhalil víceznačnost každé bezkontextové gramatiky.<br />
Příklad 4.8 Gramatika obsahující pravidlo tvaru A → A je zřejmě víceznačná.<br />
Toto pravidlo můžeme vypustit, aniž změníme jazyk generovaný takto zredukovanou<br />
gramatikou.<br />
Poznámka 4.2 Víceznačnost gramatiky, pokud negeneruje jazyk s inherentní<br />
víceznačností, je obecně pokládána za negativní rys, poněvadž vede k větám,<br />
jež mají několik interpretací. Na druhé straně však víceznačná gramatika může<br />
být jednodušší, než odpovídající jednoznačná gramatika (viz příklad 4.7). Této<br />
skutečnosti se někdy využívá při konstrukci překladačů takovým způsobem, že se