diff --git a/lib/src/finnish/CatFin.gf b/lib/src/finnish/CatFin.gf index 2863bebdc..054e47de5 100644 --- a/lib/src/finnish/CatFin.gf +++ b/lib/src/finnish/CatFin.gf @@ -49,7 +49,7 @@ concrete CatFin of Cat = CommonX ** open ResFin, StemFin, Prelude in { -- The $Bool$ tells if a possessive suffix is attached, which affects the case. CN = {s : NForm => Str ; h : Harmony} ; - Pron = {s : NPForm => Str ; a : Agr ; hasPoss : Bool} ; + Pron = {s : NPForm => Str ; a : Agr ; hasPoss : Bool ; poss : Str} ; NP = {s : NPForm => Str ; a : Agr ; isPron : Bool ; isNeg : Bool} ; Det = { s1 : Case => Str ; -- minun kolme diff --git a/lib/src/finnish/ExtraFin.gf b/lib/src/finnish/ExtraFin.gf index add09502f..766629557 100644 --- a/lib/src/finnish/ExtraFin.gf +++ b/lib/src/finnish/ExtraFin.gf @@ -159,8 +159,9 @@ concrete ExtraFin of ExtraFinAbs = CatFin ** IAdvAdv adv = {s = "kuinka" ++ adv.s} ; ProDrop p = { - s = table {NPCase (Nom) => [] ; c => p.s ! c} ; - ---- drop Gen only works in adjectival position: "autoni", but not in "ø täytyy mennä" + s = table {NPCase (Nom) => [] ; c => p.s ! c} ; + poss = [] ; + -- drop Gen only works in adjectival position: "autoni", but not in "ø täytyy mennä" a = p.a ; hasPoss = p.hasPoss ; } ; diff --git a/lib/src/finnish/MorphoFin.gf b/lib/src/finnish/MorphoFin.gf index 9009e0fed..22f314b4a 100644 --- a/lib/src/finnish/MorphoFin.gf +++ b/lib/src/finnish/MorphoFin.gf @@ -933,10 +933,10 @@ caseTable : Number -> CommonNoun -> Case => Str = \n,cn -> -- Personal pronouns have possessive suffix (hänen talonsa) but "se" doesn't (sen talo) mkPronoun : (_,_,_,_,_ : Str) -> Number -> Person -> - {s : NPForm => Str ; a : Agr ; hasPoss : Bool} = mkPronounGen True ; + {s : NPForm => Str ; a : Agr ; hasPoss : Bool ; poss : Str} = mkPronounGen True ; mkPronounGen : Bool -> (_,_,_,_,_ : Str) -> Number -> Person -> - {s : NPForm => Str ; a : Agr ; hasPoss : Bool} = + {s : NPForm => Str ; a : Agr ; hasPoss : Bool ; poss : Str} = \hasPoss, mina, minun, minua, minuna, minuun, n, p -> let { minu = Predef.tk 2 minuna ; @@ -958,7 +958,8 @@ caseTable : Number -> CommonNoun -> Case => Str = \n,cn -> NPAcc => Predef.tk 1 minun + "t" } ; a = Ag n p ; - hasPoss = hasPoss + hasPoss = hasPoss ; + poss = minun ; } ; mkDemPronoun : (_,_,_,_,_ : Str) -> Number -> diff --git a/lib/src/finnish/NounFin.gf b/lib/src/finnish/NounFin.gf index d21a25519..07c09ea15 100644 --- a/lib/src/finnish/NounFin.gf +++ b/lib/src/finnish/NounFin.gf @@ -116,7 +116,7 @@ concrete NounFin of Noun = CatFin ** open ResFin, MorphoFin, StemFin, Prelude in } ; PossPron p = { - s1,sp = \\_,_ => p.s ! NPCase Gen ; + s1,sp = \\_,_ => p.poss ; s2 = case p.hasPoss of { True => table {Front => BIND ++ possSuffixFront p.a ; Back => BIND ++ possSuffix p.a } ; diff --git a/lib/src/finnish/StructuralFin.gf b/lib/src/finnish/StructuralFin.gf index 18c6bce6c..341de8bd7 100644 --- a/lib/src/finnish/StructuralFin.gf +++ b/lib/src/finnish/StructuralFin.gf @@ -56,7 +56,8 @@ concrete StructuralFin of Structural = CatFin ** it_Pron = { s = \\c => pronSe.s ! npform2case Sg c ; a = agrP3 Sg ; - hasPoss = False + hasPoss = False ; + poss = "sen" ; } ; less_CAdv = X.mkCAdv "vähemmän" "kuin" ; many_Det = MorphoFin.mkDet Sg (snoun2nounBind (mkN "moni" "monia")) ; @@ -162,7 +163,7 @@ concrete StructuralFin of Structural = CatFin ** youPl_Pron = mkPronoun "te" "teidän" "teitä" "teinä" "teihin" Pl P2 ; youPol_Pron = let p = mkPronoun "te" "teidän" "teitä" "teinä" "teihin" Pl P2 in - {s = p.s ; a = AgPol ; hasPoss = True} ; + {s = p.s ; a = AgPol ; hasPoss = True ; poss = p.poss} ; oper jokuPron : MorphoFin.Number => (MorphoFin.Case) => Str = diff --git a/lib/src/translator/TranslateFin.gf b/lib/src/translator/TranslateFin.gf index 1c7ff0b4f..013d682cc 100644 --- a/lib/src/translator/TranslateFin.gf +++ b/lib/src/translator/TranslateFin.gf @@ -5,7 +5,6 @@ concrete TranslateFin of Translate = CatFin, NounFin - [ PPartNP - ,PossPron -- Fin specific: replaced by variants with prodrop ], AdjectiveFin, NumeralFin, @@ -35,9 +34,5 @@ open MorphoFin, ResFin, ParadigmsFin, SyntaxFin, StemFin, (E = ExtraFin), (G = G flags literal=Symb ; coding = utf8 ; --- the overrides ----- -lin - - PossPron p = G.PossPron p | E.ProDropPoss p ; }