German relative "was" in RelS

This commit is contained in:
aarne
2015-07-21 15:00:35 +00:00
parent b0a4dfeddd
commit e366ca76fd
7 changed files with 24 additions and 15 deletions

View File

@@ -10,7 +10,7 @@ concrete CatGer of Cat =
S = {s : Order => Str} ; S = {s : Order => Str} ;
QS = {s : QForm => Str} ; QS = {s : QForm => Str} ;
RS = {s : GenNum => Str ; c : Case} ; RS = {s : RelGenNum => Str ; c : Case} ;
SSlash = {s : Order => Str} ** {c2 : Preposition} ; SSlash = {s : Order => Str} ** {c2 : Preposition} ;
-- Sentence -- Sentence
@@ -32,8 +32,8 @@ concrete CatGer of Cat =
-- Relative -- Relative
RCl = {s : Mood => ResGer.Tense => Anteriority => Polarity => GenNum => Str ; c : Case} ; RCl = {s : Mood => ResGer.Tense => Anteriority => Polarity => RelGenNum => Str ; c : Case} ;
RP = {s : GenNum => Case => Str ; a : RAgr} ; RP = {s : RelGenNum => Case => Str ; a : RAgr} ;
-- Verb -- Verb

View File

@@ -17,7 +17,7 @@ concrete ConjunctionGer of Conjunction =
isPre = ss.isPre isPre = ss.isPre
} ; } ;
ConjRS conj ss = conjunctDistrTable GenNum conj ss ** { ConjRS conj ss = conjunctDistrTable RelGenNum conj ss ** {
c = ss.c 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} ; 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} ; 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} ; ConsAP xs x = consrTable AForm comma xs x ** {isPre = andB xs.isPre x.isPre} ;
BaseRS x y = twoTable GenNum x y ** {c = y.c} ; BaseRS x y = twoTable RelGenNum x y ** {c = y.c} ;
ConsRS xs x = consrTable GenNum comma xs x ** {c = xs.c} ; ConsRS xs x = consrTable RelGenNum comma xs x ** {c = xs.c} ;
lincat lincat
[S] = {s1,s2 : Order => Str} ; [S] = {s1,s2 : Order => Str} ;
[Adv] = {s1,s2 : Str} ; [Adv] = {s1,s2 : Str} ;
[NP] = {s1,s2 : PCase => Str ; a : Agr} ; [NP] = {s1,s2 : PCase => Str ; a : Agr} ;
[AP] = {s1,s2 : AForm => Str ; isPre : Bool} ; [AP] = {s1,s2 : AForm => Str ; isPre : Bool} ;
[RS] = {s1,s2 : GenNum => Str ; c : Case} ; [RS] = {s1,s2 : RelGenNum => Str ; c : Case} ;
} }

View File

@@ -9,7 +9,7 @@ concrete IdiomGer of Idiom = CatGer **
GenericCl vp = mkClause "man" (agrP3 Sg) vp ; GenericCl vp = mkClause "man" (agrP3 Sg) vp ;
CleftNP np rs = mkClause "es" (agrP3 Sg) 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))) ; (insertObj (\\_ => np.s ! NPC rs.c) (predV MorphoGer.sein_V))) ;
CleftAdv ad s = mkClause "es" (agrP3 Sg) CleftAdv ad s = mkClause "es" (agrP3 Sg)

View File

@@ -174,13 +174,13 @@ concrete NounGer of Noun = CatGer ** open ResGer, MorphoGer, Prelude in {
RelCN cn rs = { RelCN cn rs = {
s = \\a,n,c => cn.s ! a ! n ! c ++ "," ++ 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 g = cn.g
} ; } ;
RelNP np rs = { RelNP np rs = {
s = \\c => np.s ! c ++ "," ++ 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 ; a = np.a ;
isPron = False isPron = False
} ; } ;

View File

@@ -10,13 +10,17 @@ concrete RelativeGer of Relative = CatGer ** open ResGer in {
} ; } ;
RelVP rp vp = { RelVP rp vp = {
s = \\m,t,ant,b,gn => s = \\m,t,ant,b,rgn =>
let let
gn = case rgn of {
RGenNum gf => gf ;
RSentence => GSg Neutr
} ;
agr = case rp.a of { agr = case rp.a of {
RNoAg => agrP3 (numGenNum gn) ; RNoAg => agrP3 (numGenNum gn) ;
RAg n p => Ag Neutr n p RAg n p => Ag Neutr n p
} ; } ;
cl = mkClause (rp.s ! gn ! Nom) agr vp cl = mkClause (rp.s ! rgn ! Nom) agr vp
in in
cl.s ! m ! t ! ant ! b ! Sub ; cl.s ! m ! t ! ant ! b ! Sub ;
c = Nom c = Nom

View File

@@ -29,6 +29,7 @@ resource ResGer = ParamX ** open Prelude in {
-- Gender distinctions are only made in the singular. -- Gender distinctions are only made in the singular.
GenNum = GSg Gender | GPl ; GenNum = GSg Gender | GPl ;
RelGenNum = RGenNum GenNum | RSentence ;
-- Agreement of $NP$ has three parts. -- Agreement of $NP$ has three parts.
@@ -801,7 +802,9 @@ resource ResGer = ParamX ** open Prelude in {
np ** {isPron = False} ; np ** {isPron = False} ;
oper oper
relPron : GenNum => Case => Str = \\gn,c => relPron : RelGenNum => Case => Str = \\rgn,c =>
case rgn of {
RGenNum gn =>
case <gn,c> of { case <gn,c> of {
<GSg Fem,Gen> => "deren" ; <GSg Fem,Gen> => "deren" ;
<GSg g,Gen> => "dessen" ; <GSg g,Gen> => "dessen" ;
@@ -809,5 +812,7 @@ resource ResGer = ParamX ** open Prelude in {
<GPl,Gen> => "deren" ; <GPl,Gen> => "deren" ;
_ => artDef ! gn ! c _ => artDef ! gn ! c
} ; } ;
RSentence => "was"
} ;
} }

View File

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