A kontextusmentes grammatika ( CS-grammar , context-free grammar ) a formális nyelvtan speciális esete (a Chomsky-hierarchia szerint 2-es típus ), amelyben az összes produkció bal oldali részei egyetlen nem terminálok (a nyelv bármely lényegét jelölő objektumok). a nyelv (például: képlet, aritmetikai kifejezés, parancs), és nincs konkrét szimbolikus jelentése). A "kontextusmentes" kifejezés jelentése az, hogy lehetséges a produkció alkalmazása nem terminálra, ráadásul ennek a nem terminálnak a kontextusától függetlenül (szemben a korlátlan Chomsky-nyelvtan általános esetével).
A CFG-vel megadható nyelvet környezetfüggetlen nyelvnek vagy CFL-nek nevezzük.
Valójában a KS-nyelvtan a BNF egy másik formája .
A COP-nyelvtanokat sokat használnak a számítástechnikában . Beállítják a legtöbb programozási nyelv nyelvtani szerkezetét , strukturált adatokat stb. (lásd a nyelvtani elemzést )
A COP-nyelvtan elemzéséhez elég egy lenyomó automata , a nem COP-nyelvtanok elemzéséhez pedig egy teljes Turing-gépre lehet szükség .
A CF-nyelvek felismerőinek (felismerési automatáinak) két különböző osztálya van. A nevük a kimeneti fa felépítésének sorrendjéhez kapcsolódik. Általános szabály, hogy minden felismerő balról jobbra olvassa be a bemeneti karakterláncot, mivel a programok forráskódjának megírásakor ilyen jelölés szükséges.
Felülről lefelé irányuló feloldók, amelyek bal oldali kimeneti láncokat generálnak, és felülről lefelé építik fel a kimeneti fát.
Az algoritmus módosításait alkalmazzák az alternatívák kiválasztásával. Létrehozásuk során olyan módszert alkalmaznak, amely lehetővé teszi, hogy az MP-automata minden lépésénél egyedileg válasszon egy és csak egy alternatívát (a „kidobás” lépés ebben az automatában mindig egyedileg történik).
Alulról felfelé mutató feloldók, amelyek jobb oldali kimeneti láncokat generálnak, és alulról felfelé építik fel a kimeneti fát.
Az upstream felismerők a shift-fold (vagy shift-fold, amely ugyanaz) algoritmus módosításait használják. Létrehozásuk során olyan módszereket használnak, amelyek lehetővé teszik, hogy a kiterjesztett MP-automata minden egyes lépésénél egyértelműen válasszon „eltolás” („transzfer”) vagy „konvolúció” között, a konvolúció végrehajtásakor pedig egyértelműen kiválaszthatja a szabályt. amellyel a konvolúció végrehajtásra kerül. Algoritmus "eltolás-konvolúció".
Példák SF-nyelvtanokra és a hozzájuk tartozó SF-nyelvekre:
Képlet alapján megadva
Ez a nyelvtan határozza meg a beágyazott zárójelek nyelvét .
Ez a nyelvtan egy számtani kifejezést határoz meg, amely az x változó legegyszerűbb számtani műveleteit tartalmazza. Ha az 'x' terminált a nem terminális <szám>-ra cseréljük, akkor egy olyan nyelvtant kapunk, amely egy olyan aritmetikai kifejezést ad meg, amely egész számok összeadási, kivonási, szorzási és osztási műveleteiből áll.
Nem minden nyelv definiálható CF-nyelvtanokkal. Ezt a legegyszerűbben a következőképpen lehet bizonyítani: a COP-nyelvtanok megszámlálható halmazt alkotnak, míg az összes nyelv halmazának számossága egy kontinuum . Ugyanennek a ténynek konstruktív bizonyítása nyerhető például azon az alapon, hogy a nyelv { a n b n c n | n ≥1} nem környezetfüggetlen; úgy tűnik azonban, hogy ez utóbbi állításnak nincs rövid bizonyítéka: a publikált bizonyítások a kontextusmentes nyelvekre vonatkozó növekedési tételre támaszkodnak.
A fa összeadás nyelvtana általánosítja a környezetfüggetlen nyelvtant, mivel a következtetési szabályokban az elemi egység a fák, nem pedig az egyes karakterek.
Formális nyelvek és formális nyelvtanok | |
---|---|
Általános fogalmak | |
Típus 0 | |
1. típus |
|
2. típus | |
3. típus |
|
elemzése |