1
0
forked from GitHub/gf-rgl

fixed genitive es/en in German adjectives and determiners

This commit is contained in:
aarneranta
2020-04-14 16:32:17 +02:00
parent 08b6910eb8
commit 1f030252a1
4 changed files with 34 additions and 10 deletions

View File

@@ -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} ;

View File

@@ -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)
}
} ;

View File

@@ -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
--------------------------------------------

View File

@@ -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