1
0
forked from GitHub/gf-core

close to complete BasicFin

This commit is contained in:
aarne
2005-06-28 11:41:24 +00:00
parent 525beb8d98
commit 86b6394167
3 changed files with 259 additions and 235 deletions

View File

@@ -11,109 +11,109 @@ lin
airplane_N = regN "lentokone" ;
---- answer_V2S = mkV2S (regV "answer") "to" ;
apartment_N = reg3N "asunto" "asunnon" "asuntoja" ;
apple_N = reg3N "omena" "omenan" "omenoita" ;
art_N = reg3N "taide" "taiteen" "taiteita" ;
apartment_N = regN "asunto" ;
apple_N = regN "omena" ; --- omenia, not omenoita
art_N = regN "taide" ;
---- ask_V2Q = mkV2Q (regV "ask") [] ;
baby_N = regN "vauva" ;
bad_ADeg = mkADeg (regN "paha") "pahempi" "pahin" ;
bank_N = reg3N "pankki" "pankin" "pankkeja" ;
bank_N = regN "pankki" ;
beautiful_ADeg = mkADeg (regN "kaunis") "kauniimpi" "kaunein" ;
---- become_VA = mkVA (irregV "become" "became" "become") ;
beer_N = reg3N "olut" "oluen" "oluita" ;
beer_N = regN "olut" ;
---- beg_V2V = mkV2V (regDuplV "beg") [] "to" ;
big_ADeg = mkADeg (reg3N "suuri" "suuren" "suuria") "suurempi" "suurin" ;
big_ADeg = mkADeg (reg2N "suuri" "suuria") "suurempi" "suurin" ;
bike_N = nLukko "polkupyörä" ; --- for correct vowel harmony
bird_N = reg3N "lintu" "linnun" "lintuja" ;
black_ADeg = mkADeg (reg3N "musta" "mustan" "mustia") "mustempi" "mustin" ;
bird_N = regN "lintu" ;
black_ADeg = mkADeg (regN "musta") "mustempi" "mustin" ;
blue_ADeg = mkADeg (regN "sininen") "sinisempi" "sinisin" ;
boat_N = regN "vene" ;
book_N = regN "kirja" ;
boot_N = reg3N "saapas" "saappaan" "saappaita" ;
boot_N = regN "saapas" ;
boss_N = regN "pomo" ;
boy_N = reg3N "poika" "pojan" "poikia" ;
bread_N = reg3N "leipä" "leivän" "leipiä" ;
break_V2 = dirV2 (reg3V "rikkoa" "rikon" "rikoin") ;
bread_N = regN "leipä" ;
break_V2 = dirV2 (regV "rikkoa") ;
broad_ADeg = mkADeg (regN "leveä") "leveämpi" "levein" ;
---- brother_N2 = regN2 "brother" ;
brown_ADeg = mkADeg (regN "ruskea") "ruskeampi" "ruskein" ;
butter_N = reg3N "voi" "voin" "voita" ;
--3 butter_N = reg3N "voi" "voin" "voita" ;
buy_V2 = dirV2 (regV "ostaa") ;
camera_N = regN "kamera" ;
cap_N = reg3N "lakki" "lakin" "lakkeja" ;
car_N = regN "auto" ;
carpet_N = reg3N "matto" "maton" "mattoja" ;
cap_N = regN "lakki" ;
car_N = reg3N "auto" "auton" "autoja" ; -- regN: audon
carpet_N = regN "matto" ;
cat_N = regN "kissa" ;
ceiling_N = reg3N "katto" "katon" "kattoja" ;
ceiling_N = regN "katto" ;
chair_N = regN "tuoli" ;
cheese_N = regN "juusto" ;
child_N = mkN "lapsi" "lapsen" "lapsena" "lasta" "lapseen"
"lapsina" "lapsissa" "lasten" "lapsia" "lapsiin" human ;
church_N = reg3N "kirkko" "kirkon" "kirkkoja" ;
city_N = reg3N "kaupunki" "kaupungin" "kaupunkeja" ;
clean_ADeg = mkADeg (reg3N "puhdas" "puhtaan" "puhtaita") "puhtaampi" "puhtain" ;
clever_ADeg = mkADeg (reg3N "viisas" "viisaan" "viisaita") "viisaampi" "viisain" ;
close_V2 = dirV2 (reg3V "sulkea" "suljen" "sulki") ;
coat_N = reg3N "takki" "takin" "takkeja" ;
church_N = regN "kirkko" ;
city_N = regN "kaupunki" ;
clean_ADeg = regADeg "puhdas" ;
clever_ADeg = regADeg "viisas" ;
close_V2 = dirV2 (regV "sulkea") ;
coat_N = regN "takki" ;
cold_ADeg = mkADeg (regN "kylmä") "kylmempi" "kylmin" ;
come_V = regV "tulla" ;
computer_N = regN "tietokone" ;
country_N = regN "maa" ;
cousin_N = reg3N "serkku" "serkun" "serkkuja" ;
cousin_N = regN "serkku" ;
cow_N = regN "lehmä" ;
die_V = regV "kuolla" ;
dirty_ADeg = mkADeg (regN "likainen") "likaisempi" "likaisin" ;
---- distance_N3 = mkN3 (regN "distance") "from" "to" ;
doctor_N = reg3N "tohtori" "tohtorin" "tohtoreita" ;
dog_N = reg3N "koira" "koiran" "koiria" ;
door_N = reg3N "ovi" "oven" "ovia" ;
--3 doctor_N = reg3N "tohtori" "tohtorin" "tohtoreita" ;
dog_N = reg3N "koira" ;
door_N = reg2N "ovi" "ovia" ;
drink_V2 = dirV2 (regV "juoda") ;
---- easy_A2V = mkA2V (regA "easy") "for" ;
eat_V2 = dirV2 (regV "syödä") ;
empty_ADeg = mkADeg (regN "tyhjä") "tyhjempi" "tyhjin" ;
enemy_N = regN "vihollinen" ;
factory_N = reg3N "tehdas" "tehtaan" "tehtaiden" ;
factory_N = regN "tehdas" ;
---- father_N2 = regN2 "father" ;
---- fear_VS = mkVS (reg3V "pelätä" "pelkään" "pelkäsi") ;
find_V2 = dirV2 (reg3V "löytää" "löydän" "löysin") ;
---- fear_VS = mkVS (reg2V "pelätä" "pelkäsi") ;
find_V2 = dirV2 (reg2V "löytää" "löysi") ;
fish_N = regN "kala" ;
floor_N = reg3N "lattia" "lattian" "lattioita" ;
forget_V2 = dirV2 (reg3V "unohtaa" "unohdan" "unohdin") ;
fridge_N = reg3N "jääkaappi" "jääkaapin" "jääkaappeja" ;
floor_N = reg2N "lattia" "lattioita" ;
forget_V2 = dirV2 (regV "unohtaa") ;
fridge_N = regN "jääkaappi" ;
friend_N = regN "ystävä" ;
fruit_N = regN "hedelmä" ;
---- fun_AV = mkAV (regA "fun") ;
garden_N = regN "puutarha" ;
girl_N = reg3N "tyttö" "tytön" "tyttöjä" ;
glove_N = reg3N "käsine" "käsineen" "käsineitä" ;
gold_N = reg3N "kulta" "kullan" "kultia" ;
girl_N = regN "tyttö" ;
glove_N = regN "käsine" ;
gold_N = regN "kulta" ;
good_ADeg = mkADeg (regN "hyvä") "parempi" "parhain" ; --- paras
go_V = regV "mennä" ;
green_ADeg = mkADeg (regN "vihreä") "vihreämpi" "vihrein" ;
harbour_N = reg3N "satama" "sataman" "satamia" ;
hate_V2 = dirV2 (regV "vihata") ;
hat_N = reg3N "hattu" "hatun" "hattuja" ;
hat_N = regN "hattu" ;
have_V2 = dirV2 (regV "omistaa") ; ---- olla
hear_V2 = dirV2 (regV "kuulla") ;
hill_N = regN "kukkula" ;
---- hope_VS = mkVS (regV "toivoa") ;
horse_N = regN "hevonen" ;
hot_ADeg = mkADeg (reg3N "kuuma" "kuuman" "kuumia") "kuumempi" "kuumin" ;
hot_ADeg = mkADeg (regN "kuuma") "kuumempi" "kuumin" ;
house_N = regN "talo" ;
important_ADeg = mkADeg (regN "tärkeä") "tärkeämpi" "tärkein" ;
industry_N = regN "teollisuus" ;
iron_N = reg3N "rauta" "raudan" "rautoja" ;
king_N = reg3N "kuningas" "kuninkaan" "kuninkaita" ;
know_V2 = dirV2 (reg3V "tietää" "tiedän" "tiesin") ; ---- tuntea
lake_N = reg3N "järvi" "järven" "järviä" ;
lamp_N = reg3N "lamppu" "lampun" "lamppuja" ;
iron_N = regN "rauta" ;
king_N = regN "kuningas" ;
know_V2 = dirV2 (reg3V "tietää" "tiesi") ; --- tuntea; gives tietänyt
lake_N = reg2N "järvi" "järviä" ;
lamp_N = regN "lamppu" ;
learn_V2 =
dirV2 (mkV "oppia" "oppii" "opin" "oppivat" "oppikaa" "opitaan"
"oppi" "opin" "oppisi" "oppinut" "opittu" "opitun") ;
leather_N = reg3N "nahka" "nahan" "nahkoja" ;
leave_V2 = dirV2 (reg3V "jättää" "jätän" "jätin") ;
like_V2 = caseV2 (reg3V "pitää" "pidän" "pidin") elative ;
listen_V2 = caseV2 (reg3V "kuunnella" "kuuntelen" "kuuntelin") partitive ;
leather_N = regN "nahka" ; --- nahan
leave_V2 = dirV2 (regV "jättää") ;
like_V2 = caseV2 (regV "pitää") elative ;
--3 listen_V2 = caseV2 (reg3V "kuunnella" "kuuntelen" "kuuntelin") partitive ;
live_V = regV "elää" ;
long_ADeg = mkADeg (regN "pitkä") "pitempi" "pisin" ;
lose_V2 = dirV2 (regV "hävitä") ; --- hukata
@@ -126,116 +126,112 @@ lin
milk_N = regN "maito" ;
moon_N = regN "kuu" ;
---- mother_N2 = regN2 "äiti" ;
mountain_N = reg3N "vuori" "vuoren" "vuoria" ;
mountain_N = reg2N "vuori" "vuoria" ;
music_N = regN "musiikki" ;
narrow_ADeg = mkADeg (regN "kapea") "kapeampi" "kapein" ;
new_ADeg = mkADeg (reg3N "uusi" "uuden" "uusia") "uudempi" "uusin" ;
newspaper_N = nSylki "sanomalehti" ; --- for correct vowel harmony
{-
oil_N = regN "oil" ;
old_ADeg = regADeg "old" ;
open_V2 = dirV2 (regV "open") ;
paint_V2A = mkV2A (regV "paint") [] ;
paper_N = regN "paper" ;
peace_N = regN "peace" ;
pen_N = regN "pen" ;
planet_N = regN "planet" ;
plastic_N = regN "plastic" ;
play_V2 = dirV2 (regV "play") ;
policeman_N = regN "policeman" ;
priest_N = regN "priest" ;
probable_AS = mkAS (regA "probable") ;
queen_N = regN "queen" ;
radio_N = regN "radio" ;
rain_V0 = mkV0 (regV "rain") ;
read_V2 = dirV2 (irregV "read" "read" "read") ;
red_ADeg = regADeg "red" ;
religion_N = regN "religion" ;
restaurant_N = regN "restaurant" ;
river_N = regN "river" ;
rock_N = regN "rock" ;
roof_N = regN "roof" ;
rubber_N = regN "rubber" ;
run_V = (irregDuplV "run" "ran" "run") ;
say_VS = mkVS (irregV "say" "said" "said") ;
school_N = regN "school" ;
science_N = regN "science" ;
sea_N = regN "sea" ;
seek_V2 = dirV2 (irregV "seek" "sought" "sought") ;
see_V2 = dirV2 (irregV "see" "saw" "seen") ;
sell_V3 = dirV3 (irregV "sell" "sold" "sold") "to" ;
send_V3 = dirV3 (irregV "send" "sent" "sent") "to" ;
sheep_N = mk2N "sheep" "sheep" ;
ship_N = regN "ship" ;
shirt_N = regN "shirt" ;
shoe_N = regN "shoe" ;
shop_N = regN "shop" ;
short_ADeg = regADeg "short" ;
silver_N = regN "silver" ;
-}
oil_N = regN "öljy" ;
old_ADeg = mkADeg (regN "vanha") "vanhempi" "vanhin" ;
open_V2 = dirV2 (regV "avata") ;
---- paint_V2A = mkV2A (regV "maalata") [] ;
--3 paper_N = reg3N "paperi" "paperin" "papereita" ;
peace_N = regN "rauha" ;
pen_N = regN "kynä" ;
planet_N = regN "planeetta" ;
plastic_N = regN "muovi" ;
play_V2 = dirV2 (regV "pelata") ; --- leikkiä, soittaa
policeman_N = regN "poliisi" ;
priest_N = regN "pappi" ;
---- probable_AS = mkAS (mkA (nNainen "todennäköistä")) ; --- for vowel harmony
---- queen_N = regN "kuningatar" ;
--3 radio_N = reg3N "radio" "radion" "radioita" ;
---- rain_V0 = mkV0 (vHuoltaa "sataa" "sadan" "satoi" "sadoin") ;
read_V2 = dirV2 (regV "lukea") ;
red_ADeg = regADeg "punainen" ;
religion_N = regN "uskonto" ;
restaurant_N = regN "ravintola" ;
---- river_N = reg3N "joki" "joen" "jokia" ;
---- rock_N = regN "kallio" ;
roof_N = regN "katto" ;
rubber_N = regN "kumi" ;
run_V = reg2V "juosta" "juoksi" ;
---- say_VS = mkVS (regV "sanoa") ;
school_N = regN "koulu" ;
science_N = regN "tiede" ;
sea_N = reg2N "meri" "meriä" ;
seek_V2 = dirV2 (regV "etsiä") ;
---- see_V2 = dirV2 (irregV "see" "saw" "seen") ;
---- sell_V3 = dirV3 (regV "myydä") allative ;
---- send_V3 = dirV3 (regV "lähettää") allative ;
sheep_N = regN "lammas" ;
ship_N = regN "laiva" ;
shirt_N = regN "paita" ;
shoe_N = regN "kenkä" ;
shop_N = regN "kauppa" ;
short_ADeg = regADeg "lyhyt" ;
silver_N = regN "hopea" ;
sister_N = regN "sisko" ;
sleep_V = regV "uinua" ;
{-
small_ADeg = regADeg "small" ;
snake_N = regN "snake" ;
sock_N = regN "sock" ;
speak_V2 = dirV2 (irregV "speak" "spoke" "spoken") ;
star_N = regN "star" ;
steel_N = regN "steel" ;
stone_N = regN "stone" ;
stove_N = regN "stove" ;
student_N = regN "student" ;
stupid_ADeg = regADeg "stupid" ;
sun_N = regN "sun" ;
switch8off_V2 = dirV2 (partV (regV "switch") "off") ;
switch8on_V2 = dirV2 (partV (regV "switch") "on") ;
table_N = regN "table" ;
talk_V3 = mkV3 (regV "talk") "to" "about" ;
teacher_N = regN "teacher" ;
teach_V2 = dirV2 (irregV "teach" "taught" "taught") ;
television_N = regN "television" ;
thick_ADeg = regADeg "thick" ;
thin_ADeg = regADeg "thin" ;
train_N = regN "train" ;
travel_V = (regDuplV "travel") ;
tree_N = regN "tree" ;
sleep_V = regV "nukkua" ;
---- small_ADeg = regADeg "small" ;
snake_N = regN "käärme" ;
sock_N = regN "sukka" ;
speak_V2 = dirV2 (irregV "puhua") ;
star_N = reg2N "tähti" "tähtiä" ;
---- steel_N = regN "teräs" ;
stone_N = reg2N "kivi" "kiviä" ;
stove_N = reg3N "liesi" "lieden" "liesiä" ;
student_N = reg2N "opiskelija" "opiskelijoita" ;
stupid_ADeg = regADeg "tyhmä" ;
sun_N = regN "aurinko" ;
switch8off_V2 = dirV2 (regV "sammuttaa") ; ---
switch8on_V2 = dirV2 (regV "sytyttää") ; ---
table_N = regN "pöytä" ;
---- talk_V3 = mkV3 (regV "puhua") allative elative ;
teacher_N = regN "opettaja" ;
teach_V2 = dirV2 (irregV "opettaa") ;
--3 television_N = reg2N "televisio" "telievisioita" ;
thick_ADeg = regADeg "paksu" ;
thin_ADeg = regADeg "ohut" ;
train_N = regN "juna" ;
travel_V = regV "matkustaa" ;
tree_N = regN "puu" ;
---- trousers_N = regN "trousers" ;
ugly_ADeg = regADeg "ugly" ;
understand_V2 = dirV2 (irregV "understand" "understood" "understood") ;
university_N = regN "university" ;
village_N = regN "village" ;
wait_V2 = mkV2 (regV "wait") "for" ;
walk_V = (regV "walk") ;
warm_ADeg = regADeg "warm" ;
war_N = regN "war" ;
watch_V2 = dirV2 (regV "watch") ;
water_N = regN "water" ;
white_ADeg = regADeg "white" ;
window_N = regN "window" ;
wine_N = regN "wine" ;
win_V2 = dirV2 (irregV "win" "won" "won") ;
woman_N = mk2N "woman" "women" ;
wonder_VQ = mkVQ (regV "wonder") ;
wood_N = regN "wood" ;
write_V2 = dirV2 (irregV "write" "wrote" "written") ;
yellow_ADeg = regADeg "yellow" ;
young_ADeg = regADeg "young" ;
ugly_ADeg = mkADeg (regN "ruma") "rumempi" "rumin" ;
understand_V2 = dirV2 (reg3V "ymmärtää" "ymmärrän" "ymmärsin") ;
university_N = regN "yliopisto" ;
village_N = regN "kylä" ;
wait_V2 = mkV2 (regV "odottaa") partitive ;
walk_V = (regV "kävellä") ;
---- warm_ADeg = regADeg "warm" ;
war_N = regN "sota" ;
watch_V2 = dirV2 (regV "katsella") ;
water_N = reg3N "vesi" "veden" "vesiä" ;
white_ADeg = regADeg "valkoinen" ;
window_N = reg2N "ikkuna" "ikkunoita" ;
wine_N = regN "viini" ;
win_V2 = dirV2 (irregV "voittaa") ;
woman_N = regN "nainen" ;
--3 wonder_VQ = mkVQ (regV "ihmetellä") ;
wood_N = regN "puu" ;
write_V2 = dirV2 (irregV "kirjoittaa") ;
yellow_ADeg = regADeg "keltainen" ;
young_ADeg = mkADeg (reg2N "nuori" "nuoria") "nuorempi" "nuorin" ;
do_V2 = dirV2 (mkV "do" "does" "did" "done" "doing") ;
now_Adv = mkAdv "now" ;
already_Adv = mkAdv "already" ;
song_N = regN "song" ;
add_V3 = dirV3 (regV "add") "to" ;
number_N = regN "number" ;
put_V2 = mkV2 (irregDuplV "put" "put" "put") [] ;
stop_V = regDuplV "stop" ;
jump_V = regV "jump" ;
here_Adv = mkAdv "here" ;
here7to_Adv = mkAdv "here" ;
here7from_Adv = mkAdv ["from here"] ;
there_Adv = mkAdv "there" ;
there7to_Adv = mkAdv "there" ;
there7from_Adv = mkAdv ["from there"] ;
-}
---- do_V2 = dirV2 (mkV "do" "does" "did" "done" "doing") ;
now_Adv = mkAdv "nyt" ;
already_Adv = mkAdv "jo" ;
song_N = regN "laulu" ;
---- add_V3 = dirV3 (regV "lisätä") illative ;
---- number_N = regN "numero" ; ---
put_V2 = dirV2 (regV "panna") ;
stop_V = regDuplV "pysähtyä" ;
jump_V = regV "hypätä" ;
here_Adv = mkAdv "täällä" ;
here7to_Adv = mkAdv "tänne" ;
here7from_Adv = mkAdv "täältä" ;
there_Adv = mkAdv "siellä" ; --- tuolla
there7to_Adv = mkAdv "sinne" ;
there7from_Adv = mkAdv "sieltä" ;
} ;

