{
%% advneg (pas, point, non, ..) before verb
%% example: ne pas fumer
node advneg:[cat: advneg, id:advneg, type:coanchor];
advneg =>
node(S).bot.neg = value(+),
node(Infl).top.mode = value(infinitive|participle|adjective);
V1 >> advneg;
clneg < advneg;
node proobj: [cat: pro, id:object, type:coanchor, lex: rien|tout];
V1 >> proobj;
advneg < proobj;
node(proobj).dummy.argobj = value([ extracted: -,
kind: obj|acomp,
pcas: -,
real: antepro ]);
proobj =>
node(v).cat = value(v),
node(Infl).top.mode = value(infinitive),
desc.dummy.proobj.position = value('before_clitics');
~ proobj =>
desc.dummy.proobj.position = value(-|'before_v');
v +
desc.dummy.proobj.position = value('before_clitics'|'before_v'),
(
desc.ht.arg0 = node(proobj).dummy.argobj
|
desc.ht.arg1 = node(proobj).dummy.argobj
|
desc.ht.arg1 = node(proobj).dummy.argobj
)
|
desc.dummy.proobj.position = value(-),
desc.dummy.proobj.position = value(-),
desc.ht.arg0.real = value(~antepro),
desc.ht.arg1.real = value(~antepro),
desc.ht.arg2.real = value(~antepro)
;
node clr:[cat:clr, id:clr, type:coanchor,adj:no];
node(clr).top.number = node(V1).bot.number;
node(clr).top.person = node(V1).bot.person;
node(clr).dummy.argobj = value([kind: obj, pcas: -, real: clr]);
node(clr).dummy.argprepobj = value([kind: prepobj, pcas: à|avec, real: clr, function: objà]);
clr =>
desc.dummy.clr = value(+),
node(Infl).top.mode = value(~imperative),
node(Infl).bot.aux_req = value(être),
node(ante::clseq).excl = value(-|ante)
;
~ clr =>
desc.dummy.clr = value(-),
desc.ht.arg1.real = value(~clr),
desc.ht.arg2.real = value(~clr),
( desc.ht.refl = value(-),
node(Infl).bot.aux_req = node(v).top.aux_req
|
%% reflexive verbs may be used with imperative mode
%% example: souviens-toi !
desc.ht.refl = value(+),
node(Infl).top.mode = value(imperative)
)
;
v +
desc.dummy.clr = value(-),
desc.ht.arg1.real = value(~clr),
desc.ht.arg2.real = value(~clr)
|
desc.dummy.clr = value(+),
( desc.ht.refl = value(+),
desc.ht.arg1.real = value(~clr),
desc.ht.arg2.real = value(~clr)
|
desc.ht.refl = value(-),
(
desc.ht.arg2.real = value(~clr),
( desc.ht.arg1 = node(clr).dummy.argobj
|
desc.ht.arg1 = node(clr).dummy.argprepobj
)
|
desc.ht.arg1.real = value(~clr),
( desc.ht.arg2 = node(clr).dummy.argobj
|
desc.ht.arg2 = node(clr).dummy.argprepobj
)
|
%% a clr may be attached to an object
%% example: il se coupe la main
%% see also the case with cld and object
desc.ht.arg2.real = value(~clr),
desc.ht.arg1 = value([kind:obj,pcas: -, real: ~cld12|cld3])
)
)
;
proobj < clr;
V1 >> clr;
clr < ante::clseq;
%% Clitics before verbs
ante::clseq < Infl;
V1 >> ante::clseq;
ante::clseq =>
node(ante::clseq).excl = value(ante);
%% no ante or post clitics for participials
%% => ensure that no realization of verb args as clitics
~ ante::clseq =>
node(ante::clseq).excl = value(-|post);
%% post verbal clitics: only for positive imperative sentence
%% example: donne le lui
Infl < post::clseq;
V1 >> post::clseq;
post::clseq =>
node(Infl).bot.mode = value(~adjective|participle),
node(post::clseq).excl = value(post);
~ post::clseq =>
node(post::clseq).excl = value(-|ante);
node(ante::clseq).excl = node(post::clseq).excl;
v +
node(ante::clseq).excl = value(ante),
(
node(Infl).top.mode = value(~imperative|participle)
|
node(Infl).top.mode = value(imperative),
( node(S).bot.neg = value(+)
| node(Anchor).lex = value(voici|voilà|revoici|revoilà)
)
)
|
node(v).cat = value(v),
node(ante::clseq).excl = value(post),
node(Infl).top.mode = value(imperative),
node(S).bot.neg = value(-)
|
node(ante::clseq).excl = value(-),
%% node(Infl).top.mode = value(participle),
desc.ht.arg0.real = value(~cla|cld12|cld3|clg),
desc.ht.arg1.real = value(~cla|cld12|cld3|clg),
desc.ht.arg2.real = value(~cla|cld12|cld3|clg)
;
%% To avoid the duplication of the conditions bewteen ante and post
%% condtions attached to cla
v +
desc.@cla.arg.real = value(-)
|
node(ante::clseq).excl = value(~-),
(
desc.@cla.arg.real = value(cla),
(
desc.ht.arg0 = desc.@cla.arg
|
desc.ht.arg1 = desc.@cla.arg
|
desc.ht.arg2 = desc.@cla.arg
)
|
desc.@cla.arg.real = value(clr),
desc.ht.refl = value(+),
node(Infl).top.mode = value(imperative)
)
;
v +
desc.@cla.arg.real = value(-),
desc.ht.arg0.real = value(~cla),
desc.ht.arg1.real = value(~cla),
desc.ht.arg2.real = value(~cla)
|
node(ante::clseq).excl = value(~-),
( desc.@cla.arg.real = value(cla),
(
desc.@cla.arg.kind = value(obj),
desc.dummy.objinfo = desc.dummy.cla.objinfo
|
desc.@cla.arg.kind = value(acomp),
desc.@cla.objinfo.number = value(sg),
desc.@cla.objinfo.gender = value(masc),
desc.@cla.objinfo.person = value(3)
)
|
desc.@cla.arg.real = value(clr)
)
;
%% Conditions attached to cld (cld12 or cld3)
%% a cld may be attached to an adjective:
%% example: il leurs est facile de venir
%% example: ces ressources leurs sont propres
%% we have a hack here because we don't really have the right dependency
%% it should be improved by a better handling of adjectives
%% a cld may be attached to an object
%% example: il lui serre la main
%% example: la courtoisie que nous lui connaissons
%% similar remarks than we have for adjectives
v +
desc.@cld.arg.real = value(-),
desc.ht.arg0.real = value(~cld12|cld3),
desc.ht.arg1.real = value(~cld12|cld3),
desc.ht.arg2.real = value(~cld12|cld3)
|
node(ante::clseq).excl = value(~-),
desc.@cld.arg.real = value(~-),
(
desc.ht.arg0 = desc.@cld.arg,
desc.ht.arg1.real = value(~cld12|cld3),
desc.ht.arg2.real = value(~cld12|cld3)
|
desc.ht.arg1 = desc.@cld.arg,
desc.ht.arg0.real = value(~cld12|cld3),
desc.ht.arg2.real = value(~cld12|cld3)
|
desc.ht.arg2 = desc.@cld.arg,
desc.ht.arg0.real = value(~cld12|cld3),
desc.ht.arg1.real = value(~cld12|cld3)
|
node(v).cat=value(adj) % should check the subcat of adj !
|
node(v).cat=value(v),
desc.dummy.cld.person = value(~ -),
(
desc.ht.arg1 = value([kind:acomp|obj,pcas: -, real: ~cld12|cld3])
|
% example: ses habits lui sont enlevés
% passive counterpart for: on lui enlève ses habits
desc.ht.diathesis = value(passive),
desc.ht.arg0 = value([kind:-])
),
desc.ht.arg1.subarg = desc.@cld.arg,
desc.ht.arg2 = value([kind:-])
)
;
%% Conditions attached to clg
v +
desc.@clg.arg.real = value(-),
desc.ht.arg1.real = value(~clg),
desc.ht.arg2.real = value(~clg)
|
node(ante::clseq).excl = value(~-),
desc.@clg.arg.real = value(~ -|cla),
(
desc.ht.arg1 = desc.@clg.arg,
desc.ht.arg2.real = value(~clg)
|
desc.ht.arg2 = desc.@clg.arg,
desc.ht.arg1.real = value(~clg)
)
;
%% Conditions attached to cll
v +
% a non argument cll seems to be only 'y' ('en' needs to fill an argument)
% but there exists a few verbs that allow a @pseudo-en (découdre,
% finir, référer)
% desc.@cll.lex = value(-|y|'-y'),
desc.ht.arg1.real = value(~cll),
desc.ht.arg2.real = value(~cll)
|
node(ante::clseq).excl = value(~-),
desc.@cll.arg.real = value(cll),
(
desc.ht.arg1 = desc.@cll.arg,
desc.ht.arg2.real = value(~cll)
|
desc.ht.arg2 = desc.@cll.arg,
desc.ht.arg1.real = value(~cll)
),
( desc.@cll.lex = value(y|'-y'),
desc.@cll.arg.function=value(loc|obl|obl2)
|
desc.@cll.lex = value(y|'-y'),
desc.@cll.arg.function=value(dloc)
)
;
}
Ajouter un commentaire