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 2. JAZYKY, GRAMATIKY A JEJICH KLASIFIKACE 13<br />

6. řetězec uzavřený v úhlových závorkách 〈, 〉 reprezentuje nonterminální symbol<br />

(konvence používaná v BNF).<br />

Příklad 2.11 Slovník gramatiky pro definici jazyka identifikátorů může mít tvar:<br />

Obsahuje tedy 65 symbolů.<br />

N = {〈identifikátor〉, 〈písmeno〉, 〈číslice〉}<br />

Σ = {A, B, . . . , Z, a, b, . . . , z, 0, 1, . . . , 9}<br />

Gramatika představuje generativní systém, ve kterém lze z jistého vyznačeného<br />

nonterminálu generovat, aplikací tzv. přepisovacích pravidel, řetězce tvořené neterminálními<br />

a terminálními symboly, které nazýváme větnými formami. Větné formy,<br />

které jsou tvořeny pouze terminálními symboly, reprezentují věty gramatikou definovaného<br />

jazyka. Může se přitom samozřejmě stát, že gramatika negeneruje žádnou<br />

větu a reprezentuje pak prázdný jazyk.<br />

Jádrem gramatiky je tak konečná množina P přepisovacích pravidel (nazývaných<br />

také produkce). Každé přepisovací pravidlo má tvar uspořádané dvojice<br />

(α, β) řetězců; stanovuje možnou substitucí řetězce β namísto řetězce α, který se<br />

vyskytuje jako podřetězec generovaného řetězce. Řetězec α obsahuje alespoň jeden<br />

nonterminální symbol, řetězec β je prvek množiny (N ∪ Σ) ∗ . Formálně vyjádřeno,<br />

množina P přepisovacích pravidel je podmnožinou kartézského součinu:<br />

P ⊆ (N ∪ Σ) ∗ N(N ∪ Σ) ∗ × (N ∪ Σ) ∗<br />

Příklad 2.12 Uvažujme, že např. dvojice (AB, CDE) je jedním z přepisovacích<br />

pravidel gramatiky a předpokládejme, že řetězec x = F GABH byl získán aplikací<br />

jiných pravidel gramatiky. Aplikujeme-li nyní na řetězec x pravidlo (AB, CDE),<br />

obdržíme řetězec y = F GCDEH (nahrazením podřetězce AB řetězce x řetězcem<br />

CDE). Říkáme, že jsme řetězec y odvodili (derivovali) z řetězce x podle přepisovacího<br />

pravidla (AB, CDE).<br />

Přistoupíme nyní k úplné definici gramatiky a formální definici pojmů, jejichž<br />

prostřednictvím lze definovat jazyk generovaný gramatikou.<br />

Definice 2.11 Gramatika G je čtveřice G = (N, Σ, P, S), kde<br />

• N je konečná množina nonterminálních symbolů<br />

• Σ je konečná množina terminálních symbolů, N ∩ Σ = ∅<br />

• P je konečná podmnožina kartézského součinu (N ∪Σ) ∗ N(N ∪Σ) ∗ ×(N ∪Σ) ∗ ,<br />

• S ∈ N je výchozí (také počáteční) symbol gramatiky<br />

Prvek (α, β) množiny P nazýváme přepisovacím pravidlem (krátce pravidlem)<br />

a budeme jej zapisovat ve tvaru α → β. Řetězec α resp. β nazýváme levou resp.<br />

pravou stranou přepisovacího pravidla.<br />

Příklad 2.13<br />

G = ({A, S}, {0, 1}, P, S)<br />

P = {S → 0A1, 0A → 00A1, A → ɛ}<br />

Příklad 2.14 Gramatika definující jazyk identifikátorů může mít tvar:

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

Saved successfully!

Ooh no, something went wrong!