Révisions

  1. class clitics
  2. {
  3. node clneg:[cat: clneg, id:clneg, type:coanchor,adj:no];
  4. V1 >> clneg;
  5. clneg =>
  6. desc.dummy.clneg = value(+),
  7. node(S).bot.neg = value(+),
  8. node(Infl).top.mode = value(~participle);
  9. ~ clneg =>
  10. desc.dummy.clneg = value(-)
  11. ;
  12. v +
  13. desc.dummy.clneg = value(+)
  14. |
  15. desc.dummy.clneg = value(-),
  16. ( node(S).bot.neg = value(-),
  17. node(Infl).top.mode = value(~participle|infinitive)
  18. | % example: une pomme pas mangée
  19. node(Infl).top.mode = value(participle|infinitive|adjective)
  20. );
  21. %% advneg (pas, point, non, ..) before verb
  22. %% example: ne pas fumer
  23. node advneg:[cat: advneg, id:advneg, type:coanchor];
  24. advneg =>
  25. node(S).bot.neg = value(+),
  26. node(Infl).top.mode = value(infinitive|participle|adjective);
  27. V1 >> advneg;
  28. clneg < advneg;
  29. node proobj: [cat: pro, id:object, type:coanchor, lex: rien|tout];
  30. V1 >> proobj;
  31. advneg < proobj;
  32. node(proobj).dummy.argobj = value([ extracted: -,
  33. kind: obj|acomp,
  34. pcas: -,
  35. real: antepro ]);
  36. proobj =>
  37. node(v).cat = value(v),
  38. node(Infl).top.mode = value(infinitive),
  39. desc.dummy.proobj.position = value('before_clitics');
  40. ~ proobj =>
  41. desc.dummy.proobj.position = value(-|'before_v');
  42. v +
  43. desc.dummy.proobj.position = value('before_clitics'|'before_v'),
  44. (
  45. desc.ht.arg0 = node(proobj).dummy.argobj
  46. |
  47. desc.ht.arg1 = node(proobj).dummy.argobj
  48. |
  49. desc.ht.arg1 = node(proobj).dummy.argobj
  50. )
  51. |
  52. desc.dummy.proobj.position = value(-),
  53. desc.dummy.proobj.position = value(-),
  54. desc.ht.arg0.real = value(~antepro),
  55. desc.ht.arg1.real = value(~antepro),
  56. desc.ht.arg2.real = value(~antepro)
  57. ;
  58. node clr:[cat:clr, id:clr, type:coanchor,adj:no];
  59. node(clr).top.number = node(V1).bot.number;
  60. node(clr).top.person = node(V1).bot.person;
  61. node(clr).dummy.argobj = value([kind: obj, pcas: -, real: clr]);
  62. node(clr).dummy.argprepobj = value([kind: prepobj, pcas: à|avec, real: clr, function: objà]);
  63. clr =>
  64. desc.dummy.clr = value(+),
  65. node(Infl).top.mode = value(~imperative),
  66. node(Infl).bot.aux_req = value(être),
  67. node(ante::clseq).excl = value(-|ante)
  68. ;
  69. ~ clr =>
  70. desc.dummy.clr = value(-),
  71. desc.ht.arg1.real = value(~clr),
  72. desc.ht.arg2.real = value(~clr),
  73. ( desc.ht.refl = value(-),
  74. node(Infl).bot.aux_req = node(v).top.aux_req
  75. |
  76. %% reflexive verbs may be used with imperative mode
  77. %% example: souviens-toi !
  78. desc.ht.refl = value(+),
  79. node(Infl).top.mode = value(imperative)
  80. )
  81. ;
  82. v +
  83. desc.dummy.clr = value(-),
  84. desc.ht.arg1.real = value(~clr),
  85. desc.ht.arg2.real = value(~clr)
  86. |
  87. desc.dummy.clr = value(+),
  88. ( desc.ht.refl = value(+),
  89. desc.ht.arg1.real = value(~clr),
  90. desc.ht.arg2.real = value(~clr)
  91. |
  92. desc.ht.refl = value(-),
  93. (
  94. desc.ht.arg2.real = value(~clr),
  95. ( desc.ht.arg1 = node(clr).dummy.argobj
  96. |
  97. desc.ht.arg1 = node(clr).dummy.argprepobj
  98. )
  99. |
  100. desc.ht.arg1.real = value(~clr),
  101. ( desc.ht.arg2 = node(clr).dummy.argobj
  102. |
  103. desc.ht.arg2 = node(clr).dummy.argprepobj
  104. )
  105. |
  106. %% a clr may be attached to an object
  107. %% example: il se coupe la main
  108. %% see also the case with cld and object
  109. desc.ht.arg2.real = value(~clr),
  110. desc.ht.arg1 = value([kind:obj,pcas: -, real: ~cld12|cld3])
  111. )
  112. )
  113. ;
  114. proobj < clr;
  115. V1 >> clr;
  116. clr < ante::clseq;
  117. %% Clitics before verbs
  118. - ante::clitic_sequence;
  119. ante::clseq < Infl;
  120. V1 >> ante::clseq;
  121. ante::clseq =>
  122. node(ante::clseq).excl = value(ante);
  123. %% no ante or post clitics for participials
  124. %% => ensure that no realization of verb args as clitics
  125. ~ ante::clseq =>
  126. node(ante::clseq).excl = value(-|post);
  127. %% post verbal clitics: only for positive imperative sentence
  128. %% example: donne le lui
  129. - post::clitic_sequence;
  130. Infl < post::clseq;
  131. V1 >> post::clseq;
  132. post::clseq =>
  133. node(Infl).bot.mode = value(~adjective|participle),
  134. node(post::clseq).excl = value(post);
  135. ~ post::clseq =>
  136. node(post::clseq).excl = value(-|ante);
  137. node(ante::clseq).excl = node(post::clseq).excl;
  138. v +
  139. node(ante::clseq).excl = value(ante),
  140. (
  141. node(Infl).top.mode = value(~imperative|participle)
  142. |
  143. node(Infl).top.mode = value(imperative),
  144. ( node(S).bot.neg = value(+)
  145. | node(Anchor).lex = value(voici|voilà|revoici|revoilà)
  146. )
  147. )
  148. |
  149. node(v).cat = value(v),
  150. node(ante::clseq).excl = value(post),
  151. node(Infl).top.mode = value(imperative),
  152. node(S).bot.neg = value(-)
  153. |
  154. node(ante::clseq).excl = value(-),
  155. %% node(Infl).top.mode = value(participle),
  156. desc.ht.arg0.real = value(~cla|cld12|cld3|clg),
  157. desc.ht.arg1.real = value(~cla|cld12|cld3|clg),
  158. desc.ht.arg2.real = value(~cla|cld12|cld3|clg)
  159. ;
  160. %% To avoid the duplication of the conditions bewteen ante and post
  161. %% condtions attached to cla
  162. v +
  163. desc.@cla.arg.real = value(-)
  164. |
  165. node(ante::clseq).excl = value(~-),
  166. (
  167. desc.@cla.arg.real = value(cla),
  168. (
  169. desc.ht.arg0 = desc.@cla.arg
  170. |
  171. desc.ht.arg1 = desc.@cla.arg
  172. |
  173. desc.ht.arg2 = desc.@cla.arg
  174. )
  175. |
  176. desc.@cla.arg.real = value(clr),
  177. desc.ht.refl = value(+),
  178. node(Infl).top.mode = value(imperative)
  179. )
  180. ;
  181. v +
  182. desc.@cla.arg.real = value(-),
  183. desc.ht.arg0.real = value(~cla),
  184. desc.ht.arg1.real = value(~cla),
  185. desc.ht.arg2.real = value(~cla)
  186. |
  187. node(ante::clseq).excl = value(~-),
  188. ( desc.@cla.arg.real = value(cla),
  189. (
  190. desc.@cla.arg.kind = value(obj),
  191. desc.dummy.objinfo = desc.dummy.cla.objinfo
  192. |
  193. desc.@cla.arg.kind = value(acomp),
  194. desc.@cla.objinfo.number = value(sg),
  195. desc.@cla.objinfo.gender = value(masc),
  196. desc.@cla.objinfo.person = value(3)
  197. )
  198. |
  199. desc.@cla.arg.real = value(clr)
  200. )
  201. ;
  202. %% Conditions attached to cld (cld12 or cld3)
  203. %% a cld may be attached to an adjective:
  204. %% example: il leurs est facile de venir
  205. %% example: ces ressources leurs sont propres
  206. %% we have a hack here because we don't really have the right dependency
  207. %% it should be improved by a better handling of adjectives
  208. %% a cld may be attached to an object
  209. %% example: il lui serre la main
  210. %% example: la courtoisie que nous lui connaissons
  211. %% similar remarks than we have for adjectives
  212. v +
  213. desc.@cld.arg.real = value(-),
  214. desc.ht.arg0.real = value(~cld12|cld3),
  215. desc.ht.arg1.real = value(~cld12|cld3),
  216. desc.ht.arg2.real = value(~cld12|cld3)
  217. |
  218. node(ante::clseq).excl = value(~-),
  219. desc.@cld.arg.real = value(~-),
  220. (
  221. desc.ht.arg0 = desc.@cld.arg,
  222. desc.ht.arg1.real = value(~cld12|cld3),
  223. desc.ht.arg2.real = value(~cld12|cld3)
  224. |
  225. desc.ht.arg1 = desc.@cld.arg,
  226. desc.ht.arg0.real = value(~cld12|cld3),
  227. desc.ht.arg2.real = value(~cld12|cld3)
  228. |
  229. desc.ht.arg2 = desc.@cld.arg,
  230. desc.ht.arg0.real = value(~cld12|cld3),
  231. desc.ht.arg1.real = value(~cld12|cld3)
  232. |
  233. node(v).cat=value(adj) % should check the subcat of adj !
  234. |
  235. node(v).cat=value(v),
  236. desc.dummy.cld.person = value(~ -),
  237. (
  238. desc.ht.arg1 = value([kind:acomp|obj,pcas: -, real: ~cld12|cld3])
  239. |
  240. % example: ses habits lui sont enlevés
  241. % passive counterpart for: on lui enlève ses habits
  242. desc.ht.diathesis = value(passive),
  243. desc.ht.arg0 = value([kind:-])
  244. ),
  245. desc.ht.arg1.subarg = desc.@cld.arg,
  246. desc.ht.arg2 = value([kind:-])
  247. )
  248. ;
  249. %% Conditions attached to clg
  250. v +
  251. desc.@clg.arg.real = value(-),
  252. desc.ht.arg1.real = value(~clg),
  253. desc.ht.arg2.real = value(~clg)
  254. |
  255. node(ante::clseq).excl = value(~-),
  256. desc.@clg.arg.real = value(~ -|cla),
  257. (
  258. desc.ht.arg1 = desc.@clg.arg,
  259. desc.ht.arg2.real = value(~clg)
  260. |
  261. desc.ht.arg2 = desc.@clg.arg,
  262. desc.ht.arg1.real = value(~clg)
  263. )
  264. ;
  265. %% Conditions attached to cll
  266. v +
  267. % a non argument cll seems to be only 'y' ('en' needs to fill an argument)
  268. % but there exists a few verbs that allow a @pseudo-en (découdre,
  269. % finir, référer)
  270. % desc.@cll.lex = value(-|y|'-y'),
  271. desc.ht.arg1.real = value(~cll),
  272. desc.ht.arg2.real = value(~cll)
  273. |
  274. node(ante::clseq).excl = value(~-),
  275. desc.@cll.arg.real = value(cll),
  276. (
  277. desc.ht.arg1 = desc.@cll.arg,
  278. desc.ht.arg2.real = value(~cll)
  279. |
  280. desc.ht.arg2 = desc.@cll.arg,
  281. desc.ht.arg1.real = value(~cll)
  282. ),
  283. ( desc.@cll.lex = value(y|'-y'),
  284. desc.@cll.arg.function=value(loc|obl|obl2)
  285. |
  286. desc.@cll.lex = value(y|'-y'),
  287. desc.@cll.arg.function=value(dloc)
  288. )
  289. ;
  290. }

Ajouter un commentaire

Connectez-vous ou inscrivez-vous pour publier un commentaire

Class Graph View