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

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

Täydentäviä muistiinpanoja jäsennysalgoritmeista

Kontekstittomien kielten jäsentäminen Täydentäviä muistiinpanoja TIEA241 Automaatit ja kieliopit, syksy 2016

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

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

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

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

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

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

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

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

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

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

TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 29. toukokuuta 2013

Attribuuttikieliopit

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

Täydentäviä muistiinpanoja Turingin koneiden vaihtoehdoista

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

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

Yhteydettömät kieliopit [Sipser luku 2.1]

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

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

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

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

LR-jäsennys. Antti-Juhani Kaijanaho. 3. lokakuuta 2016

Pinoautomaatit. Pois kontekstittomuudesta

Laskennan mallit (syksy 2010) Harjoitus 8, ratkaisuja

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

TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 26. tammikuuta 2012

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

Rajoittamattomat kieliopit

Jäsennys. TIEA341 Funktio ohjelmointi 1 Syksy 2005

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

Yhteydettömän kieliopin jäsennysongelma

Entscheidungsproblem

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

Entscheidungsproblem

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

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

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

11.4. Context-free kielet 1 / 17

Syntaksi. TIE448 Kääntäjätekniikka, syksy Antti-Juhani Kaijanaho. 22. syyskuuta 2009 TIETOTEKNIIKAN LAITOS. Syntaksi. Aluksi.

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

TIES542 kevät 2009 Lausekkeista ja vähän muustakin

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

PERUSLASKUJA. Kirjoita muuten sama, mutta ota KAKSI välilyöntiä (SEURAA ALUEMERKINTÄÄ) 4:n jälkeen 3/4 +5^2

TIE448 Kääntäjätekniikka, syksy Antti-Juhani Kaijanaho. 9. marraskuuta 2009

TIEA341 Funktio-ohjelmointi 1, kevät 2008

2. Yhteydettömät kielet

TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 12. tammikuuta 2012

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

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

PERUSLASKUJA. Kirjoita muuten sama, mutta ota välilyönti 4:n jälkeen 3/4 +5^2

Laskennan rajoja. TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 20. kesäkuuta 2013 TIETOTEKNIIKAN LAITOS.

Excel 2016 Power Pivot

Johdatus Ohjelmointiin

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

vaihtoehtoja TIEA241 Automaatit ja kieliopit, syksy 2016 Antti-Juhani Kaijanaho 13. lokakuuta 2016 TIETOTEKNIIKAN LAITOS

Täydentäviä muistiinpanoja laskennan rajoista

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

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

Laskennan rajoja. TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 6. maaliskuuta 2012 TIETOTEKNIIKAN LAITOS.

ICS-C2000 Tietojenkäsittelyteoria

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

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

Jäsennysalgoritmeja. TIE448 Kääntäjätekniikka, syksy Antti-Juhani Kaijanaho. 29. syyskuuta 2009 TIETOTEKNIIKAN LAITOS. Jäsennysalgoritmeja

Ohjelmoinnin perusteet Y Python

TIE448 Kääntäjätekniikka, syksy Antti-Juhani Kaijanaho. 7. joulukuuta 2009

Excel PowerPivot

A. Mikä on 10-järjestelmä eli 10-kertaisia lukuja ja niiden 10:s osia

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

Algoritmit 1. Luento 7 Ti Timo Männikkö

Lisää laskentoa. TIEA341 Funktio ohjelmointi 1 Syksy 2005

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset

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

niin järjestys on tämä: ensin kerto- ja jakolaskut vasemmalta oikealle, sen jälkeen plus- ja miinuslaskut vasemmalta oikealle.

Luku 3. Syntaktisia kysymyksiä. 3.1 Lausekkeet

Sisällys. 3. Muuttujat ja operaatiot. Muuttujat ja operaatiot. Muuttujat. Operaatiot. Imperatiivinen laskenta. Muuttujat. Esimerkkejä: Operaattorit.

Rinnakkaistietokoneet luento S

