Sve 1.5. Iikka Hauhio 18. tammikuuta 2015

Samankaltaiset tiedostot
Java-kielen perusteet

Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet suoritetaan peräkkäin.

13. Loogiset operaatiot 13.1

Luento 5. Timo Savola. 28. huhtikuuta 2006

Alkuarvot ja tyyppimuunnokset (1/5) Alkuarvot ja tyyppimuunnokset (2/5) Alkuarvot ja tyyppimuunnokset (3/5)

Java-kielen perusteet

13. Loogiset operaatiot 13.1

Ehto- ja toistolauseet

Python-ohjelmointi Harjoitus 2

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset

Tutoriaaliläsnäoloista

PERL. TIE Principles of Programming Languages. Ryhmä 4: Joonas Lång & Jasmin Laitamäki

Ehto- ja toistolauseet

811120P Diskreetit rakenteet

Harjoitustyö: virtuaalikone

Ohjelmoinnin perusteet Y Python

Tietotyypit ja operaattorit

Ohjelmoinnin perusteet Y Python

11. Javan toistorakenteet 11.1

Vertailulauseet. Ehtolausekkeet. Vertailulauseet. Vertailulauseet. if-lauseke. if-lauseke. Javan perusteet 2004

811120P Diskreetit rakenteet

5/20: Algoritmirakenteita III

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti:

Ohjausrakenteet. Valinta:

Java kahdessa tunnissa. Jyry Suvilehto

815338A Ohjelmointikielten periaatteet Harjoitus 7 Vastaukset

ITKP102 Ohjelmointi 1 (6 op)

ITKP102 Ohjelmointi 1 (6 op)

Ohjelmoinnin perusteet Pythonilla. Teemu Sirkiä, 2015

7. Näytölle tulostaminen 7.1

12. Javan toistorakenteet 12.1

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

Ohjelmointiharjoituksia Arduino-ympäristössä

12. Javan toistorakenteet 12.1

Palvelinpuolen ohjelmointi

Sisällys. 11. Javan toistorakenteet. Laskurimuuttujat. Yleistä

Sisällys. 3. Pseudokoodi. Johdanto. Johdanto. Johdanto ja esimerkki. Pseudokoodi lauseina. Kommentointi ja sisentäminen.

Palautetta viime luennosta

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo

Ohjelmoinnin perusteet Y Python

Java-kielen perusteita

Tyyppejä ja vähän muutakin. TIEA341 Funktio ohjelmointi 1 Syksy 2005

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Laskentakaavojen luominen

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit

Ohjelmoinnin perusteet Y Python

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014

Muuttujatyypit ovat Boolean, Byte, Integer, Long, Double, Currency, Date, Object, String, Variant (oletus)

1. Mitä tehdään ensiksi?

Ohjelmoinnin perusteet Y Python

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti

Pythonin Kertaus. Cse-a1130. Tietotekniikka Sovelluksissa. Versio 0.01b

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Lisää laskentoa. TIEA341 Funktio ohjelmointi 1 Syksy 2005

Ohjelmoinnin perusteet Y Python

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti

tään painetussa ja käsin kirjoitetussa materiaalissa usein pienillä kreikkalaisilla

Ohjelmoinnin peruskurssi Y1

Matematiikan tukikurssi

Sisällys. 12. Javan toistorakenteet. Yleistä. Laskurimuuttujat

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

05/04/2004. Digitaalisen median tekniikat, k2004 HY/TKTL, javascript_1. Harri Laine 1. JavaScript

Digitaalisen median tekniikat JavaScript

Digitaalisen median tekniikat JavaScript Harri Laine 1

Ohjelmoinnin perusteet Y Python

Algoritmit 2. Luento 8 To Timo Männikkö

Ohjelmoinnin peruskurssien laaja oppimäärä

SELECT-lauseen perusmuoto

Javascript 2: Ohjelmointikielen ominaisuudet. Jaana Holvikivi Metropolia

16. Ohjelmoinnin tekniikkaa 16.1

Sisällys. 17. Ohjelmoinnin tekniikkaa. Aritmetiikkaa toisin merkiten. for-lause lyhemmin

Ohjelmoinnin perusteet Y Python

Opiskelijan pikaopas STACK-tehtäviin. Lassi Korhonen, Oulun yliopisto

Metodit. Metodien määrittely. Metodin parametrit ja paluuarvo. Metodien suorittaminen eli kutsuminen. Metodien kuormittaminen

Listarakenne (ArrayList-luokka)

