1
0
forked from GitHub/gf-core

work on Finnish

This commit is contained in:
aarne
2005-06-30 07:35:01 +00:00
parent 6b83de3263
commit 5c5dd161d0
7 changed files with 203 additions and 76 deletions

View File

@@ -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 = ;

View File

@@ -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ä" ;

View File

@@ -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".

View File

@@ -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} ;
} ; } ;

View File

@@ -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 ;

View File

@@ -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" ;

View File

@@ -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
} ; } ;