diff --git a/lib/src/german/CatGer.gf b/lib/src/german/CatGer.gf index a7df0c92c..cbbd84825 100644 --- a/lib/src/german/CatGer.gf +++ b/lib/src/german/CatGer.gf @@ -50,7 +50,7 @@ concrete CatGer of Cat = CN = {s : Adjf => Number => Case => Str ; g : Gender} ; NP = {s : PCase => Str ; a : Agr ; isPron : Bool} ; Pron = {s : NPForm => Str ; a : Agr} ; - Det = {s,sp : Gender => PCase => Str ; n : Number ; a : Adjf} ; + Det = {s,sp : Gender => PCase => Str ; n : Number ; a : Adjf ; isDef : Bool} ; Quant = { s : Bool => Number => Gender => PCase => Str ; sp : Number => Gender => PCase => Str ; diff --git a/lib/src/german/MorphoGer.gf b/lib/src/german/MorphoGer.gf index a7c3a6e1b..e740707b1 100644 --- a/lib/src/german/MorphoGer.gf +++ b/lib/src/german/MorphoGer.gf @@ -24,9 +24,9 @@ oper a = agrP3 Sg } ; - detLikeAdj : Number -> Str -> - {s,sp : Gender => PCase => Str ; n : Number ; a : Adjf} = \n,dies -> - {s,sp = appAdj (regA dies) ! n ; n = n ; a = Weak} ; + detLikeAdj : Bool -> Number -> Str -> + {s,sp : Gender => PCase => Str ; n : Number ; a : Adjf ; isDef : Bool} = \isDef,n,dies -> + {s,sp = appAdj (regA dies) ! n ; n = n ; a = Weak ; isDef = isDef} ; mkOrd : {s : Degree => AForm => Str} -> {s : AForm => Str} = \a -> {s = a.s ! Posit} ; diff --git a/lib/src/german/NounGer.gf b/lib/src/german/NounGer.gf index 2c3d2ec5f..bcd998614 100644 --- a/lib/src/german/NounGer.gf +++ b/lib/src/german/NounGer.gf @@ -7,13 +7,13 @@ concrete NounGer of Noun = CatGer ** open ResGer, MorphoGer, Prelude in { s = \\c => det.s ! cn.g ! c ++ (let k = (prepC c).c in cn.s ! adjfCase det.a k ! det.n ! k) ; a = agrgP3 cn.g det.n ; - isPron = False + isPron = det.isDef -- ich sehe den Mann nicht vs. ich sehe nicht einen Mann } ; DetNP det = { s = \\c => det.sp ! Neutr ! c ; -- more genders in ExtraGer a = agrP3 det.n ; - isPron = False + isPron = det.isDef } ; UsePN pn = { @@ -57,6 +57,7 @@ concrete NounGer of Noun = CatGer ** open ResGer, MorphoGer, Prelude 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} ; + isDef = case of { => False ; _ => True} ; } ; DetQuant quant num = @@ -70,6 +71,7 @@ concrete NounGer of Noun = CatGer ** open ResGer, MorphoGer, Prelude in { num.s!g!k) ; n = n ; a = case n of {Sg => a ; Pl => quant.aPl} ; + isDef = case of { => False ; _ => True} ; } ; @@ -110,7 +112,7 @@ concrete NounGer of Noun = CatGer ** open ResGer, MorphoGer, Prelude in { } } ; sp = table { - Sg => \\g,c => usePrepC c (\k -> (detLikeAdj Sg "ein").s ! g ! NPC k) ; + 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 6edc9a7e9..ffaf1f12b 100644 --- a/lib/src/german/StructuralGer.gf +++ b/lib/src/german/StructuralGer.gf @@ -31,10 +31,10 @@ concrete StructuralGer of Structural = CatGer ** during_Prep = mkPrep "während" P.genitive ; either7or_DConj = sd2 "entweder" "oder" ** {n = Sg} ; everybody_NP = nameNounPhrase {s = caselist "jeder" "jeden" "jedem" "jedes"} ; - every_Det = detLikeAdj Sg "jed" ; + every_Det = detLikeAdj False Sg "jed" ; everything_NP = nameNounPhrase {s = caselist "alles" "alles" "allem" "alles"} ; everywhere_Adv = ss "überall" ; - few_Det = detLikeAdj Pl "wenig" ; + few_Det = detLikeAdj False Pl "wenig" ; ---- first_Ord = {s = (regA "erst").s ! Posit} ; for_Prep = mkPrep "für" P.accusative ; from_Prep = mkPrep "aus" P.dative ; @@ -44,17 +44,17 @@ concrete StructuralGer of Structural = CatGer ** here_Adv = ss "hier" ; how_IAdv = ss "wie" ; how8much_IAdv = ss "wieviel" ; - how8many_IDet = {s = \\g,c => (detLikeAdj Pl "wieviel").s ! g ! NPC c ; n = Pl} ; + how8many_IDet = {s = \\g,c => (detLikeAdj False Pl "wieviel").s ! g ! NPC c ; n = Pl} ; if_Subj = ss "wenn" ; in8front_Prep = mkPrep "vor" P.dative ; i_Pron = mkPronPers "ich" "mich" "mir" "meiner" "mein" Masc Sg P1 ; in_Prep = mkPrep [] (NPP CInDat) ; it_Pron = mkPronPers "es" "es" "ihm" "seiner" "sein" Neutr Sg P3 ; less_CAdv = X.mkCAdv "weniger" "als" ; - many_Det = detLikeAdj Pl "viel" ; + many_Det = detLikeAdj False Pl "viel" ; more_CAdv = X.mkCAdv "mehr" "als" ; most_Predet = {s = appAdj (regA "meist") ; c = noCase ; a = PAgNone} ; - much_Det = detLikeAdj Sg "viel" ; + much_Det = detLikeAdj False Sg "viel" ; must_VV = auxVV (mkV "müssen" "muß" "mußt" "muß" "müßt" "müß" @@ -75,18 +75,19 @@ concrete StructuralGer of Structural = CatGer ** she_Pron = mkPronPers "sie" "sie" "ihr" "ihrer" "ihr" Fem Sg P3 ; so_AdA = ss "so" ; somebody_NP = nameNounPhrase {s = caselist "jemand" "jemanden" "jemandem" "jemands"} ; - somePl_Det = detLikeAdj Pl "einig" ; + somePl_Det = detLikeAdj True Pl "einig" ; someSg_Det = { s,sp = \\g,c => usePrepC c (\k -> "ein" + pronEnding ! GSg g ! k) ; ---- einer,eines n = Sg ; a = Strong ; - hasNum = True + hasNum = True ; + isDef = False ; } ; something_NP = nameNounPhrase {s = \\_ => "etwas"} ; somewhere_Adv = ss "irgendwo" ; that_Quant = let - jener : Number => Gender => PCase => Str = \\n => (detLikeAdj n "jen").s in + jener : Number => Gender => PCase => Str = \\n => (detLikeAdj True n "jen").s in {s = \\_ => jener ; sp = jener ; a,aPl = Weak} ; ---b that_NP = nameNounPhrase {s = caselist "das" "das" "denem" "dessen"} ; ---- there_Adv = ss "da" ; @@ -96,7 +97,7 @@ concrete StructuralGer of Structural = CatGer ** ---b these_NP = {s = caselist "diese" "diese" "diesen" "dieser" ; a = agrP3 Pl} ; 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 + dieser : Number => Gender => PCase => Str = \\n => (detLikeAdj True n "dies").s in {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} ; @@ -119,7 +120,7 @@ concrete StructuralGer of Structural = CatGer ** when_IAdv = ss "wann" ; when_Subj = ss "wenn" ; where_IAdv = ss "wo" ; - which_IQuant = {s = \\n,g,c => (detLikeAdj n "welch").s ! g ! NPC c} ; + which_IQuant = {s = \\n,g,c => (detLikeAdj True n "welch").s ! g ! NPC c} ; whoSg_IP = {s = caselist "wer" "wen" "wem" "wessen" ; n = Sg} ; whoPl_IP = {s = caselist "wer" "wen" "wem" "wessen" ; n = Pl} ; @@ -135,7 +136,7 @@ concrete StructuralGer of Structural = CatGer ** no_Quant = let keiner : Number => Gender => PCase => Str = table { Sg => \\g,c => usePrepC c (\k -> "kein" + pronEnding ! GSg g ! k) ; - Pl => (detLikeAdj Pl "kein").s + Pl => (detLikeAdj False Pl "kein").s } in {s = \\_ => keiner ; sp = keiner ; a = Strong ; aPl = Weak} ; ---- sp diff --git a/lib/src/german/VerbGer.gf b/lib/src/german/VerbGer.gf index e54dceb87..81ca154da 100644 --- a/lib/src/german/VerbGer.gf +++ b/lib/src/german/VerbGer.gf @@ -43,7 +43,7 @@ concrete VerbGer of Verb = CatGer ** open Prelude, ResGer, Coordination in { SlashV2A v ap = insertObj (\\_ => ap.s ! APred) (predV v) ** {c2 = v.c2} ; - ComplSlash vp np = insertObjNP True (\\_ => appPrep vp.c2 np.s) vp ; + ComplSlash vp np = insertObjNP np.isPron (\\_ => appPrep vp.c2 np.s) vp ; SlashVV v vp = let