TIE448 Kääntäjätekniikka, syksy Antti-Juhani Kaijanaho. 29. syyskuuta 2009
|
|
- Tuomas Mattila
- 6 vuotta sitten
- Katselukertoja:
Transkriptio
1 TIE448 Kääntäjätekniikka, syksy 2009 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 29. syyskuuta 2009
2 Sisällys
3 Sisällys
4 Seuraava deadline Vaihe B tiistai klo 10 selaaja ja jäsentäjä toimivat
5 Sisällys
6 Kertaus: item Item koostuu produktiosta sekä indeksistä sen oikean puolen symbolien väleihin. Indeksin osoittamaa paikkaa merkitään tavallisesti piseteellä. Esimerkkinä produktion E E + T itemit: E E + T E E + T E E + T E E + T Pistettä edeltävä osa on jo luettu, pisteen jälkeistä osaa odotetaan.
7 Item-joukon sulkeuma Määritelmä Item-joukon I sulkeuma tarkoittaa pienintä joukkoa C(I), jolle pätevät seuraavat väitteet: 1. I C(I) 2. Jos C(I):ssä on item A α Bβ (joillakin A, α, B, β) ja kieliopista löytyy produktio B γ (jollakin γ), niin C(I):stä löytyy item B γ.
8 Item-joukon sulkeuma algoritmi 1. Syötteenä item-joukko I. 2. Alusta kaksi paikallista muuttujaa: C, joka on itemjoukko, ja Q, joka on itemjono. C on aluksi I, ja Q:ssa on aluksi (mielivaltaisessa järjestyksessä) I:n alkiot. 3. Toista seuraavaa kunnes Q on tyhjä: 3.1 Poista Q:sta jonon ensimmäinen alkio. 3.2 Jos poistamassasi itemissä on pisteen perässä välikesymboli, nimetään ko. välikesymboli A:ksi. Muutoin hypätään seuraavan askeleen yli. 3.3 Jokaiselle kieliopin produktiolle A α tee seuraavaa: Jos item A α ei ole C:ssä, lisää se C:hen sekä Q:n loppuun. 4. Lopputulos on nyt C:ssä.
9 Funktio GOTO Määritelmä GOTO(I, X) = C { A αx β (A α Xβ) I } Huomioita X voi olla niin pääte- kuin välikesymbolikin. GOTO(I, X) jättää huomiotta kaikki ne I:n itemit, joissa pistettä ei seuraa X. Tulosjoukossa on piste siirretty X:n yli.
10 Kanoninen LR(0)-automaatti Määritelmä Kanoniselle LR(0)-automaatille pätee seuraavaa: Sen tilat ovat itemjoukkoja. Sen aloitustila on C({S S}), missä S on uusi välikesymboli ja S on kieliopin aloitussymboli. Jos itemjoukko I on automaatin tila, niin jokaiselle pääte- ja välikesymbolille X pätee seuraavaa: Jos GOTO(I, X) ei ole tyhjä, niin GOTO(I, X) on automaatin tila ja automaatissa on X:llä laputettu siirtymä I:stä GOTO(I, X):ään. Automaatissa ei ole muunlaisia tiloja tai tilasiirtymiä.
11 LR-jäsennysalgoritmi: tietorakenteet Syöte on päätesymbolijono, jota käsitellään vain kahdella operaatiolla: tarkista, mikä symboli on syötteen alussa, ja poista syötteen alusta yksi päätesymboli. Pino sisältää tiloja (jotka yleensä on numeroitu, jolloin pinossa on vain numeroita). Pinoa käsitellään tavanomaisen pinon tapaan.
12 LR-jäsennysalgoritmi: ohjaustaulukot Siirtymätaulukko on kaksiulotteinen taulukko, jossa rivejä indeksoidaan tiloilla ja sarakkeita välikesymboleilla. Kussakin solussa on tila. Toimintotaulukko on kaksiulotteinen taulukko, jossa rivejä indeksoidaan tiloilla ja sarakkeita päätesymboleilla (ynnä syötteen loppumisella). Kussakin solussa on jokin seuraavista : SHIFT n poista syötteen ensimmäinen merkki ja lisää pinoon n; REDUCE S γ poista pinon päältä γ:n pituuden verran tiloja, hae siirtymätaulukon nykyisen tilan riviltä ja välikesymbolin S sarakkeelta uusi tila ja pistä tuo tila pinoon; ACCEPT lopeta jäsentäminen tähän; ja REJECT keskeytä jäsennys kielioppivirheen takia.
13 LR-jäsennysalgoritmi 1. Laita pinoon LR-automaatin aloitustila. 2. Olkoon a syötteen ensimmäinen symboli, tai jos syöte on lopussa, syötteen loppumisen merkki. 3. Olkoon s pinon päällimmäinen tila. 4. Tarkastellaan toimintotaulukon riviä s ja saraketta a: Jos siinä on SHIFT s, 4.1 poista syötteestä sen ensimmäinen symboli ja 4.2 laita pinoon s. Jos siinä on REDUCE A γ: 4.1 poista pinosta γ:n pituuden verran tiloja, 4.2 nimeä väliaikaisesti pinosta nyt löytyvä tila s :ksi, 4.3 laita pinoon siirtymätaulukon riviltä s ja sarakkeelta A löytyvä tila, ja 4.4 suorita produktioon A γ liittyvä ohjelmakoodi. Jos siinä on ACCEPT, lopeta. Jos siinä on REJECT, diagnosoi virhe ja lopeta. 5. Palaa kohtaan 2.
14 LR(0)-ohjaustaulukkojen konstruointi 1 Jos jossakin kanonisen LR(0)-automaatin tilassa I on item A α aβ (missä a on päätesymboli), merkitse toimintotaulukon riville I sarakkeeseen a SHIFT J, missä J on I:stä a:lla laputetun siirtymän kohde. Jos jossakin tilassa I on item A α (missä A ei ole S ), merkitse toimintotaulukon riville I kaikkiin sarakkeisiin REDUCE A α. Jos jossakin tilassa I on item S S, merkitse toimintotaulukon riville I syötteen loppumista merkitsevään sarakkeeseen ACCEPT. Merkitse siirtymätaulukon riville I sarakkeeseen A GOTO(I, A), jos määritelty. Jos jokin solu jää näin tyhjäksi, merkitse siihen REJECT. 1 Tällä kalvolla S tarkoittaa automaatin konstruktiossa luotua uutta välikesymbolia ja S kieliopin aloitussymbolia.
15 LR(0) konfliktit Jos toimintotaulukkoon tulisi samaan soluun useampi kuin yksi toiminto, on kyseessä konflikti. Tällöin kielioppi ei ole LR(0) ja jäsentimen konstruktio epäonnistuu. LR(0):ssa konflikteja tulee erittäin herkästi riittää jos samassa tilassa on itemeitä sekä muotoa A α että muunlaisia.
16 SLR(1)-toimintotaulukon konstruointi SLR on Simple LR Muuten samanlainen kuin LR(0), paitsi reduce-toiminnon osalta: Jos jossakin tilassa I on item A α (missä A ei ole S ), merkitse toimintotaulukon riville I REDUCE A α niihin sarakkeisiin, joiden päätesymbolit kuuluvat joukkoon FOLLOW(A). Tavanomainen lausekekielioppi on SLR(1) mutta ei LR(0).
17 Esimerkki kieliopista joka ei ole SLR(1) S L = R R L R id R L
18 Sisällys
19 LR(1)-item Kuten LR(0)-item, eli produktio, jossa on piste oikealla puolella, mutta: lisäksi päätesymboli (tai syötteen loppumista tarkoittava merkintä) eli lookahead-symboli. Notaatio: A α β, a Tulkinta: α on luettu, β:aa odotetaan, ja β:n jälkeen odotetaan a:ta. LR(k):ssa k tarkoittaa lookahead-symbolijonon pituutta; k > 1 on erittäin harvinainen.
20 LR(1)-itemjoukon sulkeuma Määritelmä Item-joukon I sulkeuma tarkoittaa pienintä joukkoa C(I), jolle pätevät seuraavat väitteet: 1. I C(I) 2. Jos C(I):ssä on item A α Bβ, a (joillakin A, α, B, β), kieliopista löytyy produktio B γ (jollakin γ) ja on olemassa b FIRST(βa), niin C(I):stä löytyy item B γ, b.
21 LR(1)-itemjoukon sulkeuma algoritmi 1. Syötteenä item-joukko I. 2. Alusta kaksi paikallista muuttujaa: C, joka on itemjoukko, ja Q, joka on itemjono. C on aluksi I, ja Q:ssa on aluksi (mielivaltaisessa järjestyksessä) I:n alkiot. 3. Toista seuraavaa kunnes Q on tyhjä: 3.1 Poista Q:sta jonon ensimmäinen alkio. 3.2 Jos poistamassasi itemissä on pisteen perässä välikesymboli, nimetään ko. välikesymboli A:ksi. Muutoin hypätään seuraavan kolmen askeleen yli. 3.3 Nimetään poistetun itemin lookahead-symboli a:ksi. 3.4 Nimetään poistetun itemin pisteen jälkeisen A:n jälkeinen osa β:ksi. 3.5 Jokaiselle kieliopin produktiolle A α ja jokaiselle b FIRST(βa) tee seuraavaa: Jos item A α, b ei ole C:ssä, lisää se C:hen sekä Q:n loppuun. 4. Lopputulos on nyt C:ssä.
22 Funktio GOTO Määritelmä GOTO(I, X) = C { A αx β, a (A α Xβ, a) I }
23 Kanoninen LR(1)-automaatti Määritelmä Kanoniselle LR(1)-automaatille pätee seuraavaa: Sen tilat ovat itemjoukkoja. Sen aloitustila on C({S S, $}), missä S on uusi välikesymboli, S on kieliopin aloitussymboli ja $ tarkoittaa syötteen loppumista. Jos itemjoukko I on automaatin tila, niin jokaiselle pääte- ja välikesymbolille X pätee seuraavaa: Jos GOTO(I, X) ei ole tyhjä, niin GOTO(I, X) on automaatin tila ja automaatissa on X:llä laputettu siirtymä I:stä GOTO(I, X):ään. Automaatissa ei ole muunlaisia tiloja tai tilasiirtymiä.
24 LR(1)-ohjaustaulukkojen konstruointi 2 Jos jossakin kanonisen LR(1)-automaatin tilassa I on item A α aβ, b (missä a on päätesymboli), merkitse toimintotaulukon riville I sarakkeeseen a SHIFT J, missä J on I:stä a:lla laputetun siirtymän kohde. Jos jossakin tilassa I on item A α, a (missä A ei ole S ), merkitse toimintotaulukon riville I sarakkeeseen a REDUCE A α. Jos jossakin tilassa I on item S S, $, merkitse toimintotaulukon riville I syötteen loppumista merkitsevään sarakkeeseen ACCEPT. Merkitse siirtymätaulukon riville I sarakkeeseen A GOTO(I, A), jos määritelty. Jos jokin solu jää näin tyhjäksi, merkitse siihen REJECT. 2 Tällä kalvolla S tarkoittaa automaatin konstruktiossa luotua uutta välikesymbolia ja S kieliopin aloitussymbolia.
25 Lookahead LR (LALR) C:n kaltaisen kielen LR(1)-jäsentäjässä on tyypillisesti tuhansia tiloja. Lookahead LR (LALR) on lähes LR(1):n veroinen menetelmä, jolla tilojen määrä tippuu merkittävästi. Ideana yhdistää LR(1)-tilat, joissa on lookahead-symboleja vaille samat itemit tällöin LALR-itemissä on lookahead-symbolijoukko.
26 LR LALR ei tuota shift/reduce-konfliktia Oletetaan, että LALR-jäsentimessä on shift/reduce-konflikti. Tällöin täytyy olla jossakin tilassa sekä A α, {..., a,...} että B β aγ, {..., b,...}. Tällöin alkuperäisessä LR-jäsentimessä täytyy olla tila, jossa on sekä A α, a että B β aγ, b. Kyseisessä LR-tilassa on shift/reduce-konflikti.
27 LR LALR voi luoda r/r-konfliktin Tarkastellaan LR(1)-tiloja ja {(A c, d), (B c, e)} {(A c, e), (B c, d)}. Kummassakaan ei ole konfliktia. Näistä syntyy LALR(1)-tila {(A c, {d, e}), (B c, {d, e})}, jossa on reduce/reduce-konflikti.
28 Sisällys
29 toiminnot Sekä LL- että LR-jäsennyksessä ohjelmoija voi yleensä liittää produktioon ohjelmakoodia. Ohjelmakoodissa on käytettävissä produktion oikean puolen symbolien semanttiset arvot. Ohjelmakoodin odotetaan laskevan produktion vasemman puolen välikesymbolille semanttisen arvon. LL-jäsentimessä ohjelmakoodi suoritetaan produktion toteuttavan koodin lopuksi, ja laskettu semanttinen arvo palautetaan aliohjelman paluuarvona. LR-jäsentimessä ohjelmakoodi suoritetaan produktion REDUCEn yhteydessä, ja semanttinen arvo liitetään pinossa olevan tilaan lisätiedoksi. Päätesymbolin semanttinen arvo liitetään pinon tilaan toki SHIFTin yhteydessä.
30 Esimerkki: käsin koodattu prediktiivinen 3 private Expression parseprefixexpression() throws IOException, ParseException { Pos pos = l.getpos(); int op = l.peek(); switch (op) { case + : l.get(); return new UnaryPlusExpression(pos, parseprefixexpression()); case - : l.get(); return new UnaryMinusExpression(pos, parseprefixexpression()); case ~ : l.get(); return new BitwiseNotExpression(pos, parseprefixexpression()); case ( : if (istypefirst(l.peek(1))) { l.get(); Type ty = parsetype(); l.get( ) ); return new CastExpression(pos, ty, parseprefixexpression()); } } /* passthrough */ default: return parsepostfixexpression(); } 3 darcsweb.cgi?r=alkeis2007-compiler;a=headblob;f= /alkeis/parser.java
31 Esimerkki: CUP multiplicative_expression ::= prefix_expression:e {: RESULT = e; :} multiplicative_expression:e1 ASTERISK prefix_expression:e2 {: RESULT = new MultiplicationExpression(e1,e2); :} multiplicative_expression:e1 SOLIDUS prefix_expression:e2 {: RESULT = new DivisionExpression(e1,e2); :} multiplicative_expression:e1 PERCENT prefix_expression:e2 {: RESULT = new RemainderExpression(e1,e2); :} ;
32 Määrittelyjen kommunikointi selaajalle Jos kielessä on tarpeen erotella eri nimisanasluokkia sen mukaan, mitä on ohjelmassa määritelty, tulee jäsentimen päivittää selaajan näkemystä nimiluokista määrittelyn tultua jäsennettyä. Tällöin selaajassa on hyvä olla kolme metodia void enterscope(), void leavescope() ja void declaretypename(string) (tai vastaava). enterscope pistää muistiin näkyvyysalueen alkamisen. leavescope peruu kaikki declaretypenamet, jotka on tehty viimeisimmän leavescope-parittoman enterscopen jälkeen. declaretypename lisää annetun nimen tyyppinimien luetteloon.
33 Toteutus selaajassa Tyyppinimien luettelo koostuu kahdesta tietorakenteesta: hajautustaulusta, jossa on kulloinkin voimassa olevat tyyppinimet, ja pinosta, jonka alkioissa on tieto muutetusta nimestä sekä sen vanhasta statuksesta. enterscope laittaa pinoon jonkinlaisen merkin. leavescope käy pinoa läpi kunnes löytää merkin, ja palauttaa pinossa olevien alkioiden avulla nimille niiden vanhat statukset. declaretypename laittaa pinoon nimen vanhan statuksen ja kirjaa uuden statuksen hajautustauluun. Esim. mallikääntäjän fi.jyu.ties448.eska.util.scopedset.
34 Toteutus jäsentäjässä Kun on jäsennetty uuden määrittelyalueen alku (esim. lohkon alku), tulee jäsentäjän kutsua selaajan enterscopea. Kun on jäsennetty määrittelyalueen loppu (esim. lohkon loppu), tulee jäsentäjän kutsua selaajan leavescopea. Kun jäsennetty määrittely, tulee jäsentäjän kutsua selaajan declaretypenamea. Huom! Tämä on usein ennen määrittelyn lopullista päättymistä esim. luokkanimi pitää declaretypenamettaa ennen luokan jäsenten (attribuutit, metodit) jäsentämistä!
35 Esimerkki CUP:ssa block ::= block_head:l stmts:ss CBRACE:r {: RESULT = new BlockStatement(ss, new Pos(l.pos,r.pos)); getca().leavescope(); :} ; block_head ::= OBRACE:it {: getca().enterscope(); RESULT = it; :} ; class_definition ::= class_head:ch extends_opt:ex OBRACE class_body:b CBRACE:r {: RESULT = new ClassDefinition(ch, ex, b, new Pos(ch.pos, r.pos)); :} class_head:d SEMICOLON {: RESULT = d; :} ; class_head ::= CLASS:l IDENTIFIER:id {: getca().declaretypename(id.value); RESULT = new ClassDeclaration(id, new Pos(l.pos, id.pos)); :} CLASS:l TYPENAME:id {: RESULT = new ClassDeclaration(id, new Pos(l.pos, id.pos)); :} ;
36 Sisällys
37 Käyttäjä usein odottaa, että kääntäjä diagnosoi muitakin virheitä kuin ensimmäisen vastaantulleen. Jäsentimen tulee tällöin kyetä toipumaan virheistä. Yksinkertainen tapa on paniikkitila: syödään syötettä kunnes löydetään synkronointimerkki (esim. ;), ja poistetaan pinosta kamaa kunnes löytyy jotain, joka osaa sen syödä. Jäsennyksen päätyttyä tarkistetaan, annettiinko virhediagnooseja, ja lopetetaan käännös jos annettiin.
38 Paniikkitila käsin kirjoitetussa jäsentimessä Kun havaitaan virhe, diagnosoidaan se ja heitetään poikkeus. Jokin toipumiseen soveltuva produktioaliohjelma (esim. statement) nappaa poikkeuksen kiinni, syö syötettä kunnes löytää synkronointimerkin ja sitten jatkaa kuin mitään ei olisi tapahtunut. Hyviä synkronointimerkkejä ovat synkronoivan välikesymbolin FOLLOW-joukon alkiot, sekä tyypilliset synkronoivan välikesymbolin päättävät päätesymbolit (usein puolipiste).
39 Paniikkitila LR-jäsentimessä Kun havaitaan virhe, poistetaan pinosta tiloja kunnes löytyy sellainen, jossa on SHIFT-toiminto fiktiiviselle ERROR-päätesymbolille, toteutetaan ko. SHIFT koskematta kuitenkaan syötteeseen, ja jatketaan kuin mitään ei olisi tapahtunut. tulee lisätä kielioppiin sopiviin kohtiin ERROR-päätesymboli. Hyvä idea on lisätä statement-nonterminaalille (S) produktio S ERROR ; Eli siis ERROR, ja sen perään synkronointimerkki. tulee myös yleensä tällöin itse tuottaa virhediagnoosi error-produktion ohjelmakoodissa.
40 Sisällys
41 Seuraava deadline Vaihe B tiistai klo 10 selaaja ja jäsentäjä toimivat
Jä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ä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ä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ä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ätiedotjä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, 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, 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ä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ä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ä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ä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ä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ä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ä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. 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ä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ä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ä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ätiedotTIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 22. toukokuuta 2013
TIEA24 Automaatit ja kieliopit, kesä 3 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 22. toukokuuta 3 Sisällys Äärellisiä automaatteja ON PUSH PUSH OFF Q T J Q C C H S C,Q C,Q 0 40 60 80 00, 70 90 Deterministinen
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ä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ä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ätiedotTIE448 Kääntäjätekniikka, syksy Antti-Juhani Kaijanaho. 27. lokakuuta 2009
TIE448 Kääntäjätekniikka, syksy 2009 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 27. lokakuuta 2009 Sisällys Sisällys Seuraava deadline Vaihe D tiistai 10.11. klo 10 välikielen generointi Kääntäjän rakenne
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ä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ä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ätiedotTIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 8. syyskuuta 2016
TIEA241 Automaatit ja kieliopit, syksy 2016 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 8. syyskuuta 2016 Sisällys a https://tim.jyu.fi/view/kurssit/tie/ tiea241/2016/videoiden%20hakemisto Matemaattisen
LisätiedotEloisuusanalyysi. TIE448 Kääntäjätekniikka, syksy Antti-Juhani Kaijanaho. 16. marraskuuta 2009 TIETOTEKNIIKAN LAITOS. Eloisuusanalyysi.
TIE448 Kääntäjätekniikka, syksy 2009 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 16. marraskuuta 2009 Sisällys Sisällys Seuraava deadline Vaihe E tiistai 1.12. klo 10 koodigenerointi (ilman rekisteriallokaatiota)
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ä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ätiedotTietotekniikan valintakoe
Jyväskylän yliopisto Tietotekniikan laitos Tietotekniikan valintakoe 2..22 Vastaa kahteen seuraavista kolmesta tehtävästä. Kukin tehtävä arvostellaan kokonaislukuasteikolla - 25. Jos vastaat useampaan
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ätiedotMuita rekisteriallokaatiomenetelmiä
TIE448 Kääntäjätekniikka, syksy 2009 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 23. marraskuuta 2009 Sisällys Sisällys Seuraava deadline Vaihe E tiistai 1.12. klo 10 koodigenerointi (ilman rekisteriallokaatiota)
LisätiedotTIE448 Kääntäjätekniikka, syksy Antti-Juhani Kaijanaho. 17. marraskuuta 2009
TIE448 Kääntäjätekniikka, syksy 2009 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 17. marraskuuta 2009 Sisällys Sisällys Seuraava deadline Vaihe E tiistai 1.12. klo 10 koodigenerointi (ilman ta) Vaihe
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ätiedotITKP102 Ohjelmointi 1 (6 op)
ITKP102 Ohjelmointi 1 (6 op) Tentaattori: Antti-Jussi Lakanen 7. huhtikuuta 2017 Vastaa kaikkiin tehtäviin. Tee jokainen tehtävä erilliselle konseptiarkille. Kirjoittamasi luokat, funktiot ja aliohjelmat
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ä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ätiedotJatkeet. TIES341 Funktio ohjelmointi 2 Kevät 2006
Jatkeet TIES341 Funktio ohjelmointi 2 Kevät 2006 Havainto: häntäkutsu (1) Funktiokutsun yleinen toimintaperiaate: (koskee vain täysiä kutsuja, ts. jotka eivät palauta funktiota) kutsuja kirjaa pinoon paluuosoitteen
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ätiedotTIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 19. syyskuuta 2016
TIEA241 Automaatit ja kieliopit, syksy 2016 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 19. syyskuuta 2016 Sisällys Neuvoja opintoihin tee joka päivä ainakin vähän uskalla mennä epämukavuusalueelle en
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ä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ätiedotTuringin koneet. Sisällys. Aluksi. Turingin koneet. Turingin teesi. Aluksi. Turingin koneet. Turingin teesi
TIEA241 Automaatit ja kieliopit, kevät 2012 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 17. kesäkuuta 2013 Sisällys Chomskyn hierarkia (ja vähän muutakin) kieli säännöllinen LL(k) LR(1) kontekstiton kontekstinen
LisätiedotLaskennan rajoja. Sisällys. Meta. Palataan torstaihin. Ratkeavuus. Meta. Universaalikoneet. Palataan torstaihin. Ratkeavuus.
TIEA241 Automaatit ja kieliopit, syksy 2016 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 17. lokakuuta 2016 Sisällys Harjoitustehtävätilastoa Tilanne 17.10.2016 klo 15:07 passed waiting redo submitters
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ätiedotITKP102 Ohjelmointi 1 (6 op)
ITKP102 Ohjelmointi 1 (6 op) Tentaattori: Antti-Jussi Lakanen 20. huhtikuuta 2018 Vastaa kaikkiin tehtäviin. Tee kukin tehtävä omalle konseptiarkille. Noudata ohjelmointitehtävissä kurssin koodauskäytänteitä.
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ätiedotITKP102 Ohjelmointi 1 (6 op)
ITKP102 Ohjelmointi 1 (6 op) Tentaattori: Antti-Jussi Lakanen 22. huhtikuuta 2016 Vastaa kaikkiin tehtäviin. Tee jokainen tehtävä erilliselle konseptiarkille! Kirjoittamasi luokat, funktiot ja aliohjelmat
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ätiedotM =(K, Σ, Γ,, s, F ) Σ ={a, b} Γ ={c, d} = {( (s, a, e), (s, cd) ), ( (s, e, e), (f, e) ), (f, e, d), (f, e)
Tik-79.148 Kevät 2001 Tietojenkäsittelyteorian perusteet Laskuharjoitus 7 Demonstraatiotehtävien ratkaisut 1. Pinoautomaatti M = K Σ Γ s F missä K Σ s ja F on määritelty samalla tavalla kuin tilakoneellekin.
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ä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ä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ätiedotLyhyt kertaus osoittimista
, syksy 2007 Kertausta Luento 10 12.10.2007 Syksy 2007 1 Lyhyt kertaus osoittimista char *p; /* char, int, jne ilmoittavat, minkä tyyppisiä */ Keskusmuisti int *q; /* olioita sisältäviin muistilohkoihin
LisätiedotOhjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 2.3.2009 T-106.1208 Ohjelmoinnin perusteet Y 2.3.2009 1 / 28 Puhelinluettelo, koodi def lue_puhelinnumerot(): print "Anna lisattavat nimet ja numerot." print
LisätiedotOhjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti:
1 (7) Tiedon lukeminen näppäimistöltä Scanner-luokan avulla Miten ohjelma saa käyttöönsä käyttäjän kirjoittamaa tekstiä? Järjestelmässä on olemassa ns. syöttöpuskuri näppäimistöä varten. Syöttöpuskuri
Lisätiedot58131 Tietorakenteet ja algoritmit (kevät 2016) Ensimmäinen välikoe, malliratkaisut
58131 Tietorakenteet ja algoritmit (kevät 2016) Ensimmäinen välikoe, malliratkaisut 1. Palautetaan vielä mieleen O-notaation määritelmä. Olkoon f ja g funktioita luonnollisilta luvuilta positiivisille
LisätiedotPerusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti
C! Perusteet 19.1.2017 Palautteesta (1. kierros toistaiseksi) Toistaiseksi helppoa Miksi vain puolet pisteistä? Vaikeinta oli ohjelmointiympäristön asennus ja käyttö Vaikeaa eroavuudet Pythonin ja C:n
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ä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ä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ätiedotA274101 TIETORAKENTEET JA ALGORITMIT
A274101 TIETORAKENTEET JA ALGORITMIT PERUSTIETORAKENTEET LISTA, PINO, JONO, PAKKA ABSTRAKTI TIETOTYYPPI Tietotyyppi on abstrakti, kun se on määritelty (esim. matemaattisesti) ottamatta kantaa varsinaiseen
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ätiedotTIETORAKENTEET JA ALGORITMIT
TIETORAKENTEET JA ALGORITMIT Timo Harju 1999-2004 1 typedef link List; /* Vaihtoehtoisia nimiä */ typedef link Stack; /* nodepointterille */ typedef link Queue typedef struct node Node; /* itse nodelle
LisätiedotSyntaksi. TIE448 Kääntäjätekniikka, syksy Antti-Juhani Kaijanaho. 22. syyskuuta 2009 TIETOTEKNIIKAN LAITOS. Syntaksi. Aluksi.
TIE448 Kääntäjätekniikka, syksy 2009 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 22. 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ä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ä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ä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ätiedot815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset
815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 3 vastaukset Harjoituksen aiheena ovat imperatiivisten kielten muuttujiin liittyvät kysymykset. Tehtävä 1. Määritä muuttujien max_num, lista,
Lisätiedot811312A Tietorakenteet ja algoritmit , Harjoitus 2 ratkaisu
811312A Tietorakenteet ja algoritmit 2017-2018, Harjoitus 2 ratkaisu Harjoituksen aiheena on algoritmien oikeellisuus. Tehtävä 2.1 Kahvipurkkiongelma. Kahvipurkissa P on valkoisia ja mustia kahvipapuja,
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ä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ätiedotOhjelmoinnin perusteet, syksy 2006
Ohjelmoinnin perusteet, syksy 2006 Esimerkkivastaukset 1. harjoituksiin. Alkuperäiset esimerkkivastaukset laati Jari Suominen. Vastauksia muokkasi Jukka Stenlund. 1. Esitä seuraavan algoritmin tila jokaisen
LisätiedotTIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 9. lokakuuta 2016
TIEA24 Automaatit ja kieliopit, syksy 206 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 9. lokakuuta 206 Sisällys Kolme laskennan mallia kuvitteellisia (abstrakteja) koneita eli automaatteja lukevat syötteen
LisätiedotRajapinta (interface)
1 Rajapinta (interface) Mikä rajapinta on? Rajapinta ja siitä toteutettu luokka Monimuotoisuus ja dynaaminen sidonta Rajapinta vs periytyminen 1 Mikä rajapinta on? Rajapintoja käytetään, kun halutaan määritellä
LisätiedotPerusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti
C! Perusteet 19.1.2017 Palautteesta (1. kierros toistaiseksi) (Erittäin) helppoa Miksi vain puolet pisteistä? Vaikeinta oli ohjelmointiympäristön asennus ja käyttö Ei selvää että main funktion pitikin
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ätiedotLaskennan rajoja. TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 6. maaliskuuta 2012 TIETOTEKNIIKAN LAITOS.
TIEA241 Automaatit ja kieliopit, kevät 2012 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 6. maaliskuuta 2012 Sisällys Sisällys Päätösongelmat Ongelma on päätösongelma (engl. decision problem), jos se on
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ätiedotApuja ohjelmointiin» Yleisiä virheitä
Apuja ohjelmointiin» Yleisiä virheitä Ohjelmaa kirjoittaessasi saattaa Visual Studio ilmoittaa monenlaisista virheistä "punakynällä". Usein tämä johtuu vain siitä, että virheitä näytetään vaikket olisi
Lisätiedotsemantiikasta TIE448 Kääntäjätekniikka, syksy 2009 Antti-Juhani Kaijanaho 5. lokakuuta 2009 TIETOTEKNIIKAN LAITOS Ohjelmointikielten staattisesta
TIE448 Kääntäjätekniikka, syksy 2009 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 5. lokakuuta 2009 Sisällys Sisällys Seuraava deadline Vaihe B tiistai 6.10. klo 10 selaaja ja jäsentäjä toimivat Vaihe
LisätiedotICS-C2000 Tietojenkäsittelyteoria
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 3.3 3.5 Kielioppien
LisätiedotOhjelmointi 2 / 2008 Välikoe / Pöytätestaa seuraava ohjelma.
Välikoe / 20.3 Vastaa neljään (4) tehtävään. Jos vastaat 5:een, 4 huonointa arvostellaan. Kunkin tehtävän vastaus eri konseptille. 1. Pöytätesti Pöytätestaa seuraava ohjelma. Tutki ohjelman toimintaa pöytätestillä
Lisätiedot58131 Tietorakenteet ja algoritmit (syksy 2015)
58131 Tietorakenteet ja algoritmit (syksy 2015) Harjoitus 2 (14. 18.9.2015) Huom. Sinun on tehtävä vähintään kaksi tehtävää, jotta voit jatkaa kurssilla. 1. Erään algoritmin suoritus vie 1 ms, kun syötteen
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ä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ätiedotTIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 12. lokakuuta 2016
ja ja TIEA241 Automaatit ja kieliopit, syksy 2016 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 12. lokakuuta 2016 Sisällys ja ja Vuosi on 1936, eikä tietokoneita ollut. Computer oli ammattinimike. http://www.nasa.gov/centers/dryden/
LisätiedotSisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2
4. Attribuutit 4.1 Sisällys Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2 Yleistä Luokan lohkossa, mutta metodien ulkopuolella esiteltyjä muuttujia ja vakioita. Esittely
LisätiedotSisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2
4. Attribuutit 4.1 Sisällys Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2 Yleistä Luokan lohkossa, mutta metodien ulkopuolella esiteltyjä
Lisätiedot812347A Olio-ohjelmointi, 2015 syksy 2. vsk. X Poikkeusten käsittelystä
812347A Olio-ohjelmointi, 2015 syksy 2. vsk X Poikkeusten käsittelystä Sisältö 1. Yleistä poikkeusten käsittelystä 2. Poikkeuskäsittelyn perusteita C++:ssa 3. Standardissa määritellyt poikkeukset 4. Poikkeusvarmuus
Lisätiedotarvostelija JavaCC Petri Kärki Helsinki 15. huhtikuuta 2005 Seminaarityö HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos
hyväksymispäivä arvosana arvostelija JavaCC Petri Kärki Helsinki 15. huhtikuuta 2005 Seminaarityö HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Sisältö i 1 Johdanto 1 2 JavaCC 1 2.1 Selaaja...................................
LisätiedotMATEMATIIKAN KOE PITKÄ OPPIMÄÄRÄ
1 YLIOPPILASTUTKINTO- LAUTAKUNTA 25.9.2017 MATEMATIIKAN KOE PITKÄ OPPIMÄÄRÄ A-osa Ratkaise kaikki tämän osan tehtävät 1 4. Tehtävät arvostellaan pistein 0 6. Kunkin tehtävän ratkaisu kirjoitetaan tehtävän
LisätiedotAlgoritmit 2. Luento 13 Ti Timo Männikkö
Algoritmit 2 Luento 13 Ti 30.4.2019 Timo Männikkö Luento 13 Simuloitu jäähdytys Merkkijonon sovitus Horspoolin algoritmi Ositus ja rekursio Rekursion toteutus Algoritmit 2 Kevät 2019 Luento 13 Ti 30.4.2019
LisätiedotMetodit. Metodien määrittely. Metodin parametrit ja paluuarvo. Metodien suorittaminen eli kutsuminen. Metodien kuormittaminen
Metodit Metodien määrittely Metodin parametrit ja paluuarvo Metodien suorittaminen eli kutsuminen Metodien kuormittaminen 1 Mikä on metodi? Metodi on luokan sisällä oleva yhteenkuuluvien toimintojen kokonaisuus
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ätiedotTietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen
Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari 1 1. JOHDANTO 1.1 Määritelmiä 1.2 Tietorakenteen ja algoritmin valinta 1.3 Algoritmit ja tiedon määrä 1.4 Tietorakenteet ja toiminnot 1.5 Esimerkki:
LisätiedotITKP102 Ohjelmointi 1 (6 op)
ITKP102 Ohjelmointi 1 (6 op) Tentaattori: Antti-Jussi Lakanen 12. huhtikuuta 2019 Tee kukin tehtävä omalle konseptiarkille. Noudata ohjelmointitehtävissä kurssin koodauskäytänteitä. Yksi A4-kokoinen lunttilappu
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ätiedotTähtitieteen käytännön menetelmiä Kevät 2009 Luento 5: Python
Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 5: Python 7. helmikuuta 2009 Ohjelmoinnista Ohjelman peruselementtejä Koodin kommentointi Lohkorakenne Ohjausrakenteet If For While Try Funktiot Käyttö
Lisätiedot