Formální gramatika

Formální gramatika nebo jen gramatika v teorii formálních jazyků  je způsob, jak popsat formální jazyk, to znamená vybrat určitou podmnožinu z množiny všech slov nějaké konečné abecedy . Existují generativní a rozpoznávací (nebo analytické ) gramatiky - první nastavuje pravidla, pomocí kterých můžete sestavit libovolné slovo jazyka, a druhá vám umožňuje z daného slova určit, zda je v jazyce obsaženo nebo ne.

Podmínky

Generativní gramatiky

Slova jazyka daného gramatikou jsou všechny sekvence terminálů, které jsou na výstupu (generovány) z počátečního neterminálu podle pravidel výstupu.

Pro nastavení gramatiky je potřeba nastavit abecedy terminálů a neterminálů, sadu odvozovacích pravidel a také vybrat počáteční v sadě neterminálů.

Gramatika je tedy definována následujícími vlastnostmi:

Závěr

Výstupem je posloupnost řádků skládající se z terminálů a neterminálů, kde první řádek je řádek skládající se z jednoho počátečního neterminálu a každý následující řádek je získán z předchozího nahrazením některého podřetězce podle jednoho (libovolného) pravidel. Poslední řetězec je řetězec sestávající výhradně z terminálů, a je tedy slovem daného jazyka.

Existence odvozeniny pro určité slovo je kritériem pro jeho příslušnost k jazyku definovanému danou gramatikou.

Typy gramatik

Podle Chomského hierarchie jsou gramatiky rozděleny do 4 typů, přičemž každá následující je omezenější podmnožinou předchozí (ale také se snáze analyzuje):

Kromě toho existují:

Aplikace

Příkladem jsou aritmetické výrazy

Zvažte jednoduchý jazyk, který definuje omezenou podmnožinu aritmetických vzorců sestávající z přirozených čísel , závorek a aritmetických znamének. Stojí za zmínku, že zde v každém pravidle na levé straně šipky je pouze jeden neterminálový symbol. Takové gramatiky se nazývají bezkontextové .

Terminálová abeceda:

= {'0','1','2','3','4','5','6','7','8','9','+','-', '*','/','(',')'}

Neterminální abeceda:

{ FORMULA, SIGN, NUMBER, NUMBER }

pravidla:

1. VZORCE VZORCE ZNAK VZORCE (vzorec má dva vzorce spojené znaménkem) 2. ČÍSLO VZORCE (vzorec je číslo) 3. VZOREC ( VZOREC ) (vzorec je vzorec v závorkách) 4. SIGN + | - | * | / (znaménko je plus nebo mínus, nebo násobení nebo dělení) 5. ČÍSLICE ( číslo je číslo) 6. ČÍSLO ČÍSLO ČÍSLO (číslo je číslo a číslo) 7. ČÍSLO 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 (číslice je 0 nebo 1 nebo ... 9)

Počáteční neterminál:

VZOREC

závěr :

Odvoďme vzorec (12+5) pomocí uvedených odvozovacích pravidel. Pro názornost jsou strany každé náhrady znázorněny po dvojicích, u každého páru je vyměněná část podtržena.

FORMULA (Vzorec) ( FORMULA ) ( FORMULA SIGN FORMULA ) (VZOREC ZNAČKOVÝ VZORCE) (Vzorec + VZOREC) ( VZOREC + VZOREC ) ( VZOREC + ČÍSLO ) ( VZOREC + ČÍSLO ) ( VZOREC + ČÍSLO ) ( VZORCE + ČÍSLO ) ( VZORCE + 5 ) ( VZORCE + 5) ( ČÍSLO + 5) ( ČÍSLO + 5) ( ČÍSLO + 5) ( ČÍSLICE + 5) ( ČÍSLICE + 5) ( ČÍSLICE + 5) ( 1 ČÍSLICE + 5) (1 ČÍSLICE + 5) (1 2 + 5)


Analytické gramatiky

Generativní gramatiky nejsou jediným druhem gramatik, ale jsou nejběžnější v programovacích aplikacích. Na rozdíl od generativních gramatik definuje analytická (rozpoznávací) gramatika algoritmus, který umožňuje určit, zda dané slovo patří do daného jazyka. Například jakýkoli regulární jazyk lze rozpoznat pomocí gramatiky definované stavovým automatem a jakoukoli bezkontextovou gramatiku lze rozpoznat pomocí automatu založeného na zásobníku . Pokud slovo patří do jazyka, pak takový automat konstruuje svůj výstup v explicitní formě, což umožňuje analyzovat sémantiku tohoto slova.

Viz také

Poznámky

  1. Diskrétní matematika, 2006 , str. 486.
  2. Diskrétní matematika, 2006 , str. 487.

Literatura