Grammalecte  Check-in [074825dfe9]

Overview
Comment:[fr] màj: conjugaisons, suppression des pronoms et de “ne”
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | fr | fr_killtricks
Files: files | file ages | folders
SHA3-256: 074825dfe905ac4da324cc8f840a4488393c5ccff429a5c14ddbc38cb7b6a0ac
User & Date: olr on 2017-06-20 16:36:05
Other Links: branch diff | manifest | tags
Context
2017-06-20
18:41
[fr] màj: conjugaisons, suppression des pronoms et de “ne” (2) check-in: 7c28c4de28 user: olr tags: fr, fr_killtricks
16:36
[fr] màj: conjugaisons, suppression des pronoms et de “ne” check-in: 074825dfe9 user: olr tags: fr, fr_killtricks
12:47
[fr] simplifications du contrôle de l’impératif check-in: 7bf7fe4aae user: olr tags: fr, fr_killtricks
Changes

Modified gc_lang/fr/rules.grx from [1bbb0a442e] to [e821d0d4bf].

  3795   3795   TEST: Quelle chance tu as eue de voir ruiné ce connard.
  3796   3796   TEST: l’immobilier a été ces dernières années l’investissement le plus rentable (voir graphique ci-dessous)
  3797   3797   TEST: elles sont pas mal ainsi, voire élégantes pourrait-on dire.
  3798   3798   TEST: il y en a peu, voire très peu.
  3799   3799   TEST: car elles pénètrent dans les poumons voire le système sanguin.
  3800   3800   TEST: des enfants malades, qui préfèrent souvent voir Dark Vador que des vieux clowns un peu flippants.
  3801   3801   
  3802         -
  3803         -
  3804         -#### Pronoms
         3802  +!!
         3803  +!!
         3804  +!!!! Pronoms + incohérences                                                                         
         3805  +!!
         3806  +!!
  3805   3807   __[i](p_m_enfin)__      m’enfin <<- ~>> *
  3806   3808   
  3807   3809   __[i]/conf(conf_j_y_en_qqch)__
  3808   3810       (j’(?:en +|y +|))({w_1})  @@0,$
  3809   3811       <<- morphex(\2, ":", ":(?:[123][sp]|O[onw])")
  3810         -    -2>> =suggSimil(\2, ":1s")                                                               # Incohérence avec « \1 » : « \2 » devrait être un verbe.
         3812  +    -2>> =suggSimil(\2, ":1s")                                                                      # Incohérence avec « \1 » : « \2 » devrait être un verbe.
  3811   3813   __[i]/conf(conf_ne_qqch)__
  3812   3814       (n(?:e +|’))({w_1})  @@0,$
  3813   3815       <<- morphex(\2, ":", ":(?:[123][sp]|Y|P|O[onw]|X)|>(?:[lmtsn]|surtout|guère|presque|même|tout|parfois|vraiment|réellement) ") and not re.search("(?i)-(?:ils?|elles?|[nv]ous|je|tu|on|ce)$", \2)
  3814   3816       -2>> =suggSimil(\2, ":(?:[123][sp]|Oo|Y)")                                                      # Incohérence avec « \1 » : « \2 » devrait être un verbe ou un pronom personnel objet.
  3815   3817   __[i]/conf(conf_n_y_en_qqch)__
  3816   3818       (n’(?:en|y)) ({w_1})  @@0,$
  3817   3819       <<- morphex(\2, ":", ":(?:[123][sp]|Y|P|O[onw]|X)") and not re.search("(?i)-(?:ils?|elles?|[nv]ous|je|tu|on|ce)$", \2)
  3818   3820       -2>> =suggSimil(\2, ":(?:[123][sp]|Y)")                                                         # Incohérence avec « \1 » : « \2 » devrait être un verbe.
  3819   3821   __[i]/conf(conf_ne_pronom_qqch)__
  3820         -    (ne l(?:es? +|a +|’))({w_1})  @@0,$
         3822  +    (ne (?:l(?:es? +|eur +|a +|’)|[nv]ous))({w_1})  @@0,$
  3821   3823       <<- morphex(\2, ":", ":(?:[123][sp]|Y|P|O[onw]|X)") and not re.search("(?i)-(?:ils?|elles?|[nv]ous|je|tu|on|ce)$", \2)
  3822   3824       -2>> =suggSimil(\2, ":(?:[123][sp]|Y)")                                                         # Incohérence avec « \1 » : « \2 » devrait être un verbe.
  3823   3825   __[i]/conf(conf_me_te_se_qqch)__
  3824   3826       ([mts]e +(?:les? |la |l’|))(?!voi(?:là|ci))({w_1})  @@0,$
  3825   3827       <<- not re.search("(?i)^se que?", \0)
  3826   3828       and morphex(\2, ":", ":(?:[123][sp]|Y|P|Oo)|>[lmts] ") and not re.search("(?i)-(?:ils?|elles?|[nv]ous|je|tu|on|ce)$", \2)
  3827   3829       -2>> =suggSimil(\2, ":(?:[123][sp]|Oo|Y)")                                                      # Incohérence avec « \1 » : « \2 » devrait être un verbe ou un pronom personnel objet.
................................................................................
  3862   3864   TEST: je t’en {{parlé}}
  3863   3865   TEST: M’enfin, c’est absurde
  3864   3866   TEST: il est normal de ne presque pas payer des gens qui effectuent un travail
  3865   3867   TEST: j’ai l’impression de ne même pas savoir ce qu’est un « juif français ».
  3866   3868   TEST: C’que j’comprends, c’est qu’il y a des limites à ce qu’on peut supporter.
  3867   3869   TEST: la tentation pour certains médias de ne tout simplement pas rémunérer notre travail si celui-ci n’est finalement pas publié.
  3868   3870   TEST: Ne parfois pas être celui qui sabote l’ambiance.
         3871  +
  3869   3872   
  3870   3873   !!
  3871   3874   !!
  3872   3875   !!!! Formes verbales sans sujet                                                                     
  3873   3876   !!
  3874   3877   !!
  3875   3878   
................................................................................
  4602   4605       <<- not morph(\2, ":A", False) ~1>> *
  4603   4606   __[i](p_verbe_pronom_être)__
  4604   4607       (d[eouû]\w+|cr[ouû]\w+|pens\w+|imagin\w+|estim\w+) (l(?:eur|ui)|nous|vous) être @@0,w
  4605   4608       <<- morph(\1, ">(?:croire|devoir|estimer|imaginer|penser) ") ~2>> *
  4606   4609   __[i](p_en_partie)__
  4607   4610       (en partie) ({w_2}) @@0,$
  4608   4611       <<- morph(\1, ":(?:R|D|[123]s|X)", False) ~1>> *
         4612  +__[i](p_en_plus)__
         4613  +    en plus
         4614  +    <<- morph(word(1), ":A", False, True) ~>> en
         4615  +    <<- __else__ ~>> *
  4609   4616   __[i](p_en_quelques_tps1)__
  4610   4617       (en quelques (?:années|décennies|semaines|heures|minutes)) +({w_2}) @@0,$
  4611   4618       <<- not morph(\2, ":[AQ]:[ef]:[si]", False) ~1>> *
  4612   4619   __[i](p_en_quelques_tps2)__
  4613   4620       (en quelques (?:jours|mois|trimestres|semestres|siècles|millénaires)) +({w_2}) @@0,$
  4614   4621       <<- not morph(\2, ":[AQ]:[em]:[si]", False) ~1>> *
  4615   4622   __[i](p_entre_pronom_et_pronom)__
