mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-13 23:09:31 -06:00
participle agreement with RP and IP in romance
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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 ;
|
||||
|
||||
@@ -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
|
||||
} ;
|
||||
|
||||
|
||||
@@ -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 ;
|
||||
|
||||
@@ -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 <v2.c2.c,v2.c2.isDir> of {
|
||||
<Acc,True> =>
|
||||
(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} ;
|
||||
|
||||
Reference in New Issue
Block a user