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.
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:
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.
Chomsky-hierarkian mukaan kieliopit on jaettu 4 tyyppiin, jokainen seuraava on rajoitetumpi osajoukko edellisestä (mutta myös helpompi analysoida):
Lisäksi siellä on:
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:
KAAVAJohtopää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)
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.
Muodolliset kielet ja viralliset kieliopit | |
---|---|
Yleiset käsitteet | |
Tyyppi 0 | |
Tyyppi 1 |
|
Tyyppi 2 | |
Tyyppi 3 |
|
jäsentäminen |