Bezkontextová gramatika ( CS-grammar , bezkontextová gramatika ) je speciální případ formální gramatiky (typ 2 podle Chomského hierarchie ), ve které jsou levé části všech produkcí jediné neterminály (objekty označující jakoukoli podstatu jazyk (například: vzorec, aritmetický výraz, příkaz) a nemá specifický symbolický význam). Význam pojmu "bezkontextový" je ten, že je možné aplikovat produkci na neterminál, a navíc bez ohledu na kontext tohoto neterminálu (na rozdíl od obecného případu neomezené Chomského gramatiky).
Jazyk , který lze specifikovat pomocí CFG, se nazývá bezkontextový jazyk nebo CFL.
Ve skutečnosti je KS-gramatika další formou BNF .
COP-gramatiky mají velké využití v informatice . Nastavují gramatickou strukturu většiny programovacích jazyků , strukturovaná data atd. (viz gramatický rozbor )
K analýze COP-gramatiky stačí zásobníkový automat , k analýze non-COP-gramatiky může být vyžadován Turingův kompletní stroj .
Existují dvě různé třídy rozpoznávačů (automaty pro rozpoznávání) jazyků CF. Jejich názvy souvisejí s pořadím, ve kterém je sestaven výstupní strom. Všechny rozpoznávače zpravidla čtou vstupní znakový řetězec zleva doprava, protože takový zápis se očekává při psaní zdrojového kódu programů.
Překladače shora dolů, které generují levé výstupní řetězce a sestavují výstupní strom shora dolů.
Používají modifikace algoritmu s výběrem alternativ. Při jejich vytváření se používá metoda, která umožňuje v každém kroku MP-automatu jednoznačně vybrat jednu a pouze jednu alternativu (krok „vysunutí“ se u tohoto automatu provádí vždy jednoznačně).
Překladače zdola nahoru, které generují řetězce výstupu pro pravou ruku a vytvářejí výstupní strom zdola nahoru.
Upstream rozpoznávače používají modifikace algoritmu shift-fold (nebo shift-fold, což je stejný). Při jejich vytváření se používají metody, které umožňují v každém kroku rozšířeného MP-automatu jednoznačně zvolit mezi provedením „posunu“ („přenosu“) nebo „konvoluce“ a při provedení konvoluce lze jednoznačně zvolit pravidlo kterým bude konvoluce provedena. Algoritmus "posun-konvoluce".
Příklady SF-gramatiky a jejich odpovídajících SF-jazyků:
Dáno vzorcem
Tato gramatika určuje jazyk vnořených závorek .
Tato gramatika definuje aritmetický výraz obsahující nejjednodušší aritmetické operace s proměnnou x. Pokud nahradíme terminál 'x' neterminálním <číslo>, dostaneme gramatiku, která specifikuje aritmetický výraz sestávající z operací sčítání, odčítání, násobení a dělení na celých číslech.
Ne všechny jazyky lze definovat pomocí CF-gramatiky. Nejjednodušší způsob, jak to dokázat, je následující: COP-gramatiky tvoří spočetnou množinu, zatímco mohutnost množiny všech jazyků je kontinuum . Konstruktivní důkaz téže skutečnosti lze získat např. na základě toho, že jazyk { a n b n c n | n ≥1} není bez kontextu; nezdá se však, že by existoval krátký důkaz tohoto druhého tvrzení: publikované důkazy se opírají o větu růstu pro bezkontextové jazyky.
Gramatika sčítání stromů zobecňuje bezkontextovou gramatiku v tom, že základní jednotkou v pravidlech odvozování jsou stromy, nikoli jednotlivé znaky.
Formální jazyky a formální gramatiky | |
---|---|
Obecné pojmy | |
Typ 0 | |
Typ 1 |
|
Typ 2 | |
Typ 3 | |
rozebrat |