................................................................................
  9722   9729   TEST: {{vas y}}, ce n’est pas dangereux
  9723   9730   TEST: {{convenez en}}, c’est une belle affaire malgré son prix élevé
  9724   9731   
  9725   9732   
  9726   9733   
  9727   9734   !!!
  9728   9735   !!!
  9729         -!!! Processeur: destruction des pronoms qui précèdent un verbe et de l’adverbe de négation “ne”.
         9736  +!!! Processeur: destruction des pronoms qui précèdent un verbe et de l’adverbe de négation “ne”.    
  9730   9737   !!!
  9731   9738   !!!
  9732   9739   
  9733   9740   # Brainfuck (ici, prudence !)
  9734         -__[i](p_pro_per_obj01)__    ne +(?:l(?:ui|eur|a|es?)|[mts]e|[nv]ous) +(?:l(?:a|es?|ui|eur)|en|y) <<- ~>> >
  9735         -__[i](p_pro_per_obj02)__    ne +(?:[mts](?:e|’(?:en|y))|[nv]ous|l(?:es?|a|ui|eur|’(?:en|y))) <<- ~>> >
  9736         -__[i](p_pro_per_obj03)__    [mts]e +l(?:a|es?) <<- ~>> >
  9737         -__[i](p_pro_per_obj04)__    [nmsl]’(?:en|y) <<- ~>> >
  9738         -__[i](p_pro_per_obj05)__    l(?:a|es?) +(?:lui|en) <<- ~>> >
  9739         -__[i](p_pro_per_obj06)__    lui +(?:la|les?|en|y) <<- not morph(word(-1), ":R", False, True) ~>> >
  9740         -__[i](p_pro_per_obj07)__    leur +(?:en|y) <<- not morph(word(-1), ":R", False, False) ~>> >
  9741         -__[i](p_pro_per_obj08)__    (?:je|tu|ils?|on) ([nv]ous(?: la| les?|)|lui) @@$ <<- ~1>> >
  9742         -__[i](p_pro_per_obj09)__    (?:je|tu|ils?|on) (l(?:es?|a)) ({w_1}) @@w,$
  9743         -    <<- \1 == "le" and not morph(\2, ":N.*:[me]:[si]") ~1>> >
  9744         -    <<- \1 == "la" and not morph(\2, ":N.*:[fe]:[si]") ~1>> >
  9745         -    <<- \1 == "les" and not morph(\2, ":N.*:.:[pi]") ~1>> >
  9746         -__[i](p_pro_per_obj10)__    (?:elles?|[nv]ous) ([nv]ous(?: la| les?|)|l(?:es?|ui|a)) @@$ <<- not morph(word(-1), ":R", False, False) ~1>> >
  9747         -__[i](p_pro_per_obj11)__    ce(?:ux|lles?|lui|la|) qui ([nv]ous(?: la| les?|)|l(?:es?|ui|a)) @@$ <<- ~1>> >
  9748         -__[i](p_pro_per_obj12)__    (?<!’)(en) ({w_2}) @@0,$ <<- morph(\2, ":[123][sp]") ~1>> >
  9749         -__[i](p_pro_per_obj13)__    (?:tu|il|on) (en) @@3 <<- not morph(word(-1), ":[123]s", False, False) ~1>> >
  9750         -__[i](p_pro_per_obj14)__    (?<!’)elle (en) @@5 <<- not morph(word(-1), ":(?:[123]s|R)", False, False) ~1>> >
  9751         -__[i](p_pro_per_obj15)__    (?<!’)elles (en) @@6 <<- not morph(word(-1), ":(?:[123]p|R)", False, False) ~1>> >
  9752         -__[i](p_pro_per_obj16)__    ils (en) @@4 <<- not morph(word(-1), ":3p", False, False) ~1>> >
  9753         -__[i](p_pro_per_obj17)__    (?<!’)(y) ({w_2}) @@0,2 <<- morph(\2, ":[123][sp]", False) ~1>> >
  9754         -__[i](p_pro_per_obj18)__    (le) ({w_2}) @@0,3 <<- morphex(\2, ":(?:[123][sp]|Y)", ":(?:[NAQ].*:[me]:[si]|G|M)") ~1>> >
  9755         -__[i](p_pro_per_obj19)__    (la) ({w_2}) @@0,3 <<- morphex(\2, ":(?:[123][sp]|Y)", ":(?:[NAQ].*:[fe]:[si]|G|M)") ~1>> >
  9756         -__[i](p_pro_per_obj20)__    (l’)({w_2}) @@0,2 <<- morphex(\2, ":(?:[123][sp]|Y)", ":(?:[NAQ].*:[si]|G|M)") ~1>> >
  9757         -__[i](p_pro_per_obj21)__    (leur) ({w_2}) @@0,5 <<- morphex(\2, ":(?:[123][sp]|Y)", ":(?:[NAQ].*:[si]|G|M)") ~1>> >
  9758         -__[s](p_pro_per_obj22)__    [lL]’a <<- ~>> > a
  9759         -__[i](p_pro_per_obj23)__    (nous) ({w_2}) @@0,5 <<- morphex(\2, ":(?:[123][sp]|Y)", ":(?:A|G|M|1p)") ~1>> >
  9760         -__[i](p_pro_per_obj24)__    (vous) ({w_2}) @@0,5 <<- morphex(\2, ":(?:[123][sp]|Y)", ":(?:A|G|M|2p)") ~1>> >
  9761         -__[i](p_pro_per_obj25)__    (?:à|de) ([nv]ous|lui|les?|en)(?! qui) @@$ <<- ~1>> >
  9762         -__[i](p_pro_per_obj26)__    (s’)({w4}) @@0,2 <<- morph(\2, ":V", False) ~1>> >
  9763         -__[i](p_pro_per_obj27)__    (?:je|tu|ils?|elles?|on) (l’|l(?:es?|a|ui|eur) +|[nv]ous +){w_2} @@* <<- isStart() ~1>> >
  9764         -__[i](p_pro_per_obj28)__    (?:je|tu|ils?|elles?|on|[nv]ous|ce(?:ux|elles?|lui|la|) qui) (l’)({w4}) @@*,$ <<- morph(\2, ":V", False) ~1>> >
  9765         -__[i](p_pro_per_obj29)__    (t’(?:en|y)) ({w_2}) @@0,$ <<- not morph(\2, ":2s", False) or before(r"(?i)\b(?:je|tu|on|ils?|elles?|nous) +$") ~1>> >
  9766         -__[i](p_pro_per_obj30)__    (t’)({w_2}) @@0,$ <<- not morph(\2, ":2s|>(ils?|elles?|on) ", False) or before(r"(?i)\b(?:je|tu|on|ils?|elles?|nous) +$") ~1>> >
  9767         -__[i>(p_pro_per_obj31)__    ne [mtsl]’ <<- ~>> >
  9768         -__[i>(p_pro_per_obj32)__    [mts]e +l’ <<- ~>> >
  9769         -__[i>(p_pro_per_obj33)__    [nm]’ <<- ~>> >
  9770         -__[i](p_pro_per_obj34)__    [nmts]e <<- ~>> >
  9771         -__<s>(p_pro_per_obj35)__    > +> <<- ~>> >
         9741  +__[i](p_pro_per_obj01)__
         9742  +    (ne +(?:l(?:ui|eur|a|es?)|[mts]e|[nv]ous) +(?:l(?:a|es?|ui|eur)|en|y)) +({w_1})  @@0,$
         9743  +    <<- morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)")
         9744  +    <<- ~1>> *
         9745  +__[i](p_pro_per_obj02)__
         9746  +    (ne +(?:[mts](?:e|’(?:en|y))|[nv]ous|l(?:es?|a|ui|eur|’(?:en|y)))) +({w_1})  @@0,$
         9747  +    <<- morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)")
         9748  +    <<- ~1>> *
         9749  +__[i](p_pro_per_obj03)__
         9750  +    ([mts]e +l(?:a|es?)) +({w_1})  @@0,$
         9751  +    <<- morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)")
         9752  +    <<- ~1>> *
         9753  +__[i](p_pro_per_obj04)__
         9754  +    ([nmsl]’(?:en|y)) +({w_1})  @@0,$
         9755  +    <<- morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)")
         9756  +    <<- ~1>> *
         9757  +__[i](p_pro_per_obj05)__
         9758  +    (l(?:a|es?) +(?:lui|en)) +({w_1})  @@0,$
         9759  +    <<- morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)")
         9760  +    <<- ~1>> *
         9761  +__[i](p_pro_per_obj06)__
         9762  +    (lui +(?:la|les?|en|y)) +({w_1})  @@0,$
         9763  +    <<- not morph(word(-1), ":R", False, True) ~1>> *
         9764  +    <<- __also__ and morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)")
         9765  +__[i](p_pro_per_obj07)__
         9766  +    (leur +(?:en|y)) +({w_1})  @@0,$
         9767  +    <<- not morph(word(-1), ":R", False, False) ~1>> *
         9768  +    <<- __also__ and morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)")
         9769  +__[i](p_pro_per_obj08)__
         9770  +    (?:je|tu|ils?|on) ([nv]ous(?: la| les?|)|lui) +({w_1})  @@*,$
         9771  +    <<- morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)")
         9772  +    <<- __also__ ~1>> *
         9773  +__[i](p_pro_per_obj09)__
         9774  +    (?:je|tu|ils?|on) (l(?:es?|a)) ({w_1}) @@w,$
         9775  +    <<- (\1 == "le" and not morph(\2, ":N.*:[me]:[si]"))
         9776  +        or (\1 == "la" and not morph(\2, ":N.*:[fe]:[si]"))
         9777  +        or (\1 == "les" and not morph(\2, ":N.*:.:[pi]")) ~1>> *
         9778  +    <<- __also__ and morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)")
         9779  +__[i](p_pro_per_obj10)__
         9780  +    (?:elles?|[nv]ous) ([nv]ous(?: la| les?|)|l(?:es?|ui|a)) +({w_1})  @@*,$
         9781  +    <<- not morph(word(-1), ":R", False, False) ~1>> *
         9782  +    <<- __also__ and morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)")
         9783  +__[i](p_pro_per_obj11)__
         9784  +    ce(?:ux|lles?|lui|la|) qui ([nv]ous(?: la| les?|)|l(?:es?|ui|a)) +({w_1})  @@*,$
         9785  +    <<- morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)")
         9786  +    <<- __also__ ~1>> *
         9787  +__[i](p_pro_per_obj12)__
         9788  +    (?<!’)(en) ({w_2}) @@0,$
         9789  +    <<- morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)")
         9790  +    <<- __also__ ~1>> *
         9791  +__[i](p_pro_per_obj13)__
         9792  +    (?:tu|il|on) (en) +({w_1})  @@w,$
         9793  +    <<- not morph(word(-1), ":[123]s", False, False) ~1>> *
         9794  +    <<- morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)")
         9795  +__[i](p_pro_per_obj14)__
         9796  +    (?<!’)elle (en) +({w_1})  @@w,$
         9797  +    <<- not morph(word(-1), ":(?:[123]s|R)", False, False) ~1>> *
         9798  +    <<- morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)")
         9799  +__[i](p_pro_per_obj15)__
         9800  +    (?<!’)elles (en) +({w_1})  @@w,$
         9801  +    <<- not morph(word(-1), ":(?:[123]p|R)", False, False) ~1>> *
         9802  +    <<- morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)")
         9803  +__[i](p_pro_per_obj16)__
         9804  +    ils (en) +({w_1})  @@4,$
         9805  +    <<- not morph(word(-1), ":3p", False, False) ~1>> *
         9806  +    <<- morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)")
         9807  +__[i](p_pro_per_obj17)__
         9808  +    (?<!’)(y) ({w_2}) @@0,2
         9809  +    <<- morph(\2, ":(?:[123][sp]|P|Y)", False) ~1>> *
         9810  +    <<- __also__ =>> select(\2, ":(?:[123][sp]|P|Y)")
         9811  +__[i](p_pro_per_obj18)__
         9812  +    (le) ({w_2}) @@0,3
         9813  +    <<- morphex(\2, ":(?:[123][sp]|P|Y)", ":(?:[NAQ].*:[me]:[si]|G|M)") ~1>> *
         9814  +    <<- __also__ =>> select(\2, ":(?:[123][sp]|P|Y)")
         9815  +__[i](p_pro_per_obj19)__
         9816  +    (la) ({w_2}) @@0,3
         9817  +    <<- morphex(\2, ":(?:[123][sp]|P|Y)", ":(?:[NAQ].*:[fe]:[si]|G|M)") ~1>> *
         9818  +    <<- __also__ =>> select(\2, ":(?:[123][sp]|P|Y)")
         9819  +__[i](p_pro_per_obj20)__
         9820  +    (l’)({w_2}) @@0,2
         9821  +    <<- morphex(\2, ":(?:[123][sp]|P|Y)", ":(?:[NAQ].*:[si]|G|M)") ~1>> *
         9822  +    <<- __also__ =>> select(\2, ":(?:[123][sp]|P|Y)")
         9823  +__[i](p_pro_per_obj21)__
         9824  +    (leur) ({w_2}) @@0,5
         9825  +    <<- morphex(\2, ":(?:[123][sp]|P|Y)", ":(?:[NAQ].*:[si]|G|M)") ~1>> *
         9826  +    <<- __also__ =>> select(\2, ":(?:[123][sp]|P|Y)")
         9827  +__[s](p_pro_per_obj22)__
         9828  +    [lL]’(a) @@$
         9829  +    <<- =>> select(\1, ":V")
         9830  +    <<- ~>> "  a"
         9831  +__[i](p_pro_per_obj23)__
         9832  +    (nous) ({w_2}) @@0,5
         9833  +    <<- morphex(\2, ":(?:[123][sp]|P|Y)", ":(?:A|G|M|1p)") =>> select(\2, ":(?:[123][sp]|P|Y)")
         9834  +    <<- __also__ ~1>> *
         9835  +__[i](p_pro_per_obj24)__
         9836  +    (vous) ({w_2}) @@0,5
         9837  +    <<- morphex(\2, ":(?:[123][sp]|P|Y)", ":(?:A|G|M|2p)") =>> select(\2, ":(?:[123][sp]|P|Y)")
         9838  +    <<- __also__ ~1>> *
         9839  +__[i](p_pro_per_obj25)__
         9840  +    (?:à|de) ([nv]ous|lui|les?|en) (?!qui)({w_2}) @@w,$
         9841  +    <<- morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)")
         9842  +    <<- ~1>> *
         9843  +__[i](p_pro_per_obj26)__
         9844  +    (s’)({w4}) @@0,2
         9845  +    <<- morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)")
         9846  +    <<- __also__ ~1>> *
         9847  +__[i](p_pro_per_obj27)__
         9848  +    (?:je|tu|ils?|elles?|on) (l’|l(?:es?|a|ui|eur) +|[nv]ous +)({w_2}) @@*,$
         9849  +    <<- morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)")
         9850  +    <<- isStart() ~1>> *
         9851  +__[i](p_pro_per_obj28)__
         9852  +    (?:je|tu|ils?|elles?|on|[nv]ous|ce(?:ux|elles?|lui|la|) qui) (l’)({w4}) @@*,$
         9853  +    <<- morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)")
         9854  +    <<- __also__ ~1>> *
         9855  +__[i](p_pro_per_obj29)__
         9856  +    (t’(?:en|y)) ({w_2}) @@0,$
         9857  +    <<- morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)")
         9858  +    <<- not morph(\2, ":2s", False) or before(r"(?i)\b(?:je|tu|on|ils?|elles?|nous) +$") ~1>> *
         9859  +__[i](p_pro_per_obj30)__
         9860  +    (t’)({w_2}) @@0,$
         9861  +    <<- morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)")
         9862  +    <<- not morph(\2, ":2s|>(ils?|elles?|on) ", False) or before(r"(?i)\b(?:je|tu|on|ils?|elles?|nous) +$") ~1>> *
         9863  +__[i>(p_pro_per_obj31)__
         9864  +    (ne [mtsl]’)({w_1})  @@0,$
         9865  +    <<- morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)")
         9866  +    <<- ~1>> *
         9867  +__[i>(p_pro_per_obj32)__
         9868  +    ([mts]e +l’)({w_1})  @@0,$
         9869  +    <<- morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)")
         9870  +    <<- ~1>> *
         9871  +__[i>(p_pro_per_obj33)__
         9872  +    [nm]’({w_1})  @@2
         9873  +    <<- morph(\1, ":(?:[123][sp]|P|Y)", False) =>> select(\1, ":(?:[123][sp]|P|Y)")
         9874  +    <<- ~>> "  \1"
         9875  +__[i](p_pro_per_obj34)__
         9876  +    ([nmts]e +)({w_1})  @@0,$
         9877  +    <<- morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)")
         9878  +    <<- __also__ ~1>> *
         9879  +#__<s>(p_pro_per_obj35)__
         9880  +#    > +>
         9881  +#    <<- ~>> >
  9772   9882   # Fin du Brainfuck
  9773   9883   
  9774   9884   
  9775   9885   
  9776   9886   !!
  9777   9887   !!
  9778   9888   !!!! Confusions                                                                                     
