10.02.2019 Views

opora

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!