Yhteydettömät kieliopit [Sipser luku 2.1]

Samankaltaiset tiedostot
2. Yhteydettömät kielet

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

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

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

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

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

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

Laskennan mallit (syksy 2010) Harjoitus 8, ratkaisuja

Rajoittamattomat kieliopit

11.4. Context-free kielet 1 / 17

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

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

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

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

ICS-C2000 Tietojenkäsittelyteoria

Pinoautomaatit. Pois kontekstittomuudesta

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. lokakuuta 2016

S BAB ABA A aas bba B bbs c

Laskennan mallit

Chomskyn hierarkia ja yhteysherkät kieliopit

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

Säännöllisten kielten sulkeumaominaisuudet

Täydentäviä muistiinpanoja jäsennysalgoritmeista

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

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

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

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

8. Kieliopit ja kielet

Tarkastelemme ensin konkreettista esimerkkiä ja johdamme sitten yleisen säännön, joilla voidaan tietyissä tapauksissa todeta kielen ei-säännöllisyys.

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

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

Jäsennys. TIEA341 Funktio ohjelmointi 1 Syksy 2005

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

JOHDATUS TEKOÄLYYN TEEMU ROOS

ongelma A voidaan ratkaista ongelman B avulla, joten jossain mielessä

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

Yhteydettömän kieliopin jäsennysongelma

Rajoittamattomat kieliopit (Unrestricted Grammars)

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

Luonnolliset vs. muodolliset kielet

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

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

Muodolliset kieliopit

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

Hahmon etsiminen syotteesta (johdatteleva esimerkki)

Kontekstittomat jäsennysmenetelmät

ICS-C2000 Tietojenkäsittelyteoria

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

Attribuuttikieliopit

ICS-C2000 Tietojenkäsittelyteoria Kevät 2016

Rekursiivinen Derives on periaatteessa aivan toimiva algoritmi, mutta erittäin tehoton. Jos tarkastellaan esim. kieliopinpätkää

8. Kieliopit ja kielet 1 / 22

Jos sekaannuksen vaaraa ei ole, samastamme säännöllisen lausekkeen ja sen esittämän kielen (eli kirjoitamme R vaikka tarkoitammekin L(R)).

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

ICS-C2000 Tietojenkäsittelyteoria Kevät 2016

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset

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

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

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

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

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

Täydentäviä muistiinpanoja Turingin koneiden vaihtoehdoista

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

Automaatit. Muodolliset kielet

Kertausta 1. kurssikokeeseen

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

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

5 Kontekstittomat kielet ja pinoautomaatit

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

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

Olkoon G = (V,Σ,P,S) yhteydetön kielioppi. Välike A V Σ on tyhjentyvä, jos A. NULL := {A V Σ A ε on G:n produktio};

follow(a) first(α j ) x

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

6.5 Turingin koneiden pysähtymisongelma Lause 6.9 Kieli. H = {c M w M pysähtyy syötteellä w}

1. Universaaleja laskennan malleja

Luonnollisen päättelyn luotettavuus

ICS-C2000 Tietojenkäsittelyteoria Kevät 2016

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

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

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

Pinot, jonot, yleisemmin sekvenssit: kokoelma peräkkäisiä alkioita (lineaarinen järjestys) Yleisempi tilanne: alkioiden hierarkia

Kaikki mitä olet aina halunnut tietää pumppauslemmoista, mutta mitä et ole kehdannut kysyä

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

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

Joukot. Georg Cantor ( )

Todistus: Aiemmin esitetyn mukaan jos A ja A ovat rekursiivisesti lueteltavia, niin A on rekursiivinen.

Pysähtymisongelman ratkeavuus [Sipser luku 4.2]

815338A Ohjelmointikielten periaatteet Harjoitus 6 Vastaukset

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

Rekursiiviset palautukset [HMU 9.3.1]

Yllä osoitettiin, että säännöllisten kielten joukko on suljettu yhdisteen

TKT20005 Laskennan mallit (syksy 2018) Kurssikoe, malliratkaisut

DFA:n käyttäytyminen ja säännölliset kielet

Algoritmin määritelmä [Sipser luku 3.3]

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

3.3 KIELIOPPIEN JÄSENNYSONGELMA Ratkaistava tehtävä: Annettu yhteydetön kielioppi G ja merkkijono x. Onko

Englannin lausekerakenteita ja taulukkojäsentäminen

Laskennan teoria (kevät 2006) Harjoitus 3, ratkaisuja