................................................................................
  9796   9906   TEST: Il vient {{a}} la maison.
  9797   9907   TEST: tu ne donnes rien {{a}} ces hommes.
  9798   9908   TEST: Nous les donnons {{a}} ces gens.
  9799   9909   TEST: j’arrive {{a}} la gare
  9800   9910   
  9801   9911   
  9802   9912   #### CONFUSION fasse / face
  9803         -__<i]/conf(conf_fasse)__
  9804         -    > +(face)(?! à) @@$ <<- -1>> fasse                     # Confusion probable. Pour le subjonctif de “faire”, écrivez “fasse”.
         9913  +#__<i]/conf(conf_fasse)__
         9914  +#    > +(face)(?! à) @@$ <<- -1>> fasse                     # Confusion probable. Pour le subjonctif de “faire”, écrivez “fasse”.
  9805   9915   
  9806   9916   TEST: j’ai peur qu’il ne leur {{face}} quelque chose de mal
  9807   9917   
  9808   9918   
  9809   9919   #### CONFUSION ÊTRE / AVOIR
  9810   9920   __[i]/conf(conf_ait_confiance_été_faim_tort)__
  9811   9921       (?<!’)(est?) +(con(?:fiance|science)|envie|été|p(?:eine|eur)|faim|h(?:âte|onte)|recours|soif|tort)  @@0,$
