diff --git a/lib/src/german/CatGer.gf b/lib/src/german/CatGer.gf index 7dd5f7ce4..88bd3d1b9 100644 --- a/lib/src/german/CatGer.gf +++ b/lib/src/german/CatGer.gf @@ -52,8 +52,8 @@ concrete CatGer of Cat = Pron = {s : NPForm => Str ; a : Agr} ; Det = {s,sp : Gender => PCase => Str ; n : Number ; a : Adjf ; isDef : Bool} ; Quant = { - s : Bool => Number => Gender => PCase => Str ; - sp : Number => Gender => PCase => Str ; + s : Bool => Number => Gender => PCase => Str ; -- Bool is True if a cardinal number is present + sp : Bool => Number => Gender => PCase => Str ; a : Adjf ; aPl : Adjf ; --- to distinguish "meine guten Freunde" / "gute Freunde" } ; diff --git a/lib/src/german/NounGer.gf b/lib/src/german/NounGer.gf index bcd998614..9a317712a 100644 --- a/lib/src/german/NounGer.gf +++ b/lib/src/german/NounGer.gf @@ -51,9 +51,9 @@ concrete NounGer of Noun = CatGer ** open ResGer, MorphoGer, Prelude in { n = num.n ; a = quant.a in { - s = \\g,c => quant.s ! num.isNum ! n ! g ! c ++ (let k = (prepC c).c 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 k) n k) ; - sp = \\g,c => quant.sp ! n ! g ! c ++ (let k = (prepC c).c in + sp = \\g,c => quant.sp ! num.isNum ! n ! g ! c ++ (let k = (prepC c).c in num.s!g!k ++ ord.s ! agrAdj g (adjfCase quant.aPl k) n k) ; n = n ; a = case n of {Sg => a ; Pl => quant.aPl} ; @@ -65,9 +65,9 @@ concrete NounGer of Noun = CatGer ** open ResGer, MorphoGer, Prelude in { n = num.n ; a = quant.a in { - s = \\g,c => quant.s ! num.isNum ! n ! g ! c ++ (let k = (prepC c).c in + s = \\g,c => quant.s ! num.isNum ! n ! g ! c ++ (let k = (prepC c).c in num.s!g!k) ; - sp = \\g,c => quant.sp ! n ! g ! c ++ (let k = (prepC c).c in + sp = \\g,c => quant.sp ! num.isNum ! n ! g ! c ++ (let k = (prepC c).c in num.s!g!k) ; n = n ; a = case n of {Sg => a ; Pl => quant.aPl} ; @@ -77,7 +77,7 @@ concrete NounGer of Noun = CatGer ** open ResGer, MorphoGer, Prelude in { 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) ; + sp = \\_,n,g,c => usePrepC c (\k -> p.s ! NPPoss (gennum g n) k) ; a = Strong ; aPl = Weak ; } ; @@ -99,7 +99,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... + sp = \\_,n,g,c => artDefContr (gennum g n) c ; ---- deren, denem... a, aPl = Weak } ; @@ -112,8 +112,11 @@ concrete NounGer of Noun = CatGer ** open ResGer, MorphoGer, Prelude in { } } ; sp = table { - Sg => \\g,c => usePrepC c (\k -> (detLikeAdj False Sg "ein").s ! g ! NPC k) ; - Pl => \\_,c => usePrepC c (\k -> caselist "einige" "einige" "einigen" "einiger" ! k) + True => \\_,_,c => usePrepC c (\k -> []) ; + False => table { + Sg => \\g,c => usePrepC c (\k -> (detLikeAdj False Sg "ein").s ! g ! NPC k) ; + Pl => \\_,c => usePrepC c (\k -> caselist "einige" "einige" "einigen" "einiger" ! k) + } } ; a, aPl = Strong } ; diff --git a/lib/src/german/StructuralGer.gf b/lib/src/german/StructuralGer.gf index cf74f3d75..2708af50e 100644 --- a/lib/src/german/StructuralGer.gf +++ b/lib/src/german/StructuralGer.gf @@ -88,7 +88,7 @@ concrete StructuralGer of Structural = CatGer ** somewhere_Adv = ss "irgendwo" ; that_Quant = let jener : Number => Gender => PCase => Str = \\n => (detLikeAdj True n "jen").s in - {s = \\_ => jener ; sp = jener ; a,aPl = Weak} ; + {s,sp = \\_ => jener ; a,aPl = Weak} ; ---b that_NP = nameNounPhrase {s = caselist "das" "das" "denem" "dessen"} ; ---- there_Adv = ss "da" ; there7to_Adv = ss "dahin" ; @@ -98,7 +98,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 True n "dies").s in - {s = \\_ => dieser ; sp = dieser ; a,aPl = Weak} ; + {s,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 ; @@ -139,7 +139,7 @@ concrete StructuralGer of Structural = CatGer ** Pl => (detLikeAdj False Pl "kein").s } in - {s = \\_ => keiner ; sp = keiner ; a = Strong ; aPl = Weak} ; ---- sp + {s,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"} ;