Transkriptio:

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 produktiot aa aba B bb B b. Kieliopin muuttujat eli välikkeet (variable, nonterminal symbol) ovat ja B. Näistä on erityisasemassa lähtösymbolina. Päätemerkit eli -symbolit (terminal) ovat a ja b. Kieliopista saadaan esim. merkkijonolle aabbaa L seuraava johto (derivation): aa aabaa aabbaa aabbaa. Johdossa siis aloitetaan lähtösymbolista ja korvataan muuttujat yksi kerrallaan vastaavan produktion oikealla puolella olevalla merkkijonolla. 133

Merkkijonon aabbaa johtoa aa aabaa aabbaa aabbaa vastaa seuraava jäsennyspuu (parse tree): B B a a b b a a Lehtinä on johdetun merkkijonon merkit esijärjestyksessä ( vasemmalta oikealle ), juurena lähtösymboli ja sisäsolmuina välikkeitä. Kunkin välikkeen lapset vastaavat välikeeseen liittyvän säännön oikeaa puolta. 134

Muodollisesti yhteydetön eli kontekstiton kielioppi (context-free grammar, CFG) on nelikko (V, Σ, R, ), missä 1. V on äärellinen muuttujien (eli muuttujasymbolien eli välikesymbolien) joukko 2. Σ on äärellinen päätesymbolien joukko, joka ei saa sisältää muuttujasymboleja 3. R on äärellinen joukko sääntöjä eli produktioita muotoa A w, missä A V on muuttuja ja w (V Σ) on mielivaltainen (mahdollisesti tyhjä) jono muuttujia ja päätesymboleja 4. jokin muuttuja V on asetettu lähtösymboliksi. 135

Esimerkki 2.1: Edellä todettiin, että kielelle { a n b m a n n, m > 0 } on olemassa yhteydetön kielioppi G = (V, Σ, R, ), missä V = {, B } Σ = { a, b } R = { aa, aba, B bb, B b } on lähtösymboli. Jatkossa esittämme tämän kieliopin yksinkertaisesti muodossa iis aa aba B bb b muuttujia ovat ne, jotka ovat jonkin säännön vasempana puolena, lähtösymboli on ensimmäisenä listatun säännön vasen puoli muut symbolit ovat päätesymboleita. samaan muuttujaan liittyvät säännöt kootaan yhteen ja niiden oikeat puolet erotetaan pystyviivalla toisistaan. 136

Intuitiivisesti yhteydetön kielioppi G = (V, Σ, R, ) tuottaa aakkoston Σ merkkijonoja seuraavalla proseduurilla: 1. Alusta r :=. (Jatkossa r saa arvokseen aakkoston V Σ merkkijonoja.) 2. Valitse merkkijonosta r jokin kohta i, jossa esiintyy muuttujasymboli; ts. olkoon r = r 1... r i 1 A r i+1... r n, missä n = r, r i V Σ kaikilla i ja A V. 3. Valitse sääntöjoukosta R jonkin sääntö A w 1... w m, jonka vasen puoli on sama kuin merkkijonosta r valittu muuttujasymboli. 4. Aseta muuttujalle r uusi arvo r := r 1... r i 1 w 1... w m r i+1... r k. 5. Jos r sisältää pelkkiä päätemerkkejä (eli r Σ ), niin tulosta r. Muuten palaa kohtaan 2. Kieliopin tuottama kieli koostuu niistä aakkoston Σ merkkijonoista, jotka tämä proseduuri voi tulostaa, kun sovellettavat säännöt valitaan sopivasti. 137

Määritellään nyt täsmällisemmin kieliopin G = (V, Σ, R, ) tuottama kieli. Jos x = u A v ja y = u w v, missä A w R, niin x johtaa suoraan eli tuottaa suoraan (yields, derives directly) merkkijonon y. Tätä merkitään x y. Jos on olemassa aakkoston V Σ merkkijonot u 0,..., u k, missä u i 1 u i kun i = 1,..., k, eli u 0 u 1 u 2 u k 1 u k sanotaan, että u 0 johtaa eli tuottaa (derives) merkkijonon u k ja merkitään u 0 uk. Tässä k voi olla myös 0: kaikilla u (V Σ), u u eli jokainen merkkijono + tuottaa itsensä. Tapauksessa k > 0 voidaan merkitä u 0 u k. 138

Aakkoston V Σ merkkijono w on lausejohdos (sentential form), jos w. Jos lisäksi w sisältää vain päätesymboleja, se on lause. Ketjua = u 0 u 1... u k = w sanotaan merkkijonon w johdoksi (derivation), ja sen pituus on k. Kieliopin G tuottama eli kuvaama kieli on sen lauseiden joukko { } L(G) = w Σ w. Kieli on yhteydetön, jos jokin yhteydetön kielioppi tuottaa sen. 139

