Formální gramatika

Formální gramatika v informatice označuje strukturu, která popisuje formální jazyk. Pojmenování je zvoleno kvůli podobnosti s gramatikami používanými v přirozených jazycích.

Gramatika se skládá z množiny pravidel, pomocí kterých může být každé slovo předepsaným způsobem vygenerováno z předem daného počátečního symbolu. Generování probíhá tak, že vezmeme počáteční symbol, na něj aplikujeme kterékoli z pravidel, na získaný řetězec opět aplikujeme kterékoli z pravidel atd., dokud nevygenerujeme požadované slovo. Pokud je pro každé slovo nejvýše jeden postup generování, gramatika je jednoznačná.

Mějme například abecedu obsahující symboly ' a {\displaystyle a} ' a ' b {\displaystyle b} ', počáteční symbol je ' S {\displaystyle S} ' a pravidla jsou definována takto:

1. S a S b {\displaystyle S\longrightarrow aSb}
2. S b a {\displaystyle S\longrightarrow ba}

začneme symbolem „ S {\displaystyle S} “ a vybereme pravidlo, které budeme aplikovat. Pokud vybereme 1, nahradíme ' S {\displaystyle S} ' řetězcem ' a S b {\displaystyle aSb} ' a obdržíme tak „ a S b {\displaystyle aSb} “. Znovuzvolením 1. pravidla nahradíme ' S {\displaystyle S} ' opět řetězcem ' a S b {\displaystyle aSb} ' a obdržíme „ a a S b b {\displaystyle aaSbb} “. Tento proces můžeme opakovat, dokud nejsou všechny symboly našeho slova z abecedy (tj. ' a {\displaystyle a} ' a ' b {\displaystyle b} '). Abychom tedy vygenerovali slovo, musíme zvolit 2. pravidlo a přepsat ' S {\displaystyle S} ' na ' b a {\displaystyle ba} '. Tím obdržíme „ a a b a b b {\displaystyle aababb} “ a jsme hotovi. Jazykem gramatiky jsou všechna slova, která dokážeme vygenerovat: { b a , a b a b , a a b a b b , a a a b a b b b , . . . } {\displaystyle \left\{ba,abab,aababb,aaababbb,...\right\}}

Znaky z abecedy (v našem případě ' a {\displaystyle a} ' a ' b {\displaystyle b} ') se nazývají terminály, ostatní znaky ( S {\displaystyle S} ) se nazývají neterminály.

Formální definice

Gramatika G je čtveřice ( N , Σ , P , S ) {\displaystyle (N,\Sigma ,P,S)} , kde:

  • N {\displaystyle N} je konečná množina neterminálních symbolů (neterminálů).
  • Σ {\displaystyle \Sigma } je konečná množina terminálních symbolů disjunktní od N {\displaystyle N} . (Obvykle se značí řeckým písmenkem sigma.)
  • P {\displaystyle P} je konečná množina přepisovacích pravidel. Každé pravidlo je tvaru
    ( Σ N ) N ( Σ N ) ( Σ N ) {\displaystyle (\Sigma \cup N)^{*}N(\Sigma \cup N)^{*}\longrightarrow (\Sigma \cup N)^{*}}
  • S {\displaystyle S} je prvek z N {\displaystyle N} nazývaný počáteční symbol.

Konvence

  • jednotlivé terminály značíme – a, b, c, …
  • řetězce terminálů značíme – u, v, w, …
  • jednotlivé neterminály – A, B, C … X, Y, Z
  • řetězce neterminálů a terminálů – α, β, γ, …
  • prázdný řetězec značíme symbolem e nebo také ε

Chomského hierarchie

Chomského hierarchie vymezuje čtyři typy gramatik podle tvaru přepisovacích pravidel, jež obsahuje množina P {\displaystyle P} :

Platí, že jazyky generované gramatikami typu 3 jsou podmnožinou jazyků generovaných gramatikami typu 2 atd.[1][2]

Související články

Reference

  1. CHYTIL, Michal. Gramatiky a automaty. Praha: SNTL, 1983. 
  2. MOLNÁR, Ľudovít; ČEŠKA, Milan; MELICHAR, Bořivoj. Gramatiky a jazyky. 3. vyd. Bratislava: Alfa, 1987. 


Teorie automatů: formální jazyky a formální gramatiky

Chomského hierarchie
typ 0
typ 1
typ 2
typ 3

gramatika
bez zvláštního názvu
indexovaná
stromová apod.
bez zvláštního názvu

jazyk
indexovaný
částečně kontextový
viditelný zásobník, vkládané slovo
bezhvězdičkový, neiterativní

nejjednodušší možný automat
rozhodovač, zaručeně skončí pro libovolný vstup
vnořený zásobník
vložený zásobník
zásobníkový automat, nedeterministický
viditelný zásobník, pro vkládané slovo
neperiodický konečný automat
Každá úroveň jazyků je podmnožinou své nadřazené úrovně.Každý automat a každá gramatika má svůj ekvivalent v nadřazené úrovni.
Autoritní data Editovat na Wikidatech