Tik Tietojenkäsittelyopin ohjelmatyö Tietotekniikan osasto Teknillinen korkeakoulu KÄYTTÖOHJE. LiKe Liiketoiminnan kehityksen tukiprojekti

3. Muuttujat ja operaatiot 3.1

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

AVL-puut. eräs tapa tasapainottaa binäärihakupuu siten, että korkeus on O(log n) kun puussa on n avainta

S BAB ABA A aas bba B bbs c

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

Ohjelmoinnin perusteet Y Python

SQL:N PERUSTEET MARKKU SUNI

58131 Tietorakenteet (kevät 2009) Harjoitus 6, ratkaisuja (Antti Laaksonen)

2. Seuraavassa kuvassa on verkon solmujen topologinen järjestys: x t v q z u s y w r. Kuva 1: Tehtävän 2 solmut järjestettynä topologisesti.

TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 22. toukokuuta 2013

KAAVAT. Sisällysluettelo

Harjoitus 5 (viikko 41)

Kurssin loppuosassa tutustutaan matriiseihin ja niiden käyttöön yhtälöryhmien ratkaisemisessa.

Silmukkaoptimoinnista

Demo 7 ( ) Antti-Juhani Kaijanaho. 9. joulukuuta 2005

5.1 Semanttisten puiden muodostaminen

Harjoitus 5. Esimerkki ohjelman toiminnasta: Lausekielinen ohjelmointi I Kesä 2018 Avoin yliopisto 1 / 5

Ydin-Haskell Tiivismoniste

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

Algoritmit 2. Luento 2 Ke Timo Männikkö

Transkriptio:

Täydentäviä muistiinpanoja kontekstittomien kielioppien jäsentämisestä Antti-Juhani Kaijanaho 30. marraskuuta 2015 1 Yksiselitteiset operaattorikieliopit 1.1 Aritmeettiset lausekkeet Tällä kurssilla on tullut tutuksi aritmeettisten lausekkeiden moniselitteinen kielioppi E c E E + E E E E E E / E (E) Tässä kieliopissa on yksi prefiksioperaattori ( ), neljä infiksioperaattoria (+,, ja /) ja kaksi primäärilauseketta (c ja (E)). Huomaa, että yksi päätemerkeistä on kaksoisroolissa: on sekä prefiksioperaattori (negaatio) että infiksioperaattori (vähennyslasku). Tavanomainen aritmeettisten operaattoreiden presedenssijärjestys on seuraava: korkein presedenssi on negaatiolla, seuraavaksi korkein on kerto- ja jakolaskulla, ja alin presedenssi on yhteen- ja vähennyslaskulla. Aritmetiikassa ei ole väliä, ovatko yhteen-, vähennys- ja kertolasku vasemmalle vai oikealle assosiatiivisia, mutta tavanomaista ohjelmointikielissä on julistaa ne vasemmalle assosiatiivisiksi. Jakolaskulle on luonnollista ottaa sama assosiatiivisuus kuin kertolaskulle. Prefiksioperaattorina negaatio on luontevimmin oikealle assosiatiivinen, jolloin 4 = ( 4). Lajitellaan nyt operaattorit luokkiin. Aritmeettisten lausekkeiden tapauksessa luokilla on vakiintuneet nimet: 1. Lausekeluokkaan (engl. expressions) kuuluvat yhteen- ja vähennyslaskut. TIEA241 Automaatit ja kieliopit, syksy 2015; Earleyn algoritmin soveltamisesimerkkiä korjattu lievästi 30.11.2015. 1