Lohkot. if (ehto1) { if (ehto2) { lause 1;... lause n; } } else { lause 1;... lause m; } 16.3

Ohjelmoinnin perusteet Y Python

Tentti erilaiset kysymystyypit

Algoritmit 1. Luento 3 Ti Timo Männikkö

Ohjelmoinnin peruskurssi Y1

OPPITUNTI 5 Ohjelman kulku

Taulukot. Jukka Harju, Jukka Juslin

Tietueet. Tietueiden määrittely

58131 Tietorakenteet ja algoritmit (kevät 2013) Kurssikoe 1, , vastauksia

Muistutus aikatauluista

Johdatus ohjelmointiin / Lausekielinen ohjelmointi 1 & 2

Harjoitus Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

Datatähti 2019 alku. task type time limit memory limit. A Kolikot standard 1.00 s 512 MB. B Leimasin standard 1.00 s 512 MB

Algoritmit. Ohjelman tekemisen hahmottamisessa käytetään

Algoritmit 1. Demot Timo Männikkö

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 4: Ohjelmointi, skriptaus ja Python

SQL:N PERUSTEET MARKKU SUNI

T Syksy 2004 Logiikka tietotekniikassa: perusteet Laskuharjoitus 7 (opetusmoniste, kappaleet )

Automaatit. Muodolliset kielet

Matematiikan tukikurssi

Perinteiset tietokoneohjelmat alkavat pääohjelmasta, c:ssä main(), jossa edetään rivi riviltä ja käsky käskyltä.

Ohjelmoinnin peruskurssien laaja oppimäärä

Transkriptio:

Sve 1.5 Iikka Hauhio 18. tammikuuta 2015

Sisältö 1 Suorituksenaikainen ympäristö 1 1.1 Oliot ja niiden rakenne........................ 1 1.1.1 Hajautustaulut........................ 1 1.2 Muuttujat ja muuttujaympäristöt.................. 3 2 Leksikaalinen rakenne 3 3 Kielioppi 3 3.1 Lauseet................................ 3 3.1.1 Lohkolause.......................... 3 3.1.2 Ehtolause........................... 4 3.1.3 While-silmukkalause..................... 4 3.1.4 Do-silmukkalause....................... 4 3.1.5 For-silmukkalause...................... 4 3.1.6 Hyppylause.......................... 5 3.1.7 Palautuslause......................... 5 3.1.8 Lausekelause......................... 5 3.1.9 Funktiolause......................... 5 3.2 Lausekkeet.............................. 5 3.2.1 Binäärioperaattorilauske................... 5 3.2.2 Taululausekkeet....................... 7 3.2.3 Funktiokutsulauseke..................... 7 3.2.4 Vastalukulauseke....................... 7 3.2.5 EI-lauseke........................... 7 3.2.6 Ehtolauseke.......................... 8 3.2.7 Muuttujalausekkeet..................... 8 3.2.8 Listalauseke.......................... 9 3.2.9 Taululauseke......................... 9 3.2.10 Funktiolauseke........................ 9 3.2.11 Sanalauseke.......................... 9

