From 1f030252a1ffbe359bb7b596eb64683ca2bc45b9 Mon Sep 17 00:00:00 2001 From: aarneranta Date: Tue, 14 Apr 2020 16:32:17 +0200 Subject: [PATCH] fixed genitive es/en in German adjectives and determiners --- src/german/MorphoGer.gf | 4 ++++ src/german/NounGer.gf | 2 +- src/german/ResGer.gf | 26 +++++++++++++++++++++++--- src/german/StructuralGer.gf | 12 ++++++------ 4 files changed, 34 insertions(+), 10 deletions(-) diff --git a/src/german/MorphoGer.gf b/src/german/MorphoGer.gf index a2eeea1c4..f7b6a75f7 100644 --- a/src/german/MorphoGer.gf +++ b/src/german/MorphoGer.gf @@ -32,6 +32,10 @@ oper {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} ; + detUnlikeAdj : Bool -> Number -> Str -> + {s,sp : Gender => PCase => Str ; n : Number ; a : Adjf ; isDef : Bool} = \isDef,n,dies -> + {s,sp = appAdj (regDetA dies) ! n ; n = n ; a = Weak ; isDef = isDef} ; + mkOrd : {s : Degree => AForm => Str} -> {s : AForm => Str} = \a -> {s = a.s ! Posit} ; diff --git a/src/german/NounGer.gf b/src/german/NounGer.gf index a7fa50682..8d82510bd 100644 --- a/src/german/NounGer.gf +++ b/src/german/NounGer.gf @@ -157,7 +157,7 @@ concrete NounGer of Noun = CatGer ** open ResGer, MorphoGer, Prelude in { sp = table { True => \\_,_,c => usePrepC c (\k -> []) ; False => table { - Sg => \\g,c => usePrepC c (\k -> (detLikeAdj False Sg "ein").s ! g ! NPC k) ; + Sg => \\g,c => usePrepC c (\k -> (detUnlikeAdj False Sg "ein").s ! g ! NPC k) ; Pl => \\_,c => usePrepC c (\k -> caselist "einige" "einige" "einigen" "einiger" ! k) } } ; diff --git a/src/german/ResGer.gf b/src/german/ResGer.gf index 52a20c693..9e5670056 100644 --- a/src/german/ResGer.gf +++ b/src/german/ResGer.gf @@ -399,6 +399,17 @@ resource ResGer = ParamX ** open Prelude in { in mkA blau blau (blau + "er") blauest ; + regDetA : Str -> Adjective = \blau -> + let + rblau = regA blau ; + dblau = adjFormsDet blau blau + in { + s = table { + Posit => dblau ; + d => rblau.s ! d + } + } ; + regV : Str -> Verb = \legen -> let lege = init legen ; @@ -503,15 +514,24 @@ resource ResGer = ParamX ** open Prelude in { table { APred => teuer ; AMod (GSg Masc) c => - caselist (teur+"er") (teur+"en") (teur+"em") (teur+"es") ! c ; + caselist (teur+"er") (teur+"en") (teur+"em") (teur+"en") ! c ; AMod (GSg Fem) c => caselist (teur+"e") (teur+"e") (teur+"er") (teur+"er") ! c ; - AMod (GSg Neut) c => - caselist (teur+"es") (teur+"es") (teur+"em") (teur+"es") ! c ; + AMod (GSg Neutr) c => + caselist (teur+"es") (teur+"es") (teur+"em") (teur+"en") ! c ; AMod GPl c => caselist (teur+"e") (teur+"e") (teur+"en") (teur+"er") ! c } ; + -- for some determiners, Gen form -es rather than -en + adjFormsDet : (x1,x2 : Str) -> AForm => Str = \teuer,teur -> + let adj = adjForms teuer teur + in + table { + AMod (GSg Masc| GSg Neutr) Gen => teur + "es" ; + a => adj ! a + } ; + -------------------------------------------- --VP CONSTRUCTION -------------------------------------------- diff --git a/src/german/StructuralGer.gf b/src/german/StructuralGer.gf index d4f92ba8b..c7c30dce1 100644 --- a/src/german/StructuralGer.gf +++ b/src/german/StructuralGer.gf @@ -32,7 +32,7 @@ concrete StructuralGer of Structural = CatGer ** during_Prep = mkPrep "während" P.genitive | P.mkPrep P.accusative "über" ; either7or_DConj = sd2 "entweder" "oder" ** {n = Sg} ; everybody_NP = nameNounPhrase {s = caselist "jeder" "jeden" "jedem" "jedes"} ; - every_Det = detLikeAdj False Sg "jed" ; + every_Det = detUnlikeAdj False Sg "jed" ; everything_NP = nameNounPhrase {s = caselist "alles" "alles" "allem" "alles"} ; everywhere_Adv = ss "überall" ; few_Det = detLikeAdj False Pl "wenig" ; @@ -45,7 +45,7 @@ concrete StructuralGer of Structural = CatGer ** here_Adv = ss "hier" ; how_IAdv = ss "wie" ; how8much_IAdv = ss "wieviel" ; - how8many_IDet = {s = \\g,c => (detLikeAdj False Pl "wie viel").s ! g ! NPC c ; n = Pl} ; + how8many_IDet = {s = \\g,c => (detUnlikeAdj False Pl "wie viel").s ! g ! NPC c ; n = Pl} ; if_Subj = ss "wenn" | ss "falls" ; in8front_Prep = mkPrep "vor" P.dative ; i_Pron = mkPronPers "ich" "mich" "mir" "meiner" "mein" Masc Sg P1 ; @@ -88,7 +88,7 @@ concrete StructuralGer of Structural = CatGer ** something_NP = nameNounPhrase {s = \\_ => "etwas"} ; somewhere_Adv = ss "irgendwo" ; that_Quant = let - jener : Number => Gender => PCase => Str = \\n => (detLikeAdj True n "jen").s in + jener : Number => Gender => PCase => Str = \\n => (detUnlikeAdj True n "jen").s in {s,sp = \\_ => jener ; a,aPl = Weak} ; ---b that_NP = nameNounPhrase {s = caselist "das" "das" "denem" "dessen"} ; ---- there_Adv = ss "da" | ss "dort" ; @@ -98,7 +98,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 True n "dies").s in + dieser : Number => Gender => PCase => Str = \\n => (detUnlikeAdj True n "dies").s in {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} ; @@ -121,7 +121,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 True n "welch").s ! g ! NPC c} ; + which_IQuant = {s = \\n,g,c => (detUnlikeAdj 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 = Sg} ; -- HL 6/2016 @@ -137,7 +137,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 False Pl "kein").s + Pl => (detUnlikeAdj False Pl "kein").s } in {s,sp = \\_ => keiner ; a = Strong ; aPl = Weak} ; ---- sp