From 3f8fecbf30c2f5f5973b36670c16de6e32950de8 Mon Sep 17 00:00:00 2001 From: aarne Date: Wed, 29 Jun 2005 09:31:56 +0000 Subject: [PATCH] more Finnish --- examples/stoneage/StoneageFin.gf | 44 ++++++++++---------- lib/resource/finnish/BasicFin.gf | 25 ++++++++---- lib/resource/finnish/MorphoFin.gf | 12 ++++-- lib/resource/finnish/ParadigmsFin.gf | 6 +-- lib/resource/finnish/StructuralFin.gf | 19 ++++++--- lib/resource/finnish/SwadeshLexFin.gf | 58 ++++++++++++++------------- lib/resource/finnish/SyntaxFin.gf | 32 ++++++++------- 7 files changed, 111 insertions(+), 85 deletions(-) diff --git a/examples/stoneage/StoneageFin.gf b/examples/stoneage/StoneageFin.gf index 2b321cb00..f574a5970 100644 --- a/examples/stoneage/StoneageFin.gf +++ b/examples/stoneage/StoneageFin.gf @@ -27,7 +27,7 @@ lin Eat = PresV2 (dirV2 eat_V) ; Bite = PresV2 (dirV2 bite_V) ; Suck = PresV2 (dirV2 suck_V) ; ------ See = PresV2 (dirV2 see_V) ; + See = PresV2 (dirV2 see_V) ; Hear = PresV2 (dirV2 hear_V) ; Know = PresV2 (dirV2 know_V) ; Smell = PresV2 (dirV2 smell_V) ; @@ -37,7 +37,7 @@ lin Hunt = PresV2 (dirV2 hunt_V) ; Hit = PresV2 (dirV2 hit_V) ; Cut = PresV2 (dirV2 cut_V) ; ------ Split = PresV2 (dirV2 split_V) ; + Split = PresV2 (dirV2 split_V) ; Stab = PresV2 (dirV2 stab_V) ; Scratch = PresV2 (dirV2 scratch_V) ; Hold = PresV2 (dirV2 hold_V) ; @@ -47,11 +47,11 @@ lin Wipe = PresV2 (dirV2 wipe_V) ; Pull = PresV2 (dirV2 pull_V) ; Push = PresV2 (dirV2 push_V) ; ------ Throw = PresV2 (dirV2 throw_V) ; ------ Tie = PresV2 (dirV2 tie_V) ; ------ Count = PresV2 (dirV2 count_V) ; + Throw = PresV2 (dirV2 throw_V) ; + Tie = PresV2 (dirV2 tie_V) ; + Count = PresV2 (dirV2 count_V) ; ------ Think = PresV think_V ; + Think = PresV think_V ; Spit = PresV spit_V ; Vomit = PresV vomit_V ; Blow = PresV blow_V ; @@ -61,13 +61,13 @@ lin Live = PresV live_V ; Die = PresV die_V ; Dig = PresV dig_V ; ------ Swim = PresV swim_V ; + Swim = PresV swim_V ; Fly = PresV fly_V ; Walk = PresV walk_V ; Come = PresV come_V ; Lie = PresV lie_V ; Sit = PresV sit_V ; ------ Stand = PresV stand_V ; + Stand = PresV stand_V ; Turn = PresV turn_V ; Fall = PresV fall_V ; Sing = PresV sing_V ; @@ -76,24 +76,24 @@ lin Float = PresV float_V ; Flow = PresV flow_V ; Freeze = PresV freeze_V ; ------ Swell = PresV swell_V ; + Swell = PresV swell_V ; Burn = PresV burn_V ; ------ Give = PresV3 (dirV3 give_V "to") ; + Give = PresV3 (dirV3 give_V "to") ; -- Say = ; The_One = DefOneNP ; ------ The_Many = DefNumNP NoNum ; + The_Many = DefNumNP NoNum ; A = IndefOneNP ; This = DetNP this_Det ; That = DetNP that_Det ; ------ All = NDetNP all_NDet NoNum ; + All = NDetNP all_NDet NoNum ; Many = DetNP many_Det ; Some_One = DetNP some_Det ; ------ Some_Many = NDetNP some_NDet NoNum ; ------ Few = DetNP few_Det ; ------ Other = DetNP other_Det ; + Some_Many = NDetNP some_NDet NoNum ; + Few = DetNP few_Det ; + Other = DetNP other_Det ; One = IndefNumNP one_Num ; Two = IndefNumNP two_Num ; @@ -106,8 +106,8 @@ lin I = i_NP ; You_One = thou_NP ; He = he_NP ; ------ We = we_NP ; ------ You_Many = you_NP ; + We = we_NP ; + You_Many = you_NP ; They = they_NP ; -- Nouns @@ -118,8 +118,8 @@ lin Child = UseN child_N ; Wife = UseN wife_N ; Husband = UseN husband_N ; ------ Mother = UseN mother_N ; ------ Father = UseN father_N ; + Mother = UseN mother_N ; + Father = UseN father_N ; Animal = UseN animal_N ; Fish = UseN fish_N ; Bird = UseN bird_N ; @@ -173,7 +173,7 @@ lin Star = UseN star_N ; Water = UseN water_N ; Rain = UseN rain_N ; ------ River = UseN river_N ; + River = UseN river_N ; Lake = UseN lake_N ; Sea = UseN sea_N ; Salt = UseN salt_N ; @@ -206,7 +206,7 @@ lin Wide = ModPosA wide_ADeg ; Thick = ModPosA thick_ADeg ; Heavy = ModPosA heavy_ADeg ; ------ Small = ModPosA small_ADeg ; + Small = ModPosA small_ADeg ; Short = ModPosA short_ADeg ; Narrow = ModPosA narrow_ADeg ; Thin = ModPosA thin_ADeg ; @@ -215,7 +215,7 @@ lin Yellow = ModPosA yellow_ADeg ; White = ModPosA white_ADeg ; Black = ModPosA black_ADeg ; ------ Warm = ModPosA warm_ADeg ; + Warm = ModPosA warm_ADeg ; Cold = ModPosA cold_ADeg ; Full = ModPosA full_ADeg ; New = ModPosA new_ADeg ; diff --git a/lib/resource/finnish/BasicFin.gf b/lib/resource/finnish/BasicFin.gf index be7cad3d0..a323c37e6 100644 --- a/lib/resource/finnish/BasicFin.gf +++ b/lib/resource/finnish/BasicFin.gf @@ -113,7 +113,7 @@ lin leather_N = regN "nahka" ; --- nahan leave_V2 = dirV2 (regV "jättää") ; like_V2 = caseV2 (regV "pitää") elative ; ---3 listen_V2 = caseV2 (reg3V "kuunnella" "kuuntelen" "kuuntelin") partitive ; + listen_V2 = caseV2 (reg3V "kuunnella" "kuuntelen" "kuuntelin") partitive ; live_V = regV "elää" ; long_ADeg = mkADeg (regN "pitkä") "pitempi" "pisin" ; lose_V2 = dirV2 (regV "hävitä") ; --- hukata @@ -151,7 +151,7 @@ lin red_ADeg = regADeg "punainen" ; religion_N = regN "uskonto" ; restaurant_N = regN "ravintola" ; ----- river_N = reg3N "joki" "joen" "jokia" ; + river_N = nArpi "joki" ; ---- rock_N = regN "kallio" ; roof_N = regN "katto" ; rubber_N = regN "kumi" ; @@ -161,7 +161,9 @@ lin science_N = regN "tiede" ; sea_N = reg2N "meri" "meriä" ; seek_V2 = dirV2 (regV "etsiä") ; ----- see_V2 = dirV2 (irregV "see" "saw" "seen") ; + see_V2 = dirV2 ( + 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") ; ---- sell_V3 = dirV3 (regV "myydä") allative ; ---- send_V3 = dirV3 (regV "lähettää") allative ; sheep_N = regN "lammas" ; @@ -173,12 +175,12 @@ lin silver_N = regN "hopea" ; sister_N = regN "sisko" ; sleep_V = regV "nukkua" ; ----- small_ADeg = regADeg "small" ; + small_ADeg = mkADeg (reg3N "pieni" "pienen" "pieniä") "pienempi" "pienin" ; snake_N = regN "käärme" ; sock_N = regN "sukka" ; speak_V2 = dirV2 (regV "puhua") ; star_N = reg2N "tähti" "tähtiä" ; ----- steel_N = regN "teräs" ; + steel_N = regN "teräs" ; stone_N = reg2N "kivi" "kiviä" ; stove_N = reg3N "liesi" "lieden" "liesiä" ; student_N = reg2N "opiskelija" "opiskelijoita" ; @@ -202,8 +204,12 @@ lin university_N = regN "yliopisto" ; village_N = regN "kylä" ; wait_V2 = caseV2 (regV "odottaa") partitive ; - walk_V = (regV "kävellä") ; ----- warm_ADeg = regADeg "warm" ; + walk_V = regV "kävellä" ; + warm_ADeg = mkADeg + (mkN "lämmin" "lämpimän" "lämpimänä" "lämmintä" "lämpimään" + "lämpiminä" "lämpimissä" "lämpimien" "lämpimiä" "lämpimiin" + nonhuman) + "lämpimämpi" "lämpimin" ; war_N = regN "sota" ; watch_V2 = dirV2 (regV "katsella") ; water_N = reg3N "vesi" "veden" "vesiä" ; @@ -218,7 +224,10 @@ lin yellow_ADeg = regADeg "keltainen" ; young_ADeg = mkADeg (reg2N "nuori" "nuoria") "nuorempi" "nuorin" ; ----- do_V2 = dirV2 (mkV "do" "does" "did" "done" "doing") ; + do_V2 = dirV2 ( + mkV "tehdä" "tekee" "teen" "tekevät" "tehkää" "tehdään" + "teki" "tein" "tekisi" "tehnyt" "tehty" "tehdyn") ; + now_Adv = mkAdv "nyt" ; already_Adv = mkAdv "jo" ; song_N = regN "laulu" ; diff --git a/lib/resource/finnish/MorphoFin.gf b/lib/resource/finnish/MorphoFin.gf index 1fc107ee6..82c330cbc 100644 --- a/lib/resource/finnish/MorphoFin.gf +++ b/lib/resource/finnish/MorphoFin.gf @@ -807,8 +807,11 @@ caseTable : Number -> CommonNoun -> Case => Str = \n,cn -> -- -- The present, past, conditional. and infinitive stems, acc. to Koskenniemi. -- Unfortunately not enough (without complicated processes). ---- We moreover give grade alternation forms as arguments, to avoid ---- code exposion in gfr. +-- We moreover give grade alternation forms as arguments, since it does not +-- happen automatically. +--- A problem remains with the verb "seistä", where the infinitive +--- stem has vowel harmony "ä" but the others "a", thus "seisoivat" but "seiskää". + mkVerb : (_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Verb = \tulla,tulee,tulen,tulevat,tulkaa,tullaan,tuli,tulin,tulisi,tullut,tultu,tullun -> @@ -917,7 +920,10 @@ caseTable : Number -> CommonNoun -> Case => Str = \n,cn -> -- For cases where grade alternation is not affected by the imperfect "i". vOttaa : (_,_ : Str) -> Verb = \ottaa,otan -> - vHuoltaa ottaa otan (Predef.tk 2 ottaa + "i") (Predef.tk 2 otan + "in") ; + let + i = if_then_Str (pbool2bool (Predef.occurs "ou" ottaa)) "i" "oi" + in + vHuoltaa ottaa otan (Predef.tk 2 ottaa + i) (Predef.tk 2 otan + i + "n") ; -- For "poistaa", "ryystää". diff --git a/lib/resource/finnish/ParadigmsFin.gf b/lib/resource/finnish/ParadigmsFin.gf index bc089e1cb..83d8b3f6a 100644 --- a/lib/resource/finnish/ParadigmsFin.gf +++ b/lib/resource/finnish/ParadigmsFin.gf @@ -294,12 +294,12 @@ regN = \vesi -> vesi (vesi + "n") (vesi + "n"+a) (vesi + a) (vesi + a+"n") (ves + "in"+a) (ves + "iss"+a) (ves + "iden") (ves + "it"+a) (ves + "isiin") ; - "in" => sLiitin vesi ; "is" => sNauris (vesi + ("t" + a)) ; "ut" | "yt" => sRae vesi (ves + ("en" + a)) ; "as" | "äs" => sRae vesi (strongGrade ves + (a + "n" + a)) ; "ar" | "är" => sRae vesi (strongGrade ves + ("ren" + a)) ; _ => case i of { + "n" => sLiitin vesi ; "s" => sTilaus vesi (ves + ("ksen" + a)) ; "i" => sBaari (vesi + a) ; "e" => sRae vesi (strongGrade (ves + "e") + "en" + a) ; @@ -402,10 +402,10 @@ regV soutaa = u = ifTok Str a "a" "u" "y" ; joi = Predef.tk 2 juo + (o + "i") in case ta of { - "ta" | "tä" => vOttaa soutaa (souda + "n") ; "st" => vJuosta soutaa soudan (juo + "s"+u+"t") (juo + "t"+u) ; "nn" | "rr" | "ll" => vJuosta soutaa soudan (juo + o+u+"t") (juo + "t"+u) ; _ => case aa of { + "aa" | "ää" => vOttaa soutaa (souda + "n") ; "da" | "dä" => vJuoda soutaa joi ; "ta" | "tä" => vOsata soutaa ; _ => vHukkua soutaa souda @@ -441,10 +441,10 @@ reg3V soutaa soudan soudin = u = ifTok Str a "a" "u" "y" ; joi = init soudin in case ta of { - "ta" | "tä" => vHuoltaa soutaa soudan (init soudin) soudin ; "st" => vJuosta soutaa soudan (juo + "s"+u+"t") (juo + "t"+u) ; "nn" | "rr" | "ll" => vJuosta soutaa soudan (juo + o+u+"t") (juo + "t"+u) ; _ => case aa of { + "aa" | "ää" => vHuoltaa soutaa soudan (init soudin) soudin ; "da" | "dä" => vJuoda soutaa joi ; "ta" | "tä" => vOsata soutaa ; _ => vHukkua soudan souda diff --git a/lib/resource/finnish/StructuralFin.gf b/lib/resource/finnish/StructuralFin.gf index 6e9efd361..6fbabdfbd 100644 --- a/lib/resource/finnish/StructuralFin.gf +++ b/lib/resource/finnish/StructuralFin.gf @@ -15,11 +15,12 @@ concrete StructuralFin of Structural = above_Prep = prepPostpGen "yläpuolella" ; after_Prep = prepPostpGen "jälkeen" ; all8mass_Det = mkDeterminer singular (kaikkiPron Sg) ; ----- all_NDet = kaikkiDet ; + all_NDet = mkDeterminerNum (kaikkiPron Pl) ; almost_Adv = ss "melkein" ; although_Subj = ss "vaikka" ; although_Subj = ss "vaikka" ; and_Conj = ss "ja" ** {n = Pl} ; + because_Subj = ss "koska" ; before_Prep = prepPrep "ennen" Part ; behind_Prep = prepPostpGen "takana" ; between_Prep = prepPostpGen "välissä" ; @@ -63,13 +64,14 @@ concrete StructuralFin of Structural = possess_Prep = prepCase Gen ; quite_Adv = ss "aika" ; she_NP = pronNounPhrase pronHan ; + so_Adv = ss "niin" ; somebody_NP = { s = \\f => jokuPron ! Sg ! (npForm2Case Sg f) ; n = Sg ; p = NP3 } ; some_Det = mkDeterminerGen Sg (jokinPron ! Sg) (jokuPron ! Sg) ; ----- some_NDet n = mkDeterminerGenNum n (jokinPron ! Pl) (jokuPron ! Pl) ; + some_NDet = mkDeterminerGenNum (jokinPron ! Pl) (jokuPron ! Pl) ; something_NP = { s = \\f => jokinPron ! Sg ! (npForm2Case Sg f) ; -- näin kaiken n = Sg ; @@ -79,11 +81,11 @@ concrete StructuralFin of Structural = that_Det = mkDeterminer Sg (\\c => pronTuo.s ! PCase c) ; that_NP = pronNounPhraseNP pronTuo ; therefore_Adv = ss "siksi" ; ----- these_NDet n = mkDeterminerNum n (\\c => pronNama.s ! PCase c) ; + these_NDet = mkDeterminerNum (\\c => pronNama.s ! PCase c) ; they_NP = pronNounPhrase pronHe ; --- ne this_Det = mkDeterminer Sg (\\c => pronTama.s ! PCase c) ; this_NP = pronNounPhraseNP pronTama ; ----- those_NDet n = mkDeterminerNum n (\\c => pronNuo.s ! PCase c) ; + those_NDet = mkDeterminerNum (\\c => pronNuo.s ! PCase c) ; thou_NP = pronNounPhrase pronSina ; through_Prep = prepPostpGen "kautta" ; too_Adv = ss "liian" ; @@ -91,16 +93,21 @@ concrete StructuralFin of Structural = under_Prep = prepPostpGen "alla" ; very_Adv = ss "hyvin" ; want_VV = nomVerbVerb (vOsata "haluta") ; ----- we_NP = pronWithNum pronMe ; + we_NP = pronNounPhrase pronMe ; + what8many_IP = intPronWhat Pl ; + what8one_IP = intPronWhat Sg ; when_IAdv = ss "koska" ; when_Subj = ss "kun" ; where_IAdv = ss "missä" ; which8one_IDet = mikaDet ; ---- which8many_IDet n = mkDeterminerGenNum n (mikaInt ! Pl) (kukaInt ! Pl) ; + who8many_IP = intPronWho Pl ; + who8one_IP = intPronWho Sg ; + why_IAdv = ss "miksi" ; without_Prep = prepPrep "ilman" Part ; with_Prep = prepPostpGen "kanssa" ; ----- ye_NP = pronWithNum pronTe ; + ye_NP = pronNounPhrase pronTe ; yes_Phr = ss ("Kyllä" ++ stopPunct) ; you_NP = pronNounPhrase pronTe ; diff --git a/lib/resource/finnish/SwadeshLexFin.gf b/lib/resource/finnish/SwadeshLexFin.gf index 8f05b18f2..4130f5456 100644 --- a/lib/resource/finnish/SwadeshLexFin.gf +++ b/lib/resource/finnish/SwadeshLexFin.gf @@ -11,23 +11,23 @@ concrete SwadeshLexFin of SwadeshLex = CategoriesFin i_NP = i_NP ; thou_NP = thou_NP ; he_NP = he_NP ; ----- we_NP = we_NP ; + we_NP = we_NP ; you_NP = you_NP ; they_NP = they_NP ; ----- who8many_IP = who8many_IP ; ----- who8one_IP = who8one_IP ; ----- what8many_IP = what8many_IP ; ----- what8one_IP = what8one_IP ; + who8many_IP = who8many_IP ; + who8one_IP = who8one_IP ; + what8many_IP = what8many_IP ; + what8one_IP = what8one_IP ; -- Determiners this_Det = this_Det ; that_Det = that_Det ; ----- all_NDet = all_NDet ; + all_NDet = all_NDet ; many_Det = many_Det ; some_Det = some_Det ; ----- few_Det = mkDeterminer Pl "few" ; ----- other_Det = mkDeterminer Pl "other" ; + few_Det = mkDeterminer Pl (\\c => (sTalo "muutama").s ! NCase Pl c) ; + other_Det = mkDeterminer Pl (\\c => (sPuu "muu").s ! NCase Pl c) ; -- Adverbs @@ -46,9 +46,9 @@ concrete SwadeshLexFin of SwadeshLex = CategoriesFin -- Prepositions ----- at_Prep = ss "at" ; ----- in_Prep = ss "in" ; ----- with_Prep = ss "with" ; + at_Prep = prepCase Adess ; + in_Prep = prepCase Iness ; + with_Prep = prepPostpGen "kanssa" ; -- Numerals @@ -83,12 +83,12 @@ concrete SwadeshLexFin of SwadeshLex = CategoriesFin round_ADeg = regADeg "pyöreä" ; sharp_ADeg = regADeg "terävä" ; short_ADeg = short_ADeg ; ----- small_ADeg = small_ADeg ; + small_ADeg = small_ADeg ; smooth_ADeg = regADeg "sileä" ; straight_ADeg = mkADeg (regN "suora") "suorempi" "suorin" ; thick_ADeg = thick_ADeg ; thin_ADeg = thin_ADeg ; ----- warm_ADeg = warm_ADeg ; + warm_ADeg = warm_ADeg ; wet_ADeg = mkADeg (regN "märkä") "märempi" "märin" ; white_ADeg = white_ADeg ; wide_ADeg = regADeg "leveä" ; @@ -118,7 +118,7 @@ concrete SwadeshLexFin of SwadeshLex = CategoriesFin egg_N = regN "muna" ; eye_N = regN "silmä" ; fat_N = regN "rasva" ; ----- father_N = UseN2 father_N2 ; + father_N = UseN2 father_N2 ; feather_N = reg3N "höyhen" "höyhenen" "höyheniä" ; ----- fingernail_N = reg3N "kynsi" "kynnen" "kynsiä" ; fire_N = reg2N "tuli" "tulia" ; @@ -133,7 +133,7 @@ concrete SwadeshLexFin of SwadeshLex = CategoriesFin hair_N = regN "hius" ; hand_N = reg3N "käsi" "käden" "käsiä" ; head_N = regN "pää" ; - heart_N = regN "sydän" ; ----- + heart_N = regN "sydän" ; --- *sytämen horn_N = reg2N "sarvi" "sarvia" ; husband_N = man_N ; --- aviomies ice_N = regN "jää" ; @@ -146,7 +146,7 @@ concrete SwadeshLexFin of SwadeshLex = CategoriesFin man_N = man_N ; meat_N = meat_N ; moon_N = moon_N ; ----- mother_N = UseN2 mother_N2 ; + mother_N = UseN2 mother_N2 ; mountain_N = mountain_N ; mouth_N = regN "suu" ; name_N = reg2N "nimi" "nimiä" ; @@ -155,19 +155,19 @@ concrete SwadeshLexFin of SwadeshLex = CategoriesFin nose_N = regN "nenä" ; person_N = regN "henkilö" ; rain_N = regN "sade" ; ----- river_N = river_N ; + river_N = river_N ; road_N = regN "tie" ; - root_N = regN "juuri" ; ----- + root_N = reg3N "juuri" "juuren" "juuria" ; --- juurta *juurea rope_N = reg3N "köysi" "köyden" "köysiä" ; salt_N = regN "suola" ; sand_N = regN "hiekka" ; sea_N = sea_N ; seed_N = regN "seed" ; skin_N = regN "skin" ; - sky_N = regN "sky" ; ----- + sky_N = regN "sky" ; --- taivaan *taipaan smoke_N = regN "savu" ; snake_N = snake_N ; - snow_N = regN "lumi" ; ----- + snow_N = reg3N "lumi" "lumen" "lumia" ; --- lunta *lumea star_N = star_N ; stick_N = regN "keppi" ; stone_N = stone_N ; @@ -211,7 +211,7 @@ concrete SwadeshLexFin of SwadeshLex = CategoriesFin hunt_V = regV "metsästää" ; kill_V = regV "tappaa" ; know_V =reg2V "tietää" "tiesin" ; - laugh_V = regV "nauraa" ; ----- + laugh_V = reg3V "nauraa" "nauran" "nauroin" ; lie_V = regV "maata" ; live_V = live_V ; play_V = UseV2 play_V2 ; @@ -220,22 +220,24 @@ concrete SwadeshLexFin of SwadeshLex = CategoriesFin rub_V = regV "hieroa" ; say_V = regV "sanoa" ; scratch_V = regV "raapia" ; ------ see_V = UseV2 see_V2 ; + see_V = UseV2 see_V2 ; sew_V = regV "kylvää" ; sing_V = regV "laulaa" ; sit_V = regV "istua" ; sleep_V = sleep_V ; smell_V = regV "haista" ; spit_V = regV "sylkeä" ; ----- split_V = split_V ; + split_V = reg2V "halkaista" "halkaisi" ; squeeze_V = regV "puristaa" ; stab_V = regV "pistää" ; ----- stand_V = stand_V ; + stand_V = mkV "seistä" "seisoo" "seison" "seisovat" "seiskää" "seistään" + "seisoi" "seisoin" "seisoisi" "seissyt" "seisty" "seistyn" ; --- *seisoivät suck_V = regV "imeä" ; ----- swell_V = swell_V ; ----- swim_V = swim_V ; ----- think_V = think_V ; ----- throw_V = throw_V ; + swell_V = mkV "turvota" "turpoaa" "turpoan" "turpoavat" "turvotkaa" "turvotaan" + "turposi" "turposin" "turpoaisi" "turvonnut" "turvottu" "turvotun" ; + swim_V = reg3V "uida" "uin" "uin" ; + think_V = reg3V "ajatella" "ajattelen" "ajattelin" ; + throw_V = regV "heittää" ; tie_V = regV "sitoa" ; turn_V = regV "kääntyä" ; vomit_V = regV "oksentaa" ; diff --git a/lib/resource/finnish/SyntaxFin.gf b/lib/resource/finnish/SyntaxFin.gf index 4b54f41c8..f3e658cae 100644 --- a/lib/resource/finnish/SyntaxFin.gf +++ b/lib/resource/finnish/SyntaxFin.gf @@ -157,6 +157,7 @@ oper -- that is given to the noun that is being determined. Determiner : Type = {s : Gender => Case => Str ; n : Number ; isNum : Bool} ; + DeterminerNum : Type = {s : Gender => Case => Str ; isNum : Bool} ; detNounPhrase : Determiner -> CommNounPhrase -> NounPhrase = \joku, mies -> {s = \\f => let {c = npForm2Case joku.n f} in @@ -166,6 +167,15 @@ oper p = NP3 } ; + numDetNounPhrase : DeterminerNum -> Numeral -> CommNounPhrase -> NounPhrase = + \joku, viisi, mies -> + {s = \\f => let {c = npForm2Case Pl f} in + joku.s ! mies.g ! c ++ viisi.s ! NPCase c ++ + mkCaseNum joku.isNum Pl c (mies.s ! False) ; + n = Pl ; + p = NP3 + } ; + mkCaseNum : Bool -> Number -> Case -> (Number => Case => Str) -> Str = \isNum, n, c, mies -> case of { @@ -183,28 +193,20 @@ oper isNum = False } ; - mkDeterminerGenNum : Numeral -> (_,_ : Case => Str) -> Determiner = - \n,mika,kuka -> - {s = table { - NonHuman => \\c => mika ! c ++ n.s ! NPCase c ; - Human => \\c => kuka ! c ++ n.s ! NPCase c - } ; - n = Pl ; - isNum = n.isNum - } ; - mkDeterminer : Number -> (Case => Str) -> Determiner = \n,kaikki -> mkDeterminerGen n kaikki kaikki ; - mkDeterminerNum : Numeral -> (Case => Str) -> Determiner = \n,kaikki -> - mkDeterminerGenNum n kaikki kaikki ; + mkDeterminerNum : (Case => Str) -> DeterminerNum = + mkDeterminer Pl ; + mkDeterminerGenNum : (_,_ : Case => Str) -> DeterminerNum = + mkDeterminerGen Pl ; jokainenDet = mkDeterminer Sg (caseTable Sg (sNainen "jokaista")) ; - kaikkiDet : Numeral -> Determiner = \n -> mkDeterminerNum n (kaikkiPron Pl) ; + kaikkiDet : DeterminerNum = mkDeterminerNum (kaikkiPron Pl) ; useimmatDet = mkDeterminer Pl (caseTable Pl (sSuurin "useinta")) ; mikaDet = mkDeterminerGen Sg (mikaInt ! Sg) (kukaInt ! Sg) ; - mitkaDet : Numeral -> Determiner = \n -> - mkDeterminerGenNum n (mikaInt ! Pl) (kukaInt ! Pl) ; + mitkaDet : DeterminerNum = + mkDeterminerGenNum (mikaInt ! Pl) (kukaInt ! Pl) ; indefNounPhrase : Number -> CommNounPhrase -> NounPhrase = \n,mies -> case n of {