1 Suorituksenaikainen ympäristö Ennen varsinaisen kieliopin esittelemistä lienee parasta selostaa Sve-kielen suorituksenaikainen ympäristö, jonka ymmärtäminen on oleellista kieliopillisten lauseiden toiminnan käsittämiseksi. 1.1 Oliot ja niiden rakenne Olio on Sven tärkein käsite. Ohjelman käyttämä muisti on aina järjestelty oliohin. Kaikki oliot voidaan jakaa kahteen osaan: kangastusarvoon ja hajautustauluun. Nämä kaksi osaa ovat toisistaan erottamattomat. Kangastusarvo on luonteeltaan arvo ja hajautusarvo viittaus. Kangastusarvoluokat on lueteltu alla. Luku IEEE 754 -standardin mukainen liukulukuarvo. Merkkijono Totuusarvo Unicode-standardia tukeva merkkijonoarvo. Totuusarvo: tosi tai epätosi. Nil Arvo, jota käytetään ilmaisemaan kangastusarvon puuttumista tai olemattomuutta. Huomaa, että nil-tyyppisillä olioilla on silti hajautustaulu. Funktio Viittaus svefunktioon ja sen määritelleeseen ympäristöön. Natiivifunktio Viittaus funktioon, jota ei ole kirjoitettu Svellä. Taulu Oliota, jolla ei ole kangastusarvoa, sanotaan tauluolioksi. Käytetään, jos halutaan korostaa olion hajautustaulua. 1.1.1 Hajautustaulut Hajautustaulut ovat Sven monimutkaisin ominaisuus. Jokainen hajautustaulu sisältää viittauksia paitsi tavallisiin olioihin, myös kahteen muuhun hajautustauluun ja yhteen funktioon. Taulujen idea on yksinkertainen: ne yhdistävät avaimina toimivat merkkijonot niitä vastaaviin olioihin. Taulut ovat monikäyttöisijä ja lähes jokainen sveohjelma käyttää niitä. Hajautustaulujen tärkein osa on niiden sisältämä lista avain-olio-pareista. Jos taululle tehdään kysyly tiettyyn avaimeen liitetystä arvosta, palautetaan ensisijaisesti taulun omasta listasta löytyvä olio. Jos tästä listasta ei kuitenkaan oliota löydy, sitä yritetään etsiä ylitaulusta, mikäli sellaiseen on viittaus. Ylitaulu on tavallinen hajautustaulu ja jos siitäkään ei löydy ko. avaimella oliota, etsitään sitä taas sen ylitaulusta, jne. Jos ylitaulukysely ei tuota tulosta, etsitään arvoa prototyyppitaulusta. Prototyyppitaulu käyttäytyy kuin ylitaulu. Jos prototyyppitaulukin palautti kieltävän vastauksen, kutsutaan vielä prototyyppifunktiota avaimella. Prototyyppifunktion palauttama arvo palautetaan. Kysylyprosessi vielä pseudokoodina: 1

Funktio HaeArvo ( taulu, avain ) Jos avain Listassa taulu. l i s t a Palauta taulu. l i s t a [ avain ] Muulloin Jos taulu. y l i t a u l u On Olemassa tmp := HaeArvo ( taulu. y l i t a u l u ) Jos tmp On Olemassa Palauta tmp Muulloin Jos taulu. p r o t o t y y p p i t a u l u On Olemassa tmp := HaeArvo ( taulu. p r o t o t y y p p i t a u l u ) Jos tmp On Olemassa Palauta tmp Muulloin Jos taulu. p r o t o t y y p p i f u n k t i o On Olemassa Palauta taulu. p r o t o t y y p p i f u n k t i o ( avain ) Palauta Epä t o s i Lopeta Funktio Hajautustaulun arvojen asettaminen on verrattavissa edellä kuvattuun prosessiin. Ensiksi tutkitaan onko ylitaulussa tai sen missään ylitaulussa ko. avaimeen yhdistetty oliota. Jos on, kysely ohjataan ylitaululle. Jos ylitaulusta ei löytynyt avainta, lisätään avain ja olio uutena parina olion omaan listaan. Funktio Tarkista ( taulu, avain ) Jos avain Listassa taulu. l i s t a Palauta Tosi Muulloin Jos taulu. y l i t a u l u On Olemassa Palauta Tarkista ( taulu. y l i t a u l u, avain ) Palauta Epä t o s i Lopeta Funktio Funktio AsetaArvo ( taulu, avain, arvo ) Jos Tarkista ( taulu. y l i t a u l u, avain ) Palauta AsetaArvo ( taulu. y l i t a u l u, avain, arvo ) Muulloin Palauta taulu. l i s t a [ avain ] := arvo Lopeta Funktio Hajautustaululla ei ole pakko olla yli- tai prototyyppitauluja tai prototyyppifunktiota. 2

1.2 Muuttujat ja muuttujaympäristöt Svessä muuttujat säilötään muuttujaympäristöihin, jotka ovat tavallisia tauluolioita. Nykyinen muuttujaympäristö säilötään muuttujaan nimeltä $$ ja ylätason muuttujaympäristö, jonka aliympäristöjä kaikki muut ympäristöt ovat, muuttujaan $. Vain kaksi kieliopillista rakennetta voivat esitellä uuden muuttujaympäristön: lohko ja funktiokutsu (ks. Lohkolause ja Funktiokutsulauseke ). 2 Leksikaalinen rakenne Tokeneiksi lasketaan kaikki sellaiset osat lähdekooditiedostoa, jotka eivät sisällä merkkejä väli, sarkain, rivinvaihto, rivinpalautus, ;, <, >, (, ),,, :, +, -, *, /, %, =, &,, {, },.,!, [ ja ] ja edellä mainitut merkit. Merkkiyhdistelmät ->, =>, ==,!=, &&,, <=, >=, ++, -- ja :: lasketaan omiksi tokeneikseen. Merkkijonot alkavat " -merkistä ja päättyvät sellaiseen. Merkkijonot voivat sisältää mitä tahansa merkkejä mukaanlukien uudet rivit, merkki nro. 0 ja kaikki Unicode-merkit. Merkkijonot tukevat seuraavia ohituskoodeja: \" = ", \t = sarkain, \n = uusi rivi, \r = rivinpalautus, \\ = \. 3 Kielioppi 3.1 Lauseet Svetulkki suorittaa svelauseita yksitellen. Kaikki lauseet ja niiden merkityksen on lueteltu tässä luvussa. Ohjelma := { Lause } Lause := Lohkolause Ehtolause While silmukkalause Do silmukkalause For silmukkalause Hyppylause P a l a u t u s l a u s e Lausekelause Funktiolause NOP l a u s e NOP l a u s e := ; 3.1.1 Lohkolause Lohkolause := { { Lause } } Svetulkki suorittaa lohkolauseen suorittamalla kaikki sen sisällä olevat lauseet järjestyksessä uudessa muuttujaympäristössä. 3

