From e366ca76fda31d4f3fa2b23d535dfee77dc20827 Mon Sep 17 00:00:00 2001 From: aarne Date: Tue, 21 Jul 2015 15:00:35 +0000 Subject: [PATCH] German relative "was" in RelS --- lib/src/german/CatGer.gf | 6 +++--- lib/src/german/ConjunctionGer.gf | 8 ++++---- lib/src/german/IdiomGer.gf | 2 +- lib/src/german/NounGer.gf | 4 ++-- lib/src/german/RelativeGer.gf | 10 +++++++--- lib/src/german/ResGer.gf | 7 ++++++- lib/src/german/SentenceGer.gf | 2 +- 7 files changed, 24 insertions(+), 15 deletions(-) diff --git a/lib/src/german/CatGer.gf b/lib/src/german/CatGer.gf index 7b0691cb5..2f9c50a6d 100644 --- a/lib/src/german/CatGer.gf +++ b/lib/src/german/CatGer.gf @@ -10,7 +10,7 @@ concrete CatGer of Cat = S = {s : Order => Str} ; QS = {s : QForm => Str} ; - RS = {s : GenNum => Str ; c : Case} ; + RS = {s : RelGenNum => Str ; c : Case} ; SSlash = {s : Order => Str} ** {c2 : Preposition} ; -- Sentence @@ -32,8 +32,8 @@ concrete CatGer of Cat = -- Relative - RCl = {s : Mood => ResGer.Tense => Anteriority => Polarity => GenNum => Str ; c : Case} ; - RP = {s : GenNum => Case => Str ; a : RAgr} ; + RCl = {s : Mood => ResGer.Tense => Anteriority => Polarity => RelGenNum => Str ; c : Case} ; + RP = {s : RelGenNum => Case => Str ; a : RAgr} ; -- Verb diff --git a/lib/src/german/ConjunctionGer.gf b/lib/src/german/ConjunctionGer.gf index 52d2cdf8d..739250ad7 100644 --- a/lib/src/german/ConjunctionGer.gf +++ b/lib/src/german/ConjunctionGer.gf @@ -17,7 +17,7 @@ concrete ConjunctionGer of Conjunction = isPre = ss.isPre } ; - ConjRS conj ss = conjunctDistrTable GenNum conj ss ** { + ConjRS conj ss = conjunctDistrTable RelGenNum conj ss ** { c = ss.c } ; @@ -39,14 +39,14 @@ concrete ConjunctionGer of Conjunction = ConsNP xs x = consrTable PCase comma xs x ** {a = conjAgr xs.a x.a} ; BaseAP x y = twoTable AForm x y ** {isPre = andB x.isPre y.isPre} ; ConsAP xs x = consrTable AForm comma xs x ** {isPre = andB xs.isPre x.isPre} ; - BaseRS x y = twoTable GenNum x y ** {c = y.c} ; - ConsRS xs x = consrTable GenNum comma xs x ** {c = xs.c} ; + BaseRS x y = twoTable RelGenNum x y ** {c = y.c} ; + ConsRS xs x = consrTable RelGenNum comma xs x ** {c = xs.c} ; lincat [S] = {s1,s2 : Order => Str} ; [Adv] = {s1,s2 : Str} ; [NP] = {s1,s2 : PCase => Str ; a : Agr} ; [AP] = {s1,s2 : AForm => Str ; isPre : Bool} ; - [RS] = {s1,s2 : GenNum => Str ; c : Case} ; + [RS] = {s1,s2 : RelGenNum => Str ; c : Case} ; } diff --git a/lib/src/german/IdiomGer.gf b/lib/src/german/IdiomGer.gf index 8c52b6487..0d5a0a8f4 100644 --- a/lib/src/german/IdiomGer.gf +++ b/lib/src/german/IdiomGer.gf @@ -9,7 +9,7 @@ concrete IdiomGer of Idiom = CatGer ** GenericCl vp = mkClause "man" (agrP3 Sg) vp ; CleftNP np rs = mkClause "es" (agrP3 Sg) - (insertExtrapos (rs.s ! gennum (genderAgr np.a) (numberAgr np.a)) ---- + (insertExtrapos (rs.s ! RGenNum (gennum (genderAgr np.a) (numberAgr np.a))) ---- (insertObj (\\_ => np.s ! NPC rs.c) (predV MorphoGer.sein_V))) ; CleftAdv ad s = mkClause "es" (agrP3 Sg) diff --git a/lib/src/german/NounGer.gf b/lib/src/german/NounGer.gf index fb2115cce..f707eae71 100644 --- a/lib/src/german/NounGer.gf +++ b/lib/src/german/NounGer.gf @@ -174,13 +174,13 @@ concrete NounGer of Noun = CatGer ** open ResGer, MorphoGer, Prelude in { RelCN cn rs = { s = \\a,n,c => cn.s ! a ! n ! c ++ "," ++ - rs.s ! gennum cn.g n ; + rs.s ! RGenNum (gennum cn.g n) ; g = cn.g } ; RelNP np rs = { s = \\c => np.s ! c ++ "," ++ - rs.s ! gennum (genderAgr np.a) (numberAgr np.a) ; + rs.s ! RGenNum (gennum (genderAgr np.a) (numberAgr np.a)) ; a = np.a ; isPron = False } ; diff --git a/lib/src/german/RelativeGer.gf b/lib/src/german/RelativeGer.gf index 5ac41dbda..2a97913bb 100644 --- a/lib/src/german/RelativeGer.gf +++ b/lib/src/german/RelativeGer.gf @@ -10,13 +10,17 @@ concrete RelativeGer of Relative = CatGer ** open ResGer in { } ; RelVP rp vp = { - s = \\m,t,ant,b,gn => - let + s = \\m,t,ant,b,rgn => + let + gn = case rgn of { + RGenNum gf => gf ; + RSentence => GSg Neutr + } ; agr = case rp.a of { RNoAg => agrP3 (numGenNum gn) ; RAg n p => Ag Neutr n p } ; - cl = mkClause (rp.s ! gn ! Nom) agr vp + cl = mkClause (rp.s ! rgn ! Nom) agr vp in cl.s ! m ! t ! ant ! b ! Sub ; c = Nom diff --git a/lib/src/german/ResGer.gf b/lib/src/german/ResGer.gf index 1fe6dab0a..870d59d81 100644 --- a/lib/src/german/ResGer.gf +++ b/lib/src/german/ResGer.gf @@ -29,6 +29,7 @@ resource ResGer = ParamX ** open Prelude in { -- Gender distinctions are only made in the singular. GenNum = GSg Gender | GPl ; + RelGenNum = RGenNum GenNum | RSentence ; -- Agreement of $NP$ has three parts. @@ -801,7 +802,9 @@ resource ResGer = ParamX ** open Prelude in { np ** {isPron = False} ; oper - relPron : GenNum => Case => Str = \\gn,c => + relPron : RelGenNum => Case => Str = \\rgn,c => + case rgn of { + RGenNum gn => case of { => "deren" ; => "dessen" ; @@ -809,5 +812,7 @@ resource ResGer = ParamX ** open Prelude in { => "deren" ; _ => artDef ! gn ! c } ; + RSentence => "was" + } ; } diff --git a/lib/src/german/SentenceGer.gf b/lib/src/german/SentenceGer.gf index 1268bb672..2cc36edad 100644 --- a/lib/src/german/SentenceGer.gf +++ b/lib/src/german/SentenceGer.gf @@ -66,6 +66,6 @@ concrete SentenceGer of Sentence = CatGer ** open ResGer, Prelude in { SSubjS a s b = {s = \\o => a.s ! o ++ "," ++ s.s ++ b.s ! Sub} ; - RelS s r = {s = \\o => s.s ! o ++ "," ++ r.s ! gennum Neutr Sg} ; --- "welches" + RelS s r = {s = \\o => s.s ! o ++ "," ++ r.s ! RSentence} ; --- "welches" }