{
node ArgGroup : [type:alternative];
$arg.kind = value(-|obj|acomp|scomp|whcomp|vcomp|prepobj|prepvcomp|prepscomp|prepacomp|vcompcaus|vcompprog);
%% node VMod : [];
VModArg =>
$arg.real = value(N2|comp|pro|PP|CS|S|adv),
$arg.kind = value(~-),
$arg.extracted = value(-|cleft|topic);
~ VModArg =>
$arg.extracted = value(rel|wh)
|
$arg.extracted = value(-),
( $arg.real = value(-),
$arg.kind = value(-),
$arg.pcas = value(-)
|
$arg.real = value(cld12|cld3|clr),
$arg.function = value(objà),
$arg.kind = value(prepobj),
$arg.pcas = value(à|avec)
|
$arg.real = value(cla|clg|clr|antepro),
(
$arg.kind = value(obj|acomp),
$arg.pcas = value(-)
|
$arg.real = value(clg),
$arg.kind = value(prepobj),
$arg.pcas = value(de),
$arg.function = value(objde)
)
|
$arg.real = value(cll),
$arg.function = value(loc|dloc|obl|obl2)
)
;
%% ArgGroup may be realized by an N2 (object),
%% an object can't co-occur with an inverted nominal subject
%% but for causative cases
node N2 : [cat:N2,id:object,type:subst,top:[case: acc]];
N2 +
$arg.real = value(N2),
$arg.kind = value(obj),
$arg.pcas = value(-),
desc.dummy.objinfo.number = node(N2).top.number,
desc.dummy.objinfo.gender = node(N2).top.gender,
desc.dummy.objinfo.person = node(N2).top.person;
N2 +
node(Infl).bot.inv = value(~+)
|
node(Infl).bot.inv = value(+),
node(S).top.control = value(causative)
;
N2 +
$arg.extracted = value(topic),
node(N2).top.wh = value(-)
|
$arg.extracted = value(~topic)
;
N2 +
node(N2).top.sat = value(+),
desc.dummy.ilya = value(-)
|
%% "il y a" often introduce non-saturated objects
%% (but not sure they should be considered as object)
%% example: il y a apéro ce soir
%% example: il y a fête au chateau
node(N2).top.sat = value(-),
desc.dummy.ilya = value(+)
;
ArgGroup >> N2;
/* handled bt previous case ?
%% ArgGroup may be realized by an pronoun
%% example: je ne vois personne.
node pro : [cat:pro,id:object,type:coanchor];
pro +
$arg.real = value(pro),
$arg.kind = value(obj);
ArgGroup >> pro;
N2 < pro;
*/
%% Realization as an attribute (acomp or ncomp without determiner)
node Comp: [cat:comp,id:comp,type:subst];
Comp +
$arg.function = value(att),
$arg.real = value(comp),
$arg.kind = value(acomp),
$arg.pcas = value(-)
;
%% Hard aggreement between comp and subject only for adjectives
%% Much softer aggreement when comp is N2
%% example: ils sont la risée
%% Maybe some kind of aggreement when N2 sat=-
%% Added aggrement with object when present (and ctrsuj=obj)
Comp +
desc.ht.ctrsubj = value(suj)
|
desc.ht.ctrsubj = value(obj),
desc.ht.arg1.function = value(obj)
;
Comp +
( node(Comp).top.real = value(adj)
|
%% PP with agr info (PP built on adj)
node(Comp).top.real = value(PP),
node(Comp).top.gender = value(~-)
),
node(Comp).dummy.agreement.flag = value(+),
(
desc.ht.ctrsubj = value(suj),
desc.ht.arg0.kind = value(~obj|scomp|vcomp|prepvcomp),
desc.ht.arg1.kind = value(~obj|scomp|vcomp|prepvcomp),
desc.ht.arg2.kind = value(~obj|scomp|vcomp|prepvcomp),
node(Comp).dummy.agreement.number = node(V).bot.number,
node(Comp).dummy.agreement.person = node(V).bot.person,
node(Comp).top.gender = node(V).bot.gender
|
desc.ht.ctrsubj = value(obj),
node(Comp).dummy.agreement.number = desc.dummy.objinfo.number,
node(Comp).dummy.agreement.person = desc.dummy.objinfo.person,
node(Comp).top.gender = desc.dummy.objinfo.gender
)
| % no aggreemnt
node(Comp).dummy.agreement.flag = value(-),
( node(Comp).top.real = value(N2)
|
node(Comp).top.real = value(PP),
node(Comp).top.gender = value(-)
),
( $arg.extracted = value(~topic),
node(Infl).bot.inv = value(~+)
|
node(Infl).bot.inv = value(+),
node(S).top.control = value(causative)
)
;
Comp +
node(Comp).dummy.agreement.flag = value(+),
node(Comp).dummy.agreement.person = node(Comp).top.person,
(
node(Comp).dummy.agreement.number = node(Comp).top.number
|
node(Comp).dummy.agreement.number = value(pl),
node(Comp).dummy.agreement.person = value(2),
node(Comp).top.number = value(sg)
)
|
node(Comp).dummy.agreement.flag = value(-)
;
ArgGroup >> Comp;
N2 < Comp;
%% pro < Comp;
%% Realization as csu (scomp|whcomp)
ArgGroup >> SComp;
Comp < SComp;
%% Realization as PP (prep*)
%% prepscomp and prepvcomp should be handled by adj in some cases (to be done)
node PP: [ cat:PP, type: subst, id: preparg|comp,
top: [real: N2|adj|N]
];
node(PP).top.pcas = $arg.pcas;
ArgGroup >> PP;
SComp < PP;
node(PP).id = node(PP).dummy.nodeid;
PP +
$arg.real = value(PP),
$arg.kind=value(prepobj|prepacomp)
;
PP +
$arg.kind=value(prepobj),
node(PP).top.real=value(N2|N),
node(PP).dummy.nodeid = value(preparg)
|
$arg.kind = value(prepacomp),
node(PP).top.real=value(N2|adj|N),
$arg.pcas = value(comme|de|pour),
node(PP).dummy.nodeid = value(comp)
;
PP +
$arg.extracted = value(topic),
node(PP).top.wh = value(-)
|
$arg.extracted = value(~topic)
;
node advloc: [cat: adv, type: coanchor, id:preparg, top: [adv_kind: loc]];
ArgGroup >> advloc;
PP < advloc;
advloc +
$arg.kind=value(prepobj),
$arg.real=value(adv),
$arg.function = value(loc),
$arg.pcas = value(-);
}
Ajouter un commentaire