Bezkontextová gramatika

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 3. ledna 2022; ověření vyžaduje 1 úpravu .

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 .

Aplikace

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 .

Typy CS gramatik

Rozpoznávače

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ů.

Downstream resolvery

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ě).

Vzestupní rozpoznávači

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

Příklady SF-gramatiky a jejich odpovídajících SF-jazyků:

Překlopit slovo

Dáno vzorcem

Vnořené závorky

Tato gramatika určuje jazyk vnořených závorek .

Dickův jazyk

Aritmetický výraz

<výraz> → <výraz> + <výraz>, <výraz> → <výraz> - <výraz>, <výraz> → <výraz>, <term> → <term> * <multiplikátor>, <term> → <term> / <multiplikátor>, <term> → <multiplikátor>, <multiplikátor> → ( <výraz> ), <multiplikátor> → x,

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.

Omezení COP gramatiky

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.

Zobecnění

Gramatika sčítání stromů zobecňuje bezkontextovou gramatiku v tom, že základní jednotkou v pravidlech odvozování jsou stromy, nikoli jednotlivé znaky.

Viz také

Literatura