{
%% Last coord may be preceded by a comma
%% example: il mange, mais il boit aussi
node(Root).cat = value(S);
node Coord2: [cat:S, type: subst, bot: [mode: $mode, sat: -, extraction: $extraction]];
node Coord3: [bot: [sat: -, extraction: $extraction]];
Coord3 +
node(Coord3).bot.mode = $mode
|
node(Foot).bot.mode = value(-),
node(Coord3).bot.mode = value(~ -)
|
node(Foot).bot.mode = value(indicative),
node(Coord3).bot.mode = value(conditional)
|
node(Foot).bot.mode = value(conditional),
node(Coord3).bot.mode = value(indicative)
|
( node(Foot).bot.mode = value(~imperative|infinitive|participle|gerundive|-),
node(Coord3).bot.mode = value(imperative)
|
node(Foot).bot.mode = value(imperative),
node(Coord3).bot.mode = value(~imperative|infinitive|participle|gerundive|-)
),
node(Anchor).lex = value(mais|et)
;
%% the following is an approximation
%% example: il a mangé et dormi
%% example: il veut manger et dormir
%% but we have no way to know that the Foot Sentence
%% is an auxiliary or a modal (but by adding a new feature)
node(Foot).bot.mode = node(Coord2).bot.mode;
node(Root).bot.mode = node(Foot).bot.mode;
% node(Root).bot.extraction = $extraction;
node(Root).bot.sat = value(-);
% node(Foot).bot.extraction = $extraction;
node(Root).bot.extraction = node(Foot).bot.extraction;
node(Root).bot.xarg=node(Foot).bot.xarg;
node(Foot).bot.sat = value(-);
node(Root).bot.control = node(Foot).bot.control;
node(Foot).bot.xarg.trace = value(-);
%% coord do not change many S features
%% should have a way to express that in a easier way
node(Root).bot.inv = node(Foot).bot.inv;
node(Root).bot.cat = node(Foot).bot.cat;
node(Root).bot.tense = node(Foot).bot.tense;
node(Root).bot.neg = node(Foot).bot.neg;
node(Root).bot.person = node(Foot).bot.person;
node(Root).bot.gender = node(Foot).bot.gender;
node(Root).bot.wh = node(Foot).bot.wh;
node(Root).bot.number = node(Foot).bot.number;
Anchor +
node(Coord2).bot.xarg = node(Coord3).bot.xarg,
node(Coord3).bot.xarg = value([case:$case,gender:$gender,number:$number,trace:+]),
node(Foot).bot.xarg = value([case:$case,gender:$gender,number:$number]),
node(Coord3).bot.xarg.case = value(-|nom)
|
node(Coord2).bot.xarg.trace = value(-),
node(Coord3).bot.xarg.trace = value(-)
;
%% sometime we coordinate sentences build with a mod_extraction
%% we have a pb because verb_*_extraction_* require its foot to be
%% extraction in estcaue|adjx
%% example: où habites-tu et que fais-tu ?
%% example: j'aime cette maison où tu habites et que tu veux quitter
%% however, the following constraint doesn't rule out the coord of a
%% wh-sentence with a relative sentence !
%% maybe we should use the wh-feature to indicate that we are inside a
%% relative sentence
Anchor +
node(Root).bot.extraction = $extraction
|
node(Foot).top.extraction = value(estceaux|adjx),
node(Foot).top.wh = node(Coord3).bot.wh
;
%% The last coord may be of the form ce + Vmod
%% example: il mange, et ce quoi que je dise
SeqLast >> Alt3; node Alt3 : [type: alternative];
Alt3 >> Coord3;
Coord3 +
node(pas).dummy.is_present = value(-);
Alt3 >> VMod_ce; Coord3 < VMod_ce;
node VMod_ce: [type: std, id:vmod, cat:VMod, adj: strict, bot: [position: post,cat: S|PP|CS|adv|N2|pro]];
VMod_ce >> ce;
node ce: [type: coanchor, cat: ce, lex:ce, id: coord3];
VMod_ce +
node(Anchor).lex = value(et|mais);
%% The last coord may be many things for some coo like comme, mais, car
Alt3 >> CS;
VMod_ce < CS;
node CS: [cat: CS, type: subst, id: coord3, bot : [ que: ~que ]];
CS +
node(Anchor).lex = value(mais);
Alt3 >> adjP;
CS < adjP;
node adjP : [cat: adjP, id: coord3, type: subst];
adjP +
node(Seq).dummy.coord2 = value(-),
node(Anchor).lex = value(car);
Alt3 >> PP;
adjP < PP;
node PP: [cat: PP, id:coord3, type: subst];
PP +
node(Seq).dummy.coord2 = value(-),
node(Anchor).lex = value(car|mais|comme|et);
Alt3 >> adv;
PP < adv;
node adv: [cat: adv, id:coord3, type: coanchor];
adv +
node(Seq).dummy.coord2 = value(-),
node(Anchor).lex = value(et|mais);
Alt3 >> N2;
adv < N2;
node N2: [cat: N2, id: coord3, type: subst, bot: [sat: +]];
N2 +
node(Seq).dummy.coord2 = value(-),
node(Anchor).lex = value(et|mais|comme|'ainsi que'|'au même titre que')
;
N2 +
node(Anchor).lex = value(comme|'ainsi que'|'au même titre que')
|
node(Anchor).lex = value(et|mais),
node(pas).dummy.is_present= value(+)
;
}
Ajouter un commentaire