................................................................................
  9882   9992       <<- morph(\1, ">valoir ", False) and morphex(\2, ":(?:Q|2p)", ":[GM]")
  9883   9993       -2>> =suggVerbInfi(@)                                                                           # Le verbe devrait être à l’infinitif.
  9884   9994   
  9885   9995   TEST: Mieux vaut {{consacré}} son temps à des occupations utiles.
  9886   9996   
  9887   9997   
  9888   9998   __[i]/infi(infi_à)__
  9889         -    à +> +({w_2}(?:ée?|ez))  @@$
  9890         -    <<- morphex(\1, ":V1", ":[NM]") and not \1.istitle() and not before("> +$")
         9999  +    à +({w_2}(?:ée?s?|ez|ai[st]?))  @@$
        10000  +    <<- morphex(\1, ":V1", ":[NM]") and not \1.istitle() and not before(r"(?i)\b(?:les|en) +$")
  9891  10001       -1>> =suggVerbInfi(@)                                                                           # Le verbe devrait être à l’infinitif.
  9892  10002   
  9893  10003   TEST: elle parvenait à y {{songez}} souvent
  9894  10004   TEST: je vais à Rodez.
  9895  10005   
  9896  10006   
  9897  10007   __[i]/infi(infi_avoir_beau)__
................................................................................
  9899  10009       <<- morph(\1, ">avoir ", False) and morphex(\2, ":V1", ":N")
  9900  10010       -2>> =suggVerbInfi(@)                                                                           # Le verbe devrait être à l’infinitif.|http://fr.wiktionary.org/wiki/avoir_beau
  9901  10011   
  9902  10012   TEST: Ils ont beau {{consacré}} le plus clair de leur temps à ce projet, ça n’avance guère.
  9903  10013   
  9904  10014   
  9905  10015   __[i]/infi(infi_par_pour_sans)__
  9906         -    (?:p(?:a|ou)r|sans) +> +({w_2}(?:ée?s?|ai[st]?|ez))  @@$
        10016  +    (?:p(?:a|ou)r|sans) +({w_2}(?:ée?s?|ai[st]?|ez))  @@$
  9907  10017       <<- morphex(\1, ":[Q123][sp]?", ":Y") -1>> =suggVerbInfi(@)                                     # Le verbe devrait être à l’infinitif.
  9908  10018   
  9909  10019   TEST: pour s’y {{donnait}} le plus souvent.
  9910  10020   
  9911  10021   
  9912  10022   
  9913  10023   #__[i]/infi__
