Úvodní stránka | Tato stránka v originále

Formální gramatika

V informatice formální gramatika je způsob, jak popisovat formální jazyk, tj., soubor konečný-délka řetězce přes jistý konečný abeceda. Oni jsou jmenoval formální gramatiky analogií s představou o gramatice pro lidské jazyky.

Základní myšlenka za těmito gramatikami je že my tvoříme řetězce začátkem se zvláštním začátkovým symbolem a pak platíme pravidla, která ukážou jak jisté kombinace symbolů mohou být nahrazená ostatními kombinacemi symbolů. Například, převzít abecedu sestává z ' ' a ' b ', symbol začátku je ' S ' a my máme chápání pravidel:

1. S - > aSb
2. S - > ba

pak my můžeme přepsat “S” “aSb” narazením ' S ' s “aSb” (pravidlo 1), a my můžeme pak přepsat “aSb” k “aaSbb” tím, že znovu použije stejné pravidlo. Toto je opakováno, než výsledek obsahuje jediné symboly od abecedy. V našem příkladě my můžeme přepsat S takto: S - > aSb - > aaSbb - > aababb. Jazyk gramatiky pak sestává ze všech řetězců, které mohou být tvořil tu cestu; v tomto případě: ba, abab, aababb, aaababbb, etc.

Tabulka s obsahem
1 formální definice
2 třídy gramatik
3 terminologie

Formální definice

Formální gramatika G sestává z následujících komponent:

řetězec v (a Sigma; U N) * - > řetězec v (a Sigma; U N) *

(kde * je Kleene hvězda a U je soubor odbor) s omezením to left-hand strana pravidla (tj., část nalevo - >) muset obsahovat přinejmenším jeden nonterminal symbol.

Obvykle takový formální gramatika G je prostě shrnut jak (N, a Sigma;, P, S).

jazyk formální gramatiky G = (N, a Sigma;, P, S), označil jak L(G), je definován jako všechny ty řetězce přes a Sigma; to může být tvořeno tím, že začíná symbolem začátku S a pak aplikovat výrobní pravidla v P až do už žádného nonterminal symboly jsou přítomné.

Příklad

Zvážit to, například, gramatika G s N = {S, B}, a Sigma; = {, b, c}, P sestávat z následujících výrobních pravidel

1. S - > aBSc
2. S - > abc
3. Ba - > aB
4. Bb - > bb

a nonterminal symbol S jako symbol začátku. Některé příklady původu řetězců v L(G) být:

(kde použitá výrobní pravidla jsou ukázána ve hranatých závorkách a nahrazená část je každý čas ukázal v tučný).

To je jasné, že tato gramatika definuje jazyk {nbncn | n > 0} kden naznačuje řetězec n .

Formální gramatiky jsou totožné s Lindenmayer systémy (L-systémy), kromě toho L-systémy nejsou postižené rozdílem mezi terminály a nonterminals, L-systémy mají omezení objednávky ve kterém pravidla jsou aplikována, a L-systémy mohou běžet navždy, tvořit nekonečný sled řetězců. Typicky, každý řetězec je spojován se souborem bodů ve vesmíru a “výstupem” L-systém je definován být limit těch souborů.

Třídy gramatik

Někteří omezili třídy gramatik a jazyky, které mohou jsou odvozeny s nimi, mít zvláštní jména a být studoval odděleně. Jeden obyčejný klasifikační systém pro gramatiky je Chomsky hierarchie, soubor čtyř druhů gramatik se vyvíjel Noam Chomsky v padesátých létech. Rozdíl mezi těmito typy je že oni mají zvýšeně přísnější výrobní pravidla a mohou vyjadřovat méně formálních jazyků. Dva důležité typy jsou kontext-uvolnit gramatiky a pravidelné gramatiky. Jazyky, které mohou být popisovány s takový gramatika být volán kontext-uvolnit jazyky a pravidelné jazyky, příslušně. Ačkoli hodně méně silný než neomezené gramatiky, který může ve skutečnosti vyjadřovat jakýkoli jazyk to může být přijato Turing strojem, tyto dva druhy gramatik jsou nejvíce často použité protože analyzátory pro je mohou být efektivně splnil. Například, pro kontext-volné gramatiky tam jsou známé algoritmy tvořit účinné LL analyzátory a LR analyzátory.

Kontext-uvolnit gramatiky

V kontext-uvolnit gramatiky, strana levé ruky pravidla výroby může jen být vytvořena jediným non-symbol terminálu. Jazyk vymezil nahoře je ne kontext-uvolnit jazyk, ale například jazyk {nbn | n > 0} je, jak to může být definováno gramatikou G2 s N= {S}, a Sigma; = {, b}, S odstartovat symbol a následující výrobní pravidla:

1. S - > aSb
2. S - > ab

Pravidelné gramatiky

V pravidelných gramatikách, strana levé ruky je znovu jen jediný non-symbol terminálu, ale nyní pravá strana je také omezená: To může být nic, nebo jediný terminálový symbol nebo jediný terminálový symbol následovali non-symbol terminálu, ale nic jinde (někdy širší definice je používána, jeden může dovolit delší řetězy terminálů nebo jediné non-terminály bez něčeho jiného zatímco ještě definuje stejnou třídu jazyků).

Jazyk vymezil nahoře je ne pravidelný, ale jazyk {nbm | m,n > 0} je, jak to může být definováno gramatikou G3 s N= {S,, B}, a Sigma; = {, b}, S odstartovat symbol a následující výrobní pravidla:

1. S - > aA
2. - > AA
3. - > BB
4. B - > bB
5. B - > a epsilon;

Terminologie

Přesto psát