mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-23 19:42:50 -06:00
work on Finnish
This commit is contained in:
@@ -79,7 +79,7 @@ lin
|
|||||||
Swell = PresV swell_V ;
|
Swell = PresV swell_V ;
|
||||||
Burn = PresV burn_V ;
|
Burn = PresV burn_V ;
|
||||||
|
|
||||||
Give = PresV3 (dirV3 give_V "to") ;
|
---- Give = PresV3 (dirV3 give_V "to") ;
|
||||||
|
|
||||||
-- Say = ;
|
-- Say = ;
|
||||||
|
|
||||||
|
|||||||
@@ -10,18 +10,18 @@ flags
|
|||||||
lin
|
lin
|
||||||
|
|
||||||
airplane_N = regN "lentokone" ;
|
airplane_N = regN "lentokone" ;
|
||||||
---- answer_V2S = mkV2S (regV "answer") "to" ;
|
answer_V2S = mkV2S (regV "vastata") allative [] [] ;
|
||||||
apartment_N = regN "asunto" ;
|
apartment_N = regN "asunto" ;
|
||||||
apple_N = regN "omena" ; --- omenia, not omenoita
|
apple_N = regN "omena" ; --- omenia, not omenoita
|
||||||
art_N = regN "taide" ;
|
art_N = regN "taide" ;
|
||||||
---- ask_V2Q = mkV2Q (regV "ask") [] ;
|
ask_V2Q = mkV2Q (regV "kysyä") ablative [] [] ;
|
||||||
baby_N = regN "vauva" ;
|
baby_N = regN "vauva" ;
|
||||||
bad_ADeg = mkADeg (regN "paha") "pahempi" "pahin" ;
|
bad_ADeg = mkADeg (regN "paha") "pahempi" "pahin" ;
|
||||||
bank_N = regN "pankki" ;
|
bank_N = regN "pankki" ;
|
||||||
beautiful_ADeg = mkADeg (regN "kaunis") "kauniimpi" "kaunein" ;
|
beautiful_ADeg = mkADeg (regN "kaunis") "kauniimpi" "kaunein" ;
|
||||||
---- become_VA = mkVA (irregV "become" "became" "become") ;
|
become_VA = mkVA (regV "tulla") translative ;
|
||||||
beer_N = regN "olut" ;
|
beer_N = regN "olut" ;
|
||||||
---- beg_V2V = mkV2V (regDuplV "beg") [] "to" ;
|
beg_V2V = mkV2V (reg2V "pyytää" "pyysi") partitive inf_illative ;
|
||||||
big_ADeg = mkADeg (reg2N "suuri" "suuria") "suurempi" "suurin" ;
|
big_ADeg = mkADeg (reg2N "suuri" "suuria") "suurempi" "suurin" ;
|
||||||
bike_N = nLukko "polkupyörä" ; --- for correct vowel harmony
|
bike_N = nLukko "polkupyörä" ; --- for correct vowel harmony
|
||||||
bird_N = regN "lintu" ;
|
bird_N = regN "lintu" ;
|
||||||
@@ -37,7 +37,7 @@ lin
|
|||||||
broad_ADeg = mkADeg (regN "leveä") "leveämpi" "levein" ;
|
broad_ADeg = mkADeg (regN "leveä") "leveämpi" "levein" ;
|
||||||
brother_N2 = genN2 (reg3N "veli" "veljen" "veljiä") ; ---- errors in Pl
|
brother_N2 = genN2 (reg3N "veli" "veljen" "veljiä") ; ---- errors in Pl
|
||||||
brown_ADeg = mkADeg (regN "ruskea") "ruskeampi" "ruskein" ;
|
brown_ADeg = mkADeg (regN "ruskea") "ruskeampi" "ruskein" ;
|
||||||
--3 butter_N = reg3N "voi" "voin" "voita" ;
|
butter_N = reg3N "voi" "voin" "voita" ; ---- errors in Part
|
||||||
buy_V2 = dirV2 (regV "ostaa") ;
|
buy_V2 = dirV2 (regV "ostaa") ;
|
||||||
camera_N = regN "kamera" ;
|
camera_N = regN "kamera" ;
|
||||||
cap_N = regN "lakki" ;
|
cap_N = regN "lakki" ;
|
||||||
@@ -63,18 +63,18 @@ lin
|
|||||||
cow_N = regN "lehmä" ;
|
cow_N = regN "lehmä" ;
|
||||||
die_V = regV "kuolla" ;
|
die_V = regV "kuolla" ;
|
||||||
dirty_ADeg = mkADeg (regN "likainen") "likaisempi" "likaisin" ;
|
dirty_ADeg = mkADeg (regN "likainen") "likaisempi" "likaisin" ;
|
||||||
---- distance_N3 = mkN3 (regN "distance") "from" "to" ;
|
distance_N3 = mkN3 (regN "etäisyys") elative illative ;
|
||||||
--3 doctor_N = reg3N "tohtori" "tohtorin" "tohtoreita" ;
|
doctor_N = reg2N "tohtori" "tohtoreita" ;
|
||||||
dog_N = regN "koira" ;
|
dog_N = regN "koira" ;
|
||||||
door_N = reg2N "ovi" "ovia" ;
|
door_N = reg2N "ovi" "ovia" ;
|
||||||
drink_V2 = dirV2 (regV "juoda") ;
|
drink_V2 = dirV2 (regV "juoda") ;
|
||||||
---- easy_A2V = mkA2V (regA "easy") "for" ;
|
easy_A2V = mkA2V (regN (mkA "helppo")) allative ;
|
||||||
eat_V2 = dirV2 (regV "syödä") ;
|
eat_V2 = dirV2 (regV "syödä") ;
|
||||||
empty_ADeg = mkADeg (regN "tyhjä") "tyhjempi" "tyhjin" ;
|
empty_ADeg = mkADeg (regN "tyhjä") "tyhjempi" "tyhjin" ;
|
||||||
enemy_N = regN "vihollinen" ;
|
enemy_N = regN "vihollinen" ;
|
||||||
factory_N = regN "tehdas" ;
|
factory_N = regN "tehdas" ;
|
||||||
father_N2 = genN2 (regN "isä") ;
|
father_N2 = genN2 (regN "isä") ;
|
||||||
---- fear_VS = mkVS (reg2V "pelätä" "pelkäsi") ;
|
fear_VS = mkVS (reg2V "pelätä" "pelkäsi") ;
|
||||||
find_V2 = dirV2 (reg2V "löytää" "löysi") ;
|
find_V2 = dirV2 (reg2V "löytää" "löysi") ;
|
||||||
fish_N = regN "kala" ;
|
fish_N = regN "kala" ;
|
||||||
floor_N = reg2N "lattia" "lattioita" ;
|
floor_N = reg2N "lattia" "lattioita" ;
|
||||||
@@ -82,7 +82,7 @@ lin
|
|||||||
fridge_N = regN "jääkaappi" ;
|
fridge_N = regN "jääkaappi" ;
|
||||||
friend_N = regN "ystävä" ;
|
friend_N = regN "ystävä" ;
|
||||||
fruit_N = regN "hedelmä" ;
|
fruit_N = regN "hedelmä" ;
|
||||||
---- fun_AV = mkAV (regA "fun") ;
|
fun_AV = mkAV (mkA (regN "hauska")) ;
|
||||||
garden_N = regN "puutarha" ;
|
garden_N = regN "puutarha" ;
|
||||||
girl_N = regN "tyttö" ;
|
girl_N = regN "tyttö" ;
|
||||||
glove_N = regN "käsine" ;
|
glove_N = regN "käsine" ;
|
||||||
@@ -96,7 +96,7 @@ lin
|
|||||||
have_V2 = dirV2 (regV "omistaa") ; ---- olla
|
have_V2 = dirV2 (regV "omistaa") ; ---- olla
|
||||||
hear_V2 = dirV2 (regV "kuulla") ;
|
hear_V2 = dirV2 (regV "kuulla") ;
|
||||||
hill_N = regN "kukkula" ;
|
hill_N = regN "kukkula" ;
|
||||||
---- hope_VS = mkVS (regV "toivoa") ;
|
hope_VS = mkVS (regV "toivoa") ;
|
||||||
horse_N = regN "hevonen" ;
|
horse_N = regN "hevonen" ;
|
||||||
hot_ADeg = mkADeg (regN "kuuma") "kuumempi" "kuumin" ;
|
hot_ADeg = mkADeg (regN "kuuma") "kuumempi" "kuumin" ;
|
||||||
house_N = regN "talo" ;
|
house_N = regN "talo" ;
|
||||||
@@ -134,8 +134,8 @@ lin
|
|||||||
oil_N = regN "öljy" ;
|
oil_N = regN "öljy" ;
|
||||||
old_ADeg = mkADeg (regN "vanha") "vanhempi" "vanhin" ;
|
old_ADeg = mkADeg (regN "vanha") "vanhempi" "vanhin" ;
|
||||||
open_V2 = dirV2 (regV "avata") ;
|
open_V2 = dirV2 (regV "avata") ;
|
||||||
---- paint_V2A = mkV2A (regV "maalata") [] ;
|
paint_V2A = mkV2A (regV "maalata") translative ;
|
||||||
--3 paper_N = reg3N "paperi" "paperin" "papereita" ;
|
paper_N = reg2N "paperi" "papereita" ;
|
||||||
peace_N = regN "rauha" ;
|
peace_N = regN "rauha" ;
|
||||||
pen_N = regN "kynä" ;
|
pen_N = regN "kynä" ;
|
||||||
planet_N = regN "planeetta" ;
|
planet_N = regN "planeetta" ;
|
||||||
@@ -143,29 +143,29 @@ lin
|
|||||||
play_V2 = dirV2 (regV "pelata") ; --- leikkiä, soittaa
|
play_V2 = dirV2 (regV "pelata") ; --- leikkiä, soittaa
|
||||||
policeman_N = regN "poliisi" ;
|
policeman_N = regN "poliisi" ;
|
||||||
priest_N = regN "pappi" ;
|
priest_N = regN "pappi" ;
|
||||||
---- probable_AS = mkAS (mkA (nNainen "todennäköistä")) ; --- for vowel harmony
|
probable_AS = mkAS (mkA (nNainen "todennäköistä")) ; --- for vowel harmony
|
||||||
---- queen_N = regN "kuningatar" ;
|
queen_N = regN "kuningatar" ;
|
||||||
--3 radio_N = reg3N "radio" "radion" "radioita" ;
|
radio_N = reg3N "radio" "radioita" ;
|
||||||
---- rain_V0 = mkV0 (vHuoltaa "sataa" "sadan" "satoi" "sadoin") ;
|
rain_V0 = mkV0 (vHuoltaa "sataa" "sadan" "satoi" "sadoin") ;
|
||||||
read_V2 = dirV2 (regV "lukea") ;
|
read_V2 = dirV2 (regV "lukea") ;
|
||||||
red_ADeg = regADeg "punainen" ;
|
red_ADeg = regADeg "punainen" ;
|
||||||
religion_N = regN "uskonto" ;
|
religion_N = regN "uskonto" ;
|
||||||
restaurant_N = regN "ravintola" ;
|
restaurant_N = regN "ravintola" ;
|
||||||
river_N = nArpi "joki" ;
|
river_N = nArpi "joki" ;
|
||||||
---- rock_N = regN "kallio" ;
|
rock_N = regN "kallio" "kallioita" ;
|
||||||
roof_N = regN "katto" ;
|
roof_N = regN "katto" ;
|
||||||
rubber_N = regN "kumi" ;
|
rubber_N = regN "kumi" ;
|
||||||
run_V = reg2V "juosta" "juoksi" ;
|
run_V = reg2V "juosta" "juoksi" ;
|
||||||
---- say_VS = mkVS (regV "sanoa") ;
|
say_VS = mkVS (regV "sanoa") ;
|
||||||
school_N = regN "koulu" ;
|
school_N = regN "koulu" ;
|
||||||
science_N = regN "tiede" ;
|
science_N = regN "tiede" ;
|
||||||
sea_N = reg2N "meri" "meriä" ;
|
sea_N = reg2N "meri" "meriä" ; ---- *merea
|
||||||
seek_V2 = dirV2 (regV "etsiä") ;
|
seek_V2 = dirV2 (regV "etsiä") ;
|
||||||
see_V2 = dirV2 (
|
see_V2 = dirV2 (
|
||||||
mkV "nähdä" "näkee" "näen" "näkevät" "nähkää" "nähdään"
|
mkV "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 = dirV3 (regV "myydä") allative ;
|
||||||
---- send_V3 = dirV3 (regV "lähettää") allative ;
|
send_V3 = dirV3 (regV "lähettää") allative ;
|
||||||
sheep_N = regN "lammas" ;
|
sheep_N = regN "lammas" ;
|
||||||
ship_N = regN "laiva" ;
|
ship_N = regN "laiva" ;
|
||||||
shirt_N = regN "paita" ;
|
shirt_N = regN "paita" ;
|
||||||
@@ -189,10 +189,10 @@ lin
|
|||||||
switch8off_V2 = dirV2 (regV "sammuttaa") ; ---
|
switch8off_V2 = dirV2 (regV "sammuttaa") ; ---
|
||||||
switch8on_V2 = dirV2 (regV "sytyttää") ; ---
|
switch8on_V2 = dirV2 (regV "sytyttää") ; ---
|
||||||
table_N = regN "pöytä" ;
|
table_N = regN "pöytä" ;
|
||||||
---- talk_V3 = mkV3 (regV "puhua") allative elative ;
|
talk_V3 = mkV3 (regV "puhua") allative elative ;
|
||||||
teacher_N = regN "opettaja" ;
|
teacher_N = regN "opettaja" ;
|
||||||
teach_V2 = dirV2 (regV "opettaa") ;
|
teach_V2 = dirV2 (regV "opettaa") ;
|
||||||
--3 television_N = reg2N "televisio" "telievisioita" ;
|
television_N = reg2N "televisio" "telievisioita" ;
|
||||||
thick_ADeg = regADeg "paksu" ;
|
thick_ADeg = regADeg "paksu" ;
|
||||||
thin_ADeg = regADeg "ohut" ;
|
thin_ADeg = regADeg "ohut" ;
|
||||||
train_N = regN "juna" ;
|
train_N = regN "juna" ;
|
||||||
@@ -218,7 +218,7 @@ lin
|
|||||||
wine_N = regN "viini" ;
|
wine_N = regN "viini" ;
|
||||||
win_V2 = dirV2 (regV "voittaa") ;
|
win_V2 = dirV2 (regV "voittaa") ;
|
||||||
woman_N = regN "nainen" ;
|
woman_N = regN "nainen" ;
|
||||||
--3 wonder_VQ = mkVQ (regV "ihmetellä") ;
|
wonder_VQ = mkVQ (regV "ihmetellä") ;
|
||||||
wood_N = regN "puu" ;
|
wood_N = regN "puu" ;
|
||||||
write_V2 = dirV2 (regV "kirjoittaa") ;
|
write_V2 = dirV2 (regV "kirjoittaa") ;
|
||||||
yellow_ADeg = regADeg "keltainen" ;
|
yellow_ADeg = regADeg "keltainen" ;
|
||||||
@@ -231,7 +231,7 @@ lin
|
|||||||
now_Adv = mkAdv "nyt" ;
|
now_Adv = mkAdv "nyt" ;
|
||||||
already_Adv = mkAdv "jo" ;
|
already_Adv = mkAdv "jo" ;
|
||||||
song_N = regN "laulu" ;
|
song_N = regN "laulu" ;
|
||||||
---- add_V3 = dirV3 (regV "lisätä") illative ;
|
add_V3 = dirV3 (regV "lisätä") illative ;
|
||||||
number_N = reg2N "numero" "numeroita" ;
|
number_N = reg2N "numero" "numeroita" ;
|
||||||
put_V2 = dirV2 (regV "panna") ;
|
put_V2 = dirV2 (regV "panna") ;
|
||||||
stop_V = regV "pysähtyä" ;
|
stop_V = regV "pysähtyä" ;
|
||||||
|
|||||||
@@ -196,6 +196,42 @@ oper
|
|||||||
(perunoi + ("t" + a))
|
(perunoi + ("t" + a))
|
||||||
(perunoi + "hin") ;
|
(perunoi + "hin") ;
|
||||||
|
|
||||||
|
sTohtori : Str -> CommonNoun = \tohtoria ->
|
||||||
|
let
|
||||||
|
a = last tohtoria ;
|
||||||
|
tohtori = init tohtoria ;
|
||||||
|
tohtorei = init tohtori + "ei" ;
|
||||||
|
in
|
||||||
|
mkSubst a
|
||||||
|
tohtori
|
||||||
|
tohtori
|
||||||
|
tohtori
|
||||||
|
tohtoria
|
||||||
|
(tohtori + "in")
|
||||||
|
tohtorei
|
||||||
|
tohtorei
|
||||||
|
(tohtorei + "den")
|
||||||
|
(tohtorei + "t" + a)
|
||||||
|
(tohtorei + "hin") ;
|
||||||
|
|
||||||
|
sRadio : Str -> CommonNoun = \radio ->
|
||||||
|
let
|
||||||
|
o = last radio ;
|
||||||
|
a = getHarmony o ;
|
||||||
|
radioi = radio + "i" ;
|
||||||
|
in
|
||||||
|
mkSubst a
|
||||||
|
radio
|
||||||
|
radio
|
||||||
|
radio
|
||||||
|
(radio + "t" + a)
|
||||||
|
(radio + o + "n")
|
||||||
|
radioi
|
||||||
|
radioi
|
||||||
|
(radioi + "den")
|
||||||
|
(radioi + "t" + a)
|
||||||
|
(radioi + "hin") ;
|
||||||
|
|
||||||
-- Surpraisingly, making the test for the partitive, this not only covers
|
-- Surpraisingly, making the test for the partitive, this not only covers
|
||||||
-- "rae", "perhe", "savuke", but also "rengas", "lyhyt" (except $Sg Illat$), etc.
|
-- "rae", "perhe", "savuke", but also "rengas", "lyhyt" (except $Sg Illat$), etc.
|
||||||
|
|
||||||
@@ -220,21 +256,21 @@ oper
|
|||||||
(rakei + "siin") ;
|
(rakei + "siin") ;
|
||||||
|
|
||||||
sSusi : (_,_,_ : Str) -> CommonNoun = \susi,suden,sutena ->
|
sSusi : (_,_,_ : Str) -> CommonNoun = \susi,suden,sutena ->
|
||||||
let {
|
let
|
||||||
a = Predef.dp 1 sutena ;
|
a = Predef.dp 1 sutena ;
|
||||||
sude = Predef.tk 1 suden ;
|
sude = Predef.tk 1 suden ;
|
||||||
sute = Predef.tk 2 sutena
|
sute = Predef.tk 2 sutena ;
|
||||||
}
|
sutt = Predef.tk 1 sute + "t"
|
||||||
in
|
in
|
||||||
mkSubst a
|
mkSubst a
|
||||||
susi
|
susi
|
||||||
sude
|
sude
|
||||||
sute
|
sute
|
||||||
(Predef.tk 1 sute + ("t" + a))
|
(sutt + a)
|
||||||
(sute + "en")
|
(sute + "en")
|
||||||
susi
|
susi
|
||||||
susi
|
susi
|
||||||
(susi + "en")
|
(sutt + "en") --- var susi + "en" bad with suuri
|
||||||
(susi + a)
|
(susi + a)
|
||||||
(susi + "in") ;
|
(susi + "in") ;
|
||||||
|
|
||||||
@@ -898,6 +934,7 @@ caseTable : Number -> CommonNoun -> Case => Str = \n,cn ->
|
|||||||
vHuoltaa : (_,_,_,_ : Str) -> Verb = \ottaa,otan,otti,otin ->
|
vHuoltaa : (_,_,_,_ : Str) -> Verb = \ottaa,otan,otti,otin ->
|
||||||
let {
|
let {
|
||||||
a = Predef.dp 1 ottaa ;
|
a = Predef.dp 1 ottaa ;
|
||||||
|
aa = a + a ;
|
||||||
u = case a of {"a" => "u" ; _ => "y"} ;
|
u = case a of {"a" => "u" ; _ => "y"} ;
|
||||||
ota = Predef.tk 1 otan ;
|
ota = Predef.tk 1 otan ;
|
||||||
otta = Predef.tk 1 ottaa ;
|
otta = Predef.tk 1 ottaa ;
|
||||||
@@ -907,9 +944,9 @@ caseTable : Number -> CommonNoun -> Case => Str = \n,cn ->
|
|||||||
ottaa
|
ottaa
|
||||||
ottaa
|
ottaa
|
||||||
otan
|
otan
|
||||||
(otta + (("v" + a) + "t"))
|
(otta + "v" + a + "t")
|
||||||
(otta + (("k" + a) + a))
|
(otta + "k" + aa)
|
||||||
(ote + ((("t" + a) + a) + "n"))
|
(ote + "t" + aa + "n")
|
||||||
otti
|
otti
|
||||||
otin
|
otin
|
||||||
(otta + "isi")
|
(otta + "isi")
|
||||||
@@ -967,9 +1004,11 @@ caseTable : Number -> CommonNoun -> Case => Str = \n,cn ->
|
|||||||
vJuosta : (_,_,_,_ : Str) -> Verb = \juosta,juoksen,juossut,juostu ->
|
vJuosta : (_,_,_,_ : Str) -> Verb = \juosta,juoksen,juossut,juostu ->
|
||||||
let
|
let
|
||||||
a = Predef.dp 1 juosta ;
|
a = Predef.dp 1 juosta ;
|
||||||
|
t = last (init juosta) ;
|
||||||
juokse = Predef.tk 1 juoksen ;
|
juokse = Predef.tk 1 juoksen ;
|
||||||
juoksi = Predef.tk 2 juoksen + "i" ;
|
juoksi = Predef.tk 2 juoksen + "i" ;
|
||||||
juos = Predef.tk 2 juosta
|
juos = Predef.tk 2 juosta ;
|
||||||
|
juostun = ifTok Str t "t" (juostu + "n") (init juossut + "n") ;
|
||||||
in
|
in
|
||||||
mkVerb
|
mkVerb
|
||||||
juosta
|
juosta
|
||||||
@@ -983,7 +1022,7 @@ caseTable : Number -> CommonNoun -> Case => Str = \n,cn ->
|
|||||||
(juoksi + "si")
|
(juoksi + "si")
|
||||||
juossut
|
juossut
|
||||||
juostu
|
juostu
|
||||||
(init juossut + "n") ;
|
juostun ;
|
||||||
|
|
||||||
-- For "juoda", "syödä", "viedä", "naida", "saada".
|
-- For "juoda", "syödä", "viedä", "naida", "saada".
|
||||||
|
|
||||||
|
|||||||
@@ -50,6 +50,10 @@ oper
|
|||||||
ablative : Case ;
|
ablative : Case ;
|
||||||
allative : Case ;
|
allative : Case ;
|
||||||
|
|
||||||
|
PPosition : Type ;
|
||||||
|
PPrep : Case -> Str -> PPosition ;
|
||||||
|
PPostp : Case -> Str -> PPosition ;
|
||||||
|
|
||||||
--2 Nouns
|
--2 Nouns
|
||||||
|
|
||||||
-- Worst case: give ten forms and the semantic gender.
|
-- Worst case: give ten forms and the semantic gender.
|
||||||
@@ -65,8 +69,9 @@ oper
|
|||||||
|
|
||||||
regN : (talo : Str) -> N ;
|
regN : (talo : Str) -> N ;
|
||||||
|
|
||||||
-- The almost-regular heuristic analyses three forms.
|
-- The almost-regular heuristics analyse two or three forms.
|
||||||
|
|
||||||
|
reg2N : (savi,savia : Str) -> N ;
|
||||||
reg3N : (vesi,veden,vesiä : Str) -> N ;
|
reg3N : (vesi,veden,vesiä : Str) -> N ;
|
||||||
|
|
||||||
-- Nouns with partitive "a"/"ä" are a large group.
|
-- Nouns with partitive "a"/"ä" are a large group.
|
||||||
@@ -195,13 +200,13 @@ oper
|
|||||||
--2 Verbs
|
--2 Verbs
|
||||||
--
|
--
|
||||||
-- The fragment only has present tense so far, but in all persons.
|
-- The fragment only has present tense so far, but in all persons.
|
||||||
-- The worst case needs five forms, as shown in the following.
|
-- The worst case needs twelve forms, as shown in the following.
|
||||||
|
|
||||||
mkV : (tulla,tulee,tulen,tulevat,tulkaa,tullaan,
|
mkV : (tulla,tulee,tulen,tulevat,tulkaa,tullaan,
|
||||||
tuli,tulin,tulisi,tullut,tultu,tullun : Str) -> V ;
|
tuli,tulin,tulisi,tullut,tultu,tullun : Str) -> V ;
|
||||||
regV : (soutaa : Str) -> V ;
|
regV : (soutaa : Str) -> V ;
|
||||||
reg3V : (soutaa,soudan,soudin : Str) -> V ;
|
reg2V : (soutaa,souti : Str) -> V ;
|
||||||
|
reg3V : (soutaa,soudan,souti : Str) -> V ;
|
||||||
|
|
||||||
-- A simple special case is the one with just one stem and no grade alternation.
|
-- A simple special case is the one with just one stem and no grade alternation.
|
||||||
-- It covers e.g. "sanoa", "valua", "kysyä".
|
-- It covers e.g. "sanoa", "valua", "kysyä".
|
||||||
@@ -235,7 +240,7 @@ oper
|
|||||||
-- Two-place verbs need a case, and can have a pre- or postposition.
|
-- Two-place verbs need a case, and can have a pre- or postposition.
|
||||||
-- At least one of the latter is empty, $[]$.
|
-- At least one of the latter is empty, $[]$.
|
||||||
|
|
||||||
mkV2 : V -> Case -> (prep,postp : Str) -> V2 ;
|
mkV2 : V -> PPostp -> V2 ;
|
||||||
|
|
||||||
-- If both are empty, the following special function can be used.
|
-- If both are empty, the following special function can be used.
|
||||||
|
|
||||||
@@ -246,6 +251,36 @@ oper
|
|||||||
|
|
||||||
dirV2 : V -> V2 ;
|
dirV2 : V -> V2 ;
|
||||||
|
|
||||||
|
--3 Three-place verbs
|
||||||
|
--
|
||||||
|
-- Three-place (ditransitive) verbs need two prepositions, of which
|
||||||
|
-- the first one or both can be absent.
|
||||||
|
|
||||||
|
mkV3 : V -> PPosition -> PPosition -> V3 ; -- speak, with, about
|
||||||
|
dirV3 : V -> PPosition -> V3 ; -- give,_,to
|
||||||
|
dirdirV3 : V -> V3 ; -- acc, allat
|
||||||
|
|
||||||
|
--3 Other complement patterns
|
||||||
|
--
|
||||||
|
-- Verbs and adjectives can take complements such as sentences,
|
||||||
|
-- questions, verb phrases, and adjectives.
|
||||||
|
|
||||||
|
mkV0 : V -> V0 ;
|
||||||
|
mkVS : V -> VS ;
|
||||||
|
mkV2S : V2 -> V2S ;
|
||||||
|
mkVV : V -> VV ;
|
||||||
|
mkV2V : V2 -> V2V ;
|
||||||
|
mkVA : V -> Case -> VA ;
|
||||||
|
mkV2A : V2 -> Case -> V2A ;
|
||||||
|
mkVQ : V -> VQ ;
|
||||||
|
mkV2Q : V2 -> V2Q ;
|
||||||
|
|
||||||
|
mkAS : A -> AS ;
|
||||||
|
mkA2S : A -> Str -> A2S ;
|
||||||
|
mkAV : A -> AV ;
|
||||||
|
mkA2V : A -> Str -> A2V ;
|
||||||
|
|
||||||
|
|
||||||
-- The definitions should not bother the user of the API. So they are
|
-- The definitions should not bother the user of the API. So they are
|
||||||
-- hidden from the document.
|
-- hidden from the document.
|
||||||
--.
|
--.
|
||||||
@@ -269,6 +304,12 @@ oper
|
|||||||
ablative = Ablat ;
|
ablative = Ablat ;
|
||||||
allative = Allat ;
|
allative = Allat ;
|
||||||
|
|
||||||
|
PPosition : Type = {c : Case ; s1,s2 : Str} ;
|
||||||
|
PPrep : Case -> Str -> PPosition =
|
||||||
|
\c,p -> {c = c ; s1 = p ; s2 = []} ;
|
||||||
|
PPostp : Case -> Str -> PPosition =
|
||||||
|
\c,p -> {c = c ; s1 = [] ; s2 = p} ;
|
||||||
|
|
||||||
mkN = \a,b,c,d,e,f,g,h,i,j,k ->
|
mkN = \a,b,c,d,e,f,g,h,i,j,k ->
|
||||||
mkNoun a b c d e f g h i j ** {g = k ; lock_N = <>} ;
|
mkNoun a b c d e f g h i j ** {g = k ; lock_N = <>} ;
|
||||||
|
|
||||||
@@ -314,12 +355,17 @@ reg2N : (savi,savia : Str) -> N = \savi,savia ->
|
|||||||
savit = regN savi ;
|
savit = regN savi ;
|
||||||
ia = Predef.dp 2 savia ;
|
ia = Predef.dp 2 savia ;
|
||||||
i = init ia ;
|
i = init ia ;
|
||||||
a = last ia
|
a = last ia ;
|
||||||
|
o = last savi ;
|
||||||
|
savin = weakGrade savi + "n" ;
|
||||||
in
|
in
|
||||||
case ia of {
|
case <o,ia> of {
|
||||||
"ia" => sArpi savi ;
|
<"i","ia"> => sArpi savi ;
|
||||||
"iä" => sSylki savi ;
|
<"i","iä"> => sSylki savi ;
|
||||||
"ta" | "tä" => sPeruna savi ;
|
<"i","ta"> | <"i","tä"> => sTohtori (savi + a) ;
|
||||||
|
<"o","ta"> | <"ö","tä"> => sRadio savi ;
|
||||||
|
<"a","ta"> | <"ä","tä"> => sPeruna savi ;
|
||||||
|
<"a","ia"> | <"a","ja"> => sKukko savi savin savia ;
|
||||||
_ => savit
|
_ => savit
|
||||||
} ** {g = NonHuman ; lock_N = <>} ;
|
} ** {g = NonHuman ; lock_N = <>} ;
|
||||||
|
|
||||||
@@ -336,6 +382,7 @@ reg3N = \vesi,veden,vesi
|
|||||||
ifTok CommonNoun (Predef.dp 3 veden) "den"
|
ifTok CommonNoun (Predef.dp 3 veden) "den"
|
||||||
(sRakkaus vesi)
|
(sRakkaus vesi)
|
||||||
(sTilaus vesi (veden + a)) ;
|
(sTilaus vesi (veden + a)) ;
|
||||||
|
"li" | "ni" | "ri" => sSusi vesi veden (Predef.tk 1 vesi + ("en" + a)) ;
|
||||||
"si" => sSusi vesi veden (Predef.tk 2 vesi + ("ten" + a)) ;
|
"si" => sSusi vesi veden (Predef.tk 2 vesi + ("ten" + a)) ;
|
||||||
_ => case i of {
|
_ => case i of {
|
||||||
"a" | "o" | "u" | "y" | "ä" | "ö" => sKukko vesi veden vesiä ;
|
"a" | "o" | "u" | "y" | "ä" | "ö" => sKukko vesi veden vesiä ;
|
||||||
@@ -419,14 +466,17 @@ reg2V : (soutaa,souti : Str) -> V = \soutaa,souti ->
|
|||||||
juo = Predef.tk 2 soutaa ;
|
juo = Predef.tk 2 soutaa ;
|
||||||
o = Predef.dp 1 juo ;
|
o = Predef.dp 1 juo ;
|
||||||
u = ifTok Str (last soutaa) "a" "u" "y" ;
|
u = ifTok Str (last soutaa) "a" "u" "y" ;
|
||||||
taa = Predef.dp 3 soutaa
|
aa = Predef.dp 2 soutaa ;
|
||||||
|
taa = Predef.dp 3 soutaa ;
|
||||||
|
ta = Predef.tk 1 taa ;
|
||||||
in
|
in
|
||||||
case taa of {
|
case aa of {
|
||||||
"taa" | "tää" => vHuoltaa soutaa soudan souti soudin ;
|
"aa" | "ää" => vHuoltaa soutaa soudan souti soudin ;
|
||||||
"ata" | "ätä" => vPalkata soutaa souti ;
|
_ => case ta of {
|
||||||
"sta" | "stä" => vJuosta soutaa souden (juo + o+u+"t") (juo + "t"+u) ;
|
"at" | "ät" => vPalkata soutaa souti ;
|
||||||
|
"st" => vJuosta soutaa souden (juo + o+u+"t") (juo + "t"+u) ;
|
||||||
_ => soudat
|
_ => soudat
|
||||||
} ** {lock_V = <>} ;
|
}} ** {lock_V = <>} ;
|
||||||
|
|
||||||
reg3V soutaa soudan souti =
|
reg3V soutaa soudan souti =
|
||||||
let
|
let
|
||||||
@@ -458,10 +508,41 @@ reg3V soutaa soudan souti =
|
|||||||
|
|
||||||
vHuoltaa : (_,_,_,_ : Str) -> Verb = \ottaa,otan,otti,otin ->
|
vHuoltaa : (_,_,_,_ : Str) -> Verb = \ottaa,otan,otti,otin ->
|
||||||
SyntaxFin.vHuoltaa ottaa otan otti otin ** {lock_V = <>} ;
|
SyntaxFin.vHuoltaa ottaa otan otti otin ** {lock_V = <>} ;
|
||||||
mkV2 = \v,c,p,o -> v ** {s3 = p ; s4 = o ; c = CCase c ; lock_V2 = <>} ;
|
-- mkV2 = \v,c,p,o -> v ** {s3 = p ; s4 = o ; c = CCase c ; lock_V2 = <>} ;
|
||||||
caseV2 = \v,c -> mkV2 v c [] [] ;
|
-- caseV2 = \v,c -> mkV2 v c [] [] ;
|
||||||
dirV2 v = mkTransVerbDir v ** {lock_V2 = <>} ;
|
dirV2 v = mkTransVerbDir v ** {lock_V2 = <>} ;
|
||||||
|
|
||||||
mkAdv : Str -> Adv = \s -> {s = s ; lock_Adv = <>} ;
|
mkAdv : Str -> Adv = \s -> {s = s ; lock_Adv = <>} ;
|
||||||
|
|
||||||
|
|
||||||
|
-- mkV3 : V -> PPosition -> PPosition -> V3 ; -- speak, with, about
|
||||||
|
-- dirV3 : V -> PPosition -> V3 ; -- give,_,to
|
||||||
|
-- dirdirV3 : V -> -> V3 ; -- acc, allat
|
||||||
|
|
||||||
|
mkV0 v = v ** {lock_V0 = <>} ;
|
||||||
|
mkVS v = v ** {lock_VS = <>} ;
|
||||||
|
mkV2S v = v ** {lock_V2S = <>} ;
|
||||||
|
-- mkVV v = v ** {lock_VV = <>} ;
|
||||||
|
mkV2V v = v ** {lock_V2V = <>} ;
|
||||||
|
-- mkVA v c = v ** {c = c ; lock_V0 = <>} ;
|
||||||
|
-- mkV2A v c = v ** {c2 = c ; lock_V0 = <>} ;
|
||||||
|
mkVQ v = v ** {lock_VQ = <>} ;
|
||||||
|
mkV2Q v = v ** {lock_V2Q = <>} ;
|
||||||
|
|
||||||
|
mkAS v = v ** {lock_AS = <>} ;
|
||||||
|
-- mkA2S v c = v ** {c = c ; lock_AS = <>} ;
|
||||||
|
mkAV v = v ** {lock_AV = <>} ;
|
||||||
|
-- mkA2V v c = v ** {c = c ; lock_AS = <>} ;
|
||||||
|
|
||||||
|
-- inf_illative
|
||||||
|
-- infinitive
|
||||||
|
|
||||||
|
|
||||||
|
-- V3 = TransVerb ** {s5, s6 : Str ; c2 : ComplCase} ;
|
||||||
|
-- Verb ** {s3, s4 : Str ; c : ComplCase} ;
|
||||||
|
-- mkN3 n c1 c2
|
||||||
|
-- {c : NPForm} ;
|
||||||
|
-- N3 = Function ** {c2 : NPForm} ;
|
||||||
|
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ lin
|
|||||||
DefNumNP = nounPhraseNum True ;
|
DefNumNP = nounPhraseNum True ;
|
||||||
|
|
||||||
DetNP = detNounPhrase ;
|
DetNP = detNounPhrase ;
|
||||||
---- NDetNP = numDetNounPhrase ;
|
NDetNP = numDetNounPhrase ;
|
||||||
---- NDetNum = justNumDetNounPhrase ;
|
---- NDetNum = justNumDetNounPhrase ;
|
||||||
MassNP = partNounPhrase singular ;
|
MassNP = partNounPhrase singular ;
|
||||||
|
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ concrete SwadeshLexFin of SwadeshLex = CategoriesFin
|
|||||||
|
|
||||||
this_Det = this_Det ;
|
this_Det = this_Det ;
|
||||||
that_Det = that_Det ;
|
that_Det = that_Det ;
|
||||||
all_NDet = all_NDet ;
|
all_NDet = ResourceFin.all_NDet ;
|
||||||
many_Det = many_Det ;
|
many_Det = many_Det ;
|
||||||
some_Det = some_Det ;
|
some_Det = some_Det ;
|
||||||
few_Det = mkDeterminer Pl (\\c => (sTalo "muutama").s ! NCase Pl c) ;
|
few_Det = mkDeterminer Pl (\\c => (sTalo "muutama").s ! NCase Pl c) ;
|
||||||
@@ -99,7 +99,7 @@ concrete SwadeshLexFin of SwadeshLex = CategoriesFin
|
|||||||
|
|
||||||
-- Nouns
|
-- Nouns
|
||||||
|
|
||||||
animal_N = regN "eläin" ;
|
animal_N = regN "eläin" ; ---- *eläkimet
|
||||||
ashes_N = regN "tuhka" ;
|
ashes_N = regN "tuhka" ;
|
||||||
back_N = regN "selkä" ;
|
back_N = regN "selkä" ;
|
||||||
bark_N = regN "kaarna" ;
|
bark_N = regN "kaarna" ;
|
||||||
@@ -118,8 +118,8 @@ concrete SwadeshLexFin of SwadeshLex = CategoriesFin
|
|||||||
egg_N = regN "muna" ;
|
egg_N = regN "muna" ;
|
||||||
eye_N = regN "silmä" ;
|
eye_N = regN "silmä" ;
|
||||||
fat_N = regN "rasva" ;
|
fat_N = regN "rasva" ;
|
||||||
father_N = UseN2 father_N2 ;
|
father_N = regN "isä" ;
|
||||||
feather_N = reg3N "höyhen" "höyhenen" "höyheniä" ; -----
|
feather_N = regN "höyhen" ; ---- *höyhemen
|
||||||
fingernail_N = reg3N "kynsi" "kynnen" "kynsiä" ;
|
fingernail_N = reg3N "kynsi" "kynnen" "kynsiä" ;
|
||||||
fire_N = reg2N "tuli" "tulia" ;
|
fire_N = reg2N "tuli" "tulia" ;
|
||||||
fish_N = fish_N ;
|
fish_N = fish_N ;
|
||||||
@@ -146,7 +146,7 @@ concrete SwadeshLexFin of SwadeshLex = CategoriesFin
|
|||||||
man_N = man_N ;
|
man_N = man_N ;
|
||||||
meat_N = meat_N ;
|
meat_N = meat_N ;
|
||||||
moon_N = moon_N ;
|
moon_N = moon_N ;
|
||||||
mother_N = UseN2 mother_N2 ;
|
mother_N = regN "äiti" ;
|
||||||
mountain_N = mountain_N ;
|
mountain_N = mountain_N ;
|
||||||
mouth_N = regN "suu" ;
|
mouth_N = regN "suu" ;
|
||||||
name_N = reg2N "nimi" "nimiä" ;
|
name_N = reg2N "nimi" "nimiä" ;
|
||||||
@@ -162,9 +162,9 @@ concrete SwadeshLexFin of SwadeshLex = CategoriesFin
|
|||||||
salt_N = regN "suola" ;
|
salt_N = regN "suola" ;
|
||||||
sand_N = regN "hiekka" ;
|
sand_N = regN "hiekka" ;
|
||||||
sea_N = sea_N ;
|
sea_N = sea_N ;
|
||||||
seed_N = regN "seed" ;
|
seed_N = regN "siemen" ;
|
||||||
skin_N = regN "skin" ;
|
skin_N = regN "nahka" ;
|
||||||
sky_N = regN "sky" ; --- taivaan *taipaan
|
sky_N = regN "taivas" ; --- taivaan *taipaan
|
||||||
smoke_N = regN "savu" ;
|
smoke_N = regN "savu" ;
|
||||||
snake_N = snake_N ;
|
snake_N = snake_N ;
|
||||||
snow_N = reg3N "lumi" "lumen" "lumia" ; --- lunta *lumea
|
snow_N = reg3N "lumi" "lumen" "lumia" ; --- lunta *lumea
|
||||||
@@ -173,7 +173,7 @@ concrete SwadeshLexFin of SwadeshLex = CategoriesFin
|
|||||||
stone_N = stone_N ;
|
stone_N = stone_N ;
|
||||||
sun_N = sun_N ;
|
sun_N = sun_N ;
|
||||||
tail_N = regN "häntä" ;
|
tail_N = regN "häntä" ;
|
||||||
tongue_N = regN "kieli" ;
|
tongue_N = reg2N "kieli" "kieliä" ;
|
||||||
tooth_N = regN "hammas" ;
|
tooth_N = regN "hammas" ;
|
||||||
tree_N = tree_N ;
|
tree_N = tree_N ;
|
||||||
water_N = water_N ;
|
water_N = water_N ;
|
||||||
@@ -182,7 +182,7 @@ concrete SwadeshLexFin of SwadeshLex = CategoriesFin
|
|||||||
wing_N = reg2N "siipi" "siipiä" ;
|
wing_N = reg2N "siipi" "siipiä" ;
|
||||||
woman_N = woman_N ;
|
woman_N = woman_N ;
|
||||||
worm_N = regN "mato" ;
|
worm_N = regN "mato" ;
|
||||||
year_N = reg2N "vuosi" "vuosia" ;
|
year_N = reg3N "vuosi" "vuoden" "vuosia" ;
|
||||||
|
|
||||||
-- Verbs
|
-- Verbs
|
||||||
|
|
||||||
@@ -192,16 +192,16 @@ concrete SwadeshLexFin of SwadeshLex = CategoriesFin
|
|||||||
burn_V = regV "palaa" ;
|
burn_V = regV "palaa" ;
|
||||||
come_V = BasicFin.come_V ;
|
come_V = BasicFin.come_V ;
|
||||||
count_V = regV "laskea" ;
|
count_V = regV "laskea" ;
|
||||||
cut_V = regV "leikata" ;
|
cut_V = reg3V "leikata" "leikkaan" "leikkasi" ;
|
||||||
die_V = regV "kuolla";
|
die_V = regV "kuolla";
|
||||||
dig_V = regV "kaivata" ;
|
dig_V = regV "kaivaa" ;
|
||||||
drink_V = UseV2 drink_V2 ;
|
drink_V = UseV2 drink_V2 ;
|
||||||
eat_V = UseV2 eat_V2 ;
|
eat_V = UseV2 eat_V2 ;
|
||||||
fall_V = regV "pudota" ;
|
fall_V = reg3V "pudota" "putoan" "putosi" ; ---- *pudoa
|
||||||
fear_V = regV "fear" ;
|
fear_V = reg3V "pelätä" "pelkään" "pelkäsi" ;
|
||||||
fight_V = regV "taistella" ;
|
fight_V = regV "taistella" ;
|
||||||
float_V = regV "kellua" ;
|
float_V = regV "kellua" ;
|
||||||
flow_V = regV "virrata" ;
|
flow_V = reg3V "virrata" "virtaan" "virtasi" ;
|
||||||
fly_V = regV "lentää" ;
|
fly_V = regV "lentää" ;
|
||||||
freeze_V = regV "jäätyä" ;
|
freeze_V = regV "jäätyä" ;
|
||||||
give_V = regV "antaa" ;
|
give_V = regV "antaa" ;
|
||||||
@@ -212,7 +212,7 @@ concrete SwadeshLexFin of SwadeshLex = CategoriesFin
|
|||||||
kill_V = regV "tappaa" ;
|
kill_V = regV "tappaa" ;
|
||||||
know_V =reg2V "tietää" "tiesin" ;
|
know_V =reg2V "tietää" "tiesin" ;
|
||||||
laugh_V = reg3V "nauraa" "nauran" "nauroi" ;
|
laugh_V = reg3V "nauraa" "nauran" "nauroi" ;
|
||||||
lie_V = regV "maata" ;
|
lie_V = reg3V "maata" "makaan" "makasi" ;
|
||||||
live_V = live_V ;
|
live_V = live_V ;
|
||||||
play_V = UseV2 play_V2 ;
|
play_V = UseV2 play_V2 ;
|
||||||
pull_V = regV "vetää" ;
|
pull_V = regV "vetää" ;
|
||||||
@@ -225,7 +225,7 @@ concrete SwadeshLexFin of SwadeshLex = CategoriesFin
|
|||||||
sing_V = regV "laulaa" ;
|
sing_V = regV "laulaa" ;
|
||||||
sit_V = regV "istua" ;
|
sit_V = regV "istua" ;
|
||||||
sleep_V = sleep_V ;
|
sleep_V = sleep_V ;
|
||||||
smell_V = regV "haista" ;
|
smell_V = reg2V "haistaa" "haistoi" ;
|
||||||
spit_V = regV "sylkeä" ;
|
spit_V = regV "sylkeä" ;
|
||||||
split_V = reg2V "halkaista" "halkaisi" ;
|
split_V = reg2V "halkaista" "halkaisi" ;
|
||||||
squeeze_V = regV "puristaa" ;
|
squeeze_V = regV "puristaa" ;
|
||||||
|
|||||||
@@ -221,10 +221,17 @@ oper
|
|||||||
\isDef,n,mies ->
|
\isDef,n,mies ->
|
||||||
case n.isNum of {
|
case n.isNum of {
|
||||||
True => {
|
True => {
|
||||||
s = table {
|
s = case n.n of {
|
||||||
NPCase Nom => n.s ! NPCase Nom ++ mies.s ! False ! Sg ! Part ;
|
Sg => table {
|
||||||
c => n.s ! c ++ mies.s ! False ! Sg ! npForm2Case Sg c
|
NPCase Nom => n.s ! NPCase Nom ++ mies.s ! False ! Sg ! Nom ;
|
||||||
|
c => n.s ! c ++ mies.s ! False ! Sg ! npForm2Case Sg c
|
||||||
} ;
|
} ;
|
||||||
|
_ => table {
|
||||||
|
NPAccGen => n.s ! NPCase Nom ++ mies.s ! False ! Sg ! Part ;
|
||||||
|
NPCase Nom => n.s ! NPCase Nom ++ mies.s ! False ! Sg ! Part ;
|
||||||
|
c => n.s ! c ++ mies.s ! False ! Sg ! npForm2Case Sg c
|
||||||
|
}
|
||||||
|
} ;
|
||||||
n = if_then_else Number isDef Pl Sg ;
|
n = if_then_else Number isDef Pl Sg ;
|
||||||
p = NP3
|
p = NP3
|
||||||
} ;
|
} ;
|
||||||
|
|||||||
Reference in New Issue
Block a user