mj := nykyisen muuttujaympä r i s t ön aliymp ä r i s t ö S u o r i t a ( k a i k k i l a u s e e t, mj ) 3.1.2 Ehtolause Ehtolause := i f : ehto=lauseke s i l l o i n=lause [ e l s e : muulloin=lause ] Ehtolauseen silloin-osa suoritetaan, jos ehto on tosi. Muulloin suoritetaan muulloin-osa, mikäli sellainen on. Jos S u o r i t a ( ehto, nykyinen ympä r i s t ö ) = Tosi S u o r i t a ( s i l l o i n, nykyinen ympä r i s t ö ) Muulloin S u o r i t a ( muulloin, nykyinen ympä r i s t ö ) 3.1.3 While-silmukkalause While silmukkalause := while : ehto=lauseke v a r t a l o=lause Silmukan sisällä olevaa lausetta suoritetaan uudestaan ja uudestaan niin kauan, kun ehto on tosi. Kun S u o r i t a ( ehto, nykyinen ympä r i s t ö ) = Tosi S u o r i t a ( vartalo, nykyinen ympä r i s t ö ) Lopeta Kun BREAK: 3.1.4 Do-silmukkalause Do silmukkalause := do : v a r t a l o=lause while : ehto=lauseke Do-silmukan sisällä oleva lause suoritetaan kerran, minkä jälkeen sitä suoritetaan uudestaan niin kauan, kun ehto on tosi. S u o r i t a ( vartalo, nykyinen ympä r i s t ö ) Kun S u o r i t a ( ehto, nykyinen ympä r i s t ö ) = Tosi S u o r i t a ( vartalo, nykyinen ympä r i s t ö ) Lopeta Kun BREAK: 3.1.5 For-silmukkalause For silmukkalause := f o r : a l u s t u s=lauseke, ehto=lauseke, kasvatus=lauseke v a r t a l o=lause For-silmukan alustusosa suoritetaan kerran, minkä jälkeen suoritetaan vartaloa ja kasvatus-lausetta vuorotellen niin kauan, kun ehto on tosi. 4

S u o r i t a ( a l u s t u s, nykyinen ympä r i s t ö ) Kun S u o r i t a ( ehto, nykyinen ympä r i s t ö ) = Tosi S u o r i t a ( vartalo, nykyinen ympä r i s t ö ) S u o r i t a ( kasvatus, nykyinen ympä r i s t ö ) Lopeta Kun BREAK: 3.1.6 Hyppylause Hyppylause hyppää ulos sisimmästä silmukasta. Pseudokoodeissa uloshyppykohtaa merkitään BREAK: -lauseella. Hyppylause := break 3.1.7 Palautuslause Palautuslause määrittää lopettaa funktion suorittamisen ja palauttaa sisällään olevan lausekkeen arvon. P a l a u t u s l a u s e := r eturn Lauseke 3.1.8 Lausekelause Lausekelauseen sisällä oleva lauseke suoritetaan. Lausekelause := Lauseke 3.1.9 Funktiolause Funktiolause := def : fnimi=nimi [ ( [ NIMI {, NIMI } ] ) ] v a r t a l o=lause Funktiolause määrittelee muuttujan fnimi arvoksi funktion annetuilla parametreilla ja vartalolla nykyiseen muuttujaympäristöön. nykyinen muuttujaympä r i s t ö. l i s t a [ fnimi ] = Funktioarvo ( fnimi, parametrit, v a r t a l o ) 3.2 Lausekkeet Kaikki unääri- ja binäärioperaattorit tauluoperaattoreita lukuunottamatta luovat uuden olion, eivät muunna annettua. Lauseke := T o t u u s o p eraatiolauseke 3.2.1 Binäärioperaattorilauske Sve tukee rajoitettua määrää binäärioperaatioita. && Boolen algebran JA-operaatio. Palauttaa toisen operandin, jos ensimmäinen on arvoltaan nil tai epätosi, muulloin ensimmäisen. Ei suorita toista lauseketta, jos sille ei ole tarvetta. 5

