# Suomi-malaga, suomen kielen muoto-opin kuvaus. # # Tekijänoikeus © 2006-2007 Hannu Väisänen (Etunimi.Sukunimi@joensuu.fi) # 2006-2010 Harri Pitkänen (hatapitk@iki.fi) # # Tämä ohjelma on vapaa; tätä ohjelmaa on sallittu levittää # edelleen ja muuttaa GNU yleisen lisenssin (GPL lisenssin) # ehtojen mukaan sellaisina kuin Free Software Foundation # on ne julkaissut; joko Lisenssin version 2, tai (valinnan # mukaan) minkä tahansa myöhemmän version mukaisesti. # # Tätä ohjelmaa levitetään siinä toivossa, että se olisi # hyödyllinen, mutta ilman mitään takuuta; ilman edes # hiljaista takuuta kaupallisesti hyväksyttävästä laadusta tai # soveltuvuudesta tiettyyn tarkoitukseen. Katso GPL # lisenssistä lisää yksityiskohtia. # # Tämän ohjelman mukana pitäisi tulla kopio GPL # lisenssistä; jos näin ei ole, kirjoita osoitteeseen Free # Software Foundation Inc., 51 Franklin Street, Fifth Floor, # Boston, MA 02110-1301, USA. # # Tämän ohjeman linkittäminen staattisesti tai dynaamisesti # muihin moduuleihin on ohjelmaan perustuvan teoksen # tekemistä, joka on siis GPL lisenssin ehtojen alainen. # # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; see the file COPYING. If not, write to the # Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA # 02110-1301, USA. # # Linking this program statically or dynamically with other modules is # making a combined work based on this program. Thus, the terms and # conditions of the GNU General Public License cover the whole # combination. include "config.inc"; include "suomi.inc"; include "subrule.inc"; # Palauttaa annetusta tietueesta johdoksissa tarvittavat lähtötiedot subrule johdoksen_lähtötiedot($tietue): if (@voikko_debug) then return [lähtöluokka: $tietue.luokka, lähtösana: $tietue.perusmuoto]; else return [lähtöluokka: $tietue.luokka]; end; end; # Aputaulukko funktiolle luku_sijasta define @luku_sijasta_muunnostaulu := [nimentö: yksikkö, nimentö_t: monikko, nimentö_tkA: monikko, omanto_n: yksikkö, omanto_nkA: yksikkö, omanto_ien: monikko, omanto_jen: monikko, omanto_en: monikko, omanto_in: monikko, omanto_ten: monikko, omanto_iT: monikko, omanto_idän: monikko, kohdanto_idät: monikko, kohdanto_t: yksikkö, osanto_A: yksikkö, osanto_AA: yksikkö, osanto_iA: monikko, osanto_jA: monikko, osanto_ttA: yksikkö, osanto_itA: monikko, osanto_tA: yksikkö, olento_nA: yksikkö, olento_inA: monikko, tulento_ksi: yksikkö, sisäolento_ssA: yksikkö, sisäolento_nA: yksikkö, sisäeronto_tA: yksikkö, sisätulento_Vn: yksikkö, sisätulento_VVn: yksikkö, sisätulento_hVn: yksikkö, sisätulento_iin: monikko, sisätulento_ihin: monikko, sisätulento_seen: yksikkö, sisätulento_isiin: monikko, sisätulento_sen: yksikkö, sisätulento_isin: monikko, sisätulento_nne: monikko, vajanto_ttA: yksikkö, vajanto_ittA: monikko, seuranto_ine: monikko, keinonto_n: yksikkö, tulento_s: yksikkö, ulkopaikallissija_llA: yksikkö, ulkopaikallissija_illA: monikko ]; # Palauttaa annettua sijasymbolia vastaavan luvun subrule luku_sijasta($sija): return @luku_sijasta_muunnostaulu.$sija; end; # Kaikista nimisanoista johdetaan laatusana tOn-johtimella, esim: valo+ton. # Laatusanoista johdetaan nimisana (U)Us-johtimella, # esim: korkea => korkeus, matala => mataluus. # Taivutuskaavoissa, joissa ei ole laatusanoja, ei ole (U)Us-johdinta. allo_rule generate_allos ($tietue): if (($tietue.tiedot /= nil) and ((murre in $tietue.tiedot and switch(voikko_murre) = no) or (ei_voikko in $tietue.tiedot and switch(sukijan_muodot) = no))) then stop; elseif ($tietue.luokka = etuliite) then if (last($tietue.alku) = "-") then result $tietue.alku, $tietue - alku; else result $tietue.alku, $tietue - alku + [jatko: $tietue.jatko + ]; end; elseif (valo in $tietue.jatko) then choose $i in valo ($tietue, "", ""); result $i.alku, $i - alku; elseif (aalto in $tietue.jatko) then choose $i in valo ($tietue, tO($tietue), lO($tietue)); result $i.alku, $i - alku; elseif (alku in $tietue.jatko) then choose $i in valo ($tietue, kU($tietue), U($tietue)); result $i.alku, $i - alku; elseif (anto in $tietue.jatko) then choose $i in valo ($tietue, tO($tietue), nO($tietue)); result $i.alku, $i - alku; elseif (apu in $tietue.jatko) then choose $i in valo ($tietue, pU($tietue), vU($tietue)); result $i.alku, $i - alku; elseif (hanko in $tietue.jatko) then choose $i in valo ($tietue, kO($tietue), gO($tietue)); result $i.alku, $i - alku; elseif (hattu in $tietue.jatko) then choose $i in valo ($tietue, tU($tietue), U($tietue)); result $i.alku, $i - alku; elseif (hinku in $tietue.jatko) then choose $i in valo ($tietue, kU($tietue), gU($tietue)); result $i.alku, $i - alku; elseif (hoppu in $tietue.jatko) then choose $i in valo ($tietue, pU($tietue), U($tietue)); result $i.alku, $i - alku; elseif (kaarto in $tietue.jatko) then choose $i in valo ($tietue, tO($tietue), rO($tietue)); result $i.alku, $i - alku; elseif (kippo in $tietue.jatko) then choose $i in valo ($tietue, pO($tietue), O($tietue)); result $i.alku, $i - alku; elseif (koko in $tietue.jatko) then choose $i in koko ($tietue, kO($tietue), O($tietue), kO($tietue), zO($tietue)); result $i.alku, $i - alku; elseif (kumpu in $tietue.jatko) then choose $i in valo ($tietue, pU($tietue), mU($tietue)); result $i.alku, $i - alku; elseif (laatu in $tietue.jatko) then choose $i in valo ($tietue, tU($tietue), dU($tietue)); result $i.alku, $i - alku; elseif (lepo in $tietue.jatko) then choose $i in valo ($tietue, pO($tietue), vO($tietue)); result $i.alku, $i - alku; elseif (leuto in $tietue.jatko) then choose $i in valo ($tietue, tO($tietue), dO($tietue)); result $i.alku, $i - alku; elseif (liitto in $tietue.jatko) then choose $i in valo ($tietue, tO($tietue), O($tietue)); result $i.alku, $i - alku; elseif (lintu in $tietue.jatko) then choose $i in valo ($tietue, tU($tietue), nU($tietue)); result $i.alku, $i - alku; elseif (luku in $tietue.jatko) then choose $i in valo ($tietue, kU($tietue), vU($tietue)); result $i.alku, $i - alku; elseif (ruoko in $tietue.jatko) then choose $i in valo ($tietue, kO($tietue), zO($tietue)); result $i.alku, $i - alku; elseif (sampo in $tietue.jatko) then choose $i in valo ($tietue, pO($tietue), mO($tietue)); result $i.alku, $i - alku; elseif (tiuku in $tietue.jatko) then choose $i in valo ($tietue, kU($tietue), zU($tietue)); result $i.alku, $i - alku; elseif (verkko in $tietue.jatko) then choose $i in valo ($tietue, kO($tietue), O($tietue)); result $i.alku, $i - alku; elseif (vihko in $tietue.jatko) then choose $i in valo ($tietue, kO($tietue), O($tietue)); result $i.alku, $i - alku; ########################################## elseif (arvelu in $tietue.jatko) then choose $i in arvelu ($tietue, "", ""); result $i.alku, $i - alku; elseif (avanto in $tietue.jatko) then choose $i in arvelu ($tietue, tO($tietue), nO($tietue)); result $i.alku, $i - alku; elseif (alanko in $tietue.jatko) then choose $i in arvelu ($tietue, kO($tietue), gO($tietue)); result $i.alku, $i - alku; elseif (hontelo in $tietue.jatko) then choose $i in hontelo ($tietue); result $i.alku, $i - alku; elseif (pihatto in $tietue.jatko) then choose $i in arvelu ($tietue, tO($tietue), O($tietue)); result $i.alku, $i - alku; elseif (raamattu in $tietue.jatko) then choose $i in arvelu ($tietue, tU($tietue), U($tietue)); result $i.alku, $i - alku; ###################################### elseif (autio in $tietue.jatko) then choose $i in taivutuskaava ($tietue, yksikkö_autio ($tietue, "", [osanto_tA: ""]) + monikko7 ("", "", "", [omanto_iT: "", omanto_in: ""], [osanto_itA: ""], [sisätulento_ihin: ""], "")); result $i.alku, $i - alku; ################################################# elseif (laatikko in $tietue.jatko) then choose $i in laatikko ($tietue, kO($tietue), O($tietue), kO($tietue), O($tietue)); result $i.alku, $i - alku; ################################################# elseif (risti in $tietue.jatko) then choose $i in risti ($tietue, "", ""); result $i.alku, $i - alku; elseif (siisti in $tietue.jatko) then choose $i in siisti ($tietue, "", ""); result $i.alku, $i - alku; elseif (takki in $tietue.jatko) then choose $i in risti ($tietue, "k", ""); result $i.alku, $i - alku; elseif (renki in $tietue.jatko) then choose $i in risti ($tietue, "k", "g"); result $i.alku, $i - alku; elseif (keppi in $tietue.jatko) then choose $i in risti ($tietue, "p", ""); result $i.alku, $i - alku; elseif (hupi in $tietue.jatko) then choose $i in risti ($tietue, "p", "v"); result $i.alku, $i - alku; elseif (vati in $tietue.jatko) then choose $i in risti ($tietue, "t", "d"); result $i.alku, $i - alku; elseif (pelti in $tietue.jatko) then choose $i in risti ($tietue, "t", "l"); result $i.alku, $i - alku; elseif (tunti in $tietue.jatko) then choose $i in risti ($tietue, "t", "n"); result $i.alku, $i - alku; elseif (tatti in $tietue.jatko) then choose $i in risti ($tietue, "t", ""); result $i.alku, $i - alku; elseif (kiiski in $tietue.jatko) then choose $i in kiiski ($tietue); result $i.alku, $i - alku; #################################################3 elseif ((paperi in $tietue.jatko) or (banaali in $tietue.jatko)) then choose $i in paperi_banaali ($tietue, "", ""); result $i.alku, $i - alku; elseif (edam in $tietue.jatko) then choose $i in edam ($tietue, "", ""); result $i.alku, $i - alku; elseif (hollanti in $tietue.jatko) then choose $i in paperi_banaali ($tietue, "t", "n"); result $i.alku, $i - alku; elseif (kajakki in $tietue.jatko) then choose $i in paperi_banaali ($tietue, "k", ""); result $i.alku, $i - alku; elseif (killinki in $tietue.jatko) then choose $i in paperi_banaali ($tietue, "k", "g"); result $i.alku, $i - alku; elseif (konvehti in $tietue.jatko) then choose $i in paperi_banaali ($tietue, "t", "d"); result $i.alku, $i - alku; elseif (salaatti in $tietue.jatko) then choose $i in paperi_banaali ($tietue, "t", ""); result $i.alku, $i - alku; elseif (sinappi in $tietue.jatko) then choose $i in paperi_banaali ($tietue, "p", ""); result $i.alku, $i - alku; #################################################3 elseif (kalsium in $tietue.jatko) then choose $i in kalsium ($tietue, "", ""); result $i.alku, $i - alku; elseif (fan in $tietue.jatko) then choose $i in poppi ($tietue, "", ""); result $i.alku, $i - alku; elseif (pop in $tietue.jatko) then choose $i in poppi ($tietue, "p", ""); result $i.alku, $i - alku; elseif (punk in $tietue.jatko) then choose $i in poppi ($tietue, "k", ""); result $i.alku, $i - alku; ############################################## elseif (lovi in $tietue.jatko) then choose $i in lovi ($tietue, "", ""); result $i.alku, $i - alku; elseif (kaikki in $tietue.jatko) then choose $i in lovi ($tietue, "k", ""); result $i.alku, $i - alku; elseif (piki in $tietue.jatko) then choose $i in piki ($tietue, "k", "", "k", "'"); result $i.alku, $i - alku; elseif (kylki in $tietue.jatko) then choose $i in lovi ($tietue, "k", "j"); result $i.alku, $i - alku; elseif (hanki in $tietue.jatko) then choose $i in lovi ($tietue, "k", "g"); result $i.alku, $i - alku; elseif (jälki in $tietue.jatko) then choose $i in lovi ($tietue, "k", "j"); result $i.alku, $i - alku; elseif (veli in $tietue.jatko) then choose $i in taivutuskaava ($tietue, yksikkö8 ("je", "i", "je", "je", [osanto_A: "je"], sisätulento_Vn, "je", "i") + [johdin_tOn: "je", johdin_Us: "je", johdin_lAinen: "i", # Ei veli+lainen. johdin_mAinen: "i", johdin_inen: "j"] + monikko7 ("je", "j", "j", [omanto_ien: "j", omanto_en: "i"], [osanto_iA: "j"], [sisätulento_iin: "j"], "je")); result $i.alku, $i - alku; elseif (siipi in $tietue.jatko) then choose $i in lovi ($tietue, "p", "v"); result $i.alku, $i - alku; elseif (sampi in $tietue.jatko) then choose $i in lovi ($tietue, "p", "m"); result $i.alku, $i - alku; elseif (happi in $tietue.jatko) then choose $i in lovi ($tietue, "p", ""); result $i.alku, $i - alku; elseif (lehti in $tietue.jatko) then choose $i in lovi ($tietue, "t", "d"); result $i.alku, $i - alku; elseif (kumpi in $tietue.jatko) then choose $i in kumpi ($tietue, "p", "m", A($tietue)); result $i.alku, $i - alku; ############################################## elseif (lampi in $tietue.jatko) then choose $i in lovi ($tietue, "p", "m") + taivutuskaava ($tietue, [omanto_n: "mi", tulento_ksi: "mi", sisäolento_ssA: "mi", ulkopaikallissija_llA: "mi", vajanto_ttA: "mi", kerronto_sti: "mi", voittoaste: "mi", johdin_tOn: "mi", johdin_lAinen: "pe", johdin_mAinen: "pi", johdin_inen: "mi", nimentö_t: "mi", sija_monikko_1: "me", ulkopaikallissija_illA: "me", vajanto_ittA: "me", johdin_ittAin: "me"]); result $i.alku, $i - alku; elseif (toholampi in $tietue.jatko) then choose $i in taivutuskaava ($tietue, [nimentö: "pi", omanto_n: "mi", tulento_ksi: "mi", sisäolento_ssA: "mi", ulkopaikallissija_llA: "mi", vajanto_ttA: "mi", kerronto_sti: "mi", johdin_lAinen: "pi"]); result $i.alku, $i - alku; ############################################## elseif (nalle in $tietue.jatko) then choose $i in nalle ($tietue, "", ""); result $i.alku, $i - alku; elseif (atte in $tietue.jatko) then choose $i in nalle ($tietue, "te", "e"); result $i.alku, $i - alku; elseif (nukke in $tietue.jatko) then choose $i in nalle ($tietue, "ke", "e"); result $i.alku, $i - alku; elseif (kolme in $tietue.jatko) then choose $i in taivutuskaava ($tietue, yksikkö8 ("e", "e", "e", "e", [osanto_A: "e"], sisätulento_Vn, "e", "e") + [johdin_tOn: "e", johdin_Us: "e"] + # Ei tarvita johdosta johdin_inen. HV 13.5.2006. Eikä johdin_lAinen. HV 13.7.2006. # Eikä johdin_mAinen. HV 24.7.2006. monikko7 ("e", "", "", [omanto_en: "i", omanto_in: "e"], [osanto_iA: ""], [sisätulento_iin: ""], "e")); result $i.alku, $i - alku; ############################################## elseif (kala in $tietue.jatko) then choose $i in kala ($tietue, "", "", "e", ""); result $i.alku, $i - alku; elseif (aika in $tietue.jatko) then choose $i in kala ($tietue, "ik", "j", "je", ""); result $i.alku, $i - alku; elseif (aitta in $tietue.jatko) then choose $i in kala ($tietue, "t", "", "e", ""); result $i.alku, $i - alku; elseif (liika in $tietue.jatko) then choose $i in kala ($tietue, "k", "", "e", "o"); result $i.alku, $i - alku; elseif (haka in $tietue.jatko) then choose $i in kala ($tietue, "k", "", "e", ""); result $i.alku, $i - alku; elseif (hanka in $tietue.jatko) then choose $i in kala ($tietue, "k", "g", "ge", ""); result $i.alku, $i - alku; elseif (kampa in $tietue.jatko) then choose $i in kala ($tietue, "p", "m", "me", "m"); result $i.alku, $i - alku; elseif (kanta in $tietue.jatko) then choose $i in kala ($tietue, "t", "n", "na", "n"); result $i.alku, $i - alku; elseif (kappa in $tietue.jatko) then choose $i in kala ($tietue, "p", "", "e", ""); result $i.alku, $i - alku; elseif (nahka in $tietue.jatko) then choose $i in kala ($tietue, "k", "", "e", "") + taivutuskaava ($tietue, [omanto_n: kA($tietue), tulento_ksi: kA($tietue), sisäolento_ssA: kA($tietue), ulkopaikallissija_llA: kA($tietue), vajanto_ttA: kA($tietue), nimentö_t: kA($tietue), sija_monikko_1: kO($tietue), ulkopaikallissija_illA: kO($tietue), vajanto_ittA: kO($tietue), johdin_ittAin: kO($tietue)]); result $i.alku, $i - alku; elseif (napa in $tietue.jatko) then choose $i in kala ($tietue, "p", "v", "ve", "v"); result $i.alku, $i - alku; elseif (pata in $tietue.jatko) then choose $i in kala ($tietue, "t", "d", "de", "d") + taivutuskaava($tietue, [yliaste: "d" + O($tietue)]); result $i.alku, $i - alku; elseif (parta in $tietue.jatko) then choose $i in kala ($tietue, "t", "r", "re", ""); result $i.alku, $i - alku; elseif (raaka in $tietue.jatko) then choose $i in raaka ($tietue, "k", "'", "k", "", "e", ""); result $i.alku, $i - alku; elseif (valta in $tietue.jatko) then choose $i in kala ($tietue, "t", "l", "le", "l"); result $i.alku, $i - alku; ##################################################################### elseif (koira in $tietue.jatko) then choose $i in koira ($tietue, "", "", "e"); result $i.alku, $i - alku; elseif (hoikka in $tietue.jatko) then choose $i in koira ($tietue, "k", "", "e"); result $i.alku, $i - alku; elseif (honka in $tietue.jatko) then choose $i in koira ($tietue, "k", "g", "ge"); result $i.alku, $i - alku; elseif (huopa in $tietue.jatko) then choose $i in koira ($tietue, "p", "v", "ve"); result $i.alku, $i - alku; elseif (ikä in $tietue.jatko) then choose $i in koira ($tietue, "k", "", "e"); result $i.alku, $i - alku; elseif (juhta in $tietue.jatko) then choose $i in koira ($tietue, "t", "d", "de"); result $i.alku, $i - alku; elseif (kenttä in $tietue.jatko) then choose $i in koira ($tietue, "t", "", "e"); result $i.alku, $i - alku; elseif (kompa in $tietue.jatko) then choose $i in koira ($tietue, "p", "m", "me"); result $i.alku, $i - alku; elseif (kulta in $tietue.jatko) then choose $i in koira ($tietue, "t", "l", "le"); result $i.alku, $i - alku; elseif (poika in $tietue.jatko) then choose $i in koira ($tietue, "ik", "j", "je"); result $i.alku, $i - alku; elseif (suunta in $tietue.jatko) then choose $i in koira ($tietue, "t", "n", "ne"); result $i.alku, $i - alku; elseif (tolppa in $tietue.jatko) then choose $i in koira ($tietue, "p", "", "e"); result $i.alku, $i - alku; elseif (turta in $tietue.jatko) then choose $i in koira ($tietue, "t", "r", "re"); result $i.alku, $i - alku; elseif (ylkä in $tietue.jatko) then choose $i in koira ($tietue, "k", "j", "je"); result $i.alku, $i - alku; elseif (pitkä in $tietue.jatko) then choose $i in pitkä ($tietue); result $i.alku, $i - alku; elseif (ruoka in $tietue.jatko) then choose $i in ruoka ($tietue); result $i.alku, $i - alku; ################################################################ elseif (matala in $tietue.jatko) then choose $i in taivutuskaava ($tietue, yksikkö_autio ($tietue, A($tietue), [osanto_A: A($tietue)]) + monikko7 (A($tietue), "", "", [omanto_ien: "", omanto_in: A($tietue)], [osanto_iA: ""], [sisätulento_iin: ""], "")) + taivutuskaava ($tietue, monikko6 (O($tietue), O($tietue), [omanto_iT: O($tietue), omanto_jen: O($tietue)], [osanto_itA: O($tietue), osanto_jA: O($tietue)], [sisätulento_ihin: O($tietue)], O($tietue))); result $i.alku, $i - alku; elseif (vihanta in $tietue.jatko) then choose $i in vihanta ($tietue, "t", "n"); result $i.alku, $i - alku; elseif (mahorkka in $tietue.jatko) then choose $i in vihanta ($tietue, "k", ""); result $i.alku, $i - alku; ######################################################## elseif (asema in $tietue.jatko) then choose $i in asema ($tietue, "", ""); result $i.alku, $i - alku; elseif (emäntä in $tietue.jatko) then choose $i in asema ($tietue, "t", "n"); result $i.alku, $i - alku; ######################################################## elseif (kulkija in $tietue.jatko) then if ($tietue.luokka = nimisana) then choose $i in kulkija ($tietue, A($tietue), O($tietue)); result $i.alku, $i - alku; else # Erisnimi ei ole verbijohdos $tietue.alku := $tietue.alku + "j"; choose $i in apila ($tietue, A($tietue), O($tietue)); result $i.alku, $i - alku; end; elseif (apila in $tietue.jatko) then choose $i in apila ($tietue, A($tietue), O($tietue)); result $i.alku, $i - alku; elseif (video in $tietue.jatko) then choose $i in apila ($tietue, "", ""); result $i.alku, $i - alku; ######################################################## elseif (karahka in $tietue.jatko) then choose $i in taivutuskaava ($tietue, yksikkö_autio ($tietue, A($tietue), [osanto_A: A($tietue)]) + monikko7 (A($tietue), O($tietue), O($tietue), [omanto_iT: O($tietue), omanto_jen: O($tietue), omanto_in: A($tietue)], [osanto_itA: O($tietue), osanto_jA: O($tietue)], [sisätulento_ihin: O($tietue)], "")); result $i.alku, $i - alku; ########################################################## elseif (solakka in $tietue.jatko) then choose $i in solakka ($tietue, kA($tietue), A($tietue), kO($tietue), O($tietue)); result $i.alku, $i - alku; elseif (ulappa in $tietue.jatko) then choose $i in solakka ($tietue, pA($tietue), A($tietue), pO($tietue), O($tietue)); result $i.alku, $i - alku; elseif (savotta in $tietue.jatko) then choose $i in solakka ($tietue, tA($tietue), A($tietue), tO($tietue), O($tietue)); result $i.alku, $i - alku; elseif (veranta in $tietue.jatko) then choose $i in veranta ($tietue); result $i.alku, $i - alku; ########################################################## elseif (kantaja in $tietue.jatko) then choose $i in kantaja ($tietue); result $i.alku, $i - alku; elseif (apaja in $tietue.jatko) then choose $i in apaja ($tietue); result $i.alku, $i - alku; elseif (peruna in $tietue.jatko) then choose $i in taivutuskaava ($tietue, yksikkö_autio ($tietue, A($tietue), [osanto_A: A($tietue)]) + monikko7 (A($tietue), O($tietue), O($tietue), [omanto_iT: O($tietue), omanto_jen: O($tietue), omanto_in: A($tietue), omanto_ien: ""], [osanto_itA: O($tietue), osanto_jA: O($tietue), osanto_iA: ""], [sisätulento_ihin: O($tietue), sisätulento_iin: ""], O($tietue)) + [seuranto_ine: ""]); result $i.alku, $i - alku; elseif (opotta in $tietue.jatko) then choose $i in taivutuskaava ($tietue, [tavuviiva: tA($tietue), omistusliite: tA($tietue), nimentö: tA($tietue), omanto_n: A($tietue), osanto_A: tA($tietue), osanto_tA: tA($tietue), olento_nA: tA($tietue), tulento_ksi: A($tietue), sisäolento_ssA: A($tietue), sisätulento_Vn: tA($tietue), ulkopaikallissija_llA: A($tietue), vajanto_ttA: A($tietue), johdin_tOn: A($tietue), johdin_inen: A($tietue), nimentö_t: A($tietue), omanto_iT: O($tietue), omanto_jen: tO($tietue), omanto_in: tA($tietue), omanto_ien: "t", osanto_itA: O($tietue), osanto_jA: tO($tietue), osanto_iA: "t", olento_inA: tO($tietue), sija_monikko_1: O($tietue), sisätulento_ihin: tO($tietue), sisätulento_iin: "t", ulkopaikallissija_illA: O($tietue), vajanto_ittA: O($tietue), seuranto_ine: tO($tietue), johdin_ittAin: O($tietue)] + yhdyssana (tA($tietue))); result $i.alku, $i - alku; elseif (ainoa in $tietue.jatko) then choose $i in taivutuskaava ($tietue, yksikkö8 (A($tietue), A($tietue), A($tietue), A($tietue), [osanto_A: A($tietue), osanto_tA: A($tietue)], sisätulento_Vn, A($tietue), A($tietue)) + [johdin_tOn: A($tietue), johdin_Us: "", johdin_inen: A($tietue)] + monikko7 (A($tietue), "", "", [omanto_iT: "", omanto_in: A($tietue)], [osanto_itA: ""], [sisätulento_isiin: "", sisätulento_ihin: ""], "")); result $i.alku, $i - alku; elseif (korkea in $tietue.jatko) then define $a := taivutuskaava ($tietue, yksikkö8 (eA($tietue), eA($tietue), eA($tietue), eA($tietue), [osanto_A: eA($tietue), osanto_tA: eA($tietue)], sisätulento_Vn, eA($tietue), eA($tietue)) + [johdin_tOn: eA($tietue), johdin_Us: "e", johdin_inen: eA($tietue)] + monikko7 (eA($tietue), "e", "e", [omanto_iT: "e", omanto_in: eA($tietue)], [osanto_itA: "e"], [sisätulento_isiin: "e", sisätulento_ihin: "e"], "e")); choose $i in $a; result $i.alku, $i - alku; elseif (harteet in $tietue.jatko) then choose $i in taivutuskaava ($tietue, [johdin_tOn: "e", johdin_inen: ""] + # Ei tarvita johdosta lAinen. HV 13.7.2006. monikko7 ("e", "", "", [omanto_iT: ""], [osanto_itA: ""], [sisätulento_isiin: "", sisätulento_ihin: ""], "")); result $i.alku, $i - alku; ####################################################### elseif (suurempi in $tietue.jatko) then choose $i in , [])>; result $i.alku, $i - alku; ####################################################### elseif (vapaa in $tietue.jatko) then choose $i in vapaa ($tietue, A($tietue)); result $i.alku, $i - alku; ####################################################### elseif (tienoo in $tietue.jatko) then choose $i in vapaa ($tietue, O($tietue)); result $i.alku, $i - alku; ####################################################### elseif (leikkuu in $tietue.jatko) then choose $i in vapaa ($tietue, U($tietue)); result $i.alku, $i - alku; ####################################################### elseif (kamee in $tietue.jatko) then choose $i in kamee ($tietue, "e"); result $i.alku, $i - alku; elseif (tee in $tietue.jatko) then choose $i in tee ($tietue, "e"); result $i.alku, $i - alku; elseif (nugaa in $tietue.jatko) then choose $i in kamee ($tietue, A($tietue)); result $i.alku, $i - alku; elseif (trikoo in $tietue.jatko) then choose $i in kamee ($tietue, O($tietue)); result $i.alku, $i - alku; elseif (revyy in $tietue.jatko) then choose $i in kamee ($tietue, U($tietue)); result $i.alku, $i - alku; ##################################################### elseif (pii in $tietue.jatko) then choose $i in taivutuskaava ($tietue, yksikkö8 ("i", "i", "i", "i", [osanto_tA: "i"], sisätulento_hVn, "i", "i") + [johdin_tOn: "i", johdin_lAinen: "i", johdin_mAinen: "i", johdin_inen: ""] + monikko7 ("i", "", "", [omanto_iT: ""], [osanto_itA: ""], [sisätulento_ihin: ""], "")); result $i.alku, $i - alku; ############################################################## elseif (maa in $tietue.jatko) then choose $i in maa ($tietue, A($tietue)); result $i.alku, $i - alku; elseif (puu in $tietue.jatko) then choose $i in maa ($tietue, U($tietue)); result $i.alku, $i - alku; elseif (tiu in $tietue.jatko) then choose $i in tiu ($tietue, ""); result $i.alku, $i - alku; ############################################################## elseif (suo in $tietue.jatko) then choose $i in suo ($tietue, UO($tietue), O($tietue)); result $i.alku, $i - alku; elseif (tie in $tietue.jatko) then choose $i in suo ($tietue, "ie", "e"); result $i.alku, $i - alku; ############################################################## elseif (bébé in $tietue.jatko) then choose $i in taivutuskaava ($tietue, yksikkö8 ("", "", "", "", [osanto_tA: ""], sisätulento_hVn, "", "") + [johdin_tOn: "", johdin_mAinen: "", johdin_inen: ""] + monikko7 ("", "", "", [omanto_iT: ""], [osanto_itA: ""], [sisätulento_isiin: "", sisätulento_ihin: ""], "")); result $i.alku, $i - alku; ############################################################## elseif (rosé in $tietue.jatko) then choose $i in taivutuskaava ($tietue, yksikkö8 ("", "", "", "", [osanto_tA: ""], sisätulento_hVn, "", "") + [johdin_tOn: "", johdin_mAinen: "", johdin_lAinen: "", johdin_inen: ""] + monikko7 ("", "", "", [omanto_iT: ""], [osanto_itA: ""], [sisätulento_ihin: ""], "")); result $i.alku, $i - alku; elseif (spray in $tietue.jatko) then choose $i in taivutuskaava ($tietue, yksikkö8 ("", "", "", "", [osanto_tA: ""], sisätulento_hVn, "", "") + [johdin_tOn: "", johdin_mAinen: "", johdin_lAinen: "", johdin_inen: ""] + monikko7 ("", "", "", [omanto_iT: ""], [osanto_itA: ""], [sisätulento_ihin: ""], "")); result $i.alku, $i - alku; elseif (parfait in $tietue.jatko) then choose $i in taivutuskaava ($tietue, yksikkö8 ("'", "", "'", "'", [osanto_tA: "'"], sisätulento_hVn, "'", "") + [johdin_tOn: "'", johdin_inen: "'", liitesana: "'"] + monikko7 ("'", "'", "'", [omanto_iT: "'"], [osanto_itA: "'"], [sisätulento_ihin: "'"], "'")); result $i.alku, $i - alku; elseif (tuohi in $tietue.jatko) then choose $i in taivutuskaava ($tietue, yksikkö_tuohi ("e", "i") + monikko7 ("e", "", "", [omanto_ien: "", omanto_ten: ""], [osanto_iA: ""], [sisätulento_iin: ""], "")); result $i.alku, $i - alku; elseif (lohi in $tietue.jatko) then choose $i in taivutuskaava ($tietue, yksikkö_tuohi ("e", "i") + monikko7 ("e", "", "", [omanto_ien: ""], [osanto_iA: ""], [sisätulento_iin: ""], "")); result $i.alku, $i - alku; elseif (meri in $tietue.jatko) then choose $i in taivutuskaava ($tietue, yksikkö_meri ("e", "i") + monikko7 ("e", "", "", [omanto_ien: "", omanto_ten: ""], [osanto_iA: ""], [sisätulento_iin: ""], "")); result $i.alku, $i - alku; elseif (lahti in $tietue.jatko) then choose $i in taivutuskaava ($tietue, yksikkö8 ("te", "ti", "te", "de", [osanto_A: "te"], sisätulento_Vn, "de", "di") + [johdin_tOn: "de", johdin_lAinen: "te", johdin_mAinen: "ti", johdin_inen: "t"] + monikko7 ("de", "t", "d", [omanto_ien: "t", omanto_in: "te"], [osanto_iA: "t"], [sisätulento_iin: "t"], "d")); result $i.alku, $i - alku; elseif (lumi in $tietue.jatko) then choose $i in taivutuskaava ($tietue, yksikkö8 ("me", "mi", "me", "me", [osanto_tA: "n"], sisätulento_Vn, "me", "mi") + [johdin_tOn: "me", johdin_mAinen: "mi", johdin_inen: "m"] + monikko7 ("me", "m", "m", [omanto_ien: "m", omanto_ten: "n"], [osanto_iA: "m"], [sisätulento_iin: "m"], "m")); result $i.alku, $i - alku; elseif ((tuomi in $tietue.jatko) or (niemi in $tietue.jatko)) then choose $i in taivutuskaava ($tietue, yksikkö8 ("me", "mi", "me", "me", [osanto_A: "me", osanto_tA: "n"], sisätulento_Vn, "me", "mi") + [johdin_tOn: "me", johdin_lAinen: "me", johdin_mAinen: "mi", johdin_inen: "m"] + monikko7 ("me", "m", "m", [omanto_ien: "m", omanto_ten: "n"], [osanto_iA: "m"], [sisätulento_iin: "m"], "m")); result $i.alku, $i - alku; elseif (pieni in $tietue.jatko) then choose $i in taivutuskaava ($tietue, yksikkö8 ("e", "i", "e", "e", [osanto_tA: ""], sisätulento_Vn, "e", "i") + [johdin_tOn: "e", johdin_Us: "e", johdin_mAinen: "i", johdin_inen: ""] + monikko7 ("e", "", "", [omanto_ten: "", omanto_ien: ""], [osanto_iA: ""], [sisätulento_iin: ""], "")); result $i.alku, $i - alku; elseif (nuori in $tietue.jatko) then choose $i in taivutuskaava ($tietue, yksikkö8 ("e", "i", "e", "e", [osanto_tA: ""], sisätulento_Vn, "e", "i") + [johdin_tOn: "e", johdin_UUs: "", johdin_mAinen: "i", johdin_inen: ""] + monikko7 ("e", "", "", [omanto_ien: "", omanto_ten: ""], [osanto_iA: ""], [sisätulento_iin: ""], "")) + taivutuskaava ($tietue, [olento_nA: ""]); # Nuorna. # Ei tunnista olentoa nuor+ra. result $i.alku, $i - alku; ######################################### elseif (susi in $tietue.jatko) then choose $i in tosi ($tietue) + taivutuskaava ($tietue, [omanto_ten: "t"]); # Sutten. result $i.alku, $i - alku; ######################################### elseif (tosi in $tietue.jatko) then choose $i in tosi ($tietue); result $i.alku, $i - alku; ######################################### elseif (hirsi in $tietue.jatko) then choose $i in kansi ($tietue, "t", "r", "s"); result $i.alku, $i - alku; elseif (jälsi in $tietue.jatko) then choose $i in kansi ($tietue, "t", "l", "s"); result $i.alku, $i - alku; elseif (kansi in $tietue.jatko) then choose $i in kansi ($tietue, "t", "n", "t"); result $i.alku, $i - alku; ######################################### elseif (lapsi in $tietue.jatko) then choose $i in lapsi ($tietue) + taivutuskaava ($tietue, [osanto_tA: "s"]); # Lasta. result $i.alku, $i - alku; ######################################### elseif (hapsi in $tietue.jatko) then choose $i in lapsi ($tietue) + taivutuskaava ($tietue, [osanto_A: "pse"]); # Hapsea. result $i.alku, $i - alku; elseif (veitsi in $tietue.jatko) then choose $i in veitsi ($tietue); result $i.alku, $i - alku; elseif (suksi in $tietue.jatko) then choose $i in lovi ($tietue, "ks", "ks"); result $i.alku, $i - alku; elseif (uksi in $tietue.jatko) then choose $i in taivutuskaava ($tietue, yksikkö8 ("kse", "ksi", "kse", "kse", [osanto_A: "kse"], sisätulento_Vn, "kse", "ksi") + [johdin_tOn: "kse", johdin_mAinen: "ksi", johdin_inen: "ks"] + monikko7 ("kse", "ks", "ks", [omanto_en: "ksi"], [osanto_iA: "ks"], [sisätulento_iin: "ks"], "ks")); result $i.alku, $i - alku; elseif (kaksi in $tietue.jatko) then choose $i in taivutuskaava ($tietue, yksikkö8 ("hte", "ksi", "hte", "hde", [osanto_tA: "h"], sisätulento_Vn, "hde", "ksi") + [johdin_tOn: "hde", johdin_mAinen: "ksi", johdin_inen: "ks"] + monikko7 ("hde", "ks", "ks", [omanto_ien: "ks"], [osanto_iA: "ks"], [sisätulento_iin: "ks"], "ks")); result $i.alku, $i - alku; elseif (sankari in $tietue.jatko) then choose $i in paperi_banaali ($tietue, "", "") + taivutuskaava ($tietue, [omanto_ten: ""]); # Sankarten. result $i.alku, $i - alku; elseif (jumala in $tietue.jatko) then choose $i in koira ($tietue, "", "", "e") + taivutuskaava ($tietue, [omanto_ten: ""]); # Jumalten. result $i.alku, $i - alku; ########################################################## elseif (sisar in $tietue.jatko) then choose $i in sisar ($tietue, "", ""); result $i.alku, $i - alku; elseif (tytär in $tietue.jatko) then choose $i in sisar ($tietue, tAr($tietue), Ar($tietue)); result $i.alku, $i - alku; ########################################################## elseif (ien in $tietue.jatko) then choose $i in ahven ($tietue, "ken", "en"); result $i.alku, $i - alku; ########################################################## elseif (uistin in $tietue.jatko) then choose $i in uistin ($tietue, "m", "n"); result $i.alku, $i - alku; elseif (hapan in $tietue.jatko) then choose $i in hapan ($tietue, "pam", "an"); result $i.alku, $i - alku; elseif (kaadin in $tietue.jatko) then choose $i in uistin ($tietue, "tim", "din"); result $i.alku, $i - alku; elseif (kaavin in $tietue.jatko) then choose $i in uistin ($tietue, "pim", "vin"); result $i.alku, $i - alku; elseif (kerroin in $tietue.jatko) then choose $i in uistin ($tietue, "toim", "roin"); result $i.alku, $i - alku; elseif (kiharrin in $tietue.jatko) then choose $i in uistin ($tietue, "tim", "rin"); result $i.alku, $i - alku; elseif (laidun in $tietue.jatko) then choose $i in uistin ($tietue, "tum", "dun"); result $i.alku, $i - alku; elseif (poljin in $tietue.jatko) then choose $i in uistin ($tietue, "kim", "jin"); result $i.alku, $i - alku; elseif (puin in $tietue.jatko) then choose $i in uistin ($tietue, "kim", "in"); result $i.alku, $i - alku; elseif (sivellin in $tietue.jatko) then choose $i in uistin ($tietue, "tim", "lin"); result $i.alku, $i - alku; elseif (suodatin in $tietue.jatko) then choose $i in uistin ($tietue, "tim", "in"); result $i.alku, $i - alku; elseif (vaimennin in $tietue.jatko) then choose $i in uistin ($tietue, "tim", "nin"); result $i.alku, $i - alku; ########################################################## elseif (onneton in $tietue.jatko) then choose $i in onneton ($tietue, tO($tietue), O($tietue)); result $i.alku, $i - alku; elseif (alaston in $tietue.jatko) then choose $i in onneton ($tietue, O($tietue), O($tietue)); result $i.alku, $i - alku; ########################################################## elseif (lämmin in $tietue.jatko) then choose $i in taivutuskaava ($tietue, yksikkö8 ("pimä", "min", "pimä", "pimä", [osanto_tA: "min"], sisätulento_Vn, "pimä", "min") + [johdin_UUs: "pim"] + monikko7 ("pimä", "pim", "pim", [omanto_ien: "pim", omanto_in: "pimä"], [osanto_iA: "pim"], [sisätulento_iin: "pim"], "pim")); result $i.alku, $i - alku; elseif (pahin in $tietue.jatko) then choose $i in , [])> + taivutuskaava ($tietue, [olento_nA: "in"]); result $i.alku, $i - alku; elseif (vasen in $tietue.jatko) then # # Koska vasen on ainoa sana, joka taipuu tällä tavalla, # ei tarvitsen kirjoittaa "mp" + A($tietue) eikä "mm" + A($tietue). # choose $i in taivutuskaava ($tietue, yksikkö8 ("mpa", "n", "mpa", "mma", [osanto_A: "mpa", osanto_tA: "n"], sisätulento_Vn, "mma", "n") + monikko7 ("mma", "mp", "mm", [omanto_ien: "mp", omanto_ten: "n", omanto_in: "mpa"], [osanto_iA: "mp"], [sisätulento_iin: "mp"], "mm")); result $i.alku, $i - alku; # elseif (muuan in $tietue.jatko) then # Muu(d)an-sana taipuu kuten muutama, paitsi että osannolla ja omannolla # on myös muodot muu(d)a+tta ja muu(d)an+na, jotka ovat sanastossa. elseif (seitsemän in $tietue.jatko) then choose $i in taivutuskaava ($tietue, yksikkö8 (A($tietue), An($tietue), A($tietue), A($tietue), [osanto_A: A($tietue)], sisätulento_Vn, A($tietue), An($tietue)) + monikko7 (A($tietue), "", "", [omanto_ien: ""], [osanto_iA: ""], [sisätulento_iin: ""], "")); result $i.alku, $i - alku; elseif (nainen in $tietue.jatko) then choose $i in nainen ($tietue); result $i.alku, $i - alku; elseif (vastaus in $tietue.jatko) then choose $i in vastaus ($tietue); result $i.alku, $i - alku; #################################################### elseif (kalleus in $tietue.jatko) then choose $i in kalleus ($tietue); result $i.alku, $i - alku; #################################################### elseif (vieras in $tietue.jatko) then choose $i in vieras ($tietue, A($tietue), "s", "", ""); result $i.alku, $i - alku; elseif (antelias in $tietue.jatko) then choose $i in vieras ($tietue, A($tietue), "s", "", "is" + U($tietue)); result $i.alku, $i - alku; elseif (autuas in $tietue.jatko) then choose $i in vieras ($tietue, AA($tietue), As($tietue), A($tietue), ""); result $i.alku, $i - alku; elseif (laupias in $tietue.jatko) then choose $i in vieras ($tietue, "i" + AA($tietue), "i" + As($tietue), "i" + A($tietue), "e"); result $i.alku, $i - alku; elseif (harras in $tietue.jatko) then choose $i in vieras ($tietue, tAA($tietue), rAs($tietue), tA($tietue), tA($tietue)); result $i.alku, $i - alku; elseif (ahdas in $tietue.jatko) then choose $i in vieras ($tietue, tAA($tietue), dAs($tietue), tA($tietue), tA($tietue)); result $i.alku, $i - alku; elseif (avokas in $tietue.jatko) then choose $i in vieras ($tietue, kAA($tietue), As($tietue), kA($tietue), kU($tietue)); result $i.alku, $i - alku; elseif (asiakas in $tietue.jatko) then assert ($tietue.luokka = nimisana); choose $i in vieras ($tietue, kAA($tietue), As($tietue), kA($tietue), kU($tietue)) + sana_Us ($tietue); result $i.alku, $i - alku; elseif (vilkas in $tietue.jatko) then choose $i in vieras ($tietue, kAA($tietue), As($tietue), kA($tietue), kA($tietue)); result $i.alku, $i - alku; elseif (iäkäs in $tietue.jatko) then choose $i in vieras ($tietue, kAA($tietue), As($tietue), kA($tietue), kU($tietue)); result $i.alku, $i - alku; elseif (allas in $tietue.jatko) then choose $i in vieras ($tietue, tAA($tietue), lAs($tietue), tA($tietue), tA($tietue)); result $i.alku, $i - alku; elseif (hammas in $tietue.jatko) then choose $i in vieras ($tietue, pAA($tietue), mAs($tietue), pA($tietue), pA($tietue)); result $i.alku, $i - alku; elseif (kinnas in $tietue.jatko) then choose $i in vieras ($tietue, tAA($tietue), nAs($tietue), tA($tietue), tA($tietue)); result $i.alku, $i - alku; elseif (varas in $tietue.jatko) then choose $i in vieras ($tietue, kAA($tietue), As($tietue), kA($tietue), kA($tietue)); result $i.alku, $i - alku; elseif (saapas in $tietue.jatko) then choose $i in vieras ($tietue, pAA($tietue), As($tietue), pA($tietue), pA($tietue)); result $i.alku, $i - alku; elseif (ratas in $tietue.jatko) then choose $i in vieras ($tietue, tAA($tietue), As($tietue), tA($tietue), tA($tietue)); result $i.alku, $i - alku; elseif (varvas in $tietue.jatko) then choose $i in vieras ($tietue, pAA($tietue), vAs($tietue), pA($tietue), pA($tietue)); result $i.alku, $i - alku; elseif (kangas in $tietue.jatko) then choose $i in vieras ($tietue, kAA($tietue), gAs($tietue), kA($tietue), kA($tietue)); result $i.alku, $i - alku; elseif (paras in $tietue.jatko) then choose $i in paras ($tietue, hAA($tietue), As($tietue), hA($tietue), "e", hA($tietue)); result $i.alku, $i - alku; #################################################### elseif (kirves in $tietue.jatko) then choose $i in vieras ($tietue, "e", "s", "", "e"); result $i.alku, $i - alku; elseif (ies in $tietue.jatko) then choose $i in vieras ($tietue, "kee", "es", "ke", "ke"); result $i.alku, $i - alku; #################################################### elseif (kauris in $tietue.jatko) then choose $i in kauris ($tietue, ""); result $i.alku, $i - alku; elseif (ruis in $tietue.jatko) then choose $i in kauris ($tietue, "k"); result $i.alku, $i - alku; #################################################### elseif (kaunis in $tietue.jatko) then choose $i in kaunis ($tietue, "", "e"); result $i.alku, $i - alku; elseif (valmis in $tietue.jatko) then choose $i in kaunis ($tietue, "", "i"); result $i.alku, $i - alku; elseif (altis in $tietue.jatko) then choose $i in kaunis ($tietue, "t", "ti"); result $i.alku, $i - alku; #################################################### elseif (koiras in $tietue.jatko) then choose $i in vastaus ($tietue) + s_V_loppuinen ($tietue, A($tietue), "") + s_hV_loppuinen ($tietue, hA($tietue), "h"); result $i.alku, $i - alku; #################################################### elseif (mies in $tietue.jatko) then choose $i in taivutuskaava ($tietue, yksikkö8 ("he", "s", "he", "he", [osanto_tA: "s"], sisätulento_Vn, "he", "s") + [johdin_tOn: "he", johdin_UUs: "h", # Miehyys. Miehuus on pantava sanakirjaan. johdin_Us: "he", # Mieheys. johdin_mAinen: "s"] + monikko7 ("he", "h", "h", [omanto_ten: "s", omanto_ien: "h"], [osanto_iA: "h"], [sisätulento_iin: "h"], "h")); result $i.alku, $i - alku; elseif (airut in $tietue.jatko) then choose $i in taivutuskaava ($tietue, yksikkö8 ("e", "t", "e", "e", [osanto_ttA: ""], sisätulento_Vn, "e","t") + [johdin_tOn: "e", johdin_Us: "", johdin_mAinen: "t", johdin_inen: "e"] + monikko7 ("e", "", "", [omanto_iT: ""], [osanto_itA: ""], [sisätulento_isiin: "", sisätulento_ihin: ""], "")); result $i.alku, $i - alku; elseif (kevät in $tietue.jatko) then choose $i in taivutuskaava ($tietue, yksikkö8 (A($tietue), "t", A($tietue), A($tietue), [osanto_ttA: ""], sisätulento_seen, A($tietue), "t") + [johdin_tOn: A($tietue), johdin_mAinen: "t", johdin_inen: ""] + monikko7 (A($tietue), "", "", [omanto_iT: ""], [osanto_itA: ""], [sisätulento_isiin: "", sisätulento_ihin: ""], "")); result $i.alku, $i - alku; elseif (kahdeksas in $tietue.jatko) then choose $i in taivutuskaava ($tietue, yksikkö8 ("nte", "s", "nte", "nne", [osanto_ttA: ""], sisätulento_Vn, "nne", "s") + [nimentö_t: "nne", omanto_ien: "ns", osanto_iA: "ns", olento_inA: "ns", sija_monikko_1: "ns", sisätulento_iin: "ns", ulkopaikallissija_illA: "ns", vajanto_ittA: "ns", seuranto_ine: "ns"]); result $i.alku, $i - alku; elseif (tuhat in $tietue.jatko) then choose $i in taivutuskaava ($tietue, yksikkö8 ("nte", "t", "nte", "nne", [osanto_ttA: ""], sisätulento_Vn, "nne", "t") + monikko7 ("nne", "ns", "ns", [omanto_ien: "ns"], [osanto_iA: "ns"], [sisätulento_iin: "ns"], "ns")); result $i.alku, $i - alku; elseif (kuollut in $tietue.jatko) then choose $i in taivutuskaava ($tietue, yksikkö8 ("ee", Ut($tietue), "ee", "ee", [osanto_tA: Ut($tietue)], sisätulento_seen, "ee", Ut($tietue)) + [johdin_tOn: "ee", johdin_Us: "e", # Kuolleus. johdin_inen: "e"] + # Kuolleinen. monikko7 ("ee", "e", "e", [omanto_iT: "e"], [osanto_itA: "e"], [sisätulento_isiin: "e", sisätulento_ihin: "e"], "e")); result $i.alku, $i - alku; ###################################################### elseif (hame in $tietue.jatko) then choose $i in hame ($tietue, "", "e", ""); result $i.alku, $i - alku; elseif (alkeet in $tietue.jatko) then choose $i in alkeet ($tietue); result $i.alku, $i - alku; elseif (enne in $tietue.jatko) then choose $i in hame ($tietue, "ne", "tee", "te"); result $i.alku, $i - alku; elseif (helle in $tietue.jatko) then choose $i in hame ($tietue, "le", "tee", "te"); result $i.alku, $i - alku; elseif (kierre in $tietue.jatko) then choose $i in hame ($tietue, "re", "tee", "te"); result $i.alku, $i - alku; elseif (lahje in $tietue.jatko) then choose $i in hame ($tietue, "je", "kee", "ke"); result $i.alku, $i - alku; elseif (lape in $tietue.jatko) then choose $i in hame ($tietue, "e", "pee", "pe"); result $i.alku, $i - alku; elseif (lumme in $tietue.jatko) then choose $i in hame ($tietue, "me", "pee", "pe"); result $i.alku, $i - alku; elseif (sade in $tietue.jatko) then choose $i in hame ($tietue, "de", "tee", "te"); result $i.alku, $i - alku; elseif (taive in $tietue.jatko) then choose $i in hame ($tietue, "ve", "pee", "pe"); result $i.alku, $i - alku; elseif (tarvike in $tietue.jatko) then choose $i in hame ($tietue, "e", "kee", "ke"); result $i.alku, $i - alku; elseif (vaate in $tietue.jatko) then choose $i in hame ($tietue, "e", "tee", "te"); result $i.alku, $i - alku; elseif (viive in $tietue.jatko) then choose $i in hame ($tietue, "ve", "vee", "ve") + taivutuskaava ($tietue, [omistusliite: "pee", omanto_n: "pee", olento_nA: "pee", tulento_ksi: "pee", sisäolento_ssA: "pee", sisätulento_seen: "pee", ulkopaikallissija_llA: "pee", vajanto_ttA: "pee", johdin_tOn: "pee", johdin_inen: "pe", nimentö_t: "pee", omanto_iT: "pe", osanto_itA: "pe", olento_inA: "pe", sija_monikko_1: "pe", sisätulento_ihin: "pe", sisätulento_isiin: "pe", ulkopaikallissija_illA: "pe", vajanto_ittA: "pe", seuranto_ine: "pe"]); result $i.alku, $i - alku; ###################################################### elseif (terve in $tietue.jatko) then choose $i in hame ($tietue, "", "e", ""); result $i.alku, $i - alku; elseif (ori in $tietue.jatko) then choose $i in taivutuskaava ($tietue, yksikkö8 ("i", "", "i", "i", [osanto_ttA: ""], sisätulento_seen, "i", "") + [johdin_tOn: "i", johdin_mAinen: "", johdin_inen: "i"] + monikko7 ("", "", "", [omanto_iT: "", omanto_ten: "t"], [osanto_itA: ""], [sisätulento_isiin: "", sisätulento_ihin: ""], "")) + taivutuskaava ($tietue, [omanto_n: "hi", olento_nA: "hi", omanto_en: "hi", omanto_ten: "hit", osanto_itA: "h"]); # Ei tunnista monikon sisätulentoa orihisin. result $i.alku, $i - alku; ###########################################################3 elseif (kiiru in $tietue.jatko) then choose $i in hame ($tietue, "", U($tietue), ""); result $i.alku, $i - alku; ###########################################################3 elseif (askel in $tietue.jatko) then choose $i in taival ($tietue, "", ""); result $i.alku, $i - alku; elseif (auer in $tietue.jatko) then choose $i in taival ($tietue, "ter", "er"); result $i.alku, $i - alku; elseif (kannel in $tietue.jatko) then choose $i in taival ($tietue, "tel", "nel"); result $i.alku, $i - alku; elseif (kinner in $tietue.jatko) then choose $i in taival ($tietue, "ter", "ner"); result $i.alku, $i - alku; elseif (ommel in $tietue.jatko) then choose $i in taival ($tietue, "pel", "mel"); result $i.alku, $i - alku; elseif (penger in $tietue.jatko) then choose $i in taival ($tietue, "ker", "ger"); result $i.alku, $i - alku; elseif (piennar in $tietue.jatko) then choose $i in taival ($tietue, "tar", "nar"); result $i.alku, $i - alku; elseif (taival in $tietue.jatko) then choose $i in taival ($tietue, "pal", "val"); result $i.alku, $i - alku; elseif (säen in $tietue.jatko) then choose $i in taival ($tietue, "ken", "en"); result $i.alku, $i - alku; elseif (udar in $tietue.jatko) then choose $i in taival ($tietue, "tar", "dar"); result $i.alku, $i - alku; ############################################## # elseif (isoäiti in $tietue.jatko) then # elseif (nuoripari in $tietue.jatko) then elseif (minä in $tietue.jatko) then choose $i in taivutuskaava ($tietue, [omanto_n: "u", kohdanto_t: "u", osanto_A: "u", olento_nA: "u", tulento_ksi: "u", sisäolento_ssA: "u", sisätulento_Vn: "u", ulkopaikallissija_llA: "u"]) + , [äs: ä])>; result $i.alku, $i - alku; elseif (hän in $tietue.jatko) then choose $i in taivutuskaava ($tietue, [nimentö: "", omanto_n: "e", kohdanto_t: "e", osanto_tA: "", olento_nA: "e", tulento_ksi: "e", sisäolento_ssA: "e", sisätulento_Vn: "e", ulkopaikallissija_llA: "e"]); result $i.alku, $i - alku; elseif (me in $tietue.jatko) then choose $i in taivutuskaava ($tietue, [nimentö: "", omanto_idän: "", kohdanto_idät: "", osanto_itA: "", olento_inA: "", sija_monikko_1: "", sisätulento_ihin: "", ulkopaikallissija_illA: ""]); result $i.alku, $i - alku; elseif (joka in $tietue.jatko) then choose $i in taivutuskaava ($tietue, [nimentö: "ka", omanto_nkA: "", osanto_tA: "", olento_nA: "", tulento_ksi: "", sisäolento_ssA: "", sisätulento_hVn: "", sisätulento_nne: "", ulkopaikallissija_llA: ""] + monikko7 ([nimentö_tkA: ""], "", "", [omanto_iT: ""], [osanto_itA: ""], [sisätulento_ihin: ""], "")); result $i.alku, $i - alku; elseif (kymmenen in $tietue.jatko) then choose $i in taivutuskaava ($tietue, yksikkö8 ("e", "en", "e", "e", [osanto_tA: ""], sisätulento_Vn, "e", "") + monikko7 ("e", "", "", [omanto_ien: "", omanto_ten: ""], [osanto_iA: ""], [sisätulento_iin: ""], "")); result $i.alku, $i - alku; elseif (yö_yksikkö in $tietue.jatko) then choose $i in taivutuskaava ($tietue, yksikkö8 ("", "", "", "", [osanto_tA: ""], sisätulento_hVn, "", "") + [nimentö_t: "", johdin_tOn: ""]); result $i.alku, $i - alku; elseif (yö_monikko in $tietue.jatko) then choose $i in taivutuskaava ($tietue, [johdin_inen: ""] + monikko6 ("", "", [omanto_iT: ""], [osanto_itA: ""], [sisätulento_ihin: ""], "")); result $i.alku, $i - alku; ##%%%%%%%################ elseif (loitolla in $tietue.jatko) then choose $i in taivutuskaava ($tietue, [ulkopaikallissija_llA: ""]) + sivumpana ($tietue, "m" + pA($tietue), "m" + mA($tietue)); result $i.alku, $i - alku; elseif (sivumpana in $tietue.jatko) then choose $i in sivumpana ($tietue, pA($tietue), mA($tietue)); result $i.alku, $i - alku; elseif (keväämmällä in $tietue.jatko) then choose $i in keväämmällä ($tietue, pA($tietue), mA($tietue)); result $i.alku, $i - alku; ###################################### # Teonsanat. elseif (punoa in $tietue.jatko) then choose $i in punoa ($tietue, "", ""); result $i.alku, $i - alku; elseif (aikoa in $tietue.jatko) then choose $i in punoa ($tietue, kO($tietue), O($tietue)); result $i.alku, $i - alku; elseif (ampua in $tietue.jatko) then choose $i in punoa_punottaa ($tietue, pU($tietue), mU($tietue)); result $i.alku, $i - alku; elseif (asettua in $tietue.jatko) then choose $i in punoa ($tietue, tU($tietue), U($tietue)); result $i.alku, $i - alku; elseif (harppoa in $tietue.jatko) then choose $i in punoa ($tietue, pO($tietue), O($tietue)); result $i.alku, $i - alku; elseif (jakaantua in $tietue.jatko) then choose $i in punoa ($tietue, tU($tietue), nU($tietue)); result $i.alku, $i - alku; elseif (kaatua in $tietue.jatko) then choose $i in punoa ($tietue, tU($tietue), dU($tietue)); result $i.alku, $i - alku; elseif (kertoa in $tietue.jatko) then choose $i in punoa ($tietue, tO($tietue), rO($tietue)); result $i.alku, $i - alku; elseif (kiekua in $tietue.jatko) then choose $i in punoa ($tietue, kU($tietue), U($tietue)); result $i.alku, $i - alku; elseif (kieppua in $tietue.jatko) then choose $i in punoa ($tietue, pU($tietue), U($tietue)); result $i.alku, $i - alku; elseif (kumartua in $tietue.jatko) then choose $i in punoa ($tietue, tU($tietue), rU($tietue)); result $i.alku, $i - alku; elseif (leipoa in $tietue.jatko) then choose $i in punoa ($tietue, pO($tietue), vO($tietue)); result $i.alku, $i - alku; elseif (liukua in $tietue.jatko) then choose $i in punoa ($tietue, kU($tietue), zU($tietue)); result $i.alku, $i - alku; elseif (mankua in $tietue.jatko) then choose $i in punoa ($tietue, kU($tietue), gU($tietue)); result $i.alku, $i - alku; elseif (paleltua in $tietue.jatko) then choose $i in punoa ($tietue, tU($tietue), lU($tietue)); result $i.alku, $i - alku; elseif (penkoa in $tietue.jatko) then choose $i in punoa ($tietue, kO($tietue), gO($tietue)); result $i.alku, $i - alku; elseif (saapua in $tietue.jatko) then choose $i in punoa ($tietue, pU($tietue), vU($tietue)); result $i.alku, $i - alku; elseif (tahtoa in $tietue.jatko) then choose $i in punoa ($tietue, tO($tietue), dO($tietue)); result $i.alku, $i - alku; elseif (tempoa in $tietue.jatko) then choose $i in punoa ($tietue, pO($tietue), mO($tietue)); result $i.alku, $i - alku; elseif (viittoa in $tietue.jatko) then choose $i in punoa ($tietue, tO($tietue), O($tietue)); result $i.alku, $i - alku; ###################################### elseif (muistaa in $tietue.jatko) then choose $i in muistaa_muistella ($tietue, A($tietue), A($tietue), "", "") + muisto ($tietue) + muistua ($tietue); result $i.alku, $i - alku; elseif (aavistaa in $tietue.jatko) then choose $i in muistaa_muistella ($tietue, A($tietue), A($tietue), "", "") + aavistus ($tietue); result $i.alku, $i - alku; elseif (alittaa in $tietue.jatko) then choose $i in muistaa_muistella ($tietue, tA($tietue), A($tietue), "t", "") + taivutuskaava ($tietue, [johdin_Us_ksen: ""]); result $i.alku, $i - alku; elseif (astahtaa in $tietue.jatko) then choose $i in muistaa_muistella ($tietue, tA($tietue), dA($tietue), "t", "d") + taivutuskaava ($tietue, [johdin_Us_ksen: "d"]); # Astahdus. result $i.alku, $i - alku; elseif (autioittaa in $tietue.jatko) then choose $i in muistaa ($tietue, tA($tietue), A($tietue), "t", ""); result $i.alku, $i - alku; elseif (heittää in $tietue.jatko) then choose $i in muistaa_muistella ($tietue, tA($tietue), A($tietue), "t", "") + heitto ($tietue) + taivutuskaava ($tietue, [johdin_ntA: A($tietue)]); # Heitäntä. result $i.alku, $i - alku; elseif (hidastaa in $tietue.jatko) then choose $i in muistaa_muistella ($tietue, A($tietue), A($tietue), "", "") + aavistus ($tietue) # Hidastus. + muistua ($tietue); # Hidastua. result $i.alku, $i - alku; elseif (hohtaa in $tietue.jatko) then choose $i in muistaa_muistella ($tietue, tA($tietue), dA($tietue), "t", "d") + hohto ($tietue) + hohdattaa ($tietue, "t", "d"); result $i.alku, $i - alku; elseif (jättää in $tietue.jatko) then choose $i in muistaa_muistella ($tietue, tA($tietue), A($tietue), "t", "") + heitto ($tietue) + hohdattaa ($tietue, "", ""); result $i.alku, $i - alku; elseif (inttää in $tietue.jatko) then choose $i in muistaa_muistella ($tietue, tA($tietue), A($tietue), "t", ""); result $i.alku, $i - alku; elseif (itää in $tietue.jatko) then choose $i in muistaa_muistella ($tietue, tA($tietue), dA($tietue), "t", "d"); result $i.alku, $i - alku; elseif (hujahtaa in $tietue.jatko) then choose $i in muistaa_muistella ($tietue, "h" + tA($tietue), "h" + dA($tietue), "ht", "hd") + taivutuskaava ($tietue, [johdin_Us_ksen: "hd"]) # Hujahdus. + punottaa ($tietue, U($tietue)); # Hujauttaa. result $i.alku, $i - alku; elseif (kirjoittaa in $tietue.jatko) then choose $i in muistaa ($tietue, "it" + tA($tietue), "i" + tA($tietue), "itt", "it") + taivutuskaava ($tietue, [johdin_Us_ksen: "it"]) + # Kirjoitus. kirjoittautua ($tietue, "itt") + # Kirjoittautua. kirjoitella ($tietue, "it"); # Kirjoitella. result $i.alku, $i - alku; elseif (ammottaa in $tietue.jatko) then choose $i in muistaa ($tietue, "t" + tA($tietue), tA($tietue), "tt", "t") + taivutuskaava ($tietue, [johdin_Us_ksen: "t"]) + # Ammotus. kirjoittautua ($tietue, "tt") + # Ammottautua. kirjoitella ($tietue, "t"); # Ammotella. result $i.alku, $i - alku; elseif (kyntää in $tietue.jatko) then choose $i in muistaa ($tietue, tA($tietue), nA($tietue), "t", "n"); result $i.alku, $i - alku; elseif (kulahtaa in $tietue.jatko) then choose $i in muistaa ($tietue, tA($tietue), dA($tietue), "t", "d"); result $i.alku, $i - alku; elseif (loistaa in $tietue.jatko) then choose $i in muistaa_muistella ($tietue, A($tietue), A($tietue), "", "") + muisto ($tietue); result $i.alku, $i - alku; # Longertaa-sanan frekvenssi on 10, joten se ei tule mukaan Voikon sanastoon, # mutta lisätään tämä siltä varalta, että frekvenssiä muutetaan. # elseif (longertaa in $tietue.jatko) then choose $i in muistaa_muistella ($tietue, tA($tietue), rA($tietue), "t", "r") + taivutuskaava ($tietue, [johdin_Us_ksen: "r"]); result $i.alku, $i - alku; elseif (purkaa in $tietue.jatko) then choose $i in muistaa ($tietue, kA($tietue), A($tietue), "k", ""); result $i.alku, $i - alku; elseif (sulaa in $tietue.jatko) then choose $i in muistaa ($tietue, A($tietue), A($tietue), "", ""); result $i.alku, $i - alku; ###################################### elseif (huutaa in $tietue.jatko) then choose $i in huutaa ($tietue, "t", "d") + muistella ($tietue, "t", "d"); result $i.alku, $i - alku; elseif (alentaa in $tietue.jatko) then choose $i in huutaa ($tietue, "t", "n") + muistella ($tietue, "t", "n"); result $i.alku, $i - alku; elseif (soutaa in $tietue.jatko) then choose $i in huutaa ($tietue, "t", "d") + tositavan_kertoma($tietue, "t", "d") # Souti + muistella ($tietue, "t", "d"); # Soudella. result $i.alku, $i - alku; elseif (vuotaa in $tietue.jatko) then choose $i in huutaa ($tietue, "t", "d"); result $i.alku, $i - alku; ###################################### elseif (puoltaa in $tietue.jatko) then choose $i in huutaa ($tietue, "t", "l"); result $i.alku, $i - alku; elseif (juurtaa in $tietue.jatko) then choose $i in huutaa ($tietue, "t", "r"); result $i.alku, $i - alku; elseif (saksantaa in $tietue.jatko) then choose $i in huutaa ($tietue, "t", "n"); result $i.alku, $i - alku; elseif (sukeltaa in $tietue.jatko) then choose $i in huutaa ($tietue, "t", "l") + sana_Vs ($tietue, lU($tietue)) # Sukellus. + muistella ($tietue, "t", "l"); # Sukellella. result $i.alku, $i - alku; elseif (jäykentää in $tietue.jatko) then choose $i in huutaa ($tietue, "t", "n") + sana_Vs ($tietue, nU($tietue)) # Jäykennys. + muistella ($tietue, "t", "n"); # Jäykennellä. result $i.alku, $i - alku; elseif (paleltaa in $tietue.jatko) then choose $i in huutaa ($tietue, "t", "l") + sana_Vs ($tietue, lU($tietue)); result $i.alku, $i - alku; elseif (nuotintaa in $tietue.jatko) then choose $i in huutaa ($tietue, "t", "n") + sana_Vs ($tietue, nU($tietue)); result $i.alku, $i - alku; ###################################### elseif (murtaa in $tietue.jatko) then choose $i in huutaa ($tietue, "t", "r") + muistella ($tietue, "t", "r") + murros ($tietue) + murto ($tietue); result $i.alku, $i - alku; elseif (musertaa in $tietue.jatko) then choose $i in huutaa ($tietue, "t", "r") + muistella ($tietue, "t", "r") + sana_Vs ($tietue, rV($tietue)); result $i.alku, $i - alku; ###################################### elseif (pahentaa in $tietue.jatko) then choose $i in huutaa ($tietue, "t", "n") + taivutuskaava ($tietue, [johdin_Us_ksen: "n"]) # Pahennus. + muistella ($tietue, "t", "n") + pahentua ($tietue); result $i.alku, $i - alku; elseif (juontaa in $tietue.jatko) then choose $i in huutaa ($tietue, "t", "n") + juonto ($tietue) + muistella ($tietue, "t", "n"); result $i.alku, $i - alku; elseif (pyörtää in $tietue.jatko) then choose $i in huutaa ($tietue, "t", "r") + pyörtö ($tietue) + muistella ($tietue, "t", "r"); result $i.alku, $i - alku; ###################################### elseif (kaivaa in $tietue.jatko) then choose $i in kaivaa ($tietue, "", "", kantaja) + muistella ($tietue, "", "") # Kaivella. + taivutuskaava ($tietue, [johdin_ntA: A($tietue)]); # Kaivanta. result $i.alku, $i - alku; elseif (antaa in $tietue.jatko) then choose $i in kaivaa ($tietue, "t", "n", kantaja) + punottaa ($tietue, nA($tietue)) # Annattaa. + muistella ($tietue, "t", "n"); # Annella. result $i.alku, $i - alku; elseif (jakaa in $tietue.jatko) then choose $i in kaivaa ($tietue, "k", "", kantaja); result $i.alku, $i - alku; elseif (kapsaa in $tietue.jatko) then choose $i in taivutuskaava($tietue, [kestämän_tekijäpääte_y3: A($tietue), nimitapa_1_A: A($tietue), ehtotapa: A($tietue), johdin_ntA: A($tietue)]); result $i.alku, $i - alku; elseif (lappaa in $tietue.jatko) then choose $i in kaivaa ($tietue, "p", "", kantaja); result $i.alku, $i - alku; elseif (palaa in $tietue.jatko) then choose $i in kaivaa ($tietue, "", "", kantaja); result $i.alku, $i - alku; elseif (raataa in $tietue.jatko) then choose $i in kaivaa ($tietue, "t", "d", kantaja) + muistella ($tietue, "t", "d") # Raadella. + taivutuskaava ($tietue, [johdin_ntA: dA($tietue)]); # Raadanta. result $i.alku, $i - alku; elseif (saattaa in $tietue.jatko) then choose $i in kaivaa ($tietue, "t", "", kantaja) + muistella ($tietue, "t", ""); # Saatella. result $i.alku, $i - alku; ###################################### elseif (haastaa in $tietue.jatko) then choose $i in haastaa_haastella ($tietue, "", ""); result $i.alku, $i - alku; elseif (kaihtaa in $tietue.jatko) then choose $i in haastaa_haastella ($tietue, "t", "d"); result $i.alku, $i - alku; elseif (laittaa in $tietue.jatko) then choose $i in haastaa_haastella ($tietue, "t", ""); result $i.alku, $i - alku; ###################################### elseif (paistaa in $tietue.jatko) then choose $i in paistaa ($tietue, "", ""); result $i.alku, $i - alku; elseif (virkkaa in $tietue.jatko) then choose $i in paistaa ($tietue, "k", ""); result $i.alku, $i - alku; elseif (paahtaa in $tietue.jatko) then choose $i in paistaa ($tietue, "t", "d"); result $i.alku, $i - alku; elseif (taittaa in $tietue.jatko) then choose $i in paistaa ($tietue, "t", ""); result $i.alku, $i - alku; ###################################### elseif (saartaa in $tietue.jatko) then choose $i in tositavan_kertoman_vahva_aste ($tietue, "t") + tositavan_kertoman_vahva_aste ($tietue, "s") + käskytapa ($tietue, rA($tietue)) + taivutuskaava ($tietue, tositapa ($tietue, tA($tietue), rA($tietue), tO($tietue), rO($tietue), tositapa_4_tt ("re")) + ehtotapa_ttA ($tietue, tA($tietue), "re") + mahtotapa_ne_ttA ($tietue, tA($tietue), "re") + käskytapa_ttA ($tietue, tA($tietue), "re") + nimitapa_laatutapa ($tietue, tA($tietue), "re")) + tekijännimi ($tietue, tA($tietue), kulkija); result $i.alku, $i - alku; ###################################### elseif (laskea in $tietue.jatko) then choose $i in laskea_laskeskella ($tietue, "", ""); result $i.alku, $i - alku; elseif (hakea in $tietue.jatko) then choose $i in laskea_laskeskella ($tietue, "k", ""); result $i.alku, $i - alku; elseif (polkea in $tietue.jatko) then choose $i in laskea_laskeskella ($tietue, "k", "j"); result $i.alku, $i - alku; elseif (tunkea in $tietue.jatko) then choose $i in laskea_laskeskella ($tietue, "k", "g"); result $i.alku, $i - alku; elseif (kutea in $tietue.jatko) then choose $i in laskea_laskeskella ($tietue, "t", "d"); result $i.alku, $i - alku; elseif (rypeä in $tietue.jatko) then choose $i in laskea_laskeskella ($tietue, "p", "v"); result $i.alku, $i - alku; ###################################### elseif (tuntea in $tietue.jatko) then choose $i in käskytapa ($tietue, "ne") + taivutuskaava ($tietue, tositapa ($tietue, "te", "ne", "s", "s", tositapa_4_tt ("ne")) + ehtotapa_ttA ($tietue, "t", "ne") + mahtotapa_ne_ttA ($tietue, "te", "ne") + käskytapa_ttA ($tietue, "te", "ne") + nimitapa_laatutapa_i ($tietue, "te", "ne", "ti")) + tekijännimi ($tietue, "ti", kulkija); result $i.alku, $i - alku; ###################################### elseif (potea in $tietue.jatko) then choose $i in käskytapa ($tietue, "de") + taivutuskaava ($tietue, tositapa ($tietue, "te", "de", "t", "d", tositapa_4_tt ("de")) + ehtotapa_ttA ($tietue, "t", "de") + mahtotapa_ne_ttA ($tietue, "te", "de") + käskytapa_ttA ($tietue, "te", "de") + nimitapa_laatutapa_i ($tietue, "te", "de", "ti") + [johdin_ntA: "de"]) + tekijännimi ($tietue, "ti", kulkija); result $i.alku, $i - alku; ###################################### elseif (lähteä in $tietue.jatko) then choose $i in tositavan_kertoma ($tietue, "ks", "ks") # Läks+imme + ehtotapa2 ($tietue, "ks") # Läks+isi. + käskytapa ($tietue, "hde") + taivutuskaava ($tietue, tositapa ($tietue, "hte", "hde", "ht", "hd", tositapa_4_tt ("hde")) + ehtotapa_ttA ($tietue, "ht", "hde") + # Läht+isi. mahtotapa_ne_ttA ($tietue, "hte", "hde") + käskytapa_ttA ($tietue, "hte", "hde") + nimitapa_laatutapa_i ($tietue, "hte", "hde", "hti")) + tekijännimi ($tietue, "hti", kulkija) + tekijännimi ($tietue, "ksi", kulkija); result $i.alku, $i - alku; ###################################### elseif (sallia in $tietue.jatko) then choose $i in sallia ($tietue, "", ""); result $i.alku, $i - alku; elseif (empiä in $tietue.jatko) then choose $i in sallia ($tietue, "p", "m"); result $i.alku, $i - alku; elseif (hylkiä in $tietue.jatko) then choose $i in sallia ($tietue, "k", "j"); result $i.alku, $i - alku; elseif (kaapia in $tietue.jatko) then choose $i in sallia ($tietue, "p", "v"); result $i.alku, $i - alku; elseif (kontia in $tietue.jatko) then choose $i in sallia ($tietue, "t", "n"); result $i.alku, $i - alku; elseif (laatia in $tietue.jatko) then choose $i in sallia ($tietue, "t", "d"); result $i.alku, $i - alku; elseif (loikkia in $tietue.jatko) then choose $i in sallia ($tietue, "k", ""); result $i.alku, $i - alku; elseif (onkia in $tietue.jatko) then choose $i in sallia ($tietue, "k", "g"); result $i.alku, $i - alku; elseif (oppia in $tietue.jatko) then choose $i in sallia ($tietue, "p", ""); result $i.alku, $i - alku; elseif (poikia in $tietue.jatko) then choose $i in sallia ($tietue, "k", "'"); result $i.alku, $i - alku; elseif (sättiä in $tietue.jatko) then choose $i in sallia ($tietue, "t", ""); result $i.alku, $i - alku; ###################################### elseif (voida in $tietue.jatko) then choose $i in voida ($tietue, "i", ""); result $i.alku, $i - alku; elseif (kanavoida in $tietue.jatko) then choose $i in kanavoida ($tietue, "i", "") + haravoitua ($tietue); # Kanavoitua. result $i.alku, $i - alku; ###################################### elseif (saada in $tietue.jatko) then choose $i in voida ($tietue, A($tietue), ""); result $i.alku, $i - alku; ###################################### elseif (myydä in $tietue.jatko) then choose $i in voida ($tietue, U($tietue), ""); result $i.alku, $i - alku; ###################################### elseif (juoda in $tietue.jatko) then choose $i in voida ($tietue, UO($tietue), O($tietue)); result $i.alku, $i - alku; ###################################### elseif (viedä in $tietue.jatko) then choose $i in voida ($tietue, "ie", "e"); result $i.alku, $i - alku; ###################################### elseif (käydä in $tietue.jatko) then choose $i in voida ($tietue, U($tietue), "v"); result $i.alku, $i - alku; ###################################### elseif (nuolaista in $tietue.jatko) then choose $i in nuolaista2 ($tietue); result $i.alku, $i - alku; elseif (rangaista in $tietue.jatko) then choose $i in nuolaista ($tietue, "kais", "gais") + sana_U ($tietue, "kais"); result $i.alku, $i - alku; elseif (kalista in $tietue.jatko) then choose $i in nuolaista ($tietue, "is", "is") + kihinä ($tietue); # Kalina. result $i.alku, $i - alku; elseif (seistä in $tietue.jatko) then choose $i in seistä ($tietue); result $i.alku, $i - alku; elseif (nousta in $tietue.jatko) then choose $i in nuolaista ($tietue, "", "") + sana_U ($tietue + [äs: ääntiösointu($tietue)], ""); # Nousu. result $i.alku, $i - alku; elseif (vavista in $tietue.jatko) then choose $i in nuolaista ($tietue, "pis", "vis"); result $i.alku, $i - alku; ###################################### elseif (tulla in $tietue.jatko) then choose $i in tulla ($tietue, tositapa_4_l(""), mahtotapa_le, nimitapa_1_lA, "l", laatutapa_2_lUt ($tietue, "")); result $i.alku, $i - alku; elseif (nuolla in $tietue.jatko) then choose $i in tulla ($tietue, tositapa_4_l(""), mahtotapa_le, nimitapa_1_lA, "l", laatutapa_2_lUt ($tietue, "")) + muistella ($tietue, "esk", "esk"); # Nuoleskella. result $i.alku, $i - alku; ###################################### elseif (purra in $tietue.jatko) then choose $i in tulla ($tietue, tositapa_4_r(""), mahtotapa_re, nimitapa_1_rA, "r", laatutapa_2_rUt ($tietue, "", "")) + taivutuskaava ($tietue, [johdin_ntA: "e"]); result $i.alku, $i - alku; ###################################### elseif (mennä in $tietue.jatko) then choose $i in tulla ($tietue, tositapa_4_n(""), mahtotapa_ne, nimitapa_1_nA, "n", laatutapa_2_nUt ($tietue, "", "")); result $i.alku, $i - alku; ###################################### elseif (katsella in $tietue.jatko) then choose $i in katsella ($tietue, "", ""); result $i.alku, $i - alku; elseif (kohdella in $tietue.jatko) then choose $i in katsella ($tietue, "tel", "del"); result $i.alku, $i - alku; elseif (nakella in $tietue.jatko) then choose $i in katsella ($tietue, "kel", "el"); result $i.alku, $i - alku; elseif (takellella in $tietue.jatko) then choose $i in katsella ($tietue, "tel", "lel"); result $i.alku, $i - alku; elseif (ommella in $tietue.jatko) then choose $i in katsella ($tietue, "pel", "mel"); result $i.alku, $i - alku; elseif (pienennellä in $tietue.jatko) then choose $i in katsella ($tietue, "tel", "nel"); result $i.alku, $i - alku; elseif (tapella in $tietue.jatko) then choose $i in katsella ($tietue, "pel", "el"); result $i.alku, $i - alku; elseif (askarrella in $tietue.jatko) then choose $i in katsella ($tietue, "tel", "rel"); result $i.alku, $i - alku; elseif (aatella in $tietue.jatko) then choose $i in katsella ($tietue, "tel", "el"); result $i.alku, $i - alku; elseif (kirjoitella in $tietue.jatko) then choose $i in katsella ($tietue, "tel", "el"); result $i.alku, $i - alku; ###################################### elseif (arvailla in $tietue.jatko) then choose $i in arvailla ($tietue); result $i.alku, $i - alku; ###################################### elseif (haravoida in $tietue.jatko) then choose $i in tositavan_kestämä_y3 ($tietue, "i") + käskytapa ($tietue, "i") + taivutuskaava ($tietue, tositapa_ei_kestämä_y3 ($tietue, "i", "i", "", "", tositapa_4_d ("i")) + ehtotapa_tA ($tietue, "", "i") + mahtotapa_ne_tA ($tietue, "i", "i") + käskytapa_tA ($tietue, "i", "i") + [nimitapa_1_dA: "i", nimitapa_2: "id", nimitapa_2_tA: "i"] + nimitapa_3_tA_4 ($tietue, "i", "i") + laatutapa_1_tA ($tietue, "i", "i") + laatutapa_2_nUt_dU ($tietue, "i", "i") + [johdin_nti: "i"]) + taivutuskaava ($tietue, tositapa0 ($tietue, "itse", "itse", "its", "its") + [tositavan_kertoma_tiin: "it", ehtotapa: "its"]) + tekijännimi ($tietue, "i", kantaja) + tekijännimi ($tietue, "itsi", kulkija) + haravoitua ($tietue); result $i.alku, $i - alku; ###################################### elseif (valita in $tietue.jatko) then choose $i in ehtotapa2 ($tietue, "tse") # Valitse+isi. + käskytapa ($tietue, "tse") + taivutuskaava ($tietue, tositapa ($tietue, "tse", "tse", "ts", "ts", tositapa_4_tt ("")) + ehtotapa_ttA ($tietue, "ts", "") + mahtotapa_ne_ttA ($tietue, "n", "") + käskytapa_ttA ($tietue, "t", "") + [nimitapa_1_tA: "", nimitapa_2: "t", nimitapa_2_ttA: ""] + nimitapa_3_ttA_4 ($tietue, "tse", "tse") + laatutapa_1_ttA ($tietue, "tse", "") + laatutapa_2_nUt_ttU ($tietue, "n", "") + [johdin_ntA: ""]) + tekijännimi ($tietue, "tsi", kulkija); result $i.alku, $i - alku; ###################################### elseif (juosta in $tietue.jatko) then choose $i in käskytapa ($tietue, "kse") + taivutuskaava ($tietue, tositapa ($tietue, "kse", "kse", "ks", "ks", tositapa_4_t ("s")) + ehtotapa_tA ($tietue, "ks", "s") + mahtotapa_se_tA ($tietue, "s", "s") + käskytapa_tA ($tietue, "s", "s") + [nimitapa_1_tA: "s", nimitapa_2: "st", nimitapa_2_tA: "s"] + nimitapa_3_tA_4 ($tietue, "kse", "s") + laatutapa_1_tA ($tietue, "kse", "s") + laatutapa_2_sUt ($tietue, "s")) + tekijännimi ($tietue, "ksi", kulkija); result $i.alku, $i - alku; ###################################### elseif (nähdä in $tietue.jatko) then choose $i in käskytapa ($tietue, "e") + taivutuskaava ($tietue, tositapa ($tietue, "ke", "e", "k", "", tositapa_4_d ("h")) + ehtotapa_tA ($tietue, "k", "h") + mahtotapa_ne_tA ($tietue, "h", "h") + käskytapa_tA ($tietue, "h", "h") + [nimitapa_1_dA: "h", nimitapa_2: "hd", nimitapa_2_tA: "h"] + nimitapa_3_tA_4 ($tietue, "ke", "h") + laatutapa_1_tA ($tietue, "ke", "h") + laatutapa_2_nUt_dU ($tietue, "h", "h")) + tekijännimi ($tietue, "ki", kulkija); result $i.alku, $i - alku; ###################################### elseif (aleta in $tietue.jatko) then choose $i in aleta ($tietue, "", "") + alentaa ($tietue, "") + alentua ($tietue, "") + alennella ($tietue, ""); result $i.alku, $i - alku; elseif (edetä in $tietue.jatko) then choose $i in aleta ($tietue, "te", "de"); result $i.alku, $i - alku; elseif (erata in $tietue.jatko) then choose $i in aleta ($tietue, kA($tietue), A($tietue)); result $i.alku, $i - alku; elseif (hapata in $tietue.jatko) then choose $i in aleta ($tietue, pA($tietue), A($tietue)); result $i.alku, $i - alku; elseif (kangeta in $tietue.jatko) then choose $i in aleta ($tietue, "ke", "ge"); result $i.alku, $i - alku; elseif (kaveta in $tietue.jatko) then choose $i in aleta ($tietue, "pe", "ve") + alentaa ($tietue, "ve") + alennella ($tietue, "ve"); result $i.alku, $i - alku; elseif (kevetä in $tietue.jatko) then choose $i in aleta ($tietue, "pe", "ve") + aleta ($tietue, "ve", "ve") + alentaa ($tietue, "ve") + alennella ($tietue, "ve"); result $i.alku, $i - alku; elseif (leudota in $tietue.jatko) then choose $i in aleta ($tietue, tO($tietue), dO($tietue)); result $i.alku, $i - alku; elseif (loitota in $tietue.jatko) then choose $i in aleta ($tietue, tO($tietue), O($tietue)); result $i.alku, $i - alku; elseif (lämmetä in $tietue.jatko) then choose $i in aleta ($tietue, "pe", "me"); result $i.alku, $i - alku; elseif (mädätä in $tietue.jatko) then choose $i in aleta ($tietue, tA($tietue), dA($tietue)); result $i.alku, $i - alku; elseif (suipeta in $tietue.jatko) then choose $i in aleta ($tietue, "pe", "e"); result $i.alku, $i - alku; elseif (tarjeta in $tietue.jatko) then choose $i in aleta ($tietue, "ke", "je"); result $i.alku, $i - alku; elseif (ulota in $tietue.jatko) then choose $i in aleta ($tietue, kO($tietue), O($tietue)); result $i.alku, $i - alku; elseif (vaieta in $tietue.jatko) then choose $i in aleta ($tietue, "ke", "e"); result $i.alku, $i - alku; ###################################### elseif (salata in $tietue.jatko) then choose $i in salata_salailla ($tietue, A($tietue), A($tietue)); result $i.alku, $i - alku; elseif (digata in $tietue.jatko) then choose $i in salata_salailla ($tietue, gA($tietue), A($tietue)) + salaus ($tietue, gA($tietue)); result $i.alku, $i - alku; elseif (hangata in $tietue.jatko) then choose $i in salata_salailla ($tietue, kA($tietue), gA($tietue)); result $i.alku, $i - alku; elseif (huiskata in $tietue.jatko) then choose $i in salata_salailla ($tietue, A($tietue), A($tietue)) + huiskaista ($tietue, A($tietue)); result $i.alku, $i - alku; elseif (kammata in $tietue.jatko) then choose $i in salata_salailla ($tietue, pA($tietue), mA($tietue)); result $i.alku, $i - alku; elseif (kelvata in $tietue.jatko) then choose $i in salata_salailla ($tietue, pA($tietue), vA($tietue)); result $i.alku, $i - alku; elseif (kerrata in $tietue.jatko) then choose $i in salata_salailla ($tietue, tA($tietue), rA($tietue)); result $i.alku, $i - alku; elseif (kuitata in $tietue.jatko) then choose $i in salata_salailla ($tietue, tA($tietue), A($tietue)); result $i.alku, $i - alku; elseif (ladata in $tietue.jatko) then choose $i in salata_salailla ($tietue, tA($tietue), dA($tietue)); result $i.alku, $i - alku; elseif (peljätä in $tietue.jatko) then choose $i in salata_salailla ($tietue, kA($tietue), jA($tietue)); result $i.alku, $i - alku; elseif (pakata in $tietue.jatko) then choose $i in salata_salailla ($tietue, kA($tietue), A($tietue)); result $i.alku, $i - alku; elseif (lobata in $tietue.jatko) then choose $i in salata_salailla ($tietue, bA($tietue), A($tietue)); result $i.alku, $i - alku; elseif (pompata in $tietue.jatko) then choose $i in salata_salailla ($tietue, pA($tietue), A($tietue)); result $i.alku, $i - alku; elseif (saneerata in $tietue.jatko) then choose $i in salata ($tietue, A($tietue), A($tietue)); result $i.alku, $i - alku; elseif (suunnata in $tietue.jatko) then choose $i in salata_salailla ($tietue, tA($tietue), nA($tietue)); result $i.alku, $i - alku; elseif (taata in $tietue.jatko) then choose $i in salata_salailla ($tietue, kA($tietue), A($tietue)); result $i.alku, $i - alku; elseif (vallata in $tietue.jatko) then choose $i in salata_salailla ($tietue, tA($tietue), lA($tietue)); result $i.alku, $i - alku; ###################################### elseif (katketa in $tietue.jatko) then choose $i in katketa ($tietue, "", ""); result $i.alku, $i - alku; elseif (todeta in $tietue.jatko) then choose $i in katketa ($tietue, "te", "de"); result $i.alku, $i - alku; elseif (langeta in $tietue.jatko) then choose $i in katketa ($tietue, "ke", "ge"); result $i.alku, $i - alku; elseif (lohjeta in $tietue.jatko) then choose $i in katketa ($tietue, "ke", "je"); result $i.alku, $i - alku; elseif (poiketa in $tietue.jatko) then choose $i in katketa ($tietue, "ke", "e"); result $i.alku, $i - alku; elseif (kammeta in $tietue.jatko) then choose $i in katketa ($tietue, "pe", "me"); result $i.alku, $i - alku; elseif (ruveta in $tietue.jatko) then choose $i in katketa ($tietue, "pe", "ve"); result $i.alku, $i - alku; elseif (lotota in $tietue.jatko) then choose $i in katketa ($tietue, tO($tietue), O($tietue)); result $i.alku, $i - alku; ###################################### elseif (selvitä in $tietue.jatko) then choose $i in selvitä ($tietue, "i", "i"); result $i.alku, $i - alku; elseif (keritä in $tietue.jatko) then choose $i in selvitä ($tietue, "ki", "i"); result $i.alku, $i - alku; elseif (lämmitä in $tietue.jatko) then choose $i in selvitä ($tietue, "pi", "mi"); result $i.alku, $i - alku; elseif (hellitä in $tietue.jatko) then choose $i in selvitä ($tietue, "ti", "li"); result $i.alku, $i - alku; ###################################### elseif (kohota in $tietue.jatko) then choose $i in kohota_kohoilla ($tietue, "", ""); result $i.alku, $i - alku; elseif (irrota in $tietue.jatko) then choose $i in kohota_kohoilla ($tietue, tO($tietue), rO($tietue)); result $i.alku, $i - alku; elseif (kadota in $tietue.jatko) then choose $i in kohota_kohoilla ($tietue, tO($tietue), dO($tietue)); result $i.alku, $i - alku; elseif (puota in $tietue.jatko) then choose $i in kohota_kohoilla ($tietue, tO($tietue), O($tietue)); result $i.alku, $i - alku; elseif (kimmota in $tietue.jatko) then choose $i in kohota_kohoilla ($tietue, pO($tietue), mO($tietue)); result $i.alku, $i - alku; elseif (laota in $tietue.jatko) then choose $i in kohota_kohoilla ($tietue, kO($tietue), O($tietue)); result $i.alku, $i - alku; elseif (lingota in $tietue.jatko) then choose $i in kohota_kohoilla ($tietue, kO($tietue), gO($tietue)); result $i.alku, $i - alku; elseif (netota in $tietue.jatko) then choose $i in kohota_kohoilla ($tietue, tO($tietue), O($tietue)); result $i.alku, $i - alku; elseif (saota in $tietue.jatko) then choose $i in kohota ($tietue, kO($tietue), O($tietue)); result $i.alku, $i - alku; elseif (siivota in $tietue.jatko) then choose $i in kohota_kohoilla ($tietue, "", "") + taivutuskaava ($tietue, [johdin_Us_ksen: ""]); result $i.alku, $i - alku; elseif (turvota in $tietue.jatko) then choose $i in kohota_kohoilla ($tietue, pO($tietue), vO($tietue)); result $i.alku, $i - alku; elseif (upota in $tietue.jatko) then choose $i in kohota_kohoilla ($tietue, pO($tietue), O($tietue)); result $i.alku, $i - alku; ###################################### elseif (haluta in $tietue.jatko) then choose $i in haluta ($tietue, "", ""); result $i.alku, $i - alku; elseif (bingota in $tietue.jatko) then choose $i in haluta ($tietue, "", ""); result $i.alku, $i - alku; elseif (juoruta in $tietue.jatko) then choose $i in haluta ($tietue, "", "") + salailla ($tietue, ""); # Juoruilla. result $i.alku, $i - alku; elseif (kavuta in $tietue.jatko) then choose $i in haluta ($tietue, pU($tietue), vU($tietue)) + salailla ($tietue, pU($tietue)); # Kapuilla. result $i.alku, $i - alku; elseif (kummuta in $tietue.jatko) then choose $i in haluta ($tietue, pU($tietue), mU($tietue)) + salailla ($tietue, pU($tietue)); # Kumpuilla. result $i.alku, $i - alku; elseif (luututa in $tietue.jatko) then choose $i in haluta ($tietue, tU($tietue), U($tietue)) + salailla ($tietue, tU($tietue)); # Luuttuilla. result $i.alku, $i - alku; elseif (ryöpytä in $tietue.jatko) then choose $i in haluta ($tietue, pU($tietue), U($tietue)) + salailla ($tietue, pU($tietue)); # Ryöppyillä. result $i.alku, $i - alku; elseif (takuta in $tietue.jatko) then choose $i in haluta ($tietue, kU($tietue), U($tietue)) + salailla ($tietue, kU($tietue)); # Takkuilla. result $i.alku, $i - alku; elseif (silputa in $tietue.jatko) then choose $i in haluta ($tietue, pU($tietue), U($tietue)); result $i.alku, $i - alku; elseif (vivuta in $tietue.jatko) then choose $i in haluta ($tietue, pU($tietue), vU($tietue)); result $i.alku, $i - alku; ###################################### elseif (kihistä in $tietue.jatko) then choose $i in kihistä ($tietue) + kihinä ($tietue) + kihahtaa ($tietue) + kihauttaa_kihautella ($tietue); result $i.alku, $i - alku; elseif (kitistä in $tietue.jatko) then choose $i in kihistä ($tietue) + kihinä ($tietue); result $i.alku, $i - alku; ###################################### elseif (taitaa in $tietue.jatko) then choose $i in käskytapa ($tietue, dA($tietue)) + taivutuskaava ($tietue, tositapa ($tietue, tA($tietue), dA($tietue), "s", "s", tositapa_4_tt ("de")) + ehtotapa_ttA ($tietue, tA($tietue), "de") + mahtotapa_ne_ttA ($tietue, tA($tietue), "de") + käskytapa_ttA ($tietue, tA($tietue), "de") + nimitapa_laatutapa ($tietue, tA($tietue), "de")) + taivutuskaava ($tietue, [mahtotapa_ne: "n"] + # Tain+ne+e. laatutapa_2_nUt_ttU ($tietue, "n", "")) + , [])> # Tait+tiin. + tekijännimi ($tietue, tA($tietue), kantaja); result $i.alku, $i - alku; ###################################### elseif (antautua in $tietue.jatko) then choose $i in antautua ($tietue, tU($tietue), dU($tietue)); result $i.alku, $i - alku; ###################################### elseif (kaata in $tietue.jatko) then choose $i in käskytapa ($tietue, dA($tietue)) + taivutuskaava ($tietue, tositapa ($tietue, tA($tietue), dA($tietue), "s", "s", tositapa_4_tt ("")) + ehtotapa_ttA ($tietue, tA($tietue), "de") + mahtotapa_ne_ttA ($tietue, "n", "de") + käskytapa_ttA ($tietue, "t", "de") + [nimitapa_1_tA: "", nimitapa_2: "d", nimitapa_2_ttA: "de"] + nimitapa_3_ttA_4 ($tietue, tA($tietue), "de") + laatutapa_1_ttA ($tietue, tA($tietue), "de") + laatutapa_2_nUt_ttU ($tietue, "n", "")) + tekijännimi ($tietue, tA($tietue), kantaja); result $i.alku, $i - alku; ###################################### # Vaillinnainen taivutus. # # elseif (kumajaa in $tietue.jatko) then # elseif (kaikaa in $tietue.jatko) then ###################################### elseif (olla in $tietue.jatko) then choose $i in + @kertoman_tekijäpääte, []), taivutus ($tietue, "l", , []), taivutus ($tietue, "e", , []), taivutus ($tietue, "e", , [tapaluokka: käskytapa, aikamuoto: kestämä, luku: yksikkö, tekijä: tekijä_2])>; result $i.alku, $i - alku; elseif (lienee in $tietue.jatko) then choose $i in ; result $i.alku, $i - alku; #======================================== # Suomi-malaga 0.9.7 elseif (oltu in $tietue.jatko) then choose $i in valo ($tietue, "t"+U($tietue), "l"+U($tietue)); if (value_type($i) = record) then result $i.alku, $i - alku; else foreach $j in $i: result $j.alku, $j - alku; end; end; # END Suomi-malaga 0.9.7 elseif ($tietue.alku /= nil) then if not @voikko_debug then $tietue :=- omistusliite; end; result $tietue.alku, $tietue - alku; else result $tietue.perusmuoto, $tietue - alku; end; end; # $tietue Sanastosta (tiedostosta *.lex) luettu tietue. # $lisä Merkkijono, joka lisätään sanan alkuosaan ennen sijapäätteitä. # Esimerkiksi sanan valkoinen alkuosa on valkoi. # Tähän lisätään merkkijonot # nen valkoi+nen # s valkoi+s(ta), valkoi+s(ten), valkoi+s(ien), valkoi+s(ina). # se valkoi+se(n), valkoi+se(na), jne, valkoi+se(t). # $luku "yksikkö" tai "monikko". # $jatko Sääntö, jolla sanan jäsennystä jatketaan. # subrule taivutus ($tietue, $lisä, $jatko, $tulos): assert (value_type ($jatko) = list); return ([alku: $tietue.alku + $lisä] + ($tietue - alku - jatko) + [jatko: $jatko] + $tulos); end; subrule A ($tietue): if ($tietue.äs = a) then return "a"; else return "ä"; end; end; subrule O ($tietue): if ($tietue.äs = a) then return "o"; else return "ö"; end; end; subrule U ($tietue): if ($tietue.äs = a) then return "u"; else return "y"; end; end; subrule UA ($tietue): return (U($tietue) + A($tietue)); end; subrule UO ($tietue): return (U($tietue) + O($tietue)); end; subrule AA ($tietue): return (A($tietue) + A($tietue)); end; subrule Aj ($tietue): return (A($tietue) + "j"); end; subrule AjA ($tietue): return (Aj($tietue) + A($tietue)); end; subrule An ($tietue): return (A($tietue) + "n"); end; subrule Ar ($tietue): return (A($tietue) + "r"); end; subrule As ($tietue): return (A($tietue) + "s"); end; subrule dA ($tietue): return ("d" + A($tietue)); end; subrule dAs ($tietue): return (dA($tietue) + "s"); end; subrule dO ($tietue): return ("d" + O($tietue)); end; subrule dU ($tietue): return ("d" + U($tietue)); end; subrule eA ($tietue): return ("e" + A($tietue)); end; subrule gA ($tietue): return ("g" + A($tietue)); end; subrule gAs ($tietue): return (gA($tietue) + "s"); end; subrule gO ($tietue): return ("g" + O($tietue)); end; subrule gU ($tietue): return ("g" + U($tietue)); end; subrule hA ($tietue): return ("h" + A($tietue)); end; subrule hAA ($tietue): return (hA($tietue) + A($tietue)); end; subrule jA ($tietue): return ("j" + A($tietue)); end; subrule kA ($tietue): return ("k" + A($tietue)); end; subrule bA ($tietue): return ("b" + A($tietue)); end; subrule kAA ($tietue): return (kA($tietue) + A($tietue)); end; subrule kO ($tietue): return ("k" + O($tietue)); end; subrule kU ($tietue): return ("k" + U($tietue)); end; subrule lA ($tietue): return ("l" + A($tietue)); end; subrule lAs ($tietue): return (lA($tietue) + "s"); end; subrule lO ($tietue): return ("l" + O($tietue)); end; subrule lU ($tietue): return ("l" + U($tietue)); end; subrule mA ($tietue): return ("m" + A($tietue)); end; subrule mAs ($tietue): return (mA($tietue) + "s"); end; subrule mO ($tietue): return ("m" + O($tietue)); end; subrule mU ($tietue): return ("m" + U($tietue)); end; subrule nA ($tietue): return ("n" + A($tietue)); end; subrule nAs ($tietue): return (nA($tietue) + "s"); end; subrule nO ($tietue): return ("n" + O($tietue)); end; subrule nU ($tietue): return ("n" + U($tietue)); end; subrule pA ($tietue): return ("p" + A($tietue)); end; subrule pAA ($tietue): return (pA($tietue) + A($tietue)); end; subrule pO ($tietue): return ("p" + O($tietue)); end; subrule pU ($tietue): return ("p" + U($tietue)); end; subrule rA ($tietue): return ("r" + A($tietue)); end; subrule rAs ($tietue): return (rA($tietue) + "s"); end; subrule rO ($tietue): return ("r" + O($tietue)); end; subrule rU ($tietue): return ("r" + U($tietue)); end; subrule rV ($tietue): if ($tietue.alku matches ".*ier") then return ("r" + O($tietue)); elseif ($tietue.alku matches ".*[^i]er") then return ("r" + U($tietue)); elseif ($tietue.alku matches ".*[aiä]r") then return ("r" + U($tietue)); elseif ($tietue.alku matches ".*[ouyö]r") then return ("r" + O($tietue)); else error "subrule rV: väärä sana " + $tietue.alku + " " + $tietue.perusmuoto; end; end; subrule tA ($tietue): return ("t" + A($tietue)); end; subrule tAA ($tietue): return ("t" + A($tietue) + A($tietue)); end; subrule tAr ($tietue): return (tA($tietue) + "r"); end; subrule tO ($tietue): return ("t" + O($tietue)); end; subrule tU ($tietue): return ("t" + U($tietue)); end; subrule Ut ($tietue): return (U($tietue) + "t"); end; subrule vA ($tietue): return ("v" + A($tietue)); end; subrule vAs ($tietue): return (vA($tietue) + "s"); end; subrule vO ($tietue): return ("v" + O($tietue)); end; subrule vU ($tietue): return ("v" + U($tietue)); end; subrule zO($tietue): return ("'" + O($tietue)); end; subrule zU($tietue): return ("'" + U($tietue)); end; # Operaatioita, jotka tehdään taivutuskaavan muodostamisen yhteydessä # kaikille taivutuksille. subrule muokkaa_taivutusta($tietue, $taivutus): # Näitä ei koskaan käytetä Voikossa $taivutus :=- liitesana_s; if nimentö in $taivutus and (not (liitesana in $taivutus)) and ($tietue.luokka /= asemosana or $tietue.perusmuoto /= "joka") then $taivutus :=+ [liitesana: $taivutus.nimentö]; end; if ($tietue.luokka = nimisana) then $taivutus :=- voittoaste; $taivutus :=- yliaste; $taivutus :=- kerronto_sti; $taivutus :=- johdin_Us; if (not $tietue.perusmuoto matches ".*l[aä]inen") then $taivutus :=- johdin_UUs; end; end; if ($tietue.luokka = laatusana) then $taivutus :=- johdin_tOn; $taivutus :=- johdin_mAinen; $taivutus :=- johdin_ittAin; $taivutus :=- omistusliite; end; if ($tietue.luokka = johdin_vA) then $taivutus :=- johdin_tOn; $taivutus :=- johdin_mAinen; $taivutus :=- johdin_ittAin; if ($tietue.perusmuoto in <"va", "vä">) then $taivutus :=- nimisana; end; end; if ($tietue.tiedot /= nil and ei_vertm in $tietue.tiedot) then $taivutus :=- voittoaste; $taivutus :=- yliaste; end; if ($tietue.tiedot /= nil and ei_yks in $tietue.tiedot) then define $taivutus_kopio := $taivutus; foreach $jatko in $taivutus_kopio: if (luku_sijasta($jatko) = yksikkö and $jatko /= omanto_n) or ($jatko = liitesana) then $taivutus :=- $jatko; end; end; end; # Ei kaikkia johdoksia kaikista nimisanoista (esim. aateli -> aatelinen). # if ($tietue.tiedot /= nil) then if (ei_inen in $tietue.tiedot) then $taivutus :=- johdin_inen; end; if (ei_lAinen in $tietue.tiedot) then $taivutus :=- johdin_lAinen; end; if (ei_mAinen in $tietue.tiedot) then $taivutus :=- johdin_mAinen; end; end; # Näitä johdoksia ei toistaiseksi tueta if ($tietue.luokka = paikannimi) then $taivutus :=- johdin_mAinen; else $taivutus :=- johdin_lAinen; end; # Näitä johdoksia ei tehdä erisnimistä if ($tietue.luokka in ) then $taivutus :=- johdin_tOn; $taivutus :=- johdin_UUs; $taivutus :=- johdin_ittAin; $taivutus :=- johdin_Us; $taivutus :=- johdin_mAinen; $taivutus :=- kerronto_sti; $taivutus :=- voittoaste; $taivutus :=- yliaste; end; if ($tietue.luokka in @nimisana + ) then $taivutus :=- nimisana; end; return $taivutus; end; # Operaatioita, jotka tehdään taivutuskaavan muodostamisen yhteydessä # kaikille tietueille. subrule muokkaa_tietuetta($tietue, $taivutus): # Inen-loppuiset laatusanat if ($tietue.luokka in and $tietue.perusmuoto matches ".*inen") then $tietue :=+ [inen_loppu: yes]; end; if ($tietue.tiedot /= nil and ei_yks in $tietue.tiedot) then $tietue :=+ [ei_yks: yes]; end; return $tietue; end; subrule taivutuskaava ($tietue, $taivutus): if (not ($tietue.luokka in )) then $taivutus :=- johdin_inen; end; $taivutus := muokkaa_taivutusta($tietue, $taivutus); $tietue := muokkaa_tietuetta($tietue, $taivutus); define $lista := lajittele ($taivutus); define $t := <>; foreach $i in $lista: $t :=+ ; end; return $t; end; # $tietue Sanatietue # $taivutus Sanan taivutus eri taivutusmuodoissa. # $ei_uusi Taivutusmuodot, joita ei ole uudessa taivutuksessa. # subrule taivutuskaava2 ($tietue, $taivutus, $ei_uusi): if (($tietue.luokka in @nimisana + ) and ($taivutus.nimentö /= nil)) then $taivutus :=+ [tavuviiva: $taivutus.nimentö]; end; if (not ($tietue.luokka in ) or (leikkuu in $tietue.jatko)) then # Ei leikkuu -> leikkuinen. $taivutus :=- johdin_inen; end; if ($ei_uusi /= <>) then $taivutus :=- $ei_uusi; end; $taivutus := muokkaa_taivutusta($tietue, $taivutus); $tietue := muokkaa_tietuetta($tietue, $taivutus); define $lista := lajittele ($taivutus); define $t := <>; foreach $i in $lista: $t :=+ ; end; return $t; end; subrule tositapa0 ($tietue, $kestämän_vahva_aste, $kestämän_heikko_aste, $kertoman_vahva_aste, $kertoman_heikko_aste): return [kestämän_tekijäpääte_heikko: $kestämän_heikko_aste, kestämän_tekijäpääte_y3: $kestämän_vahva_aste, kestämän_tekijäpääte_m3: $kestämän_vahva_aste, kertoman_tekijäpääte_heikko: $kertoman_heikko_aste, kertoman_tekijäpääte_vahva: $kertoman_vahva_aste]; end; subrule tositapa ($tietue, $kestämän_vahva_aste, $kestämän_heikko_aste, $kertoman_vahva_aste, $kertoman_heikko_aste, $tekijä_4): return tositapa0 ($tietue, $kestämän_vahva_aste, $kestämän_heikko_aste, $kertoman_vahva_aste, $kertoman_heikko_aste) + $tekijä_4; end; subrule tositapa_ei_kestämä_y3 ($tietue, $kestämän_vahva_aste, $kestämän_heikko_aste, $kertoman_vahva_aste, $kertoman_heikko_aste, $tekijä_4): return [kestämän_tekijäpääte_heikko: $kestämän_heikko_aste, kestämän_tekijäpääte_m3: $kestämän_vahva_aste, kertoman_tekijäpääte_heikko: $kertoman_heikko_aste, kertoman_tekijäpääte_vahva: $kertoman_vahva_aste] + $tekijä_4; end; subrule tositavan_kestämä ($tietue, $vahva_aste, $heikko_aste): return , [tapaluokka: tositapa, aikamuoto: kestämä])>; end; subrule tositavan_kestämä_y3 ($tietue, $vahva_aste): return , [tapaluokka: tositapa, aikamuoto: kestämä, luku: yksikkö, tekijä: tekijä_3])>; end; subrule tositavan_kertoma ($tietue, $vahva_aste, $heikko_aste): return tositavan_kertoman_vahva_aste ($tietue, $vahva_aste) + tositavan_kertoman_heikko_aste ($tietue, $heikko_aste); end; subrule tositavan_kertoman_vahva_aste ($tietue, $vahva_aste): return , [tapaluokka: tositapa, aikamuoto: kertoma])>; end; subrule tositavan_kertoman_heikko_aste ($tietue, $heikko_aste): return , [tapaluokka: tositapa, aikamuoto: kertoma])>; end; ####################################################################### subrule ehtotapa2 ($tietue, $lisä): return , [])>; end; subrule käskytapa ($tietue, $heikko_aste): return , [tapaluokka: käskytapa, aikamuoto: kestämä, tekijä: tekijä_2, luku: yksikkö])>; end; # Teonsanasta johdettu tekijännimi ja ominaisudennimi # punoa -> punoja, tehdä -> tekijä. # punoa -> punojuus, tehdä -> tekijyys # subrule tekijännimi ($tietue, $lisä, $taivutus): return tekijä ($tietue, $lisä, $taivutus); end; subrule tekijä ($tietue, $lisä, $taivutus): $tietue :=+ johdoksen_lähtötiedot($tietue); $tietue.alku :=+ $lisä; $tietue.luokka := nimisana; $tietue.perusmuoto := $tietue.alku + "j" + A($tietue); if ($tietue.tiedot /= nil and ym3 in $tietue.tiedot) then return <>; end; if ($taivutus = kulkija) then return , [])>; elseif ($taivutus = myyjä) then return , [])>; elseif ($taivutus = kantaja) then return , [])>; else error "suomi.all: subrule tekijännimi: väärä taivutus"; end; end; ############################################################ # # Muuta tietue parien listaksi. Parin eka alkiona on # merkkijono ja toisena alkiona lista niistä tietueen # kenttien nimistä, joiden arvona on sama merkkijono. # # Esimerkiksi: # # [a: "a", # b: "a", # c: "b", # d: "a", # e: "b", # f: "b"] # # ===> # # <<"a", >, # <"b", >> subrule lajittele ($tietue): # # [sijan_nimi: merkkijono] # Otetaan kaikki merkkijonot joukkoon $joukko. # Se on joukko, koska kukin alkio on siinä vain kerran. # define $joukko := <>; foreach $i in $tietue: if (not ($tietue.$i in $joukko)) then $joukko :=+ <$tietue.$i>; end; end; define $r := <>; foreach $i in $joukko: $r :=+ <<$i, etsi ($tietue, $i)>>; end; define $t := <>; foreach $i in $r: if (nimentö in $i.2) then $i.2 :=+ ; end; $t :=+ <<$i.1, $i.2>>; end; return $t; end; # Etsi arvo joukosta. # Jos ei löydy, palauta <>. # subrule etsi ($tietue, $arvo): define $t := <>; foreach $i in $tietue: if ($tietue.$i = $arvo) then $t :=+ <$i>; end; end; return $t; end; subrule koira ($tietue, $vahva_aste, $heikko_aste, $voittoaste): define $monikon_heikko_aste := $heikko_aste; if (ikä in $tietue.jatko) then # Ikä => i'iksi. $monikon_heikko_aste := "'"; end; return taivutuskaava ($tietue, yksikkö9 ($tietue, $vahva_aste + A($tietue), $vahva_aste + A($tietue), $vahva_aste + A($tietue), $heikko_aste + A($tietue), [osanto_A: $vahva_aste + A($tietue)], sisätulento_Vn, $voittoaste, $vahva_aste + A($tietue)) + [johdin_tOn: $heikko_aste + A($tietue), johdin_UUs: $vahva_aste, johdin_lAinen: $vahva_aste + A($tietue), johdin_mAinen: $vahva_aste + A($tietue), johdin_inen: $vahva_aste + A($tietue)] + monikko7 ($heikko_aste + A($tietue), $vahva_aste, $monikon_heikko_aste, [omanto_ien: $vahva_aste, omanto_in: $vahva_aste + A($tietue)], [osanto_iA: $vahva_aste], [sisätulento_iin: $vahva_aste], $monikon_heikko_aste)); end; subrule ruoka ($tietue): return koira ($tietue, "ok", "o", "e") + taivutuskaava ($tietue, [omanto_n: "ua", # Ruuan. tulento_ksi: "ua", sisäolento_ssA: "ua", ulkopaikallissija_llA: "ua", vajanto_ttA: "ua", johdin_tOn: "ua", # Ei tarvita johdosta johdin_inen. HV 13.5.2006. Eikä johdin_lAinen. HV 13.7.2006. # Eikä johdinta johdin_mAinen. HV 24.7.2006. nimentö_t: "ua"]); end; subrule pitkä ($tietue): return taivutuskaava ($tietue, yksikkö8 ("tk" + A($tietue), "tk" + A($tietue), "tk" + A($tietue), "tk" + A($tietue), [osanto_A: "tk" + A($tietue)], sisätulento_Vn, "te", "tk" + A($tietue)) + monikko7 ("tk" + A($tietue), "tk", "tk", [omanto_ien: "tk", omanto_in: "tk" + A($tietue)], [osanto_iA: "tk"], [sisätulento_iin: "tk"], "s")); end; subrule asema ($tietue, $vahva_aste, $heikko_aste): return koira ($tietue, $vahva_aste, $heikko_aste, A($tietue)) + voikko_lista_vain_lipulla(vanhat_muodot, taivutuskaava ($tietue, [osanto_tA: $vahva_aste + A($tietue)])); end; subrule kulkija ($tietue, $yksikkö, $monikko): return , [])>; end; subrule apila ($tietue, $yksikkö, $monikko): return taivutuskaava ($tietue, yksikkö8 ($yksikkö, $yksikkö, $yksikkö, $yksikkö, [osanto_A: $yksikkö, osanto_tA: $yksikkö], sisätulento_Vn, $yksikkö, $yksikkö) + [johdin_tOn: $yksikkö, # Apilaton. johdin_lAinen: $yksikkö, # Apilalainen. johdin_mAinen: $yksikkö, # Apilamainen. johdin_inen: $yksikkö] + # Apilainen. monikko7 ($yksikkö, $monikko, $monikko, [omanto_in: $yksikkö, omanto_iT: $monikko], [osanto_itA: $monikko], [sisätulento_ihin: $monikko], "")); end; subrule laatikko ($tietue, $yksikön_vahva_aste, $yksikön_heikko_aste, $monikon_vahva_aste, $monikon_heikko_aste): return taivutuskaava ($tietue, yksikkö8 ($yksikön_vahva_aste, $yksikön_vahva_aste, $yksikön_vahva_aste, $yksikön_heikko_aste, [osanto_A: $yksikön_vahva_aste], ### osanto_tA: $yksikön_vahva_aste], sisätulento_Vn, $yksikön_heikko_aste, $yksikön_vahva_aste) + [johdin_tOn: $yksikön_heikko_aste, johdin_UUs: eka_kirjain ($yksikön_vahva_aste), johdin_lAinen: $yksikön_vahva_aste, johdin_mAinen: $yksikön_vahva_aste, johdin_inen: $yksikön_vahva_aste] + monikko7 ($yksikön_heikko_aste, $monikon_vahva_aste, $monikon_heikko_aste, [omanto_jen: $monikon_vahva_aste, omanto_iT: $monikon_heikko_aste], [osanto_jA: $monikon_vahva_aste, osanto_itA: $monikon_heikko_aste], [sisätulento_ihin: $monikon_vahva_aste], "")) + taivutuskaava ($tietue, [olento_inA: $monikon_heikko_aste, sisätulento_ihin: $monikon_heikko_aste, seuranto_ine: $monikon_heikko_aste]); end; subrule solakka ($tietue, $yksikön_vahva_aste, $yksikön_heikko_aste, $monikon_vahva_aste, $monikon_heikko_aste): return laatikko ($tietue, $yksikön_vahva_aste, $yksikön_heikko_aste, $monikon_vahva_aste, $monikon_heikko_aste) + taivutuskaava ($tietue, [omanto_in: $yksikön_vahva_aste]); end; subrule veranta ($tietue): return solakka ($tietue, tA($tietue), nA($tietue), tO($tietue), nO($tietue)); end; subrule kantaja ($tietue): return apaja ($tietue); end; subrule apaja ($tietue): return taivutuskaava ($tietue, yksikkö8 (A($tietue), A($tietue), A($tietue), A($tietue), [osanto_A: A($tietue), osanto_tA: A($tietue)], sisätulento_Vn, A($tietue), A($tietue)) + [johdin_tOn: A($tietue), johdin_lAinen: A($tietue), johdin_mAinen: A($tietue), johdin_inen: A($tietue)] + monikko7 (A($tietue), "", "", [omanto_ien: "", omanto_in: A($tietue), omanto_iT: O($tietue)], [osanto_iA: ""], [sisätulento_iin: ""], "")); end; subrule koko ($tietue, $yksikön_vahva_aste, $yksikön_heikko_aste, $monikon_vahva_aste, $monikon_heikko_aste): return taivutuskaava ($tietue, yksikkö_valo ($yksikön_vahva_aste, $yksikön_heikko_aste) + monikko7 ($yksikön_heikko_aste, $monikon_vahva_aste, $monikon_heikko_aste, [omanto_jen: $monikon_vahva_aste], [osanto_jA: $monikon_vahva_aste], [sisätulento_ihin: $monikon_vahva_aste], $monikon_heikko_aste)); end; subrule valo ($tietue, $vahva_aste, $heikko_aste): return koko ($tietue, $vahva_aste, $heikko_aste, $vahva_aste, $heikko_aste); end; subrule arvelu ($tietue, $vahva_aste, $heikko_aste): define $r := taivutuskaava ($tietue, yksikkö_valo ($vahva_aste, $heikko_aste) + monikko7 ($heikko_aste, $vahva_aste, $heikko_aste, [omanto_jen: $vahva_aste, omanto_iT: $heikko_aste], [osanto_jA: $vahva_aste, osanto_itA: $heikko_aste], [sisätulento_ihin: $vahva_aste], $heikko_aste)); if ($vahva_aste /= $heikko_aste) then $r :=+ , [])>; end; return $r; end; subrule hontelo ($tietue): return taivutuskaava ($tietue, yksikkö8 (O($tietue), O($tietue), O($tietue), O($tietue), [osanto_A: O($tietue)], sisätulento_Vn, O($tietue), O($tietue)) + [johdin_tOn: O($tietue), johdin_Us: U($tietue), johdin_mAinen: O($tietue), johdin_inen: O($tietue)] + monikko7 (O($tietue), O($tietue), O($tietue), [omanto_jen: O($tietue), omanto_iT: O($tietue)], [osanto_jA: O($tietue), osanto_itA: O($tietue)], [sisätulento_ihin: O($tietue)], O($tietue))); end; subrule risti ($tietue, $vahva_aste, $heikko_aste): return taivutuskaava ($tietue, [tavuviiva: $vahva_aste + "i", omistusliite: $vahva_aste + "i", nimentö: $vahva_aste + "i", omanto_n: $heikko_aste + "i", osanto_A: $vahva_aste + "i", olento_nA: $vahva_aste + "i", tulento_ksi: $heikko_aste + "i", sisäolento_ssA: $heikko_aste + "i", sisätulento_Vn: $vahva_aste + "i", ulkopaikallissija_llA: $heikko_aste + "i", vajanto_ttA: $heikko_aste + "i", kerronto_sti: $heikko_aste + "i", voittoaste: $heikko_aste + "i", johdin_tOn: $heikko_aste + "i", johdin_Us: $vahva_aste + "i", johdin_lAinen: $vahva_aste + "i", johdin_mAinen: $vahva_aste + "i", johdin_inen: $vahva_aste] + yhdyssana ($vahva_aste + "i") + monikko7 ($heikko_aste + "i", $vahva_aste + "e", $heikko_aste + "e", [omanto_en: $vahva_aste + "i", omanto_in: $vahva_aste + "e"], [osanto_jA: $vahva_aste + "e"], [sisätulento_ihin: $vahva_aste + "e"], $heikko_aste + "e")); end; subrule siisti ($tietue, $vahva_aste, $heikko_aste): return taivutuskaava ($tietue, [tavuviiva: $vahva_aste + "i", omistusliite: $vahva_aste + "i", nimentö: $vahva_aste + "i", omanto_n: $heikko_aste + "i", osanto_A: $vahva_aste + "i", olento_nA: $vahva_aste + "i", tulento_ksi: $heikko_aste + "i", sisäolento_ssA: $heikko_aste + "i", sisätulento_Vn: $vahva_aste + "i", ulkopaikallissija_llA: $heikko_aste + "i", vajanto_ttA: $heikko_aste + "i", kerronto_sti: $heikko_aste + "i", voittoaste: $heikko_aste + "i", johdin_tOn: $heikko_aste + "i", johdin_Us: $vahva_aste + "e", johdin_inen: $vahva_aste] + yhdyssana ($vahva_aste + "i") + monikko7 ($heikko_aste + "i", $vahva_aste + "e", $heikko_aste + "e", [omanto_en: $vahva_aste + "i", omanto_in: $vahva_aste + "e"], [osanto_jA: $vahva_aste + "e"], [sisätulento_ihin: $vahva_aste + "e"], $heikko_aste + "e")); end; subrule paperi_banaali ($tietue, $vahva_aste, $heikko_aste): return taivutuskaava ($tietue, yksikkö8 ($vahva_aste + "i", $vahva_aste + "i", $vahva_aste + "i", $heikko_aste + "i", [osanto_A: $vahva_aste + "i"], sisätulento_Vn, $heikko_aste + "i", $vahva_aste + "i") + [johdin_tOn: $heikko_aste + "i", johdin_Us: $vahva_aste + "i", johdin_lAinen: $vahva_aste + "i", johdin_mAinen: $vahva_aste + "i", johdin_inen: $vahva_aste] + monikko7 ($heikko_aste + "i", $vahva_aste + "e", $heikko_aste + "e", [omanto_iT: $heikko_aste + "e", omanto_en: $vahva_aste + "i", omanto_in: $vahva_aste + "e"], [osanto_itA: $heikko_aste + "e", osanto_jA: $vahva_aste + "e"], [sisätulento_ihin: $vahva_aste + "e"], $heikko_aste + "e")); end; subrule edam ($tietue, $vahva_aste, $heikko_aste): return taivutuskaava ($tietue, yksikkö8 ($vahva_aste + "i", $vahva_aste, $vahva_aste + "i", $heikko_aste + "i", [osanto_A: $vahva_aste + "i"], sisätulento_Vn, $heikko_aste + "i", $vahva_aste) + [johdin_tOn: $heikko_aste + "i", johdin_Us: $vahva_aste + "i", johdin_lAinen: $vahva_aste + "i", johdin_mAinen: $vahva_aste, johdin_inen: $vahva_aste] + monikko7 ($heikko_aste + "i", $heikko_aste + "e", $heikko_aste + "e", [omanto_iT: $heikko_aste + "e", omanto_en: $vahva_aste + "i"], [osanto_itA: $heikko_aste + "e", osanto_jA: $vahva_aste + "e"], [sisätulento_ihin: $vahva_aste + "e"], $heikko_aste + "e")) + yhdyssanan_taivutuskaava ($tietue, $vahva_aste); end; subrule sisar ($tietue, $vahva_aste, $heikko_aste): return taivutuskaava ($tietue, yksikkö8 ($vahva_aste + "e", $heikko_aste, $vahva_aste + "e", $vahva_aste + "e", [osanto_tA: $heikko_aste], sisätulento_Vn, $heikko_aste, $heikko_aste) + [johdin_tOn: $vahva_aste + "e", johdin_mAinen: $vahva_aste, johdin_inen: $vahva_aste] + monikko7 ($vahva_aste + "e", $vahva_aste, $vahva_aste, [omanto_ien: $vahva_aste, omanto_ten: $heikko_aste], [osanto_iA: $vahva_aste], [sisätulento_iin: $vahva_aste], $vahva_aste)); end; subrule ahven ($tietue, $vahva_aste, $heikko_aste): return sisar ($tietue, $vahva_aste, $heikko_aste); end; subrule uistin ($tietue, $vahva_aste, $heikko_aste): return hapan_uistin ($tietue, $vahva_aste, $heikko_aste, "e"); end; subrule hapan ($tietue, $vahva_aste, $heikko_aste): return hapan_uistin ($tietue, $vahva_aste, $heikko_aste, A($tietue)) + # Happaman. hapan_uistin ($tietue, $vahva_aste, $heikko_aste, "e"); # Happamen. end; subrule hapan_uistin ($tietue, $vahva_aste, $heikko_aste, $ääntiö): return taivutuskaava ($tietue, yksikkö8 ($vahva_aste + $ääntiö, $heikko_aste, $vahva_aste + $ääntiö, $vahva_aste + $ääntiö, [osanto_tA: $heikko_aste], sisätulento_Vn, $vahva_aste + $ääntiö, $heikko_aste) + [johdin_tOn: $vahva_aste + $ääntiö, johdin_UUs: $vahva_aste, johdin_mAinen: $heikko_aste, johdin_lAinen: $vahva_aste + $ääntiö, johdin_inen: $vahva_aste] + monikko7 ($vahva_aste + $ääntiö, $vahva_aste, $vahva_aste, [omanto_ien: $vahva_aste, omanto_ten: $heikko_aste], [osanto_iA: $vahva_aste], [sisätulento_iin: $vahva_aste], $vahva_aste)); end; subrule onneton ($tietue, $vahva_aste, $heikko_aste): return taivutuskaava ($tietue, yksikkö8 ($vahva_aste + mA($tietue), $heikko_aste + "n", $vahva_aste + mA($tietue), $vahva_aste + mA($tietue), [osanto_tA: $heikko_aste + "n"], sisätulento_Vn, $vahva_aste + mA($tietue), $heikko_aste + "n") + monikko7 ($vahva_aste + mA($tietue), $vahva_aste + "m", $vahva_aste + "m", [omanto_ien: $vahva_aste + "m", omanto_in: $vahva_aste + mA($tietue), omanto_ten: $heikko_aste + "n"], [osanto_iA: $vahva_aste + "m"], [sisätulento_iin: $vahva_aste + "m"], $vahva_aste + "m") + [johdin_UUs: $vahva_aste + "m"]) + taivutuskaava ($tietue, [olento_nA: $heikko_aste + "n"]) + # Onneton+na. taivutuskaava ($tietue, [nimentö: $heikko_aste + "in", # Onnetoin. omanto_ten: $heikko_aste + "in", # Onnetoin+ten osanto_tA: $heikko_aste + "in", # Onnetoin+ta. olento_nA: $heikko_aste + "in"]); # Onnetoin+na. end; subrule kalsium ($tietue, $vahva_aste, $heikko_aste): return taivutuskaava ($tietue, yksikkö8 ($vahva_aste + "i", $vahva_aste, $vahva_aste + "i", $heikko_aste + "i", [osanto_A: $vahva_aste + "i"], sisätulento_Vn, $vahva_aste + "i", $vahva_aste) + [johdin_tOn: $heikko_aste + "i", johdin_lAinen: $vahva_aste + "i", johdin_mAinen: $vahva_aste, johdin_inen: $vahva_aste] + monikko7 ($heikko_aste + "i", $vahva_aste + "e", $heikko_aste + "e", [omanto_en: $vahva_aste + "i"], [osanto_jA: $vahva_aste + "e"], [sisätulento_ihin: $vahva_aste + "e"], $heikko_aste + "i")); end; subrule poppi ($tietue, $vahva_aste, $heikko_aste): return taivutuskaava ($tietue, yksikkö8 ($vahva_aste + "i", $vahva_aste + "i", $vahva_aste + "i", $heikko_aste + "i", [osanto_A: $vahva_aste + "i"], sisätulento_Vn, $vahva_aste + "i", $vahva_aste + "i") + [johdin_tOn: $heikko_aste + "i", johdin_mAinen: $vahva_aste + "i", johdin_inen: $vahva_aste + "i"] + monikko7 ($heikko_aste + "i", $vahva_aste + "e", $heikko_aste + "e", [omanto_en: $vahva_aste + "i"], [osanto_jA: $vahva_aste + "e"], [sisätulento_ihin: $vahva_aste + "e"], $heikko_aste + "i")) + , [])> + yhdyssanan_taivutuskaava ($tietue, ""); end; subrule nalle ($tietue, $vahva_aste, $heikko_aste): return taivutuskaava ($tietue, yksikkö8 ($vahva_aste, $vahva_aste, $vahva_aste, $heikko_aste, [osanto_A: $vahva_aste], sisätulento_Vn, $vahva_aste, $vahva_aste) + [johdin_tOn: $heikko_aste, johdin_Us: $vahva_aste, johdin_lAinen: $vahva_aste, johdin_mAinen: $vahva_aste, johdin_inen: $vahva_aste] + monikko7 ($heikko_aste, $vahva_aste, $heikko_aste, [omanto_in: $vahva_aste, omanto_jen: $vahva_aste], [osanto_jA: $vahva_aste], [sisätulento_ihin: $vahva_aste], $heikko_aste)); end; subrule kala ($tietue, $vahva_aste, $heikko_aste, $voittoaste, $yliaste): return raaka ($tietue, $vahva_aste, $heikko_aste, $vahva_aste, $heikko_aste, $voittoaste, $yliaste); end; subrule raaka ($tietue, $yksikön_vahva_aste, $yksikön_heikko_aste, $monikon_vahva_aste, $monikon_heikko_aste, $voittoaste, $yliaste): return taivutuskaava ($tietue, yksikkö8 ($yksikön_vahva_aste + A($tietue), $yksikön_vahva_aste + A($tietue), $yksikön_vahva_aste + A($tietue), $yksikön_heikko_aste + A($tietue), [osanto_A: $yksikön_vahva_aste + A($tietue)], sisätulento_Vn, $voittoaste, $yksikön_vahva_aste + A($tietue)) + [johdin_tOn: $yksikön_heikko_aste + A($tietue), johdin_UUs: $yksikön_vahva_aste, johdin_lAinen: $yksikön_vahva_aste + A($tietue), johdin_mAinen: $yksikön_vahva_aste + A($tietue), johdin_inen: $yksikön_vahva_aste + A($tietue)] + monikko7 ($yksikön_heikko_aste + A($tietue), $monikon_vahva_aste + O($tietue), $monikon_heikko_aste + O($tietue), [omanto_in: $yksikön_vahva_aste + A($tietue), omanto_jen: $monikon_vahva_aste + O($tietue)], [osanto_jA: $monikon_vahva_aste + O($tietue)], [sisätulento_ihin: $monikon_vahva_aste + O($tietue)], $yliaste)); end; subrule lovi ($tietue, $vahva_aste, $heikko_aste): return kumpi ($tietue, $vahva_aste, $heikko_aste, "e") + taivutuskaava($tietue, [johdin_mAinen: $vahva_aste + "i"]); end; subrule piki ($tietue, $yksikön_vahva_aste, $yksikön_heikko_aste, $monikon_vahva_aste, $monikon_heikko_aste): return taivutuskaava2 ($tietue, [nimentö: $yksikön_vahva_aste + "i", omistusliite: $yksikön_vahva_aste + "e", omanto_n: $yksikön_heikko_aste + "e", osanto_A: $yksikön_vahva_aste + "e", olento_nA: $yksikön_vahva_aste + "e", tulento_ksi: $yksikön_heikko_aste + "e", sisäolento_ssA: $yksikön_heikko_aste + "e", sisätulento_Vn: $yksikön_vahva_aste + "e", ulkopaikallissija_llA: $yksikön_heikko_aste + "e", vajanto_ttA: $yksikön_heikko_aste + "e", nimentö_t: $yksikön_heikko_aste + "e", omanto_en: $monikon_vahva_aste + "i", omanto_in: $yksikön_vahva_aste + "e", osanto_iA: $monikon_vahva_aste, olento_inA: $monikon_vahva_aste, sija_monikko_1: $monikon_heikko_aste, sisätulento_iin: $monikon_vahva_aste, ulkopaikallissija_illA: $monikon_heikko_aste, vajanto_ittA: $monikon_heikko_aste, seuranto_ine: $monikon_vahva_aste, ## Näitä kolmea ei oikeastaan tarvita, koska tällä ## tavalla taipuvia laatusanoja ei ole, mutta ## niitä voi tulla... kerronto_sti: $yksikön_heikko_aste + "e", voittoaste: $yksikön_heikko_aste + "e", yliaste: $monikon_heikko_aste, johdin_inen: $yksikön_vahva_aste, johdin_ittain: $monikon_heikko_aste, johdin_lAinen: $yksikön_vahva_aste + "e", johdin_mAinen: $yksikön_vahva_aste + "i", johdin_tOn: $yksikön_heikko_aste + "e", johdin_Us: $yksikön_vahva_aste + "i"] + yhdyssana ($yksikön_vahva_aste + "i"), ); end; subrule kumpi ($tietue, $vahva_aste, $heikko_aste, $ääntiö): return taivutuskaava ($tietue, yksikkö8 ($vahva_aste + $ääntiö, $vahva_aste + "i", $vahva_aste + $ääntiö, $heikko_aste + $ääntiö, [osanto_A: $vahva_aste + $ääntiö], sisätulento_Vn, $heikko_aste + $ääntiö, $vahva_aste + "i") + [johdin_tOn: $heikko_aste + $ääntiö, johdin_lAinen: $vahva_aste + "e", johdin_inen: $vahva_aste] + monikko7 ($heikko_aste + $ääntiö, $vahva_aste, $heikko_aste, [omanto_en: $vahva_aste + "i", omanto_in: $vahva_aste + $ääntiö], [osanto_iA: $vahva_aste], [sisätulento_iin: $vahva_aste], $vahva_aste + $ääntiö)); end; subrule vapaa ($tietue, $ääntiö): return taivutuskaava ($tietue, yksikkö8 ($ääntiö, $ääntiö, $ääntiö, $ääntiö, [osanto_tA: $ääntiö], sisätulento_seen, $ääntiö, $ääntiö) + [johdin_tOn: $ääntiö, johdin_Us: "", johdin_lAinen: $ääntiö, johdin_mAinen: $ääntiö, johdin_inen: "", nimentö_t: $ääntiö, omanto_iT: "", osanto_itA: "", olento_inA: "", sija_monikko_1: "", sisätulento_isiin: "", sisätulento_ihin: "", ulkopaikallissija_illA: "", vajanto_ittA: "", seuranto_ine: "", yliaste: ""]); end; subrule kamee ($tietue, $ääntiö): return taivutuskaava ($tietue, yksikkö8 ($ääntiö, $ääntiö, $ääntiö, $ääntiö, [osanto_tA: $ääntiö], [sisätulento_seen: $ääntiö, sisätulento_hVn: $ääntiö], $ääntiö, $ääntiö) + [johdin_tOn: $ääntiö, johdin_lAinen: $ääntiö, johdin_mAinen: $ääntiö, johdin_inen: ""] + monikko7 ($ääntiö, "", "", [omanto_iT: ""], [osanto_itA: ""], [sisätulento_ihin: "", sisätulento_isiin: ""], "")); end; subrule tee ($tietue, $ääntiö): return taivutuskaava ($tietue, yksikkö8 ($ääntiö, $ääntiö, $ääntiö, $ääntiö, [osanto_tA: $ääntiö], [sisätulento_hVn: $ääntiö], $ääntiö, $ääntiö) + [johdin_tOn: $ääntiö, johdin_mAinen: $ääntiö] + # Ei tarvita johdosta johdin_inen. HV 13.5.2006. "Teinen". monikko7 ($ääntiö, "", "", [omanto_iT: ""], [osanto_itA: ""], [sisätulento_ihin: ""], "")); end; subrule maa ($tietue, $ääntiö): return taivutuskaava ($tietue, yksikkö8 ($ääntiö, $ääntiö, $ääntiö, $ääntiö, [osanto_tA: $ääntiö], sisätulento_hVn, $ääntiö, $ääntiö) + [johdin_tOn: $ääntiö, johdin_lAinen: $ääntiö, johdin_mAinen: $ääntiö, johdin_inen: "", nimentö_t: $ääntiö, omanto_iT: "", osanto_itA: "", olento_inA: "", sija_monikko_1: "", sisätulento_ihin: "", ulkopaikallissija_illA: "", vajanto_ittA: "", seuranto_ine: "", johdin_ittAin: ""]); end; subrule tiu ($tietue, $ääntiö): return taivutuskaava ($tietue, yksikkö8 ($ääntiö, $ääntiö, $ääntiö, $ääntiö, [osanto_tA: $ääntiö], sisätulento_hVn, $ääntiö, $ääntiö) + [johdin_tOn: $ääntiö, johdin_mAinen: $ääntiö]); # Ei tarvita johdosta johdin_inen. HV 13.5.2006. "Tiuinen". end; subrule tosi ($tietue): return taivutuskaava ($tietue, yksikkö8 ("te", "si", "te", "de", [osanto_ttA: ""], sisätulento_Vn, "de", "si") + [johdin_tOn: "de", johdin_mAinen: "si", johdin_lAinen: "te", johdin_inen: "t"] + monikko7 ("de", "s", "s", [omanto_ien: "s"], [osanto_iA: "s"], [sisätulento_iin: "s"], "s")); end; subrule kansi ($tietue, $vahva_aste, $heikko_aste, $inen): return taivutuskaava ($tietue, yksikkö8 ($vahva_aste + "e", "si", $vahva_aste + "e", $heikko_aste + "e", [osanto_ttA: ""], sisätulento_Vn, $heikko_aste + "e", "si") + [johdin_tOn: $heikko_aste + "e", johdin_mAinen: "si", johdin_inen: $inen, nimentö_t: $heikko_aste + "e", omanto_ien: "s", omanto_ten: $vahva_aste, osanto_iA: "s", olento_inA: "s", sija_monikko_1: "s", sisätulento_iin: "s", ulkopaikallissija_illA: "s", vajanto_ittA: "s", seuranto_ine: "s", johdin_ittAin: "s"]); end; subrule hame ($tietue, $nimentö_osanto, $yksikkö, $monikko): return taivutuskaava ($tietue, yksikkö8 ($yksikkö, $nimentö_osanto, $yksikkö, $yksikkö, [osanto_ttA: $nimentö_osanto], sisätulento_seen, $yksikkö, $nimentö_osanto) + [johdin_tOn: $yksikkö, johdin_Us: $monikko, johdin_lAinen: $nimentö_osanto, johdin_mAinen: $nimentö_osanto, johdin_inen: $monikko] + monikko7 ($yksikkö, $monikko, $monikko, [omanto_iT: $monikko], [osanto_itA: $monikko], [sisätulento_isiin: $monikko, sisätulento_ihin: $monikko], $monikko)); end; subrule alkeet ($tietue): return taivutuskaava ($tietue, [johdin_tOn: "e", johdin_inen: ""] + # Ei tarvita johdinta johdin_lAinen ("alkeetlainen"). HV 13.7.2006. # Eikä johdinta johdin_mAinen ("alkeetmainen"). HV 24.7.2006. monikko7 ("e", "", "", [omanto_iT: ""], [osanto_itA: ""], [sisätulento_isiin: "", sisätulento_ihin: ""], "")); end; subrule suo ($tietue, $yksikkö, $monikko): return taivutuskaava ($tietue, yksikkö8 ($yksikkö, $yksikkö, $yksikkö, $yksikkö, [osanto_tA: $yksikkö], sisätulento_hVn, $yksikkö, $yksikkö) + [johdin_tOn: $yksikkö, johdin_lAinen: $yksikkö, johdin_mAinen: $yksikkö, johdin_inen: $monikko, nimentö_t: $yksikkö, omanto_iT: $monikko, osanto_itA: $monikko, olento_inA: $monikko, sija_monikko_1: $monikko, sisätulento_ihin: $monikko, ulkopaikallissija_illA: $monikko, vajanto_ittA: $monikko, seuranto_ine: $monikko, johdin_ittAin: $monikko]); end; subrule lapsi ($tietue): return taivutuskaava ($tietue, yksikkö8 ("pse", "psi", "pse", "pse", [], sisätulento_Vn, "pse", "psi") + [johdin_tOn: "pse", johdin_mAinen: "psi", johdin_inen: "ps", nimentö_t: "pse", omanto_ten: "s", omanto_ien: "ps", osanto_iA: "ps", olento_inA: "ps", sija_monikko_1: "ps", sisätulento_iin: "ps", ulkopaikallissija_illA: "ps", vajanto_ittA: "ps", seuranto_ine: "ps", johdin_ittAin: "ps"]); end; subrule veitsi ($tietue): return taivutuskaava ($tietue, yksikkö8 ("tse", "tsi", "tse", "tse", [osanto_tA: "s"], sisätulento_Vn, "tse", "tsi") + [johdin_tOn: "tse", johdin_mAinen: "tsi", johdin_inen: "ts", nimentö_t: "tse", omanto_ien: "ts", omanto_ten: "s", osanto_iA: "ts", olento_inA: "ts", sija_monikko_1: "ts", sisätulento_iin: "ts", ulkopaikallissija_illA: "ts", vajanto_ittA: "ts", seuranto_ine: "ts", johdin_ittAin: "ts"]); end; subrule kalleus ($tietue): return taivutuskaava ($tietue, yksikkö8 ("te", "s", "te", "de", [osanto_ttA: ""], sisätulento_Vn, "de", "s") + [johdin_tOn: "de", johdin_mAinen: "s", johdin_lAinen: "te", johdin_inen: "ks", nimentö_t: "de", omanto_ien: "ks", osanto_iA: "ks", olento_inA: "ks", sija_monikko_1: "ks", sisätulento_iin: "ks", ulkopaikallissija_illA: "ks", vajanto_ittA: "ks", seuranto_ine: "ks"]); end; subrule vieras ($tietue, $vahva_aste, $heikko_aste, $monikko, $johdin_Us): return taivutuskaava ($tietue, yksikkö8 ($vahva_aste, $heikko_aste, $vahva_aste, $vahva_aste, [osanto_tA: $heikko_aste], sisätulento_seen, $vahva_aste, $heikko_aste) + [johdin_tOn: $vahva_aste, johdin_Us: $johdin_Us, johdin_mAinen: $heikko_aste, johdin_lAinen: $vahva_aste, johdin_inen: $monikko, nimentö_t: $vahva_aste, omanto_iT: $monikko, omanto_ten: $heikko_aste, osanto_itA: $monikko, olento_inA: $monikko, sija_monikko_1: $monikko, sisätulento_isiin: $monikko, sisätulento_ihin: $monikko, ulkopaikallissija_illA: $monikko, vajanto_ittA: $monikko, seuranto_ine: $monikko, johdin_ittAin: $monikko, yliaste: $monikko]) + voikko_lista_vain_lipulla(vanhat_muodot, s_hV_loppuinen ($tietue, $monikko + hA($tietue), $monikko + "h") + # vierahat taivutuskaava ($tietue, [olento_nA: $heikko_aste]) # Vieras+na. ); end; subrule kauris ($tietue, $kerake): define $vahva_aste := $kerake + "ii"; define $monikko := $kerake + "i"; return taivutuskaava ($tietue, yksikkö8 ($vahva_aste, "is", $vahva_aste, $vahva_aste, [osanto_tA: "is"], sisätulento_seen, $vahva_aste, "is") + [johdin_tOn: $vahva_aste, johdin_Us: $monikko, johdin_mAinen: "is", johdin_inen: $kerake + "i", nimentö_t: $vahva_aste, omanto_iT: $monikko, omanto_ten: "is", osanto_itA: $monikko, olento_inA: $monikko, sija_monikko_1: $monikko, sisätulento_isiin: $monikko, sisätulento_ihin: $monikko, ulkopaikallissija_illA: $monikko, vajanto_ittA: $monikko, seuranto_ine: $monikko, johdin_ittAin: $monikko, yliaste: $kerake + "e"]) + voikko_lista_vain_lipulla(vanhat_muodot, taivutuskaava ($tietue, [olento_nA: "is"]) # Kauris+na. ); end; subrule salaus ($tietue, $vahva_aste): $tietue :=+ johdoksen_lähtötiedot($tietue); $tietue.luokka := nimisana; $tietue.alku :=+ $vahva_aste; $tietue.perusmuoto := $tietue.alku + U($tietue) + "s"; return vastaus ($tietue); end; subrule vastaus ($tietue): return taivutuskaava ($tietue, yksikkö8 ("kse", "s", "kse", "kse", [osanto_tA: "s"], sisätulento_Vn, "kse", "s") + [johdin_tOn: "kse", johdin_lAinen: "s", johdin_mAinen: "s", johdin_inen: "ks", nimentö_t: "kse", omanto_ten: "s", omanto_ien: "ks", osanto_iA: "ks", olento_inA: "ks", sija_monikko_1: "ks", sisätulento_iin: "ks", ulkopaikallissija_illA: "ks", vajanto_ittA: "ks", seuranto_ine: "ks", johdin_ittAin: "ks"]); end; subrule kaunis ($tietue, $kerake, $johdin_Us): define $vahva_aste := $kerake + "ii"; define $monikko := $kerake + "i"; return taivutuskaava ($tietue, yksikkö8 ($vahva_aste, "is", $vahva_aste, $vahva_aste, [osanto_tA: "is"], sisätulento_seen, $vahva_aste, "is") + [johdin_tOn: $vahva_aste, johdin_Us: $johdin_Us] + # Ei tarvita johdosta johdin_inen. HV 13.5.2006. monikko7 ($vahva_aste, $monikko, $monikko, [omanto_iT: $monikko, omanto_ten: "is"], [osanto_itA: $monikko], [sisätulento_isiin: $monikko, sisätulento_ihin: $monikko], $kerake + "e")) + s_hV_loppuinen ($tietue, $monikko + "hi", $monikko + "h") + taivutuskaava ($tietue, [olento_nA: "is"]) # Kaunis+na. + voikko_lista_vain_lipulla(vanhat_muodot, taivutuskaava ($tietue, [omanto_iT: $kerake + "e", osanto_itA: $kerake + "e", olento_inA: $kerake + "e", sija_monikko_1: $kerake + "e", sisätulento_ihin: $kerake + "e", sisätulento_isiin: $kerake + "e", ulkopaikallissija_illA: $kerake + "e", vajanto_ittA: $kerake + "e", seuranto_ine: $kerake + "e"])); end; subrule paras ($tietue, $vahva_aste, $heikko_aste, $monikko, $voittoaste, $yliaste): return taivutuskaava ($tietue, yksikkö8 ($vahva_aste, $heikko_aste, $vahva_aste, $vahva_aste, [osanto_tA: $heikko_aste], sisätulento_seen, $voittoaste, $heikko_aste) + monikko7 ($vahva_aste, $monikko, $monikko, [omanto_iT: $monikko, omanto_ten: $heikko_aste], [osanto_itA: $monikko], [sisätulento_isiin: $monikko, sisätulento_ihin: $monikko], $yliaste)); end; # Askel- ja askele-tyyppisten sanojen taivutus. # # Sanojen taivutusmuotoja käytetään sekaisin, ja tämä # sääntö tunnistaa molemmat paitsi yksikön nimennössä. # Kaikilla sanoilla ei ole kahta erilaista yksinön # nimentöä. On esim. hepene, mutta ei *hepen. # # Yksikkö Monikko Yksikkö Monikko # askel askelet askele askeleet # askelen askelien askeleen askeleiden # askelten askeleitten # askelta askelia askeletta askeleita # askelena askelina askeleena askeleina # askeleksi askeliksi askeleeksi askeleiksi # askelessa askelissa askeleessa askeleissa # askelesta askelista askeleesta askeleista # askeleen askeliin askeleeseen askeleisiin # askeleihin # askelella askelilla askeleella askeleilla # askelelta askelilta askeleelta askeleilta # askelelle askelille askeleelle askeleille # askeletta askelitta askeleetta askeleitta # askeline askeleine # askelin askelein # # Käänteissanakirjassa "askelten" on askele-sanan monikon omanto, # mutta Perussanakirjassa askel-sanan monikon omanto. Tässä se # on askel-sanan sijamuoto, koska näin ohjelman saadaan # vähän yksinkertaisemmaksi. subrule taival ($tietue, $vahva_aste, $heikko_aste): return taivutuskaava ($tietue, yksikkö8 ($vahva_aste + "e", $heikko_aste, $vahva_aste + "e", $vahva_aste + "e", [osanto_tA: $heikko_aste], sisätulento_Vn, $vahva_aste + "e", $heikko_aste) + [johdin_tOn: $vahva_aste + "e", johdin_mAinen: $heikko_aste, johdin_inen: $vahva_aste + "e", nimentö_t: $vahva_aste + "e", omanto_ien: $vahva_aste, omanto_ten: $heikko_aste, osanto_iA: $vahva_aste, olento_inA: $vahva_aste, sija_monikko_1: $vahva_aste, sisätulento_iin: $vahva_aste, ulkopaikallissija_illA: $vahva_aste, vajanto_ittA: $vahva_aste, seuranto_ine: $vahva_aste, johdin_ittAin: $vahva_aste]) + # Taipale taivutuskaava ($tietue, [omistusliite: $vahva_aste + "ee", nimentö: $vahva_aste + "e", omanto_n: $vahva_aste + "ee", osanto_ttA: $vahva_aste + "e", olento_nA: $vahva_aste + "ee", tulento_ksi: $vahva_aste + "ee", sisäolento_ssA: $vahva_aste + "ee", sisätulento_seen: $vahva_aste + "ee", ulkopaikallissija_llA: $vahva_aste + "ee", vajanto_ttA: $vahva_aste + "ee"] + yhdyssana ($vahva_aste + "e") + [johdin_tOn: $vahva_aste + "ee", johdin_mAinen: $vahva_aste + "e", johdin_inen: $vahva_aste, nimentö_t: $vahva_aste + "ee", omanto_iT: $vahva_aste + "e", osanto_itA: $vahva_aste + "e", olento_inA: $vahva_aste + "e", sija_monikko_1: $vahva_aste + "e", sisätulento_isiin: $vahva_aste + "e", sisätulento_ihin: $vahva_aste + "e", ulkopaikallissija_illA: $vahva_aste + "e", vajanto_ittA: $vahva_aste + "e", seuranto_ine: $vahva_aste + "e", johdin_ittAin: $vahva_aste + "e"]); end; # Loppu-s muuttuu ääntiöksi. # Vai ne sijamuodot, joissa muutos tapahtuu. # # Kaunis -> kaun+i+in, kauni++iden. # Altis -> Alt+ti+in, alt+ti+iden. # Uros -> ur+o+on, uro++iden. # # Parametrit $yksikkö ja $monikko ovat plusmerkkien välissä oleva sanan osa. # subrule s_V_loppuinen ($tietue, $yksikkö, $monikko): return taivutuskaava ($tietue, [omistusliite: $yksikkö, omanto_n: $yksikkö, olento_nA: $yksikkö, tulento_ksi: $yksikkö, sisäolento_ssA: $yksikkö, sisätulento_seen: $yksikkö, ulkopaikallissija_llA: $yksikkö, vajanto_ttA: $yksikkö, nimentö_t: $yksikkö, omanto_iT: $monikko, osanto_itA: $monikko, olento_inA: $monikko, sija_monikko_1: $monikko, sisätulento_isiin: $monikko, sisätulento_ihin: $monikko, ulkopaikallissija_illA: $monikko, vajanto_ittA: $monikko, seuranto_ine: $monikko]); end; # Loppu-s muuttuu h:ksi + ääntiöksi. # Vai ne sijamuodot, joissa muutos tapahtuu. # Kaunis -> kaunihin. # Uros -> urohon. subrule s_hV_loppuinen ($tietue, $yksikkö, $monikko): return voikko_lista_vain_lipulla(vanhahkot_muodot, taivutuskaava ($tietue, [omistusliite: $yksikkö, omanto_n: $yksikkö, olento_nA: $yksikkö, tulento_ksi: $yksikkö, sisäolento_ssA: $yksikkö, sisätulento_sen: $yksikkö, ulkopaikallissija_llA: $yksikkö, vajanto_ttA: $yksikkö, voittoaste: $yksikkö, nimentö_t: $yksikkö, omanto_ien: $monikko, omanto_iT: $monikko, osanto_iA: $monikko, olento_inA: $monikko, sija_monikko_1: $monikko, sisätulento_isin: $monikko, ulkopaikallissija_illA: $monikko, vajanto_ittA: $monikko, seuranto_ine: $monikko, yliaste: $monikko])); end; subrule nainen ($tietue): return taivutuskaava ($tietue, [omistusliite: "se", nimentö: "nen", omanto_n: "se", osanto_tA: "s", olento_nA: "se", tulento_ksi: "se", sisäolento_ssA: "se", sisätulento_Vn: "se", ulkopaikallissija_llA: "se", vajanto_ttA: "se", kerronto_sti : "se", voittoaste: "se", johdin_tOn: "se", johdin_UUs: "s", johdin_lAinen: "s", johdin_mAinen: "s", nimentö_t: "se", omanto_ien: "s", omanto_ten: "s", osanto_iA: "s", olento_inA: "s", sija_monikko_1: "s", sisätulento_iin: "s", ulkopaikallissija_illA: "s", vajanto_ittA: "s", seuranto_ine: "s", yliaste: "s", johdin_ittAin: "s", tavuviiva: "s"] + yhdyssana ("s")); end; subrule vihanta ($tietue, $vahva_aste, $heikko_aste): return taivutuskaava ($tietue, yksikkö8 ($vahva_aste + A($tietue), $vahva_aste + A($tietue), $vahva_aste + A($tietue), $heikko_aste + A($tietue), [osanto_A: $vahva_aste + A($tietue), osanto_tA: $vahva_aste + A($tietue)], sisätulento_Vn, $heikko_aste + A($tietue), $vahva_aste + A($tietue)) + [johdin_tOn: $heikko_aste + A($tietue), johdin_UUs: $heikko_aste, johdin_inen: $vahva_aste + A($tietue)] + monikko7 ($heikko_aste + A($tietue), $vahva_aste, $heikko_aste, [omanto_ien: $vahva_aste, omanto_iT: $vahva_aste + O($tietue), omanto_in: $vahva_aste + A($tietue), omanto_jen: $vahva_aste + O($tietue)], [osanto_iA: $vahva_aste, osanto_itA: $vahva_aste + O($tietue), osanto_jA: $vahva_aste + O($tietue)], [sisätulento_ihin: $vahva_aste + O($tietue), sisätulento_iin: $heikko_aste], $heikko_aste)) + taivutuskaava ($tietue, [omanto_iT: $heikko_aste + O($tietue), osanto_itA: $heikko_aste + O($tietue), sisätulento_ihin: $heikko_aste + O($tietue)]); end; ########################################################################### # Teonsanat. subrule punoa ($tietue, $vahva_aste, $heikko_aste): return käskytapa ($tietue, $heikko_aste) + taivutuskaava ($tietue, tositapa ($tietue, $vahva_aste, $heikko_aste, $vahva_aste, $heikko_aste, tositapa_4_tt ($heikko_aste)) + ehtotapa_ttA ($tietue, $vahva_aste, $heikko_aste) + mahtotapa_ne_ttA ($tietue, $vahva_aste, $heikko_aste) + käskytapa_ttA ($tietue, $vahva_aste, $heikko_aste) + nimitapa_laatutapa ($tietue, $vahva_aste, $heikko_aste) + [johdin_ntA: $heikko_aste]) + tekijännimi ($tietue, $vahva_aste, kantaja); end; subrule punoa_punottaa ($tietue, $vahva_aste, $heikko_aste): return punoa ($tietue, $vahva_aste, $heikko_aste) + punottaa ($tietue, $heikko_aste); end; subrule muistaa ($tietue, $vahva_aste, $heikko_aste, $kertoman_vahva_aste, $kertoman_heikko_aste): define $tekijä4 := $kertoman_heikko_aste + "e"; return käskytapa ($tietue, $heikko_aste) + taivutuskaava ($tietue, tositapa ($tietue, $vahva_aste, $heikko_aste, $kertoman_vahva_aste, $kertoman_heikko_aste, tositapa_4_tt ($tekijä4)) + ehtotapa_ttA ($tietue, $vahva_aste, $tekijä4) + mahtotapa_ne_ttA ($tietue, $vahva_aste, $tekijä4) + käskytapa_ttA ($tietue, $vahva_aste, $tekijä4) + nimitapa_laatutapa ($tietue, $vahva_aste, $tekijä4)) + tekijännimi ($tietue, $vahva_aste, kantaja); end; subrule muistella ($tietue, $vahva_aste, $heikko_aste): $tietue :=+ johdoksen_lähtötiedot($tietue); $tietue.luokka := teonsana; $tietue.perusmuoto := $tietue.alku + $heikko_aste + "el" + lA($tietue); return katsella ($tietue, $vahva_aste + "el", $heikko_aste + "el"); end; subrule muistaa_muistella ($tietue, $vahva_aste, $heikko_aste, $kertoman_vahva_aste, $kertoman_heikko_aste): return muistaa ($tietue, $vahva_aste, $heikko_aste, $kertoman_vahva_aste, $kertoman_heikko_aste) + muistella ($tietue, $kertoman_vahva_aste, $kertoman_heikko_aste); end; subrule muistua ($tietue): $tietue :=+ johdoksen_lähtötiedot($tietue); $tietue.luokka := teonsana; $tietue.alku :=+ U($tietue); $tietue.perusmuoto := $tietue.alku + A($tietue); return punoa ($tietue, "", ""); end; subrule kaivaa ($tietue, $vahva_aste, $heikko_aste, $tekijännimi): return käskytapa ($tietue, $heikko_aste + A($tietue)) + taivutuskaava ($tietue, tositapa ($tietue, $vahva_aste + A($tietue), $heikko_aste + A($tietue), $vahva_aste + O($tietue), $heikko_aste + O($tietue), tositapa_4_tt ($heikko_aste + "e")) + ehtotapa_ttA ($tietue, $vahva_aste + A($tietue), $heikko_aste + "e") + mahtotapa_ne_ttA ($tietue, $vahva_aste + A($tietue), $heikko_aste + "e") + käskytapa_ttA ($tietue, $vahva_aste + A($tietue), $heikko_aste + "e") + nimitapa_laatutapa ($tietue, $vahva_aste + A($tietue), $heikko_aste + "e")) + tekijännimi ($tietue, $vahva_aste + A($tietue), $tekijännimi); end; subrule sallia ($tietue, $vahva_aste, $heikko_aste): return käskytapa ($tietue, $heikko_aste + "i") + taivutuskaava ($tietue, tositapa ($tietue, $vahva_aste + "i", $heikko_aste + "i", $vahva_aste, $heikko_aste, tositapa_4_tt ($heikko_aste + "i")) + ehtotapa_ttA ($tietue, $vahva_aste, $heikko_aste + "i") + mahtotapa_ne_ttA ($tietue, $vahva_aste + "i", $heikko_aste + "i") + käskytapa_ttA ($tietue, $vahva_aste + "i", $heikko_aste + "i") + nimitapa_laatutapa ($tietue, $vahva_aste + "i", $heikko_aste + "i") + [johdin_ntA: $heikko_aste + "i"]) + tekijännimi ($tietue, $vahva_aste + "i", kulkija); end; subrule katsella ($tietue, $vahva_aste, $heikko_aste): return ehtotapa2 ($tietue, $vahva_aste + "e") + käskytapa ($tietue, $vahva_aste + "e") + taivutuskaava ($tietue, tositapa ($tietue, $vahva_aste + "e", $vahva_aste + "e", $vahva_aste, $vahva_aste, tositapa_4_l ($heikko_aste)) + ehtotapa_tA ($tietue, $vahva_aste, $heikko_aste) + mahtotapa_le_tA ($tietue, $heikko_aste, $heikko_aste) + käskytapa_tA ($tietue, $heikko_aste, $heikko_aste) + [nimitapa_1_lA: $heikko_aste, nimitapa_2: $heikko_aste + "l", nimitapa_2_tA: $heikko_aste] + nimitapa_3_tA_4 ($tietue, $vahva_aste + "e", $heikko_aste) + laatutapa_1_tA ($tietue, $vahva_aste + "e", $heikko_aste) + laatutapa_2_lUt ($tietue, $heikko_aste)) + tekijännimi ($tietue, $vahva_aste + "i", kulkija) + sana_U ($tietue, $vahva_aste); # Katselu. end; subrule katketa_kohota ($tietue, $vahva_aste, $heikko_aste): return käskytapa ($tietue, $vahva_aste + A($tietue)) + taivutuskaava ($tietue, tositapa ($tietue, $vahva_aste + A($tietue), $vahva_aste + A($tietue), $vahva_aste + "s", $vahva_aste + "s", tositapa_4_tt ($heikko_aste)) + ehtotapa_ttA ($tietue, $vahva_aste + A($tietue), $heikko_aste) + mahtotapa_ne_ttA ($tietue, $heikko_aste + "n", $heikko_aste) + käskytapa_ttA ($tietue, $heikko_aste + "t", $heikko_aste) + [nimitapa_1_tA: $heikko_aste, nimitapa_2: $heikko_aste + "t", nimitapa_2_ttA: $heikko_aste] + nimitapa_3_ttA_4 ($tietue, $vahva_aste + A($tietue), $heikko_aste) + laatutapa_1_ttA ($tietue, $vahva_aste + A($tietue), $heikko_aste) + laatutapa_2_nUt_ttU ($tietue, $heikko_aste + "n", $heikko_aste) + [johdin_ntA: $heikko_aste]) + taivutuskaava ($tietue, [ehtotapa: $vahva_aste]) # Katke+isi, koho+isi. + tekijännimi ($tietue, $vahva_aste + A($tietue), kantaja); end; subrule katketa ($tietue, $vahva_aste, $heikko_aste): return katketa_kohota ($tietue, $vahva_aste, $heikko_aste) + voikko_lista_vain_lipulla(vanhat_muodot, tositavan_kestämä ($tietue, $vahva_aste + "e", $vahva_aste + "e") # Katke+en, jne. + tositavan_kestämä_y3 ($tietue, $vahva_aste + "e") # Katkee. + käskytapa ($tietue, $vahva_aste + "e")); # Katkee. end; subrule nuolaista ($tietue, $vahva_aste, $heikko_aste): return käskytapa ($tietue, $vahva_aste + "e") + taivutuskaava ($tietue, tositapa ($tietue, $vahva_aste + "e", $vahva_aste + "e", $vahva_aste, $vahva_aste, tositapa_4_t ($heikko_aste)) + ehtotapa_tA ($tietue, $vahva_aste, $heikko_aste) + mahtotapa_se_tA ($tietue, $heikko_aste, $heikko_aste) + käskytapa_tA ($tietue, $heikko_aste, $heikko_aste) + [nimitapa_1_tA: $heikko_aste, nimitapa_2: $heikko_aste + "t", nimitapa_2_tA: $heikko_aste] + nimitapa_3_tA_4 ($tietue, $vahva_aste + "e", $heikko_aste) + laatutapa_1_tA ($tietue, $vahva_aste + "e", $heikko_aste) + laatutapa_2_sUt ($tietue, $heikko_aste)) + tekijännimi ($tietue, $vahva_aste + "i", kulkija); # Nuolaisija. end; subrule nuolaista2 ($tietue): return nuolaista ($tietue, "is", "is") # Nuolaista. + sana_U ($tietue, "is"); # Nuolaisu. end; # Vain kerakevartaloisia muotoja. # subrule seistä ($tietue): return taivutuskaava ($tietue, [tositavan_kestämä_tAAn: "", tositavan_kertoma_tiin: "", ehtotapa_tA: "", mahtotapa_se: "", mahtotapa_tA: "", käskytapa: "", käskytapa_tA: "", nimitapa_1_tA: "", nimitapa_2: "t", nimitapa_2_tA: "", nimitapa_3_tA: "", johdin_tAvA: "", johdin_sUt_stU: ""]); end; subrule sana_U ($tietue, $lisä): $tietue :=+ johdoksen_lähtötiedot($tietue); $tietue.alku :=+ $lisä + U($tietue); $tietue.luokka := nimisana; $tietue.perusmuoto := $tietue.alku; return arvelu ($tietue, "", ""); end; subrule aavistus ($tietue): $tietue :=+ johdoksen_lähtötiedot($tietue); $tietue.alku :=+ U($tietue); $tietue.luokka := nimisana; $tietue.perusmuoto := $tietue.alku + "s"; return vastaus ($tietue); end; subrule sana_Us ($tietue): $tietue :=+ johdoksen_lähtötiedot($tietue); $tietue.alku :=+ "k" + U($tietue) + U($tietue); $tietue.luokka := nimisana; $tietue.perusmuoto := $tietue.alku + "s"; return kalleus ($tietue); end; subrule sana_Vs ($tietue, $lisä): $tietue :=+ johdoksen_lähtötiedot($tietue); $tietue.alku :=+ $lisä; $tietue.luokka := nimisana; $tietue.perusmuoto := $tietue.alku +"s"; return vastaus ($tietue); end; subrule murros ($tietue): $tietue :=+ johdoksen_lähtötiedot($tietue); $tietue.alku :=+ "ro"; $tietue.luokka := nimisana; $tietue.perusmuoto := $tietue.alku +"s"; $tietue.äs := a; return vastaus ($tietue); end; # Kirjoittaa, kirjottaa => kirjoittautua, kirjottautua. # subrule kirjoittautua ($tietue, $lisä): $tietue :=+ johdoksen_lähtötiedot($tietue); $tietue.alku :=+ $lisä + A($tietue) + U($tietue); $tietue.perusmuoto := $tietue.alku + "t" + U($tietue) + A($tietue); return antautua ($tietue, tU($tietue), dU($tietue)); end; # Kirjoittaa, kirjottaa => kirjoitella, kirjotella. # subrule kirjoitella ($tietue, $lisä): $tietue :=+ johdoksen_lähtötiedot($tietue); $tietue.alku :=+ $lisä; $tietue.perusmuoto := $tietue.alku + "el" + lA($tietue); return katsella ($tietue, "tel", "el"); end; subrule selvitä ($tietue, $vahva_aste, $heikko_aste): return haluta ($tietue, $vahva_aste, $heikko_aste); end; subrule kohota ($tietue, $vahva_aste, $heikko_aste): return katketa_kohota ($tietue, $vahva_aste, $heikko_aste) + voikko_lista_vain_lipulla(vanhat_muodot, tositavan_kestämä ($tietue, $vahva_aste + O($tietue), $vahva_aste + O($tietue)) # Koho+on, jne. + tositavan_kestämä_y3 ($tietue, $vahva_aste + O($tietue)) # Kohoo. + käskytapa ($tietue, $vahva_aste + O($tietue)) # Kohoo. + tekijännimi ($tietue, $vahva_aste + O($tietue), kantaja)); # Kohooja. end; subrule kohota_kohoilla ($tietue, $vahva_aste, $heikko_aste): return kohota ($tietue, $vahva_aste, $heikko_aste) + salailla ($tietue, $vahva_aste); # Kohota => kohoilla. end; subrule haluta ($tietue, $vahva_aste, $heikko_aste): return taivutuskaava ($tietue, tositapa ($tietue, $vahva_aste + A($tietue), $vahva_aste + A($tietue), $vahva_aste + "s", $vahva_aste + "s", tositapa_4_tt ($heikko_aste)) + ehtotapa_ttA ($tietue, $vahva_aste + A($tietue), $heikko_aste) + mahtotapa_ne_ttA ($tietue, $heikko_aste + "n", $heikko_aste) + käskytapa_ttA ($tietue, $heikko_aste + "t", $heikko_aste) + [nimitapa_1_tA: $heikko_aste, nimitapa_2: $heikko_aste + "t", nimitapa_2_ttA: $heikko_aste] + nimitapa_3_ttA_4 ($tietue, $vahva_aste + A($tietue), $heikko_aste) + laatutapa_1_ttA ($tietue, $vahva_aste + A($tietue), $heikko_aste) + laatutapa_2_nUt_ttU ($tietue, $heikko_aste + "n", $heikko_aste)) + käskytapa ($tietue, $vahva_aste + A($tietue)) + tekijännimi ($tietue, $vahva_aste + A($tietue), kantaja); end; subrule kihistä ($tietue): return nuolaista ($tietue, "is", "is") + kihajaa ($tietue); end; subrule kihajaa ($tietue): $tietue.äs := ääntiösointu_kihistä ($tietue); return tositavan_kestämä ($tietue, AjA($tietue), AjA($tietue)) # Kihaja+n. + tositavan_kertoma ($tietue, Aj($tietue), Aj($tietue)) # Kihaj+i. + ehtotapa2 ($tietue, AjA($tietue)); # Kihaja+isi. end; subrule kihinä ($tietue): $tietue :=+ johdoksen_lähtötiedot($tietue); $tietue.alku :=+ "in"; $tietue.luokka := nimisana; $tietue.perusmuoto := $tietue.alku + A($tietue); return apila ($tietue, A($tietue), O($tietue)); end; subrule kihahtaa ($tietue): $tietue :=+ johdoksen_lähtötiedot($tietue); $tietue.äs := ääntiösointu_kihistä ($tietue); $tietue.alku :=+ A($tietue) + "h"; $tietue.perusmuoto := $tietue.alku + "t" + AA($tietue); return muistaa_muistella ($tietue, tA($tietue), dA($tietue), "t", "d") + taivutuskaava ($tietue, [johdin_Us_ksen: "d"]); # Kihahdus. end; subrule kihauttaa_kihautella ($tietue): $tietue :=+ johdoksen_lähtötiedot($tietue); $tietue.äs := ääntiösointu_kihistä ($tietue); $tietue.alku :=+ A($tietue) + U($tietue) + "t"; $tietue.perusmuoto := $tietue.alku + "t" + AA($tietue); return muistaa_muistella ($tietue, tA($tietue), A($tietue), "t", "") + taivutuskaava ($tietue, [johdin_Us_ksen: ""]); # Kihautus. end; subrule antautua ($tietue, $vahva_aste, $heikko_aste): return punoa ($tietue, $vahva_aste, $heikko_aste); end; subrule laskea ($tietue, $vahva_aste, $heikko_aste): return käskytapa ($tietue, $heikko_aste + "e") + taivutuskaava ($tietue, tositapa ($tietue, $vahva_aste + "e", $heikko_aste + "e", $vahva_aste, $heikko_aste, tositapa_4_tt ($heikko_aste + "e")) + ehtotapa_ttA ($tietue, $vahva_aste, $heikko_aste + "e") + mahtotapa_ne_ttA ($tietue, $vahva_aste + "e", $heikko_aste + "e") + käskytapa_ttA ($tietue, $vahva_aste + "e", $heikko_aste + "e") + nimitapa_laatutapa_i ($tietue, $vahva_aste + "e", $heikko_aste + "e", $vahva_aste + "i") + [johdin_ntA: $heikko_aste + "e"]) + tekijännimi ($tietue, $vahva_aste + "i", kulkija); end; subrule laskea_laskeskella ($tietue, $vahva_aste, $heikko_aste): return laskea ($tietue, $vahva_aste, $heikko_aste) + muistella ($tietue, $heikko_aste + "esk", $heikko_aste + "esk"); # Laskeskella. end; subrule haastaa_haastella ($tietue, $vahva_aste, $heikko_aste): return tositavan_kertoma ($tietue, $vahva_aste, $heikko_aste) + käskytapa ($tietue, $heikko_aste + A($tietue)) + taivutuskaava ($tietue, tositapa ($tietue, $vahva_aste + A($tietue), $heikko_aste + A($tietue), $vahva_aste + O($tietue), $heikko_aste + O($tietue), tositapa_4_tt ($heikko_aste + "e")) + ehtotapa_ttA ($tietue, $vahva_aste + A($tietue), $heikko_aste + "e") + mahtotapa_ne_ttA ($tietue, $vahva_aste + A($tietue), $heikko_aste + "e") + käskytapa_ttA ($tietue, $vahva_aste + A($tietue), $heikko_aste + "e") + nimitapa_laatutapa ($tietue, $vahva_aste + A($tietue), $heikko_aste + "e")) + tekijännimi ($tietue, $vahva_aste + A($tietue), kantaja) + muistella ($tietue, $vahva_aste, $heikko_aste); # Haastella. end; subrule huutaa ($tietue, $vahva_aste, $heikko_aste): return käskytapa ($tietue, $heikko_aste + A($tietue)) + taivutuskaava ($tietue, tositapa ($tietue, $vahva_aste + A($tietue), $heikko_aste + A($tietue), "s", "s", tositapa_4_tt ($heikko_aste + "e")) + ehtotapa_ttA ($tietue, $vahva_aste + A($tietue), $heikko_aste + "e") + mahtotapa_ne_ttA ($tietue, $vahva_aste + A($tietue), $heikko_aste + "e") + käskytapa_ttA ($tietue, $vahva_aste + A($tietue), $heikko_aste + "e") + [nimitapa_1_A: $vahva_aste + A($tietue), nimitapa_2: $vahva_aste + A($tietue), nimitapa_2_ttA: $heikko_aste + "e"] + nimitapa_3_ttA_4 ($tietue, $vahva_aste + A($tietue), $heikko_aste + "e") + laatutapa_1_ttA ($tietue, $vahva_aste + A($tietue), $heikko_aste + "e") + laatutapa_2_nUt_ttU ($tietue, $vahva_aste + A($tietue), $heikko_aste + "e")) + tekijännimi ($tietue, $vahva_aste + A($tietue), kantaja); end; subrule aleta ($tietue, $vahva_aste, $heikko_aste): return käskytapa ($tietue, $vahva_aste + "ne") + taivutuskaava ($tietue, tositapa ($tietue, $vahva_aste + "ne", $vahva_aste + "ne", $vahva_aste + "n", $vahva_aste + "n", tositapa_4_tt ($heikko_aste)) + ehtotapa_ttA ($tietue, $vahva_aste + "n", $heikko_aste) + mahtotapa_ne_ttA ($tietue, $heikko_aste + "n", $heikko_aste) + käskytapa_ttA ($tietue, $heikko_aste + "t", $heikko_aste) + [nimitapa_1_tA: $heikko_aste, nimitapa_2: $heikko_aste + "t", nimitapa_2_ttA: $heikko_aste] + nimitapa_3_ttA_4 ($tietue, $vahva_aste + "ne", $heikko_aste) + laatutapa_1_ttA ($tietue, $vahva_aste + "ne", $heikko_aste) + laatutapa_2_nUt_ttU ($tietue, $heikko_aste + "n", $heikko_aste)) + taivutuskaava ($tietue, [ehtotapa: $vahva_aste + "ne"]) # Aleneisi. + tekijännimi ($tietue, $vahva_aste + "ni", kulkija); end; subrule alentaa ($tietue, $heikko_aste): $tietue :=+ johdoksen_lähtötiedot($tietue); $tietue.alku :=+ $heikko_aste + "n"; $tietue.perusmuoto := $tietue.alku + tAA($tietue); return huutaa ($tietue, "t", "n") + taivutuskaava ($tietue, [johdin_Us_ksen: "n"]); # Alennus. end; subrule alentua ($tietue, $heikko_aste): $tietue :=+ johdoksen_lähtötiedot($tietue); $tietue.alku :=+ $heikko_aste + "n"; $tietue.perusmuoto := $tietue.alku + "t" + UA($tietue); return punoa ($tietue, tU($tietue), nU($tietue)); end; subrule alennella ($tietue, $heikko_aste): $tietue :=+ johdoksen_lähtötiedot($tietue); $tietue.alku :=+ $heikko_aste + "n"; $tietue.luokka := teonsana; $tietue.perusmuoto := $tietue.alku + "nel" + lA($tietue); #define $a := transmit ($tietue.perusmuoto); return katsella ($tietue, "tel", "nel"); end; subrule salata ($tietue, $vahva_aste, $heikko_aste): return tositavan_kestämä_y3 ($tietue, $vahva_aste + A($tietue)) + taivutuskaava ($tietue, tositapa_ei_kestämä_y3 ($tietue, $vahva_aste + A($tietue), $vahva_aste + A($tietue), $vahva_aste + "s", $vahva_aste + "s", tositapa_4_tt ($heikko_aste)) + ehtotapa_ttA ($tietue, $vahva_aste, $heikko_aste) + mahtotapa_ne_ttA ($tietue, $heikko_aste + "n", $heikko_aste) + käskytapa_ttA ($tietue, $heikko_aste + "t", $heikko_aste) + [nimitapa_1_tA: $heikko_aste, nimitapa_2: $heikko_aste + "t", nimitapa_2_ttA: $heikko_aste] + nimitapa_3_ttA_4 ($tietue, $vahva_aste + A($tietue), $heikko_aste) + laatutapa_1_ttA ($tietue, $vahva_aste + A($tietue), $heikko_aste) + laatutapa_2_nUt_ttU ($tietue, $heikko_aste + "n", $heikko_aste) + [johdin_Us_ksen: $vahva_aste]) + tekijännimi ($tietue, $vahva_aste + A($tietue), kantaja); end; subrule salata_salailla ($tietue, $vahva_aste, $heikko_aste): return salata ($tietue, $vahva_aste, $heikko_aste) + salailla ($tietue, $vahva_aste); end; subrule arvailla ($tietue): return ehtotapa2 ($tietue, "e") + käskytapa ($tietue, "e") + taivutuskaava ($tietue, tositapa ($tietue, "e", "e", "", "", tositapa_4_l ("")) + ehtotapa_tA ($tietue, "", "") + mahtotapa_le_tA ($tietue, "", "") + käskytapa_tA ($tietue, "", "") + [nimitapa_1_lA: "", nimitapa_2: "l", nimitapa_2_tA: ""] + nimitapa_3_tA_4 ($tietue, "e", "") + laatutapa_1_tA ($tietue, "e", "") + laatutapa_2_lUt ($tietue, "")) + tekijännimi ($tietue, "i", kulkija) + sana_U ($tietue, ""); end; subrule paistaa ($tietue, $vahva_aste, $heikko_aste): return tositavan_kertoma ($tietue, $vahva_aste, $heikko_aste) + käskytapa ($tietue, A($tietue)) + taivutuskaava ($tietue, tositapa ($tietue, $vahva_aste + A($tietue), $vahva_aste + A($tietue), $vahva_aste + O($tietue), $heikko_aste + O($tietue), tositapa_4_tt ($heikko_aste + "e")) + ehtotapa_ttA ($tietue, $vahva_aste + A($tietue), $heikko_aste + "e") + mahtotapa_ne_ttA ($tietue, $vahva_aste + A($tietue), $heikko_aste + "e") + käskytapa_ttA ($tietue, $vahva_aste + A($tietue), $heikko_aste + "e") + nimitapa_laatutapa ($tietue, $vahva_aste + A($tietue), $heikko_aste + "e")) + tekijännimi ($tietue, $vahva_aste + A($tietue), kulkija); end; subrule voida ($tietue, $lisä1, $lisä2): return tositavan_kestämä_y3 ($tietue, $lisä1) + käskytapa ($tietue, $lisä1) + taivutuskaava ($tietue, tositapa_ei_kestämä_y3 ($tietue, $lisä1, $lisä1, $lisä2, $lisä2, tositapa_4_d ($lisä1)) + ehtotapa_tA ($tietue, $lisä2, $lisä1) + mahtotapa_ne_tA ($tietue, $lisä1, $lisä1) + käskytapa_tA ($tietue, $lisä1, $lisä1) + [nimitapa_1_dA: $lisä1, nimitapa_2: $lisä1 + "d", nimitapa_2_tA: $lisä1] + nimitapa_3_tA_4 ($tietue, $lisä1, $lisä1) + [johdin_vE: $lisä1, johdin_tAvA: $lisä1] + laatutapa_2_nUt_dU ($tietue, $lisä1, $lisä1) + [johdin_nti: $lisä1]) + tekijännimi ($tietue, $lisä1, myyjä); end; subrule kanavoida ($tietue, $lisä1, $lisä2): return tositavan_kestämä_y3 ($tietue, $lisä1) + käskytapa ($tietue, $lisä1) + taivutuskaava ($tietue, tositapa_ei_kestämä_y3 ($tietue, $lisä1, $lisä1, $lisä2, $lisä2, tositapa_4_d ($lisä1)) + ehtotapa_tA ($tietue, $lisä2, $lisä1) + mahtotapa_ne_tA ($tietue, $lisä1, $lisä1) + käskytapa_tA ($tietue, $lisä1, $lisä1) + [nimitapa_1_dA: $lisä1, nimitapa_2: $lisä1 + "d", nimitapa_2_tA: $lisä1] + nimitapa_3_tA_4 ($tietue, $lisä1, $lisä1) + laatutapa_1_tA ($tietue, $lisä1, $lisä1) + laatutapa_2_nUt_dU ($tietue, $lisä1, $lisä1) + [johdin_nti: $lisä1]) + tekijännimi ($tietue, $lisä1, myyjä); end; subrule tulla ($tietue, $tositapa_4, $mahtotapa, $nimitapa_1, $nimitapa_2_lisä, $laatutapa_2): return käskytapa ($tietue, "e") + taivutuskaava ($tietue, tositapa ($tietue, "e", "e", "", "", $tositapa_4) + [ehtotapa: "", ehtotapa_tA: "", $mahtotapa: "", mahtotapa_tA: "", käskytapa: "", käskytapa_tA: "", $nimitapa_1: "", nimitapa_2: $nimitapa_2_lisä, nimitapa_2_tA: ""] + nimitapa_3_tA_4 ($tietue, "e", "") + laatutapa_1_tA ($tietue, "e", "") + $laatutapa_2) + tekijännimi ($tietue, "i", kulkija); end; subrule ehtotapa_tA ($tietue, $vahva_aste, $heikko_aste): return [ehtotapa: $vahva_aste, ehtotapa_tA: $heikko_aste]; end; subrule ehtotapa_ttA ($tietue, $vahva_aste, $heikko_aste): return [ehtotapa: $vahva_aste, ehtotapa_ttA: $heikko_aste]; end; subrule mahtotapa_ne_ttA ($tietue, $vahva_aste, $heikko_aste): #define $a := transmit ("huuhaa " + $vahva_aste + " " + $heikko_aste); return [mahtotapa_ne: $vahva_aste, mahtotapa_ttA: $heikko_aste]; end; subrule mahtotapa_se_tA ($tietue, $vahva_aste, $heikko_aste): return [mahtotapa_se: $vahva_aste, mahtotapa_tA: $heikko_aste]; end; le mahtotapa_ne_tA ($tietue, $vahva_aste, $heikko_aste): return [mahtotapa_ne: $vahva_aste, mahtotapa_tA: $heikko_aste]; end; subrule mahtotapa_le_tA ($tietue, $vahva_aste, $heikko_aste): return [mahtotapa_le: $vahva_aste, mahtotapa_tA: $heikko_aste]; end; subrule käskytapa_ttA ($tietue, $vahva_aste, $heikko_aste): return [käskytapa: $vahva_aste, käskytapa_ttA: $heikko_aste]; end; subrule käskytapa_tA ($tietue, $vahva_aste, $heikko_aste): return [käskytapa: $vahva_aste, käskytapa_tA: $heikko_aste]; end; subrule nimitapa_3_ttA_4 ($tietue, $vahva_aste, $heikko_aste): return [nimitapa_3: $vahva_aste, nimitapa_3_ttA: $heikko_aste, nimitapa_45: $vahva_aste, johdin_mA: $vahva_aste]; end; subrule nimitapa_3_tA_4 ($tietue, $vahva_aste, $heikko_aste): return [nimitapa_3: $vahva_aste, nimitapa_3_tA: $heikko_aste, nimitapa_45: $vahva_aste, johdin_mA: $vahva_aste]; end; subrule nimitapa_laatutapa ($tietue, $vahva_aste, $heikko_aste): return nimitapa_laatutapa_i ($tietue, $vahva_aste, $heikko_aste, $vahva_aste); end; subrule nimitapa_laatutapa_i ($tietue, $vahva_aste, $heikko_aste, $nimitapa_2): return [nimitapa_1_A: $vahva_aste, nimitapa_2: $nimitapa_2, nimitapa_2_ttA: $heikko_aste] + nimitapa_3_ttA_4 ($tietue, $vahva_aste, $heikko_aste) + laatutapa_1_ttA ($tietue, $vahva_aste, $heikko_aste) + laatutapa_2_nUt_ttU ($tietue, $vahva_aste, $heikko_aste); end; subrule laatutapa_1_tA ($tietue, $vahva_aste, $heikko_aste): return [johdin_vA: $vahva_aste, johdin_tAvA: $heikko_aste]; end; subrule laatutapa_1_ttA ($tietue, $vahva_aste, $heikko_aste): return [johdin_vA: $vahva_aste, johdin_ttAvA: $heikko_aste]; end; subrule laatutapa_2_lUt ($tietue, $lisä): return [johdin_lUt: $lisä, johdin_tU: $lisä, johdin_lU: $lisä]; end; subrule laatutapa_2_nUt ($tietue, $vahva_aste, $heikko_aste): return [johdin_nUt: $vahva_aste, johdin_tU: $heikko_aste, johdin_nU: $heikko_aste]; end; subrule laatutapa_2_nUt_dU ($tietue, $vahva_aste, $heikko_aste): return [johdin_nUt: $vahva_aste, johdin_tU: $heikko_aste, johdin_dU: $heikko_aste]; end; subrule laatutapa_2_nUt_ttU ($tietue, $vahva_aste, $heikko_aste): return [johdin_nUt: $vahva_aste, johdin_ttU: $heikko_aste]; end; subrule laatutapa_2_rUt ($tietue, $vahva_aste, $heikko_aste): return [johdin_rUt: $vahva_aste, johdin_tU: $heikko_aste, johdin_rU: $heikko_aste]; end; subrule laatutapa_2_sUt ($tietue, $lisä): return [johdin_sUt_stU: $lisä]; end; subrule eka_kirjain ($sana): if ($sana matches "k.*") then return "k"; elseif ($sana matches "p.*") then return "p"; elseif ($sana matches "t.*") then return "t"; else error "eka kirjain: 1. kirjain ei ole k, p eikä t"; end; end; # Sana, joka taipuu yksikössä kuten autio. # subrule yksikkö_autio ($tietue, $lisä, $osannot): if ($tietue.luokka = nimisana) then return yksikkö8 ($lisä, $lisä, $lisä, $lisä, $osannot, sisätulento_Vn, $lisä, $lisä) + [johdin_tOn: $lisä, johdin_mAinen: $lisä, johdin_inen: $lisä]; else define $johdin := johdin_UUs; if (last($tietue.alku) matches @ääntiö) then $johdin := johdin_Us; end; return yksikkö8 ($lisä, $lisä, $lisä, $lisä, $osannot, sisätulento_Vn, $lisä, $lisä) + [johdin_tOn: $lisä, johdin_lAinen: $lisä, johdin_inen: $lisä, $johdin: ""]; end; end; # Sana, joka taipuu yksikössä kuten tuohi. # subrule yksikkö_tuohi ($lisä1, $lisä2): return yksikkö8 ($lisä1, $lisä2, $lisä1, $lisä1, [osanto_tA: ""], sisätulento_Vn, $lisä1, $lisä2) + [johdin_tOn: $lisä1, johdin_lAinen: $lisä1, johdin_mAinen: $lisä2, johdin_inen: ""]; end; subrule yksikkö_meri ($e, $i): return [tavuviiva: $i, omistusliite: $e, nimentö: $i, omanto_n: $e, olento_nA: $e, # Mere+nä. tulento_ksi: $e, sisäolento_ssA: $e, sisätulento_Vn: $e, ulkopaikallissija_llA: $e, vajanto_ttA: $e, kerronto_sti: $e, voittoaste: $e, johdin_tOn: $e, johdin_inen: ""] + yhdyssana ($i); end; subrule yksikkö_valo ($vahva_aste, $heikko_aste): return [tavuviiva: $vahva_aste, omistusliite: $vahva_aste, nimentö: $vahva_aste, omanto_n: $heikko_aste, osanto_A: $vahva_aste, olento_nA: $vahva_aste, tulento_ksi: $heikko_aste, sisäolento_ssA: $heikko_aste, sisätulento_Vn: $vahva_aste, ulkopaikallissija_llA: $heikko_aste, vajanto_ttA: $heikko_aste, kerronto_sti: $heikko_aste, voittoaste: $heikko_aste, johdin_tOn: $heikko_aste, johdin_Us: $vahva_aste, johdin_lAinen: $vahva_aste, johdin_mAinen: $vahva_aste, johdin_inen: $vahva_aste] + yhdyssana ($vahva_aste); end; # Yksikön taivutus. # osanto sisätulento # A Vn # A tA Vn # tA Vn # ttA Vn # # tA hVn # # tA seen # ttA seen subrule yksikkö8 ($omistusliite, $nimentö, $vahva_aste, $heikko_aste, $osanto, $sisätulento, $voittoaste, $yhdyssana): define $st := <>; if (value_type($sisätulento) = record) then $st := $sisätulento; else $st := [$sisätulento: $vahva_aste]; end; return [tavuviiva: $nimentö, omistusliite: $omistusliite, nimentö: $nimentö, omanto_n: $heikko_aste] + $osanto + [olento_nA: $vahva_aste, tulento_ksi: $heikko_aste, sisäolento_ssA: $heikko_aste] + $st + [ulkopaikallissija_llA: $heikko_aste, vajanto_ttA: $heikko_aste, kerronto_sti: $heikko_aste, voittoaste: $voittoaste] + yhdyssana ($yhdyssana); end; subrule yksikkö8b ($omistusliite, $nimentö, $vahva_aste, $heikko_aste, $osanto, $sisätulento, $yhdyssana): define $st := <>; if (value_type($sisätulento) = record) then $st := $sisätulento; else $st := [$sisätulento: $vahva_aste]; end; return [tavuviiva: $nimentö, omistusliite: $omistusliite, nimentö: $nimentö, omanto_n: $heikko_aste] + $osanto + [olento_nA: $vahva_aste, tulento_ksi: $heikko_aste, sisäolento_ssA: $heikko_aste] + $st + [ulkopaikallissija_llA: $heikko_aste, vajanto_ttA: $heikko_aste, kerronto_sti: $heikko_aste] + yhdyssana ($yhdyssana); end; subrule yksikkö9 ($tietue, $omistusliite, $nimentö, $vahva_aste, $heikko_aste, $osanto, $sisätulento, $voittoaste, $yhdyssana): if ($tietue.luokka in ) then return yksikkö8 ($omistusliite, $nimentö, $vahva_aste, $heikko_aste, $osanto, $sisätulento, $voittoaste, $yhdyssana); else return yksikkö8b ($omistusliite, $nimentö, $vahva_aste, $heikko_aste, $osanto, $sisätulento, $yhdyssana); end; end; subrule monikko6 ($vahva_aste, $heikko_aste, $omanto, $osanto, $sisätulento, $yliaste): return $omanto + $osanto + [olento_inA: $vahva_aste, sija_monikko_1: $heikko_aste] + $sisätulento + [ulkopaikallissija_illA: $heikko_aste, vajanto_ittA: $heikko_aste, seuranto_ine: $vahva_aste, yliaste: $yliaste, johdin_ittAin: $heikko_aste]; end; subrule monikko7 ($nimentö_t, $vahva_aste, $heikko_aste, $omanto, $osanto, $sisätulento, $yliaste): define $monikon_nimentö := [nimentö_t: $nimentö_t]; if (value_type($nimentö_t) = record) then $monikon_nimentö := $nimentö_t; end; return $monikon_nimentö + monikko6 ($vahva_aste, $heikko_aste, $omanto, $osanto, $sisätulento, $yliaste); end; subrule tositapa_4_d ($lisä): return [tositavan_kestämä_dAAn: $lisä, tositavan_kertoma_tiin: $lisä]; end; subrule tositapa_4_l ($lisä): return [tositavan_kestämä_lAAn: $lisä, tositavan_kertoma_tiin: $lisä]; end; subrule tositapa_4_n ($lisä): return [tositavan_kestämä_nAAn: $lisä, tositavan_kertoma_tiin: $lisä]; end; subrule tositapa_4_r ($lisä): return [tositavan_kestämä_rAAn: $lisä, tositavan_kertoma_tiin: $lisä]; end; subrule tositapa_4_t ($lisä): return [tositavan_kestämä_tAAn: $lisä, tositavan_kertoma_tiin: $lisä]; end; subrule tositapa_4_tt ($lisä): return [tositavan_kestämä_tAAn: $lisä, tositavan_kertoma_ttiin: $lisä]; end; # Etsi merkkijono $u merkkijonosta $s. # Palauta $u:n indeksi tai -1 jos ei löydy. # #subrule indeksi ($s, $u): # if (length($s) greater_equal length($u)) then # foreach $i in length($s) - length($u) + 1: # if (substring ($s, $i, $i + length($u) - 1) = $u) then # return $i; # end; # end; # end; # return -1; #end; subrule juonto ($tietue): $tietue :=+ johdoksen_lähtötiedot($tietue); $tietue.luokka := nimisana; $tietue.äs := ääntiösointu ($tietue); $tietue.perusmuoto := $tietue.alku + tO($tietue); return valo ($tietue, tO($tietue), nO($tietue)); end; subrule pyörtö ($tietue): $tietue :=+ johdoksen_lähtötiedot($tietue); $tietue.luokka := nimisana; $tietue.äs := ääntiösointu ($tietue); $tietue.perusmuoto := $tietue.alku + tO($tietue); return valo ($tietue, tO($tietue), rO($tietue)); end; subrule kiiski ($tietue): return risti ($tietue, "", "") + taivutuskaava ($tietue, [omistusliite: "e", omanto_n: "e", osanto_A: "e", olento_nA: "e", tulento_ksi: "e", sisäolento_ssA: "e", sisätulento_Vn: "e", ulkopaikallissija_llA: "e", vajanto_ttA: "e", nimentö_t: "e", omanto_ien: "", osanto_ia: "", olento_inA: "", sija_monikko_1: "", sisätulento_iin: "", ulkopaikallissija_illA: "", vajanto_ittA: "", seuranto_ine: "", johdin_tOn: "e", johdin_ittain: ""]); end; subrule muisto ($tietue): $tietue :=+ johdoksen_lähtötiedot($tietue); $tietue.luokka := nimisana; define $loppu := "o"; if ($tietue.alku matches ".*" + @yäö + ".*") then $loppu := "ö"; end; $tietue.alku :=+ $loppu; $tietue.perusmuoto := $tietue.alku; $tietue.äs := ääntiösointu ($tietue); return valo ($tietue, "", ""); end; subrule hohto ($tietue): $tietue :=+ johdoksen_lähtötiedot($tietue); $tietue.luokka := nimisana; $tietue.äs := ääntiösointu ($tietue); $tietue.perusmuoto := $tietue.alku + tO($tietue); return valo ($tietue, tO($tietue), dO($tietue)); end; subrule hohdattaa ($tietue, $vahva_aste, $heikko_aste): $tietue :=+ johdoksen_lähtötiedot($tietue); $tietue.alku :=+ $heikko_aste + A($tietue) + "t"; $tietue.luokka := teonsana; $tietue.äs := ääntiösointu ($tietue); $tietue.perusmuoto := $tietue.alku + tAA($tietue); #define $a := transmit ($tietue); return muistaa_muistella ($tietue, tA($tietue), A($tietue), "t", "") + taivutuskaava ($tietue, [johdin_Us_ksen: ""]); end; subrule heitto ($tietue): $tietue :=+ johdoksen_lähtötiedot($tietue); $tietue.luokka := nimisana; $tietue.äs := ääntiösointu ($tietue); $tietue.perusmuoto := $tietue.alku + tO($tietue); return valo ($tietue, tO($tietue), O($tietue)); end; subrule haravoitua ($tietue): $tietue :=+ johdoksen_lähtötiedot($tietue); $tietue.luokka := teonsana; $tietue.äs := ääntiösointu ($tietue); $tietue.alku :=+ "i"; $tietue.perusmuoto := $tietue.alku + "t" + UA($tietue); return punoa ($tietue, tU($tietue), dU($tietue)); end; subrule merkkejä_ennen_loppuosaa($tietue): if ($tietue.rakenne = nil) then return 0; end; define $merkkejä := 0; define $ennen_loppuosaa := 0; foreach $i in length($tietue.rakenne): if substring($tietue.rakenne, $i) = "=" then $ennen_loppuosaa := $merkkejä; elseif substring($tietue.rakenne, $i) = "-" then $merkkejä :=+ 1; $ennen_loppuosaa := $merkkejä; else $merkkejä :=+ 1; end; end; return $ennen_loppuosaa; end; subrule ääntiösointu ($tietue): define $l := length($tietue.alku); define $ennen_loppuosaa := merkkejä_ennen_loppuosaa($tietue); foreach $i in -($l - $ennen_loppuosaa): if substring($tietue.alku, $l + $i + 1) matches @yäö then return ä; elseif substring($tietue.alku, $l + $i + 1) matches @uao then return a; end; end; return a; end; subrule ääntiösointu_kihistä ($tietue): define $l := length($tietue.alku); define $neutraali := a; foreach $i in -$l: if substring($tietue.alku, $l + $i + 1) matches @yäö then return ä; elseif substring($tietue.alku, $l + $i + 1) matches @uao then return a; elseif substring($tietue.alku, $l + $i + 1) = "e" then $neutraali := ä; end; end; return $neutraali; end; subrule salailla ($tietue, $vahva_aste): $tietue :=+ johdoksen_lähtötiedot($tietue); $tietue.luokka := teonsana; $tietue.alku :=+ $vahva_aste + "il"; $tietue.perusmuoto := $tietue.alku + lA($tietue); return arvailla ($tietue); end; subrule huiskaista ($tietue, $ääntiö): $tietue :=+ johdoksen_lähtötiedot($tietue); $tietue.luokka := teonsana; $tietue.alku :=+ $ääntiö; $tietue.perusmuoto := $tietue.alku + "ist" + $ääntiö; return nuolaista2 ($tietue); end; subrule punottaa ($tietue, $heikko_aste): $tietue :=+ johdoksen_lähtötiedot($tietue); $tietue.luokka := teonsana; $tietue.alku :=+ $heikko_aste + "t"; $tietue.perusmuoto := $tietue.alku + "t" + AA($tietue); return muistaa_muistella ($tietue, tA($tietue), A($tietue), "t", "") + taivutuskaava ($tietue, [johdin_Us_ksen: ""]); end; subrule pahentua ($tietue): $tietue :=+ johdoksen_lähtötiedot($tietue); $tietue.luokka := teonsana; $tietue.perusmuoto := $tietue.alku + "t" + UA($tietue); return punoa ($tietue, tU($tietue), nU($tietue)); end; subrule yhdyssanan_taivutuskaava ($tietue, $yhdyssana): return taivutuskaava ($tietue, yhdyssana ($yhdyssana)); end; subrule yhdyssana ($yhdyssana): return [nimisana: $yhdyssana, tavuviiva: $yhdyssana]; end; subrule murto ($tietue): $tietue :=+ johdoksen_lähtötiedot($tietue); $tietue.luokka := nimisana; $tietue.äs := a; $tietue.perusmuoto := $tietue.alku + tO($tietue); return valo ($tietue, tO($tietue), rO($tietue)); end; subrule sivumpana ($tietue, $vahva_aste, $heikko_aste): return taivutuskaava ($tietue, [osanto_A: $vahva_aste, olento_nA: $vahva_aste, tulento_ksi: $heikko_aste, sisäolento_ssA: $heikko_aste, sisätulento_Vn: $vahva_aste, ulkopaikallissija_llA: $heikko_aste, tulento_s: $heikko_aste]); end; subrule keväämmällä ($tietue, $vahva_aste, $heikko_aste): return taivutuskaava ($tietue, [olento_nA: $vahva_aste, tulento_ksi: $heikko_aste, ulkopaikallissija_llA: $heikko_aste]); end; subrule voikko_lista_vain_lipulla($lippu, $lista): if (switch ($lippu) = no) then return <>; else return $lista; end; end; # Rakentaa listasta sanatietueita tietueen, jonka attribuutteina # on luokkasymboleita ja arvoina listoja, jotka sisältävät kyseistä # luokkaa vastaavat sanatietueet alkuperäisestä listasta. subrule map_by_class($list): define $map := []; foreach $l in $list: if not $l.luokka in $map then $map :=+ [$l.luokka: <>]; end; $map.($l.luokka) :=+ <$l>; end; return $map; end; # Yhdistää tietueet, jotka poikkeavat toisistaan vain äs-kentän osalta. subrule yhdistä_sama_äs($lista): if length($lista) = 2 and $lista.1 - äs = $lista.2 - äs then return <$lista.1 + [äs: aä]>; end; return $lista; end; # Yhdistää tietueet, jotka poikkeavat toisistaan vain lähtöluokka-kentän osalta. subrule yhdistä_johdokset($lista): if length($lista) = 2 and $lista.1 - lähtöluokka = $lista.2 - lähtöluokka then if $lista.<1,lähtöluokka> = nil then return <$lista.2>; elseif $lista.<2,lähtöluokka> = nil then return <$lista.1>; end; end; return $lista; end; # Yhdistää tietueet, jotka poikkeavat toisistaan vain jatko-kentän osalta. subrule yhdistä_sama_jatko($lista): if length($lista) = 1 then # Optimoidaan yleisin tapaus return $lista; end; define $combined := <>; define $newCombined := <>; define $didCombine := no; foreach $current in $lista: $newCombined := <>; $didCombine := no; foreach $previous in $combined: if $previous - jatko = $current - jatko then $newCombined :=+ <$previous + [jatko: $previous.jatko + $current.jatko]>; $didCombine := yes; else $newCombined :=+ <$previous>; end; end; if not $didCombine then $newCombined :=+ <$current>; end; $combined := $newCombined; end; return $combined; end; output_filter output($lista_orig): # Tuotantoversiossa ei tarvita kaikkia kenttiä define $lista := $lista_orig; if (not @voikko_debug) then $lista := <>; foreach $l in $lista_orig: $lista :=+ <$l - perusmuoto - aikamuoto>; end; end; foreach $i in length($lista): # Kaikkia lippuja ei tarvita if ($lista.$i.tiedot /= nil) then $lista.$i.tiedot :=- ; if (not johdin_inen in $lista.$i.jatko) then $lista.$i.tiedot :=- ; end; if (length($lista.$i.tiedot) = 0) then $lista.$i :=- tiedot; end; end; # Ylimääräiset merkit pois rakenne-kentästä if $lista.$i.rakenne /= nil then repeat while last($lista.$i.rakenne) = "p"; $lista.$i.rakenne := substring($lista.$i.rakenne, 1L, 2R); end; if substring($lista.$i.rakenne, 1L) = "=" then $lista.$i.rakenne := substring($lista.$i.rakenne, 2L, 1R); end; end; # Nimentöä tarvitaan aikaisemmin prosessissa merkkinä siitä, että sanan voi lopettaa ko. kohdassa. # Tässä vaiheessa sen voi poistaa. if ($lista.$i.luokka in @nimisana + ) then $lista.$i.jatko :=- ; end; end; # Poistetaan täydelliset kaksoiskappaleet $lista := set($lista); # Luodaan pintamuotoa vastaavat lopulliset tietueet luokittain define $lista_luokittain := map_by_class($lista); foreach $luokka in $lista_luokittain: define $osalista := $lista_luokittain.($luokka); $osalista := yhdistä_sama_äs($osalista); $osalista := yhdistä_sama_jatko($osalista); $osalista := yhdistä_johdokset($osalista); foreach $l in $osalista: result $l + [jatko: set($l.jatko)]; end; end; end;