................................................................................
  9991  10101   TEST: Tu ne le lui {{prend}} pas.
  9992  10102   TEST: Tu ne m’{{attendra}} pas.
  9993  10103   TEST: toi qui n’y {{connait}} rien, ne nous ennuie pas avec tes théories.
  9994  10104   
  9995  10105   
  9996  10106   ## 3sg
  9997  10107   __[i]/conj(conj_il)__
  9998         -    (il) +({w_1})  @@0,$
        10108  +    (?<!t’)(il) +({w_1})  @@0,$
  9999  10109       <<- morphex(\2, ":V", ":(?:3s|P|G)") and not (morph(\2, ":[PQ]", False) and morph(word(-1), ":V0.*:3s", False, False))
 10000  10110       -2>> =suggVerb(@, ":3s")                                 # Conjugaison erronée. Accord avec « \1 ». Le verbe devrait être à la 3ᵉ personne du singulier.
 10001  10111       <<- __also__ and morph(\2, ":3p", False) -1>> ils        # Accord avec « \2 ».
 10002  10112   __[i]/conj(conj_il_pronom)__
 10003  10113       (il) +> +({w_1})  @@0,$
 10004  10114       <<- morphex(\2, ":V", ":(?:3s|P|G)")
 10005  10115       -2>> =suggVerb(@, ":3s")                                 # Conjugaison erronée. Accord avec « \1 ». Le verbe devrait être à la 3ᵉ personne du singulier.
................................................................................
 10155  10265       <<- -1>> =\1[:-1]+"t"                                    # Conjugaison erronée. Accord avec “mieux” : utilisez la 3ᵉ personne du singulier.
 10156  10266   
 10157  10267   TEST: avec toi qui ne sais rien de rien, mieux {{vaux}} ne rien dire.
 10158  10268   TEST: Mais là-bas mieux {{valais}} ouvrir sa gueule que se taire.
 10159  10269   
 10160  10270   
 10161  10271   __[i]/conj(conj_personne_aucun_rien_nul)__
 10162         -    (personne|aucun|rien|nul(?:le|)) +(?:qui +|)> +({w_1})  @@0,$
        10272  +    (personne|aucun|rien|nul(?:le|)) +(?:qui +|)({w_1})  @@0,$
 10163  10273       <<- morphex(\2, ":V", ":(?:3s|P|G)") and morphex(word(-1), ":C", ":(?:Y|P|Q|[123][sp]|R)", True)
 10164  10274       and not( \1.endswith("ien") and before("> +$") and morph(\2, ":Y", False) )
 10165  10275       -2>> =suggVerb(@, ":3s")                                 # Conjugaison erronée. Accord avec « \1… ». Le verbe devrait être à la 3ᵉ personne du singulier.
 10166  10276   
 10167  10277   TEST: Personne ne {{peux}} me le dire.
 10168  10278   TEST: Rien ne {{sers}} de courir
 10169  10279   TEST: Rien n’{{arrives}} sans raison
................................................................................
 10183  10293       -2>> =suggVerb(@, ":3s")                                # Conjugaison erronée. Accord avec « \1… ». Le verbe devrait être à la 3ᵉ personne du singulier.
 10184  10294   
 10185  10295   TEST: un des ingénieurs {{vinrent}} nous dire quoi faire.
 10186  10296   TEST: une des femmes présente ses résultats.
 10187  10297   
 10188  10298   
 10189  10299   __[i]/conj(conj_un_une_des_pronom)__
 10190         -    (une? des {w_2}) +(?:qui +>? *|> +)({w_1})  @@0,$
        10300  +    (une? des {w_2}) +qui +({w_1})  @@0,$
 10191  10301       <<- morphex(\2, ":V", ":(?:3s|P|G)") and morphex(word(-1), ":C", ":(?:Y|P|Q|[123][sp]|R)", True)
 10192  10302       -2>> =suggVerb(@, ":3s")                                 # Conjugaison erronée. Accord avec « \1… ». Le verbe devrait être à la 3ᵉ personne du singulier.
 10193  10303   
 10194  10304   TEST: un des membres présents au conseil {{demandent}} un vote à bulletin secret
 10195  10305   TEST: une des femmes de ce conseil ne {{céderaient}} jamais au chantage.
 10196  10306   TEST: l’un des chants les plus diffusés pendant la Révolution culturelle
 10197  10307   
................................................................................
 10268  10378   TEST: un paquet de gens futés n’y ont vu que du feu.
 10269  10379   TEST: La moitié d’entre elles voient leurs loyers diminuer depuis le début de l’année
 10270  10380   TEST: Une partie de ces propositions étaient naïves
 10271  10381   
 10272  10382   
 10273  10383   ## 1pl
 10274  10384   __[i]/conj(conj_nous_pronom)__
 10275         -    ^ *nous +> +({w1})  @@$
        10385  +    ^ *nous +({w1})  @@$
 10276  10386       <<- morphex(\1, ":V", ":(?:1p|3[sp])") and not after("^ +(?:je|tu|ils?|elles?|on|[vn]ous)")
 10277  10387       -1>> =suggVerb(@, ":1p")                                 # Conjugaison erronée. Accord avec « nous ». Le verbe devrait être à la 1ʳᵉ personne du pluriel.
 10278  10388   __[i]/conj(conj_nous_qui)__
 10279         -    ^ *nous +qui +>? *({w1})  @@$
        10389  +    ^ *nous +qui +({w1})  @@$
 10280  10390       <<- morphex(\1, ":V", ":[13]p") and not after("^ +(?:je|tu|il|elle|on|[vn]ous)")
 10281  10391       -1>> =suggVerb(@, ":1p")                                 # Conjugaison erronée. Accord avec « nous ». Le verbe devrait être à la 1ʳᵉ personne du pluriel.
 10282  10392   __[i]/conj(conj_nous)__
 10283         -    ^ *nous +(?:qui +(?:> +|)|> +)(\w+ont)  @@$
        10393  +    ^ *nous +(?:qui +|)(\w+ont)  @@$
 10284  10394       <<- morphex(\1, ":V", ":1p") and not after("^ +(?:ils|elles)")
 10285  10395       -1>> =suggVerb(@, ":1p")                                 # Conjugaison erronée. Accord avec « nous ». Le verbe devrait être à la 1ʳᵉ personne du pluriel.
 10286  10396   
 10287  10397   TEST: nous {{donné}} trop de considération
 10288  10398   TEST: nous vous {{donnerez}} trop de considération
 10289  10399   TEST: nous qui {{somme}} si savants
 10290  10400   TEST: nous qui {{mourront}} pour toi.
 10291  10401   
 10292  10402   
 10293  10403   ## 2pl
 10294  10404   __[i]/conj(conj_vous_pronom)__
 10295         -    ^ *vous +> +({w1})  @@$
        10405  +    ^ *vous +({w1})  @@$
 10296  10406       <<- morphex(\1, ":V", ":(?:2p|3[sp])") and not after("^ +(?:je|ils?|elles?|on|[vn]ous)")
 10297  10407       -1>> =suggVerb(@, ":2p")                                 # Conjugaison erronée. Accord avec « vous ». Le verbe devrait être à la 2ᵉ personne du pluriel.
 10298  10408   __[i]/conj(conj_vous_qui)__
 10299         -    ^ *vous +qui +>? *({w1})  @@$
        10409  +    ^ *vous +qui +({w1})  @@$
 10300  10410       <<- morphex(\1, ":V", ":2p") and not after("^ +(?:je|ils?|elles?|on|[vn]ous)")
 10301  10411       -1>> =suggVerb(@, ":2p")                                 # Conjugaison erronée. Accord avec « vous ». Le verbe devrait être à la 2ᵉ personne du pluriel.
 10302  10412   
 10303  10413   TEST: vous {{donné}} du bonheur
 10304  10414   TEST: vous lui {{donner}} du temps
 10305  10415   TEST: vous qui {{avançait}} dans la nuit comme des ombres furtives
 10306  10416   
