{
%% SubjectGroups may appear in three different places
%% 1- canonical position before verb, with many possible realizations
%% 2- as a nominal clitic just after first verb (possibly auxiliary)
%% example: Que n'a-t-il pas voulu manger ?
%% a post verbal nominal clitic may co-occur with a pre-verbal subject
%% example: Quel film Jean n'a-t-il pas voulu voir ?
%% 3- as a N2 after main verb
%% example: Que n'a pas voulu manger Paul ?
node VSubj : [id:vmod,cat:VMod,type:std,bot: [position: -|postsubj, neg: -, cat: S|CS|adv|N2|pres|csu|PP|pro]];
VSubj >> SubjectGroup; node(VSubj).top = node(VSubj).bot;
%% S >> SubjectGroup;
node SubjectGroup: [type:alternative,top:[real:-|N2|S|CS|PP|cln|prel|pri]];
VSubj =>
node(Infl).bot.inv = value(-|cl),
$arg.extracted = value(-|cleft),
node(SubjectGroup).top.real=value(~-|prel|pri),
desc.dummy.impsubj = value(-),
desc.dummy.presubj = value(+)
;
~ VSubj =>
desc.dummy.presubj = value(-)
;
v +
%% canonical subject
desc.dummy.presubj = value(+),
(
node(V).top.mode=value(~infinitive|imperative|gerundive|participle)
|
%% participiale
%% example: le feu éteint, ils reconstruisent
node(V).top.mode=value(gerundive|participle),
node(S).bot.sat = value(ppart),
$arg.real = value(N2)
)
|
%% no canonical subject
desc.dummy.presubj = value(-),
(
node(V).top.mode=value(infinitive) % postverbal causative subj is possible
|
node(V).top.mode=value(imperative|gerundive|participle),
$arg.real = value(-)
|
%% see pseudo_passive as short sentences
node(V).top.mode = value(participle),
$arg.real = value(~-),
desc.short_sentence = value(+)
|
node(V).top.mode = value(gerundive),
% node(S).bot.sat = value(ppart),
$arg.real = value(~-)
|
%% a subject is expected for tensed modes
node(V).top.mode=value(~infinitive|imperative|gerundive|participle|adjective),
(
%% extracted subject
$arg.extracted = value(~-|cleft),
node(Infl).bot.inv = value(-)
|
%% inverted subject, because of wh
$arg.extracted = value(-),
node(Infl).bot.wh = value(+),
node(V).top.inv = value(~-)
|
%% inverted subject through a controling verb
%% example: c'est le livre que va lire Paul
desc.dummy.arg1.xcomp_by_adj = value(+)
| desc.dummy.arg2.xcomp_by_adj = value(+)
)
|
%% impersonal constructions
desc.ht.imp = value(+),
( %% usually with an impersonal subject
node(V).top.mode=value(~adjective),
$arg.real = value(-|S)
|
%% see pseudo_adj as short sentence (no impersonal subject)
%% example: difficile de rester
node(V).top.mode=value(adjective),
$arg.real = value(~ -|N2|S)
)
)
;
$arg.real = node(SubjectGroup).top.real;
v +
desc.dummy.çasubj = value(-),
node(SubjectGroup).top.number = node(S).bot.number,
node(SubjectGroup).top.person = node(S).bot.person,
node(SubjectGroup).top.gender = node(S).bot.gender
|
%% see node çasubj
%% shallow agreement is done with çasubject and not SubjectGroup
desc.dummy.çasubj = value(+),
desc.extraction = value(-),
node(S).bot.number = value(sg),
node(S).bot.person = value(3),
node(S).bot.gender = value(masc)
;
node(SubjectGroup).bot = node(SubjectGroup).top;
node cl::Subject : [cat:cln,type:coanchor,bot:[case:nom]];
cl::SubjectGroup = SubjectGroup;
%% no inverted clitic subject if ante subject is a clitic
%% no s-like adj
%% no extracted cleft
cl::Subject +
node(Infl).bot.inv = value(-),
node(VSubj).bot.position = value(-),
$arg.extracted = value(-)
;
node noun::Subject : [cat:N2,type:subst,top:[wh:-,case: nom]];
noun::SubjectGroup = SubjectGroup;
%% the following condition on saturation of nominal subject is deactivated
%% because there are more cases than expected
%% example: les vacances terminées, il rentre chez lui.
%% example: Rarement vague de spéculation n'aura été autant anticipée
%% example: il faut bien que jeunesse se passe
%% example: il est convaincu que développement se conjugue avec planification
% noun::Subject +
% %% node(VSubj).bot.cat = value(csu|S|adv|PP),
% ( node(noun::Subject).top.sat = value(+)
% |
% node(noun::Subject).top.sat = value(-),
% node(S).bot.sat = value(ppart)
% )
% ;
cl::Subject < noun::Subject;
%% example: qu'il vienne demain me dérange
node s::Subject : [cat:CS, type:subst, top:[mode: subjonctive, que: que]];
s::SubjectGroup = SubjectGroup; noun::Subject < s::Subject;
s::Subject +
node(V).top.mode = value(~subjonctive)
;
s::Subject +
node(VSubj).bot.cat = value(adv)
;
%% example: courir vite fatigue
%% example: combien il t'aime me surprend toujours
node v::Subject : [cat:S,type:subst,top:[sat: -, control: ~causative]];
v::SubjectGroup = SubjectGroup; s::Subject < v::Subject;
v::Subject +
node(VSubj).bot.cat = value(adv),
( node(v::Subject).top.mode = value(infinitive),
node(v::Subject).top.extraction = value(-)
|
node(v::Subject).top.extraction = value(wh),
node(v::Subject).top.wh = value(+)
)
;
%% example: de courir vite me fatigue
node PP::Subject : [cat:PP,type:subst,top:[real: S, pcas: de]];
PP::SubjectGroup = SubjectGroup; v::Subject < PP::Subject;
PP::Subject +
node(VSubj).bot.cat = value(adv)
;
%% predet subject
%% example: peu sont venus.
%% example: suffisamment sont venus
%% example: quantité sont venus
%% -predet::true_subject;
node predet::Subject : [cat: predet, id: subject, type: coanchor, top: [predet_kind: nc|adv]];
predet::SubjectGroup = SubjectGroup; PP::Subject < predet::Subject;
SubjectGroup >> predet::Subject;
predet::Subject +
node(SubjectGroup).top.real = value(N2),
node(SubjectGroup).dummy.strace = value(-),
node(SubjectGroup).top.number = value(pl),
node(SubjectGroup).top.person = value(3)
;
%% Trace of a subject in coordination
%% Temporary solution ! (just check there is a coordination just before!)
%% example: il mange et boit
SubjectGroup >> STrace;
node STrace : [cat:strace,type:subst,id:strace];
predet::Subject < STrace;
STrace +
$arg.extracted = value(-),
node(SubjectGroup).top.real = value(N2),
node(SubjectGroup).dummy.strace = value(+)
;
SubjectGroup +
node(SubjectGroup).dummy.strace = value(-),
node(S).bot.xarg.trace = value(-),
node(S).bot.xarg.case = value(~nom)
|
node(SubjectGroup).dummy.strace = value(+),
node(S).bot.xarg.case=value(-|nom),
node(S).bot.xarg.trace=value(+)
;
v +
node(S).bot.xarg.case = value(-|nom),
node(S).bot.xarg.number = node(S).bot.number,
node(S).bot.xarg.gender = node(S).bot.gender
|
node(S).bot.xarg.case = value(~-|nom)
;
}
Ajouter un commentaire