2. Termiluokkaan (engl. terms) kuuluvat kerto- ja jakolaskut. 3. Tekijäluokkaan (engl. factors) kuuluu negaatio. Lisäksi lisätään loppuun primäärilausekkeiden luokka, johon kuuluvat vakiolausekkeet ja suljelausekkeet. Valitaan kullekin luokalle englanninkielisen nimen alkukirjain välikesymboliksi: E, T, F ja P. Noudattamalla kalvojen menetelmää edelleen saadaan seuraava yksiselitteinen kielioppi: E T E + T E T T F T F T / F F P F P c (E) 1.2 Säännölliset lausekkeet Säännöllisille lausekkeille voidaan kirjoittaa seuraava moniselitteinen kontekstiton kielioppi: R () c R RR R R (R) (Huomaa kieliopissa valintaa merkitsevän pystyviivan ja päätemerkin huonosti näkyvä mutta erittäin tärkeä ero.) Aluksi todetaan operaattorit. Löytyy yksi postfiksioperaattori ( ), kaksi infiksioperaattoria (ε ja ) ja neljä primäärilauseketta (, c, () ja (R)). Ne muodostavat presedenssiluokat seuraavasti: 1. 2. ε 3. Näille ei ole erityisiä nimiä, joten käytetään välikesymbolien niminä alaindeksoitua R:ää. Käsitellään kaikkia operaattoreita vasemmalle assosiatiivisina. Nyt saadaan seuraava yksiselitteinen kielioppi: R 1 R 2 R 1 R 2 R 2 R 3 R 2 R 3 R 3 R 4 R 3 R 4 c () (R 1 ) 2

2 Vasemman rekursion poisto Molemmat edellä laaditut yksiselitteiset kieliopit ovat vasenrekursiivisia. Sen poistaminen johtaa seuraavanlaisiin kielioppeihin: E T E E ε + T E T E T F T T ε F T / F T F P F P c (E) R 1 R 2 R 1 R 1 ε R 2 R 1 R 2 R 3 R 2 R 2 ε R 3 R 2 R 3 R 4 R 3 R 3 ε R 3 R 4 c () (R 1 ) 3 Esimerkki Earleyn algoritmin soveltamisesta Tarkastellaan kielioppia G : E E + E E E (E) c ja sovelletaan Earleyn algoritmia siihen sekä merkkijonoon c + c c. Seuraavassa esityksessä on yksi taulukko per S i -joukko. Taulukon otsikkorivillä kerrotaan, mistä joukosta on kyse, sekä mitä kohtaa merkkijonosta se tarkastelee (jolloin selaus tarkastelee pisteen jälkeistä merkkiä). Kukin taulukko luetteloi (ja numeroi) joukossa olevat asetelmat siinä järjestyksessä, jossa ne on siihen lisätty. Kunkin asetelman kohdalla on kerrottu, miksi se on joukkoon lisätty (sulkeissa olevat numerot viittaavat aiempiin riveihin). Jos sama asetelma tulee lisättäväksi samaan taulukkoon useampaan kertaan, käytetään ensimmäisen lisäyksen riviä merkitsemään myös myöhempien lisäysten syyt. 3

S 0 c + c c 1 S E, 0 alustus 2 E E + E, 0 ennustus (1, 2, 3) 3 E E E, 0 ennustus (1, 2, 3) 4 E (E), 0 ennustus (1, 2, 3) 5 E c, 0 ennustus (1, 2, 3) S 1 c +c c 1 E c, 0 selaus S 0 (5) 2 S E, 0 täydennys (1), S 0 (1) 3 E E +E, 0 täydennys (1), S 0 (2) 4 E E E, 0 täydennys (1), S 0 (3) S 2 c + c c 1 E E + E, 0 selaus S 1 (3) 2 E E + E, 2 ennustus (1, 2, 3) 3 E E E, 2 ennustus (1, 2, 3) 4 E (E), 2 ennustus (1, 2, 3) 5 E c, 2 ennustus (1, 2, 3) S 3 c + c c 1 E c, 2 selaus S 2 (5) 2 E E + E, 0 täydennys (1), S 2 (1) 3 E E +E, 2 täydennys (1), S 2 (2) 4 E E E, 2 täydennys (1), S 2 (3) 5 S E, 0 täydennys (2), S 0 (1) 6 E E +E, 0 täydennys (2), S 0 (2) 7 E E E, 0 täydennys (2), S 0 (3) S 4 c + c c 1 E E E, 2 selaus S 3 (4) 2 E E E, 0 selaus S 3 (7) 3 E E + E, 4 ennustus (1, 2) 4 E E E, 4 ennustus (1, 2) 5 E (E), 4 ennustus (1, 2) 6 E c, 4 ennustus (1, 2) 4

