clitics

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

Ajouter un commentaire

Connectez-vous ou inscrivez-vous pour publier un commentaire

Class Graph View