From 36b1e82edba86e3c51e0225e3a0a5def19e27c2b Mon Sep 17 00:00:00 2001 From: aarne Date: Tue, 8 May 2012 13:45:31 +0000 Subject: [PATCH] =?UTF-8?q?another=20fix=20in=20Ger=20Quant,=20for=20"gute?= =?UTF-8?q?=20H=C3=A4user"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/src/german/CatGer.gf | 7 ++++--- lib/src/german/NounGer.gf | 17 +++++++++-------- lib/src/german/ResGer.gf | 4 ++-- lib/src/german/StructuralGer.gf | 6 +++--- 4 files changed, 18 insertions(+), 16 deletions(-) diff --git a/lib/src/german/CatGer.gf b/lib/src/german/CatGer.gf index e3ef2afb1..a7df0c92c 100644 --- a/lib/src/german/CatGer.gf +++ b/lib/src/german/CatGer.gf @@ -52,9 +52,10 @@ concrete CatGer of Cat = Pron = {s : NPForm => Str ; a : Agr} ; Det = {s,sp : Gender => PCase => Str ; n : Number ; a : Adjf} ; Quant = { - s : Bool => Number => Gender => PCase => Str ; - sp : Number => Gender => PCase => Str ; - a : Adjf + s : Bool => Number => Gender => PCase => Str ; + sp : Number => Gender => PCase => Str ; + a : Adjf ; + aPl : Adjf ; --- to distinguish "meine guten Freunde" / "gute Freunde" } ; Predet = { s : Number => Gender => PCase => Str ; diff --git a/lib/src/german/NounGer.gf b/lib/src/german/NounGer.gf index 534e9495e..7bedc6cce 100644 --- a/lib/src/german/NounGer.gf +++ b/lib/src/german/NounGer.gf @@ -5,7 +5,7 @@ concrete NounGer of Noun = CatGer ** open ResGer, MorphoGer, Prelude in { lin DetCN det cn = { s = \\c => det.s ! cn.g ! c ++ - (let k = (prepC c).c in cn.s ! adjfCase det.a det.n k ! det.n ! k) ; + (let k = (prepC c).c in cn.s ! adjfCase det.a k ! det.n ! k) ; a = agrgP3 cn.g det.n ; isPron = False } ; @@ -52,11 +52,11 @@ concrete NounGer of Noun = CatGer ** open ResGer, MorphoGer, Prelude in { a = quant.a in { s = \\g,c => quant.s ! num.isNum ! n ! g ! c ++ (let k = (prepC c).c in - num.s!g!k ++ ord.s ! agrAdj g (adjfCase a n k) n k) ; + num.s!g!k ++ ord.s ! agrAdj g (adjfCase a k) n k) ; sp = \\g,c => quant.sp ! n ! g ! c ++ (let k = (prepC c).c in - num.s!g!k ++ ord.s ! agrAdj g (adjfCase a n k) n k) ; + num.s!g!k ++ ord.s ! agrAdj g (adjfCase quant.aPl k) n k) ; n = n ; - a = a + a = case n of {Sg => a ; Pl => quant.aPl} ; } ; DetQuant quant num = @@ -69,14 +69,15 @@ concrete NounGer of Noun = CatGer ** open ResGer, MorphoGer, Prelude in { sp = \\g,c => quant.sp ! n ! g ! c ++ (let k = (prepC c).c in num.s!g!k) ; n = n ; - a = a + a = case n of {Sg => a ; Pl => quant.aPl} ; } ; PossPron p = { s = \\_,n,g,c => usePrepC c (\k -> p.s ! NPPoss (gennum g n) k) ; sp = \\n,g,c => usePrepC c (\k -> p.s ! NPPoss (gennum g n) k) ; - a = Strong --- need separately weak for Pl ? + a = Strong ; + aPl = Weak ; } ; NumCard n = n ** {isNum = True} ; @@ -97,7 +98,7 @@ concrete NounGer of Noun = CatGer ** open ResGer, MorphoGer, Prelude in { DefArt = { s = \\_,n,g,c => artDefContr (gennum g n) c ; sp = \\n,g,c => artDefContr (gennum g n) c ; ---- deren, denem... - a = Weak + a, aPl = Weak } ; IndefArt = { @@ -112,7 +113,7 @@ concrete NounGer of Noun = CatGer ** open ResGer, MorphoGer, Prelude in { Sg => \\g,c => usePrepC c (\k -> (detLikeAdj Sg "ein").s ! g ! NPC k) ; Pl => \\_,c => usePrepC c (\k -> caselist "einige" "einige" "einigen" "einiger" ! k) } ; - a = Strong + a, aPl = Strong } ; MassNP cn = { diff --git a/lib/src/german/ResGer.gf b/lib/src/german/ResGer.gf index 01d6eca93..09778dca4 100644 --- a/lib/src/german/ResGer.gf +++ b/lib/src/german/ResGer.gf @@ -167,8 +167,8 @@ resource ResGer = ParamX ** open Prelude in { -- This is used twice in NounGer. - adjfCase : Adjf -> Number -> Case -> Adjf = \a,n,c -> case of { - => a ; + adjfCase : Adjf -> Case -> Adjf = \a,c -> case c of { + Nom|Acc => a ; _ => Weak } ; diff --git a/lib/src/german/StructuralGer.gf b/lib/src/german/StructuralGer.gf index 03fea3d69..e34dd6092 100644 --- a/lib/src/german/StructuralGer.gf +++ b/lib/src/german/StructuralGer.gf @@ -86,7 +86,7 @@ concrete StructuralGer of Structural = CatGer ** somewhere_Adv = ss "irgendwo" ; that_Quant = let jener : Number => Gender => PCase => Str = \\n => (detLikeAdj n "jen").s in - {s = \\_ => jener ; sp = jener ; a = Weak} ; + {s = \\_ => jener ; sp = jener ; a,aPl = Weak} ; ---b that_NP = nameNounPhrase {s = caselist "das" "das" "denem" "dessen"} ; ---- there_Adv = ss "da" ; there7to_Adv = ss "dahin" ; @@ -96,7 +96,7 @@ concrete StructuralGer of Structural = CatGer ** they_Pron = mkPronPers "sie" "sie" "ihnen" "ihrer" "ihr" Fem Pl P3 ; this_Quant = let dieser : Number => Gender => PCase => Str = \\n => (detLikeAdj n "dies").s in - {s = \\_ => dieser ; sp = dieser ; a = Weak} ; + {s = \\_ => dieser ; sp = dieser ; a,aPl = Weak} ; ---b this_NP = nameNounPhrase {s = caselist "dies" "dies" "diesem" "dieses"} ; ---- ---b those_NP = {s = caselist "jene" "jene" "jenen" "jener" ; a = agrP3 Pl} ; through_Prep = mkPrep "durch" P.accusative ; @@ -137,7 +137,7 @@ concrete StructuralGer of Structural = CatGer ** Pl => (detLikeAdj Pl "kein").s } in - {s = \\_ => keiner ; sp = keiner ; a = Strong} ; ---- sp + {s = \\_ => keiner ; sp = keiner ; a = Strong ; aPl = Weak} ; ---- sp if_then_Conj = {s1 = "wenn" ; s2 = "dann" ; n = Sg ; lock_Conj = <>} ; nobody_NP = nameNounPhrase {s = caselist "niemand" "niemanden" "niemandem" "niemands"} ;