S 5 c + c c 1 E c, 4 selaus S 4 (6) 2 E E E, 2 täydennys (1), S 4 (1) 3 E E E, 0 täydennys (1), S 4 (2) 4 E E +E, 4 täydennys (1), S 4 (3) 5 E E E, 4 täydennys (1), S 4 (4) 6 E E + E, 0 täydennys (2), S 2 (1) 7 E E +E, 2 täydennys (2), S 2 (2) 8 E E E, 2 täydennys (2), S 2 (3) 9 S E, 0 täydennys (3, 6), S 0 (1) 10 E E +E, 0 täydennys (3, 6), S 0 (2) 11 E E E, 0 täydennys (3, 6), S 0 (3) Koska (S E, 0) S 5 pätee, julistetaan että c + c c L(G) myös pätee. Edellä olevista taulukoista voidaan myös lukea jäsennyspuut. Piirretään ensiksi sellaiset puut, joissa solmuina ovat algoritmin taulukoista löytyvät asetelmat. Asetelmojen väliset suhteet luetaan taulukoista seuraavasti: Asetelma (S E, 0) on puun juuri. Asetelma A on jonkin toisen asetelman B oikeanpuolimmainen lapsi, jos asetelma B on merkitty johdetuksi täydennyksellä samassa taulukossa olevasta asetelmasta A. Jos asetelmalla on useita oikeanpuolimmaisia lapsia, on kyse tilanteesta, jossa on useita jäsennyspuita. Valitsemalla oikeanpuolimmaisista lapsista jonkin saadaan aikaan jokin jäsennyspuista. Asetelma, joka on johdettu toisesta selauksella taikka täydennyksellä jostakin edellisen taulukon asetelmasta, on sen oikeanpuoleinen sisarus. Sisarussuhdeketjussa tulee olla kaikilla asetelmilla sama produktio. Jos näin ei ole, algoritmia on sovellettu väärin. Sisarussuhdeketjun yhteisen produktion oikean puolen kutakin symbolia kohden pitää olla ketjussa asetelma, jossa piste on ko. symbolin kohdalla. Jos näin ei ole, puu on hylättävä epäonnistuneena jäsennysyrityksenä. Seuraavat ei-hylättävät puut saadaan aikaan. Merkitsen asetelman siten lyhentäen, että laitan varsinaiseksi merkiksi sen merkin, joka tulee asetelmassa ennen pistettä, ja varustan sen ylä- ja alaindekseillä i, j, joissa i kertoo sen 5

taulukon ja j sen rivin, josta asetealma löydettiin puuhun. Yläindeksi viittaa oikeanpuolimmaisella (tai ainoalla) sisaruksella ylenevään polveen ja muilla sisaruuteen oikealle päin. Alaindeksi viittaa suhteeseen oikeanpuolimmaiseen (tai ainoaan) lapseen. Siis esimerkiksi E 5,6 3,2 kertoo, että kyseisessä asetelmassa pistettä edeltää E, että sen vanhempi selviää tarkastelemalla taulukon S 5 rivin 6 suhteita ja että sen lapsi selviää tarkastelemalla taulukon S 3 rivin 2 suhteita. E 5,9 E 3,5 E 3,7 5,14 4,2 E 5,3 5,3 E 1,3 1,3 + 2,1 E 3,2 5,6 E 1,3 1,3 + 2,1 E 5,6 3,2 c 5,1 c 1,1 E 3,4 3,4 4,1 E 5,2 5,2 c 1,1 c 3,1 c 3,1 c 5,1 6