Boolen algebran TAI-operaatio. Palauttaa ensimmäisen operandin, jos se ei ole arvoltaan nil tai epätosi, muulloin toisen. Ei suorita toista lauseketta, jos sille ei ole tarvetta. == Yhtäsuuri kuin. Jos molemmat operandit ovat lukuja, vertailee niitä IEEE 754 -standardin mukaan. Muissa tapauksissa operandit muutetaan merkkijonoiksi, joita vertaillaan.!= Erisuuri kuin. Vertailee lukuja IEEE 754 -standardin mukaan ja muita tyyppejä merkkijonoina. Käänteinen ==-operaatio. < Pienempi kuin. Vertailee lukuja IEEE 754 -standardin mukaan. Hyväksyy vain luvut. > Suurempi kuin. Vertailee lukuja IEEE 754 -standardin mukaan. Hyväksyy vain luvut. <= Pienempi tai yhtäsuuri kuin. Vertailee lukuja IEEE 754 -standardin mukaan. Hyväksyy vain luvut. >= Suurempi tai yhtäsuuri kuin. Vertailee lukuja IEEE 754 -standardin mukaan. Hyväksyy vain luvut. + Jos molemmat operandit ovat lukuja, suorittaa IEEE 754 -standardin mukaisen yhteenlaskun, muissa tapauksissa muuntaa operandit merkkijonoiksi ja liittää ne yhteen. - IEEE 754 -standardin mukainen vähennyslasku. Hyväksyy vain luvut. * IEEE 754 -standardin mukainen kertolasku. Hyväksyy vain luvut. / IEEE 754 -standardin mukainen jakolasku. Hyväksyy vain luvut. % IEEE 754 -standardin mukainen jakojäännös. Hyväksyy vain luvut. T o t u u s o p e r a a t i o l a u s eke := Totuusoperaatiolauseke ( && ) V e r t a i l u l a u s e k e V e r t a i l u l a u s e k e V e r t a i l u l a u s e k e := V e r t a i l u l a u s e k e ( ==!= < > <= >= ) Summalauseke Summalauseke Summalauseke := Summalauseke ( + ) Tulolauseke Tulolauseke Tulolauseke := Tulolauseke 6