................................................................................
 10319  10429   
 10320  10430   TEST: {{Ils}} {{vienne}} souvent.
 10321  10431   TEST: Ils ne m’{{attends}} pas.
 10322  10432   TEST: {{Ils}} vous le {{donne}}.
 10323  10433   
 10324  10434   
 10325  10435   __[i]/conj(conj_ceux_celles_qui)__
 10326         -    (ce(?:ux|lles) +qui) +>? *({w_1})  @@0,$
        10436  +    (ce(?:ux|lles) +qui) +({w_1})  @@0,$
 10327  10437       <<- morphex(\2, ":V", ":(?:3p|P|Q|G)")
 10328  10438       -2>> =suggVerb(@, ":3p")                                # Conjugaison erronée. Accord avec « \1 ». Le verbe devrait être à la 3ᵉ personne du singulier.
 10329  10439   
 10330  10440   TEST: Ceux qui {{chante}} toute la journée…
 10331  10441   TEST: Celles qui {{pense}}.
 10332  10442   
 10333  10443   
 10334  10444   __[i]/conj(conj_ceux_là_celles_ci_lesquels)__
 10335         -    (ce(?:ux-(?:ci|là)|lles-(?:ci|là))|lesquel(?:le|)s)(?: +qui|) +>? *({w_1})  @@0,$
        10445  +    (ce(?:ux-(?:ci|là)|lles-(?:ci|là))|lesquel(?:le|)s) (?:qui +|)({w_1})  @@0,$
 10336  10446       <<- morphex(\2, ":V", ":(?:3p|P|Q|G)") and not morph(word(-1), ":[VR]", False, False)
 10337  10447       and not (morph(\2, ":Y", False) and re.search(r"(?i)lesquel", \1) and not re.search(" qui |>", \0))
 10338  10448       -2>> =suggVerb(@, ":3p")                                # Conjugaison erronée. Accord avec « \1 ». Le verbe devrait être à la 3ᵉ personne du singulier.
 10339  10449   
 10340  10450   TEST: lesquels {{devienne}} des ennuyeux incomparables.
 10341  10451   TEST: Mais parmi les millions de causes à défendre, lesquelles choisir ?
 10342  10452   
................................................................................
 10375  10485   TEST: j’ai, tu as, ils ont, elles {{on}}
 10376  10486   TEST: Or parmi celles-ci on trouve typiquement d’un côté les structures
 10377  10487   
 10378  10488   
 10379  10489   # L’accord par syllepse est obligatoire après /la plupart/, ainsi qu’après /nombre/ et /quantité/ employés sans déterminant. L’accord se fait avec le « pseudo-complément ».
 10380  10490   
 10381  10491   __[i]/conj(conj_beaucoup_d_aucuns_la_plupart)__
 10382         -    (beaucoup|d’aucuns|la plupart) +>? *({w_2})  @@0,$
        10492  +    (beaucoup|d’aucuns|la plupart) +({w_2})  @@0,$
 10383  10493       <<- morphex(\2, ":V", ":(?:3p|P|Q|G)") and not morph(word(-1), ":[VR]|>de ", False, False)
 10384  10494       -2>> =suggVerb(@, ":3p")                                # Conjugaison erronée. Accord avec « \1 ». Le verbe devrait être à la 3ᵉ personne du pluriel.
 10385  10495   
 10386  10496   __[i]/conj(conj_beaucoup_d_aucuns_la_plupart_qui)__
 10387         -    (beaucoup|d’aucuns|la plupart) +qui +>? *({w_2})  @@0,$
        10497  +    (beaucoup|d’aucuns|la plupart) +qui +({w_2})  @@0,$
 10388  10498       <<- morphex(\2, ":V", ":(?:3p|P|Q|G)") and not morph(word(-1), ":[VR]", False, False)
 10389  10499       -2>> =suggVerb(@, ":3p")                                # Conjugaison erronée. Accord avec « \1 ». Le verbe devrait être à la 3ᵉ personne du pluriel.
 10390  10500   
 10391  10501   TEST: la plupart des hommes {{vienne}}
 10392  10502   TEST: La plupart {{admet}}
 10393  10503   TEST: beaucoup {{vienne}}
 10394  10504   TEST: d’aucuns {{pense}} que c’est faux
 10395  10505   TEST: beaucoup qui ne {{pense}} jamais à rien, mais qui ont quand même des avis sur tout.
 10396  10506   TEST: beaucoup entre la peste et le choléra.
 10397  10507   
 10398  10508   
 10399  10509   __[i]/conj(conj_certains_tous_plusieurs)__
 10400         -    (?<!de )(certaine?s|tou(?:te|)s|plusieurs)(?: +qui|) +>? *({w_2})  @@0,$
        10510  +    (?<!de )(certaine?s|tou(?:te|)s|plusieurs) (?:qui +|)({w_2})  @@0,$
 10401  10511       <<- morphex(\2, ":V", ":(?:G|N|A|3p|P|Q)") and not morph(word(-1), ":[VR]", False, False)
 10402  10512       -2>> =suggVerb(@, ":3p")                                # Conjugaison erronée. Accord avec « \1 ». Le verbe devrait être à la 3ᵉ personne du pluriel.
 10403  10513   
 10404  10514   TEST: certains {{prenne}} leur temps
 10405  10515   TEST: Plusieurs qui {{pense}} que c’est une arnaque se sont quand même trompés.
 10406  10516   
 10407  10517   
................................................................................
 10547  10657   
 10548  10658   
 10549  10659   
 10550  10660   #### NOMS PROPRES
 10551  10661   
 10552  10662   # 3sg
 10553  10663   __[s]/conj(conj_nom_propre)__
 10554         -    ([A-ZÉÈ][\w-]+) +>? *({w_1})  @@0,$
        10664  +    ([A-ZÉÈ][\w-]+) +({w_1})  @@0,$
 10555  10665       <<- not before(r"\b(?:et |ou |[dD][eu] |ni |[dD]e l’) *$") and morph(\1, ":M", False) and morphex(\2, ":[123][sp]", ":(?:G|3s|3p!|P|M|[AQ].*:[si])")
 10556  10666       and not morph(word(-1), ":[VRD]", False, False) and not before(r"([A-ZÉÈ][\w-]+), +([A-ZÉÈ][\w-]+), +$")
 10557  10667       and not (morph(\2, ":3p", False) and word(-1))
 10558  10668       -2>> =suggVerb(@, ":3s")
 10559  10669       # Conjugaison erronée. Accord avec « \1 ». Le verbe devrait être à la 3ᵉ personne du singulier.
 10560  10670   
 10561  10671   TEST: Marc {{arrives}} demain.