View File

@@ -49,8 +49,8 @@ oper
NCase Pl Allat => vesii + "lle" ;
NCase Pl Abess => vesii + ("tt" + a) ;
NComit => Predef.tk 2 vesia + "ine" ;
NInstruct => Predef.tk 2 vesia + "in" ;
NComit => vetii + "ne" ;
NInstruct => vesii + "n" ;
NPossNom => vete ;
NPossGenPl => Predef.tk 1 vesien ;
@@ -105,7 +105,7 @@ oper
lukk = init lukko ;
a = getHarmony o ;
lukkoja = case o of {
"a" => lukk + "oja" ;
"a" => lukk + if_then_Str (pbool2bool (Predef.occurs "ou" lukk)) "ia" "oja" ;
"ä" => lukk + "iä" ;
_ => lukko + "j" + a
}
@@ -122,7 +122,7 @@ oper
baar = Predef.tk 1 baari ;
a = getHarmony (Predef.dp 1 baaria)
in
sKukko baari (baari + "n") (baar + ("ej" + a)) ;
sKukko baari (weakGrade baari + "n") (baar + ("ej" + a)) ;
sKorpi : (_,_,_ : Str) -> CommonNoun = \korpi,korven,korpena ->
let {
@@ -471,11 +471,11 @@ getHarmony : Str -> Str = \u -> case u of {
"rt" => ku + "rr" ;
"lt" => ku + "ll" ;
"lk" => kul + case o of {
"i" => "j" ;
"i" | "e" => "j" ;
_ => ""
} ;
"rk" => kul + case o of {
"i" => "j" ;
"i" | "e" => "j" ;
_ => ""
} ;
"hk" | "tk" => kukk ; -- *tahko-tahon, *pitkä-pitkän
@@ -497,20 +497,23 @@ getHarmony : Str -> Str = \u -> case u of {
--- This is only used to analyse nouns "rae", "hake", etc.
strongGrade : Str -> Str = \hak ->
strongGrade : Str -> Str = \hake ->
let
hak = init hake ;
ha = init hak ;
k = last hak ;
e = last hake ;
ly = Predef.tk 2 hak ;
hd = Predef.dp 2 hak
in
hd = Predef.dp 2 hak ;
ifE : Str -> Str = \hant -> ifTok Str e "e" hant hak ;
hakk =
case hd of {
"ng" => ha + "nk" ;
"nn" => ha + "nt" ;
"mm" => ha + "mp" ;
"rr" => ha + "rt" ;
"ll" => ha + "lt" ;
"lj" => ha + "lk" ;
"ng" => ha + "k" ;
"nn" => ha + "t" ;
"mm" => ha + "p" ;
"rr" => ha + "t" ;
"ll" => ha + "t" ;
"lj" => ifE (ha + "k") ; -- paljas-paljaan
"hk" | "sk" | "sp" | "st" => hak ;
_ => -- vihje/pohje: impossible to infer
case k of {
@@ -518,11 +521,12 @@ getHarmony : Str -> Str = \u -> case u of {
"p" => hak + "p" ;
"t" => hak + "t" ;
"d" => ha + "t" ;
"v" => ha + "p" ;
"v" => ha + "p" ; -- rove/hyve impossible
"a" | "ä" => hak + "k" ;
_ => hak
}
} ;
}
in hakk + e ;
--3 Proper names
@@ -833,7 +837,17 @@ caseTable : Number -> CommonNoun -> Case => Str = \n,cn ->
let {
a = Predef.dp 1 hukkua ;
hukku = Predef.tk 1 hukkua ;
u = Predef.dp 1 huku
u = Predef.dp 1 huku ;
i = case u of {
"e" | "i" => [] ;
_ => u
} ;
y = case a of {
"a" => "u" ;
_ => "y"
} ;
hukkui = init hukku + i + "i" ;
hukui = init huku + i + "i" ;
} in
mkVerb
hukkua
@@ -842,12 +856,12 @@ caseTable : Number -> CommonNoun -> Case => Str = \n,cn ->
(hukku + "v" + a + "t")
(hukku + (("k" + a) + a))
(huku + ((("t" + a) + a) + "n"))
(hukku + "i")
(huku + "in")
(hukku + "isi")
(hukku + "n" + u + "t")
(huku + "tt" + u)
(huku + "t" + u + "t") ;
(hukkui)
(hukui + "n")
(hukkui + "si")
(hukku + "n" + y + "t")
(huku + "tt" + y)
(huku + "t" + y + "t") ;
-- For cases with or without alternation: "sanoa", "valua", "kysyä".
@@ -891,27 +905,33 @@ caseTable : Number -> CommonNoun -> Case => Str = \n,cn ->
vOttaa poistaa ((Predef.tk 1 poistaa + "n")) ;
-- For "osata", "lisätä"
-- For "osata", "lisätä"; grade alternation is unpredictable, as seen
-- from "pelätä-pelkäsi" vs. "palata-palasi"
vOsata : Str -> Verb = \osata ->
vPalkata osata (Predef.tk 2 osata + "si") ;
vPalkata : Str -> Str -> Verb = \palkata,palkkasi ->
let
a = Predef.dp 1 osata ;
osa = Predef.tk 2 osata ;
a = Predef.dp 1 palkata ;
palka = Predef.tk 2 palkata ;
palkka = Predef.tk 2 palkkasi ;
u = case a of {"a" => "u" ; _ => "y"}
in
mkVerb
osata
(osa + a)
(osa + (a + "n"))
(osa + (((a + "v") + a) + "t"))
(osa + ((("t" + "k") + a) + a))
(osata + (a + "n"))
(osa + "si")
(osa + "sin")
(osa + "isi")
(osa + "nn" + u + "t")
(osa + "tt" + u)
(osa + "t" + u + "n") ;
palkata
(palkka + a)
(palkka + (a + "n"))
(palkka + (((a + "v") + a) + "t"))
(palka + ((("t" + "k") + a) + a))
(palkata + (a + "n"))
(palkka + "si")
(palkka + "sin")
(palkka + "isi")
(palka + "nn" + u + "t")
(palka + "tt" + u)
(palka + "t" + u + "n") ;
----- tulla,tulee,tulen,tulevat,tulkaa,tullaan,tuli,tulin,tulisi,tullut,tultu,tullun

View File

@@ -296,64 +296,52 @@ regN = \vesi ->
(ves + "isiin") ;
"is" => sNauris (vesi + ("t" + a)) ;
"ut" | "yt" => sRae vesi (ves + ("en" + a)) ;
"as" | "äs" => sRae vesi (strongGrade ves + (a + "n" + a)) ;
"ar" | "är" => sRae vesi (strongGrade ves + ("ren" + a)) ;
"uus" | "yys" => sRakkaus vesi ;
"us" | "ys" => sTilaus vesi (ves + ("ksen" + a)) ;
_ => case i of {
"i" => sBaari (vesi + a) ;
"e" => sRae vesi (ves + ("een" + a)) ;
---- "e" => sRae vesi (strongGrade ves + ("een" + a)) ;
"e" => sRae vesi (strongGrade (ves + "e") + "en" + a) ;
"a" | "o" | "u" | "y" | "ä" | "ö" => sLukko vesi ;
_ => sLinux (vesi + "i" + a)
}
}
} ** {g = NonHuman ; lock_N = <>} ;
reg2N : (savi,savia : Str) -> N = \savi,savia ->
let
savit = regN savi ;
ia = Predef.dp 2 savia ;
i = init ia ;
a = last ia
in
case ia of {
"ia" => sArpi savi ;
"iä" => sSylki savi ;
"ta" | "tä" => sPeruna savi ;
_ => savit
} ** {g = NonHuman ; lock_N = <>} ;
reg3N = \vesi,veden,vesiä ->
let
esi = Predef.dp 3 vesi ; -- analysis: suffixes
si = Predef.dp 2 esi ;
i = last si ;
s = init si ;
den = Predef.dp 3 veden ;
d = Predef.tk 2 den ;
esiä = Predef.dp 4 vesiä ;
a = last vesiä ;
ves = init vesi ; -- synthesis: prefixes
ve = init ves ;
ved = Predef.tk 2 veden ;
sRae_vesi = sRae vesi (veden + a) ;
vesit = reg2N vesi vesiä ;
si = Predef.dp 2 vesi ;
i = last si ;
a = last vesiä ;
s = last (Predef.tk 2 vesiä)
in
case si of {
"aa" | "ee" | "ii" | "oo" | "uu" | "yy" | "ää" | "öö" => sPuu vesi ;
"ie" | "uo" | "yö" => sSuo vesi ;
"is" => sNauris (vesi + ("t" + a)) ;
"ut" | "yt" | "as" | "äs" => sRae_vesi ; ---- (ves + ("en" + a)) ;
"us" | "ys" =>
ifTok CommonNoun d "s"
(sTilaus vesi (veden + a))
(sRakkaus vesi) ;
_ => case esi of {
"nen" => sNainen (Predef.tk 3 vesi + ("st" + a)) ;
_ => case esiä of {
"oita" | "öitä" => sPeruna vesi ;
_ => case den of {
"een" => sRae_vesi ;
_ => case i of {
"a" | "ä" => sKukko vesi veden vesiä ;
"i" => case (last (init vesiä)) of {
"i" => case s of {
"s" => sSusi vesi veden (ve + ("ten" + a)) ;
_ => sKorpi vesi veden (veden + a)
} ;
_ => sBaari (vesi + a)
} ;
"o" | "u" | "y" | "ö" => sKukko vesi veden vesiä ;
_ => sLinux (vesi + "i" + a)
}
}
}
}
} ** {g = NonHuman ; lock_N = <>} ;
case si of {
"us" | "ys" =>
ifTok CommonNoun (Predef.dp 3 veden) "den"
(sRakkaus vesi)
(sTilaus vesi (veden + a)) ;
"si" => sSusi vesi veden (Predef.tk 2 vesi + ("ten" + a)) ;
_ => case i of {
"a" | "o" | "u" | "y" | "ä" | "ö" => sKukko vesi veden vesiä ;
_ => vesit
}
} ** {g = NonHuman ; lock_N = <>} ;
nKukko = \a,b,c -> sKukko a b c ** {g = nonhuman ; lock_N = <>} ;
@@ -422,6 +410,24 @@ regV soutaa =
_ => vHukkua soutaa souda
}} ** {lock_V = <>} ;
reg2V : (soutaa,souti : Str) -> V = \soutaa,souti ->
let
soudat = regV soutaa ;
soudan = weakGrade (init soutaa) + "n" ;
soudin = weakGrade souti + "n" ;
souden = init souti + "en" ;
juo = Predef.tk 2 soutaa ;
o = Predef.dp 1 juo ;
u = ifTok Str (last soutaa) "a" "u" "y" ;
taa = Predef.dp 3 soutaa
in
case taa of {
"taa" | "tää" => vHuoltaa soutaa soudan souti soudin ;
"ata" | "ätä" => vPalkata soutaa souti ;
"sta" | "stä" => vJuosta soutaa souden (juo + o+u+"t") (juo + "t"+u) ;
_ => soudat
} ** {lock_V = <>} ;
reg3V soutaa soudan soudin =
let
taa = Predef.dp 3 soutaa ;
@@ -434,7 +440,7 @@ reg3V soutaa soudan soudin =
u = ifTok Str a "a" "u" "y" ;
joi = init soudin
in case ta of {
"ta" | "tä" => vOttaa soutaa soudan ;
"ta" | "tä" => vHuoltaa soutaa soudan (init soudin) soudin ;
"st" => vJuosta soutaa soudan (juo + "s"+u+"t") (juo + "t"+u) ;
"nn" | "rr" | "ll" => vJuosta soutaa soudan (juo + o+u+"t") (juo + "t"+u) ;
_ => case aa of {
@@ -451,6 +457,8 @@ reg3V soutaa soudan soudin =
vOlla = verbOlla ** {lock_V = <>} ;
vEi = verbEi ** {lock_V = <>} ;
vHuoltaa : (_,_,_,_ : Str) -> Verb = \ottaa,otan,otti,otin ->
SyntaxFin.vHuoltaa ottaa otan otti otin ** {lock_V = <>} ;
mkV2 = \v,c,p,o -> v ** {s3 = p ; s4 = o ; c = CCase c ; lock_V2 = <>} ;
caseV2 = \v,c -> mkV2 v c [] [] ;
dirV2 v = mkTransVerbDir v ** {lock_V2 = <>} ;