( / % ) Taulu t a i f u n k t i o l a u s e k e Taulu t a i f u n k t i o l a u s e k e Taulu t a i f u n k t i o l a u s e k e := Taulu t a i f u n k t i o l a u s e k e ( ( [ Lauseke {, Lauseke } ] ) : : Lauseke > Primää r i l a u s e k e [ ( [ Lauseke {, Lauseke } ] ) ] ) Primää r i l a u s e k e Primää r i l a u s e k e := Vastalukulauseke EI l a u s e k e Ehtolauseke Muuttujalauseke L i s t a l a u s e k e Taululauseke Funktiolauseke Sanalauseke Merkkijonolauseke Lukulauseke 3.2.2 Taululausekkeet Arvonhakulauseke Hakee arvon taulukosta (ks. luku Hajautustaulut ). Arvonsijoituslauseke Hajautustaulut ). Sijoittaa arvon tietyllä avaimella tauluun (ks. luku 3.2.3 Funktiokutsulauseke Luo uuden funktion määrittely-ympäristön aliympäristön ja suorittaa funktion vartalon siinä. Ympäristöön asetetaan ennen suoritusta parametreja vastaavien argumenttilausekkeiden arvot. Toimittamattomat argumentit korvataan nil-arvoilla. Ympäristöön asetetaan myös muuttujat $freturn = nil, $parent = ympäristö, josta funktiota kutsuttiin, $self = viittaus funktioon itseensä ja $args = lista argumenteista. Palauttaa funktion palautuslauseen arvon, tai, jos sellaista ei ole, $freturn -muuttujan arvon. 3.2.4 Vastalukulauseke Palauttaa olion, joka vastaa luvun vastalukua IEEE 754 -standardin mukaan. Vastalukulauseke := Taulu t a i f u n k t i o l a u s e k e 3.2.5 EI-lauseke Palauttaa totuusarvon EI-arvon Boolen algebrassa. EI l a u s e k e :=! Taulu t a i f u n k t i o l a u s e k e 7

3.2.6 Ehtolauseke Jos ehtolausekkeen arvo on tosi, palauttaa silloin-lausekkeen arvon, muulloin muulloin-lausekkeen arvon. Suorittaa vain palautettavan lausekkeen. Ehtolauseke := i f : ehto=lauseke s i l l o i n=lauseke e l s e : muulloin=lauseke 3.2.7 Muuttujalausekkeet Muuttujalausekkeet muistuttavat taululausekkeita, mutta koskevat paikallisen muuttujaympäristön taulua erikseen määritellyn sijaan. Muuttujalauseke := ++ NIMI NIMI NIMI ++ NIMI l o c a l NIMI = Lauseke NIMI = Lauseke NIMI ++NIMI Sama kuin (NIMI=NIMI+1), asettaa muuttujan arvoksi luvun seuraajan ja palauttaa sen. Hyväksyy vain luku-tyyppisiä muuttujia. Palauta AsetaArvo ( nykyinen muuttujaympä r i s t ö, NIMI, HaeArvo ( nykyinen muuttujaympä r i s t ö ). kangastus +1) --NIMI Sama kuin (NIMI=NIMI-1), asettaa muuttujan arvoksi luvun edeltäjän ja palauttaa sen. Hyväksyy vain luku-tyyppisiä muuttujia. Palauta AsetaArvo ( nykyinen muuttujaympä r i s t ö, NIMI, HaeArvo ( nykyinen muuttujaympä r i s t ö ). kangastus 1) NIMI++ Asettaa muuttujan arvoksi luvun seuraajan ja palauttaa alkuperäisen arvon. Hyväksyy vain luku-tyyppisiä muuttujia. arvo := HaeArvo ( nykyinen muuttujaympä r i s t ö ) AsetaArvo ( nykyinen muuttujaympä r i s t ö, NIMI, arvo. kangastus +1) Palauta arvo NIMI-- Asettaa muuttujan arvoksi luvun edeltäjän ja palauttaa alkuperäisen arvon. Hyväksyy vain luku-tyyppisiä muuttujia. arvo := HaeArvo ( nykyinen muuttujaympä r i s t ö ) AsetaArvo ( nykyinen muuttujaympä r i s t ö, NIMI, arvo. kangastus 1) Palauta arvo 8

Asettaa paikallisen muuttujaympäristön listaan muut- local NIMI = Lauseke tujalle NIMI arvon. Palauta nykyinen muuttujaympä r i s t ö. l i s t a [ NIMI ] = S u o r i t a ( Lauseke, nykyinen muuttujaympä r i s t ö ) NIMI = Lauseke Asettaa muuttujan arvon. Palauta AsetaArvo ( nykyinen muuttujaympä r i s t ö, NIMI, S u o r i t a ( Lauseke, nykyinen muuttujaympä r i s t ö ) ) NIMI Jos NIMI on luku tai merkkijono, palauttaa uuden luku- tai merkkijonoolion. Muulloin palauttaa muuttujan arvon. Luvuiksi tulkitaan kaikki numeroista koostuvat nimet ja vakiot Infinity ja NaN. Numeroista koostuvat luvut voivat sisältää yhden pisteen desimaalierottimena. Pisteen on oltava vähintään kahden numeron välissä. Jos Luku (NIMI) Palauta Lukuarvo ( NIMI) Muulloin Jos Merkkijono ( NIMI) Palauta Merkkijonoarvo (NIMI) Muulloin Palauta HaeArvo ( nykyinen muuttujaympä r i s t ö, NIMI) 3.2.8 Listalauseke Lista on taulu, jonka avaimet ovat numeerisia. Avaimet alkavat nollasta. L i s t a l a u s e k e := [ [ Lauseke {, Lauseke } ] ] 3.2.9 Taululauseke Taululauseke, kuten listalauseke, luo uuden hajautustaulun. Taululauseke := { [ NIMI = Lauseke {, NIMI = Lauseke } ] } 3.2.10 Funktiolauseke Luo uuden funktio-olion. Funktiolauseke := def [ ( [ NIMI {, NIMI } ] ) ] v a r t a l o=lause 3.2.11 Sanalauseke Yhden sanan pituinen merkkijonoliteraali. :NIMI == "NIMI". Sanalauseke := : NIMI 9