................................................................................
 10565  10675   TEST: Les fondateurs pionniers de l’Internet n’avaient pas prévu
 10566  10676   TEST: les compteurs Geiger ne détectent pas le polonium
 10567  10677   TEST: Des femmes de l’administration Obama y racontent qu’elles ont constaté qu’il leur arrivait régulièrement de ne pas être invitées
 10568  10678   
 10569  10679   
 10570  10680   # 3pl
 10571  10681   __[s]/conj(conj_nom_propre_et_nom_propre)__
 10572         -    (?<!et |ou |[dD][eu] |ni )([A-ZÉÈ][\w-]+) et ([A-ZÉÈ][\w-]+) +>? *({w_1})  @@0,w,$
        10682  +    (?<!et |ou |[dD][eu] |ni )([A-ZÉÈ][\w-]+) et ([A-ZÉÈ][\w-]+) +({w_1})  @@0,w,$
 10573  10683       <<- morph(\1, ":M", False) and morph(\2, ":M", False)
 10574  10684       and morphex(\3, ":[123][sp]", ":(?:G|3p|P|Q.*:[pi])") and not morph(word(-1), ":R", False, False)
 10575  10685       -3>> =suggVerb(@, ":3p")
 10576  10686       # Conjugaison erronée. Accord avec « \1 et \2 ». Le verbe devrait être à la 3ᵉ personne du pluriel.
 10577  10687   
 10578  10688   TEST: Samantha et Eva {{viennes}} demain.
 10579  10689   TEST: Samantha et Eva leur {{décrive}} une leçon.
................................................................................
 10757  10867   
 10758  10868   #### VERBE AUXILIAIRE
 10759  10869   
 10760  10870   __[i]/conf(conf_avoir_sujet_participe_passé)__
 10761  10871       ({avoir})-(?:je|tu|ils?|elles?|on) +({ppas})  @@0,$
 10762  10872       <<- morph(\1, ">avoir ", False) and morph(\2, ":V.......e_.*:Q", False) -1>> _  # Incohérence. La forme verbale “\2” ne peut pas être utilisé avec l’auxiliaire “avoir”, seulement avec l’auxiliaire “être”.
 10763  10873   __[i]/conf(conf_sujet_avoir_participe_passé)__
 10764         -    (?:j’|je |tu |ils? |elles? |on ) *>? *({avoir}) +({ppas})  @@*,$
        10874  +    (?:j’|je |tu |ils? |elles? |on ) *({avoir}) +({ppas})  @@*,$
 10765  10875       <<- morph(\1, ">avoir ", False) and morph(\2, ":V.......e_.*:Q", False) -1>> _  # Incohérence. La forme verbale “\2” ne peut pas être utilisé avec l’auxiliaire “avoir”, seulement avec l’auxiliaire “être”.
 10766  10876   
 10767  10877   TEST: {{Ait}}-il arrivé à ses fins ?
 10768  10878   TEST: je n’{{avais}} pas parti avec eux.
 10769  10879   TEST: Avais-je partie liée avec lui ?
 10770  10880   TEST: il {{avait}} parti.
 10771  10881   
