Muodollinen kielioppi

Muodollinen kielioppi tai vain kielioppi muodollisten kielten teoriassa  on tapa kuvata muodollista kieltä, eli valita tietty osajoukko jonkin äärellisen aakkoston kaikkien sanojen joukosta . On olemassa generatiivisia ja tunnistavia (tai analyyttisiä ) kielioppeja - ensimmäinen asettaa säännöt, joilla voit rakentaa minkä tahansa kielen sanan, ja toinen antaa sinun määrittää tietystä sanasta, sisältyykö se kieleen vai ei.

Ehdot

Generatiiviset kieliopit

Kieliopin antamat kielen sanat ovat kaikki päätejonoja, jotka tulostetaan (generoidaan) alkuperäisestä ei-päätteestä lähtösääntöjen mukaisesti.

Asettaaksesi kieliopin, sinun on asetettava päätteiden ja ei-päätteiden aakkoset, joukko päättelysääntöjä ja valittava myös alkuperäinen ei-päätejoukosta.

Joten kielioppi määritellään seuraavilla ominaisuuksilla:

Johtopäätös

Lähtö on rivijono, joka koostuu päätteistä ja ei-päätteistä, jossa ensimmäinen rivi on rivi, joka koostuu yhdestä aloittavasta ei-päätteestä, ja jokainen seuraava rivi saadaan edellisestä korvaamalla jokin alimerkkijono yhden (mikä tahansa) mukaan. säännöistä. Viimeinen merkkijono on merkkijono, joka koostuu kokonaan terminaaleista, ja on siksi kielen sana.

Tietyn sanan johdannaisen olemassaolo on kriteeri sen kuulumiselle tietyn kieliopin määrittelemään kieleen.

Kielioppityypit

Chomsky-hierarkian mukaan kieliopit on jaettu 4 tyyppiin, jokainen seuraava on rajoitetumpi osajoukko edellisestä (mutta myös helpompi analysoida):

Lisäksi siellä on:

Sovellus

Esimerkkinä ovat aritmeettiset lausekkeet

Harkitse yksinkertaista kieltä, joka määrittelee rajoitetun osajoukon aritmeettisia kaavoja, jotka koostuvat luonnollisista luvuista , suluista ja aritmeettisista merkeistä. On syytä huomata, että tässä jokaisessa säännössä nuolen vasemmalla puolella on vain yksi ei-päätesymboli. Tällaisia ​​kielioppeja kutsutaan kontekstivapaiksi .

Päätteen aakkoset:

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

Ei-pääteaakkoset:

{ KAAVA, TUNNUS, NUMERO, NUMERO }

Säännöt:

1. KAAVA KAAVA MERKKIKAAVA (kaavassa on kaksi kaavaa, jotka on yhdistetty merkillä) 2. KAAVAN NUMERO (kaava on numero) 3. KAAVA ( FORMULA ) (kaava on suluissa oleva kaava) 4. SIGN + | - | * | / (merkki on plus tai miinus tai kerro tai jaa) 5. NUMERONUMERO ( luku on numero) 6. NUMERON NUMERO (luku on numero ja numero) 7. NUMERO 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 (numero on 0 tai 1 tai ... 9)

Alkuperäinen ei-pääte:

KAAVA

Johtopäätös :

Johdetaan kaava (12+5) lueteltujen päättelysääntöjen avulla. Selvyyden vuoksi kunkin vaihdon sivut on esitetty pareittain, kussakin parissa vaihdettu osa on alleviivattu.

KAAVA (FORMULA) ( FORMULA ) ( FORMULA SIGN FORMULA ) (FORMULA SIGN FORMULA) (FORMULA + FORMULA) ( FORMULA + KAAVA ) ( KAAVA + NUMERO ) ( KAAVA + NUMERO ) ( KAAVA + NUMERO ) ( KAAVA + NUMERO ) ( KAAVA + 5 ) ( KAAVA + 5) ( NUMERO + 5) ( NUMERO + 5) ( NUMERO + 5) ( NUMERO NUMERO + 5) ( NUMERO + 5) ( NUMERO + 5) ( 1 NUMERO + 5) (1 NUMERO + 5) (1 2 + 5)


Analyyttiset kieliopit

Generatiiviset kieliopit eivät ole ainoa kielioppityyppi, mutta ne ovat yleisimpiä ohjelmointisovelluksissa. Toisin kuin generatiiviset kieliopit, analyyttinen (tunnistava) kielioppi määrittelee algoritmin, jonka avulla voit määrittää, kuuluuko tietty sana kieleen. Esimerkiksi mikä tahansa säännöllinen kieli voidaan tunnistaa tilakoneen määrittämän kieliopin avulla , ja mikä tahansa yhteydetön kielioppi voidaan tunnistaa pinopohjaisella automaatilla . Jos sana kuuluu johonkin kieleen, niin tällainen automaatti rakentaa tulostensa eksplisiittiseen muotoon, mikä mahdollistaa tämän sanan semantiikan analysoinnin.

Katso myös

Muistiinpanot

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

Kirjallisuus