elitys termille yhteydetön : Yhteydetön viittaa siihen, että kieliopin säännöt ovat muotoa A w, mikä voidaan tulkita Muuttuja A voidaan korvata merkkijonolla w, oli ympärillä mitä tahansa. ääntöjä siis voidaan soveltaa kontekstista riippumatta. Yhteydettömän kielioppin eräs mahdollinen yleistys on yhteysherkkä kielioppi (context-sensitive grammar). Tällaisen kieliopin säännöt ovat muotoa uav uwv, missä u, v ja w ovat aakkoston V Σ merkkijonoja. ääntö tulkitaan Muuttuja A voidaan korvata merkkijonolla w, jos sen ympärillä on merkkijonot u ja v. Voidaan osoittaa, että esim. kieli { a n b n c n n N } ei ole yhteydetön, mutta voidaan esittää käyttämällä yhteysherkkiä sääntöjä. 140

Lausejohdoksen u Σ jäsennyspuu on mikä tahansa seuraavat ehdot täyttävä puu: 1. Puun solmut on nimetty joukon V Σ { ε } alkioilla. 2. isäsolmut on nimetty muuttujilla ja erityisesti juuri lähtösymbolilla. 3. Jos A on sisäsolmu nimi ja sen lasten nimet vasemmalta oikealle ovat w 1,..., w m, niin kieliopissa on sääntö A w 1... w m. 4. Lehdissä ovat merkkijonon u merkit järjestyksessä vasemmalta oikealle sekä mahdollisesti tyhjän merkkijonon symboleja ε. Merkkijonon u johdosta voidaan rakentaa sille jäsennyspuu: 1. Lähdetään liikkeelle puusta, jossa on pelkkä juuri. 2. Kun johdossa sovelletaan sääntöä A w 1... w m, niin puussa vastaavalle lehdelle A lisätään lapset w 1,..., w m. 141

Esimerkki 2.2: Yhteydetön kielioppi ( ) ε tuotaa kaikki oikein muodostetut sulkulausekkeet. Tässä siis päätesymbolit ovat vasen ja oikea sulkumerkki. ulkulauseke on oikein muodostettu, jos vasemmat ja oikeat sulkumerkit voidaan pariuttaa siten, että mikään pari ei mene ristiin. ulkulausekkeen ( ) ( ( ) ( ) ) eräs johto ja sitä vastaava jäsennyspuu ovat ( ) ( ) ( ) () ( ) () ( ) ( () ) ( ) ( ( ) ) ( ) ( ( ) ()) ( ) ( ( ) ( )) ( ε ) ( ( ε ) ( ε ) ) 142

Yhteydettömien kielioppien laatiminen [ipser s. 106 107] Yhteydettömiä kielioppeja on helppo tuottaa soveltamalla vastaavia operaatioita kuin säännöllisissä lausekkeissa. Lause 2.3: Jos A ja B ovat yhteydettömiä kieliä, niin myös A B, A B ja A ovat. Todistus: Tarkastellaan esimerkkinä yhdistettä A B; muut kohdat jätetään harjoitustehtäväksi. Olkoot A ja B aakkoston Σ yhteydettömiä kieliä. iis A = L(G A ) ja B = L(G B ) joillain yhteydettömillä kieliopeilla G A = (V A, Σ, R A, A ) ja G B = (V B, Σ, R B, B ). Kielioppien muuttujasymboleita voidaan tarvittaessa vaihtaa niin, että V A V B =. Olkoon V A V B. Määritellään G = (V A V B { }, Σ, R, ), missä elvästi L(G) = A B. R = R A R B { A } { B } 143

Lauseesta 2.3 seuraa erityisesti Korollaari 2.4: Kaikki säännölliset kielet ovat yhteydettömiä. Todistus: Olkoon Σ mielivaltainen aakkosto. Määritellään G = ({ }, Σ,, ) G ε = ({ }, Σ, { ε }, ) G a = ({ }, Σ, { a }, ) kaikilla a Σ. elvästi L(G ) =, L(G ε ) = { ε } ja L(G a ) = { a } kaikilla a Σ. Jokainen säännöllinen kieli voidaan esittää säännöllisenä lausekkeena, joka kertoo, miten kyseinen kieli muodostetaan peruskielistä, { ε } ja { a } käyttäen operaatioita, ja. Yllä olevasta ja lauseesta 2.3 seuraa, että näille kielille on olemassa myös yhteydetön kielioppi. Jatkossa osoittautuu, että yhteydettömien kielten luokka ei ole suljettu leikkauksen ja komplementin suhteen, toisin kuin säännöllisten kielten luokka. 144