................................................................................
 10777  10887   !!
 10778  10888   !!
 10779  10889   
 10780  10890   # conditionnel / futur
 10781  10891   
 10782  10892   __[i]/vmode(vmode_j_aimerais_vinfi)__
 10783  10893       j(?:e +|’)(aimerai|préf[éè]rerai|apprécierai|voudrai|souhaiterai) +({w_1})  @@w,$
 10784         -    <<- morphex(\2, ":[YX]|>y ", "R") -1>> \1s                                  # Si vous exprimez un souhait, utilisez le conditionnel et non le futur.
 10785         -__[i>/vmode(vmode_j_aimerais_pronom)__
 10786         -    j(?:e +|’)(aimerai|préf[éè]rerai|apprécierai|voudrai|souhaiterai) +(?:que? |>)  @@w
 10787         -    <<- -1>> \1s                                                                # Si vous exprimez un souhait, utilisez le conditionnel et non le futur.
        10894  +    <<- morphex(\2, ":[YX]|>(?:y|ne|que?) ", ":R") -1>> \1s                                 # Si vous exprimez un souhait, utilisez le conditionnel et non le futur.
 10788  10895   
 10789  10896   TEST: J’{{aimerai}} savoir ce dont il retourne.
 10790  10897   TEST: dans tous les cas j’{{aimerai}} ne rien savoir
 10791  10898   TEST: Je {{voudrai}} qu’il soit déjà là.
 10792  10899   TEST: J’aimerai ces cours-là autant que les autres.
 10793  10900   TEST: J’aimerai la danse et la musique, puisque vous l’exigez.
 10794  10901   
 10795  10902   
 10796         -__[i>/vmode(vmode_j_aurais_aimé_que_avoir_être1)__
 10797         -    j’(aurai) +(?:aimé|souhaité|préféré|voulu) +(?:que? |ne |> )  @@2
 10798         -    <<- -1>> aurais|eusse                           # Pour un souhait passé, utilisez le conditionnel passé et non le futur antérieur. Exemple pour le futur antérieur : « quand j’aurai fini… »
 10799         -__[i]/vmode(vmode_j_aurais_aimé_que_avoir_être2)__
 10800         -    j’(aurai) +(?:aimé|souhaité|préféré|voulu) +(?:[nmtsl]’|)({infi})  @@2,$
 10801         -    <<- morph(\2, ":Y", False)
        10903  +__[i]/vmode(vmode_j_aurais_aimé_que_avoir_être)__
        10904  +    j’(aurai) +(?:aimé|souhaité|préféré|voulu) +(que?|ne|{infi})  @@2,$
        10905  +    <<- morph(\2, ":Y|>(?:ne|que?) ", False)
 10802  10906       -1>> aurais|eusse                               # Pour un souhait passé, utilisez le conditionnel passé et non le futur antérieur. Exemple pour le futur antérieur : « quand j’aurai fini… »
 10803  10907   
 10804  10908   TEST: J’{{aurai}} aimé nous offrir ce magnifique cadeau.
 10805  10909   TEST: j’{{aurai}} voulu être un artiste.
 10806  10910   TEST: j’{{aurai}} préféré ne pas avoir à l’entendre.
        10911  +TEST: j’{{aurai}} préféré l’entendre un autre jour.
        10912  +TEST: j’{{aurai}} aimé que vous m’en parliez.
 10807  10913   TEST: Quand j’en aurai fini avec eux, vous aurez du mal à les reconnaître.
 10808  10914   TEST: Quand j’aurai fini ce boulot, je ne sais pas ce que je ferai.
 10809  10915   TEST: Quand j’aurai soif et faim, je m’arrêterai.
 10810  10916   
 10811  10917   
 10812  10918   # Si suivi du conditionnel ou du subjonctif
 10813  10919   __[i]/vmode(vmode_si_sujet1)__
 10814         -    si +({w1}) +>? *({w_2})  @@w,$
        10920  +    si +({w1}) +({w_2})  @@w,$
 10815  10921       <<- morph(\1, ":(?:Os|M)", False) and morphex(\2, ":[SK]", ":(?:G|V0|I)") and isStart()
 10816  10922       -2>> _                                                                          # Ce verbe ne devrait être ni au conditionnel, ni au subjonctif.
 10817  10923   __[i]/vmode(vmode_si_sujet2)__
 10818         -    (?:si [jt]’|s’ils? )>? *({w_2})  @@$
        10924  +    (?:si [jt]’|s’ils? +)({w_2})  @@$
 10819  10925       <<- morphex(\1, ":[SK]", ":(?:G|V0|I)") and isStart()
 10820  10926       -1>> _                                                                          # Ce verbe ne devrait être ni au conditionnel, ni au subjonctif.
 10821  10927   
 10822  10928   TEST: Si Pierre {{avancerait}} sa voiture de quelques mètres, ça nous permettrait de passer.
 10823  10929   TEST: s’ils ne {{mangeraient}} pas tous les jours, ils seraient moins gros.
 10824  10930   
 10825  10931   
 10826  10932   # Dès que + indicatif
 10827  10933   __[i]/vmode(vmode_dès_que)__
 10828         -    dès +que? +({w1}) +>? *({w_2})  @@w,$
        10934  +    dès +que? +({w1}) +({w_2})  @@w,$
 10829  10935       <<- morph(\1, ":(?:Os|M)", False) and morphex(\2, ":S", ":[IG]")    -2>> =suggVerbMode(@, ":I", \1)     # Ce verbe ne devrait pas être au subjonctif.
 10830  10936   #    <<- morph(\1, ":(?:Os|M)", False) and morph(\2, ":K", False)        -2>> =suggVerbMode(@, ":If", \1)    # Ce verbe ne devrait pas être au conditionnel.
 10831  10937   
 10832  10938   #TEST: dès que je le {{verrais}}
 10833  10939   TEST: dès qu’il le {{voie}}
 10834  10940   TEST: donnant à entendre qu’il avait l’intention de violer Laura dès qu’il en aurait l’occasion
 10835  10941   
 10836  10942   
 10837  10943   # verbe que + subjonctif
 10838  10944   __[i]/vmode(vmode_qqch_que_subjonctif1)__
 10839         -    (afin|pour|quoi|(?:perm|fa|v[oe]|ordonn|exig|désir|dout|suff|préf[éè]r)\w+) +que? +({w1}) +>? *({w_2})  @@0,w,$
        10945  +    (afin|pour|quoi|(?:perm|fa|v[oe]|ordonn|exig|désir|dout|suff|préf[éè]r)\w+) +que? +({w1}) +({w_2})  @@0,w,$
 10840  10946       <<- morph(\1, ">(?:afin|pour|quoi|permettre|falloir|vouloir|ordonner|exiger|désirer|douter|préférer|suffire) ", False)
 10841  10947       and morph(\2, ":(?:Os|M)", False) and morphex(\3, ":I", ":[GYS]")
 10842  10948       and not (morph(\1, ">douter ", False) and morph(\3, ":(?:If|K)", False))
 10843  10949       -3>> =suggVerbMode(@, ":S", \2)                                                 # Ce verbe devrait être au subjonctif.
 10844  10950   
 10845  10951   TEST: Il suffit qu’il {{court}} plus
 10846  10952   TEST: Je veux qu’il {{finit}} son repas.
................................................................................
 10850  10956   TEST: Je ne doute pas qu’ils réussiront leur mission.
 10851  10957   TEST: Je me doutais bien qu’Apple pourrait marcher
 10852  10958   TEST: il ne fait aucun doute qu’Amazon le sait.
 10853  10959   TEST: quoi que nous autres hommes ayons pu faire
 10854  10960   
 10855  10961   
 10856  10962   __[i]/vmode(vmode_qqch_que_subjonctif2)__
 10857         -    (?:à condition|pour peu|il >  peut) +que? +({w1}) +>? *({w_2})  @@w,$
        10963  +    (?:à condition|pour peu|il +peut) +que? +({w1}) +({w_2})  @@w,$
 10858  10964       <<- morph(\1, ":(?:Os|M)", False) and morphex(\2, ":", ":[GYS]") -2>> =suggVerbMode(@, ":S", \1)    # Ce verbe devrait être au subjonctif.
 10859  10965   
 10860  10966   TEST: à condition qu’il {{finit}} son boulot.
 10861  10967   TEST: pour peu qu’il {{prend}} son devoir sérieux… 
 10862  10968   TEST: il se peut que nous {{avons}} tort.
 10863  10969   
 10864  10970   
 10865  10971   # indicatif nécessaire
 10866  10972   __[i]/vmode(vmode_sujet_indicatif)__
 10867         -    ^ *(je|j’(?:en|y)|tu|ils?|elles?|on|nous|vous) +>? *({w_2})  @@*,$
        10973  +    ^ *(je|j’(?:en|y)|tu|ils?|elles?|on|nous|vous) +({w_2})  @@*,$
 10868  10974       <<- morphex(\2, ":S", ":[GIK]") and not re.search("^e(?:usse|û[mt]es|ût)", \2) 
 10869  10975       -2>> =suggVerbMode(@, ":I", \1)                                                                 # Ce verbe ne devrait pas être au subjonctif.
 10870  10976   __[i]/vmode(vmode_j_indicatif)__
 10871  10977       ^ *j’({w_2})  @@$
 10872  10978       <<- morphex(\1, ":S", ":[GIK]") and \1 != "eusse" -1>> =suggVerbMode(@, ":I", "je")             # Ce verbe ne devrait pas être au subjonctif.
 10873  10979   
 10874  10980   TEST: Il {{ait}} parti.
................................................................................
 10875  10981   TEST: Il en {{conclue}} qu’il a eu raison.
 10876  10982   TEST: j’en {{aie}} marre
 10877  10983   TEST: j’{{aie}} faim
 10878  10984   
 10879  10985   
 10880  10986   # Après que + indicatif
 10881  10987   __[i]/vmode(vmode_après_que_indicatif)__
 10882         -    après que? ({w_2}) +>? *({w_2})  @@w,$
        10988  +    après que? ({w_2}) +({w_2})  @@w,$
 10883  10989       <<- morph(\1, ":(?:Os|M)", False) and (morph(\2, ":V.*:S") or morph(\2, ":V0e.*:S", False))
 10884  10990       -2>> =suggVerbMode(@, ":I", \1)
 10885  10991       # Après « après que », le verbe s’emploie pas au subjonctif mais à l’indicatif, si l’action s’est déroulée de façon certaine.
 10886  10992   
 10887  10993   TEST: Après qu’il {{ait}} allé
 10888  10994   TEST: Après que Paul {{ait}} mangé son repas.
 10889  10995   TEST: Après qu’il {{soit}} parti, il plut.