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: