11.4. Context-free kielet 1 / 17



Samankaltaiset tiedostot
8.5. Jäsennyspuu 1 / 23

Yhteydettömät kieliopit [Sipser luku 2.1]

Vasen johto S AB ab ab esittää jäsennyspuun kasvattamista vasemmalta alkaen:

8. Kieliopit ja kielet

8. Kieliopit ja kielet 1 / 22

2. Yhteydettömät kielet

Laskennan mallit (syksy 2010) Harjoitus 8, ratkaisuja

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 3. joulukuuta 2015

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 30. marraskuuta 2015

Luonnolliset vs. muodolliset kielet

9.5. Turingin kone. Turingin koneen ohjeet. Turingin kone on järjestetty seitsikko

T Syksy 2002 Tietojenkäsittelyteorian perusteet Harjoitus 8 Demonstraatiotehtävien ratkaisut

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 9. lokakuuta 2016

uv n, v 1, ja uv i w A kaikilla

FORMAALI SYSTEEMI (in Nutshell): aakkosto: alkeismerkkien joukko kieliopin määräämä syntaksi: sallittujen merkkijonojen rakenne, formaali kuvaus

TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 2. helmikuuta 2012

jäsentäminen TIEA241 Automaatit ja kieliopit, syksy 2015 Antti-Juhani Kaijanaho 26. marraskuuta 2015 TIETOTEKNIIKAN LAITOS

M =(K, Σ, Γ,, s, F ) Σ ={a, b} Γ ={c, d} = {( (s, a, e), (s, cd) ), ( (s, e, e), (f, e) ), (f, e, d), (f, e)

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 3. lokakuuta 2016

Rajoittamattomat kieliopit

S BAB ABA A aas bba B bbs c

Pinoautomaatit. Pois kontekstittomuudesta

Tehtävä 2: Säännölliset lausekkeet

Muodolliset kieliopit

Ei-yhteydettömät kielet [Sipser luku 2.3]

Ongelma(t): Miten jollakin korkeamman tason ohjelmointikielellä esitetty algoritmi saadaan suoritettua mikro-ohjelmoitavalla tietokoneella ja siinä

TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho. 19. tammikuuta 2012

Täydentäviä muistiinpanoja kontekstittomien kielioppien jäsentämisestä

Yhteydettömän kieliopin jäsennysongelma

Säännöllisten kielten sulkeumaominaisuudet

Pinoautomaatit. TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 6. kesäkuuta 2013 TIETOTEKNIIKAN LAITOS. Pinoautomaatit.

(0 1) 010(0 1) Koska kieli on yksinkertainen, muodostetaan sen tunnistava epädeterministinen q 0 q 1 q 2 q3

T Syksy 2006 Tietojenkäsittelyteorian perusteet T Harjoitus 7 Demonstraatiotehtävien ratkaisut

Datatähti 2019 loppu

4. Tehtävässä halutaan todistaa seuraava ongelma ratkeamattomaksi:

ICS-C2000 Tietojenkäsittelyteoria

Testaa: Vertaa pinon merkkijono syötteeseen merkki kerrallaan. Jos löytyy ero, hylkää. Jos pino tyhjenee samaan aikaan, kun syöte loppuu, niin

Datatähti 2019 alku. task type time limit memory limit. A Kolikot standard 1.00 s 512 MB. B Leimasin standard 1.00 s 512 MB

Merkkijono on palindromi, jos se säilyy samana, vaikka sen kääntää väärinpäin.

TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 12. kesäkuuta 2013

ICS-C2000 Tietojenkäsittelyteoria Kevät 2016

JOHDATUS TEKOÄLYYN TEEMU ROOS

Esimerkki 2.28: Tarkastellaan edellisen sivun ehdot (1) (3) toteuttavaa pinoautomaattia, jossa päätemerkit ovat a, b ja c ja pinoaakkoset d, e ja $:

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 12. marraskuuta 2015

815338A Ohjelmointikielten periaatteet

Toispuoleiset raja-arvot

Attribuuttikieliopit

Säännölliset kielet. Sisällys. Säännölliset kielet. Säännölliset operaattorit. Säännölliset kielet

TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho. 31. maaliskuuta 2011

Chomskyn hierarkia ja yhteysherkät kieliopit

Datatähti alkukilpailu

ICS-C2000 Tietojenkäsittelyteoria. Tähän mennessä: säännölliset kielet. Säännöllisten kielten pumppauslemma M :=

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 12. lokakuuta 2016

811120P Diskreetit rakenteet

Automaatit. Muodolliset kielet

Prolog kielenä Periaatteet Yhteenveto. Prolog. Toni ja Laura Fadjukoff. 9. joulukuuta 2010

Algebralliset tietotyypit ym. TIEA341 Funktio ohjelmointi 1 Syksy 2005

Lineaariset yhtälöryhmät ja matriisit

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 19. syyskuuta 2016

Luonnollisen päättelyn luotettavuus

Hahmon etsiminen syotteesta (johdatteleva esimerkki)

LAUSEKKEET JA NIIDEN MUUNTAMINEN

Täydentäviä muistiinpanoja jäsennysalgoritmeista

Rajoittamattomat kieliopit (Unrestricted Grammars)

Laskennan rajoja. TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 10. joulukuuta 2015 TIETOTEKNIIKAN LAITOS.

KESKI-SUOMEN MAAKUNNAN JA LÄHIKUNTIEN LUKIOIDEN TIETOTEKNIIKAN II KILPAILU

Syötteen ensimmäisellä rivillä on kokonaisluku n, testien määrä (1 n 10). Tämän jälkeen jokaisella seuraavalla rivillä on kokonaisluku x (0 x 1000).

Algoritmit 2. Demot Timo Männikkö

Java-kielen perusteet

Ohjelmassa on käytettävä funktiota laskeparkkimaksu laskemaan kunkin asiakkaan maksu. Funktio floor pyöristää luvun lähimmäksi kokonaisluvuksi.

5.5 Jäsenninkombinaattoreista

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 20. lokakuuta 2016

ICS-C2000 Tietojenkäsittelyteoria Kevät 2016

Osoitamme, että jotkut kielet eivät ole säännöllisiä eli niitä ei voi tunnistaa äärellisellä automaatilla.

TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho. 31. maaliskuuta 2011

jäsennyksestä TIEA241 Automaatit ja kieliopit, syksy 2016 Antti-Juhani Kaijanaho 29. syyskuuta 2016 TIETOTEKNIIKAN LAITOS Kontekstittomien kielioppien

AS C-ohjelmoinnin peruskurssi 2013: C-kieli käytännössä ja erot Pythoniin

Jäsennysaiheesta lisää Täydentäviä muistiinpanoja TIEA241 Automaatit ja kieliopit, syksy 2016

TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 10. kesäkuuta 2013

TKT20005 Laskennan mallit (syksy 2018) Kurssikoe, malliratkaisut

Tietotekniikan valintakoe

Täydentäviä muistiinpanoja laskennan rajoista

Matriisipotenssi. Koska matriisikertolasku on liitännäinen (sulkuja ei tarvita; ks. lause 2), voidaan asettaa seuraava määritelmä: ja A 0 = I n.

Palautetta viime luennosta

Äärellisten automaattien ja säännöllisten kielten ekvivalenssi

ELM GROUP 04. Teemu Laakso Henrik Talarmo

Matematiikan tukikurssi

1. Universaaleja laskennan malleja

Pinoautomaatit. TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 6. lokakuuta 2016 TIETOTEKNIIKAN LAITOS

Laskennan rajoja. Sisällys. Meta. Palataan torstaihin. Ratkeavuus. Meta. Universaalikoneet. Palataan torstaihin. Ratkeavuus.

4 Matemaattinen induktio

Luku 4. Derivoituvien funktioiden ominaisuuksia.

Käänteismatriisin. Aiheet. Käänteismatriisin ominaisuuksia. Rivioperaatiot matriisitulona. Matriisin kääntäminen rivioperaatioiden avulla

Lineaarialgebra ja matriisilaskenta I

5.3 Ratkeavia ongelmia

tään painetussa ja käsin kirjoitetussa materiaalissa usein pienillä kreikkalaisilla

TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 8. maaliskuuta 2012

Tutoriaaliläsnäoloista

Groovy. Niko Jäntti Jesper Haapalinna Group 31

Transkriptio:

11.4. Context-free kielet 1 / 17 Määritelmä Tyypin 2 kielioppi (lauseyhteysvapaa, context free): jos jokainenp :n sääntö on muotoa A w, missäa V \V T jaw V. Context-free kielet ja kieliopit ovat tärkeitä mm. seuraavista syistä: 1) Kielioppeja on helppo käsitellä, koska säännön soveltaminen tarkoittaa yhden kirjaimen korvaamista sanalla (säännöt ovat muotoa A w). 2) Monien ohjelmointikielien syntaksi on määritelty context-free muotoisella kieliopilla. 3) Context-free kieliopin johto voidaan esittää graafisesti johtamispuun avulla (palataan myöhemmin). 2 / 17 Merkki kerrallaan Lause 11.2. JosLon context-free kieli, niin on olemassa sellainen context-free kielioppig, että L = L(G) ja jokainen kielenlsana tuotetaan kieliopissagmerkki kerrallaan ja halutusta suunnasta edeten (esim. vasemmalta oikealle). Todistus. Sivuutetaan. 3 / 17 1

Esimerkki 11.3. Esimerkki 11.3. Määrää kielioppi, joka tuottaa täsmälleen kielenl = {0 n 1 n n = 1,2,...} sanat merkki kerraltaan vasemmalta oikealle. 4 / 17 Backus- Naur muoto Context free kielioppien yhteydessä käytetään usein Backus Naur muotoa (BNF-muotoa). Koska jokaisen säännönw 1 w 2 vasen puoli on yksittäinen apukirjain (ei terminaali-)symboli, niin samasta symbolista johtuvia sääntöjä ei anneta erillisinä vaan ryhminä. Ei terminaalisymbolit merkitään sulkujen sisään ja säännön eri tuotokset erotetaan pystyviivalla toisistaan. Alkukirjain Backus-Naur muodossa on ensimmäisen säännön vasemmanpuoleinen apukirjain. 5 / 17 2

Backus-Naur jatkoa Esimerkki. KielioppiG = ({a,b,a,b},{a,b},a,p), missä P = {A baa,a a,a AB,B bb,b b} Backus-Naur muodossa: A ::= b A a a A B B ::= b B b 6 / 17 Esimerkkejä Esimerkki 11.4. Muunna esimerkin 11.3. kielioppi Backus-Naur muotoon. Esimerkki 11.5. Määrää Backus-Naur muotoinen kielioppi, joka tuottaa merkki merkiltä vasemmalta oikealle kaikki merkeistä0,1ja2koostuvat sanat, joissa ei esiinny kahta samaa merkkiä peräkkäin, ja vain ne. Kuuluuko tyhjä sana oikein muodostetun kieliopin tuottamaan kieleen. 7 / 17 3

Esimerkkejä jatkoa Esimerkki 11.6. Tiedonsiirrossa siirrettävä informaatio pilkotaan lohkoihin, joihin lisätään tarkistusmerkkejä, joiden avulla voidaan havaita siirtotien aiheuttamia virheitä. Kuusi merkkiä käsittävä lohko koostuu4:stä varsinaisesta merkistä ja kahdesta tarkistusmerkistä seuraavasti: (1) ensimmäinen ja toinen merkki ovat kirjaimia joukosta{a,b,c}; (2) kolmas ja neljäs merkki ovat lukuja joukosta{2,3}; (3) viides merkki on merkkien3ja4summa; (4) kuudes merkki onx, jos ensimmäinen ja toinen merkki ovat samat ja muulloin Y. Tee Backus-Naur muotoinen kielioppi, joka tuottaa kaikki oikein muodostetut siirtolohkot. Ratk... 8 / 17 Esimerkki 11.7. Esimerkki 11.7. Ohjelman piti tarkistaa syötetyt päivämäärät (luvut), jotka olivat nelimerkkisiä ja tyyppiä p 1 p 2 k 1 k 2, missä lukup 1 p 2 ilmoittaa päivän ja lukuk 1 k 2 kuukauden. Tarkistamisohjelmaa varten laadittiin säännöt mainitunlaisten merkkijonojen tuottamiseksi. Tee Backus-Naur muotoiset säännöt päivämäärien/lukujen p 1 p 2 k 1 k 2 tuottamiseksi merkki merkiltä vasemmalta oikealle, kun ohjelmalla tarkistetaan (tavallisen) karkausvuoden päiviä. Ratk... 9 / 17 4

11.5. Jäsennyspuu 10 / 17 Kääntäminen ja BNF Ohjelmointikielten kuten Java, C++, Pascal, Fortran jne. syntaksi määritellään tyypillisesti BNF-muotoisilla säännöillä. Sääntöjä on usein satoja. Ohjelman kääntämisessä testataan onko ohjelma muodollisesti oikein eli toteuttaako se ohjelmointikielen syntaksin. Siis voidaanko ohjelmakoodi johtaa ohjelmointikielen syntaksin määrittelevistä BNF-säännöistä. 11 / 17 Kokonaisluvun johto Esimerkki. Kokonaisluvun määrittelevät BNF-muotoiset säännöt Integer ::= SignedInteger U nsignedinteger SignedInteger ::= + U nsignedinteger U nsignedinteger U nsignedinteger ::= Digit Digit U nsignedinteger Digit ::= 0 1 2 9 12 / 17 5

Johtamispuu Context-free kielioping = (V,V T,S,P) johtoons w voidaan aina liittää johtoa kuvaava jäsennyspuu (=johtamispuu, parse tree) seuraavasti: 1) Puun pisteet merkitäänv:n symboleilla taiλ:lla. 2)Jos johdossa ensimmäinen käytetty sääntö ons α 1 α 2 α m,m 1,α i V, aina kuni = 1,2,...,m, niin jatketaan puutam:llä symbolilla, jotka merkitään vasemmalta oikealleα 1,α 2,...,α m. Jos ensimmäinen sääntö ons λ, niin jatketaan puuta yhdellä pisteellä, jota merkitäänλ:lla. 3) Josα i on apukirjain, johdon toinen sääntö kohdistuu siihen ja onα i β 1 β 2 β k, niin jatketaan puutaα i :tä vastaavasta pisteestäk:lla pisteellä, jotka merkitään vasemmalta oikealle symboleinβ 1,β 2,...,β k. Jos toinen sääntö on muotoa α i λ, niin jatketaan puuta pisteellä, jota merkitäänλ:lla. 13 / 17 Johtamispuu jatkoa 4) Tällä tavoin jatketaan puun rakentamista. Sitä voidaan jatkaa mistä tahansa apukirjaimesta, ei pelkästään viimeksi saadusta. 5) Lopulta jokainen puun piste johon sääntöä ei ole sovellettu on merkitty joko aakkostonv T symbolilla taiλ:lla. Näistä pisteistä johtoa ei enää voi jatkaa (kysessä ovat puun lehdet). Silloin johto päättyy ja johdon tuottama sana voidaan lukea puun lehdistä vasemmalta oikealle. 14 / 17 6

Jäsentämispuun käyttö Jäsentämispuuta käytetään sanan oikeellisuuden (onko annettu sana kielen sana) tarkistamisessa. Puhutuille kielille ei tarkkoja sääntöjä kyetä luomaan, joten myöskään oikeellisuuden testaaminen ei ole mahdollista. Ohjelmointikielet määritellään tarkasti, joten jäsennyspuu on käyttökelpoinen väline ohjelman oikeellisuuden tutkimiseen. 15 / 17 Esimerkki 11.9. Merkitään seuraavassa kieliopin sääntöjoukkoaa w 1,A w 2,...A w n lyhyesti A w 1 w 2 w n. Esimerkki 11.9. Määrää kieliopin G = ({A,B,0,1},{0,1},S,P), missä P = {S A B,A 0 0A 1AA AA1 A1A,B 1 1B 0BB BB0 B0B}, johto ja johtoa vastaava jäsennyspuu sanalle0111. 16 / 17 7

Vasen johto JohtoaS w on vasen johto, jos siinä aina jatketaan vasemmalta lukien aina ensimmäisestä soveltuvasta apukirjaimesta. Jokainen johto voidaan aina korvata vasemmalla johdolla. Context-free kielioppi on moniselitteinen (ambiquous), jos jollakin kielenl(g) sanalla on ainakin kaksi erilaista vasemmanpuoleista johtoa. Muulloin kielioppigon yksiselitteinen (unambiquous). Esimerkki 11.10. Onko kielioppi missä G = ({A,B,0,1},{0,1},S,P), P = {S 01A 0B,A 1,B 11}, moniselitteinen? 17 / 17 8