815338A Ohjelmointikielten periaatteet
|
|
- Juho-Matti Nurmi
- 7 vuotta sitten
- Katselukertoja:
Transkriptio
1 815338A Ohjelmointikielten periaatteet III Ohjelmointikielten syntaksi ja semantiikka
2 Sisältö 1. Syntaksi ja semantiikan käsitteet 2. BNF-kielioppi 3. Syntaksikaaviot 4. Jäsentäjät 5. Semantiikka A Ohjelmointikielten periaatteet, Syntaksi ja semantiikka 2
3 III.1 Syntaksin ja semantiikan käsitteet Ohjelmointikieltä määriteltäessä tarvitaan kuvaus kielestä Täsmällinen Helposti ymmärrettävä Kuvattava kielen rakenne Kuvattava kielen konstruktioiden merkitys Syntaksi (syntax): kielen rakenne Määrittelee kielen lailliset ilmaukset Semantiikka (semantics): merkitysoppi Määrittelee kielen ilmauksien merkityksen A Ohjelmointikielten periaatteet, Syntaksi ja semantiikka 3
4 III.1 Syntaksin ja semantiikan käsitteet (2) Esimerkki: C-kielen if lauseen syntaksi: if(<expression>) <statement> *x++=*y++ Semantiikka: Jos lausekkeen <expression> arvo ei ole nolla, niin lause <statement> suoritetaan, muuten ei suoriteta Ohjelmointikielen kielioppi (grammar) = syntaksin formaali määritelmä Esittämiseen yleisesti kontekstista riippumaton (context-free, kontekstivapaa, yhteysriippumaton jne) kielioppi Semantiikalle ei yleistä formaalia esitystapaa A Ohjelmointikielten periaatteet, Syntaksi ja semantiikka 4
5 III.2. BNF-kielioppi Tunnetuin formaali kielioppi BNF = Backus-Naur Form Vuonna 1960 kuvaamaan ALGOL-kielen syntaksia 1959 kieliteoreetikko Noam Chomsky: kontekstista riippumaton kielioppi Kuvaa kielen, jonka määrittelyt eivät riipu yhteydestä, missä ne esitetään Ekvivalentti BNF:n kanssa -> BNF-kielioppia ja kontekstista riippumatonta kielioppia käytetään synonyymeinä A Ohjelmointikielten periaatteet, Syntaksi ja semantiikka 5
6 III.2. BNF-kielioppi (2) Muodostetaan äärellisestä joukosta kielioppisääntöjä, jotka yhdessä määrittelevät (formaalin) kielen. Tässä kuvataan ohjelmointikieliä Syntaktisesti kuvataan muodollisesti oikeita ohjelmia, semanttisesti voivat olla mielettömiä A Ohjelmointikielten periaatteet, Syntaksi ja semantiikka 6
7 III.2.1. Kielen määritelmä Kieli on joukko äärellisen pituisia, jonkin aakkoston sanoja (merkkijonoja) Aakkosto on kiinnitettävä etukäteen Saadaan muodostaa ainoastaan äärellisen mittaisia sanoja Mikä tahansa ohjelmointikieli on kieli, aakkostona yleensä ASCII- tai UNICODE-merkistö, sanoja lailliset ohjelmat A Ohjelmointikielten periaatteet, Syntaksi ja semantiikka 7
8 II.2.2. Kielen perusosat Pienimmät perusosat: lekseemit (tekstialkiot, leksikaaliset sanat, lexemes) Jätetään usein pois kielen formaalista kuvauksesta Tavallisesti luetellaan sanakirjamaisesti erillään syntaktisesta kuvauksesta Ohjelmointikielen lekseemit: 1.Tunnisteet (identifiers), 2.Literaalit (literals), 3.Operaattorit (operators) 4.Erikoissanat (special words, key words) 5.Erikoissymbolit (special symbols) Varatut sanat erikoissanojen erikoistapaus A Ohjelmointikielten periaatteet, Syntaksi ja semantiikka 8
9 III.2.3 Kielen kuvaus ja jäsentäminen Lekseemien kategoriat = alkionimet (sanaset, tokens) Kielen leksikaalinen rakenne läheisesti sidoksissa syntaktisen rakenteeseen Syntaksin tarkistus yleensä 1. Selausvaiheessa (scanning phase) kerätään lekseemit 2. Jäsennysvaiheessa (parsing) tarkistetaan varsinainen syntaktinen rakenne A Ohjelmointikielten periaatteet, Syntaksi ja semantiikka 9
10 III.2.3 Kielen kuvaus ja jäsentäminen (2) Esimerkki: C-kielen lause if( luku < 0) luku++; lekseemi if alkionimi erikoissana ( erikoissymboli luku tunniste < erikoissymboli 0 literaali ) erikoissymboli + operaattori ; erikoissymboli A Ohjelmointikielten periaatteet, Syntaksi ja semantiikka 10
11 III.2.3 Kielen kuvaus ja jäsentäminen (3) Kielen kuvauksessa tarvitaan metakieli Kuvaa kohdekieltä Erotettava metakielen ja kuvattavan kielen symbolit toisistaan BNF-kielioppi koostuu joukosta kielioppisääntöjä, joissa Vasemmalla puolella esiintyy ainoastaan määriteltävän rakenteen nimi, vasemman ja oikean puolen erotinmerkkinä toimii symboli ::= Oikealla puolella voi esiintyä symboleita ja rakenteen nimiä A Ohjelmointikielten periaatteet, Syntaksi ja semantiikka 11
12 III.2.3 Kielen kuvaus ja jäsentäminen (4) Rakenteiden nimet esitetään kulmasulkeiden sisällä (<rakenne>) Välisymboleita (nonterminaaleja), koska ne hajaantuvat edelleen pienempiin osiin. Lekseemit loppusymboleita (terminaaleja) Eivät hajaannu pienempiin osiin. Kielioppisääntöjä sanotaan myös produktioiksi Tuottavat kieleen kuuluvat merkkijonot johtamalla ne säännöistä A Ohjelmointikielten periaatteet, Syntaksi ja semantiikka 12
13 III.2.3 Kielen kuvaus ja jäsentäminen (5) Puhtaassa BNF:ssä ainoastaan seuraavat metasymbolit: < > ::= Kolme ylintä kuvattu aiemmin Symboli ilmaisee vaihtoehtoa: Symbolilla erotettuja termejä voidaan vaihtoehtoisesti käyttää johdossa A Ohjelmointikielten periaatteet, Syntaksi ja semantiikka 13
14 III.2.3 Kielen kuvaus ja jäsentäminen (6) Rakenteiden määrittelyssä rekursio sallittu Rakenne voi esiintyä sekä säännön oikealla että vasemmalla puolella Esimerkki <luku> ::= <luku><numero> <numero> <numero> ::= Määrittelee kymmenjärjestelmän etumerkittömät luvut Huomaa kuitenkin: esimerkiksi voidaan johtaa A Ohjelmointikielten periaatteet, Syntaksi ja semantiikka 14
15 III.2.3 Kielen kuvaus ja jäsentäminen (6) Laajennettu BNF (extended BNF, EBNF), lisätty metasymbolit [ ] { } [ ] sulkujen sisäisen lausekkeen vapaaehtoinen valinta {} sulkujen sisällä olevan lausekkeen esiintyminen 0 tai useampi kertaa A Ohjelmointikielten periaatteet, Syntaksi ja semantiikka 15
16 III.2.3 Kielen kuvaus ja jäsentäminen (7) Esimerkkejä EBNF:stä Määrittelyssä <sana> ::= x[y] sana voi olla x tai xy. Määrittelyssä <sana> ::= x{y} sana voi olla x, xy, xyy, xyyy, jne Lisäksi EBNF:ssä Käytetään sulkuja ryhmittelyyn Voidaan käyttää muita metasymboleita A Ohjelmointikielten periaatteet, Syntaksi ja semantiikka 16
17 III.2.3 Kielen kuvaus ja jäsentäminen (8) Esimerkki. C-kielen if-lause EBNF:llä: <if_stmt> ::= if(<expr>) <stmt>[else <stmt>]; Esimerkki sulkujen käytöstä metakielessä, Pascalin for lause: <for_stmt> ::= for <var> := <expr> (to downto) <expr> do <stmt>; Voidaan siis valita joko to tai downto lauseeseen A Ohjelmointikielten periaatteet, Syntaksi ja semantiikka 17
18 III.2.4. Lauseiden johtaminen Kielen kaikki syntaktisesti oikeat lauseet voidaan johtaa kielioppisäännöistä Lähdetään liikkeelle jostakin kieliopin säännöstä ja korvataan välisymboleja joillakin määrittelyillään BNF-kieliopissa kaikki vaihtoehtoiset määrittelyt sallitaan kaikissa yhteyksissä A Ohjelmointikielten periaatteet, Syntaksi ja semantiikka 18
19 III.2.4. Lauseiden johtaminen. Esimerkki Olkoon jossakin ohjelmointikielessä sijoituslause yhteenja kertolaskua sisältäville aritmeettisille operaatioille määritelty seuraavasti: <assign> ::= <id> = <expr> <id> ::= X Y Z <expr> ::= <id> + <expr> <id> * <expr> (<expr>) <id> Johda lause X = X * (Y+Z) A Ohjelmointikielten periaatteet, Syntaksi ja semantiikka 19
20 III.2.4. Lauseiden johtaminen. Esimerkki (2) Ratkaisu: <assign> -> <id> = <expr> -> X = <expr> -> X = <id>*<expr> -> X = X*<expr> -> X = X*(<expr>) -> X = X*(<id> + <expr>) -> X = X*(Y + <expr>) -> X = X*(Y + <id>) -> X = X*(Y + Z) *x++=*y++ <assign> ::= <id> = <expr> <id> ::= X Y Z <expr> ::= <id> + <expr> <id> * <expr> (<expr>) <id> Johda X = X*(Y + Z) A Ohjelmointikielten periaatteet, Syntaksi ja semantiikka 20
21 III.2.4. Lauseiden johtaminen. Esimerkki (3) *x++=*y++ Voidaan esittää graafisesti johtopuuna (parse tree) A Ohjelmointikielten periaatteet, Syntaksi ja semantiikka 21
22 III.2.5. Monikäsitteinen kielioppi Englanniksi ambiguous grammar Samalla lauseella useita erilaisia johtopuita HUOM! Vaikka kielioppi ei monikäsitteinen, lauseella yleensä useita johtoja, näitä kuitenkin vastaa sama johtopuu A Ohjelmointikielten periaatteet, Syntaksi ja semantiikka 22
23 III.2.5. Monikäsitteinen kielioppi. Esimerkki Muutetaan edellisen sijoituslauseen kielioppia: <assign> ::= <id> = <expr> <id> ::= X Y Z <expr> ::= <id> + <expr> <expr> * <expr> (<expr>) <id> *x++=*y++ Lauseella X = X + Y*Z kaksi johtopuuta -> saatiin monikäsitteinen kielioppi A Ohjelmointikielten periaatteet, Syntaksi ja semantiikka 23
24 III.2.5. Monikäsitteinen kielioppi. Haitat Kääntäjät pohjaavat yleensä semanttisen tulkinnan syntaktiseen muotoon -> monikäsitteisyys ongelmallista Edellisessä esimerkissä kielioppi ei kerro, suoritetaanko laskutoimitus X + Y*Z muodossa (X+Y)*Z vai X+(Y*Z) Jälkimmäinen tavallisten aritmeettisten sääntöjen nojalla oikein A Ohjelmointikielten periaatteet, Syntaksi ja semantiikka 24
25 III.3. Syntaksikaaviot BNF:n ja EBNF:n säännöt voidaan esittää graafisessa muodossa syntaksikaaviolla (syntax graph, syntax diagram, ratapihakaavio) Suunnattua polku, jossa loppusymbolit ja välisymbolit solmuja Loppusymbolit ovaaleihin ja välisymbolit suorakaiteisiin: Terminaali Nonterminaali A Ohjelmointikielten periaatteet, Syntaksi ja semantiikka 25
26 III.3. Syntaksikaaviot (2) Vaihtoehtoinen toiminto kirjoittamalla vaihtoehdot rinnakkain Esimerkiksi säännöt X1 X2 ja {YN} kirjoitetaan X1 X1 YN A Ohjelmointikielten periaatteet, Syntaksi ja semantiikka 26
27 III.3.1 Esimerkki. Pascalin case-lause Esimerkki Pascalin case lauseesta: CASE m OF 1,2: k:=2*m+1; 3,6: k:=3*m+1; 4: k:=4*m+1; 5,7,8: k:=2*m-1; END; A Ohjelmointikielten periaatteet, Syntaksi ja semantiikka 27
28 III.3.1 Esimerkki. Pascalin case-lause (2) BNF muodossa: <case_stmt> ::= CASE <expression> OF <case_list> [;] END <case_list> ::= {<const_list>: <stmt>;}<const_list>: <stmt> <const_list> ::= <const> {, <const>} A Ohjelmointikielten periaatteet, Syntaksi ja semantiikka 28
29 III.3.1 Esimerkki. Pascalin case-lause (3) *x++=*y++ Syntaksikaaviona: <case_stmt> ::= CASE <expression> OF <case_list> [;] END <case_list> ::= {<const_list>: <stmt>;}<const_list>: <stmt> <const_list> ::= <const> {, <const>} CASE expression OF const : stmt END, ; ; A Ohjelmointikielten periaatteet, Syntaksi ja semantiikka 29
30 III.3.1 Esimerkki. Pascalin case-lause (4) Huomaa kolme välisymbolia, joille tulisi myös antaa säännöt Graafisen esityksen etu: syntaksidiagrammia voidaan käyttää varsin suoraviivaisesti kirjoitettaessa jäsentäjä (parser, syntax analyzer) kieliopille A Ohjelmointikielten periaatteet, Syntaksi ja semantiikka 30
31 III.4. Jäsentäjät Ohjelmointikieli käännettävä, tulkattava tai hybridi Käännettävä kieli: kääntäjän (compiler) avulla konekielinen ohjelma, joka suoritetaan Tulkattava kieli: ohjelman ajaa erillinen tulkki (interpreter) suoraan koodista Hybridi: kääntäjä muodostaa ohjelmasta välimuodon, joka tulkataan Java on hybridikieli: alkuperäinen ohjelma käännetään tavukoodiksi, jonka JVM suorittaa A Ohjelmointikielten periaatteet, Syntaksi ja semantiikka 31
32 III.4. Jäsentäjät (2) Käännettävät kielet tarvitsevat jäsentäjän osana kääntäjää Jäsentäjän tehtävä: konstruoida syötteenä saamalleen ohjelmalle jäsennyspuu Yksinkertaisimmillaan vain syntaksin tarkastaja A Ohjelmointikielten periaatteet, Syntaksi ja semantiikka 32
33 III.4.1 Leksikaalinen analyysi Lähes aina kääntäjä jakaa syntaksianalyysin leksikaaliseen analyysiin ja varsinaiseen jäsentämiseen Leksikaalinen analyysi jäsentämisen esioperaatio Leksikaalinen analysoija pääasiassa hahmontunnistaja: poimii ohjelmasta lekseemit ja tunnistaa niiden tyypin Leksikaalista analyysiä ei käsitellä tarkemmin Periaatteessa melko yksinkertainen hahmontunnistus A Ohjelmointikielten periaatteet, Syntaksi ja semantiikka 33
34 III.4.2 Jäsentäjätyypit Tyypistä riippumatta jäsentäjät yleensä tutkivat vain yhden lekseemin kerrallaan eteenpäin Jäsentäjien kaksi pääluokkaa jäsennyspuun rakentamistavan mukaan : 1. Osittavat (ylätasolta lähtevät) jäsentäjät (topdown parsers) 2. Kokoavat (alatasolta lähtevät) jäsentäjät (bottom-up parsers) A Ohjelmointikielten periaatteet, Syntaksi ja semantiikka 34
35 III Osittavat jäsentäjät *x++=*y++ Etenevät puun juuresta lehtiin päin Päättelevät merkkijonon vasemmasta päästä lähtien, onko tutkittava lauseke loppu- vai välisymboli Redusoivat välisymbolit sovittaen ne sopivan kielioppisäännön vasemmaksi puoleksi Sanotaan LL-jäsennykseksi: syötettä luetaan vasemmalta oikealle ja tuotetaan vasen johto A Ohjelmointikielten periaatteet, Syntaksi ja semantiikka 35
36 III Kokoavat jäsentäjät Rakentavat jäsennyspuun lehdistä juureen Sovittavat käsiteltävän merkkijonon loppuosan jonkin kielioppisäännön oikeaan puoleen; tämä redusoidaan kyseisen säännön vasemmaksi puoleksi. Sanotaan LR-jäsennykseksi Ks. tarkemmin Sebestan luku A Ohjelmointikielten periaatteet, Syntaksi ja semantiikka 36
37 III.4.3 Rekursiivisesti etenevä jäsennysalgoritmi Recursive-descent parser Luonnollisin (top-down) jäsentäjä (E)BNF:n tai vastaavan syntaksikaavion avulla esitetylle kieliopille Jäsentäjässä kokoelma (yleensä rekursiivisia) funktioita, jotka tuottavat jäsennyspuun ylhäältä lähtien Tarvitaan: 1. leksikaalinen analysoija ja 2. jokaista kieliopin välisymbolia kohti oma funktio, joka käsittelee kyseisen välisymbolin A Ohjelmointikielten periaatteet, Syntaksi ja semantiikka 37
38 III.4.3 Rekursiivisesti etenevä jäsennysalgoritmi Varsin tehokas Rajoitus: kielioppisäännöt eivät saa sisältää vasemmanpuoleista rekursiota. Esimerkki: Säännön <expr> ::= <expr> + <term> <term> ::= muuntaminen jäsentäjäksi johtaisi seuraavaan ohjelmaan A Ohjelmointikielten periaatteet, Syntaksi ja semantiikka 38
39 PROGRAM_EXPR String sym; GetToken(); expr(); expr(){ expr(); GetToken(); if( sym == + ){ GetToken(); term(); } else{ error(); } } term(){ // Parse term } END PROGRAM_EXPR /* Ohjelma säännön <expr> ::= <expr> + <term> <term> ::= jäsentämiseksi */ A Ohjelmointikielten periaatteet, Syntaksi ja semantiikka 39
40 III.4.3 Rekursiivisesti etenevä jäsennysalgoritmi Oletettu, että käytössä leksikaalinen analysoija GetToken() Hakee lekseemin merkkijonoon sym Ohjelmassa kuitenkin päättymätön rekursio! Kielioppia muutettava, jos halutaan rakentaa rekursiivisesti laskeutuva jäsentäjä A Ohjelmointikielten periaatteet, Syntaksi ja semantiikka 40
41 III.5 Semantiikka Voidaan jakaa staattiseen ja dynaamiseen semantiikkaan Ainoastaan dynaaminen semantiikka varsinaista semantiikkaa eli ohjelmointikielen merkitysoppia Staattisen semantiikan ongelmat liittyvät ohjelmien sallittuun muotoon Muotoseikat, joita vaikea tai mahdoton kuvata BNF:llä Esimerkiksi vaatimus, että muuttuja on määriteltävä ennen arvon sijoittamista Nimitys siitä, että vaatimukset voidaan tarkistaa jo käännöksen aikana A Ohjelmointikielten periaatteet, Syntaksi ja semantiikka 41
42 III.5 Semantiikka (2) Ei ole yleisesti hyväksyttyä formaalia järjestelmää kuvaamaan ohjelmien merkitysoppia Yleensä konstruktioiden merkityksen kuvaaminen tapahtuu luonnollista kieltä käyttämällä A Ohjelmointikielten periaatteet, Syntaksi ja semantiikka 42
43 III.5.1. Dynaamisen semantiikan tyypit 1. Operationaalinen semantiikka 2. Aksiomaattinen semantiikka 3. Denotationaalinen semantiikka A Ohjelmointikielten periaatteet, Syntaksi ja semantiikka 43
44 III Operationaalinen semantiikka Pyrkii kuvaamaan annetun ohjelman merkityksen suorittamalla ohjelman joko reaalisessa tai virtuaalisessa tietokoneessa; koneen tilat ohjelman suorituksen aikana määrittelevät tällöin ohjelman merkityksen Formaalia operationaalista semantiikkaa käytettiin ohjelmointikielen PL/I merkitysopin kuvaamiseen Pohjautuu algoritmeihin Voi olla hyödyllinen tapa kuvata merkitysoppi kielen käyttäjille ja toteuttajille A Ohjelmointikielten periaatteet, Syntaksi ja semantiikka 44
45 III Aksiomaattinen semantiikka *x++=*y++ Käytetään todistamaan ohjelmien korrektisuutta Pohjautuu matemaattiseen logiikkaan Voi olla hyödyksi kun on todistettava aukottomasti ohjelman korrektius A Ohjelmointikielten periaatteet, Syntaksi ja semantiikka 45
46 III Denotationaalinen semantiikka Perustuu rekursiivisten funktioiden teoriaan Yleisesti katsotaan, että kuvaa käytettävistä menetelmistä tarkimmin ohjelmien merkitysopin Lähes mikä tahansa ohjelmointikielen piirre voidaan kuvata matemaattisen funktion avulla. Voidaan käyttää hyödyksi ohjelmointikielten suunnittelussa Ks. Tarkemmin Sebesta luku A Ohjelmointikielten periaatteet, Syntaksi ja semantiikka 46
Ohjelmointikielten syntaksista ja semantiikasta
Ohjelmointikielten syntaksista ja semantiikasta Tässä osassa esitellään käsitteet syntaksi ja semantiikka sekä tutustutaan ohjelmointikielen syntaksin kuvaamismenetelmiin. Esimerkiksi Sebestan ([Seb])
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ä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ätiedotOngelma(t): Miten jollakin korkeamman tason ohjelmointikielellä esitetty algoritmi saadaan suoritettua mikro-ohjelmoitavalla tietokoneella ja siinä
Ongelma(t): Miten jollakin korkeamman tason ohjelmointikielellä esitetty algoritmi saadaan suoritettua mikro-ohjelmoitavalla tietokoneella ja siinä olevilla komponenteilla? Voisiko jollakin ohjelmointikielellä
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ä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, 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ätiedot8. Kieliopit ja kielet
8. Kieliopit ja kielet Suomen kielen sanoja voidaan yhdistellä monella eri tavalla. Kielioppi määrää sen, milloin sanojen yhdistely antaa oikein muodostetun lauseen. "Mies räpyttää siipiään" on kieliopillisesti
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ä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ä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ä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ä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ä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ä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ä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ätiedot8. Kieliopit ja kielet 1 / 22
8. Kieliopit ja kielet 1 / 22 Luonnollinen kieli Suomen kielen sanoja voidaan yhdistellä monella eri tavalla. Kielioppi määrää sen, milloin sanojen yhdistely antaa oikein muodostetun lauseen. "Mies räpyttää
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ätiedotLuku 3. Syntaktisia kysymyksiä. 3.1 Lausekkeet
Luku 3 Syntaktisia kysymyksiä Syntaksi eli kielioppi käsittelee ohjelmien muodollista oikeellisuutta pohtimatta merkitysopillisia eli semanttisia kysymyksiä. Kieliopilliset ominaisuudet ovat (useimmiten)
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ä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ätiedotTIES542 kevät 2009 Denotaatio
TIES542 kevät 2009 Denotaatio Antti-Juhani Kaijanaho 27.1.2009 (korjauksia 28.1.2009) Denotationaalisessa merkitysopissa kukin (ohjelmointi)kielen konstrktiolle määritellään matemaattinen otus, jota sanotaan
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ä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ä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ä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ä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ätiedotPalautetta viime luennosta
Palautetta viime luennosta Kuka saa ja kenen täytyy suorittaa 5op kokonaisuus? Sivuaineopiskelijat suorittavat jos heidän sivuainekokonaisuuteen on merkitty niin Kokonaisuuksia on useita eri tiedekunnittain,
LisätiedotKontekstittomat jäsennysmenetelmät
Kontekstittomat jäsennysmenetelmät Yleistä, kontekstittomat kieliopit, kokoava ja osittava jäsentäminen Lili Aunimo lili.aunimo@helsinki.fi Helsingin yliopisto Kieliteknologia Lili Aunimo Kontekstittomat
LisätiedotELM GROUP 04. Teemu Laakso Henrik Talarmo
ELM GROUP 04 Teemu Laakso Henrik Talarmo 23. marraskuuta 2017 Sisältö 1 Johdanto 1 2 Ominaisuuksia 2 2.1 Muuttujat ja tietorakenteet...................... 2 2.2 Funktiot................................
Lisätiedot8.5. Jäsennyspuu 1 / 23
8.5. Jäsennyspuu 1 / 23 Kääntäminen ja BNF Ohjelmointikielten kuten Java, C++, Pascal, Fortran jne. syntaksi määritellään tyypillisesti BNF-muotoisilla säännöillä. Sääntöjä on usein satoja. Ohjelman kääntämisessä
Lisätiedottään painetussa ja käsin kirjoitetussa materiaalissa usein pienillä kreikkalaisilla
2.5. YDIN-HASKELL 19 tään painetussa ja käsin kirjoitetussa materiaalissa usein pienillä kreikkalaisilla kirjaimilla. Jos Γ ja ovat tyyppilausekkeita, niin Γ on tyyppilauseke. Nuoli kirjoitetaan koneella
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ätiedotSäännöllisten kielten sulkeumaominaisuudet
Säännöllisten kielten sulkeumaominaisuudet Osoitamme nyt, että säännöllisten kielten joukko on suljettu yhdisteen, konkatenaation ja tähtioperaation suhteen. Toisin sanoen jos A ja B ovat säännöllisiä,
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 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ätiedotRekursiiviset palautukset [HMU 9.3.1]
Rekursiiviset palautukset [HMU 9.3.1] Yleisesti sanomme, että ongelma P voidaan palauttaa ongelmaan Q, jos mistä tahansa ongelmalle Q annetusta ratkaisualgoritmista voidaan jotenkin muodostaa ongelmalle
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ä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ä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ä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ätiedotA274101 TIETORAKENTEET JA ALGORITMIT
A274101 TIETORAKENTEET JA ALGORITMIT PUURAKENTEET, BINÄÄRIPUU, TASAPAINOTETUT PUUT MIKÄ ON PUUTIETORAKENNE? Esim. Viereinen kuva esittää erästä puuta. Tietojenkäsittelytieteessä puut kasvavat alaspäin.
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ä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ä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ätiedotSisällys. 3. Pseudokoodi. Johdanto. Johdanto. Johdanto ja esimerkki. Pseudokoodi lauseina. Kommentointi ja sisentäminen.
Sisällys 3. Pseudokoodi Johdanto ja esimerkki. Pseudokoodi lauseina. Kommentointi ja sisentäminen. Ohjausrakenteet: Valinta if- ja if--rakenteilla. oisto while-, do-while- ja for-rakenteilla. 3.1 3.2 Johdanto
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. 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ä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ä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ätiedotAS-0.1103 C-ohjelmoinnin peruskurssi 2013: C-kieli käytännössä ja erot Pythoniin
AS-0.1103 C-ohjelmoinnin peruskurssi 2013: C-kieli käytännössä ja erot Pythoniin Raimo Nikkilä Aalto-yliopiston sähkötekniikan korkeakoulu - Automaation tietotekniikan tutkimusryhmä 17. tammikuuta 2013
LisätiedotTietueet. Tietueiden määrittely
Tietueet Tietueiden määrittely Tietue on tietorakenne, joka kokoaa yhteen eri tyyppistä tietoa yhdeksi asiakokonaisuudeksi. Tähän kokonaisuuteen voidaan viitata yhteisellä nimellä. Auttaa ohjelmoijaa järjestelemään
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ätiedotT Syksy 2004 Logiikka tietotekniikassa: perusteet Laskuharjoitus 7 (opetusmoniste, kappaleet )
T-79144 Syksy 2004 Logiikka tietotekniikassa: perusteet Laskuharjoitus 7 (opetusmoniste, kappaleet 11-22) 26 29102004 1 Ilmaise seuraavat lauseet predikaattilogiikalla: a) Jokin porteista on viallinen
LisätiedotRekursiiviset tyypit
Rekursiiviset tyypit TIES542 Ohjelmointikielten periaatteet, kevät 2007 Antti-Juhani Kaijanaho Jyväskylän yliopisto Tietotekniikan laitos 20. helmikuuta 2007 Hiloista Kiintopisteet (Ko)rekursio Rekursiiviset
Lisätiedot14.1 Rekursio tyypitetyssä lambda-kielessä
Luku 14 Rekursiiviset tyypit Edellisessä luvussa esitetyt tietue- ja varianttityypit eivät yksinään riitä kovin mielenkiintoisten tietorakenteiden toteuttamiseen. Useimmissa ohjelmissa tarvitaan erilaisia
Lisätiedot811120P Diskreetit rakenteet
811120P Diskreetit rakenteet 2016-2017 1. Algoritmeista 1.1 Algoritmin käsite Algoritmi keskeinen laskennassa Määrittelee prosessin, joka suorittaa annetun tehtävän Esimerkiksi Nimien järjestäminen aakkosjärjestykseen
LisätiedotAlgoritmit 1. Luento 3 Ti Timo Männikkö
Algoritmit 1 Luento 3 Ti 17.1.2017 Timo Männikkö Luento 3 Algoritmin analysointi Rekursio Lomituslajittelu Aikavaativuus Tietorakenteet Pino Algoritmit 1 Kevät 2017 Luento 3 Ti 17.1.2017 2/27 Algoritmien
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ätiedot4. Lausekielinen ohjelmointi 4.1
4. Lausekielinen ohjelmointi 4.1 Sisällys Konekieli, symbolinen konekieli ja lausekieli. Hyvä ohjelmointitapa. Lausekielestä konekieleksi: - Lähdekoodi, tekstitiedosto ja tekstieditorit. - Kääntäminen
LisätiedotALKEIS-kielen semantiikan aksiomaattinen määrittely
ALKEIS-kielen semantiikan aksiomaattinen määrittely Antti Jokipii antti.jokipii@republica.fi Antti Vuorenmaa anvuoren@cc.jyu.fi Eero Lempinen eerolem@cc.jyu.fi Pete Räsänen peter@cc.jyu.fi Tiivistelmä
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ä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ätiedotAlgebralliset tietotyypit ym. TIEA341 Funktio ohjelmointi 1 Syksy 2005
Algebralliset tietotyypit ym. TIEA341 Funktio ohjelmointi 1 Syksy 2005 Tällä luennolla Algebralliset tietotyypit Hahmonsovitus (pattern matching) Primitiivirekursio Esimerkkinä binäärinen hakupuu Muistattehan...
Lisätiedot4. Lausekielinen ohjelmointi 4.1
4. Lausekielinen ohjelmointi 4.1 Sisällys Konekieli, symbolinen konekieli ja lausekieli. Lausekielestä konekieleksi: - Lähdekoodi, tekstitiedosto ja tekstieditorit. - Kääntäminen ja tulkinta. - Kääntäminen,
LisätiedotLisää pysähtymisaiheisia ongelmia
Lisää pysähtymisaiheisia ongelmia Lause: Pysähtymättömyysongelma H missä H = { w111x w validi koodi, M w ei pysähdy syötteellä x } ei ole rekursiivisesti lueteltava. Todistus: Pysähtymisongelman komplementti
LisätiedotKielenä ilmaisten Hilbertin kymmenes ongelma on D = { p p on polynomi, jolla on kokonaislukujuuri }
135 4.3 Algoritmeista Churchin ja Turingin formuloinnit laskennalle syntyivät Hilbertin vuonna 1900 esittämän kymmenennen ongelman seurauksena Oleellisesti Hilbert pyysi algoritmia polynomin kokonaislukujuuren
LisätiedotKoottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet suoritetaan peräkkäin.
2. Ohjausrakenteet Ohjausrakenteiden avulla ohjataan ohjelman suoritusta. peräkkäisyys valinta toisto Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet
LisätiedotRekursiolause. Laskennan teorian opintopiiri. Sebastian Björkqvist. 23. helmikuuta Tiivistelmä
Rekursiolause Laskennan teorian opintopiiri Sebastian Björkqvist 23. helmikuuta 2014 Tiivistelmä Työssä käydään läpi itsereplikoituvien ohjelmien toimintaa sekä esitetään ja todistetaan rekursiolause,
Lisätiedot811120P Diskreetit rakenteet
811120P Diskreetit rakenteet 2018-2019 1. Algoritmeista 1.1 Algoritmin käsite Algoritmi keskeinen laskennassa Määrittelee prosessin, joka suorittaa annetun tehtävän Esimerkiksi Nimien järjestäminen aakkosjärjestykseen
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ä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ä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ä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ä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ätiedotTäydentäviä muistiinpanoja laskennan rajoista
Täydentäviä muistiinpanoja laskennan rajoista Antti-Juhani Kaijanaho 10. joulukuuta 2015 1 Diagonaalikieli Diagonaalikieli on D = { k {0, 1} k L(M k ) }. Lause 1. Päätösongelma Onko k {0, 1} sellaisen
LisätiedotOhjelmoinnin peruskurssien laaja oppimäärä
Ohjelmoinnin peruskurssien laaja oppimäärä Luento 8: Pienen ohjelmointikielen tulkki (ohjelmoitava laskin) (mm. SICP 4-4.1.5 osin) Riku Saikkonen 15. 11. 2012 Sisältö 1 Nelilaskintulkki, globaalit muuttujat
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ätiedotJos sekaannuksen vaaraa ei ole, samastamme säännöllisen lausekkeen ja sen esittämän kielen (eli kirjoitamme R vaikka tarkoitammekin L(R)).
Jos sekaannuksen vaaraa ei ole, samastamme säännöllisen lausekkeen ja sen esittämän kielen (eli kirjoitamme R vaikka tarkoitammekin L(R)). Esimerkkejä: Σ koostuu kaikista aakkoston Σ merkkijonoista ja
LisätiedotAutomaatit. Muodolliset kielet
Automaatit Automaatit ovat teoreettisia koneita, jotka käsittelevät muodollisia sanoja. Automaatti lukee muodollisen sanan kirjain kerrallaan, vasemmalta oikealle, ja joko hyväksyy tai hylkää sanan. Täten
LisätiedotHaskell ohjelmointikielen tyyppijärjestelmä
Haskell ohjelmointikielen tyyppijärjestelmä Sakari Jokinen Helsinki 19. huhtikuuta 2004 Ohjelmointikielten perusteet - seminaarityö HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos 1 Johdanto 1 Tyyppien
Lisätiedot815338A Ohjelmointikielten periaatteet 2014-2015
815338A Ohjelmointikielten periaatteet 2014-2015 X Skriptiohjelmointi Sisältö 1. Johdanto 2. Skriptikielten yleispiirteitä 3. Python 815338A Ohjelmointikielten periaatteet, Skriptiohjelmointi 2 X.1 Johdanto
LisätiedotTietojenkäsittelyteorian alkeet, osa 2
TIEA241 Automaatit ja kieliopit, syksy 2016 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 12. syyskuuta 2016 Sisällys vs Ovat eri asioita! Älä sekoita niitä. Funktiot Funktio f luokasta A luokkaan B, merkitään
LisätiedotTuringin koneen laajennuksia
Turingin koneen laajennuksia Turingin koneen määritelmään voidaan tehdä erilaisia muutoksia siten että edelleen voidaan tunnistaa tasan sama luokka kieliä. Moniuraiset Turingin koneet: nauha jakautuu k
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ätiedotEhto- ja toistolauseet
Ehto- ja toistolauseet 1 Ehto- ja toistolauseet Uutena asiana opetellaan ohjelmointilauseet / rakenteet, jotka mahdollistavat: Päätösten tekemisen ohjelman suorituksen aikana (esim. kyllä/ei) Samoja lauseiden
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ä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ä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ätiedotInteraktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta.
Malli-näkym kymä-ohjain arkkitehtuurit (Model-View View-Controller, MVC) Interaktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta. Lähtökohdat: Sovelluksen
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ä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, 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ätiedotTietorakenteet ja algoritmit - syksy 2015 1
Tietorakenteet ja algoritmit - syksy 2015 1 Tietorakenteet ja algoritmit - syksy 2015 2 Tietorakenteet ja algoritmit Johdanto Ari Korhonen Tietorakenteet ja algoritmit - syksy 2015 1. JOHDANTO 1.1 Määritelmiä
LisätiedotMS-A0402 Diskreetin matematiikan perusteet
MS-A040 Diskreetin matematiikan perusteet Osa : Relaatiot ja funktiot Riikka Kangaslampi 017 Matematiikan ja systeemianalyysin laitos Aalto-yliopisto Relaatiot Relaatio Määritelmä 1 Relaatio joukosta A
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ätiedotLaskennan mallit (syksy 2010) Harjoitus 4, ratkaisuja
582206 Laskennan mallit (syksy 2010) Harjoitus 4, ratkaisuja 1. Esitä tilakaaviona NFA N = (Q, Σ, δ, q 0, F ), missä Q = { q 0, q 1, q 2, q 3, q 4, q 5, q 6, q 7 }, Σ = { a, b, c }, F = { q 4 } ja δ on
LisätiedotKielioppia: toisin kuin Javassa
Object Pascal Pascal kielen oliolaajennus (Inprise/Borland:n oma) luokat Voit uudelleenkäyttää luomiasi objekteja esim. komponentteja Periytyminen Kielioppia: toisin kuin Javassa Ei eroa isojen ja pienien
Lisätiedot