ICS-C2000 Tietojenkäsittelyteoria
|
|
- Paavo Melasniemi
- 7 vuotta sitten
- Katselukertoja:
Transkriptio
1 ICS-C2000 Tietojenkäsittelyteoria Luento 6: Jäsennyspuut, LL(1)-kielioppien jäsennys Aalto-yliopisto Perustieteiden korkeakoulu Tietotekniikan laitos Alue ja aiheet: Orposen prujun luvut Kielioppien jäsennysongea Osittava jäsentäminen, LL(1)-kieliopit Attribuuttikieliopit Kevät /65 Kertausta: yhteydettömät kieliopit Kielioppi C-tyyppisen ohjeointikielen aritmeettisille lausekkeille funktiokutsuilla (yksinkertaistettu). T + T T F T F F a ( ) f ( L ) L ε L L, L Jäsennyspuut simerkiksi lausekkeen f (a + a) a tuottaminen: T T F F F f (L) F f (L ) F f () F f ( + T) F f (T + T) F f (F + T) F f (a + T) F f (a + F) F f (a + a) F f (a + a) a. 3/65 4/65
2 3.3 Kielioppien jäsennysongea Ratkaistava tehtävä: Annettu yhteydetön kielioppi G ja merkkijono x. Onko x L(G)? Ratkaisumeneteä = jäsennysalgoritmi. Useita vaihtoehtoisia meneteiä, erityisesti kun G on jotain rajoitettua (käytännössä esiintyvää) muotoa. Johdot ja jäsennyspuut Olkoon γ V kieliopin G = (V,Σ,P,S) lausejohdos. Lähtösymbolista S merkkijonoon γ johtavaa suorien johtojen jonoa S = γ 0 γ 1 γ n = γ sanotaan γ:n johdoksi G:ssä. Johdon pituus on siihen kuuluvien suorien johtojen määrä (edellä n). Lauseen a + a johtoja kieliopissa G expr : (i) + T T + T F + T a + T a + F a + a (ii) + T + F T + F F + F F + a a + a (iii) + T + F + a T + a F + a a + a. 5/65 6/65 Johto γ γ on vasen johto, merkitään γ γ, jos kussakin johtoaskelessa on produktiota sovellettu merkkijonon vasemmanpuoleisimpaan välikkeeseen (edellä johto (i)). Vastaavasti määritellään oikea johto (edellä (iii)), jota merkitään γ γ rm Suoria vasempia ja oikeita johtoaskelia merkitään γ γ ja γ γ. rm Olkoon G = (V, Σ, P, S) yhteydetön kielioppi. Kieliopin G mukainen jäsennyspuu on järjestetty puu, jolla on seuraavat ominaisuudet: 1. puun sout on nimetty joukon V {ε} alkioilla siten, että sisäsoujen nimet ovat välikkeitä (so. joukosta N = V Σ) ja juurisoun nimenä on lähtösymboli S; 2. jos A on puun jonkin sisäsoun nimi, ja X 1,...,X k ovat sen jälkeläisten nimet järjestyksessä, niin A X 1...X k on G:n produktio. Jäsennyspuun τ tuotos on merkkijono, joka saadaan liittämällä yhteen sen lehtisoujen nimet esijärjestyksessä ( vasemmalta oikealle ). 7/65 8/65
3 Lauseen a + a jäsennyspuu kieliopissa G expr : Johtoa S = γ 0 γ 1 γ n = γ Lauseen johto: + T T F a + T T + T F + T a + T a + F a + a F a vastaavan jäsennyspuun muodostaminen: 1. puun juuren nimeksi tulee S; jos n = 0, niin puussa ei ole muita souja; muuten 2. jos ensimmäisessä johtoaskelessa on sovellettu produktiota S X 1 X 2...X k, niin juurelle tulee k jälkeläissoua, joiden nimet vasemmalta oikealle ovat X 1,X 2,...,X k ; 3. jos seuraavassa askelessa on sovellettu produktiota X i Y 1 Y 2...Y l, niin juuren i:nnelle jälkeläissoulle tulee l jälkeläistä, joiden nimet vasemmalta oikealle ovat Y 1,Y 2,...,Y l ; ja niin edelleen. Konstruktiosta huomataan, että jos τ on jotakin johtoa S γ vastaava jäsennyspuu, niin τ:n tuotos on γ. 9/65 10/65 Olkoon τ kieliopin G mukainen jäsennyspuu, jonka tuotos on päätemerkkijono x. Tällöin τ:sta saadaan vasen johto x:lle käymällä puun sout läpi esijärjestyksessä ( ylhäältä alas, vasemmalta oikealle ) ja laventamalla vastaan tulevat välikkeet järjestyksessä puun osoittamalla tavalla. Oikea johto saadaan käymällä puu läpi käänteisessä esijärjestyksessä ( ylhäältä alas, oikealta vasemmalle ). Muodostamalla annetusta vasemmasta johdosta S x ensin jäsennyspuu edellä esitetyllä tavalla, ja sitten jäsennyspuusta vasen johto, saadaan takaisin alkuperäinen johto; vastaava tulos pätee myös oikeille johdoille. Lauseen a + a vasemman johdon muodostaminen jäsennyspuusta. Jäsennyspuu: T 1 T 2 F 2 F 1 a 2 Sout esijärjestyksessä: 1 2 T 2 F 1 a 1 + T 1 F 2 a 2 Vasen johto: + T T + T F + T a + T a + F a + a a 1 11/65 12/65
4 Lause 3.3 Olkoon G = (V, Σ, P, S) yhteydetön kielioppi. Tällöin: jokaisella G:n lausejohdoksella γ on G:n mukainen jäsennyspuu τ, jonka tuotos on γ; jokaista G:n mukaista jäsennyspuuta τ, jonka tuotos on päätemerkkijono x, vastaavat yksikäsitteiset vasen ja oikea johto S x ja S x. rm Kieliopin moniselitteisyys simerkki Tarkastellaan yksinkertaisten aritmeettisten lausekkeiden kielioppia G expr = { +,, a, ()}. Lauseella a + a a on tässä kieliopissa kaksi jäsennystä: Seuraus 3.4 Jokaisella G:n lauseella on vasen ja oikea johto. a + + a Siis: yhteydettömän kieliopin tuottamien lauseiden jäsennyspuut, vasemmat ja oikeat johdot vastaavat yksikäsitteisesti toisiaan. Jäsennysongean ratkaisuun katsotaan usein kuuluvan pelkän päätösongean Onko x L(G)? ratkaisemisen lisäksi jonkin näistä jäsennysesityksistä tuottaminen. a a Yhteydetön kielioppi G on moniselitteinen, jos jollakin G:n lauseella x on kaksi erilaista G:n mukaista jäsennyspuuta. Muuten kielioppi on yksiselitteinen. a a 13/65 14/65 Moniselitteisyys on tietojenkäsittelysovelluksissa yleensä ei-toivottu ominaisuus, koska se merkitsee että annetulla lauseella on kaksi vaihtoehtoista tulkintaa. Yhteydetön kieli, jonka tuottavat kieliopit ovat kaikki moniselitteisiä, on luonnostaan moniselitteinen. simerkiksi kielioppi G expr on moniselitteinen, kieliopit G expr ja G match yksiselitteisiä. Kieli L expr = L(G expr) ei ole luonnostaan moniselitteinen, koska sillä on myös yksiselitteinen kielioppi G expr. Luonnostaan moniselitteinen on esimerkiksi kieli Osittava jäsentäminen (Todistus sivuutetaan.) {a i b j c k i = j tai j = k}. 15/65 16/65
5 3.4 Osittava jäsentäminen Yksi (yleisessä muodossa tehoton!) tapa etsiä vasenta johtoa (jäsennyspuuta) annetun kieliopin G mukaiselle lauseelle x on aloittaa G:n lähtösymbolista ja generoida systemaattisesti kaikki mahdolliset vasemmat johdot (jäsennyspuut), samalla sovittaen muodostetun lausejohdoksen päätemerkkejä (puun lehtiä) x:n merkkeihin. i-yhteensopivuuden ietessä peruutetaan viimeksi tehty produktiovalinta ja kokeillaan järjestyksessä seuraavaa vaihtoehtoa. Tällaista lauseenjäsennystapaa sanotaan osittavaksi, koska siinä tarkasteltu lause yritetään johtaa kieliopin lähtösymbolista osittamalla se valittujen produktioiden mukaisiin rakenneosiin ja yrittämällä näin, tarvittaessa toistuvasti edelleen osittamalla, sovittaa kieliopin tuottamaa rakennetta yhteen lauseen rakenteen kanssa. 17/65 Tarkastellaan kielioppia G: T + T T T a ( ) Lauseen a a osittava jäsennys G:n suhteen: T + a + T [ristiriita; peruutetaan] () + T [ristiriita; peruutetaan] T a a T + a a + [ristiriita; peruutetaan] a () + [ristiriita; peruutetaan] a T a a [ristiriita; peruutetaan] a () [ristiriita; peruutetaan] a T a a [OK!] 18/65 m. osittava jäsennystekniikka saadaan huomattavasti tehokkaammaksi, jos kieliopilla on sellainen ominaisuus, että jäsennyksen joka vaiheessa määrää tavoitteena olevan lauseen seuraava merkki yksikäsitteisesti sen, mikä lavennettavana olevaan välikkeeseen liittyvä produktio on valittava. Kielioppia, jolla on tämä ominaisuus, sanotaan LL(1)-tyyppiseksi. Muokataan G:stä välikkeen produktiot tekijöimällä ekvivalentti kielioppi G : T + ε T a ( ) simerkiksi lauseen a a jäsentäminen G :n suhteen (kulloisenkin produktiovalinnan määräävä syötemerkki on tässä merkitty vastaavan johtonuolen päälle): T a a a a T a a a ε a a. LL(1)-tyyppiselle kieliopille on helppo kirjoittaa jäsennysohjea suoraan rekursiivisina proseduureina; esimerkiksi kieliopille G Pythonilla seuraavasti: from sys import e x i t, s t d i n def e r r o r ( s ) : p r i n t s ; e x i t ( 1 ) def e ( ) : p r i n t " > T " t ( ) ; eprime ( ) def eprime ( ) : g l o b a l next i f next== " + " : p r i n t " > +" e ( ) e l i f next== " " : p r i n t " > " e ( ) else : p r i n t " >" Jatkuu seuraavalla kalvolla... 19/65 20/65
6 def t ( ) : g l o b a l next i f next== " a " : p r i n t "T > a " e l i f next== " ( " : p r i n t "T > () " e ( ) i f next!= " ) " : e r r o r ( " ) expected. " ) else : e r r o r ( "T cannot s t a r t with %s "%(next ) ) e ( ) simerkiksi syötejonoa a-(a+a) käsitellessään ohjea tulostaa seuraavat rivit: T T a - T T () T T a + T T a Tulostus vastaa vasenta johtoa: T a a a T a () a (T ) a (a ) a (a + ) a (a + T ) a (a + a ) a (a + a) a (a + a). 21/65 22/65 LL(1)-kieliopit Tarkastellaan seuraavassa LL(1)-kielioppien yleistä muotoa LL(1) parse input from Left to right, produce Leftmost derivation and use 1 token lookahead li luetaan syötettä vasemmalta oikealle ja tehdään vasen johto. Lisäksi tarkastellaan aina vain yhtä seuraavaa merkkiä syötteessä. simerkiksi kielioppi S A b C d A a A ε C c C ε on LL(1)-muodossa, vaikka sen kaikkien produktioiden oikeat puolet eivät alakaan päätesymbolilla 23/65 24/65
7 Vasen rekursio Vasen rekursio on vaikea osittavalle jäsennykselle Määriteä Kielioppi G = (V, Σ, P, S) on vasemmalle rekursiivinen jos jostakin välikkeestä A voidaan johtaa yhdellä tai useammalla askeleella merkkijono Aα, missä α V. Kielioppi Vasen rekursio on ongea osittavalle jäsennykselle, koska se takaa siukkaan jäämisen. Kielioppissa + T T T T F F F a ( ) + T T T T F F F a ( ) on vasemmalle rekursiivinen koska + T ja T T F. Tällaista jo yhdellä askeleella ienevää vasenta rekursiota sanotaan välittömäksi vasemmaksi rekursioksi. 25/65 osittava jäsentäminen voi jäädä tekemään johtoa + T + + T... ian, että merkkijonon alkuun tulee päätesymbolia 26/65 Myös kielioppi S A S a b A B B d A B b ε Vasemman rekursion poisto Välitön vasen rekursio muotoa A A β 1... A β n α 1... α m voidaan poistaa muuttamalla se oikeaksi rekursioksi A α 1 A... α m A A β 1 A... β n A ε Nyt esimerkiksi johtoa on vasemmalle rekursiivinen koska esimerkiksi S ASa BBSa BSa Sa. voidaan simuloida johdolla A Aβ 1 Aβ 2 β 1 α 1 β 2 β 1 A α 1 A αβ 2 A α 1 β 2 β 1 A α 1 β 2 β 1 (Myös yleinen vasen rekursio voidaan poistaa, katso esim. luku 4.3 kirjassa Aho, Sethi, Ulan: Compilers Principles, Techniques, and Tools, ei vaadita kurssilla) 27/65 28/65
8 Kieliopista + T T T T T F F F a ( ) saadaan välittömän vasemman rekursion poistolla kielioppi T + T T ε T F T T F T ε F a ( ) Vasen tekijöinti Toinen osittavalle jäsennykselle hankala konstruktio on samalla tavalla alkavat produktiot simerkiksi C++-kielen lauseet: stmt selection-stmt iteration-stmt... selection-stmt if ( expr ) then stmt if ( expr ) then stmt else stmt switch ( expr ) stmt missä iteration-stmt ja muut eivät ala if-päätesymbolilla. nsimmäisen if-päätesymbolin perusteella ei voida valita, pitääkö käyttää välikkeen selection-stmt ensimmäistä vai toista produktiota 29/65 30/65 Yhteiset alkuosat A α β 1... α β n γ voidaan tekijöidä seuraavasti A α A γ A β 1... β n C++-kielen tyylisen if-the-else -rakenteen selection-stmt if ( expr ) then stmt if ( expr ) then stmt else stmt switch ( expr ) stmt LL(1)-kielioppien formaali määriteä Määritellään seuraavaksi LL(1)-kieliopit formaalisti Tämä tapahtuu kahden apujoukon avulla FIRST kertoo, mitkä päätesymbolit voivat esiintyä ensimmäisenä produktiosta johdettavissa lauseissa FOLLOW kertoo, mitkä päätesymbolit voivat esiintyä heti annetun välikkeen jälkeen johdoissa vasen tekijöinti: selection-stmt if ( expr ) then stmt selection-stmt switch ( expr ) stmt selection-stmt else stmt ε 31/65 32/65
9 Tarvitaan käyttöön vielä tyhjentyvän välikkeen apukäsite Määriteä Välike A on tyhjentyvä jos A ε. Kieliopissa S A S a b A B B d A B b ε FIRST-joukot Määritellään jokaiselle välikkeelle A joukko FIRST(A) päätesymboleja (ml. ε jos A on tyhjentyvä), jotka voivat olla A:sta johdettavien merkkijonojen ensimmäisiä symboleja: Kieliopissa FIRST(A) = {a Σ A aγ jollekin γ V } {ε A ε} S A b C d A a A ε C c C ε välikkeet A ja B ovat tyhjentyviä koska A BB B ε B ε FIRST(C) = {c,ε} koska C cc ja C ε FIRST(A) = {a,ε} koska A aa ja A ε FIRST(S) = {a,b,c,d} koska S Ab aab ja S Ab b S Cd ccd ja S Cd d 33/65 34/65 Kieliopissa on S A S a b A B B d A B b ε FIRST(S) = {b,d} koska S b ja S ASa dasa FIRST(A) = {b,d,ε} koska A BB bb, A da ja A BB B ε FIRST(B) = {b,ε} koska B b ja B ε. FIRST-joukkojen laskeminen (sekä välikkeille että päätesymboleille) induktiivisesti: Jos a on päätesymboli (eli a Σ), niin FIRST(a) = {a} Jos X ε on produktio, niin ε FIRST(X) Jos X X 1 X 2...X k on produktio, päätesymboli a FIRST(X i ) jollekin 1 i k ja ε FIRST(X j ) kaikille 1 j < i, niin a FIRST(X) Jos X X 1 X 2...X k on produktio ja ε FIRST(X j ) kaikille 1 j k, niin ε FIRST(X) Pätee: ε FIRST(A) jos ja vain jos A on tyhjentyvä 35/65 36/65
10 Tarkastellaan kielioppia S A b C d A a A ε C c C ε FIRST(a) = {a}, FIRST(b) = {b}, FIRST(c) = {c}, FIRST(d) = {d} ε FIRST(C) koska C ε on produktio c FIRST(C) koska C cc on produktio ε FIRST(A) koska A ε on produktio a FIRST(A) koska A aa on produktio a FIRST(S) koska S Ab on produktio ja a FIRST(A) b FIRST(S) koska S Ab on produktio, ε FIRST(A) ja b FIRST(b) Laajennetaan FIRST aakkoston V merkkijonoille, jotta voimme tarkastella produktioiden oikeiden puolten ensimmäisiä merkkejä Määritellään induktiivisesti: FIRST(X 1...X k ) on joukon Σ {ε} pienin osajoukko, jolle pätee seuraavat ehdot: ε FIRST(ε) a FIRST(a) jokaiselle a Σ Jos x Σ, x FIRST(X i ) jollekin 1 i k ja ε FIRST(X j ) kaikille 1 j < i, niin x FIRST(X 1...X k ) Jos ε FIRST(X j ) kaikille 1 j k, niin ε FIRST(X 1...X k ) c, d FIRST(S) samasta syystä 37/65 38/65 Tarkastellaan taas kielioppia Kieliopissa S A b C d A a A ε C c C ε Nyt FIRST(A) = {a,ε} ja FIRST(b) = {b} FIRST(C) = {c,ε} ja FIRST(d) = {d} FIRST(S) = {a,b,c,d} FIRST(Ab) = {a,b} FIRST(Cd) = {c,d} voidaan johdon alussa ensimmäisen merkin perusteella valita, kumpaako produktiota S Ab vai S Cd tulee käyttää + T T T T F F F a ( ) on FIRST(F) = {a,(} FIRST(T) = {a,(} FIRST() = {a,(} FIRST( + T) = {a,(} sekä produktiota + T että T soveltamalla voidaan saada johdoksen ensimmäiseksi merkiksi a alussa ei voida ensimmäisen merkin perusteella valita, kumpaako produktiota pitää käyttää 39/65 40/65
11 Kielioppi: T + T ε T F T T F T ε F a ( ) FIRST-joukot: Tarkastellaan johdon tekemistä lauseelle a a + a: T FT at FIRST() = {a,(} FIRST( ) = {+,ε} FIRST(T) = {a,(} FIRST(T ) = {,ε} FIRST(F) = {a,(} Pitäisikö nyt käyttää produktiota T F T vai T ε? Miksi? Pieni if-then-else -kielioppi tekijöinnin jälkeen: FIRST-joukkoja: FIRST(S) = {s,if} S s if C then S S FIRST(S ) = {else,ε} S else S ε FIRST(C) = {c} C c FIRST(else S) = {else} FIRST(ε) = {ε} Muodostetaan vasenta johtoa lauseelle ifcthenifcthenselses: S ifc thenss ifcthenss ifcthenifc thenss S ifcthenifcthenss S ifcthenifcthenss S Pitäisikö nyt käyttää produktiota S elses vai S ε? 41/65 42/65 FOLLOW-joukot Tyhjentyville produktioille FIRST-joukko sisältää symbolin ε Miten tämä tulisi tulkita kun päätetään, mitä produktiota käytetään? Määritellään jokaiselle välikkeelle A joukko FOLLOW(A) päätemerkkejä (ml. erikoissymboli $, joka kuvaa syötteen loppua), jotka voivat seurata A:ta jossain johdossa: c FOLLOW(A) jos c Σ ja S αacβ jollekin α,β V $ FOLLOW(A) jos S αa jollekin α V Kielioppi: Nyt T + T ε T F T T F T ε F a ( ) FIRST-joukot: FOLLOW() = FOLLOW( ) = {$,)} koska on aloitusvälike, ()T ja T FIRST(F) = {a,(} FIRST(T ) = {,ε} FIRST(T) = {a,(} FIRST( ) = {+,ε} FIRST() = {a,(} FOLLOW(T) = FOLLOW(T ) = {+,$,)} koska T T + T, T T ja T FT FOLLOW(F) = {+,,$,)} koska T FT F FT T FT F (mikä seuraa F:ää, seuraa T:tä) 43/65 44/65
12 Kielioppi: T + T ε T F T T F T ε F a ( ) Koska FOLLOW() = FOLLOW( ) = {$,)} FIRST-joukot: FOLLOW(T) = FOLLOW(T ) = {+,$,)} FOLLOW(F) = {+,,$,)} tehtäessä vasenta johtoa lauseelle a a + a T FT at FIRST(F) = {a,(} FIRST(T ) = {,ε} FIRST(T) = {a,(} FIRST( ) = {+,ε} FIRST() = {a,(} tiedetään nyt, että pitää käyttää produktiota T F T eikä T ε koska välikettä T ei voi missään johdossa seurata symboli. 45/65 Pieni if-then-else -kielioppi tekijöinnin jälkeen: S s if C then S S S else S ε C c Muodostetaan taas vasenta johtoa lauseelle ifcthenifcthenselses: Nyt S ifc thenss... sekä else FIRST(else S) FOLLOW-joukkoja: ifcthenifcthenss S että S ε ja else FOLLOW(S ) FOLLOW(S) = {$, else} FOLLOW(S ) = {$,else} FOLLOW(C) = {then} emme voi pelkän seuraavan symbolin else perusteella valita, pitäisikö käyttää produktiota S elses vai S ε 46/65 FOLLOW-joukkojen laskeminen induktiivisesti FOLLOW-joukot ovat pienimpiä joukkoja, jotka täyttävät seuraavat ehdot: Jos S on kieliopin aloitussymboli, niin $ FOLLOW(S) Jos A αbβ on produktio ja päätesymboli a FIRST(β), niin a FOLLOW(B) Jos A αb on produktio ja a FOLLOW(A), niin a FOLLOW(B) Jos A αbβ on produktio, ε FIRST(β) ja a FOLLOW(A), niin a FOLLOW(B) Kielioppi: Nyt T + T ε T F T T F T ε F a ( ) FIRST-joukot: $ FOLLOW() koska on aloitussymboli ) FOLLOW() koska F ( ) on produktio FIRST(F) = {a,(} FIRST(T ) = {,ε} FIRST(T) = {a,(} FIRST( ) = {+,ε} FIRST() = {a,(} $,) FOLLOW( ) koska T on produktio + FOLLOW(T) koska +T ja + FIRST( ) jne... 47/65 48/65
13 Tehdään kaksiuloitteinen jäsennystaulu M, jossa joukkoarvoinen alkio M(A, a) sisältää ne säännöt, joita voidaan soveltaa välikesymbolista A kun seuraava syötemerkki on a: Jos A α on produktio ja päätesymboli a FIRST(α), niin A α M(A,a) Jos A α on produktio, ε FIRST(α) ja b FOLLOW(A), niin A α M(A,b) Määriteä Kielioppi on LL(1)-kielioppi jos sen jäsennystaulun jokaisessa kentässä on korkeintaan yksi produktio. ( Orposen prujussa erilainen mutta vastaava määriteä) Tarkastellaan jälleen kielioppia Jäsennystaulu on T + T ε T F T T F T ε F a ( ) a + ( ) $ T T +T ε ε T T F T T F T T T ε T F T T ε T ε F F a F ( ) 49/65 50/65 Attribuuttikieliopit 51/ Attribuuttikieliopit Tapa liittää yhteydettömiin kielioppeihin yksinkertaista kielen semantiikan kuvausta. Kukin kieliopin mukaisen jäsennyspuun sou, jonka nimenä on symboli X, ajatellaan tietueeksi, joka on tyyppiä X. Tietuetyyppiin X kuuluvia kenttiä sanotaan X:n attribuuteiksi ja merkitään X.s, X.t jne. Kussakin X-tyyppisessä jäsennyspuun soussa ajatellaan olevan X:n attribuuteista eri ientymät. Kieliopin produktioihin A X 1...X k liitetään attribuuttien evaluointisääntöjä, jotka iaisevat miten annetun jäsennyspuun soun attribuutti-ientymien arvot määräytyvät sen isä- ja jälkeläissoujen attribuutti-ientymien arvoista. Säännöt voivat olla periaatteessa minkälaisia funktioita tahansa, kunhan niiden argumentteina esiintyy vain paikallisesti saatavissa olevaa tietoa. Tarkemmin sanoen: produktioon A X 1...X k liitettävissä säännöissä saa mainita vain symbolien A,X 1,...,X k attribuutteja. 52/65
14 tumerkillisten kokonaislukujen arvojen määrittäminen Kuhunkin jäsennyspuun X-tyyppiseen välikesouun liitetään attribuuttiientymä X.v, jonka arvoksi tulee X:stä tuotetun numerojonon lukuarvo; erityisesti juurisoun v-ientymän arvoksi tulee koko puun tuotoksena olevan numerojonon luku. Produktiot: valuointisäännöt: I +U I.v := U.v I U I.v := U.v I U I.v := U.v U D U.v := D.v U UD U 1.v := 10 U 2.v + D.v D 0 D.v := 0 D 9 D.v := 9 Produktioon U UD liittyvässä evaluointisäännössä on välikkeen U eri esiintymät erotettu indekseillä. simerkiksi näitä sääntöjä käyttäen attributoitu lauseen -319 jäsennyspuu on seuraava: U v = 3 I v = 319 U v = 31 U v = 319 D v = 3 D v = 1 D v = /65 54/65 Attribuuttikieliopin attribuutti t on synteettinen, jos sen kuhunkin produktioon A X 1...X k liittyvä evaluointisääntö on muotoa A.t := f (A,X 1,...,X k ). Tällöin jäsennyspuussa kunkin soun mahdollisen t- ientymän arvo riippuu vain soun omien ja sen jälkeläisten attribuutti-ientymien arvoista. Muunlaiset attribuutit ovat periytyviä. Attribuuttisemantiikan kuvauksessa pyritään käyttämään pääasiassa synteettisiä attribuutteja, koska ne voidaan evaluoida helposti yhdellä jäsennyspuun lehdistä juureen suuntautuvalla läpikäynnillä. Mitään periaatteellista estettä myös perittyjen attribuuttien käyttöön ei kuitenkaan ole kunhan attribuutti-ientymien riippuvuusverkkoihin ei tule syklejä. Kokonaislukujen arvon määrittäminen periytyvää positiokerroin - attribuuttia s ja synteettistä arvo -attribuuttia v käyttäen: Produktiot: valuointisäännöt: I +U U.s := 1, I.v := U.v I U U.s := 1, I.v := U.v I U U.s := 1, I.v := U.v U D U.v := (D.v) (U.s) U UD U 2.s := 10 (U 1.s), U 1.v := U 2.v + (D.v) (U 1.s) D 0 D.v := 0. D 9 D.v := 9 55/65 56/65
15 m. positiokerrointekniikkaa käyttäen saadaan lauseelle -319 seuraava attributoitu jäsennyspuu: I v = 319 U U s = 10 v = 310 s = 1 v = 319 Attribuutti-ientymien arvot voidaan usein laskea suoraan jäsennysrutiineissa muodostamatta jäsennyspuuta eksplisiittisesti. Ohjea, joka muuntaa syötteenä annettuja aritmeettisia lausekkeita postfix-esitykseen. Tavanomaiseen, yksinkertaisia aritmeettisia lausekkeita tuottavaan kielioppiin liitetään yksi synteettinen, merkkijonoarvoinen attribuutti pf ; kuhunkin välikkeeseen X liittyvän attribuutti-ientymän X.pf arvo on X:stä tuotetun alilausekkeen postfix-esitys. U 3 s = 100 v = 300 D v = 3 D v = 1 D v = Produktiot: valuointisäännöt: T + 1.pf := (T.pf) ( 2.pf) ( + ) T.pf := T.pf T F T T 1.pf := (F.pf) (T 2.pf) ( ) T F T.pf := F.pf F a F.pf := a F () F.pf :=.pf 57/65 58/65 Rekursiivisesti etenevä jäsentäjä, joka evaluoi attribuutti-ientymien arvot suoraan jäsennyksen yhteydessä: from sys import s t d i n def e r r o r ( s ) : p r i n t s ; e x i t ( 1 ) def e ( ) : # > T + T g l o b a l next pf1= t ( ) i f next== " + " : r e t u r n pf1+e ( ) + " + " # 1. pf := T. pf 2. pf + else : r e t u r n pf1 #. pf := T. pf def t ( ) : # T > F * T F g l o b a l next pf1= f ( ) i f next== " * " : r e t u r n pf1+ t ( ) + " * " # T1. pf := F. pf T2. pf * else : r e t u r n pf1 # T. pf := F. pf def f ( ) : # F > a () g l o b a l next i f next== " a " : r e t u r n " a " # F. pf := a e l i f next== " ( " : pf=e ( ) i f next!= " ) " : e r r o r ( " ) expected. " ) r e t u r n pf # F. pf :=. pf else : e r r o r ( "F cannot s t a r t with t h i s. " ) p r i n t e ( ) Jatkuu seuraavalla kalvolla... 59/65 60/65
16 kskursio Scala-maaiaan i kuulu tenttivaatimuksiin Viitteitä: Scala-kielen mukana tulee kirjasto (rajoitettuun) osittavaan jäsentämiseen Myös säännöllisiä lausekkeita voidaan käyttää suoraan luku 31 kirjassa Programming in Scala, First dition Parsers-piirre abstrakti Parser-luokka RegexParsers-piirre 61/65 62/65 Yksinkertaisten lausekkeiden jäsennin ja evaluaattori: import u t i l. parsing. combinator. _ object parser extends RegexParsers { val i n t e g e r = " [0 9]+ ". r / / Regular expression } def expr : Parser [ B i g I n t ] = ( / / > T + T term~" + "~expr ^^ { case t~" + "~e => t + e } term ^ ^ { case t => t } ) def term : Parser [ B i g I n t ] = / / T > F * T T rep1sep ( f a c t o r, " * " ) ^ ^ { f a c t o r s => f a c t o r s. product } def f a c t o r : Parser [ B i g I n t ] = ( / / F > i n t e g e r ( ) i n t e g e r ^ ^ { case i n t S t r i n g => B i g I n t ( i n t S t r i n g ) } " ( " ~> expr <~ " ) " ^ ^ { case e => e } ) def parse ( i n p u t : S t r i n g ) : ( Option [ B i g I n t ], S t r i n g ) = { parseall ( expr, i n p u t ) match { case Success ( value, _ ) => ( Option ( value ), " success " ) case f => ( None, f. t o S t r i n g ) } } Hyvinmuodostetulla syötteellä saadaan odotettu lopputulos: scala > parser. parse ("123+4 * 5") res0 : ( Option [ B i g I n t ], S t r i n g ) = (Some(143), success ) kun taas virheellinen syöte antaa virheioituksen: scala > parser. parse (" * 5") res1 : ( Option [ B i g I n t ], S t r i n g ) = ( None, [ 1. 5 ] f a i l u r e : ( expected but + found * 5 ^ ) 63/65 64/65
17 Klassikkokirja aiheista: Aho, Sethi, Ulan: Compilers Principles, Techniques, and Tools Kääntäjätekniikan kurssi Aallossa: T Johdatus kääntäjätekniikkaan 65/65
jäsennyksestä TIEA241 Automaatit ja kieliopit, syksy 2016 Antti-Juhani Kaijanaho 29. syyskuuta 2016 TIETOTEKNIIKAN LAITOS Kontekstittomien kielioppien
TIEA241 Automaatit ja kieliopit, syksy 2016 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 29. syyskuuta 2016 Sisällys Harjoitustehtävätilastoa Tilanne 29.9.2016 klo 8:41 (lähes kaikki kommentoitu) passed
LisätiedotTIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 10. kesäkuuta 2013
TIEA241 Automaatit ja kieliopit, kesä 2013 etenevä Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 10. kesäkuuta 2013 Sisällys etenevä etenevä Chomskyn hierarkia (ja muutakin) kieli säännöllinen LL(k) LR(1)
Lisätiedotuv n, v 1, ja uv i w A kaikilla
2.8 Säännöllisten kielten rajoituksista Kardinaliteettisyistä on oltava olemassa (paljon) ei-säännöllisiä kieliä: kieliä on ylinumeroituva määrä, säännöllisiä lausekkeita vain numeroituvasti. Voidaanko
LisätiedotVasen johto S AB ab ab esittää jäsennyspuun kasvattamista vasemmalta alkaen:
Vasen johto S AB ab ab esittää jäsennyspuun kasvattamista vasemmalta alkaen: S A S B Samaan jäsennyspuuhun päästään myös johdolla S AB Ab ab: S A S B Yhteen jäsennyspuuhun liittyy aina tasan yksi vasen
Lisätiedotjäsentämisestä TIEA241 Automaatit ja kieliopit, syksy 2015 Antti-Juhani Kaijanaho 27. marraskuuta 2015 TIETOTEKNIIKAN LAITOS
TIEA241 Automaatit ja kieliopit, syksy 2015 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 27. marraskuuta 2015 Sisällys Rekursiivisesti etenevä engl. recursive descent parsing Tehdään kustakin välikesymbolista
LisätiedotYhteydettömät kieliopit [Sipser luku 2.1]
Yhteydettömät kieliopit [ipser luku 2.1] Johdantoesimerkkinä tarkastelemme kieltä L = { a n b m a n n > 0, m > 0 }, joka on yhteydetön (mutta ei säännöllinen). Vastaavan kieliopin ytimenä on säännöt eli
LisätiedotLaskennan mallit (syksy 2010) Harjoitus 8, ratkaisuja
582206 Laskennan mallit (syksy 2010) Harjoitus 8, ratkaisuja 1. Tarkastellaan yhteydetöntä kielioppia S SAB ε A aa a B bb ε Esitä merkkijonolle aa kaksi erilaista jäsennyspuuta ja kummallekin siitä vastaava
Lisätiedotjäsentäminen TIEA241 Automaatit ja kieliopit, syksy 2015 Antti-Juhani Kaijanaho 26. marraskuuta 2015 TIETOTEKNIIKAN LAITOS
TIEA241 Automaatit ja kieliopit, syksy 2015 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 26. marraskuuta 2015 Sisällys Tunnistamis- ja jäsennysongelma Olkoon G = (N, Σ, P, S) kontekstiton kielioppi ja
Lisätiedotfollow(a) first(α j ) x
Tästä ensimmäisestä LL(1)-ehdosta (14) seuraa erityisesti, että korkeintaan yksi välikkeen A säännöistä voi tuottaa tyhjän merkkijonon ε eli tehdä välikkeestä A tyhjentyvän (eli nollautuvan). Toinen osa
LisätiedotICS-C2000 Tietojenkäsittelyteoria
ICS-C2000 Tietojenkäsittelyteoria Luento 5: Säännöllisten kielten pumppauslemma; yhteydettömät kieliopit Aalto-yliopisto Perustieteiden korkeakoulu Tietotekniikan laitos Kevät 2016 Alue ja aiheet: Orposen
LisätiedotICS-C2000 Tietojenkäsittelyteoria. Tähän mennessä: säännölliset kielet. Säännöllisten kielten pumppauslemma M :=
ICS-C2000 Tietojenkäsittelyteoria Luento 5: Säännöllisten kielten pumppauslemma; yhteydettömät kieliopit Aalto-yliopisto Perustieteiden korkeakoulu Tietotekniikan laitos Alue ja aiheet: Orposen prujun
LisätiedotTIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 12. kesäkuuta 2013
TIEA241 Automaatit ja kieliopit, kevät 2012 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 12. kesäkuuta 2013 Sisällys t Chomskyn hierarkia (ja vähän muutakin) kieli säännöllinen LL(k) LR(1) kontekstiton
LisätiedotS BAB ABA A aas bba B bbs c
T-79.148 Kevät 2003 Tietojenkäsittelyteorian perusteet Harjoitus 8 Demonstraatiotehtävien ratkaisut 4. Tehtävä: Laadi algoritmi, joka testaa onko annetun yhteydettömän kieliopin G = V, Σ, P, S) tuottama
LisätiedotTIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 30. marraskuuta 2015
TIEA241 Automaatit ja kieliopit, syksy 2015 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 30. marraskuuta 2015 Sisällys t Väitöstilaisuus 4.12.2015 kello 12 vanhassa juhlasalissa S212 saa tulla 2 demoruksia
LisätiedotTIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 3. lokakuuta 2016
TIEA241 Automaatit ja kieliopit, syksy 2016 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 3. lokakuuta 2016 Sisällys n tunnistin Jay : An Efficient Context-Free Parsing Algorithm. Communications of the
LisätiedotT Syksy 2002 Tietojenkäsittelyteorian perusteet Harjoitus 8 Demonstraatiotehtävien ratkaisut
T-79.148 Syksy 2002 Tietojenkäsittelyteorian perusteet Harjoitus 8 Demonstraatiotehtävien ratkaisut 4. Tehtävä: Laadi algoritmi, joka testaa onko annetun yhteydettömän kieliopin G = V, Σ, P, S tuottama
LisätiedotEi-yhteydettömät kielet [Sipser luku 2.3]
Ei-yhteydettömät kielet [Sipser luku 2.3] Yhteydettömille kielille pätee samantapainen pumppauslemma kuin säännöllisille kielille. Siinä kuitenkin pumpataan kahta osamerkkijonoa samaan tahtiin. Lause 2.25
Lisätiedot2. Yhteydettömät kielet
2. Yhteydettömät kielet Yhteydettömät eli kontekstittomat kielet (context-free language, CFL) ovat säännöllisiä kieliä laajempi luokka formaaleja kieliä. Ne voidaan esittää yhteydettömillä kieliopeilla
LisätiedotJäsennysalgoritmeja. TIE448 Kääntäjätekniikka, syksy Antti-Juhani Kaijanaho. 29. syyskuuta 2009 TIETOTEKNIIKAN LAITOS. Jäsennysalgoritmeja
TIE448 Kääntäjätekniikka, syksy 2009 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 29. syyskuuta 2009 Sisällys Sisällys Seuraava deadline Vaihe B tiistai 6.10. klo 10 selaaja ja jäsentäjä toimivat Kääntäjän
Lisätiedot3.3 KIELIOPPIEN JÄSENNYSONGELMA Ratkaistava tehtävä: Annettu yhteydetön kielioppi G ja merkkijono x. Onko
3.3 KILIOPPIN JÄSNNYSONGLMA Rtkistv tehtävä: Annettu yhteydetön kielioppi G j merkkijono x. Onko x L(G)? Rtkisumenetelmä = jäsennyslgoritmi. Useit vihtoehtoisi menetelmiä, erityisesti kun G on jotin rjoitettu
LisätiedotTIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho. 29. huhtikuuta 2011
TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 29. huhtikuuta 2011 Sisällys Chomskyn hierarkia kieli säännöllinen kontekstiton kontekstinen rekursiivisesti
LisätiedotJäsennys. TIEA341 Funktio ohjelmointi 1 Syksy 2005
Jäsennys TIEA341 Funktio ohjelmointi 1 Syksy 2005 Muistutus: Laskutehtävä ja tulos data Laskutehtava = Luku Double Yhteen Laskutehtava Laskutehtava Vahennys Laskutehtava Laskutehtava Tulo Laskutehtava
LisätiedotTäydentäviä muistiinpanoja jäsennysalgoritmeista
äydentäviä muistiinpanoja jäsennysalgoritmeista Antti-Juhani Kaijanaho 7. helmikuuta 2012 1 simerkki arleyn algoritmin soveltamisesta arkastellaan kielioppia G : + () c ja sovelletaan arleyn algoritmia
LisätiedotTIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 2. helmikuuta 2012
TIEA241 Automaatit ja, kevät 2012 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 2. helmikuuta 2012 Sisällys Sisällys Chomskyn hierarkia kieli säännöllinen kontekstiton kontekstinen rekursiivisesti lueteltava
LisätiedotAttribuuttikieliopit
TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 3. toukokuuta 2011 Sisällys t Chomskyn hierarkia kieli säännöllinen kontekstiton kontekstinen rekursiivisesti
LisätiedotRajoittamattomat kieliopit
Rajoittamattomat kieliopit Ohjelmoinnin ja laskennan perusmalleista muistetaan, että kieli voidaan kuvata (esim.) kieliopilla joka tuottaa sen, tai automaatilla joka tunnistaa sen. säännölliset lausekkeet
LisätiedotTIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 16. helmikuuta 2012
TIEA241 Automaatit ja kieliopit, kevät 2012 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 16. helmikuuta 2012 Sisällys t Sisällys t Chomskyn hierarkia kieli säännöllinen kontekstiton kontekstinen rekursiivisesti
LisätiedotOlkoon G = (V,Σ,P,S) yhteydetön kielioppi. Välike A V Σ on tyhjentyvä, jos A. NULL := {A V Σ A ε on G:n produktio};
3.6 Cocke-Younger-Kasami -jäsennysalgoritmi Osittava jäsentäminen on selkeä ja tehokas jäsennysmenetelmä LL(1)-kieliopeille: n merkin mittaisen syötemerkkijonon käsittely sujuu ajassa O(n). LL(1)-kieliopit
LisätiedotICS-C2000 Tietojenkäsittelyteoria Kevät 2016
ICS-C2000 Tietojenkäsittelyteoria Kevät 2016 Kierros 6, 22. 26. helmikuuta Huom: arviointiviikolla 15. 19.2. ei ole laskuharjoituksia! Demonstraatiotehtävien ratkaisut D1: (a) Osoita, että seuraava yhteydetön
LisätiedotTIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 9. lokakuuta 2016
TIEA241 Automaatit ja, syksy 2016 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 9. lokakuuta 2016 Sisällys Kontekstiton kielioppi Kontekstiton kielioppi koostuu joukosta päätemerkkejä (engl. terminal symbols),
LisätiedotTIEA241 Automaatit ja kieliopit, syksy 2015. Antti-Juhani Kaijanaho. 3. joulukuuta 2015
TIEA241 Automaatit ja, syksy 2015 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 3. joulukuuta 2015 Sisällys Formaalisti Määritelmä Nelikko G = (V, Σ, P, S) on kontekstiton kielioppi (engl. context-free
LisätiedotPinoautomaatit. Pois kontekstittomuudesta
TIEA241 Automaatit ja kieliopit, syksy 2015 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 3. joulukuuta 2015 Sisällys Pinoautomaatti NFA:n yleistys automaatilla on käytössään LIFO-muisti 1 eli pino Pino
Lisätiedot4. Tehtävässä halutaan todistaa seuraava ongelma ratkeamattomaksi:
T-79.148 Kevät 2004 Tietojenkäsittelyteorian perusteet Harjoitus 12 Demonstraatiotehtävien ratkaisut 4. Tehtävässä halutaan todistaa seuraava ongelma ratkeamattomaksi: Hyväksyykö annettu Turingin kone
LisätiedotT Syksy 2006 Tietojenkäsittelyteorian perusteet T Harjoitus 7 Demonstraatiotehtävien ratkaisut
T-79.1001 Syksy 2006 Tietojenkäsittelyteorian perusteet T Harjoitus 7 Demonstraatiotehtävien ratkaisut Lemma (Säännöllisten kielten pumppauslemma). Olkoon A säännöllinen kieli. Tällöin on olemassa n 1
LisätiedotICS-C2000 Tietojenkäsittelyteoria Kevät 2016
ICS-C2000 Tietojenkäsittelyteoria Kevät 206 Kierros 0, 2. 24. maaliskuuta Huom! Perjantaina 25. maaliskuuta ei ole laskareita (pitkäperjantai), käykää vapaasti valitsemassanne ryhmässä aiemmin viikolla.
Lisätiedot815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset
815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 2 vastaukset Harjoituksen aiheena on BNF-merkinnän käyttö ja yhteys rekursiivisesti etenevään jäsentäjään. Tehtävä 1. Mitkä ilmaukset seuraava
LisätiedotTäydentäviä muistiinpanoja Turingin koneiden vaihtoehdoista
Täydentäviä muistiinpanoja Turingin koneiden vaihtoehdoista Antti-Juhani Kaijanaho 15. maaliskuuta 2012 1 Apumääritelmä Määritelmä 1. Olkoon Σ merkistö, jolla on olemassa täydellinen järjestys ( ) Σ 2.
LisätiedotKontekstittomien kielten jäsentäminen Täydentäviä muistiinpanoja TIEA241 Automaatit ja kieliopit, syksy 2016
Kontekstittomien kielten jäsentäminen äydentäviä muistiinpanoja IA241 Automaatit ja kieliopit, syksy 2016 Antti-Juhani Kaijanaho 19. lokakuuta 2016 1 Yksiselitteiset operaattorikieliopit 1.1 Aritmeettiset
LisätiedotEsimerkki 2.28: Tarkastellaan edellisen sivun ehdot (1) (3) toteuttavaa pinoautomaattia, jossa päätemerkit ovat a, b ja c ja pinoaakkoset d, e ja $:
Esimerkki 2.28: Tarkastellaan edellisen sivun ehdot (1) (3) toteuttavaa pinoautomaattia, jossa päätemerkit ovat a, b ja c ja pinoaakkoset d, e ja $: a, ε d b, d ε ε, ε $ b, d ε 1 2 3 6 c, ε e c, ε e c,
LisätiedotYhteydettömän kieliopin jäsennysongelma
Yhteydettömän kieliopin jäsennysongelma Yhteydettömän kieliopin jäsennysongelmalla tarkoitetaan laskentaongelmaa Annettu: yhteydetön kielioppi G, merkkijono w Kysymys: päteekö w L(G). Ongelma voidaan periaatteessa
LisätiedotM = (Q, Σ, Γ, δ, q 0, q acc, q rej )
6. LASKETTAVUUSTEORIAA Churchin Turingin teesi: Mielivaltainen (riittävän vahva) laskulaite Turingin kone. Laskettavuusteoria: Tarkastellaan mitä Turingin koneilla voi ja erityisesti mitä ei voi laskea.
LisätiedotTestaa: Vertaa pinon merkkijono syötteeseen merkki kerrallaan. Jos löytyy ero, hylkää. Jos pino tyhjenee samaan aikaan, kun syöte loppuu, niin
Yhteydettömien kielioppien ja pinoautomaattien yhteys [Sipser s. 117 124] Todistamme, että yhteydettömien kielioppien tuottamat kielet ovat tasan samat kuin ne, jotka voidaan tunnistaa pinoautomaatilla.
LisätiedotChomskyn hierarkia ja yhteysherkät kieliopit
Chomskyn hierarkia ja yhteysherkät kieliopit Laskennan teorian opintopiiri Tuomas Hakoniemi 21. helmikuuta 2014 Käsittelen tässä laskennan teorian opintopiirin harjoitustyössäni muodollisten kielioppien
LisätiedotLR-jäsennys. Antti-Juhani Kaijanaho. 3. lokakuuta 2016
LR-jäsennys Antti-Juhani Kaijanaho 3. lokakuuta 2016 Tämä lisämoniste esittelee Yaccin, CUPin ja muiden vastaavien ohjelmien käyttämän LR-jäsennysmenetelmäperheen. Se ei kuulu kurssin koealueeseen. Tehtävänä
LisätiedotTäydentäviä muistiinpanoja kontekstittomien kielioppien jäsentämisestä
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
LisätiedotJäsennysaiheesta lisää Täydentäviä muistiinpanoja TIEA241 Automaatit ja kieliopit, syksy 2016
Jäsennysaiheesta lisää Täydentäviä muistiinpanoja TIA241 Automaatit ja kieliopit, syksy 2016 Antti-Juhani Kaijanaho 4. lokakuuta 2016 1 simerkki arleyn algoritmin soveltamisesta Tämä esimerkki on laadittu
LisätiedotTIEA341 Funktio-ohjelmointi 1, kevät 2008
TIEA341 Funktio-ohjelmointi 1, kevät 2008 Luento 9 Kombinaattoreista Antti-Juhani Kaijanaho Jyväskylän yliopisto Tietotekniikan laitos 21. tammikuuta 2008 Currying Haskell-funktio ottaa aina vain yhden
LisätiedotOsoitamme, että jotkut kielet eivät ole säännöllisiä eli niitä ei voi tunnistaa äärellisellä automaatilla.
Ei-säännöllisiä kieliä [Sipser luku 1.4] Osoitamme, että jotkut kielet eivät ole säännöllisiä eli niitä ei voi tunnistaa äärellisellä automaatilla. Tulos ei sinänsä ole erityisen yllättävä, koska äärellinen
LisätiedotPinoautomaatit. TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 6. kesäkuuta 2013 TIETOTEKNIIKAN LAITOS. Pinoautomaatit.
TIEA241 Automaatit ja kieliopit, kesä 2013 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 6. kesäkuuta 2013 Sisällys Aikataulumuutos Tämänpäiväinen demotilaisuus on siirretty maanantaille klo 14:15 (Ag Delta).
LisätiedotTIE448 Kääntäjätekniikka, syksy Antti-Juhani Kaijanaho. 29. syyskuuta 2009
TIE448 Kääntäjätekniikka, syksy 2009 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 29. syyskuuta 2009 Sisällys Sisällys Seuraava deadline Vaihe B tiistai 6.10. klo 10 selaaja ja jäsentäjä toimivat Sisällys
LisätiedotRajoittamattomat kieliopit (Unrestricted Grammars)
Rajoittamattomat kieliopit (Unrestricted Grammars) Laura Pesola Laskennanteorian opintopiiri 13.2.2013 Formaalit kieliopit Sisältävät aina Säännöt (esim. A -> B C abc) Muuttujat (A, B, C, S) Aloitussymboli
Lisätiedoton rekursiivisesti numeroituva, mutta ei rekursiivinen.
6.5 Turingin koneiden pysähtymisongelma Lause 6.9 Kieli H = { M pysähtyy syötteellä w} on rekursiivisesti numeroituva, mutta ei rekursiivinen. Todistus. Todetaan ensin, että kieli H on rekursiivisesti
Lisätiedot6.5 Turingin koneiden pysähtymisongelma Lause 6.9 Kieli. H = {c M w M pysähtyy syötteellä w}
6.5 Turingin koneiden pysähtymisongelma Lause 6.9 Kieli H = {c w pysähtyy syötteellä w} on rekursiivisesti numeroituva, mutta ei rekursiivinen. Todistus. Todetaan ensin, että kieli H on rekursiivisesti
LisätiedotICS-C2000 Tietojenkäsittelyteoria Kevät 2016
ICS-C2000 Tietojenkäsittelyteoria Kevät 2016 Kierros 7, 29. helmikuuta 4. maaliskuuta Demonstraatiotehtävien ratkaisut D1: Osoita, yhteydettömien kielten pumppauslemmaa käyttäen, että kieli {ww w {a,b}
LisätiedotVaihtoehtoinen tapa määritellä funktioita f : N R on
Rekursio Funktio f : N R määritellään yleensä antamalla lauseke funktion arvolle f (n). Vaihtoehtoinen tapa määritellä funktioita f : N R on käyttää rekursiota: 1 (Alkuarvot) Ilmoitetaan funktion arvot
LisätiedotRekursio. Funktio f : N R määritellään yleensä antamalla lauseke funktion arvolle f (n). Vaihtoehtoinen tapa määritellä funktioita f : N R on
Rekursio Funktio f : N R määritellään yleensä antamalla lauseke funktion arvolle f (n). Vaihtoehtoinen tapa määritellä funktioita f : N R on käyttää rekursiota: Rekursio Funktio f : N R määritellään yleensä
LisätiedotRekursiivinen Derives on periaatteessa aivan toimiva algoritmi, mutta erittäin tehoton. Jos tarkastellaan esim. kieliopinpätkää
Rekursiivinen Derives on periaatteessa aivan toimiva algoritmi, mutta erittäin tehoton. Jos tarkastellaan esim. kieliopinpätkää S AB CA... A CB...... ja kutsua Derives(S, abcde), niin kutsu Derives(B,
LisätiedotTIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 5. marraskuuta 2015
TIEA24 Automaatit ja kieliopit, syksy 205 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 5. marraskuuta 205 Sisällys Käsiteanalyysiä Tarkastellaan koodilukkoa äärellisenä automaattina. Deterministinen äärellinen
LisätiedotLogiikan kertausta. TIE303 Formaalit menetelmät, kevät Antti-Juhani Kaijanaho. Jyväskylän yliopisto Tietotekniikan laitos.
TIE303 Formaalit menetelmät, kevät 2005 Logiikan kertausta Antti-Juhani Kaijanaho antkaij@mit.jyu.fi Jyväskylän yliopisto Tietotekniikan laitos TIE303 Formaalit mentetelmät, 2005-01-27 p. 1/17 Luento2Luentomoniste
LisätiedotTIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 12. lokakuuta 2016
TIEA241 Automaatit ja kieliopit, syksy 2016 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 12. lokakuuta 2016 Sisällys Harjoitustehtävät loppukurssilla luentojen 14 18 harjoitustehtävistä on tehtävä yksi
LisätiedotTIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho. 19. tammikuuta 2012
TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 19. tammikuuta 2012 Sisällys Sisällys Muistathan A B -konstruktion 0 k 1 i 2 s 3 s 4 a 5 0 k 1 o 2 i 3 r 4
LisätiedotTIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 12. tammikuuta 2012
TIEA241 Automaatit ja kieliopit, kevät 2012 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 12. tammikuuta 2012 Sisällys Sisällys Äärellisiä automaatteja PUSH ON PUSH OFF Q T Q J C C H S C,Q C,Q 0 50s 1e
Lisätiedotδ : (Q {q acc, q rej }) (Γ k {, }) Q (Γ k {, }) {L, R}.
42 Turingin koneiden laajennuksia 1 oniuraiset koneet Sallitaan, että Turingin koneen nauha koostuu k:sta rinnakkaisesta urasta, jotka kaikki kone lukee ja kirjoittaa yhdessä laskenta-askelessa: Koneen
LisätiedotMiten käydä läpi puun alkiot (traversal)?
inääripuut ieman lisää aidon binääripuun ominaisuuksia lehtisolmuja on yksi enemmän kuin sisäsolmuja inääripuut tasolla d on korkeintaan 2 d solmua pätee myös epäaidolle binääripuulle taso 0: 2 0 = 1 solmu
LisätiedotEsimerkki 47. Kieli {a i b j c k : i = j tai j = k} on luonnostaan moniselitteinen.
Aritmeettisen lausekkeen jäsennyspuun avulla voidaan helposti laskea lausekkeen arvo, kun muuttujien arvot tunnetaan. Yleisemmin, kääntäjä voi jäsennyspuun avulla generoida koodia lausekkeen evaluoimiseksi.
LisätiedotTIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho. 16. toukokuuta 2011
TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 16. toukokuuta 2011 Sisällys engl. random-access machines, RAM yksinkertaistettu nykyaikaisen (ei-rinnakkaisen)
LisätiedotTIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 16. marraskuuta 2015
ja ja TIEA241 Automaatit ja kieliopit, syksy 2015 Antti-Juhani Kaijanaho NFA:ksi TIETOTEKNIIKAN LAITOS 16. marraskuuta 2015 Sisällys ja NFA:ksi NFA:ksi Kohti säännöllisiä lausekkeita ja Nämä tiedetään:
Lisätiedot11.4. Context-free kielet 1 / 17
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ä
LisätiedotTIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 29. toukokuuta 2013
TIEA241 Automaatit ja kieliopit, kesä 2013 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 29. toukokuuta 2013 Sisällys Chomskyn hierarkia (ja muutakin) kieli LL(k) LR(1) kontekstiton kontekstinen rekursiivisesti
LisätiedotYdin-Haskell Tiivismoniste
Ydin-Haskell Tiivismoniste Antti-Juhani Kaijanaho 8. joulukuuta 2005 1 Abstrakti syntaksi Päätesymbolit: Muuttujat a, b, c,..., x, y, z,... Tyyppimuuttujat α, β, γ,... Koostimet (data- ja tyyppi-) C, D,...,
LisätiedotSäännöllisen kielen tunnistavat Turingin koneet
186 Säännöllisen kielen tunnistavat Turingin koneet Myös säännöllisen kielen hyväksyvien Turingin koneiden tunnistaminen voidaan osoittaa ratkeamattomaksi palauttamalla universaalikielen tunnistaminen
Lisätiedot815338A Ohjelmointikielten periaatteet 2014-2015. Harjoitus 7 Vastaukset
815338A Ohjelmointikielten periaatteet 2014-2015. Harjoitus 7 Vastaukset Harjoituksen aiheena on funktionaalinen ohjelmointi Scheme- ja Haskell-kielillä. Voit suorittaa ohjelmat osoitteessa https://ideone.com/
LisätiedotJOHDATUS TEKOÄLYYN TEEMU ROOS
JOHDATUS TEKOÄLYYN TEEMU ROOS LUONNOLLISEN KIELEN KÄSITTELY (NATURAL LANGUAGE PROCESSING, NLP) TEKOÄLYSOVELLUKSET, JOTKA LIITTYVÄT IHMISTEN KANSSA (TAI IHMISTEN VÄLISEEN) KOMMUNIKAATIOON, OVAT TEKEMISISSÄ
LisätiedotTIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 26. tammikuuta 2012
TIEA241 Automaatit ja kieliopit, kevät 2012 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 26. tammikuuta 2012 Sisällys Luennon pähkinä Millä tavalla voidaan rakentaa tietokoneohjelma (tai kirjasto), joka
LisätiedotMuodolliset kieliopit
Muodolliset kieliopit Luonnollisen kielen lauseenmuodostuksessa esiintyy luonnollisia säännönmukaisuuksia. Esimerkiksi, on jokseenkin mielekästä väittää, että luonnollisen kielen lauseet koostuvat nk.
Lisätiedotvaihtoehtoja TIEA241 Automaatit ja kieliopit, syksy 2016 Antti-Juhani Kaijanaho 13. lokakuuta 2016 TIETOTEKNIIKAN LAITOS
TIEA241 Automaatit ja kieliopit, syksy 2016 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 13. lokakuuta 2016 Sisällys Harjoitustehtävätilastoa Tilanne 13.10.2016 klo 9:42 passed waiting redo submitters
LisätiedotTIEA341 Funktio-ohjelmointi 1, kevät 2008
TIEA34 Funktio-ohjelmointi, kevät 2008 Luento 3 Antti-Juhani Kaijanaho Jyväskylän yliopisto Tietotekniikan laitos 2. tammikuuta 2008 Ydin-Haskell: Syntaksi Lausekkeita (e) ovat: nimettömät funktiot: \x
LisätiedotTIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 12. marraskuuta 2015
TIEA241 Automaatit ja kieliopit, syksy 2015 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 12. marraskuuta 2015 Sisällys Muistathan A B -konstruktion 0 k 1 i 2 s 3 s 4 a 5 0 k 1 o 2 i 3 r 4 a 5 00 k 11 i
LisätiedotMutta esimerkiksi 0-kertaisesti pumpattaessa: Siten L ei voi olla säännöllinen.
2.8 Säännöllisten kielten rjoituksist Krdinliteettisyistä on oltv olemss (pljon) ei-säännöllisiä kieliä: kieliä on ylinumeroituv määrä, säännöllisiä lusekkeit vin numeroituvsti. Voidnko löytää konkreettinen,
LisätiedotHahmon etsiminen syotteesta (johdatteleva esimerkki)
Hahmon etsiminen syotteesta (johdatteleva esimerkki) Unix-komennolla grep hahmo [ tiedosto ] voidaan etsia hahmon esiintymia tiedostosta (tai syotevirrasta): $ grep Kisaveikot SM-tulokset.txt $ ps aux
LisätiedotÄärellisten automaattien ja säännöllisten kielten ekvivalenssi
Äärellisten automaattien ja säännöllisten kielten ekvivalenssi Osoitamme seuraavan keskeisen tuloksen: Lause 1.8: [Sipser Thm. 1.54] Kieli on säännöllinen, jos ja vain jos jokin säännöllinen lauseke esittää
LisätiedotLaskennan teoria (kevät 2006) Harjoitus 3, ratkaisuja
581336 Laskennan teoria (kevät 2006) Harjoitus 3, ratkaisuja 1. S! axc X! axc X! by c Y! by c Y! " 2. (a) Tehtävänä on konstruoida rajoittamaton kielioppi, joka tuottaa kielen f0 n 1 n jn 1g. Vaihe1: alkutilanteen
Lisätiedot815338A Ohjelmointikielten periaatteet Harjoitus 6 Vastaukset
815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 6 Vastaukset Harjoituksen aiheena on funktionaalinen ohjelmointi Scheme- ja Haskell-kielillä. Voit suorittaa ohjelmat osoitteessa https://ideone.com/
LisätiedotLaskennan rajoja. TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 10. joulukuuta 2015 TIETOTEKNIIKAN LAITOS.
TIEA241 Automaatit ja kieliopit, syksy 2015 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 10. joulukuuta 2015 Sisällys TM vs yleiset kieliopit Lause Jokaiselle kielelle A seuraavat ovat yhtäpitävät: 1.
LisätiedotSäännölliset kielet. Sisällys. Säännölliset kielet. Säännölliset operaattorit. Säännölliset kielet
TIEA241 Automaatit ja kieliopit, kesä 2013 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 24. toukokuuta 2013 Sisällys Formaalit kielet On tapana sanoa, että merkkijonojen joukko on (formaali) kieli. Hieman
LisätiedotFORMAALI SYSTEEMI (in Nutshell): aakkosto: alkeismerkkien joukko kieliopin määräämä syntaksi: sallittujen merkkijonojen rakenne, formaali kuvaus
FORMAALI SYSTEEMI (in Nutshell): Formaali kieli: aakkosto: alkeismerkkien joukko kieliopin määräämä syntaksi: sallittujen merkkijonojen rakenne, formaali kuvaus esim. SSM:n tai EBNF:n avulla Semantiikka:
Lisätiedot5.5 Jäsenninkombinaattoreista
5.5. JÄSENNINKOMBINAATTOREISTA 67 type Env α = FiniteMap String α data EnvT m α = MkE (Env Integer m (Env Integer, α)) instance Transformer EnvT where promote mp = MkE $ λenv mp λr return $(env, r) instance
Lisätiedot(0 1) 010(0 1) Koska kieli on yksinkertainen, muodostetaan sen tunnistava epädeterministinen q 0 q 1 q 2 q3
T-79.48 Tietojenkäsittelyteorian perusteet Tentti 25..23 mallivastaukset. Tehtävä: Kuvaa seuraavat kielet sekä säännölisten lausekkeiden että determinististen äärellisten automaattien avulla: (a) L = {w
Lisätiedot5 Kontekstittomat kielet ja pinoautomaatit
5 Kontekstittomat kielet ja pinoautomaatit Kontekstittomat kielet (context-free languages, yhteydettömät kielet) voidaan kuvata kontekstittomilla kieliopeilla (context-free grammar) ja tunnistaa epädeterministisillä
Lisätiedot802328A LUKUTEORIAN PERUSTEET OSA III BASICS OF NUMBER THEORY PART III. Tapani Matala-aho MATEMATIIKKA/LUTK/OULUN YLIOPISTO
8038A LUKUTEORIAN PERUSTEET OSA III BASICS OF NUMBER THEORY PART III Tapani Matala-aho MATEMATIIKKA/LUTK/OULUN YLIOPISTO SYKSY 016 Sisältö 1 Irrationaaliluvuista Antiikin lukuja 6.1 Kolmio- neliö- ja tetraedriluvut...................
LisätiedotPinoautomaatit. TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 6. lokakuuta 2016 TIETOTEKNIIKAN LAITOS
.. TIEA241 Automaatit ja kieliopit, syksy 2016 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 6. lokakuuta 2016 Sisällys. Harjoitustehtävätilastoja Tilanne 6.10.2016 klo 8:28 passed potential redo submitters
Lisätiedot33. pohjoismainen matematiikkakilpailu 2019 Ratkaisut
33. pohjoismainen matematiikkakilpailu 2019 Ratkaisut 1. Kutsutaan (eri) positiivisten kokonaislukujen joukkoa merkitykselliseksi, jos sen jokaisen äärellisen epätyhjän osajoukon aritmeettinen ja geometrinen
LisätiedotTodistus: Aiemmin esitetyn mukaan jos A ja A ovat rekursiivisesti lueteltavia, niin A on rekursiivinen.
Lause: Tyhjyysongelma ei ole osittain ratkeava; ts. kieli ei ole rekursiivisesti lueteltava. L e = { w { 0, 1 } L(M w ) = } Todistus: Aiemmin esitetyn mukaan jos A ja A ovat rekursiivisesti lueteltavia,
Lisätiedot1. Esitä rekursiivinen määritelmä lukujonolle
Matematiikan laitos Johdatus Diskrettiin Matematiikkaan Harjoitus 4 24.11.2011 Ratkaisuehdotuksia Aleksandr Pasharin 1. Esitä rekursiivinen määritelmä lukujonolle (a) f(n) = (2 0, 2 1, 2 2, 2 3, 2 4,...)
LisätiedotHakupuut. tässä luvussa tarkastelemme puita tiedon tallennusrakenteina
Hakupuut tässä luvussa tarkastelemme puita tiedon tallennusrakenteina hakupuun avulla voidaan toteuttaa kaikki joukko-tietotyypin operaatiot (myös succ ja pred) pahimman tapauksen aikavaativuus on tavallisella
LisätiedotLaskennan rajoja. TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 20. kesäkuuta 2013 TIETOTEKNIIKAN LAITOS.
TIEA241 Automaatit ja kieliopit, kesä 2013 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 20. kesäkuuta 2013 Sisällys Päätösongelmat Ongelma on päätösongelma (engl. decision problem), jos se on muotoa Onko
LisätiedotEnglannin lausekerakenteita ja taulukkojäsentäminen
Englannin lausekerakenteita ja taulukkojäsentäminen Kontekstittomat jäsennysmenetelmät Lili Aunimo lili.aunimo@helsinki.fi Helsingin yliopisto Kieliteknologia Lili Aunimo Englannin lausekerakenteita ja
LisätiedotTIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 26. kesäkuuta 2013
ja ja TIEA241 Automaatit ja kieliopit, kesä 2012 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 26. kesäkuuta 2013 Sisällys ja ja on yksi vanhimmista tavoista yrittää mallittaa mekaanista laskentaa. Kurt
LisätiedotTIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho. 31. maaliskuuta 2011
TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 31. maaliskuuta 2011 Sisällys Sisällys Chomskyn hierarkia kieli säännöllinen kontekstiton kontekstinen rekursiivisesti
LisätiedotTIE448 Kääntäjätekniikka, syksy Antti-Juhani Kaijanaho. 9. marraskuuta 2009
TIE448 Kääntäjätekniikka, syksy 2009 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 9. marraskuuta 2009 Sisällys Sisällys Seuraava deadline Vaihe D tiistai 10.11. klo 10 välikielen generointi Vaihe E tiistai
Lisätiedot