diff --git a/lib/resource-1.0/finnish/CatFin.gf b/lib/resource-1.0/finnish/CatFin.gf index 7515aa682..c00d6589f 100644 --- a/lib/resource-1.0/finnish/CatFin.gf +++ b/lib/resource-1.0/finnish/CatFin.gf @@ -56,7 +56,8 @@ concrete CatFin of Cat = CommonX ** open ResFin, Prelude in { isDef : Bool -- True (verb agrees in Pl, Nom is not Part) } ; QuantSg, QuantPl = {s1 : Case => Str ; s2 : Str ; isPoss, isDef : Bool} ; - Predet, Ord = {s : Number => Case => Str} ; + Ord = {s : Number => Case => Str} ; + Predet = {s : Number => NPForm => Str} ; Quant = {s1 : Number => Case => Str ; s2 : Str ; isPoss, isDef : Bool} ; Num = {s : Number => Case => Str ; isNum : Bool} ; diff --git a/lib/resource-1.0/finnish/NounFin.gf b/lib/resource-1.0/finnish/NounFin.gf index 86c6e0ae1..544d53748 100644 --- a/lib/resource-1.0/finnish/NounFin.gf +++ b/lib/resource-1.0/finnish/NounFin.gf @@ -26,7 +26,7 @@ concrete NounFin of Noun = CatFin ** open ResFin, Prelude in { _ => NCase n c -- kytkin, kytkimen,... } in { - s = \\c => let k = npform2case c in + s = \\c => let k = npform2case n c in det.s1 ! k ++ cn.s ! ncase k ++ det.s2 ; a = agrP3 (case det.isDef of { False => Sg ; -- autoja menee; kolme autoa menee @@ -36,14 +36,14 @@ concrete NounFin of Noun = CatFin ** open ResFin, Prelude in { } ; UsePN pn = { - s = \\c => pn.s ! npform2case c ; + s = \\c => pn.s ! npform2case Sg c ; a = agrP3 Sg ; isPron = False } ; UsePron p = p ** {isPron = True} ; PredetNP pred np = { - s = \\c => pred.s ! np.a.n ! npform2case c ++ np.s ! c ; + s = \\c => pred.s ! np.a.n ! c ++ np.s ! c ; a = np.a ; isPron = np.isPron -- kaikki minun - ni } ; diff --git a/lib/resource-1.0/finnish/ParadigmsFin.gf b/lib/resource-1.0/finnish/ParadigmsFin.gf index e297a6637..d7c99d2b4 100644 --- a/lib/resource-1.0/finnish/ParadigmsFin.gf +++ b/lib/resource-1.0/finnish/ParadigmsFin.gf @@ -476,7 +476,7 @@ reg3N = \vesi,veden,vesi regPN m = mkPN (regN m) ; mkPN n = mkProperName n ** {lock_PN = <>} ; mkNP noun num = { - s = \\c => noun.s ! NCase num (npform2case c) ; + s = \\c => noun.s ! NCase num (npform2case num c) ; a = agrP3 num ; isPron = False ; lock_NP = <> diff --git a/lib/resource-1.0/finnish/QuestionFin.gf b/lib/resource-1.0/finnish/QuestionFin.gf index 84f65e8b9..c6a733f8b 100644 --- a/lib/resource-1.0/finnish/QuestionFin.gf +++ b/lib/resource-1.0/finnish/QuestionFin.gf @@ -52,7 +52,7 @@ concrete QuestionFin of Question = CatFin ** open ResFin, Prelude in { IDetCN idet num ord cn = let n = idet.n in { s = \\c => let - k = npform2case c ; + k = npform2case n c ; ncase = case of { => NCase Sg Part ; -- mitkä kolme kytkintä <_, True> => NCase Sg k ; -- miksi kolmeksi kytkimeksi diff --git a/lib/resource-1.0/finnish/RelativeFin.gf b/lib/resource-1.0/finnish/RelativeFin.gf index 3e1d80565..570eee2f4 100644 --- a/lib/resource-1.0/finnish/RelativeFin.gf +++ b/lib/resource-1.0/finnish/RelativeFin.gf @@ -39,7 +39,7 @@ concrete RelativeFin of Relative = CatFin ** open Prelude, ResFin, MorphoFin in } ; IdRP = { - s = \\n,c => relPron ! n ! npform2case c ; + s = \\n,c => relPron ! n ! npform2case n c ; a = RNoAg } ; diff --git a/lib/resource-1.0/finnish/ResFin.gf b/lib/resource-1.0/finnish/ResFin.gf index edba59e7e..3e75611a2 100644 --- a/lib/resource-1.0/finnish/ResFin.gf +++ b/lib/resource-1.0/finnish/ResFin.gf @@ -56,9 +56,10 @@ param NPForm = NPCase Case | NPAcc ; oper - npform2case : NPForm -> Case = \f -> case f of { - NPCase c => c ; - NPAcc => Gen -- appCompl does the job + npform2case : Number -> NPForm -> Case = \n,f -> case of { + => c ; + => Gen ;-- appCompl does the job + => Nom } ; n2nform : NForm -> NForm = \nf -> case nf of { diff --git a/lib/resource-1.0/finnish/StructuralFin.gf b/lib/resource-1.0/finnish/StructuralFin.gf index 4eb95a0da..af7a27b72 100644 --- a/lib/resource-1.0/finnish/StructuralFin.gf +++ b/lib/resource-1.0/finnish/StructuralFin.gf @@ -11,9 +11,9 @@ concrete StructuralFin of Structural = CatFin ** let kaiket = caseTable n (nhn (sKorpi "kaikki" "kaiken" "kaikkena")) in - case c of { + case npform2case n c of { Nom => "kaikki" ; - _ => kaiket ! c + k => kaiket ! k } } ; almost_AdA, almost_AdN = ss "melkein" ; @@ -52,14 +52,14 @@ concrete StructuralFin of Structural = CatFin ** i_Pron = mkPronoun "minä" "minun" "minua" "minuna" "minuun" Sg P1 ; in_Prep = casePrep inessive ; it_Pron = { - s = \\c => pronSe.s ! npform2case c ; + s = \\c => pronSe.s ! npform2case Sg c ; a = agrP3 Sg ; isPron = False } ; less_CAdv = ss "vähemmän" ; many_Det = mkDet Sg (reg2N "moni" "monia") ; more_CAdv = ss "enemmän" ; - most_Predet = {s = \\n,c => (nhn (sSuurin "useinta")).s ! NCase n c} ; + most_Predet = {s = \\n,c => (nhn (sSuurin "useinta")).s ! NCase n (npform2case n c)} ; much_Det = mkDet Sg {s = \\_ => "paljon"} ; must_VV = subjcaseV (regV "täytyä") genitive ; no_Phr = ss "ei" ; @@ -77,7 +77,7 @@ concrete StructuralFin of Structural = CatFin ** she_Pron = mkPronoun "hän" "hänen" "häntä" "hänenä" "häneen" Sg P3 ; so_AdA = ss "niin" ; somebody_NP = { - s = \\c => jokuPron ! Sg ! npform2case c ; + s = \\c => jokuPron ! Sg ! npform2case Sg c ; a = agrP3 Sg ; isPron = False } ; @@ -92,7 +92,7 @@ concrete StructuralFin of Structural = CatFin ** n = Pl } ; something_NP = { - s = \\c => jokinPron ! Sg ! npform2case c ; + s = \\c => jokinPron ! Sg ! npform2case Sg c ; a = agrP3 Sg ; isPron = False } ; @@ -144,11 +144,11 @@ concrete StructuralFin of Structural = CatFin ** want_VV = regV "tahtoa" ; we_Pron = mkPronoun "me" "meidän" "meitä" "meinä" "meihin" Pl P1 ; whatPl_IP = { - s = table {NPAcc => "mitkä" ; c => mikaInt ! Pl ! npform2case c} ; + s = table {NPAcc => "mitkä" ; c => mikaInt ! Pl ! npform2case Pl c} ; n = Pl } ; whatSg_IP = { - s = \\c => mikaInt ! Sg ! npform2case c ; + s = \\c => mikaInt ! Sg ! npform2case Sg c ; n = Sg } ; when_IAdv = ss "milloin" ; @@ -163,11 +163,11 @@ concrete StructuralFin of Structural = CatFin ** n = Sg } ; whoSg_IP = { - s = table {NPAcc => "kenet" ; c => kukaInt ! Sg ! npform2case c} ; + s = table {NPAcc => "kenet" ; c => kukaInt ! Sg ! npform2case Sg c} ; n = Sg } ; whoPl_IP = { - s = table {NPAcc => "ketkä" ; c => kukaInt ! Pl ! npform2case c} ; + s = table {NPAcc => "ketkä" ; c => kukaInt ! Pl ! npform2case Pl c} ; n = Pl } ; why_IAdv = ss "miksi" ; diff --git a/lib/resource-1.0/finnish/VerbFin.gf b/lib/resource-1.0/finnish/VerbFin.gf index 518fccda3..108cc9265 100644 --- a/lib/resource-1.0/finnish/VerbFin.gf +++ b/lib/resource-1.0/finnish/VerbFin.gf @@ -30,12 +30,12 @@ concrete VerbFin of Verb = CatFin ** open Prelude, ResFin in { ComplVA v ap = insertObj (\\_,b,agr => - ap.s ! False ! AN (NCase agr.n (npform2case v.c2.c))) --- v.cs.s ignored + ap.s ! False ! AN (NCase agr.n (npform2case agr.n v.c2.c))) --- v.cs.s ignored (predV v) ; ComplV2A v np ap = insertObj (\\fin,b,_ => appCompl fin b v.c2 np ++ - ap.s ! False ! AN (NCase np.a.n (npform2case v.c3.c))) --agr to obj + ap.s ! False ! AN (NCase np.a.n (npform2case np.a.n v.c3.c))) --agr to obj (predV v) ; UseComp comp =