S_coord

  1. class S_coord
  2. {
  3. %% Last coord may be preceded by a comma
  4. %% example: il mange, mais il boit aussi
  5. <: coord;
  6. node(Root).cat = value(S);
  7. node Coord2: [cat:S, type: subst, bot: [mode: $mode, sat: -, extraction: $extraction]];
  8. node Coord3: [bot: [sat: -, extraction: $extraction]];
  9. Coord3 +
  10. node(Coord3).bot.mode = $mode
  11. |
  12. node(Foot).bot.mode = value(-),
  13. node(Coord3).bot.mode = value(~ -)
  14. |
  15. node(Foot).bot.mode = value(indicative),
  16. node(Coord3).bot.mode = value(conditional)
  17. |
  18. node(Foot).bot.mode = value(conditional),
  19. node(Coord3).bot.mode = value(indicative)
  20. |
  21. ( node(Foot).bot.mode = value(~imperative|infinitive|participle|gerundive|-),
  22. node(Coord3).bot.mode = value(imperative)
  23. |
  24. node(Foot).bot.mode = value(imperative),
  25. node(Coord3).bot.mode = value(~imperative|infinitive|participle|gerundive|-)
  26. ),
  27. node(Anchor).lex = value(mais|et)
  28. ;
  29. %% the following is an approximation
  30. %% example: il a mangé et dormi
  31. %% example: il veut manger et dormir
  32. %% but we have no way to know that the Foot Sentence
  33. %% is an auxiliary or a modal (but by adding a new feature)
  34. node(Foot).bot.mode = node(Coord2).bot.mode;
  35. node(Root).bot.mode = node(Foot).bot.mode;
  36. % node(Root).bot.extraction = $extraction;
  37. node(Root).bot.sat = value(-);
  38. % node(Foot).bot.extraction = $extraction;
  39. node(Root).bot.extraction = node(Foot).bot.extraction;
  40. node(Root).bot.xarg=node(Foot).bot.xarg;
  41. node(Foot).bot.sat = value(-);
  42. node(Root).bot.control = node(Foot).bot.control;
  43. node(Foot).bot.xarg.trace = value(-);
  44. %% coord do not change many S features
  45. %% should have a way to express that in a easier way
  46. node(Root).bot.inv = node(Foot).bot.inv;
  47. node(Root).bot.cat = node(Foot).bot.cat;
  48. node(Root).bot.tense = node(Foot).bot.tense;
  49. node(Root).bot.neg = node(Foot).bot.neg;
  50. node(Root).bot.person = node(Foot).bot.person;
  51. node(Root).bot.gender = node(Foot).bot.gender;
  52. node(Root).bot.wh = node(Foot).bot.wh;
  53. node(Root).bot.number = node(Foot).bot.number;
  54. Anchor +
  55. node(Coord2).bot.xarg = node(Coord3).bot.xarg,
  56. node(Coord3).bot.xarg = value([case:$case,gender:$gender,number:$number,trace:+]),
  57. node(Foot).bot.xarg = value([case:$case,gender:$gender,number:$number]),
  58. node(Coord3).bot.xarg.case = value(-|nom)
  59. |
  60. node(Coord2).bot.xarg.trace = value(-),
  61. node(Coord3).bot.xarg.trace = value(-)
  62. ;
  63. %% sometime we coordinate sentences build with a mod_extraction
  64. %% we have a pb because verb_*_extraction_* require its foot to be
  65. %% extraction in estcaue|adjx
  66. %% example: où habites-tu et que fais-tu ?
  67. %% example: j'aime cette maison où tu habites et que tu veux quitter
  68. %% however, the following constraint doesn't rule out the coord of a
  69. %% wh-sentence with a relative sentence !
  70. %% maybe we should use the wh-feature to indicate that we are inside a
  71. %% relative sentence
  72. Anchor +
  73. node(Root).bot.extraction = $extraction
  74. |
  75. node(Foot).top.extraction = value(estceaux|adjx),
  76. node(Foot).top.wh = node(Coord3).bot.wh
  77. ;
  78. %% The last coord may be of the form ce + Vmod
  79. %% example: il mange, et ce quoi que je dise
  80. SeqLast >> Alt3; node Alt3 : [type: alternative];
  81. Alt3 >> Coord3;
  82. Coord3 +
  83. node(pas).dummy.is_present = value(-);
  84. Alt3 >> VMod_ce; Coord3 < VMod_ce;
  85. node VMod_ce: [type: std, id:vmod, cat:VMod, adj: strict, bot: [position: post,cat: S|PP|CS|adv|N2|pro]];
  86. VMod_ce >> ce;
  87. node ce: [type: coanchor, cat: ce, lex:ce, id: coord3];
  88. VMod_ce +
  89. node(Anchor).lex = value(et|mais);
  90. %% The last coord may be many things for some coo like comme, mais, car
  91. Alt3 >> CS;
  92. VMod_ce < CS;
  93. node CS: [cat: CS, type: subst, id: coord3, bot : [ que: ~que ]];
  94. CS +
  95. node(Anchor).lex = value(mais);
  96. Alt3 >> adjP;
  97. CS < adjP;
  98. node adjP : [cat: adjP, id: coord3, type: subst];
  99. adjP +
  100. node(Seq).dummy.coord2 = value(-),
  101. node(Anchor).lex = value(car);
  102. Alt3 >> PP;
  103. adjP < PP;
  104. node PP: [cat: PP, id:coord3, type: subst];
  105. PP +
  106. node(Seq).dummy.coord2 = value(-),
  107. node(Anchor).lex = value(car|mais|comme|et);
  108. Alt3 >> adv;
  109. PP < adv;
  110. node adv: [cat: adv, id:coord3, type: coanchor];
  111. adv +
  112. node(Seq).dummy.coord2 = value(-),
  113. node(Anchor).lex = value(et|mais);
  114. Alt3 >> N2;
  115. adv < N2;
  116. node N2: [cat: N2, id: coord3, type: subst, bot: [sat: +]];
  117. N2 +
  118. node(Seq).dummy.coord2 = value(-),
  119. node(Anchor).lex = value(et|mais|comme|'ainsi que'|'au même titre que')
  120. ;
  121. N2 +
  122. node(Anchor).lex = value(comme|'ainsi que'|'au même titre que')
  123. |
  124. node(Anchor).lex = value(et|mais),
  125. node(pas).dummy.is_present= value(+)
  126. ;
  127. }

Ajouter un commentaire

Connectez-vous ou inscrivez-vous pour publier un commentaire

Class Graph View