Formális nyelvtan

A formális nyelvtan vagy csak a nyelvtan a formális nyelvek elméletében a formális nyelv  leírásának módja, vagyis egy bizonyos részhalmaz kiválasztása valamilyen véges ábécé összes szavai közül . Léteznek generatív és felismerő (vagy elemző ) nyelvtanok – az első meghatározza azokat a szabályokat, amelyekkel a nyelv bármely szava felépíthető, a második pedig lehetővé teszi egy adott szóból annak meghatározását, hogy az szerepel-e a nyelvben vagy sem.

Feltételek

Generatív nyelvtanok

A nyelvtan által megadott nyelv szavai mindazok a terminálok sorozatai, amelyek a kimeneti szabályok szerint a kezdeti nem terminálból kerülnek kiadásra (generálásra).

A nyelvtan beállításához be kell állítania a terminálok és a nem terminálok ábécéjét, a következtetési szabályok készletét, valamint ki kell választania a kezdőt a nem terminálok készletéből.

Tehát a nyelvtant a következő jellemzők határozzák meg:

Következtetés

A kimenet olyan sorok sorozata, amelyek terminálokból és nem terminálokból állnak, ahol az első sor egy kezdő nem-terminálból álló sor, és minden következő sor az előzőből származik úgy, hogy valamilyen (bármely) részkarakterláncot lecserélünk. a szabályokról. Az utolsó karakterlánc egy teljes egészében terminálokból álló karakterlánc, ezért a nyelv szava.

Egy szó származékának megléte az adott nyelvtan által meghatározott nyelvhez való tartozás kritériuma.

A nyelvtan típusai

A Chomsky-hierarchia szerint a nyelvtanok 4 típusra oszlanak, mindegyik következő egy korlátozottabb részhalmaza az előzőnek (de könnyebben elemezhető):

Ezen kívül vannak még:

Alkalmazás

Példa erre az aritmetikai kifejezések

Vegyünk egy egyszerű nyelvet, amely természetes számokból , zárójelekből és számtani előjelekből álló számtani képletek korlátozott részhalmazát határozza meg . Érdemes megjegyezni, hogy itt minden szabályban a nyíl bal oldalán csak egy nem terminális szimbólum szerepel. Az ilyen nyelvtanokat kontextusmentesnek nevezzük .

Terminál ábécé:

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

Nem terminális ábécé:

{ FORMULA, JEL, SZÁM, SZÁM }

Szabályok:

1. FORMULA FORMULA JEL FORMULA (egy képletnek két képlete van, amelyeket előjel köt össze) 2. FORMULA SZÁMA (a képlet egy szám) 3. FORMULA ( FORMULA ) (a képlet egy zárójelben lévő képlet) 4. JEL + | - | * | / (az előjel plusz vagy mínusz, vagy szorzás vagy osztás) 5. SZÁM SZÁM ( egy szám az egy szám) 6. SZÁMSZÁM SZÁMJEGY (a szám egy szám és egy szám) 7. SZÁM 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 (a számjegy 0 vagy 1, vagy ... 9)

Kezdeti nem terminál:

KÉPLET

Következtetés :

Vezessük le a (12+5) képletet a felsorolt ​​következtetési szabályok segítségével. Az érthetőség kedvéért az egyes cseredarabok oldalai párban vannak feltüntetve, minden párban aláhúzva a kicserélt alkatrész.

FORMULA (FORMULA) ( FORMULA ) ( FORMULA SIGN FORMULA ) (FORMULA SIGN FORMULA) (FORMULA + FORMULA) ( FORMULA + FORMULA ) ( FORMULA + SZÁM ) ( FORMULA + SZÁM ) ( KÉPLET + SZÁM ) ( FORMULA + SZÁM ) ( FORMULA + 5 ) ( FORMULA + 5) ( SZÁM + 5) ( SZÁM + 5) ( SZÁM SZÁM + 5) ( SZÁM SZÁM + 5) ( SZÁMJEGY + 5) ( SZÁMJEGY + 5) ( 1 SZÁMJEGY + 5) (1 SZÁMJEGY + 5) (1 2 + 5)


Analitikus nyelvtanok

A generatív nyelvtan nem az egyetlen nyelvtan típus, de ezek a leggyakoribbak a programozási alkalmazásokban. A generatív nyelvtanoktól eltérően az analitikus (felismerő) nyelvtan meghatároz egy algoritmust, amely lehetővé teszi annak meghatározását, hogy egy adott szó a nyelvhez tartozik-e. Például bármely reguláris nyelv felismerhető egy állapotgép által definiált nyelvtan segítségével , és bármely környezetfüggetlen nyelvtan felismerhető egy veremalapú automata segítségével . Ha egy szó egy nyelvhez tartozik, akkor egy ilyen automata a kimenetét explicit formában konstruálja meg, ami lehetővé teszi a szó szemantikájának elemzését .

Lásd még

Jegyzetek

  1. Discrete Mathematics, 2006 , p. 486.
  2. Discrete Mathematics, 2006 , p. 487.

Irodalom