Yhteydettömät kielet ovat aidosti laajempi luokka kuin säännölliset, kuten seuraavat perusesimerkit osoittavat. Esimerkki 2.5: Kieli { 0 n 1 n n N } tunnetusti ei ole säännöllinen. e voidaan kuitenkin tuottaa yhteydettömällä kieliopilla 01 ε Esimerkki 2.6: Aakkoston { a, b } palindromien joukko { w { a, b } w = w R } voidaan tuottaa yhteydettömällä kieliopilla ε a b aa bb. Vastaavasti kieli { ww R w { a, b } } voidaan tuottaa yhteydettömällä kieliopilla ε aa bb. en sijaan kieli { ww w { a, b } } ei ole yhteydetön, kuten jatkossa näemme. 145

Esimerkki 2.7: Luonnollinen kieli on ollut tärkeä motivaatio kielioppiformalismien kehittämiselle. Leikkikaluesimerkki: sentence noun-phrase verb-phrase noun-phrase verb direct-object-phrase noun-phrase proper-noun determiner common-noun proper-noun John Jill common-noun car hamburger determiner a the verb-phrase verb adverb verb verb drives eats adverb slowly frequently direct-object-phrase adjective-list proper-noun determiner adjective-list common-noun adjective-list ε adjective adjective-list adjective big juicy brown Tässä siis sentence jne. ovat muuttujasymboleja ja John jne. päätesymboleja. Huomaa muuttujaa adjective-list käyttävä toistorakenne. 146

Edellisestä kieliopista saadaan esim. seuraavanlaisia johtoja: sentence noun-phrase verb direct-object-phrase proper-noun verb direct-object-phrase John verb direct-object-phrase John eats direct-object-phrase John eats determiner adjective-list common-noun John eats a adjective-list common-noun John eats a adjective adjective-list common-noun John eats a big adjective-list common-noun John eats a big adjective adjective-list common-noun John eats a big juicy adjective-list common-noun John eats a big juicy common-noun John eats a big juicy hamburger Tämä on esimerkki vasemmasta johdosta (leftmost derivation), mihin palataan pian. 147

Edellistä johtoa vastaava jäsennyspuu: sentence noun-phrase verb direct-object-phrase proper-noun determiner adjective-list common-noun adjective adjective-list adjective adjective-list John eats a big juicy ε hamburger 148

Esimerkki 2.8: Toinen sekä historiallisesti että nykykäytännön kannalta tärkeä yhteydettömien kielioppien sovellus on ohjelmointikielten syntaksin kuvaaminen. Tarkastellaan esimerkkinä pientä Pascal-kielen osaa: lause ehtolause koottu-lause sijoitus kutsu ehtolause if ehto then lause else lause ehto x=0 koottu-lause begin lausejono end lausejono lause lause ; lausejono sijoitus x:= 0 kutsu a b c Kielioppi toimii paitsi ohjelmoijan muistilistana myös kääntäjän keskeisen vaiheen, jäsentäjän, laatimisen lähtökohtana. Jäsennystä edeltävä vaihe on selaus, joka pilkkoo ohjelman perusalkioihin kuten lukuvakiot, varatut sanat ja muuttujien nimet. Jäsentäjä ja selaaja muodostetaan usein automaattisesti kieliopista ja perusalkioita kuvaavista säännöllisistä lausekkeista (ks. sivu 90). 149

Esimerkkijohto: Vastaava ohjelmanpätkä: lause ehtolause if x=0 then if ehto then lause else lause a if x=0 then lause else lause else begin x:= 0; if x=0 then kutsu else lause b if x=0 then a else lause end if x=0 then a else koottu-lause if x=0 then a else begin lausejono end if x=0 then a else begin lause ; lausejono end if x=0 then a else begin sijoitus ; lausejono end if x=0 then a else begin x:=0 ; lausejono end if x=0 then a else begin x:=0 ; lause end if x=0 then a else begin x:=0 ; kutsu end if x=0 then a else begin x:=0 ; b end 150

Vielä jäsennyspuu samalle lauseelle: lause ehtolause ehto lause lause kutsu koottu-lause lausejono lause sijoitus lausejono lause kutsu if x = 0 then a else begin x := 0 ; b end Ohjelman käsittely kääntäjässä jäsennyksen jälkeen perustuu nimenomaan sen jäsennyspuuhun. 151

Moniselitteisyys [ipser s. 107 108] Kontekstittoman kielen lauseella on tyypillisesti useita johtoja. Esim. kieliopissa AB A a B b merkkijono ab voidaan johtaa kahdella eri tavalla: AB ab ab AB Ab ab Intuitiivisesti näissä johdoissa on vain käytetty samoja sääntöjä eri järjestyksessä. Johdot myös vastaavat samaa jäsennyspuuta. Tällaisen triviaalin monijohtoisuuden poissulkemiseksi tarkastelemme vasempia johtoja (leftmost derivation). Vasemmassa johdossa sovelletaan aina produktiota merkkijonon vasemmanpuoleisimpaan muuttujaan. iis em. kieliopissa merkkijonon ab ainoa vasen johto on AB ab ab. 152