Luku 3. Syntaktisia kysymyksiä. 3.1 Lausekkeet
|
|
- Risto Niemi
- 6 vuotta sitten
- Katselukertoja:
Transkriptio
1 Luku 3 Syntaktisia kysymyksiä Syntaksi eli kielioppi käsittelee ohjelmien muodollista oikeellisuutta pohtimatta merkitysopillisia eli semanttisia kysymyksiä. Kieliopilliset ominaisuudet ovat (useimmiten) staattisia. 3.1 Lausekkeet Ehkä mullistavin ero toisen ja kolmannen ohjelmointikielisukupolvien siis symbolisen konekielen ja tavanomaisen (imperatiivisen) ohjelmointikielen välillä on siinä, miten laskutoimitukset voidaan niissä ilmaista. Symbolisessa konekielessä laskentakäskyt ovat tyypillisesti muotoa ota luku muistipaikasta A, ota toinen luku muistipaikasta B ja tallenna niiden summa muistipaikkaan C. Ohjelmoijaparan epäkiitolliseksi tehtäväksi tulee siten paitsi itse laskutehtävän määritteleminen myös sen pilkkominen yksinkertaisiin osiin. Esimerkiksi hypotenuusan pituuden laskeminen c a 2 + b 2 joudutaan kirjoittamaan symbolisella konekielellä tyyliin t 1 a a t 2 b b t 3 t 1 + t 2 c t 3 Tässä nuoli vasemmalle ilmaisee muuttujaan sijoittamista. Toki jokaisella konekielellä on omat erityispiirteensä, ja kullakin konekielellä koodi näyttäisi huomattavastikin erilaiselta kuin yllä, mutta ylläolevassa tulee olennainen esille. Kun vielä tyypillisessä konekielessä nopeiden muistipaikkojen eli rekisterien määrä on erittäin rajallinen (vanhoissa koneissa muuta- 31
2 32 LUKU 3. SYNTAKTISIA KYSYMYKSIÄ ma, Intelin 32-bittisissä puolisen tusinaa, parhaissa muutama kymmenen) ja tyypillisessä ohjelmassa tällaista laskentaa harjoitetaan jatkuvasti, kasvavat ohjelmoijan työmäärä, turhaumat ja virhealttius merkittävästi. Monet varhaiset ohjelmointikielet eivät olleet juuri sen kummallisempia kuin symbolisten konekielten yksinkertaisia laajennuksia, joissa ohjelmoija saattoi kirjoittaa sijoituskäskyn oikealle puolelle kohtuullisen monimutkaisen aritmeettisen laskutehtävän. Vielä tänäkin päivänä tuki tällaisille lausekkeille (engl. expressions) on ohjelmointikielen yksi tärkeimmistä (mutta helposti huomaamatta jäävistä) tehtävistä. Maailman vanhimman korkean tason ohjelmointikielen nimi on FORTRAN, formula translator, syystä. Sallittujen lausekkeiden joukko riippuu kielestä. Käytännössä kaikki ohjelmointikielet tukevat ainakin tavallisia aritmeettisia lausekkeita: 1. Lukuvakio on aritmeettinen lauseke. 2. Muuttuja, joka on nykyisessä ympäristösssä sidottu lukuarvoon, on aritmeettinen lauseke. 3. Jos e ja e ovat aritmeettisia lausekkeita, niin e + e, e e, e e ja e/e ovat aritmeettisia lausekkeita. 4. Jos e on aritmeettinen lauseke, niin sekä e että (e) ovat aritmeettisia lausekkeita. Yllä esitetyt lauseketyypit voidaan jaotella primäärilausekkeisiin (engl. primary expressions) unaarilausekkeisiin (engl. unary expressions) binäärilausekkeisiin (engl. binary expressions) Primäärilausekkeita ovat sulkulausekkeet (e) sekä muut sellaiset lausekkeet, jotka eivät ala tai pääty (osa)lausekkeella, yleensä ainakin lukuvakiot ja muuttujat lausekkeiksi tulkittuina. Unaarilausekkeet jäsentyvät (yleensä) siten, että niissä on ensin jokin operaattori ja sitten alilauseke (operandi); siispä unaarilausekkeet ovat muotoa e, missä operaattori on ja operandi on e. Myös sellaisia unaarilausekkeita voi esiintyä, joissa operaattori tulee operandin perässä. Binäärilausekkeet alkavat alilausekkeella (vasen operandi), jonka jälkeen tulee operaattori (+,, tai /) ja lopuksi toinen alilauseke (oikea operandi). Tällaista lauseketta, jossa binäärinen operaattori sijaitsee operandiensa välissä, sanotaan infix-lausekkeeksi. Näin tosin ei ole aina aivan
3 3.1. LAUSEKKEET 33 (unaarinen) / + Taulukko 3.1: Tavanomaisten aritmeettisten operaattoreiden normaali presedenssirelaatio selvää, miten lauseke pitäisi ymmärtää. Esimerkki tällaisesta moniselitteisestä (engl. ambiguous) lausekkeesta on : pitääkö se ymmärtää samoin kuin (1 + 2) 3 vai kenties samoin kuin 1 + (2 3)? Jo muinaiset matemaatikot tiesivät tähän ratkaisun: pitää määritellä, mikä on eri operaattoreiden presedenssi (engl. precedence) ja assosiatiivisuus (engl. associativity). Jos tarkasteltavana on lauseke muotoa e e e, missä operaattorilla on korkeampi presedenssi kuin operaattorilla, lausekkeen sovitaan tarkoittavan (e e ) e ; jos taas operaattorilla on matalampi presedenssi kuin operaattorilla, lausekkeen sovitaan tarkoittavan e (e e ). Jos operaattoreilla ja on sama presedenssi, niin lausekkeen tulkinta riippuu niiden assosiatiivisuudesta. Jos molemmat operaattorit assosioituvat vasemmalle (engl. associate to the left), lauseke tulkitaan (e e ) e, ja jos molemmat assosioituvat oikealle (engl. associate to the right), lauseke tulkitaan e (e e ). Jos ne assosioituvat eri suuntaan tai ainakaan toinen ei assosioidu lainkaan, lausekkeen todetaan olevan kielen sääntöjen vastainen. Jos sama operaattori voi esiintyä sekä unaarisena että binäärisenä (esimerkiksi ), tulee sen unaarinen ja binäärinen versio pitää erillään; niillä on yleensä eri presedenssi. Presedenssi- ja assosiointisäännöt vaihtelevat kielestä toiseen. Yleensä on järkevää, että matematiikasta tutut aritmeettiset operaattorit (esimerkiksi yhteen-, vähennys-, kerto- ja vähennyslaskuoperaattorit sekä vastalukuoperaattori) noudattavat matematiikasta tuttua presedenssiä: vastalukuoperaattorilla (unaarinen ) on korkeampi presedenssi kuin kerto- ja jakolaskuoperaattoreilla, joilla puolestaan on korkeampi presedenssi kuin yhteen- ja vähennyslaskuoperaattoreilla. Kerto- ja jakolaskuoperaattoreilla on sama presedenssi, ja samoin yhteen- ja vähennyslaskuoperaattoreilla on sama presedenssi. Kaikki nämä operaattorit assosioituvat vasemmalle paitsi vastalukuoperaattori, joka assosioituu oikealle. Presedenssi muodostaa operaattoreiden välille osittaisjärjestyksen. Tavallisesti kuitenkin presedenssirelaatio on täydellinen järjestys ja se esitetään tavallisesti taulukkona. Mitä korkeampi presendenssi operaattorilla on, sitä korkeammalla se on taulukossa. Edellä esitetyt tavanomaiset presedenssisäännöt on esitetty taulukossa 3.1.
4 34 LUKU 3. SYNTAKTISIA KYSYMYKSIÄ / Kuva 3.1: Lausekkeen (2 + 3) 6 7/8 rakennepuu Kannattaa huomata, että presedenssi ja assosiatiivisuus eivät määrittele laskujärjestystä vaan jäsennyksen, vaikka toisin usein ajatellaankin. Esimerkiksi lausekkeessa voidaan laskea ensin 2 + 3, vaikka koulussa opetettiinkin, että kertolasku lasketaan ensin. Vaikka infix-lausekkeet ovatkin kaikista tutuimpia, eivät ne ole ainoat mahdollisuudet. Voidaan esimerkiksi käyttää ns. puolalaisia (engl. Polish) eli prefix-lausekkeita, joissa operaattori tulee aina ensin ja vasta sitten operandit. Tämän esitystavan etu on, että sulkuja tai presedenssi- ja assosiatiivisuussääntöjä ei tarvita, jos operaattorien operandimäärä on kiinteä (eli jos sama operaattori ei ole sekä unaarinen että binäärinen): tarkoittaa yksiselitteisesti samaa kuin infix-lauseke (2 3) + (4 5). Vastaavasti voidaan käyttää käänteisesti puolalaisia (engl. reverse Polish) eli postfix-lausekkeita, joissa operaattori tulee operandien jälkeen. Tuo sama lauseke olisi postfix-lausekkeena Postfix-lausekkeet ovat käytössä Forth- ja Postscript-kielissä. Prefix-lausekkeiden muunnelma, ns. Cambridgen-puolalainen lauseketyyppi, jossa operaattorit tulevat aina operandien edellä mutta lausekkeiden ympärillä on aina sulut, on käytössä Lisp-sukuisissa kielissä. Lausekkeita ei kannata ajatella merkkijonoina vaan puina (rakennepuu, (engl. structural tree) tai abstract syntax tree). Rakennepuissa operaattorit ovat sisäsolmuja ja operandit ovat operaattorinsa alipuita. Puun lehdet muodostuvat muuttujista ja lukuvakioista. Tällöin infix-, prefix- ja postfixesitystavat ovat vain vaihtoehtoisia tapoja kirjoittaa sama lauseke merkkijonoksi. Eräs rakennepuu on kuvattu kuvassa 3.1.
5 3.2. FORMAALI KIELIOPPI Formaali kielioppi Ohjelmointikielten konkreetti ja abstrakti kielioppi määritellään yleensä täsmällisesti yhteydettömien kielioppien (context-free grammars) avulla. Abstrakti kielioppi ilmaistaan tavallisesti puhtaasti muunnossäntöinä (rewrite rules, productions): E E + E E E E E E/E L Tässä E ja L ovat välikesymboleja (nonterminal symbols) ja +,, ja / ovat päätesymboleja (terminal symbols). Välikesymboli L edustaa literaalisanasta, jonka rakennetta ei ole tässä kuvattu. Tärkeää tässä on huomata, että tämä kielioppi on moniselitteinen (ambiguous) se ei kelpaisi merkkijonon jäsentämiseen. Siihen se ei ole tarkoitettukaan: tämä kielioppi on abstrakti, se kuvailee nelilaskimen lausekkeiden oleelliset osat, ei kaikkea sitä, jota niiden kirjoittamiseen merkkijonona tarvitaan. Oikeastaan abstrakti kielioppi kuvaa rakennepuita merkkijonoina. Abstraktilla kieliopilla on mukava algebrallinen tulkinta: kukin kieliopin produktio määrittelee abstraktin operaattorin, ja kieliopin määrittelemälle operaattoristolle voidaan sitten määritellä erilaisia tulkintoja määrittelemällä operaattoristolle algebroja. Sattumoisin myös kyseiselle abstraktille kieliopille määritellyt konkreetit kieliopit voidaan tulkita algebroiksi (ns. initiaalialgebrat). Tämän tulkinnan johdosta Gougen ja kumppanit (1977) esittivätkin varsin näppärän, mutta abstraktin, määritelmän abstraktille syntaksille: kielen abstrakti syntaksi on kaikki kielen initiaalialgebrat tulkittuna (isomorfisuuden nojalla) samaksi vekottimeksi. Tämän lähestymistavan tarkempi kuvaus ei kuitenkaan kuulu tämän kurssin ydinsisältöön ja siksi sivuutetaan. Edellä esitetyn abstraktin kieliopin konkreetti kielioppi on yksiselitteinen ja varsin sotkuinen:
6 36 LUKU 3. SYNTAKTISIA KYSYMYKSIÄ E T E + T E T T F T F T/F F L (E) Edellä käytettyjen merkintöjen lisäksi tässä esiintyy kaksi uutta välikesymbolia (T ja F) seka kaksi uutta päätemerkkiä (aaltosulkeet). Konkreetti kielioppi ilmaistaan yleensä käyttäen John Backusin ja 1960-lukujen vaihteessa kehittämää merkintätapaa, jonkaa Peter Naur popularisoi Algol 60:n määrittelydokumentissa. Tätä muotoa kutsutaan Backusia ja Nauria kunnioittaen BNF:ksi (Backus Naur form). BNF:llä ilmaistuna ylläoleva kielioppi kirjoitetaan seuraavasti: Expression ::= Term Expression + Term Expression Term Term ::= Factor Term Factor Term / Factor Factor ::= Literal ( Expression ) Varsinaisen BNF:n sijasta usein käytetään jotain sen muunnelmaa. ISO ja IEC standardoivat vuonna 1996 BNF:N laajennetun version eli EBNF:n (ISO/IEC 14977). EBNF laajentaa BNF:ää lisäämällä siihen tuen valinnaisuuden, toiston, ryhmittelyn, määräkertaisen toiston ja poikkeustapausten ilmaisemiseen. EBNF sallii välikesymbolin koostua useammasta sanasta. Lisäksi EBNF sallii kommenttien lisäämisen kieliopin kuvaukseen. Internet-protokollien määrittelyissä käytetty BNF:n muunnelma (Augmented BNF eli ABNF) on myös standardoitu: RFC on syntaktisen metakielen Internet-standardi. Konkreetin kieliopin voi ajatella kuvaukseksi, joka kuvaa merkkijonoja (tai sanasjonoja) järjestetyiksi puiksi. Näiden puiden sisäsolmut ovat välikesymboleita ja lehtisolmut päätemerkkejä (sanasia). Tällaisesta ns. jäsennyspuusta (parse tree) voidaan lukea koko merkkijono (sanasjono) käymällä puu läpi järjestyksessä ja merkitsemällä kukin kohdattu lehtisolmu ylös. 1
7 3.2. FORMAALI KIELIOPPI 37 Kunkin (epätriviaalin) alipuun juuri (joka on alkuperäisen puun sisäsolmu) kertoo, mitä välikesymbolia kyseinen puu vastaa. Kuvassa 3.2 kuvataan erään aritmeettisen lausekkeen jäsennyspuu edellä annetun konkreetin kieliopin mukaan.
8 38 LUKU 3. SYNTAKTISIA KYSYMYKSIÄ L F T E E L F T L F T L F F T T E E T L F ( ) 6 8 / 7 Kuva 3.2: Lausekkeen (2 + 3) 6 7/8 jäsennyspuu sivulla 36 annetun konkreetin kieliopin mukaan
9 Luku 4 Denotationaalinen semantiikka Ohjelmointikielten syntaksi on osattu määritellä täsmällisesti jo 1950-luvun lopulta alkaen, mutta merkitysopin kanssa on ollut enemmän ongelmia. Yksinkertaisin formaalin merkitysopin menetelmä, denotationaalinen merkitysoppi, on peräisin 1970-luvulta. Denotationaalisessa merkitysopissa kullekin (ohjelmointi)kielen konstrktiolle määritellään matemaattinen otus, jota sanotaan kyseisen konstruktion tarkoitukseksi (engl. denotation). Ajatuksena on antaa kielelle sisältö, joka on riippumaton mistään konkreetista (taikka abstraktista) tietokoneesta. Keskeinen lähtökohta on seuraava ns. kompositionaalisuusvaatimus: Ohjelmointikielen konstruktion tarkoitus saa riippua vain sen osien tarkoituksesta. Denotationaalisen merkitysopin alulle panevana voimana oli toisaalta Christopher Stracheyn ohjelmointikielen periaatteiden pohdinta (Strachey, 2000) sekä toisaalta laskennan teorian alan erään ongelman (lambdalaskennon merkitysoppi) ratkaiseminen. Ratkaisevaa oli Dana Scottin alueteorian (engl. domain theory) kehittyminen. Denotationaalisesta merkityopista ks. tarkemmin esimerkiksi Allison (1986) taikka Reynolds (1998) 4.1 Perusidea Denotationaalista merkitysoppia sovellettaessa on tapana käyttää erityisiä sulkeita (semanttiset sulkeet, semantic brackets) kohdekielen erottamiseen metakielestä. Niitä käytettäessä on hyvä noudattaa seuraavaa kahta nyrkkisääntöä: 1. Semanttisten sulkeiden sisällä oleva ilmaisu on aina kohdekieltä. 39
10 40 LUKU 4. DENOTATIONAALINEN SEMANTIIKKA 2. Semanttisten sulkeiden sisällä esiintyvä muuttuja on kuitenkin yleensä ns. metamuuttuja (engl. metavariable) ei siis kohdekielen muuttuja, vaan se edustaa jotakin kohdekielen ilmaisua. Näinpä esimerkiksi int v; edustaa C-kielistä kokonaislukumuuttujan v esittelyä (missa v on tuntematon tai kontekstista määrittyvä muuttujan nimi). Määritelläänpä harjoituksen vuoksi yksinkertaisen kielen denotationaalinen merkitysoppi. Tässä kielessä ei ole mitään muuta kuin aritmeettiset lausekkeet, joten abstrakti syntaksi on yksinkertainen: c N e, f, g Expr e, f, g ::= c e e + f e f e f Määrittelyn ensimmäinen rivi kertoo, että nonterminaali c edustaa luonnollisten lukujen kieltä (siis kokonaislukuvakioita). Sen täsmällinen määrittely jätetään avoimeksi, koska se toisaalta oletetaan tunnetuksi ja toisaalta sen täsmällinen määrittely ei olisi mielenkiintoista. Määrittelyn toinen rivi tarkoittaa, että nonterminaalit e, f ja g määrittelevät saman kielen (joukon merkkijonoja taikka joukon rakennepuita taikka... ), ja kielen nimi on Expr. Loput rivit määrittelevät kyseisen kielen abstraktin kieliopin. Tämän kielen denotationaalinen merkitysoppi voitaisiin esittää vaikkapa näin: E : Expr Q E c = c (4.1) E e = E e (4.2) E e + f = E e + E f (4.3) E e f = E e E f (4.4) E e f = E e E f (4.5) Tässä määritellään semanttinen funktio E : Expr Q paloittain ja rekursiivisesti. Semanttisen funktion määritteleminen paloittain ja rekursiivisesti vaatii seuraavien ehtojen täyttymisen:
11 4.2. MUUTTUJAT Määrittelyssä tulee olla täsmälleen yksi yhtälö jokaista abstraktin kieliopin produktiota ja jokaista määriteltävänä olevaa semanttista funktiota kohti. 2. Kussakin yhtälössä on vasemman puolen oltava määriteltävänä olevan semanttisen funktion kutsu, jossa semanttisten sulkeiden sisällä esiintyy kyseisen produktion oikea puoli sellaisenaan (nonterminaaleista tulee näin metamuuttujia 1 ). 3. Kussakin yhtälössä oikealla puolella saadaan kutsua määriteltävänä olevaa semanttista funktiota vain siten, että semanttisten sulkeiden sisällä on jokin vasemmalla puolella esiintyvä (meta)muuttuja. Yllä annettu määritelmä täyttää nämä ehdot. Määritelmää soveltamalla voidaan selvittää lausekkeen (esimerkiksi ) arvo: E = E E 4 yhtälö (4.3) = E yhtälö (4.1) = E 2 + E yhtälö (4.3) = E yhtälö (4.1) = yhtälö (4.1) = 9 aritmetiikka 4.2 Muuttujat Tilanne monimutkaistuu hieman, jos kielessä on muuttujia: c N x, y, z Var e, f, g Expr e, f, g ::= c x e e + f e f e f 1 Jos produktion oikealla puolella esiintyy sama nonterminaali useampaan kertaan, erotellaan sen esiintymät toisistaan antamalla niille eri nimet esimerkiksi alaindeksoinnin avulla.
12 42 LUKU 4. DENOTATIONAALINEN SEMANTIIKKA Tällöin semanttinen funktio ei voi kuvata lausekkeita suoraan arvoiksi, vaan lausekkeiden arvo riippuu muuttujilla lausekkeen ympäristössä olevasta arvoista. Ympäristö voidaan mallittaa yksinkertaisesti osittaisfunktiona muuttujilta arvoille. Ongelmaksi tosin muodostuu se, mitä tehdään, jos ympäristö ei ole määritelty jollekin tietylle muuttujalle, mutta ratkaistaan se tässä nyt hieman fuskaten: sovitaan, että määrittelemättömien muuttujien arvo on 0. Tämän jälkeen määrittely onkin jo helppoa: Env = Var Q E : Expr Env Q E c σ = c (4.6) { 0 jos σ( x ) E x σ = (4.7) σ( x ) muuten E e σ = E e σ (4.8) E e + f σ = E e σ + E f σ (4.9) E e f σ = E e σ E f σ (4.10) E e f σ = E e σ E f σ (4.11) Näissä yhtälöissä on käytetty Gottlob Fregen ja Moses Schönfinkelin pioneroimaa tapaa, jossa funktion paluuarvo on toinen funktio. Tässä ajattelutavassa funktionuoli assosioi oikealle, joten Expr Env Q tarkoittaa samaa kuin Expr (Env Q). Funktion kutsu puolestaan assosioi vasemmalle, joten E c σ tarkoittaa samaa kuin (E c )σ (eli perinteisemmin ilmaistuna E( c )(σ)). Vaikka tämä temppu onkin Fregen ja Schönfinkelin keksimä, siitä käytetään tavallisesti englannin kielen termiä currying idean popularisoijan, Haskell Curryn, mukaan. Lasketaan nyt esimerkin vuoksi lausekkeen x + y + 2 arvo ympäristössä σ = {( x, 1)}: E x + y + 2 σ = E x + y σ + E 2 σ yhtälö (4.9) = E x + y σ + 2 yhtälö (4.6) = E x σ + E y σ + 2 yhtälö (4.9) = E x σ yhtälö (4.7), σ( y ) = yhtälö (4.7), σ( x ) = 1 = 3 aritmetiikka
13 4.3. SUORAVIIVAOHJELMAT Suoraviivaohjelmat Suoraviivaohjelmat koostuvat peräkkäin laitetuista sijoituslauseista sekä siirräntäkäskyistä (jotka tässä vaiheessa vielä jätetään huomiotta). Mitään hyppy-, ehto- tai silmukkarakenteita saatikka aliohjelmakutsuja suoraviivaohjelmissa ei ole. Niinpä voimme määritellä suoraviivaohjelmien abstraktin kieliopin seuraavasti: c N x, y, z Var e, f, g Expr s, t Stmt s, t ::= x e s ; t Lausekkeet on käsitelty edellä, joten niistä ei tässä tarvitse sanoa enempää. Suoraviivaohjelman lauseet eivät palauta arvoja, vaan niillä on sivuvaikutuksia (engl. side-effects). Ainoa sivuvaikutus, joka on tässä tilanteessa mahdollinen, on muuttujan arvon muuttuminen. Kun edellä muuttujien arvo määräytyy ympäristön (Env) perusteella, on lauseen muutettava ympäristöä. Näin ollen lauseen semanttinen tulkinta on kuvaus ympäristöltä ympäristölle: C : Stmt Env Env C x e σ = σ {( x, E e σ)} (4.12) C s ; t σ = C t (C s σ) (4.13) Tässä operaattori määritellään seuraavasti: { (r r r(x) )(x) = r (x) jos r (x) muuten. Lasketaanpa, mikä on muuttujan x arvo ohjelman y 1; x y suori-
14 44 LUKU 4. DENOTATIONAALINEN SEMANTIIKKA tuksen jälkeen (tyhjässä alkuympäristössä): (C y 1; x y )( x ) = (C x y (C y 1 ))( x ) yhtälö (4.13) = (C x y ( {( y, E 1 )}))( x ) yhtälö (4.12) = (C x y ( {( y, 1)}))( x ) yhtälö (4.6) = (C x y {( y, 1)})( x ) :n määritelmä = ({( y, 1)} {( x, E y {( y, 1)})})( x ) yhtälö (4.12) = {( y, 1), ( x, E y {( y, 1)})}( x ) :n määritelmä = {( y, 1), ( x, 1)}( x ) yhtälö (4.7), = 1 {( y, 1)}(y) = Paikalliset muuttujat Muuttuja on paikallinen, jos se on näkyvissä vain tietyssä yhtenäisessä osassa ohjelmaa. Paikalliset muuttujat ovat suoraviivaohjelmissa varsin hyödyttömiä, mutta toisaalta niiden mallittaminen denotationaalisesti on selkeintä tehdä näin yksinkertaisessa kielessä. Ensiksi abstrakti kielioppi: c N x, y, z Var e, f, g Expr s, t Stmt s, t ::= x e s ; t { d ; s } d LocalDecl d ::= my x = e d ; d Denotationaalista semantiikkaa kirjoitettaessa hieman sotkua aiheuttaa lausekkeen laskemisessa tarvittavan ympäristön kuljettaminen mukana; tavallisesti, kuten tässä, usean määrittelyn jonossa aiempiin voi viitata myöhemmissä.
15 4.4. PAIKALLISET MUUTTUJAT 45 C : Stmt Env Env C x e σ = C s ; t σ = C { d ; s } σ = (C s (σ D d σ)) (σ dom D d σ ) (4.14) D : LocalDecl Env Env D my x = e σ = {(x, E e σ)} (4.15) D d 1 ; d 2 σ = (D d 2 (σ (D d 1 σ))) D d 1 σ (4.16)
16 Liite A Matematiikan kertausta Loogisissa kaavoissa käytetään seuraavia tavanomaisia konnektiiveja ja kvanttoreita: on konjunktio ( ja ) on disjunktio ( tai ) on implikaatio ( jos niin ) on ekvivalenssi ( jos ja vain jos ) x : on universaalikvanttori ( kaikilla x ), x : on eksistentiaalikvanttori ( jollakin x ) Merkintä x S : P on lyhennys merkinnälle x : x S P, ja merkintä x S : P on lyhennys merkinnälle x : x S P. Joukkoihin liittyen käytetään seuraavia tavanomaisia merkintöjä: a S tarkoittaa, että a kuuluu joukkoon S a S tarkoittaa, että a ei kuulu joukkoon S {2, 1, 3, 2} tarkoittaa kolmialkioista joukkoa, jossa on alkioina 1, 2 ja 3 (alkioiden järjestyksellä ei ole merkitystä, kuten ei myöskään sillä, kuinka monta kertaa kukin alkio esiintyy) ja {} tarkoittavat tyhjää joukkoa { E P } tarkoittaa niiden alkioiden E joukkoa, joille pätee väite P (huomaa, että merkinnän kanssa pitää olla varovainen, sillä sillä on mahdollista ilmaista paradokseja) 159
17 160 LIITE A. MATEMATIIKAN KERTAUSTA { x S P } tarkoittaa samaa kuin { x x S P } Z tarkoittaa kokonaislukujen joukkoa Q tarkoittaa rationaalilukujen joukkoa N tarkoittaa luonnollisten lukujen joukkoa, N = { n Z n 0 } A B on joukkojen A ja B yhdiste, A B = { x x A x B } A B on joukkojen A ja B leikkaus, A B = { x x A x B } A \ B on joukkojen A ja B erotus, A \ B = { x x A x B } A B tarkoittaa, että A on B:n osajoukko, A B ( x A : x B) P(S) on joukon S osajoukkojen joukko, P(S) = { x x S } A B on joukkojen A ja B karteesinen tulo, A B = { (a, b) a A b B } Relaatioihin (karteesisten tulojen osajoukkoihin) ja funktioihin liittyen käytetään seuraavia (osittain tavanomaisia) merkintöjä: a r b tarkoittaa samaa kuin (a, b) r dom r on relaation r lähtöjoukko (engl. domain) dom r = { a b : (a, b) r } ran r on relaation r maalijoukko (engl. range) ran r = { b a : (a, b) r } r S on relaation rajoittuma, r S = { (x, y) r x S } f : A B tarkoittaa, että f on osittaisfunktio A:sta B:hen eli että f A B on relaatio, jolla on funktio-ominaisuus: a A : b, b B : (a, b) f (a, b ) f b = b f : A B tarkoittaa, että f on (täydellinen) funktio A:sta B:hen eli että se on osittaisfunktio A:sta B:hen ja A = dom f pätee
18 161 f (x) tarkoittaa sitä y:tä, jolle pätee (x, y) f (sallittu merkintä vain, jos kyseinen y on olemassa ja yksikäsitteinen) f (x) tarkoittaa, että x dom f (eli f (x) ei ole määritelty) Sanat funktio ja kuvaus ilman tarkentavia lisämääritteitä tarkoittavat tavallisesti täydellistä funktiota. Relaatio r S S on refleksiivinen, jos a S : (a, a) r pätee symmetrinen, jos a, b S : (a, b) r (b, a) r pätee antisymmetrinen, jos a, b S : (a, b) r (b, a) r a = b pätee transitiivinen, jos a, b, c S : (a, b) r (b, c) r (a, c) r pätee ekvivalenssi, jos se on symmetrinen, refleksiivinen ja transitiivinen osittaisjärjestys, jos se on antisymmetrinen, refleksiivinen ja transitiivinen täydellinen järjestys, jos se on osittaisjärjestys ja a, b S : (a, b) r (b, a) r pätee Relaation X-nen sulkeuma (engl. closure) on pienin relaatio, jolla on ominaisuus X ja jonka osajoukko kyseinen relaatio on. Tällaisia ovat esimerkiksi refleksiivinen sulkeuma, transitiivinen sulkeuma ja refleksiivis-transitiivinen sulkeuma.
TIES542 kevät 2009 Lausekkeista ja vähän muustakin
IES542 kevät 2009 Lausekkeista ja vähän muustakin Antti-Juhani Kaijanaho 13. tammikuuta 2009 1 Lausekkeet Ehkä mullistavin ero toisen ja kolmannen ohjelmointikielisukupolvien siis symbolisen konekielen
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ä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ätiedotTIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 9. lokakuuta 2016
TIEA241 Automaatit ja, syksy 2016 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 9. lokakuuta 2016 Sisällys Kontekstiton kielioppi Kontekstiton kielioppi koostuu joukosta päätemerkkejä (engl. terminal symbols),
LisätiedotTIEA241 Automaatit ja kieliopit, 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ä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ä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ä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ä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ä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ä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ätiedot(1) refleksiivinen, (2) symmetrinen ja (3) transitiivinen.
Matematiikassa ja muuallakin joudutaan usein tekemisiin sellaisten relaatioiden kanssa, joiden lakina on tietyn ominaisuuden samuus. Tietyn ominaisuuden samuus -relaatio on ekvivalenssi; se on (1) refleksiivinen,
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ätiedotMatematiikassa ja muuallakin joudutaan usein tekemisiin sellaisten relaatioiden kanssa, joiden lakina on tietyn ominaisuuden samuus.
Matematiikassa ja muuallakin joudutaan usein tekemisiin sellaisten relaatioiden kanssa, joiden lakina on tietyn ominaisuuden samuus. Matematiikassa ja muuallakin joudutaan usein tekemisiin sellaisten relaatioiden
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ätiedotLuonnollisten lukujen ja kokonaislukujen määritteleminen
Luonnollisten lukujen ja kokonaislukujen määritteleminen LuK-tutkielma Jussi Piippo Matemaattisten tieteiden yksikkö Oulun yliopisto Kevät 2017 Sisältö 1 Johdanto 2 2 Esitietoja 3 2.1 Joukko-opin perusaksioomat...................
LisätiedotDiskreetin matematiikan perusteet Laskuharjoitus 2 / vko 9
Diskreetin matematiikan perusteet Laskuharjoitus 2 / vko 9 Tuntitehtävät 9-10 lasketaan alkuviikon harjoituksissa ja tuntitehtävät 13-14 loppuviikon harjoituksissa. Kotitehtävät 11-12 tarkastetaan loppuviikon
LisätiedotEnsimmäinen ohjelmointikieli
Ensimmäinen ohjelmointikieli ALKEIS-suora Antti-Juhani Kaijanaho 15. tammikuuta 2007 Kaksi tärkeintä tekijää, joiden takia konekielinen ohjelmointi on vaikeaa, ovat rekisterien hallinta sekä aritmeettisten
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ätiedotMS-A0402 Diskreetin matematiikan perusteet Esimerkkejä, todistuksia ym., osa I
MS-A0402 Diskreetin matematiikan perusteet Esimerkkejä, todistuksia ym., osa I G. Gripenberg Aalto-yliopisto 3. huhtikuuta 2014 G. Gripenberg (Aalto-yliopisto) MS-A0402 Diskreetin matematiikan perusteetesimerkkejä,
LisätiedotMS-A0402 Diskreetin matematiikan perusteet Esimerkkejä, todistuksia ym., osa I
MS-A040 Diskreetin matematiikan perusteet Esimerkkejä, todistuksia ym., osa I G. Gripenberg Aalto-yliopisto 3. huhtikuuta 014 G. Gripenberg (Aalto-yliopisto) MS-A040 Diskreetin matematiikan perusteetesimerkkejä,
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ä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ätiedot2. Minkä joukon määrittelee kaava P 0 (x 0 ) P 1 (x 0 ) mallissa M = ({0, 1, 2, 3}, P M 0, P M 1 ), kun P M 0 = {0, 1} ja P M 1 = {1, 2}?
HY / Matematiikan ja tilastotieteen laitos Johdatus logiikkaan II, syksy 2018 Harjoitus 4 Ratkaisuehdotukset 1. Mitkä muuttujat esiintyvät vapaina kaavassa x 2 ( x 0 R 0 (x 1, x 2 ) ( x 3 R 0 (x 3, x 0
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ätiedotKuvaus eli funktio f joukolta X joukkoon Y tarkoittaa havainnollisesti vastaavuutta, joka liittää joukon X jokaiseen alkioon joukon Y tietyn alkion.
Kuvaus eli funktio f joukolta X joukkoon Y tarkoittaa havainnollisesti vastaavuutta, joka liittää joukon X jokaiseen alkioon joukon Y tietyn alkion. Kuvaus eli funktio f joukolta X joukkoon Y tarkoittaa
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ätiedotKuvaus eli funktio f joukolta X joukkoon Y tarkoittaa havainnollisesti vastaavuutta, joka liittää joukon X jokaiseen alkioon joukon Y tietyn alkion.
Kuvaus eli funktio f joukolta X joukkoon Y tarkoittaa havainnollisesti vastaavuutta, joka liittää joukon X jokaiseen alkioon joukon Y tietyn alkion. Vastaavuus puolestaan on erikoistapaus relaatiosta.
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ätiedotMAT Algebra 1(s)
8. maaliskuuta 2012 Esipuhe Tämä luentokalvot sisältävät kurssin keskeiset asiat. Kalvoja täydennetään luennolla esimerkein ja todistuksin. Materiaali perustuu Jyväskylän, Helsingin ja Turun yliopistojen
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ä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ä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ä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ätiedotTIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho. 16. maaliskuuta 2011
TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 16. maaliskuuta 2011 Sisällys Sisällys Väitelauseet lause (tai virke), joka sanoo jonkin asian pitävän paikkaansa
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ä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ätiedot815338A Ohjelmointikielten periaatteet
815338A Ohjelmointikielten periaatteet 2015-2016 III Ohjelmointikielten syntaksi ja semantiikka Sisältö 1. Syntaksi ja semantiikan käsitteet 2. BNF-kielioppi 3. Syntaksikaaviot 4. Jäsentäjät 5. Semantiikka
LisätiedotLogiikan kertausta. TIE303 Formaalit menetelmät, kevät Antti-Juhani Kaijanaho. Jyväskylän yliopisto Tietotekniikan laitos.
TIE303 Formaalit menetelmät, kevät 2005 Logiikan kertausta Antti-Juhani Kaijanaho antkaij@mit.jyu.fi Jyväskylän yliopisto Tietotekniikan laitos TIE303 Formaalit mentetelmät, 2005-01-27 p. 1/17 Luento2Luentomoniste
Lisä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ätiedotValitsemalla sopivat alkiot joudutaan tämän määritelmän kanssa vaikeuksiin, jotka voidaan välttää rakentamalla joukko oppi aksiomaattisesti.
Joukon määritelmä Joukko on alkioidensa kokoelma. Valitsemalla sopivat alkiot joudutaan tämän määritelmän kanssa vaikeuksiin, jotka voidaan välttää rakentamalla joukko oppi aksiomaattisesti. Näin ei tässä
LisätiedotOhjelmointikielten 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ätiedotNimitys Symboli Merkitys Negaatio ei Konjuktio ja Disjunktio tai Implikaatio jos..., niin... Ekvivalenssi... jos ja vain jos...
2 Logiikkaa Tässä luvussa tutustutaan joihinkin logiikan käsitteisiin ja merkintöihin. Lisätietoja ja tarkennuksia löytyy esimerkiksi Jouko Väänäsen kirjasta Logiikka I 2.1 Loogiset konnektiivit Väitelauseen
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, 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ätiedot811120P Diskreetit rakenteet
811120P Diskreetit rakenteet 2018-2019 Kertausta toiseen välikokeeseen Yhteenveto Kurssin sisältö 1. Algoritmin käsite 2. Lukujärjestelmät ja niiden muunnokset; lukujen esittäminen tietokoneessa 3. Logiikka
LisätiedotJoukot. Georg Cantor ( )
Joukot Matematiikassa on pyrkimys määritellä monimutkaiset asiat täsmällisesti yksinkertaisempien asioiden avulla. Tarvitaan jokin lähtökohta, muutama yleisesti hyväksytty ja ymmärretty käsite, joista
LisätiedotRelaation ominaisuuksia. Ominaisuuksia koskevia lauseita Sulkeumat. Joukossa X määritelty relaatio R on. (ir) irrefleksiivinen, jos x Rx kaikilla x X,
Relaation Joukossa X määritelty relaatio R on (r) refleksiivinen, jos xrx kaikilla x X, (ir) irrefleksiivinen, jos x Rx kaikilla x X, Relaation Joukossa X määritelty relaatio R on (r) refleksiivinen, jos
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ä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ä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ätiedotJoukossa X määritelty relaatio R on. (ir) irrefleksiivinen, jos x Rx kaikilla x X,
Relaation Joukossa X määritelty relaatio R on (r) refleksiivinen, jos xrx kaikilla x X, (ir) irrefleksiivinen, jos x Rx kaikilla x X, (s) symmetrinen, jos xry yrx, (as) antisymmetrinen, jos xry yrx x =
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ätiedotMatematiikan tukikurssi
Matematiikan tukikurssi Kurssikerta 1 Määrittelyjoukoista Tarkastellaan funktiota, jonka määrittelevä yhtälö on f(x) = x. Jos funktion lähtöjoukoksi määrittelee vaikkapa suljetun välin [0, 1], on funktio
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ätiedotLuonnollisen päättelyn luotettavuus
Luonnollisen päättelyn luotettavuus Luotettavuuden todistamiseksi määrittelemme täsmällisesti, milloin merkkijono on deduktio. Tässä ei ole sisällytetty päättelysääntöihin iteraatiosääntöä, koska sitä
Lisätiedot811120P Diskreetit rakenteet
811120P Diskreetit rakenteet 2017-2018 Yhteenveto Yleistä kurssista Kurssin laajuus 5 op Luentoja 30h Harjoituksia 21h Itsenäistä työskentelyä n. 80h 811120P Diskreetit rakenteet, Yhteenveto 2 Kurssin
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ä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ä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ä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ätiedotKuvauksista ja relaatioista. Jonna Makkonen Ilari Vallivaara
Kuvauksista ja relaatioista Jonna Makkonen Ilari Vallivaara 20. lokakuuta 2004 Sisältö 1 Esipuhe 2 2 Kuvauksista 3 3 Relaatioista 8 Lähdeluettelo 12 1 1 Esipuhe Joukot ja relaatiot ovat periaatteessa äärimmäisen
LisätiedotLoogiset konnektiivit
Loogiset konnektiivit Tavallisimmat loogiset konnektiivit ovat negaatio ei konjunktio ja disjunktio tai implikaatio jos..., niin... ekvivalenssi... jos ja vain jos... Sulkeita ( ) käytetään selkeyden vuoksi
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ätiedot[a] ={b 2 A : a b}. Ekvivalenssiluokkien joukko
3. Tekijälaskutoimitus, kokonaisluvut ja rationaaliluvut Tässä luvussa tutustumme kolmanteen tapaan muodostaa laskutoimitus joukkoon tunnettujen laskutoimitusten avulla. Tätä varten määrittelemme ensin
Lisätiedot2.4 Normaalimuoto, pohja ja laskentajärjestys 2.4. NORMAALIMUOTO, POHJA JA LASKENTAJÄRJESTYS 13
2.4. NORMAALIMUOTO, POHJA JA LASKENTAJÄRJESTYS 13 Toisinaan voi olla syytä kirjoittaa α- tai β-kirjain yhtäsuuruusmerkin yläpuolelle kertomaan, mitä muunnosta käytetään. Esimerkki 4 1. (λx.x)y β = y 2.
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ätiedotmissä on myös käytetty monisteen kaavaa 12. Pistä perustelut kohdilleen!
Matematiikan johdantokurssi Kertausharjoitustehtävien ratkaisuja/vastauksia/vihjeitä. Osoita todeksi logiikan lauseille seuraava: P Q (P Q). Ratkaisuohje. Väite tarkoittaa, että johdetut lauseet P Q ja
LisätiedotLineaarialgebra ja matriisilaskenta II. LM2, Kesä /141
Lineaarialgebra ja matriisilaskenta II LM2, Kesä 2012 1/141 Kertausta: avaruuden R n vektorit Määritelmä Oletetaan, että n {1, 2, 3,...}. Avaruuden R n alkiot ovat jonoja, joissa on n kappaletta reaalilukuja.
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ä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ätiedotKonnektiivit. On myös huomattava, että vain joillakin luonnollisen kielen konnektiiveilla on vastineensa lauselogiikassa.
Johdanto Lauselogiikassa tutkitaan sekä syntaktisella että semanttisella tasolla loogisia konnektiiveja ja niiden avulla muodostettuja kaavoja sekä myös formaalia päättelyä. Tarkastelemme aluksi klassisen
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. 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ä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ätiedotMS-A0402 Diskreetin matematiikan perusteet
MS-A0402 Diskreetin matematiikan perusteet Osa 1: Joukko-oppi ja logiikka Riikka Kangaslampi 2017 Matematiikan ja systeemianalyysin laitos Aalto-yliopisto Kiitokset Nämä luentokalvot perustuvat Gustaf
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ätiedotLuku 2. Ohjelmointi laskentana. 2.1 Laskento
Luku 2 Ohjelmointi laskentana Funktio-ohjelmoinnin, olio-ohjelmoinnin ja käskyohjelmoinnin ero on löydettävissä niiden pohjalla olevista laskennan mallista. Automaattisen tietojenkäsittelyn yksi historiallinen
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ä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ätiedotMatematiikan tukikurssi, kurssikerta 2
Matematiikan tukikurssi kurssikerta 1 Relaatioista Oletetaan kaksi alkiota a ja b. Näistä kumpikin kuuluu johonkin tiettyyn joukkoon mahdollisesti ne kuuluvat eri joukkoihin; merkitään a A ja b B. Voidaan
Lisätiedot1. Logiikan ja joukko-opin alkeet
1. Logiikan ja joukko-opin alkeet 1.1. Logiikkaa 1. Osoita totuusarvotauluja käyttäen, että implikaatio p q voidaan kirjoittaa muotoon p q, ts. että propositio (p q) ( p q) on identtisesti tosi. 2. Todista
LisätiedotUusi näkökulma. TIEA341 Funktio ohjelmointi 1 Syksy 2005
Uusi näkökulma TIEA341 Funktio ohjelmointi 1 Syksy 2005 Aloitetaan alusta... Otetaan uusi näkökulma Haskelliin ohjelmointi laskentana kertausta toisaalta, uusia käsitteitä toisaalta helpottanee sitten
LisätiedotMS-A0401 Diskreetin matematiikan perusteet
MS-A0401 Diskreetin matematiikan perusteet Osa 2: Relaatiot ja funktiot Riikka Kangaslampi Syksy 2017 Matematiikan ja systeemianalyysin laitos Aalto-yliopisto Relaatiot Relaatio Määritelmä 1 Relaatio joukosta
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ätiedot8 Joukoista. 8.1 Määritelmiä
1 8 Joukoista Joukko on alkoidensa kokoelma. Valitsemalla sopivat alkiot joudutaan tämän määritelmän kanssa vaikeuksiin, jotka voidaan välttää rakentamalla joukkooppi aksiomaattisesti. Näin ei tässä tehdä
LisätiedotIlkka Mellin Todennäköisyyslaskenta Liite 1: Joukko-oppi
Ilkka Mellin Todennäköisyyslaskenta Liite 1: Joukko-oppi TKK (c) Ilkka Mellin (2007) 1 Joukko-oppi >> Joukko-opin peruskäsitteet Joukko-opin perusoperaatiot Joukko-opin laskusäännöt Funktiot Tulojoukot
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ä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ä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ätiedotOhjelmointikielten periaatteet Syksy Antti-Juhani Kaijanaho
Ohjelmointikielten periaatteet Syksy 2004 Antti-Juhani Kaijanaho Copyright c 2002, 2004 Antti-Juhani Kaijanaho Tästä teoksesta saa valmistaa kappaleita ja sen saa saattaa yleisön saataviin, muuttamattomana
LisätiedotPredikaattilogiikkaa
Predikaattilogiikkaa UKUTEORIA JA TO- DISTAMINEN, MAA11 Kertausta ogiikan tehtävä: ogiikka tutkii ajattelun ja päättelyn sääntöjä ja muodollisten päättelyiden oikeellisuutta, ja pyrkii erottamaan oikeat
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ätiedot8 KANNAT JA ORTOGONAALISUUS. 8.1 Lineaarinen riippumattomuus. Vaasan yliopiston julkaisuja 151
Vaasan yliopiston julkaisuja 151 8 KANNAT JA ORTOGONAALISUUS KantaOrthogon Sec:LinIndep 8.1 Lineaarinen riippumattomuus Lineaarinen riippumattomuus on oikeastaan jo määritelty, mutta kirjoitamme määritelmät
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ätiedotAlgebra I Matematiikan ja tilastotieteen laitos Ratkaisuehdotuksia harjoituksiin 6 (8 sivua) OT. 1. a) Määritä seuraavat summat:
Algebra I Matematiikan ja tilastotieteen laitos Ratkaisuehdotuksia harjoituksiin 6 (8 sivua) 21.2.-25.2.2011 OT 1. a) Määritä seuraavat summat: [2] 4 + [3] 4, [2] 5 + [3] 5, [2] 6 + [2] 6 + [2] 6, 7 [3]
LisätiedotJava-kielen perusteet
Java-kielen perusteet Tunnus, varattu sana, kommentti Muuttuja, alkeistietotyyppi, merkkijono, literaalivakio, nimetty vakio Tiedon merkkipohjainen tulostaminen 1 Tunnus Java tunnus Java-kirjain Java-numero
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ätiedotMatematiikan johdantokurssi, syksy 2016 Harjoitus 11, ratkaisuista
Matematiikan johdantokurssi, syksy 06 Harjoitus, ratkaisuista. Valitse seuraaville säännöille mahdollisimman laajat lähtöjoukot ja sopivat maalijoukot niin, että syntyy kahden muuttujan funktiot (ks. monisteen
Lisätiedot3. Kirjoita seuraavat joukot luettelemalla niiden alkiot, jos mahdollista. Onko jokin joukoista tyhjä joukko?
HY / Avoin yliopisto Johdatus yliopistomatematiikkaan, kesä 2015 Harjoitus 1 Ratkaisuehdotuksia Tehtäväsarja I Seuraavat tehtävät liittyvät luentokalvoihin 1 14. Erityisesti esimerkistä 4 ja esimerkin
Lisätiedot