forked from GitHub/gf-core
new Finnish paradigms integrated
This commit is contained in:
@@ -71,4 +71,9 @@ concrete ExtraFin of ExtraFinAbs = CatFin **
|
|||||||
|
|
||||||
vai_Conj = {s = "vai" ; n = Sg} ;
|
vai_Conj = {s = "vai" ; n = Sg} ;
|
||||||
|
|
||||||
|
|
||||||
|
CompPartAP ap = {
|
||||||
|
s = \\agr => ap.s ! False ! AN (NCase agr.n Part)
|
||||||
|
} ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,5 +15,5 @@ abstract ExtraFinAbs = Extra [
|
|||||||
|
|
||||||
vai_Conj : Conj ; -- minä vai sinä? ("or" in question)
|
vai_Conj : Conj ; -- minä vai sinä? ("or" in question)
|
||||||
|
|
||||||
vai_Conj : Conj ;
|
CompPartAP : AP -> Comp ; -- kahvi on valmista
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,378 +7,377 @@ flags
|
|||||||
|
|
||||||
|
|
||||||
lin
|
lin
|
||||||
airplane_N = regN "lentokone" ;
|
airplane_N = mkN "lentokone" ;
|
||||||
answer_V2S = mkV2S (regV "vastata") (casePrep allative) ;
|
answer_V2S = mkV2 (mkV "vastata") (casePrep allative) ;
|
||||||
apartment_N = regN "asunto" ;
|
apartment_N = mkN "asunto" ;
|
||||||
apple_N = nLukko "omena" ; --- omenia, not omenoita
|
apple_N = mkN "omena" ; --- omenia, not omenoita
|
||||||
art_N = regN "taide" ;
|
art_N = mkN "taide" ;
|
||||||
ask_V2Q = mkV2Q (regV "kysyä") (casePrep ablative) ;
|
ask_V2Q = mkV2 (mkV "kysyä") (casePrep ablative) ;
|
||||||
baby_N = nLukko "vauva" ;
|
baby_N = mkN "vauva" ;
|
||||||
bad_A = mkADeg (nLukko "paha") "pahempi" "pahin" ;
|
bad_A = mkA (mkN "paha") "pahempi" "pahin" ;
|
||||||
bank_N = regN "pankki" ;
|
bank_N = mkN "pankki" ;
|
||||||
beautiful_A = mkADeg (regN "kaunis") "kauniimpi" "kaunein" ;
|
beautiful_A = mkA (mkN "kaunis") "kauniimpi" "kaunein" ;
|
||||||
become_VA = mkVA (regV "tulla") (casePrep translative) ;
|
become_VA = mkVA (mkV "tulla") (casePrep translative) ;
|
||||||
beer_N = regN "olut" ;
|
beer_N = mkN "olut" ;
|
||||||
beg_V2V = mkV2V (reg2V "pyytää" "pyysi") (casePrep partitive) ;
|
beg_V2V = mkV2 (mk2V "pyytää" "pyysi") (casePrep partitive) ;
|
||||||
big_A = mkADeg (sgpartN (nArpi "suuri") "suurta") "suurempi" "suurin" ;
|
big_A = mkA (mkN "suuri" "suuria") "suurempi" "suurin" ;
|
||||||
bike_N = nLukko "polkupyörä" ; --- for correct vowel harmony
|
bike_N = mkN "polkupyörä" ; --- for correct vowel harmony
|
||||||
bird_N = nLukko "lintu" ;
|
bird_N = mkN "lintu" ;
|
||||||
black_A = mkADeg (nLukko "musta") "mustempi" "mustin" ;
|
black_A = mkA (mkN "musta") "mustempi" "mustin" ;
|
||||||
blue_A = mkADeg (regN "sininen") "sinisempi" "sinisin" ;
|
blue_A = mkA (mkN "sininen") "sinisempi" "sinisin" ;
|
||||||
boat_N = regN "vene" ;
|
boat_N = mkN "vene" ;
|
||||||
book_N = nLukko "kirja" ;
|
book_N = mkN "kirja" ;
|
||||||
boot_N = regN "saapas" ;
|
boot_N = mkN "saapas" ;
|
||||||
boss_N = nLukko "pomo" ;
|
boss_N = mkN "pomo" ;
|
||||||
boy_N = nKukko "poika" "pojan" "poikia" ;
|
boy_N = mkN "poika" "pojan" "poikia" ;
|
||||||
bread_N = nLukko "leipä" ;
|
bread_N = mkN "leipä" ;
|
||||||
break_V2 = dirV2 (regV "rikkoa") ;
|
break_V2 = mkV2 (mkV "rikkoa") ;
|
||||||
broad_A = mkADeg (regN "leveä") "leveämpi" "levein" ;
|
broad_A = mkA (mkN "leveä") "leveämpi" "levein" ;
|
||||||
brother_N2 = genN2 (
|
brother_N2 = mkN2 (
|
||||||
mkN "veli" "veljen" "veljenä" "veljeä" "veljeen"
|
mkN "veli" "veljen" "veljenä" "veljeä" "veljeen"
|
||||||
"veljinä" "veljissä" "veljien" "veljiä" "veljiin") ;
|
"veljinä" "veljissä" "veljien" "veljiä" "veljiin") ;
|
||||||
brown_A = mkADeg (regN "ruskea") "ruskeampi" "ruskein" ;
|
brown_A = mkA (mkN "ruskea") "ruskeampi" "ruskein" ;
|
||||||
butter_N = reg3N "voi" "voin" "voita" ; ---- errors in Part
|
butter_N = mk3N "voi" "voin" "voita" ; ---- errors in Part
|
||||||
buy_V2 = dirV2 (regV "ostaa") ;
|
buy_V2 = mkV2 (mkV "ostaa") ;
|
||||||
camera_N = nLukko "kamera" ;
|
camera_N = mkN "kamera" ;
|
||||||
cap_N = regN "lakki" ;
|
cap_N = mkN "lakki" ;
|
||||||
car_N = reg3N "auto" "auton" "autoja" ; -- regN: audon
|
car_N = mk3N "auto" "auton" "autoja" ; -- mkN: audon
|
||||||
carpet_N = nLukko "matto" ;
|
carpet_N = mkN "matto" ;
|
||||||
cat_N = nLukko "kissa" ;
|
cat_N = mkN "kissa" ;
|
||||||
ceiling_N = nLukko "katto" ;
|
ceiling_N = mkN "katto" ;
|
||||||
chair_N = regN "tuoli" ;
|
chair_N = mkN "tuoli" ;
|
||||||
cheese_N = nLukko "juusto" ;
|
cheese_N = mkN "juusto" ;
|
||||||
child_N = mkN "lapsi" "lapsen" "lapsena" "lasta" "lapseen"
|
child_N = mkN "lapsi" "lapsen" "lapsena" "lasta" "lapseen"
|
||||||
"lapsina" "lapsissa" "lasten" "lapsia" "lapsiin" ;
|
"lapsina" "lapsissa" "lasten" "lapsia" "lapsiin" ;
|
||||||
church_N = nLukko "kirkko" ;
|
church_N = mkN "kirkko" ;
|
||||||
city_N = regN "kaupunki" ;
|
city_N = mkN "kaupunki" ;
|
||||||
clean_A = regA "puhdas" ;
|
clean_A = mkA "puhdas" ;
|
||||||
clever_A = regA "viisas" ;
|
clever_A = mkA "viisas" ;
|
||||||
close_V2 = dirV2 (regV "sulkea") ;
|
close_V2 = mkV2 (mkV "sulkea") ;
|
||||||
coat_N = regN "takki" ;
|
coat_N = mkN "takki" ;
|
||||||
cold_A = mkADeg (nLukko "kylmä") "kylmempi" "kylmin" ;
|
cold_A = mkA (mkN "kylmä") "kylmempi" "kylmin" ;
|
||||||
come_V = regV "tulla" ;
|
come_V = mkV "tulla" ;
|
||||||
computer_N = regN "tietokone" ;
|
computer_N = mkN "tietokone" ;
|
||||||
country_N = regN "maa" ;
|
country_N = mkN "maa" ;
|
||||||
cousin_N = nLukko "serkku" ;
|
cousin_N = mkN "serkku" ;
|
||||||
cow_N = nLukko "lehmä" ;
|
cow_N = mkN "lehmä" ;
|
||||||
die_V = regV "kuolla" ;
|
die_V = mkV "kuolla" ;
|
||||||
dirty_A = mkADeg (regN "likainen") "likaisempi" "likaisin" ;
|
dirty_A = mkA (mkN "likainen") "likaisempi" "likaisin" ;
|
||||||
distance_N3 = mkN3 (regN "etäisyys") (casePrep elative) (casePrep illative) ;
|
distance_N3 = mkN3 (mkN "etäisyys") (casePrep elative) (casePrep illative) ;
|
||||||
doctor_N = reg2N "tohtori" "tohtoreita" ;
|
doctor_N = mk2N "tohtori" "tohtoreita" ;
|
||||||
dog_N = nLukko "koira" ;
|
dog_N = mkN "koira" ;
|
||||||
door_N = nArpi "ovi" ;
|
door_N = mkN "ovi" "ovia" ;
|
||||||
drink_V2 = dirV2 (regV "juoda") ;
|
drink_V2 = mkV2 (mkV "juoda") ;
|
||||||
easy_A2V = mkA2V (mkADeg (nLukko "helppo") "helpompi" "helpoin")
|
easy_A2V = mkA2 (mkA (mkN "helppo") "helpompi" "helpoin")
|
||||||
(casePrep allative) ;
|
(casePrep allative) ;
|
||||||
eat_V2 = dirV2 (regV "syödä") ;
|
eat_V2 = mkV2 (mkV "syödä") ;
|
||||||
empty_A = mkADeg (nLukko "tyhjä") "tyhjempi" "tyhjin" ;
|
empty_A = mkA (mkN "tyhjä") "tyhjempi" "tyhjin" ;
|
||||||
enemy_N = regN "vihollinen" ;
|
enemy_N = mkN "vihollinen" ;
|
||||||
factory_N = regN "tehdas" ;
|
factory_N = mkN "tehdas" ;
|
||||||
father_N2 = genN2 (nLukko "isä") ;
|
father_N2 = mkN2 (mkN "isä") ;
|
||||||
fear_VS = mkVS (reg2V "pelätä" "pelkäsi") ;
|
fear_VS = mkVS (mk2V "pelätä" "pelkäsi") ;
|
||||||
find_V2 = dirV2 (reg2V "löytää" "löysi") ;
|
find_V2 = mkV2 (mk2V "löytää" "löysi") ;
|
||||||
fish_N = nLukko "kala" ;
|
fish_N = mkN "kala" ;
|
||||||
floor_N = reg2N "lattia" "lattioita" ;
|
floor_N = mk2N "lattia" "lattioita" ;
|
||||||
forget_V2 = dirV2 (regV "unohtaa") ;
|
forget_V2 = mkV2 (mkV "unohtaa") ;
|
||||||
fridge_N = regN "jääkaappi" ;
|
fridge_N = mkN "jääkaappi" ;
|
||||||
friend_N = nLukko "ystävä" ;
|
friend_N = mkN "ystävä" ;
|
||||||
fruit_N = nLukko "hedelmä" ;
|
fruit_N = mkN "hedelmä" ;
|
||||||
fun_AV = mkAV (mkADeg (nLukko "hauska") "hauskempi" "hauskin") ;
|
fun_AV = mkAV (mkA (mkN "hauska") "hauskempi" "hauskin") ;
|
||||||
garden_N = nKukko "puutarha" "puutarhan" "puutarhoja" ;
|
garden_N = mkN "puutarha" "puutarhan" "puutarhoja" ;
|
||||||
girl_N = nLukko "tyttö" ;
|
girl_N = mkN "tyttö" ;
|
||||||
glove_N = regN "käsine" ;
|
glove_N = mkN "käsine" ;
|
||||||
gold_N = nLukko "kulta" ;
|
gold_N = mkN "kulta" ;
|
||||||
good_A = mkADeg (nLukko "hyvä") "parempi" "parhain" ; --- paras
|
good_A = mkA (mkN "hyvä") "parempi" "parhain" ; --- paras
|
||||||
go_V = regV "mennä" ;
|
go_V = mkV "mennä" ;
|
||||||
green_A = mkADeg (regN "vihreä") "vihreämpi" "vihrein" ;
|
green_A = mkA (mkN "vihreä") "vihreämpi" "vihrein" ;
|
||||||
harbour_N = nKukko "satama" "sataman" "satamia" ;
|
harbour_N = mkN "satama" "sataman" "satamia" ;
|
||||||
hate_V2 = mkV2 (regV "vihata") cpartitive ;
|
hate_V2 = mkV2 (mkV "vihata") cpartitive ;
|
||||||
hat_N = nLukko "hattu" ;
|
hat_N = mkN "hattu" ;
|
||||||
have_V2 = dirV2 (caseV adessive vOlla) ;
|
have_V2 = mkV2 (caseV adessive vOlla) ;
|
||||||
hear_V2 = dirV2 (regV "kuulla") ;
|
hear_V2 = mkV2 (mkV "kuulla") ;
|
||||||
hill_N = nLukko "kukkula" ;
|
hill_N = mkN "kukkula" ;
|
||||||
hope_VS = mkVS (regV "toivoa") ;
|
hope_VS = mkVS (mkV "toivoa") ;
|
||||||
horse_N = regN "hevonen" ;
|
horse_N = mkN "hevonen" ;
|
||||||
hot_A = mkADeg (nLukko "kuuma") "kuumempi" "kuumin" ;
|
hot_A = mkA (mkN "kuuma") "kuumempi" "kuumin" ;
|
||||||
house_N = nLukko "talo" ;
|
house_N = mkN "talo" ;
|
||||||
important_A = mkADeg (regN "tärkeä") "tärkeämpi" "tärkein" ;
|
important_A = mkA (mkN "tärkeä") "tärkeämpi" "tärkein" ;
|
||||||
industry_N = regN "teollisuus" ;
|
industry_N = mkN "teollisuus" ;
|
||||||
iron_N = nLukko "rauta" ;
|
iron_N = mkN "rauta" ;
|
||||||
king_N = regN "kuningas" ;
|
king_N = mkN "kuningas" ;
|
||||||
know_V2 = dirV2 (reg2V "tietää" "tiesi") ; --- tuntea; gives tietänyt
|
know_V2 = mkV2 (mk2V "tietää" "tiesi") ; --- tuntea; gives tietänyt
|
||||||
lake_N = nSylki "järvi" ;
|
lake_N = mkN "järvi" "järviä" ;
|
||||||
lamp_N = nLukko "lamppu" ;
|
lamp_N = mkN "lamppu" ;
|
||||||
learn_V2 =
|
learn_V2 =
|
||||||
dirV2 (mk12V "oppia" "oppii" "opin" "oppivat" "oppikaa" "opitaan"
|
mkV2 (mk12V "oppia" "oppii" "opin" "oppivat" "oppikaa" "opitaan"
|
||||||
"oppi" "opin" "oppisi" "oppinut" "opittu" "opitun") ;
|
"oppi" "opin" "oppisi" "oppinut" "opittu" "opitun") ;
|
||||||
leather_N = nLukko "nahka" ; --- nahan
|
leather_N = mkN "nahka" ; --- nahan
|
||||||
leave_V2 = dirV2 (regV "jättää") ;
|
leave_V2 = mkV2 (mkV "jättää") ;
|
||||||
like_V2 = caseV2 (regV "pitää") elative ;
|
like_V2 = mkV2 (mkV "pitää") elative ;
|
||||||
listen_V2 = caseV2 (reg3V "kuunnella" "kuuntelen" "kuunteli") partitive ;
|
listen_V2 = mkV2 (mkV "kuunnella" "kuuntelen" "kuunteli") partitive ;
|
||||||
live_V = regV "elää" ;
|
live_V = mkV "elää" ;
|
||||||
long_A = mkADeg (nLukko "pitkä") "pitempi" "pisin" ;
|
long_A = mkA (mkN "pitkä") "pitempi" "pisin" ;
|
||||||
lose_V2 = dirV2 (regV "hävitä") ; --- hukata
|
lose_V2 = mkV2 (mkV "hävitä") ; --- hukata
|
||||||
love_N = reg3N "rakkaus" "rakkauden" "rakkauksia" ;
|
love_N = mk3N "rakkaus" "rakkauden" "rakkauksia" ;
|
||||||
love_V2 = caseV2 (regV "rakastaa") partitive ;
|
love_V2 = mkV2 (mkV "rakastaa") partitive ;
|
||||||
man_N = mkN "mies" "miehen" "miehenä" "miestä" "mieheen"
|
man_N = mkN "mies" "miehen" "miehenä" "miestä" "mieheen"
|
||||||
"miehinä" "miehissä" "miesten" "miehiä" "miehiin" ;
|
"miehinä" "miehissä" "miesten" "miehiä" "miehiin" ;
|
||||||
married_A2 =
|
married_A2 = mkA2 (mkA "avioitunut") (postPrep genitive "kanssa") ; ---- infl
|
||||||
mkA2 (mkA (nRae "avioitunut" "avioituneena")) (postPrep genitive "kanssa") ;
|
meat_N = mkN "liha" ;
|
||||||
meat_N = nLukko "liha" ;
|
milk_N = mkN "maito" ;
|
||||||
milk_N = nLukko "maito" ;
|
moon_N = mkN "kuu" ;
|
||||||
moon_N = regN "kuu" ;
|
mother_N2 = mkN2 (mkN "äiti") ;
|
||||||
mother_N2 = genN2 (regN "äiti") ;
|
mountain_N = mkN "vuori" "vuoria" ;
|
||||||
mountain_N = nArpi "vuori" ;
|
music_N = mkN "musiikki" ;
|
||||||
music_N = regN "musiikki" ;
|
narrow_A = mkA (mkN "kapea") "kapeampi" "kapein" ;
|
||||||
narrow_A = mkADeg (regN "kapea") "kapeampi" "kapein" ;
|
new_A = mkA (mk3N "uusi" "uuden" "uusia") "uudempi" "uusin" ;
|
||||||
new_A = mkADeg (reg3N "uusi" "uuden" "uusia") "uudempi" "uusin" ;
|
newspaper_N = mkN "sanoma" (mkN "lehti" "lehtiä") ; --- for correct vowel harmony
|
||||||
newspaper_N = nSylki "sanomalehti" ; --- for correct vowel harmony
|
oil_N = mkN "öljy" ;
|
||||||
oil_N = nLukko "öljy" ;
|
old_A = mkA (mkN "vanha") "vanhempi" "vanhin" ;
|
||||||
old_A = mkADeg (nLukko "vanha") "vanhempi" "vanhin" ;
|
open_V2 = mkV2 (mkV "avata") ;
|
||||||
open_V2 = dirV2 (regV "avata") ;
|
paint_V2A = mkV2A (mkV "maalata") accPrep (casePrep translative) ;
|
||||||
paint_V2A = mkV2A (regV "maalata") accPrep (casePrep translative) ;
|
paper_N = mk2N "paperi" "papereita" ;
|
||||||
paper_N = reg2N "paperi" "papereita" ;
|
paris_PN = mkPN (mkN "Pariisi") ;
|
||||||
paris_PN = mkPN (regN "Pariisi") ;
|
peace_N = mkN "rauha" ;
|
||||||
peace_N = nLukko "rauha" ;
|
pen_N = mkN "kynä" ;
|
||||||
pen_N = nLukko "kynä" ;
|
planet_N = mkN "planeetta" ;
|
||||||
planet_N = nLukko "planeetta" ;
|
plastic_N = mkN "muovi" ;
|
||||||
plastic_N = regN "muovi" ;
|
play_V2 = mkV2 (mkV "pelata") cpartitive ; --- leikkiä, soittaa
|
||||||
play_V2 = mkV2 (regV "pelata") cpartitive ; --- leikkiä, soittaa
|
policeman_N = mkN "poliisi" ;
|
||||||
policeman_N = regN "poliisi" ;
|
priest_N = mkN "pappi" ;
|
||||||
priest_N = regN "pappi" ;
|
|
||||||
probable_AS = mkAS --- for vowel harmony
|
probable_AS = mkAS --- for vowel harmony
|
||||||
(mkADeg (nNainen "todennäköistä") "tonennäköisempi" "todennälöisin") ;
|
(mkA (mkN "todennäköinen") "tonennäköisempi" "todennälöisin") ; ---- sta
|
||||||
queen_N = regN "kuningatar" ;
|
queen_N = mkN "kuningatar" ;
|
||||||
radio_N = reg2N "radio" "radioita" ;
|
radio_N = mk2N "radio" "radioita" ;
|
||||||
rain_V0 = mkV0 (reg2V "sataa" "satoi") ;
|
rain_V0 = mkV0 (mk2V "sataa" "satoi") ;
|
||||||
read_V2 = dirV2 (regV "lukea") ;
|
read_V2 = mkV2 (mkV "lukea") ;
|
||||||
red_A = regA "punainen" ;
|
red_A = mkA "punainen" ;
|
||||||
religion_N = nLukko "uskonto" ;
|
religion_N = mkN "uskonto" ;
|
||||||
restaurant_N = nLukko "ravintola" ;
|
restaurant_N = mkN "ravintola" ;
|
||||||
river_N = nArpi "joki" ;
|
river_N = mkN "joki" "jokia" ;
|
||||||
rock_N = reg2N "kallio" "kallioita" ;
|
rock_N = mk2N "kallio" "kallioita" ;
|
||||||
roof_N = nLukko "katto" ;
|
roof_N = mkN "katto" ;
|
||||||
rubber_N = regN "kumi" ;
|
rubber_N = mkN "kumi" ;
|
||||||
run_V = reg2V "juosta" "juoksi" ;
|
run_V = mk2V "juosta" "juoksi" ;
|
||||||
say_VS = mkVS (regV "sanoa") ;
|
say_VS = mkVS (mkV "sanoa") ;
|
||||||
school_N = nLukko "koulu" ;
|
school_N = mkN "koulu" ;
|
||||||
science_N = regN "tiede" ;
|
science_N = mkN "tiede" ;
|
||||||
sea_N = nMeri "meri" ;
|
sea_N = mkN "meri" "meren" "meriä" "merta" ;
|
||||||
seek_V2 = mkV2 (regV "etsiä") cpartitive ;
|
seek_V2 = mkV2 (mkV "etsiä") cpartitive ;
|
||||||
see_V2 = dirV2 (
|
see_V2 = mkV2 (
|
||||||
mk12V "nähdä" "näkee" "näen" "näkevät" "nähkää" "nähdään"
|
mk12V "nähdä" "näkee" "näen" "näkevät" "nähkää" "nähdään"
|
||||||
"näki" "näin" "näkisi" "nähnyt" "nähty" "nähdyn") ;
|
"näki" "näin" "näkisi" "nähnyt" "nähty" "nähdyn") ;
|
||||||
sell_V3 = dirV3 (regV "myydä") allative ;
|
sell_V3 = mkV3 (mkV "myydä") accPrep (casePrep allative) ;
|
||||||
send_V3 = dirV3 (regV "lähettää") allative ;
|
send_V3 = mkV3 (mkV "lähettää") accPrep (casePrep allative) ;
|
||||||
sheep_N = regN "lammas" ;
|
sheep_N = mkN "lammas" ;
|
||||||
ship_N = nLukko "laiva" ;
|
ship_N = mkN "laiva" ;
|
||||||
shirt_N = nLukko "paita" ;
|
shirt_N = mkN "paita" ;
|
||||||
shoe_N = nLukko "kenkä" ;
|
shoe_N = mkN "kenkä" ;
|
||||||
shop_N = nLukko "kauppa" ;
|
shop_N = mkN "kauppa" ;
|
||||||
short_A = regA "lyhyt" ;
|
short_A = mkA "lyhyt" ;
|
||||||
silver_N = regN "hopea" ;
|
silver_N = mkN "hopea" ;
|
||||||
sister_N = nLukko "sisko" ;
|
sister_N = mkN "sisko" ;
|
||||||
sleep_V = regV "nukkua" ;
|
sleep_V = mkV "nukkua" ;
|
||||||
small_A = mkADeg (reg2N "pieni" "pieniä") "pienempi" "pienin" ;
|
small_A = mkA (mk2N "pieni" "pieniä") "pienempi" "pienin" ;
|
||||||
snake_N = regN "käärme" ;
|
snake_N = mkN "käärme" ;
|
||||||
sock_N = nLukko "sukka" ;
|
sock_N = mkN "sukka" ;
|
||||||
speak_V2 = mkV2 (regV "puhua") cpartitive ;
|
speak_V2 = mkV2 (mkV "puhua") cpartitive ;
|
||||||
star_N = nSylki "tähti" ;
|
star_N = mkN "tähti" "tähtiä" ;
|
||||||
steel_N = regN "teräs" ;
|
steel_N = mkN "teräs" ;
|
||||||
stone_N = nSylki "kivi" ;
|
stone_N = mkN "kivi" "kiviä" ;
|
||||||
stove_N = reg3N "liesi" "lieden" "liesiä" ;
|
stove_N = mk3N "liesi" "lieden" "liesiä" ;
|
||||||
student_N = reg2N "opiskelija" "opiskelijoita" ;
|
student_N = mk2N "opiskelija" "opiskelijoita" ;
|
||||||
stupid_A = regA "tyhmä" ;
|
stupid_A = mkA "tyhmä" ;
|
||||||
sun_N = nLukko "aurinko" ;
|
sun_N = mkN "aurinko" ;
|
||||||
switch8off_V2 = dirV2 (regV "sammuttaa") ; ---
|
switch8off_V2 = mkV2 (mkV "sammuttaa") ; ---
|
||||||
switch8on_V2 = dirV2 (regV "sytyttää") ; ---
|
switch8on_V2 = mkV2 (mkV "sytyttää") ; ---
|
||||||
table_N = nLukko "pöytä" ;
|
table_N = mkN "pöytä" ;
|
||||||
talk_V3 = mkV3 (regV "puhua") (casePrep allative) (casePrep elative) ;
|
talk_V3 = mkV3 (mkV "puhua") (casePrep allative) (casePrep elative) ;
|
||||||
teacher_N = nLukko "opettaja" ;
|
teacher_N = mkN "opettaja" ;
|
||||||
teach_V2 = dirV2 (regV "opettaa") ;
|
teach_V2 = mkV2 (mkV "opettaa") ;
|
||||||
television_N = reg2N "televisio" "televisioita" ;
|
television_N = mk2N "televisio" "televisioita" ;
|
||||||
thick_A = regA "paksu" ;
|
thick_A = mkA "paksu" ;
|
||||||
thin_A = regA "ohut" ;
|
thin_A = mkA "ohut" ;
|
||||||
train_N = nLukko "juna" ;
|
train_N = mkN "juna" ;
|
||||||
travel_V = regV "matkustaa" ;
|
travel_V = mkV "matkustaa" ;
|
||||||
tree_N = regN "puu" ;
|
tree_N = mkN "puu" ;
|
||||||
---- trousers_N = regN "trousers" ;
|
---- trousers_N = mkN "trousers" ;
|
||||||
ugly_A = mkADeg (nLukko "ruma") "rumempi" "rumin" ;
|
ugly_A = mkA (mkN "ruma") "rumempi" "rumin" ;
|
||||||
understand_V2 = dirV2 (reg3V "ymmärtää" "ymmärrän" "ymmärsi") ;
|
understand_V2 = mkV2 (mkV "ymmärtää" "ymmärrän" "ymmärsi") ;
|
||||||
university_N = nLukko "yliopisto" ;
|
university_N = mkN "yliopisto" ;
|
||||||
village_N = nLukko "kylä" ;
|
village_N = mkN "kylä" ;
|
||||||
wait_V2 = caseV2 (regV "odottaa") partitive ;
|
wait_V2 = mkV2 (mkV "odottaa") partitive ;
|
||||||
walk_V = regV "kävellä" ;
|
walk_V = mkV "kävellä" ;
|
||||||
warm_A = mkADeg
|
warm_A = mkA
|
||||||
(mkN "lämmin" "lämpimän" "lämpimänä" "lämmintä" "lämpimään"
|
(mkN "lämmin" "lämpimän" "lämpimänä" "lämmintä" "lämpimään"
|
||||||
"lämpiminä" "lämpimissä" "lämpimien" "lämpimiä" "lämpimiin"
|
"lämpiminä" "lämpimissä" "lämpimien" "lämpimiä" "lämpimiin"
|
||||||
)
|
)
|
||||||
"lämpimämpi" "lämpimin" ;
|
"lämpimämpi" "lämpimin" ;
|
||||||
war_N = nLukko "sota" ;
|
war_N = mkN "sota" ;
|
||||||
watch_V2 = mkV2 (regV "katsella") cpartitive ;
|
watch_V2 = mkV2 (mkV "katsella") cpartitive ;
|
||||||
water_N = reg3N "vesi" "veden" "vesiä" ;
|
water_N = mk3N "vesi" "veden" "vesiä" ;
|
||||||
white_A = regA "valkoinen" ;
|
white_A = mkA "valkoinen" ;
|
||||||
window_N = reg2N "ikkuna" "ikkunoita" ;
|
window_N = mk2N "ikkuna" "ikkunoita" ;
|
||||||
wine_N = regN "viini" ;
|
wine_N = mkN "viini" ;
|
||||||
win_V2 = dirV2 (regV "voittaa") ;
|
win_V2 = mkV2 (mkV "voittaa") ;
|
||||||
woman_N = regN "nainen" ;
|
woman_N = mkN "nainen" ;
|
||||||
wonder_VQ = mkVQ (regV "ihmetellä") ;
|
wonder_VQ = mkVQ (mkV "ihmetellä") ;
|
||||||
wood_N = regN "puu" ;
|
wood_N = mkN "puu" ;
|
||||||
write_V2 = dirV2 (regV "kirjoittaa") ;
|
write_V2 = mkV2 (mkV "kirjoittaa") ;
|
||||||
yellow_A = regA "keltainen" ;
|
yellow_A = mkA "keltainen" ;
|
||||||
young_A = mkADeg (nArpi "nuori") "nuorempi" "nuorin" ;
|
young_A = mkA (mkN "nuori" "nuoria") "nuorempi" "nuorin" ;
|
||||||
|
|
||||||
do_V2 = dirV2 (
|
do_V2 = mkV2 (
|
||||||
mk12V "tehdä" "tekee" "teen" "tekevät" "tehkää" "tehdään"
|
mk12V "tehdä" "tekee" "teen" "tekevät" "tehkää" "tehdään"
|
||||||
"teki" "tein" "tekisi" "tehnyt" "tehty" "tehdyn") ;
|
"teki" "tein" "tekisi" "tehnyt" "tehty" "tehdyn") ;
|
||||||
|
|
||||||
now_Adv = mkAdv "nyt" ;
|
now_Adv = mkAdv "nyt" ;
|
||||||
already_Adv = mkAdv "jo" ;
|
already_Adv = mkAdv "jo" ;
|
||||||
song_N = nLukko "laulu" ;
|
song_N = mkN "laulu" ;
|
||||||
add_V3 = dirV3 (regV "lisätä") illative ;
|
add_V3 = mkV3 (mkV "lisätä") accPrep (casePrep illative) ;
|
||||||
number_N = reg2N "numero" "numeroita" ;
|
number_N = mk2N "numero" "numeroita" ;
|
||||||
put_V2 = dirV2 (regV "panna") ;
|
put_V2 = mkV2 (mkV "panna") ;
|
||||||
stop_V = regV "pysähtyä" ;
|
stop_V = mkV "pysähtyä" ;
|
||||||
jump_V = regV "hypätä" ;
|
jump_V = mkV "hypätä" ;
|
||||||
left_Ord = mkOrd (regN "vasen") ;
|
left_Ord = mkOrd (mkN "vasen") ;
|
||||||
right_Ord = mkOrd (regN "oikea") ;
|
right_Ord = mkOrd (mkN "oikea") ;
|
||||||
far_Adv = mkAdv "kaukana" ;
|
far_Adv = mkAdv "kaukana" ;
|
||||||
correct_A = regA "oikea" ;
|
correct_A = mkA "oikea" ;
|
||||||
dry_A = mkADeg (regN "kuiva") "kuivempi" "kuivin" ;
|
dry_A = mkA (mkN "kuiva") "kuivempi" "kuivin" ;
|
||||||
dull_A = mkADeg (regN "tylsä") "tylsempi" "tylsin" ;
|
dull_A = mkA (mkN "tylsä") "tylsempi" "tylsin" ;
|
||||||
full_A = mkADeg (reg3N "täysi" "täyden" "täysiä") "täydempi" "täysin" ;
|
full_A = mkA (mk3N "täysi" "täyden" "täysiä") "täydempi" "täysin" ;
|
||||||
heavy_A = regA "raskas" ;
|
heavy_A = mkA "raskas" ;
|
||||||
near_A = regA "läheinen" ;
|
near_A = mkA "läheinen" ;
|
||||||
rotten_A = regA "mätä" ;
|
rotten_A = mkA "mätä" ;
|
||||||
round_A = regA "pyöreä" ;
|
round_A = mkA "pyöreä" ;
|
||||||
sharp_A = regA "terävä" ;
|
sharp_A = mkA "terävä" ;
|
||||||
smooth_A = regA "sileä" ;
|
smooth_A = mkA "sileä" ;
|
||||||
straight_A = mkADeg (regN "suora") "suorempi" "suorin" ;
|
straight_A = mkA (mkN "suora") "suorempi" "suorin" ;
|
||||||
wet_A = mkADeg (regN "märkä") "märempi" "märin" ;
|
wet_A = mkA (mkN "märkä") "märempi" "märin" ;
|
||||||
wide_A = regA "leveä" ;
|
wide_A = mkA "leveä" ;
|
||||||
animal_N = reg3N "eläin" "eläimen" "eläimiä" ;
|
animal_N = mk3N "eläin" "eläimen" "eläimiä" ;
|
||||||
ashes_N = regN "tuhka" ;
|
ashes_N = mkN "tuhka" ;
|
||||||
back_N = regN "selkä" ;
|
back_N = mkN "selkä" ;
|
||||||
bark_N = regN "kaarna" ;
|
bark_N = mkN "kaarna" ;
|
||||||
belly_N = regN "vatsa" ;
|
belly_N = mkN "vatsa" ;
|
||||||
blood_N = nMeri "veri" ;
|
blood_N = mkN "veri" "veren" "veriä" "verta" ;
|
||||||
bone_N = regN "luu" ;
|
bone_N = mkN "luu" ;
|
||||||
breast_N = regN "rinta" ;
|
breast_N = mkN "rinta" ;
|
||||||
cloud_N = reg2N "pilvi" "pilviä" ;
|
cloud_N = mk2N "pilvi" "pilviä" ;
|
||||||
day_N = regN "päivä" ;
|
day_N = mkN "päivä" ;
|
||||||
dust_N = regN "pöly" ;
|
dust_N = mkN "pöly" ;
|
||||||
ear_N = regN "korva" ;
|
ear_N = mkN "korva" ;
|
||||||
earth_N = regN "maa" ;
|
earth_N = mkN "maa" ;
|
||||||
egg_N = regN "muna" ;
|
egg_N = mkN "muna" ;
|
||||||
eye_N = regN "silmä" ;
|
eye_N = mkN "silmä" ;
|
||||||
fat_N = regN "rasva" ;
|
fat_N = mkN "rasva" ;
|
||||||
feather_N = reg3N "höyhen" "höyhenen" "höyheniä" ;
|
feather_N = mk3N "höyhen" "höyhenen" "höyheniä" ;
|
||||||
fingernail_N = reg3N "kynsi" "kynnen" "kynsiä" ;
|
fingernail_N = mk3N "kynsi" "kynnen" "kynsiä" ;
|
||||||
fire_N = reg2N "tuli" "tulia" ;
|
fire_N = mk2N "tuli" "tulia" ;
|
||||||
flower_N = regN "kukka" ;
|
flower_N = mkN "kukka" ;
|
||||||
fog_N = regN "sumu" ;
|
fog_N = mkN "sumu" ;
|
||||||
foot_N = regN "jalka" ;
|
foot_N = mkN "jalka" ;
|
||||||
forest_N = regN "metsä" ;
|
forest_N = mkN "metsä" ;
|
||||||
grass_N = regN "ruoho" ;
|
grass_N = mkN "ruoho" ;
|
||||||
guts_N = regN "sisälmys" ; --- suoli
|
guts_N = mkN "sisälmys" ; --- suoli
|
||||||
hair_N = regN "hius" ;
|
hair_N = mkN "hius" ;
|
||||||
hand_N = reg3N "käsi" "käden" "käsiä" ;
|
hand_N = mk3N "käsi" "käden" "käsiä" ;
|
||||||
head_N = regN "pää" ;
|
head_N = mkN "pää" ;
|
||||||
heart_N = reg3N "sydän" "sydämen" "sydämiä" ;
|
heart_N = mk3N "sydän" "sydämen" "sydämiä" ;
|
||||||
horn_N = reg2N "sarvi" "sarvia" ;
|
horn_N = mk2N "sarvi" "sarvia" ;
|
||||||
husband_N = mkN "mies" "miehen" "miehenä" "miestä" "mieheen"
|
husband_N = mkN "mies" "miehen" "miehenä" "miestä" "mieheen"
|
||||||
"miehinä" "miehissä" "miesten" "miehiä" "miehiin" ;
|
"miehinä" "miehissä" "miesten" "miehiä" "miehiin" ;
|
||||||
ice_N = regN "jää" ;
|
ice_N = mkN "jää" ;
|
||||||
knee_N = reg2N "polvi" "polvia" ;
|
knee_N = mk2N "polvi" "polvia" ;
|
||||||
leaf_N = reg2N "lehti" "lehtiä" ;
|
leaf_N = mk2N "lehti" "lehtiä" ;
|
||||||
leg_N = regN "jalka" ; --- sääri
|
leg_N = mkN "jalka" ; --- sääri
|
||||||
liver_N = regN "maksa" ;
|
liver_N = mkN "maksa" ;
|
||||||
louse_N = regN "lude" ;
|
louse_N = mkN "lude" ;
|
||||||
mouth_N = regN "suu" ;
|
mouth_N = mkN "suu" ;
|
||||||
name_N = reg2N "nimi" "nimiä" ;
|
name_N = mk2N "nimi" "nimiä" ;
|
||||||
neck_N = regN "niska" ;
|
neck_N = mkN "niska" ;
|
||||||
night_N = regN "yö" ;
|
night_N = mkN "yö" ;
|
||||||
nose_N = regN "nenä" ;
|
nose_N = mkN "nenä" ;
|
||||||
person_N = regN "henkilö" ;
|
person_N = mkN "henkilö" ;
|
||||||
rain_N = regN "sade" ;
|
rain_N = mkN "sade" ;
|
||||||
road_N = regN "tie" ;
|
road_N = mkN "tie" ;
|
||||||
root_N = reg2N "juuri" "juuria" ;
|
root_N = mk2N "juuri" "juuria" ;
|
||||||
rope_N = reg3N "köysi" "köyden" "köysiä" ;
|
rope_N = mk3N "köysi" "köyden" "köysiä" ;
|
||||||
salt_N = regN "suola" ;
|
salt_N = mkN "suola" ;
|
||||||
sand_N = regN "hiekka" ;
|
sand_N = mkN "hiekka" ;
|
||||||
seed_N = regN "siemen" ;
|
seed_N = mkN "siemen" ;
|
||||||
skin_N = regN "nahka" ;
|
skin_N = mkN "nahka" ;
|
||||||
sky_N = reg3N "taivas" "taivaan" "taivaita" ;
|
sky_N = mk3N "taivas" "taivaan" "taivaita" ;
|
||||||
smoke_N = regN "savu" ;
|
smoke_N = mkN "savu" ;
|
||||||
snow_N = sgpartN (nMeri "lumi") "lunta" ;
|
snow_N = mkN "lumi" "lumen" "lumia" "lunta" ;
|
||||||
stick_N = regN "keppi" ;
|
stick_N = mkN "keppi" ;
|
||||||
tail_N = regN "häntä" ;
|
tail_N = mkN "häntä" ;
|
||||||
tongue_N = reg2N "kieli" "kieliä" ;
|
tongue_N = mk2N "kieli" "kieliä" ;
|
||||||
tooth_N = regN "hammas" ;
|
tooth_N = mkN "hammas" ;
|
||||||
wife_N = regN "vaimo" ;
|
wife_N = mkN "vaimo" ;
|
||||||
wind_N = reg2N "tuuli" "tuulia" ;
|
wind_N = mk2N "tuuli" "tuulia" ;
|
||||||
wing_N = reg2N "siipi" "siipiä" ;
|
wing_N = mk2N "siipi" "siipiä" ;
|
||||||
worm_N = regN "mato" ;
|
worm_N = mkN "mato" ;
|
||||||
year_N = reg3N "vuosi" "vuoden" "vuosia" ;
|
year_N = mk3N "vuosi" "vuoden" "vuosia" ;
|
||||||
bite_V2 = dirV2 (regV "purra") ;
|
bite_V2 = mkV2 (mkV "purra") ;
|
||||||
blow_V = regV "puhaltaa" ;
|
blow_V = mkV "puhaltaa" ;
|
||||||
burn_V = regV "palaa" ;
|
burn_V = mkV "palaa" ;
|
||||||
count_V2 = dirV2 (regV "laskea") ;
|
count_V2 = mkV2 (mkV "laskea") ;
|
||||||
cut_V2 = dirV2 (reg2V "leikata" "leikkasi") ;
|
cut_V2 = mkV2 (mk2V "leikata" "leikkasi") ;
|
||||||
dig_V = regV "kaivaa" ;
|
dig_V = mkV "kaivaa" ;
|
||||||
fall_V = reg3V "pudota" "putoan" "putosi" ;
|
fall_V = mkV "pudota" "putoan" "putosi" ;
|
||||||
fear_V2 = mkV2 (reg3V "pelätä" "pelkään" "pelkäsi") cpartitive ;
|
fear_V2 = mkV2 (mkV "pelätä" "pelkään" "pelkäsi") cpartitive ;
|
||||||
fight_V2 = mkV2 (regV "taistella") (postPrep partitive "vastaan") ;
|
fight_V2 = mkV2 (mkV "taistella") (postPrep partitive "vastaan") ;
|
||||||
float_V = regV "kellua" ;
|
float_V = mkV "kellua" ;
|
||||||
flow_V = reg3V "virrata" "virtaan" "virtasi" ;
|
flow_V = mkV "virrata" "virtaan" "virtasi" ;
|
||||||
fly_V = regV "lentää" ;
|
fly_V = mkV "lentää" ;
|
||||||
freeze_V = regV "jäätyä" ;
|
freeze_V = mkV "jäätyä" ;
|
||||||
give_V3 = dirdirV3 (reg3V "antaa" "annan" "antoi") ;
|
give_V3 = mkV3 (mkV "antaa" "annan" "antoi") accPrep (casePrep allative) ;
|
||||||
hit_V2 = mkV2 (regV "lyödä") cpartitive ;
|
hit_V2 = mkV2 (mkV "lyödä") cpartitive ;
|
||||||
hold_V2 = mkV2 (regV "pitää") cpartitive ;
|
hold_V2 = mkV2 (mkV "pitää") cpartitive ;
|
||||||
hunt_V2 = mkV2 (regV "metsästää") cpartitive ;
|
hunt_V2 = mkV2 (mkV "metsästää") cpartitive ;
|
||||||
kill_V2 = dirV2 (regV "tappaa") ;
|
kill_V2 = mkV2 (mkV "tappaa") ;
|
||||||
laugh_V = reg3V "nauraa" "nauran" "nauroi" ;
|
laugh_V = mkV "nauraa" "nauran" "nauroi" ;
|
||||||
lie_V = reg3V "maata" "makaan" "makasi" ;
|
lie_V = mkV "maata" "makaan" "makasi" ;
|
||||||
play_V = regV "pelata" ;
|
play_V = mkV "pelata" ;
|
||||||
pull_V2 = dirV2 (regV "vetää") ;
|
pull_V2 = mkV2 (mkV "vetää") ;
|
||||||
push_V2 = dirV2 (regV "työntää") ;
|
push_V2 = mkV2 (mkV "työntää") ;
|
||||||
rub_V2 = mkV2 (regV "hieroa") cpartitive ;
|
rub_V2 = mkV2 (mkV "hieroa") cpartitive ;
|
||||||
scratch_V2 = mkV2 (regV "raapia") cpartitive ;
|
scratch_V2 = mkV2 (mkV "raapia") cpartitive ;
|
||||||
sew_V = regV "kylvää" ;
|
sew_V = mkV "kylvää" ;
|
||||||
sing_V = regV "laulaa" ;
|
sing_V = mkV "laulaa" ;
|
||||||
sit_V = regV "istua" ;
|
sit_V = mkV "istua" ;
|
||||||
smell_V = reg2V "haistaa" "haistoi" ;
|
smell_V = mk2V "haistaa" "haistoi" ;
|
||||||
spit_V = regV "sylkeä" ;
|
spit_V = mkV "sylkeä" ;
|
||||||
split_V2 = dirV2 (reg2V "halkaista" "halkaisi") ;
|
split_V2 = mkV2 (mk2V "halkaista" "halkaisi") ;
|
||||||
squeeze_V2 = mkV2 (regV "puristaa") cpartitive ;
|
squeeze_V2 = mkV2 (mkV "puristaa") cpartitive ;
|
||||||
stab_V2 = mkV2 (regV "pistää") cpartitive ;
|
stab_V2 = mkV2 (mkV "pistää") cpartitive ;
|
||||||
stand_V = mk12V "seistä" "seisoo" "seison" "seisovat" "seiskää" "seistään"
|
stand_V = mk12V "seistä" "seisoo" "seison" "seisovat" "seiskää" "seistään"
|
||||||
"seisoi" "seisoin" "seisoisi" "seissyt" "seisty" "seistyn" ; --- *seisoivät
|
"seisoi" "seisoin" "seisoisi" "seissyt" "seisty" "seistyn" ; --- *seisoivät
|
||||||
suck_V2 = mkV2 (regV "imeä") cpartitive ;
|
suck_V2 = mkV2 (mkV "imeä") cpartitive ;
|
||||||
swell_V = mk12V "turvota" "turpoaa" "turpoan" "turpoavat" "turvotkaa" "turvotaan"
|
swell_V = mk12V "turvota" "turpoaa" "turpoan" "turpoavat" "turvotkaa" "turvotaan"
|
||||||
"turposi" "turposin" "turpoaisi" "turvonnut" "turvottu" "turvotun" ;
|
"turposi" "turposin" "turpoaisi" "turvonnut" "turvottu" "turvotun" ;
|
||||||
swim_V = reg3V "uida" "uin" "ui" ;
|
swim_V = mkV "uida" "uin" "ui" ;
|
||||||
think_V = reg3V "ajatella" "ajattelen" "ajatteli" ;
|
think_V = mkV "ajatella" "ajattelen" "ajatteli" ;
|
||||||
throw_V2 = dirV2 (regV "heittää") ;
|
throw_V2 = mkV2 (mkV "heittää") ;
|
||||||
tie_V2 = dirV2 (regV "sitoa") ;
|
tie_V2 = mkV2 (mkV "sitoa") ;
|
||||||
turn_V = regV "kääntyä" ;
|
turn_V = mkV "kääntyä" ;
|
||||||
vomit_V = regV "oksentaa" ;
|
vomit_V = mkV "oksentaa" ;
|
||||||
wash_V2 = dirV2 (regV "pestä") ;
|
wash_V2 = mkV2 (mkV "pestä") ;
|
||||||
wipe_V2 = dirV2 (regV "pyyhkiä") ;
|
wipe_V2 = mkV2 (mkV "pyyhkiä") ;
|
||||||
|
|
||||||
breathe_V = regV "hengittää" ;
|
breathe_V = mkV "hengittää" ;
|
||||||
|
|
||||||
grammar_N = regN "kielioppi" ;
|
grammar_N = mkN "kielioppi" ;
|
||||||
language_N = reg2N "kieli" "kieliä" ;
|
language_N = mk2N "kieli" "kieliä" ;
|
||||||
rule_N = regN "sääntö" ;
|
rule_N = mkN "sääntö" ;
|
||||||
|
|
||||||
john_PN = regPN "Jussi" ;
|
john_PN = mkPN "Jussi" ;
|
||||||
question_N = regN "kysymys" ;
|
question_N = mkN "kysymys" ;
|
||||||
ready_A = regA "valmis" ;
|
ready_A = mkA "valmis" ;
|
||||||
reason_N = regN "syy" ;
|
reason_N = mkN "syy" ;
|
||||||
today_Adv = mkAdv "tänään" ;
|
today_Adv = mkAdv "tänään" ;
|
||||||
uncertain_A = regA "epävarma" ;
|
uncertain_A = mkA "epävarma" ;
|
||||||
|
|
||||||
oper
|
oper
|
||||||
mkOrd : N -> Ord ;
|
mkOrd : N -> Ord ;
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -20,9 +20,9 @@ lin
|
|||||||
(nhn (mkSubst "a" "kolme" "kolme" "kolme" "kolmea" "kolmeen" "kolmi" "kolmi"
|
(nhn (mkSubst "a" "kolme" "kolme" "kolme" "kolmea" "kolmeen" "kolmi" "kolmi"
|
||||||
"kolmien" "kolmia" "kolmiin"))
|
"kolmien" "kolmia" "kolmiin"))
|
||||||
(ordN "a" "kolmas") ;
|
(ordN "a" "kolmas") ;
|
||||||
n4 = co (regN "neljä") (ordN "ä" "neljäs") ;
|
n4 = co (mkN "neljä") (ordN "ä" "neljäs") ;
|
||||||
n5 = co (reg3N "viisi" "viiden" "viisiä") (ordN "ä" "viides") ;
|
n5 = co (mkN "viisi" "viiden" "viisiä") (ordN "ä" "viides") ;
|
||||||
n6 = co (reg3N "kuusi" "kuuden" "kuusia") (ordN "a" "kuudes") ;
|
n6 = co (mkN "kuusi" "kuuden" "kuusia") (ordN "a" "kuudes") ;
|
||||||
n7 = co
|
n7 = co
|
||||||
(nhn (mkSubst "ä" "seitsemän" "seitsemä" "seitsemä" "seitsemää"
|
(nhn (mkSubst "ä" "seitsemän" "seitsemä" "seitsemä" "seitsemää"
|
||||||
"seitsemään" "seitsemi" "seitsemi" "seitsemien" "seitsemiä"
|
"seitsemään" "seitsemi" "seitsemi" "seitsemien" "seitsemiä"
|
||||||
@@ -105,12 +105,12 @@ oper
|
|||||||
"kymmeneen" "kymmeni" "kymmeni" "kymmenien" "kymmeniä" "kymmeniin"))
|
"kymmeneen" "kymmeni" "kymmeni" "kymmenien" "kymmeniä" "kymmeniin"))
|
||||||
(ordN "ä" "kymmenes") ;
|
(ordN "ä" "kymmenes") ;
|
||||||
sataN = co
|
sataN = co
|
||||||
(nhn (sLukko "sata"))
|
(mkN "sata")
|
||||||
(ordN "a" "sadas") ;
|
(ordN "a" "sadas") ;
|
||||||
|
|
||||||
tuhatN = co
|
tuhatN = co
|
||||||
(nhn (mkSubst "a" "tuhat" "tuhanne" "tuhante" "tuhatta" "tuhanteen"
|
(mkN "tuhat" "tuhannen" "tuhatta" "ruhantena" "tuhanteen"
|
||||||
"tuhansi" "tuhansi" "tuhansien" "tuhansia" "tuhansiin"))
|
"tuhansien" "tuhansia" "tuhansina" "tuhansissa" "tuhansiin")
|
||||||
(ordN "a" "tuhannes") ;
|
(ordN "a" "tuhannes") ;
|
||||||
|
|
||||||
kymmentaN =
|
kymmentaN =
|
||||||
|
|||||||
@@ -2,14 +2,14 @@
|
|||||||
|
|
||||||
--1 Finnish Lexical Paradigms
|
--1 Finnish Lexical Paradigms
|
||||||
--
|
--
|
||||||
-- Aarne Ranta 2003--2005
|
-- Aarne Ranta 2003--2008
|
||||||
--
|
--
|
||||||
-- This is an API to the user of the resource grammar
|
-- This is an API to the user of the resource grammar
|
||||||
-- for adding lexical items. It gives functions for forming
|
-- for adding lexical items. It gives functions for forming
|
||||||
-- expressions of open categories: nouns, adjectives, verbs.
|
-- expressions of open categories: nouns, adjectives, verbs.
|
||||||
--
|
--
|
||||||
-- Closed categories (determiners, pronouns, conjunctions) are
|
-- Closed categories (determiners, pronouns, conjunctions) are
|
||||||
-- accessed through the resource syntax API, $Structural.gf$.
|
-- accessed through the resource syntax API and $Structural.gf$.
|
||||||
--
|
--
|
||||||
-- The main difference with $MorphoFin.gf$ is that the types
|
-- The main difference with $MorphoFin.gf$ is that the types
|
||||||
-- referred to are compiled resource grammar types. We have moreover
|
-- referred to are compiled resource grammar types. We have moreover
|
||||||
@@ -17,10 +17,9 @@
|
|||||||
-- than stems, as string arguments of the paradigms.
|
-- than stems, as string arguments of the paradigms.
|
||||||
--
|
--
|
||||||
-- The structure of functions for each word class $C$ is the following:
|
-- The structure of functions for each word class $C$ is the following:
|
||||||
-- first we give a handful of patterns that aim to cover all
|
-- there is a polymorphic constructor $mkC$, which takes one or
|
||||||
-- regular cases. Then we give a worst-case function $mkC$, which serves as an
|
-- a few arguments. In Finnish, one argument is enough in 80-90% of
|
||||||
-- escape to construct the most irregular words of type $C$.
|
-- cases in average.
|
||||||
-- However, this function should only seldom be needed.
|
|
||||||
|
|
||||||
resource ParadigmsFin = open
|
resource ParadigmsFin = open
|
||||||
(Predef=Predef),
|
(Predef=Predef),
|
||||||
@@ -82,119 +81,25 @@ oper
|
|||||||
-- two or three forms. Most notably, the two-argument variant is used
|
-- two or three forms. Most notably, the two-argument variant is used
|
||||||
-- for nouns like "kivi - kiviä", which would otherwise become like
|
-- for nouns like "kivi - kiviä", which would otherwise become like
|
||||||
-- "rivi - rivejä". Three arguments are used e.g. for
|
-- "rivi - rivejä". Three arguments are used e.g. for
|
||||||
-- "sydän - sydämen - sydämiä", which would otherwise become
|
-- "auto - auton - autoja", which would otherwise become
|
||||||
-- "sydän - sytämen".
|
-- "auto - audon".
|
||||||
|
|
||||||
mkN : overload {
|
mkN : overload {
|
||||||
mkN : (talo : Str) -> N ;
|
mkN : (talo : Str) -> N ;
|
||||||
mkN : (savi,savia : Str) -> N ;
|
mkN : (savi,savia : Str) -> N ;
|
||||||
mkN : (vesi,veden,vesiä : Str) -> N ;
|
mkN : (vesi,veden,vesiä : Str) -> N ;
|
||||||
mkN : (olo,oln,olona,oloa,oloon,oloina,oloissa,olojen,oloja,oloihin : Str) -> N
|
mkN : (vesi,veden,vesiä,vettä : Str) -> N ;
|
||||||
|
mkN : (olo,olon,olona,oloa,oloon,olojen,oloja,oloina,oloissa,oloihin : Str) -> N ;
|
||||||
|
mkN : (pika : Str) -> (juna : N) -> N ;
|
||||||
|
mkN : (oma : N) -> (tunto : N) -> N ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|
||||||
-- Some nouns have an unexpected singular partitive, e.g. "meri", "lumi".
|
|
||||||
|
|
||||||
sgpartN : (meri : N) -> (merta : Str) -> N ;
|
|
||||||
nMeri : (meri : Str) -> N ;
|
|
||||||
|
|
||||||
-- The rest of the noun paradigms are mostly covered by the three
|
|
||||||
-- heuristics.
|
|
||||||
--
|
|
||||||
-- Nouns with partitive "a","ä" are a large group.
|
|
||||||
-- To determine for grade and vowel alternation, three forms are usually needed:
|
|
||||||
-- singular nominative and genitive, and plural partitive.
|
|
||||||
-- Examples: "talo", "kukko", "huippu", "koira", "kukka", "syylä", "särki"...
|
|
||||||
|
|
||||||
nKukko : (kukko,kukon,kukkoja : Str) -> N ;
|
|
||||||
|
|
||||||
-- A special case:
|
|
||||||
-- the vowel harmony is inferred from the last letter,
|
|
||||||
-- which must be one of "o", "u", "ö", "y". Regular weak-grade alternation
|
|
||||||
-- is performed.
|
|
||||||
|
|
||||||
nTalo : (talo : Str) -> N ;
|
|
||||||
|
|
||||||
-- Another special case are nouns where the last two consonants
|
|
||||||
-- undergo regular weak-grade alternation:
|
|
||||||
-- "kukko - kukon", "rutto - ruton", "hyppy - hypyn", "sampo - sammon",
|
|
||||||
-- "kunto - kunnon", "sisältö - sisällön", .
|
|
||||||
|
|
||||||
nLukko : (lukko : Str) -> N ;
|
|
||||||
|
|
||||||
-- "arpi - arven", "sappi - sapen", "kampi - kammen";"sylki - syljen"
|
|
||||||
|
|
||||||
nArpi : (arpi : Str) -> N ;
|
|
||||||
nSylki : (sylki : Str) -> N ;
|
|
||||||
|
|
||||||
-- Foreign words ending in consonants are actually similar to words like
|
|
||||||
-- "malli"-"mallin"-"malleja", with the exception that the "i" is not attached
|
|
||||||
-- to the singular nominative. Examples: "linux", "savett", "screen".
|
|
||||||
-- The singular partitive form is used to get the vowel harmony.
|
|
||||||
-- (N.B. more than 1-syllabic words ending in "n" would have variant
|
|
||||||
-- plural genitive and partitive forms, like
|
|
||||||
-- "sultanien", "sultaneiden", which are not covered.)
|
|
||||||
|
|
||||||
nLinux : (linuxia : Str) -> N ;
|
|
||||||
|
|
||||||
-- Nouns of at least 3 syllables ending with "a" or "ä", like "peruna", "tavara",
|
|
||||||
-- "rytinä".
|
|
||||||
|
|
||||||
nPeruna : (peruna : Str) -> N ;
|
|
||||||
|
|
||||||
-- The following paradigm covers both nouns ending in an aspirated "e", such as
|
|
||||||
-- "rae", "perhe", "savuke", and also many ones ending in a consonant
|
|
||||||
-- ("rengas", "kätkyt"). The singular nominative and essive are given.
|
|
||||||
|
|
||||||
nRae : (rae, rakeena : Str) -> N ;
|
|
||||||
|
|
||||||
-- The following covers nouns with partitive "ta","tä", such as
|
|
||||||
-- "susi", "vesi", "pieni". To get all stems and the vowel harmony, it takes
|
|
||||||
-- the singular nominative, genitive, and essive.
|
|
||||||
|
|
||||||
nSusi : (susi,suden,sutta : Str) -> N ;
|
|
||||||
|
|
||||||
-- Nouns ending with a long vowel, such as "puu", "pää", "pii", "leikkuu",
|
|
||||||
-- are inflected according to the following.
|
|
||||||
|
|
||||||
nPuu : (puu : Str) -> N ;
|
|
||||||
|
|
||||||
-- One-syllable diphthong nouns, such as "suo", "tie", "työ", are inflected by
|
|
||||||
-- the following.
|
|
||||||
|
|
||||||
nSuo : (suo : Str) -> N ;
|
|
||||||
|
|
||||||
-- Many adjectives but also nouns have the nominative ending "nen" which in other
|
|
||||||
-- cases becomes "s": "nainen", "ihminen", "keltainen".
|
|
||||||
-- To capture the vowel harmony, we use the partitive form as the argument.
|
|
||||||
|
|
||||||
nNainen : (naista : Str) -> N ;
|
|
||||||
|
|
||||||
-- The following covers some nouns ending with a consonant, e.g.
|
|
||||||
-- "tilaus", "kaulin", "paimen", "laidun".
|
|
||||||
|
|
||||||
nTilaus : (tilaus,tilauksena : Str) -> N ;
|
|
||||||
|
|
||||||
-- Special case:
|
|
||||||
|
|
||||||
nKulaus : (kulaus : Str) -> N ;
|
|
||||||
|
|
||||||
-- The following covers nouns like "nauris" and adjectives like "kallis", "tyyris".
|
|
||||||
-- The partitive form is taken to get the vowel harmony.
|
|
||||||
|
|
||||||
nNauris : (naurista : Str) -> N ;
|
|
||||||
|
|
||||||
-- Separately-written compound nouns, like "sambal oelek", "Urho Kekkonen",
|
|
||||||
-- have only their last part inflected.
|
|
||||||
|
|
||||||
compN : Str -> N -> N ;
|
|
||||||
|
|
||||||
-- Nouns used as functions need a case, of which the default is
|
-- Nouns used as functions need a case, of which the default is
|
||||||
-- the genitive.
|
-- the genitive.
|
||||||
|
|
||||||
mkN2 = overload {
|
mkN2 : overload {
|
||||||
mkN2 : N -> N2 = genN2 ;
|
mkN2 : N -> N2 ;
|
||||||
mkN2 : N -> Prep -> N2 = mmkN2
|
mkN2 : N -> Prep -> N2
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
mkN3 : N -> Prep -> Prep -> N3 ;
|
mkN3 : N -> Prep -> Prep -> N3 ;
|
||||||
@@ -219,12 +124,13 @@ oper
|
|||||||
mkA : overload {
|
mkA : overload {
|
||||||
mkA : Str -> A ;
|
mkA : Str -> A ;
|
||||||
mkA : N -> A ;
|
mkA : N -> A ;
|
||||||
mkA : N -> (kivempaa,kivinta : Str) -> A
|
mkA : N -> (kivempaa,kivinta : Str) -> A ;
|
||||||
|
mkA : (hyva,parempi,paras : N) -> (hyvin,paremmin,parhaiten : Str) -> A ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- Two-place adjectives need a case for the second argument.
|
-- Two-place adjectives need a case for the second argument.
|
||||||
|
|
||||||
mkA2 : A -> Prep -> A2 ;
|
mkA2 : A -> Prep -> A2 = \a,p -> a ** {c2 = p ; lock_A2 = <>};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -235,45 +141,15 @@ oper
|
|||||||
-- a table.
|
-- a table.
|
||||||
-- The worst case needs twelve forms, as shown in the following.
|
-- The worst case needs twelve forms, as shown in the following.
|
||||||
|
|
||||||
|
mkV = overload {
|
||||||
-- The following heuristics cover more and more verbs.
|
mkV : (huutaa : Str) -> V = mk1V ;
|
||||||
|
mkV : (huutaa,huusi : Str) -> V = mk2V ;
|
||||||
mkV : overload {
|
mkV : (huutaa,huudan,huusi : Str) -> V = \x,_,y -> mk2V x y ; ----
|
||||||
mkV : (soutaa : Str) -> V ;
|
mkV : (
|
||||||
mkV : (soutaa,souti : Str) -> V ;
|
huutaa,huudan,huutaa,huutavat,huutakaa,huudetaan,
|
||||||
mkV : (soutaa,soudan,souti : Str) -> V ;
|
huusin,huusi,huusisi,huutanut,huudettu,huutanee : Str) -> V = mk12V ;
|
||||||
mkV : (tulla,tulee,tulen,tulevat,tulkaa,tullaan,tuli,tulin,tulisi,tullut,tultu,tullun : Str) -> V ;
|
|
||||||
|
|
||||||
-- The subject case of verbs is by default nominative. This function can change it.
|
|
||||||
|
|
||||||
mkV : V -> Case -> V
|
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|
||||||
-- The rest of the paradigms are special cases mostly covered by the heuristics.
|
|
||||||
-- A simple special case is the one with just one stem and without grade alternation.
|
|
||||||
|
|
||||||
vValua : (valua : Str) -> V ;
|
|
||||||
|
|
||||||
-- With two forms, the following function covers a variety of verbs, such as
|
|
||||||
-- "ottaa", "käyttää", "löytää", "huoltaa", "hiihtää", "siirtää".
|
|
||||||
|
|
||||||
vKattaa : (kattaa, katan : Str) -> V ;
|
|
||||||
|
|
||||||
-- When grade alternation is not present, just a one-form special case is needed
|
|
||||||
-- ("poistaa", "ryystää").
|
|
||||||
|
|
||||||
vOstaa : (ostaa : Str) -> V ;
|
|
||||||
|
|
||||||
-- The following covers
|
|
||||||
-- "juosta", "piestä", "nousta", "rangaista", "kävellä", "surra", "panna".
|
|
||||||
|
|
||||||
vNousta : (nousta, nousen : Str) -> V ;
|
|
||||||
|
|
||||||
-- This is for one-syllable diphthong verbs like "juoda", "syödä".
|
|
||||||
|
|
||||||
vTuoda : (tuoda : Str) -> V ;
|
|
||||||
|
|
||||||
-- All the patterns above have $nominative$ as subject case.
|
-- All the patterns above have $nominative$ as subject case.
|
||||||
-- If another case is wanted, use the following.
|
-- If another case is wanted, use the following.
|
||||||
|
|
||||||
@@ -283,6 +159,7 @@ oper
|
|||||||
|
|
||||||
vOlla : V ;
|
vOlla : V ;
|
||||||
|
|
||||||
|
|
||||||
--3 Two-place verbs
|
--3 Two-place verbs
|
||||||
--
|
--
|
||||||
-- Two-place verbs need an object case, and can have a pre- or postposition.
|
-- Two-place verbs need an object case, and can have a pre- or postposition.
|
||||||
@@ -367,202 +244,305 @@ oper
|
|||||||
\c -> {c = NPCase c ; s = [] ; isPre = True ; lock_Prep = <>} ;
|
\c -> {c = NPCase c ; s = [] ; isPre = True ; lock_Prep = <>} ;
|
||||||
accPrep = {c = NPAcc ; s = [] ; isPre = True ; lock_Prep = <>} ;
|
accPrep = {c = NPAcc ; s = [] ; isPre = True ; lock_Prep = <>} ;
|
||||||
|
|
||||||
mk10N= \a,b,c,d,e,f,g,h,i,j ->
|
|
||||||
mkNoun a b c d e f g h i j ** {lock_N = <>} ;
|
|
||||||
|
|
||||||
mkN = overload {
|
mkN = overload {
|
||||||
mkN : (talo : Str) -> N = regN ;
|
mkN : (talo : Str) -> N = mk1N ;
|
||||||
mkN : (savi,savia : Str) -> N = reg2N ;
|
-- \s -> nForms2N (nForms1 s) ;
|
||||||
mkN : (vesi,veden,vesiä : Str) -> N = reg3N ;
|
mkN : (talo,talon : Str) -> N = mk2N ;
|
||||||
mkN : (talo, talon, talona, taloa, taloon,
|
-- \s,t -> nForms2N (nForms2 s t) ;
|
||||||
taloina,taloissa,talojen,taloja,taloihin : Str) -> N = mk10N
|
mkN : (talo,talon,taloja : Str) -> N = mk3N ;
|
||||||
|
-- \s,t,u -> nForms2N (nForms3 s t u) ;
|
||||||
|
mkN : (talo,talon,taloja,taloa : Str) -> N = mk4N ;
|
||||||
|
-- \s,t,u,v -> nForms2N (nForms4 s t u v) ;
|
||||||
|
mkN :
|
||||||
|
(talo,talon,taloa,talona,taloon,talojen,taloja,taloina,taloissa,taloihin
|
||||||
|
: Str) -> N = mk10N ;
|
||||||
|
mkN : (sora : Str) -> (tie : N) -> N = mkStrN ;
|
||||||
|
mkN : (oma,tunto : N) -> N = mkNN ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
regN = \vesi ->
|
mk1A : Str -> A = \jalo -> aForms2A (nforms2aforms (nForms1 jalo)) ;
|
||||||
let
|
mkNA : N -> A = \suuri -> aForms2A (nforms2aforms (n2nforms suuri)) ;
|
||||||
esi = Predef.dp 3 vesi ; -- analysis: suffixes
|
|
||||||
a = if_then_Str (pbool2bool (Predef.occurs "aou" vesi)) "a" "ä" ;
|
|
||||||
ves = init vesi ; -- synthesis: prefixes
|
|
||||||
vet = strongGrade ves ;
|
|
||||||
ve = init ves ;
|
|
||||||
in nhn (
|
|
||||||
case esi of {
|
|
||||||
"uus" | "yys" => sRakkaus vesi ;
|
|
||||||
_ + "nen" => sNainen (Predef.tk 3 vesi + ("st" + a)) ;
|
|
||||||
_ + ("aa" | "ee" | "ii" | "oo" | "uu" | "yy" | "ää" | "öö") => sPuu vesi ;
|
|
||||||
_ + ("ie" | "uo" | "yö") => sSuo vesi ;
|
|
||||||
_ + ("ea" | "eä") =>
|
|
||||||
mkSubst
|
|
||||||
a
|
|
||||||
vesi (vesi) (vesi) (vesi + a) (vesi + a+"n")
|
|
||||||
(ves + "i") (ves + "i") (ves + "iden") (ves + "it"+a)
|
|
||||||
(ves + "isiin") ;
|
|
||||||
_ + "is" => sNauris (vesi + ("t" + a)) ;
|
|
||||||
_ + ("ut" | "yt") => sRae vesi (ves + ("en" + a)) ;
|
|
||||||
_ + ("as" | "äs") => sRae vesi (vet + (a + "n" + a)) ;
|
|
||||||
_ + ("ar" | "är") => sRae vesi (vet + ("ren" + a)) ;
|
|
||||||
_ + "n" => sLiitin vesi (vet + "men") ;
|
|
||||||
_ + "s" => sTilaus vesi (ves + ("ksen" + a)) ;
|
|
||||||
_ + "i" => sBaari (vesi + a) ;
|
|
||||||
_ + "e" => sRae vesi (strongGrade vesi + "en" + a) ;
|
|
||||||
_ + ("a" | "o" | "u" | "y" | "ä" | "ö") => sLukko vesi ;
|
|
||||||
_ => sLinux (vesi + "i" + a)
|
|
||||||
}
|
|
||||||
) ** {lock_N = <>} ;
|
|
||||||
|
|
||||||
reg2N : (savi,savia : Str) -> N = \savi,savia ->
|
mk1N : (talo : Str) -> N = \s -> nForms2N (nForms1 s) ;
|
||||||
let
|
mk2N : (talo,talon : Str) -> N = \s,t -> nForms2N (nForms2 s t) ;
|
||||||
savit = regN savi ;
|
mk3N : (talo,talon,taloja : Str) -> N = \s,t,u -> nForms2N (nForms3 s t u) ;
|
||||||
ia = Predef.dp 2 savia ;
|
mk4N : (talo,talon,taloa,taloja : Str) -> N = \s,t,u,v ->
|
||||||
i = init ia ;
|
nForms2N (nForms4 s t u v) ;
|
||||||
a = last ia ;
|
mk10N :
|
||||||
o = last savi ;
|
(talo,talon,taloa,talona,taloon,talojen,taloja,taloina,taloissa,taloihin
|
||||||
savin = weakGrade savi + "n" ;
|
: Str) -> N = \a,b,c,d,e,f,g,h,i,j ->
|
||||||
in
|
nForms2N (nForms10 a b c d e f g h i j) ;
|
||||||
case <o,ia> of {
|
|
||||||
<"i","ia"> => nhn (sArpi savi) ;
|
|
||||||
<"i","iä"> => nhn (sSylki savi) ;
|
|
||||||
<"o","ta"> | <"ö","tä"> => nhn (sRadio savi) ;
|
|
||||||
<"a","ta"> | <"ä","tä"> => nhn (sPeruna savi) ;
|
|
||||||
<"i","ta"> | <"i","tä"> => nhn (sTohtori (savi + a)) ; -- from 10 to 90 ms
|
|
||||||
-- <"a","ia"> | <"a","ja"> => nhn (sKukko savi savin savia) ; ---needless?
|
|
||||||
_ => savit
|
|
||||||
}
|
|
||||||
** {lock_N = <>} ;
|
|
||||||
|
|
||||||
reg3N = \vesi,veden,vesiä ->
|
mkStrN : Str -> N -> N = \sora,tie -> {
|
||||||
let
|
s = \\c => sora + tie.s ! c ; lock_N = <>
|
||||||
si = Predef.dp 2 vesi ;
|
} ;
|
||||||
a = last vesiä
|
mkNN : N -> N -> N = \oma,tunto -> {
|
||||||
in
|
s = \\c => oma.s ! c + tunto.s ! c ; lock_N = <>
|
||||||
case si of {
|
} ; ---- TODO: oma in possessive suffix forms
|
||||||
"us" | "ys" =>
|
|
||||||
nhn (case Predef.dp 3 veden of {
|
|
||||||
"den" => sRakkaus vesi ;
|
|
||||||
_ => sTilaus vesi (veden + a)
|
|
||||||
}) ;
|
|
||||||
"as" | "äs" => nhn (sRae vesi (veden + a)) ;
|
|
||||||
"li" | "ni" | "ri" => nhn (sSusi vesi veden (init vesi + ("en" + a))) ;
|
|
||||||
"si" => nhn (sSusi vesi veden (Predef.tk 2 vesi + ("ten" + a))) ;
|
|
||||||
"in" | "en" | "än" => nhn (sLiitin vesi veden) ;
|
|
||||||
_ + ("a" | "o" | "u" | "y" | "ä" | "ö") => nhn (sKukko vesi veden vesiä) ;
|
|
||||||
_ {- + "i" -} => nhn (sKorpi vesi veden (init veden + "n" + a))
|
|
||||||
}
|
|
||||||
** {lock_N = <>} ;
|
|
||||||
|
|
||||||
nKukko = \a,b,c -> nhn (sKukko a b c) ** {lock_N = <>} ;
|
nForms1 : Str -> NForms = \ukko ->
|
||||||
|
let
|
||||||
|
ukk = init ukko ;
|
||||||
|
uko = weakGrade ukko ;
|
||||||
|
ukon = uko + "n" ;
|
||||||
|
o = case last ukko of {"ä" => "ö" ; "a" => "o"} ; -- only used then
|
||||||
|
renka = strongGrade (init ukko) ;
|
||||||
|
rake = strongGrade ukko ;
|
||||||
|
in
|
||||||
|
case ukko of {
|
||||||
|
_ + "nen" => dNainen ukko ;
|
||||||
|
_ + ("aa" | "ee" | "ii" | "oo" | "uu" | "yy" |"ää"|"öö") => dPuu ukko ;
|
||||||
|
_ + ("ai" | "ei" | "oi" | "ui" | "yi" | "äi" | "öi") => dPuu ukko ;
|
||||||
|
_ + ("ie" | "uo" | "yö") => dSuo ukko ;
|
||||||
|
_ + ("ea" | "eä") => dKorkea ukko ;
|
||||||
|
_ + "is" => dKaunis ukko ;
|
||||||
|
_ + ("i" | "u") + "n" => dLiitin ukko (renka + "men") ;
|
||||||
|
_ + ("ton" | "tön") => dOnneton ukko ;
|
||||||
|
_ + "e" => dRae ukko (rake + "en") ;
|
||||||
|
_ + ("ut" | "yt") => dRae ukko (ukk + "en") ;
|
||||||
|
_ + ("as" | "äs") => dRae ukko (renka + last renka + "n") ;
|
||||||
|
_ + ("uus" | "yys" | "eus" | "eys") => dLujuus ukko ;
|
||||||
|
_ + "s" => dJalas ukko ;
|
||||||
|
|
||||||
nLukko = \a -> nhn (sLukko a) ** {lock_N = <>} ;
|
{- heuristics for 3-syllable nouns ending a/ä
|
||||||
nTalo = \a -> nhn (sTalo a) ** {lock_N = <>} ;
|
_ + ("a" | "e" | "i" | "o" | "u" | "y" | "ä" | "ö") + C_ +
|
||||||
nArpi = \a -> nhn (sArpi a) ** {lock_N = <>} ;
|
_ + "i" + C_ + a@("a" | "ä") =>
|
||||||
nSylki = \a -> nhn (sSylki a) ** {lock_N = <>} ;
|
dSilakka ukko (ukko + "n") (ukk + o + "it" + a) ;
|
||||||
nLinux = \a -> nhn (sLinux a) ** {lock_N = <>} ;
|
_ + ("a" | "e" | "i" | "o" | "u" | "y" | "ä" | "ö") + C_ + _ +
|
||||||
nPeruna = \a -> nhn (sPeruna a) ** {lock_N = <>} ;
|
("a" | "e" | "o" | "u" | "y" | "ä" | "ö") +
|
||||||
nRae = \a,b -> nhn (sRae a b) ** {lock_N = <>} ;
|
("l" | "r" | "n") + a@("a" | "ä") =>
|
||||||
nSusi = \a,b,c -> nhn (sSusi a b c) ** {lock_N = <>} ;
|
dSilakka ukko (ukko + "n") (ukk + o + "it" + a) ;
|
||||||
nPuu = \a -> nhn (sPuu a) ** {lock_N = <>} ;
|
_ + ("a" | "e" | "i" | "o" | "u" | "y" | "ä" | "ö") + C_ + _ +
|
||||||
nSuo = \a -> nhn (sSuo a) ** {lock_N = <>} ;
|
("a" | "e" | "i" | "o" | "u" | "y" | "ä" | "ö") +
|
||||||
nNainen = \a -> nhn (sNainen a) ** {lock_N = <>} ;
|
("n" | "k" | "s") + "k" + a@("a" | "ä") =>
|
||||||
nTilaus = \a,b -> nhn (sTilaus a b) ** {lock_N = <>} ;
|
dSilakka ukko (uko + "n") (init uko + o + "it" + a) ;
|
||||||
nKulaus = \a -> nTilaus a (init a + "ksen" + getHarmony (last
|
_ + ("a" | "e" | "i" | "o" | "u" | "y" | "ä" | "ö") + C_ + _ +
|
||||||
(init a))) ;
|
("a" | "e" | "i" | "o" | "u" | "y" | "ä" | "ö") +
|
||||||
nNauris = \a -> nhn (sNauris a) ** {lock_N = <>} ;
|
("n" | "t" | "s") + "t" + a@("a" | "ä") =>
|
||||||
sgpartN noun part = {
|
dSilakka ukko (uko + "n") (ukk + o + "j" + a) ;
|
||||||
s = table {
|
_ + ("a" | "e" | "i" | "o" | "u") + C_ + _ +
|
||||||
NCase Sg Part => part ;
|
("a" | "e" | "o" | "u") + C_ + "a" =>
|
||||||
c => noun.s ! c
|
dSilakka ukko (ukko + "n") (ukk + "ia") ;
|
||||||
|
-}
|
||||||
|
_ + "i" +o@("o"|"ö") => dSilakka ukko (ukko+"n") (ukko+"it"+getHarmony o);
|
||||||
|
_ + "i" + "a" => dSilakka ukko (ukko + "n") (ukk + "oita") ;
|
||||||
|
_ + "i" + "ä" => dSilakka ukko (ukko + "n") (ukk + "öitä") ;
|
||||||
|
_ + ("a" | "o" | "u" | "y" | "ä" | "ö") => dUkko ukko ukon ;
|
||||||
|
_ + "i" => dPaatti ukko ukon ;
|
||||||
|
_ + ("ar" | "är") => dPiennar ukko (renka + "ren") ;
|
||||||
|
_ + "e" + ("l" | "n") => dPiennar ukko (ukko + "en") ;
|
||||||
|
_ => dUnix ukko
|
||||||
|
} ;
|
||||||
|
|
||||||
|
|
||||||
|
nForms2 : (_,_ : Str) -> NForms = \ukko,ukkoja ->
|
||||||
|
let
|
||||||
|
ukot = nForms1 ukko ;
|
||||||
|
ukon = weakGrade ukko + "n" ;
|
||||||
|
in
|
||||||
|
case <ukko,ukkoja> of {
|
||||||
|
<_ + "ea", _ + "oita"> =>
|
||||||
|
dSilakka ukko ukon ukkoja ; -- idea, but not korkea
|
||||||
|
<_ + ("aa" | "ee" | "ii" | "oo" | "uu" | "yy" | "ää" | "öö" |
|
||||||
|
"ie" | "uo" | "yö" | "ea" | "eä" |
|
||||||
|
"ia" | "iä" | "io" | "iö"), _ + ("a" | "ä")> =>
|
||||||
|
nForms1 ukko ; --- to protect --- how to get "dioja"?
|
||||||
|
<_ + ("a" | "ä" | "o" | "ö"), _ + ("a" | "ä")> =>
|
||||||
|
dSilakka ukko ukon ukkoja ;
|
||||||
|
<arp + "i", _ + "i" + ("a" | "ä")> =>
|
||||||
|
dArpi ukko (init (weakGrade ukko) + "en") ;
|
||||||
|
<_ + "i", _ + ("eita" | "eitä")> =>
|
||||||
|
dTohtori ukko ;
|
||||||
|
<_ + "e", nuk + ("eja" | "ejä")> =>
|
||||||
|
dNukke ukko ukon ;
|
||||||
|
<_, _ + ":" + _ + ("a" | "ä")> => dSDP ukko ;
|
||||||
|
<_ + ("l" | "n" | "r" | "s"), _ + ("eja" | "ejä")> => dUnix ukko ;
|
||||||
|
<_, _ + ("a" | "ä")> => ukot ;
|
||||||
|
_ =>
|
||||||
|
Predef.error
|
||||||
|
(["last argument should end in a/ä, not"] ++ ukkoja)
|
||||||
} ;
|
} ;
|
||||||
g = noun.g ;
|
|
||||||
lock_N = noun.lock_N
|
nForms3 : (_,_,_ : Str) -> NForms = \ukko,ukon,ukkoja ->
|
||||||
|
let
|
||||||
|
ukk = init ukko ;
|
||||||
|
ukot = nForms2 ukko ukkoja ;
|
||||||
|
in
|
||||||
|
case <ukko,ukon> of {
|
||||||
|
<_ + ("aa" | "ee" | "ii" | "oo" | "uu" | "yy" | "ää" | "öö" |
|
||||||
|
"ie" | "uo" | "yö" | "ea" | "eä" |
|
||||||
|
"ia" | "iä" | "io" | "iö" | "ja" | "jä"), _ + "n"> =>
|
||||||
|
ukot ; --- to protect
|
||||||
|
<_ + ("a" | "o" | "u" | "y" | "ä" | "ö"), _ + "n", _ + ("a" | "ä")> =>
|
||||||
|
dSilakka ukko ukon ukkoja ; -- auto,auton
|
||||||
|
<_ + "mpi", _ + ("emman" | "emmän")> => dSuurempi ukko ;
|
||||||
|
<_ + "in", _ + ("imman" | "immän")> => dSuurin ukko ;
|
||||||
|
<terv + "e", terv + "een"> =>
|
||||||
|
dRae ukko ukon ;
|
||||||
|
<taiv + ("as" | "äs"), taiv + ("aan" | "ään")> =>
|
||||||
|
dRae ukko ukon ;
|
||||||
|
<nukk + "e", nuk + "een"> => dRae ukko ukon ;
|
||||||
|
<arp + "i", arv + "en"> => dArpi ukko ukon ;
|
||||||
|
<_ + ("us" | "ys"), _ + "den"> => dLujuus ukko ;
|
||||||
|
<_, _ + ":n"> => dSDP ukko ;
|
||||||
|
<_, _ + "n"> => ukot ;
|
||||||
|
_ =>
|
||||||
|
Predef.error (["second argument should end in n, not"] ++ ukon)
|
||||||
|
} ;
|
||||||
|
|
||||||
|
nForms4 : (_,_,_,_ : Str) -> NForms = \ukko,ukon,ukkoja,ukkoa ->
|
||||||
|
let
|
||||||
|
ukot = nForms3 ukko ukon ukkoja ;
|
||||||
|
in
|
||||||
|
case <ukko,ukon,ukkoja,ukkoa> of {
|
||||||
|
<_,_ + "n", _ + ("a" | "ä"), _ + ("a" | "ä")> =>
|
||||||
|
table {
|
||||||
|
2 => ukkoa ;
|
||||||
|
n => ukot ! n
|
||||||
|
} ;
|
||||||
|
_ =>
|
||||||
|
Predef.error
|
||||||
|
(["last arguments should end in n, a/ä, and a/ä, not"] ++
|
||||||
|
ukon ++ ukkoja ++ ukkoa)
|
||||||
|
} ;
|
||||||
|
|
||||||
|
mkN2 = overload {
|
||||||
|
mkN2 : N -> N2 = \n -> mmkN2 n (casePrep genitive) ;
|
||||||
|
mkN2 : N -> Prep -> N2 = mmkN2
|
||||||
} ;
|
} ;
|
||||||
nMeri meri =
|
|
||||||
let a = vowelHarmony meri in
|
|
||||||
sgpartN (reg2N meri (meri + a)) (init meri + "ta") ;
|
|
||||||
|
|
||||||
compN = \s,n -> {s = \\c => s ++ n.s ! c ; g = n.g ; lock_N = <>} ;
|
mmkN2 : N -> Prep -> N2 = \n,c -> n ** {c2 = c ; lock_N2 = <>} ;
|
||||||
|
mkN3 = \n,c,e -> n ** {c2 = c ; c3 = e ; lock_N3 = <>} ;
|
||||||
|
|
||||||
makeNP : N -> Number -> CatFin.NP ;
|
|
||||||
makeNP noun num = {
|
|
||||||
s = \\c => noun.s ! NCase num (npform2case num c) ;
|
|
||||||
a = agrP3 num ;
|
|
||||||
isPron = False ;
|
|
||||||
lock_NP = <>
|
|
||||||
} ;
|
|
||||||
|
|
||||||
mkPN = overload {
|
mkPN = overload {
|
||||||
mkPN : Str -> PN = regPN ;
|
mkPN : Str -> PN = \s -> {s = \\c => (mk1N s).s ! NCase Sg c ; lock_PN = <>} ;
|
||||||
mkPN : N -> PN = mmkPN
|
mkPN : N -> PN = \s -> {s = \\c => s.s ! NCase Sg c ; lock_PN = <>} ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
-- adjectives
|
||||||
|
|
||||||
mkA = overload {
|
mkA = overload {
|
||||||
mkA : Str -> A = regA ;
|
mkA : Str -> A = \s -> noun2adjDeg (mk1N s) ** {lock_A = <>} ;
|
||||||
mkA : N -> A = mk1A ;
|
mkA : N -> A = \n -> noun2adjDeg n ** {lock_A = <>} ;
|
||||||
mkA : N -> (kivempaa,kivinta : Str) -> A = mkADeg
|
mkA : N -> (kivempaa,kivinta : Str) -> A = regAdjective ;
|
||||||
|
-- mkA : (hyva,parempi,paras : N) -> (hyvin,paremmin,parhaiten : Str) -> A ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
mk1A = \x -> {s = \\_ => (noun2adj x).s ; lock_A = <>} ;
|
-- auxiliaries
|
||||||
---- mkADeg (noun2adj x).s ...
|
mkAdjective : (_,_,_ : Adj) -> A = \hyva,parempi,paras ->
|
||||||
|
{s = table {
|
||||||
|
Posit => hyva.s ;
|
||||||
|
Compar => parempi.s ;
|
||||||
|
Superl => paras.s
|
||||||
|
} ;
|
||||||
|
lock_A = <>
|
||||||
|
} ;
|
||||||
|
regAdjective : Noun -> Str -> Str -> A = \kiva, kivempi, kivin ->
|
||||||
|
mkAdjective
|
||||||
|
(noun2adj kiva)
|
||||||
|
(noun2adjComp False (nForms2N (dSuurempi kivempi)))
|
||||||
|
(noun2adjComp False (nForms2N (dSuurin kivin))) ;
|
||||||
|
noun2adjDeg : Noun -> Adjective = \suuri ->
|
||||||
|
regAdjective
|
||||||
|
suuri
|
||||||
|
(init (suuri.s ! NCase Sg Gen) + "mpi") ---- to check
|
||||||
|
(init (suuri.s ! NCase Pl Part) + "n") ; ----
|
||||||
|
|
||||||
mkA2 = \x,c -> x ** {c2 = c ; lock_A2 = <>} ;
|
|
||||||
mkADeg x kivempi kivin =
|
|
||||||
|
|
||||||
|
-- verbs
|
||||||
|
|
||||||
|
mk1V : Str -> V = \s -> vforms2V (vForms1 s) ** {sc = NPCase Nom ; lock_V = <>} ;
|
||||||
|
mk2V : (_,_ : Str) -> V = \s,t -> vforms2V (vForms2 s t) ** {sc = NPCase Nom ; lock_V = <>} ;
|
||||||
|
|
||||||
|
mk12V : (
|
||||||
|
huutaa,huudan,huutaa,huutavat,huutakaa,huudetaan,
|
||||||
|
huusin,huusi,huusisi,huutanut,huudettu,huutanee : Str) -> V =
|
||||||
|
\a,b,c,d,e,f,g,h,i,j,k,l ->
|
||||||
|
vforms2V (vForms12 a b c d e f g h i j k l) ** {sc = NPCase Nom ; lock_V = <>} ;
|
||||||
|
|
||||||
|
vForms1 : Str -> VForms = \ottaa ->
|
||||||
let
|
let
|
||||||
a = last (x.s ! ((NCase Sg Part))) ; ---- gives "kivinta"
|
a = last ottaa ;
|
||||||
kivempaa = init kivempi + a + a ;
|
otta = init ottaa ;
|
||||||
kivinta = kivin + "t" + a
|
ott = init otta ;
|
||||||
|
ots = init ott + "s" ;
|
||||||
|
ota = weakGrade otta ;
|
||||||
|
otin = init (strongGrade (init ott)) + "elin" ;
|
||||||
|
ot = init ota ;
|
||||||
in
|
in
|
||||||
regAdjective x kivempaa kivinta ** {lock_A = <>} ;
|
case ottaa of {
|
||||||
|
_ + ("e" | "i" | "o" | "u" | "y" | "ö") + ("a" | "ä") =>
|
||||||
|
cHukkua ottaa (ota + "n") ;
|
||||||
|
_ + ("l" | "n" | "r") + ("taa" | "tää") =>
|
||||||
|
cOttaa ottaa (ota + "n") (ots + "in") (ots + "i") ;
|
||||||
|
("" | C_) + ("a" | "e" | "i" | "o" | "u") + C_ + _ +
|
||||||
|
("a" | "e" | "i" | "o" | "u") + _ + "aa" =>
|
||||||
|
cOttaa ottaa (ota + "n") (ot + "in") (ott + "i") ;
|
||||||
|
("" | C_) + ("a" | "e" | "i") + _ + "aa" =>
|
||||||
|
cOttaa ottaa (ota + "n") (ot + "oin") (ott + "oi") ;
|
||||||
|
_ + ("aa" | "ää") =>
|
||||||
|
cOttaa ottaa (ota + "n") (ot + "in") (ott + "i") ;
|
||||||
|
_ + ("ella" | "ellä") =>
|
||||||
|
cKuunnella ottaa otin ;
|
||||||
|
_ + ("osta" | "östä") =>
|
||||||
|
cJuosta ottaa (init ott + "ksen") ;
|
||||||
|
_ + ("st" | "nn" | "ll" | "rr") + ("a" | "ä") =>
|
||||||
|
cJuosta ottaa (ott + "en") ;
|
||||||
|
_ + ("ita" | "itä") =>
|
||||||
|
cHarkita ottaa ;
|
||||||
|
_ + ("eta" | "etä" | "ota" | "ata" | "uta" | "ytä" | "ätä" | "ötä") =>
|
||||||
|
cPudota ottaa (strongGrade ott + "si") ;
|
||||||
|
_ + ("da" | "dä") =>
|
||||||
|
cJuoda ottaa ;
|
||||||
|
_ => Predef.error (["expected infinitive, found"] ++ ottaa)
|
||||||
|
} ;
|
||||||
|
|
||||||
regA suuri =
|
vForms2 : (_,_ : Str) -> VForms = \huutaa,huusi ->
|
||||||
let suur = regN suuri in
|
let
|
||||||
mkADeg
|
huuda = weakGrade (init huutaa) ;
|
||||||
suur
|
huusin = weakGrade huusi + "n" ;
|
||||||
(init (suur.s ! NCase Sg Gen) + "mpi")
|
autoin = weakGrade (init huusi) + "in" ;
|
||||||
(init (suur.s ! NCase Pl Ess)) ;
|
in
|
||||||
|
case <huutaa,huusi> of {
|
||||||
|
<_ + ("taa" | "tää"), _ + ("oi" | "öi")> =>
|
||||||
|
cOttaa huutaa (huuda + "n") autoin huusi ;
|
||||||
|
<_ + ("aa" | "ää"), _ + "i"> =>
|
||||||
|
cOttaa huutaa (huuda + "n") huusin huusi ;
|
||||||
|
<_ + ("eta" | "etä"), _ + "eni"> =>
|
||||||
|
cValjeta huutaa huusi ;
|
||||||
|
<_ + ("sta" | "stä"), _ + "si"> =>
|
||||||
|
vForms1 huutaa ; -- pestä, halkaista
|
||||||
|
<_ + ("ta" | "tä"), _ + "si"> =>
|
||||||
|
cPudota huutaa huusi ;
|
||||||
|
<_ + ("lla" | "llä"), _ + "li"> =>
|
||||||
|
cKuunnella huutaa huusin ;
|
||||||
|
_ => vForms1 huutaa
|
||||||
|
} ;
|
||||||
|
|
||||||
regADeg = regA ; -- for bw compat
|
|
||||||
|
|
||||||
mk12V a b c d e f g h i j k l = mkVerb a b c d e f g h i j k l **
|
|
||||||
{sc = NPCase Nom ; lock_V = <>} ;
|
|
||||||
|
|
||||||
mkV = overload {
|
|
||||||
mkV : (soutaa : Str) -> V = regV ;
|
|
||||||
mkV : (soutaa,souti : Str) -> V = reg2V ;
|
|
||||||
mkV : (soutaa,soudan,souti : Str) -> V = reg3V ;
|
|
||||||
mkV : (tulla,tulee,tulen,tulevat,tulkaa,tullaan,
|
|
||||||
tuli,tulin,tulisi,tullut,tultu,tullun : Str) -> V = mk12V ;
|
|
||||||
mkV : V -> Case -> V = subjcaseV
|
|
||||||
} ;
|
|
||||||
|
|
||||||
regV soutaa = v2v (regVerbH soutaa) ** {sc = NPCase Nom ; lock_V = <>} ;
|
|
||||||
|
|
||||||
reg2V : (soutaa,souti : Str) -> V = \soutaa,souti ->
|
|
||||||
v2v (reg2VerbH soutaa souti) ** {sc = NPCase Nom ; lock_V = <>} ;
|
|
||||||
|
|
||||||
reg3V soutaa soudan souti =
|
|
||||||
v2v (reg3VerbH soutaa soudan souti) ** {sc = NPCase Nom ; lock_V = <>} ;
|
|
||||||
|
|
||||||
subjcaseV v c = {s = v.s ; sc = NPCase c ; lock_V = v.lock_V} ;
|
|
||||||
|
|
||||||
vValua v = v2v (vSanoa v) ** {sc = NPCase Nom ; lock_V = <>} ;
|
|
||||||
vKattaa v u = v2v (vOttaa v u) ** {sc = NPCase Nom ; lock_V = <>} ;
|
|
||||||
vOstaa v = v2v (vPoistaa v) ** {sc = NPCase Nom ; lock_V = <>} ;
|
|
||||||
vNousta v u = v2v (vJuosta v u [] []) ** {sc = NPCase Nom ; lock_V = <>} ; -----
|
|
||||||
vTuoda v = v2v (vJuoda v []) ** {sc = NPCase Nom ; lock_V = <>} ; -----
|
|
||||||
caseV c v = {s = v.s ; sc = NPCase c ; lock_V = <>} ;
|
caseV c v = {s = v.s ; sc = NPCase c ; lock_V = <>} ;
|
||||||
|
|
||||||
vOlla = verbOlla ** {sc = NPCase Nom ; lock_V = <>} ;
|
vOlla = verbOlla ** {sc = NPCase Nom ; lock_V = <>} ;
|
||||||
|
|
||||||
vHuoltaa : (_,_,_,_ : Str) -> Verb = \ottaa,otan,otti,otin ->
|
mk2V2 : V -> Prep -> V2 = \v,c -> v ** {c2 = c ; lock_V2 = <>} ;
|
||||||
v2v (MorphoFin.vHuoltaa ottaa otan otti otin) ** {sc = NPCase Nom ; lock_V = <>} ;
|
caseV2 : V -> Case -> V2 = \v,c -> mk2V2 v (casePrep c) ;
|
||||||
|
|
||||||
|
|
||||||
mk2V2 = \v,c -> v ** {c2 = c ; lock_V2 = <>} ;
|
|
||||||
caseV2 = \v,c -> mk2V2 v (casePrep c) ;
|
|
||||||
dirV2 v = mk2V2 v accPrep ;
|
dirV2 v = mk2V2 v accPrep ;
|
||||||
|
|
||||||
mkAdv : Str -> Adv = \s -> {s = s ; lock_Adv = <>} ;
|
mkAdv : Str -> Adv = \s -> {s = s ; lock_Adv = <>} ;
|
||||||
|
|
||||||
|
mkV2 = overload {
|
||||||
|
mkV2 : Str -> V2 = \s -> dirV2 (mk1V s) ;
|
||||||
|
mkV2 : V -> V2 = dirV2 ;
|
||||||
|
mkV2 : V -> Case -> V2 = caseV2 ;
|
||||||
|
mkV2 : V -> Prep -> V2 = mk2V2 ;
|
||||||
|
} ;
|
||||||
|
|
||||||
|
mk2V2 : V -> Prep -> V2 ;
|
||||||
|
caseV2 : V -> Case -> V2 ;
|
||||||
|
dirV2 : V -> V2 ;
|
||||||
|
|
||||||
mkV3 v p q = v ** {c2 = p ; c3 = q ; lock_V3 = <>} ;
|
mkV3 v p q = v ** {c2 = p ; c3 = q ; lock_V3 = <>} ;
|
||||||
dirV3 v p = mkV3 v accPrep (casePrep p) ;
|
dirV3 v p = mkV3 v accPrep (casePrep p) ;
|
||||||
@@ -578,62 +558,15 @@ reg3N = \vesi,veden,vesi
|
|||||||
A2V : Type = A2 ;
|
A2V : Type = A2 ;
|
||||||
|
|
||||||
mkV0 v = v ** {lock_V = <>} ;
|
mkV0 v = v ** {lock_V = <>} ;
|
||||||
mkV2S v p = mk2V2 v p ** {lock_V2 = <>} ;
|
-- mkV2S v p = mk2V2 v p ** {lock_V2 = <>} ;
|
||||||
mkV2V v p = mk2V2 v p ** {lock_V2 = <>} ;
|
-- mkV2V v p = mk2V2 v p ** {lock_V2 = <>} ;
|
||||||
mkVA v p = v ** {c2 = p ; lock_VA = <>} ;
|
mkVA v p = v ** {c2 = p ; lock_VA = <>} ;
|
||||||
mkV2A v p q = v ** {c2 = p ; c3 = q ; lock_V2A = <>} ;
|
mkV2A v p q = v ** {c2 = p ; c3 = q ; lock_V2A = <>} ;
|
||||||
mkV2Q v p = mk2V2 v p ** {lock_V2 = <>} ;
|
-- mkV2Q v p = mk2V2 v p ** {lock_V2 = <>} ;
|
||||||
|
|
||||||
mkAS v = v ** {lock_A = <>} ;
|
mkAS v = v ** {lock_A = <>} ;
|
||||||
mkA2S v p = mkA2 v p ** {lock_A = <>} ;
|
mkA2S v p = mkA2 v p ** {lock_A = <>} ;
|
||||||
mkAV v = v ** {lock_A = <>} ;
|
mkAV v = v ** {lock_A = <>} ;
|
||||||
mkA2V v p = mkA2 v p ** {lock_A2 = <>} ;
|
mkA2V v p = mkA2 v p ** {lock_A2 = <>} ;
|
||||||
|
|
||||||
|
|
||||||
--- old stuff
|
|
||||||
|
|
||||||
reg2N : (savi,savia : Str) -> N ;
|
|
||||||
reg3N : (vesi,veden,vesiä : Str) -> N ;
|
|
||||||
|
|
||||||
mk10N: (talo, talon, talona, taloa, taloon,
|
|
||||||
taloina,taloissa,talojen,taloja,taloihin : Str) -> N ;
|
|
||||||
|
|
||||||
regN : (talo : Str) -> N ;
|
|
||||||
|
|
||||||
mmkN2 : N -> Prep -> N2 = \n,c -> n ** {c2 = c ; lock_N2 = <>} ;
|
|
||||||
mkN3 = \n,c,e -> n ** {c2 = c ; c3 = e ; lock_N3 = <>} ;
|
|
||||||
genN2 = \n -> mmkN2 n (casePrep genitive) ;
|
|
||||||
regPN m = mmkPN (regN m) ;
|
|
||||||
mmkPN : N -> PN = \n -> mkProperName n ** {lock_PN = <>} ;
|
|
||||||
|
|
||||||
genN2 : N -> N2 ;
|
|
||||||
|
|
||||||
|
|
||||||
mk1A : N -> A ;
|
|
||||||
mkADeg : (kiva : N) -> (kivempaa,kivinta : Str) -> A ;
|
|
||||||
regA : (punainen : Str) -> A ;
|
|
||||||
|
|
||||||
mk12V : (tulla,tulee,tulen,tulevat,tulkaa,tullaan,
|
|
||||||
tuli,tulin,tulisi,tullut,tultu,tullun : Str) -> V ;
|
|
||||||
|
|
||||||
regV : (soutaa : Str) -> V ;
|
|
||||||
reg2V : (soutaa,souti : Str) -> V ;
|
|
||||||
reg3V : (soutaa,soudan,souti : Str) -> V ;
|
|
||||||
|
|
||||||
subjcaseV : V -> Case -> V ;
|
|
||||||
|
|
||||||
regPN : Str -> PN ;
|
|
||||||
|
|
||||||
mkV2 = overload {
|
|
||||||
mkV2 : Str -> V2 = \s -> dirV2 (regV s) ;
|
|
||||||
mkV2 : V -> V2 = dirV2 ;
|
|
||||||
mkV2 : V -> Case -> V2 = caseV2 ;
|
|
||||||
mkV2 : V -> Prep -> V2 = mk2V2 ;
|
|
||||||
} ;
|
|
||||||
|
|
||||||
dirV2 : V -> V2 ;
|
|
||||||
mk2V2 : V -> Prep -> V2 ;
|
|
||||||
caseV2 : V -> Case -> V2 ;
|
|
||||||
dirV2 : V -> V2 ;
|
|
||||||
|
|
||||||
} ;
|
} ;
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ concrete StructuralFin of Structural = CatFin **
|
|||||||
|
|
||||||
all_Predet = {s = \\n,c =>
|
all_Predet = {s = \\n,c =>
|
||||||
let
|
let
|
||||||
kaiket = caseTable n (nhn (sKorpi "kaikki" "kaiken" "kaikkena"))
|
kaiket = caseTable n ((mkN "kaikki" "kaiken" "kaikkena"))
|
||||||
in
|
in
|
||||||
case npform2case n c of {
|
case npform2case n c of {
|
||||||
Nom => "kaikki" ;
|
Nom => "kaikki" ;
|
||||||
@@ -28,17 +28,17 @@ concrete StructuralFin of Structural = CatFin **
|
|||||||
but_PConj = ss "mutta" ;
|
but_PConj = ss "mutta" ;
|
||||||
by8agent_Prep = postGenPrep "toimesta" ;
|
by8agent_Prep = postGenPrep "toimesta" ;
|
||||||
by8means_Prep = casePrep adessive ;
|
by8means_Prep = casePrep adessive ;
|
||||||
can8know_VV = reg2V "osata" "osasi" ;
|
can8know_VV = mkV "osata" "osasi" ;
|
||||||
can_VV = reg2V "voida" "voi" ;
|
can_VV = mkV "voida" "voi" ;
|
||||||
during_Prep = postGenPrep "aikana" ;
|
during_Prep = postGenPrep "aikana" ;
|
||||||
either7or_DConj = sd2 "joko" "tai" ** {n = Sg} ;
|
either7or_DConj = sd2 "joko" "tai" ** {n = Sg} ;
|
||||||
everybody_NP = makeNP (regN "jokainen") Sg ;
|
everybody_NP = makeNP (mkN "jokainen") Sg ;
|
||||||
every_Det = mkDet Sg (regN "jokainen") ;
|
every_Det = mkDet Sg (mkN "jokainen") ;
|
||||||
everything_NP = makeNP ((nhn (sKorpi "kaikki" "kaiken" "kaikkena")) **
|
everything_NP = makeNP (((mkN "kaikki" "kaiken" "kaikkena")) **
|
||||||
{lock_N = <>}) Sg ;
|
{lock_N = <>}) Sg ;
|
||||||
everywhere_Adv = ss "kaikkialla" ;
|
everywhere_Adv = ss "kaikkialla" ;
|
||||||
few_Det = mkDet Sg (regN "harva") ;
|
few_Det = mkDet Sg (mkN "harva") ;
|
||||||
--- first_Ord = {s = \\n,c => (regN "ensimmäinen").s ! NCase n c} ;
|
--- first_Ord = {s = \\n,c => (mkN "ensimmäinen").s ! NCase n c} ;
|
||||||
for_Prep = casePrep allative ;
|
for_Prep = casePrep allative ;
|
||||||
from_Prep = casePrep elative ;
|
from_Prep = casePrep elative ;
|
||||||
he_Pron = mkPronoun "hän" "hänen" "häntä" "hänenä" "häneen" Sg P3 ;
|
he_Pron = mkPronoun "hän" "hänen" "häntä" "hänenä" "häneen" Sg P3 ;
|
||||||
@@ -47,7 +47,7 @@ concrete StructuralFin of Structural = CatFin **
|
|||||||
here7from_Adv = ss "täältä" ;
|
here7from_Adv = ss "täältä" ;
|
||||||
how_IAdv = ss "miten" ;
|
how_IAdv = ss "miten" ;
|
||||||
how8many_IDet =
|
how8many_IDet =
|
||||||
{s = \\c => "kuinka" ++ (reg2N "moni" "monia").s ! NCase Sg c ; n = Sg} ;
|
{s = \\c => "kuinka" ++ (mkN "moni" "monia").s ! NCase Sg c ; n = Sg} ;
|
||||||
if_Subj = ss "jos" ;
|
if_Subj = ss "jos" ;
|
||||||
in8front_Prep = postGenPrep "edessä" ;
|
in8front_Prep = postGenPrep "edessä" ;
|
||||||
i_Pron = mkPronoun "minä" "minun" "minua" "minuna" "minuun" Sg P1 ;
|
i_Pron = mkPronoun "minä" "minun" "minua" "minuna" "minuun" Sg P1 ;
|
||||||
@@ -58,11 +58,11 @@ concrete StructuralFin of Structural = CatFin **
|
|||||||
isPron = False
|
isPron = False
|
||||||
} ;
|
} ;
|
||||||
less_CAdv = ss "vähemmän" ;
|
less_CAdv = ss "vähemmän" ;
|
||||||
many_Det = mkDet Sg (reg2N "moni" "monia") ;
|
many_Det = mkDet Sg (mkN "moni" "monia") ;
|
||||||
more_CAdv = ss "enemmän" ;
|
more_CAdv = ss "enemmän" ;
|
||||||
most_Predet = {s = \\n,c => (nhn (sSuurin "useinta")).s ! NCase n (npform2case n c)} ;
|
most_Predet = {s = \\n,c => (nForms2N (dSuurin "useinta")).s ! NCase n (npform2case n c)} ;
|
||||||
much_Det = mkDet Sg {s = \\_ => "paljon"} ;
|
much_Det = mkDet Sg {s = \\_ => "paljon"} ;
|
||||||
must_VV = subjcaseV (regV "täytyä") genitive ;
|
must_VV = caseV genitive (mkV "täytyä") ;
|
||||||
no_Phr = ss "ei" ;
|
no_Phr = ss "ei" ;
|
||||||
on_Prep = casePrep adessive ;
|
on_Prep = casePrep adessive ;
|
||||||
--- one_Quant = mkDet Sg DEPREC
|
--- one_Quant = mkDet Sg DEPREC
|
||||||
@@ -140,7 +140,7 @@ concrete StructuralFin of Structural = CatFin **
|
|||||||
to_Prep = casePrep illative ; --- allative
|
to_Prep = casePrep illative ; --- allative
|
||||||
under_Prep = postGenPrep "alla" ;
|
under_Prep = postGenPrep "alla" ;
|
||||||
very_AdA = ss "erittäin" ;
|
very_AdA = ss "erittäin" ;
|
||||||
want_VV = regV "tahtoa" ;
|
want_VV = mkV "tahtoa" ;
|
||||||
we_Pron = mkPronoun "me" "meidän" "meitä" "meinä" "meihin" Pl P1 ;
|
we_Pron = mkPronoun "me" "meidän" "meitä" "meinä" "meihin" Pl P1 ;
|
||||||
whatPl_IP = {
|
whatPl_IP = {
|
||||||
s = table {NPAcc => "mitkä" ; c => mikaInt ! Pl ! npform2case Pl c} ;
|
s = table {NPAcc => "mitkä" ; c => mikaInt ! Pl ! npform2case Pl c} ;
|
||||||
@@ -181,8 +181,8 @@ concrete StructuralFin of Structural = CatFin **
|
|||||||
oper
|
oper
|
||||||
jokuPron : MorphoFin.Number => (MorphoFin.Case) => Str =
|
jokuPron : MorphoFin.Number => (MorphoFin.Case) => Str =
|
||||||
let
|
let
|
||||||
ku = nhn (sPuu "ku") ;
|
ku = mkN "ku" ;
|
||||||
kui = nhn (sPuu "kuu")
|
kui = mkN "kuu"
|
||||||
in
|
in
|
||||||
table {
|
table {
|
||||||
Sg => table {
|
Sg => table {
|
||||||
@@ -211,7 +211,7 @@ oper
|
|||||||
|
|
||||||
mikaInt : MorphoFin.Number => (MorphoFin.Case) => Str =
|
mikaInt : MorphoFin.Number => (MorphoFin.Case) => Str =
|
||||||
let {
|
let {
|
||||||
mi = nhn (sSuo "mi")
|
mi = mkN "mi"
|
||||||
} in
|
} in
|
||||||
table {
|
table {
|
||||||
Sg => table {
|
Sg => table {
|
||||||
@@ -228,8 +228,8 @@ oper
|
|||||||
|
|
||||||
kukaInt : MorphoFin.Number => (MorphoFin.Case) => Str =
|
kukaInt : MorphoFin.Number => (MorphoFin.Case) => Str =
|
||||||
let {
|
let {
|
||||||
ku = nhn (sRae "kuka" "kenenä") ;
|
ku = mkN "kuka" "keitä" ; -----
|
||||||
ket = nhn (sRae "kuka" "keinä")} in
|
ket = mkN "kuka" "keitä"} in
|
||||||
table {
|
table {
|
||||||
Sg => table {
|
Sg => table {
|
||||||
Nom => "kuka" ;
|
Nom => "kuka" ;
|
||||||
@@ -301,5 +301,16 @@ oper
|
|||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|
||||||
|
oper
|
||||||
|
makeNP : N -> Number -> CatFin.NP ;
|
||||||
|
makeNP noun num = {
|
||||||
|
s = \\c => noun.s ! NCase num (npform2case num c) ;
|
||||||
|
a = agrP3 num ;
|
||||||
|
isPron = False ;
|
||||||
|
lock_NP = <>
|
||||||
|
} ;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -103,7 +103,8 @@ renameIdentTerm env@(act,imps) t =
|
|||||||
[] -> alt c ("constant not found:" +++ prt c)
|
[] -> alt c ("constant not found:" +++ prt c)
|
||||||
fs -> case nub [f c | f <- fs] of
|
fs -> case nub [f c | f <- fs] of
|
||||||
[tr] -> return tr
|
[tr] -> return tr
|
||||||
ts -> return $ Strs $ (cnIC "#conflict") : reverse ts
|
ts@(t:_) -> trace ("WARNING: conflict" +++ unwords (map prt ts)) (return t)
|
||||||
|
---- ts -> return $ Strs $ (cnIC "#conflict") : reverse ts
|
||||||
-- a warning will be generated in CheckGrammar, and the head returned
|
-- a warning will be generated in CheckGrammar, and the head returned
|
||||||
-- in next V:
|
-- in next V:
|
||||||
-- Bad $ "conflicting imports:" +++ unwords (map prt ts)
|
-- Bad $ "conflicting imports:" +++ unwords (map prt ts)
|
||||||
|
|||||||
Reference in New Issue
Block a user