diff --git a/lib/resource-1.0/romance/CatRomance.gf b/lib/resource-1.0/romance/CatRomance.gf index 605df85e5..a9904bd7f 100644 --- a/lib/resource-1.0/romance/CatRomance.gf +++ b/lib/resource-1.0/romance/CatRomance.gf @@ -14,7 +14,10 @@ incomplete concrete CatRomance of Cat = -- Sentence Cl = {s : Tense => Anteriority => Polarity => Mood => Str} ; - Slash = {s : Tense => Anteriority => Polarity => Mood => Str} ** {c2 : Compl} ; + Slash = { + s : AAgr => Tense => Anteriority => Polarity => Mood => Str ; + c2 : Compl + } ; Imp = {s : Polarity => AAgr => Str} ; -- Question diff --git a/lib/resource-1.0/romance/QuestionRomance.gf b/lib/resource-1.0/romance/QuestionRomance.gf index 879ed6346..4c9c47d13 100644 --- a/lib/resource-1.0/romance/QuestionRomance.gf +++ b/lib/resource-1.0/romance/QuestionRomance.gf @@ -25,7 +25,7 @@ incomplete concrete QuestionRomance of Question = QuestSlash ip slash = { s = \\t,a,p => let - cls = slash.s ! t ! a ! p ! Indic ; + cls = slash.s ! ip.a ! t ! a ! p ! Indic ; who = slash.c2.s ++ ip.s ! slash.c2.c in table { QDir => who ++ cls ; diff --git a/lib/resource-1.0/romance/RelativeRomance.gf b/lib/resource-1.0/romance/RelativeRomance.gf index 7ea683125..b9a4f3cd4 100644 --- a/lib/resource-1.0/romance/RelativeRomance.gf +++ b/lib/resource-1.0/romance/RelativeRomance.gf @@ -27,8 +27,11 @@ incomplete concrete RelativeRomance of Relative = RelSlash rp slash = { s = \\ag,t,a,p,m => - slash.c2.s ++ rp.s ! False ! {g = ag.g ; n = ag.n} ! slash.c2.c ++ - slash.s ! t ! a ! p ! m ; + let aag = {g = ag.g ; n = ag.n} + in + slash.c2.s ++ + rp.s ! False ! aag ! slash.c2.c ++ + slash.s ! aag ! t ! a ! p ! m ; --- ragr c = Acc } ; diff --git a/lib/resource-1.0/romance/ResRomance.gf b/lib/resource-1.0/romance/ResRomance.gf index 73b1bc125..a49dc4397 100644 --- a/lib/resource-1.0/romance/ResRomance.gf +++ b/lib/resource-1.0/romance/ResRomance.gf @@ -134,6 +134,20 @@ oper ext = vp.ext ; } ; +-- Agreement with preceding relative or interrogative: +-- "les femmes que j'ai aimées" + + insertAgr : AAgr -> VP -> VP = \ag,vp -> { + s = vp.s ; + agr = vpAgrClit (agrP3 ag.g ag.n) ; + clAcc = vp.clAcc ; + clDat = vp.clDat ; + clit2 = vp.clit2 ; + neg = vp.neg ; + comp = vp.comp ; + ext = vp.ext ; + } ; + insertAdv : Str -> VP -> VP = \co,vp -> { s = vp.s ; agr = vp.agr ; diff --git a/lib/resource-1.0/romance/SentenceRomance.gf b/lib/resource-1.0/romance/SentenceRomance.gf index ca1bd0278..5433ed91b 100644 --- a/lib/resource-1.0/romance/SentenceRomance.gf +++ b/lib/resource-1.0/romance/SentenceRomance.gf @@ -11,23 +11,33 @@ incomplete concrete SentenceRomance of Sentence = ImpVP = mkImperative ; SlashV2 np v2 = - mkClause - (np.s ! Aton Nom) np.a - (predV v2) ** - {c2 = v2.c2} ; + {s = \\ag =>case of { + => + (mkClause (np.s ! Aton Nom) np.a + (insertAgr ag (predV v2))).s ; + _ => (mkClause (np.s ! Aton Nom) np.a (predV v2)).s + } ; + c2 = v2.c2 + } ; SlashVVV2 np vv v2 = - mkClause - (np.s ! Aton Nom) np.a - (insertComplement (\\a => prepCase vv.c2.c ++ v2.s ! VInfin) (predV vv)) ** - {c2 = v2.c2} ; + {s = \\_ => + (mkClause + (np.s ! Aton Nom) np.a + (insertComplement + (\\a => prepCase vv.c2.c ++ v2.s ! VInfin) (predV vv))).s ; + c2 = v2.c2 + } ; AdvSlash slash adv = { - s = \\t,a,b,m => slash.s ! t ! a ! b ! m ++ adv.s ; + s = \\ag,t,a,b,m => slash.s ! ag ! t ! a ! b ! m ++ adv.s ; c2 = slash.c2 } ; - SlashPrep cl prep = cl ** {c2 = {s = prep.s ; c = prep.c ; isDir = False}} ; + SlashPrep cl prep = { + s = \\_ => cl.s ; + c2 = {s = prep.s ; c = prep.c ; isDir = False} + } ; EmbedS s = {s = conjThat ++ s.s ! Indic} ; --- mood EmbedQS qs = {s = qs.s ! QIndir} ;