Grammalecte  Check-in [e73a871408]

Overview
Comment:[fr] conversion: regex rules -> graph rules
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | fr | rg
Files: files | file ages | folders
SHA3-256: e73a8714081fde59b12b48cc82c5066550cabc9e398cc6aca51c3100824f4112
User & Date: olr on 2018-08-24 17:05:26
Other Links: branch diff | manifest | tags
Context
2018-08-24
20:56
[core] gc engine: don’t parse graph which name is also a valid option set to False check-in: 2a778178ee user: olr tags: core, rg
17:05
[fr] conversion: regex rules -> graph rules check-in: e73a871408 user: olr tags: fr, rg
2018-08-23
10:55
[fr] conversion: regex rules -> graph rules check-in: be3bfebccb user: olr tags: fr, rg
Changes

Modified gc_lang/fr/rules.grx from [bf2f601e79] to [a7cf1dc71f].

   474    474   
   475    475   # mètres (m)
   476    476   __[s>(p_chiffres_m)__
   477    477       "\d+ (m) "  @@w <<- ~1>> _
   478    478   
   479    479   # heures
   480    480   __[s](p_heures)__
   481         -    (?:de |à |)[012]?\d[h:]\d\d(?:[m:]\d\ds?|) <<- ~>> *
          481  +    (?:de|à|jusqu’à) [012]?\d[h:]\d\d(?:[m:]\d\ds?|) <<- ~>> *
   482    482   
   483    483   # crochets
   484    484   __[s](p_points_suspension_entre_crochets)__
   485    485       \[…\] <<- ~>> *
   486    486   __[s](p_mot_entre_crochets)__
   487    487       \[({w_1})\] @@1
   488    488       <<- \1.isdigit() ~>> *
................................................................................
   520    520   TEST: C’est le b.a.-ba du métier.
   521    521   TEST: qui a été le plus honnête [Rires]
   522    522   TEST: Marion Maréchal-Le Pen. Afin que Maréchal ne soit pas analysé comme un impératif, “Le Pen” devient “Le_Pen”.
   523    523   TEST: Car [je] deviendrai plus insaisissable que jamais.
   524    524   TEST: C’est dans le dossier D:\Data
   525    525   TEST: Dossier C:\Program Files (x86)\LibreOffice
   526    526   TEST: [1] Dossier à revoir.
          527  +TEST: jusqu’à 12h47
   527    528   
   528    529   
   529    530   
   530    531   !!!
   531    532   !!!
   532    533   !!! Processeur: balises HTML et LaTeX                                                             !!
   533    534   !!!
................................................................................
  4142   4143       tu  ?[ne|n’]¿  [lui|leur]                     en                         @:V¬:(?:G|P|[ISK].*:2s)
  4143   4144           <<- /conj/ not morph(<1, ":V0.*:2s") --1>> =suggVerb(\-1, ":2s")    # Conjugaison erronée. Accord avec “\1”. Le verbe devrait être à la 2ᵉ personne du singulier.
  4144   4145   
  4145   4146   TEST: Tu ne {{ment}} jamais.
  4146   4147   TEST: Tu {{a}} mal ?
  4147   4148   TEST: Tu ne le lui {{prend}} pas.
  4148   4149   TEST: Tu ne m’{{attendra}} pas.
         4150  +TEST: Jusqu’ici, on a tu le nom de la créature.
         4151  +TEST: il s’est tu les jours après son agression.
  4149   4152   
  4150   4153   
  4151   4154   ## 3sg
  4152   4155   __conj_il__
  4153   4156       il  @:V¬:(?:3s|G)
  4154   4157           <<- /conj/ not (morph(\2, ":[PQ]") and morph(<1, ":V0.*:3s"))
  4155   4158           -2>> =suggVerb(\2, ":3s")                                           # Conjugaison erronée. Accord avec “\1”. Le verbe devrait être à la 3ᵉ personne du singulier.
................................................................................
 12630  12633   __conf_pâte_patte_pat__
 12631  12634       [>patte|pat] [>alimentaire|>alsacienne|>chinoise|>feuilletée|>italienne|>thermique]
 12632  12635       [>patte|pat] au [basilic|beurre|saumon|pesto|poulet|thon]
 12633  12636       [>patte|pat] [à|a] [>pain|>crêpe|>gaufre|>pizza|>tarte|>modeler|>tartiner]
 12634  12637       [>patte|pat] [d’|de] [>amande|>amende|>fruit]
 12635  12638           <<- /conf/ -1>> pâte|pâtes                              # Confusion. La patte est le membre d’un animal (ou d’une table…). La matière pâteuse s’écrit “pâte”.
 12636  12639   
        12640  +
        12641  +    >mettre ?[pas|jamais]¿ la main à la [>patte|pat]
 12637  12642       >coq en [>patte|pat]
 12638         -        <<- /conf/ -3>> pâte                                    # Confusion. La patte est le membre d’un animal (ou d’une table…). La matière pâteuse s’écrit “pâte”.
        12643  +        <<- /conf/ --1>> pâte                                   # Confusion. La patte est le membre d’un animal (ou d’une table…). La matière pâteuse s’écrit “pâte”.
        12644  +
        12645  +    >coup de [>pâte|pat]
        12646  +        <<- /conf/ -3>> patte                                   # Confusion. Une pâte est une matière pâteuse. Pour désigner le membre d’un animal, écrivez “patte”.
 12639  12647   
 12640  12648   TEST: Prépare la {{patte}} à tarte.
 12641  12649   TEST: Ils mangent souvent des {{pattes}} au thon.
 12642  12650   TEST: Des {{pattes}} alimentaires.
 12643  12651   TEST: Elles ont acheté de la {{patte}} à tartiner.
 12644  12652   TEST: La {{patte}} à pizza est plus épaisse que la pâte à crêpes.
 12645  12653   TEST: Elle adore la {{patte}} d’amande.
 12646  12654   TEST: Il est comme un coq en {{pattes}} là.
        12655  +TEST: Elle n’a jamais mis la main à la {{patte}}.
 12647  12656   
 12648  12657   
 12649  12658   # peu / peux / peut
 12650  12659   __conf_peut_peux_peu2__
 12651  12660       [peux|peut]  [de|d’]  @:[NA]¬*
 12652  12661           <<- /conf/ space_after(\1, 1, 3) -1>> peu               # Confusion probable : “\1” est une forme conjuguée de “pouvoir”, écrivez “peu” pour dire “pas beaucoup”.
 12653  12662   
................................................................................
 15906  15915           <<- /conj/ not morph(<1, ":[VR]|>de") -2>> =suggVerb(\2, ":3p") # Conjugaison erronée. Accord avec “\1”. Le verbe devrait être à la 3ᵉ personne du pluriel.
 15907  15916   
 15908  15917   TEST: lesquels {{devienne}} des ennuyeux incomparables.
 15909  15918   TEST: Mais parmi les millions de causes à défendre, lesquelles choisir ?
 15910  15919   TEST: les failles par lesquelles entrait l’eau étaient impossibles à boucher.
 15911  15920   
 15912  15921   
 15913         -
 15914         -@@@@
 15915         -@@@@
 15916         -@@@@
 15917         -@@@@
 15918         -@@@@END_GRAPH                                                                                      _
 15919         -@@@@
 15920         -@@@@
 15921         -@@@@
 15922         -@@@@
 15923         -
 15924         -
 15925         -# on / ont
 15926         -__[i]/conf(conf_ont1)__
 15927         -    (?:ils|c?eux +qui|c?elles +qui) +(on)  @@$
 15928         -    <<- -1>> ont                                            # Incohérence : « on » est un pronom personnel, « ont » est une conjugaison du verbe avoir.
 15929         -
 15930         -TEST: ces gens-là ils {{on}} {{raison}} plus souvent que la plupart des gens.
 15931         -TEST: Ils soutiennent ceux qui {{on}} {{tant}} de raison d’être en colère.
 15932         -
 15933         -
 15934         -__[i]/conf(conf_ont2)!6__
 15935         -    (?<![dD]’)(?:elles|ceux-(?:ci|là)|celles-(?:ci|là)) +(on)  @@$
 15936         -    <<- not before(r"(?i)\b(?:à|avec|sur|chez|par|dans|parmi|contre|ni|de|pour|sous) +$")
 15937         -    -1>> ont                                                # Incohérence : « on » est un pronom personnel, « ont » est une conjugaison du verbe avoir.
 15938         -
 15939         -TEST: celles-là {{on}} {{vraiment}} un problème avec la religion.
 15940         -TEST: j’ai, tu as, ils ont, elles {{on}}
 15941         -TEST: Or parmi celles-ci on trouve typiquement d’un côté les structures
 15942         -
 15943         -
 15944  15922   # 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 ».
 15945  15923   
 15946         -__[i]/conj(conj_beaucoup_d_aucuns_la_plupart)__
 15947         -    (beaucoup|d’aucuns|la plupart) +({w_2})  @@0,$
 15948         -    <<- morphex(\2, ":V", ":(?:3p|P|Q|G)") and not morph(word(-1), ":[VR]|>de/", False, False)
 15949         -    -2>> =suggVerb(@, ":3p")                                # Conjugaison erronée. Accord avec « \1 ». Le verbe devrait être à la 3ᵉ personne du pluriel.
        15924  +__conj_beaucoup_d_aucuns_la_plupart__
        15925  +    beaucoup    @:V¬:(?:3p|P|Q|G)
        15926  +        <<- /conj/ not morph(<1, ":[VR]|>de/")
        15927  +        -2>> =suggVerb(\2, ":3p")                                       # Conjugaison erronée. Accord avec “\1”. Le verbe devrait être à la 3ᵉ personne du pluriel.
 15950  15928   
 15951         -__[i]/conj(conj_beaucoup_d_aucuns_la_plupart_qui)__
 15952         -    (beaucoup|d’aucuns|la plupart) +qui +({w_2})  @@0,$
 15953         -    <<- morphex(\2, ":V", ":(?:3p|P|Q|G)") and not morph(word(-1), ":[VR]", False, False)
 15954         -    -2>> =suggVerb(@, ":3p")                                # Conjugaison erronée. Accord avec « \1 ». Le verbe devrait être à la 3ᵉ personne du pluriel.
        15929  +    d’ aucuns   @:V¬:(?:3p|P|Q|G)
        15930  +    la plupart  @:V¬:(?:3p|P|Q|G)
        15931  +        <<- /conj/ not morph(<1, ":[VR]|>de/")
        15932  +        -3>> =suggVerb(\3, ":3p")                                       # Conjugaison erronée. Accord avec “\1 \2”. Le verbe devrait être à la 3ᵉ personne du pluriel.
        15933  +
        15934  +    beaucoup    qui  @:V¬:(?:3p|P|G)
        15935  +        <<- /conj/ not morph(<1, ":[VR]|>de/")
        15936  +        -3>> =suggVerb(\3, ":3p")                                       # Conjugaison erronée. Accord avec “\1”. Le verbe devrait être à la 3ᵉ personne du pluriel.
        15937  +
        15938  +    d’ aucuns   qui  @:V¬:(?:3p|P|G)
        15939  +    la plupart  qui  @:V¬:(?:3p|P|G)
        15940  +        <<- /conj/ not morph(<1, ":[VR]|>de/")
        15941  +        -3>> =suggVerb(\3, ":3p")                                       # Conjugaison erronée. Accord avec “\1 \2 \3”. Le verbe devrait être à la 3ᵉ personne du pluriel.
 15955  15942   
 15956  15943   TEST: la plupart des hommes {{vienne}}
 15957  15944   TEST: La plupart {{admet}}
 15958  15945   TEST: beaucoup {{vienne}}
 15959  15946   TEST: d’aucuns {{pense}} que c’est faux
 15960  15947   TEST: beaucoup qui ne {{pense}} jamais à rien, mais qui ont quand même des avis sur tout.
 15961  15948   TEST: beaucoup entre la peste et le choléra.
        15949  +TEST: Beaucoup avait été accompli
 15962  15950   
 15963  15951   
 15964         -__[i]/conj(conj_certains_tous_plusieurs)__
 15965         -    (?<!de )(certaine?s|tou(?:te|)s|plusieurs) +(?:qui +|)({w_2})  @@0,$
 15966         -    <<- morphex(\2, ":V", ":(?:G|N|A|3p|P|Q)") and not morph(word(-1), ":[VR]", False, False)
 15967         -    -2>> =suggVerb(@, ":3p")                                # Conjugaison erronée. Accord avec « \1 ». Le verbe devrait être à la 3ᵉ personne du pluriel.
        15952  +__conj_certains_tous_plusieurs__
        15953  +    [certains|certaines|tous|toutes|plusieurs]  @:V¬:(?:G|N|A|3p|P|Q)
        15954  +    [certains|certaines|tous|toutes|plusieurs]  qui  @:V¬:(?:G|3p|P)
        15955  +        <<- /conj/ not morph(<1, ":[VR]|>de/")
        15956  +        --1>> =suggVerb(\-1, ":3p")                                     # Conjugaison erronée. Accord avec “\1”. Le verbe devrait être à la 3ᵉ personne du pluriel.
 15968  15957   
 15969  15958   TEST: certains {{prenne}} leur temps
 15970  15959   TEST: Plusieurs qui {{pense}} que c’est une arnaque se sont quand même trompés.
 15971  15960   
 15972  15961   
 15973         -__[i]/conj(conj_certains_certaines)__
 15974         -    (certaine?) +({w_2})  @@0,$
 15975         -    <<- isStart() >>>
 15976         -    <<- morphex(\2, ":V.*:[123]p", ":[GWM]") -1>> \1s                                               # Accord de conjugaison avec “\2”. Mettez au pluriel “\1” si vous désignez plusieurs personnes.
 15977         -    <<- \1.endswith("n") and morphex(\2, ":V.*:[123]s", ":(?:V0e.*:3s|N.*:[me]:[si])")
 15978         -    -2>> =suggVerb(@, ":3p")                                                                        # Conjuguez “\2” à la troisième personne du pluriel, si “\1” est un pronom censé désigner plusieurs personnes.
 15979         -    <<- __also__ -1>> \1s                                                                           # Mettez au pluriel “\1” si vous désignez plusieurs personnes.
 15980         -    <<- __else__ and \1.endswith("e") and morphex(\2, ":V.*:[123]s", ":(?:V0e.*:3s|N.*:[fe]:[si])")
 15981         -    -2>> =suggVerb(@, ":3p")                                                                        # Conjuguez “\2” à la troisième personne du pluriel, si “\1” est un pronom censé désigner plusieurs personnes.
 15982         -    <<- __also__ -1>> \1s                                                                           # Mettez au pluriel “\1” si vous désignez plusieurs personnes.
        15962  +__conj_certains_certaines__
        15963  +    [<start>|,]  [certain|certaine]  @:V.*:[123]p¬:[GWMNA]
        15964  +        <<- /conj/ -2>> \1s                                             # Mettez au pluriel “\2” si vous désignez plusieurs personnes.
        15965  +        <<- /conj/ morph(\3, ":[12]p") ->> =suggVerb(\3, ":3p")         # Conjuguez “\3” à la troisième personne du pluriel, si “\2” est un pronom censé désigner plusieurs personnes.
        15966  +
        15967  +    [<start>|,]  certain  @:V.*:[123]s¬>(?:être|demeurer|rester|devenir|redevenir).*:3s|:N.*:[me]:[si]
        15968  +        <<- /conj/ -3>> =suggVerb(\3, ":3p")                            # Conjuguez “\3” à la troisième personne du pluriel, si “\2” est un pronom censé désigner plusieurs personnes.
        15969  +        <<- /conj/ -2>> \1s                                             # Mettez au pluriel “\2” si vous désignez plusieurs personnes.
        15970  +
        15971  +    [<start>|,]  certaine  @:V.*:[123]s¬>(?:être|demeurer|rester|devenir|redevenir).*:3s|:N.*:[fe]:[si]
        15972  +        <<- /conj/ -3>> =suggVerb(\3, ":3p")                            # Conjuguez “\3” à la troisième personne du pluriel, si “\2” est un pronom censé désigner plusieurs personnes.
        15973  +        <<- /conj/ -2>> \1s                                             # Mettez au pluriel “\2” si vous désignez plusieurs personnes.
 15983  15974   
 15984  15975   TEST: {{certain}} deviennent idiots à cette seule pensée.
 15985  15976   TEST: mais c’est exact, {{certaine}} perdent leur calme souvent dans les méandres de l’administration.
 15986  15977   TEST: {{certain}} {{donne}} beaucoup.
 15987  15978   TEST: certaine est la défaite.
        15979  +TEST: si tu persévères, certaine deviendra la réussite.
 15988  15980   
 15989  15981   
 15990         -__[i]/conj(conj_det_plur_nom)__
 15991         -    ([cmts]es|[nv]os|leurs|quelques) +({w_2}) +({w_2})  @@0,w,$
 15992         -    <<- morph(\2, ":[NAQ].*:[pi]", False) and morphex(\3, ":V", ":(?:[13]p|P|Y|G|A.*:e:[pi])") and morphex(word(-1), ":C", ":[YP]", True)
 15993         -        and not( morph(\3, ":3s", False) and before(r"(?i)\b(?:l[ea] |l’|une? |ce(?:tte|t|) |[mts](?:on|a) |[nv]otre ).+ entre .+ et ") ) >>>
 15994         -    <<- not checkAgreement(\2, \3)
 15995         -    -3>> =suggVerb(@, ":3p")                                # Conjugaison erronée. Accord avec « \1 \2… ». Le verbe devrait être à la 3ᵉ personne du pluriel.
 15996         -    <<- __else__ and isAmbiguousAndWrong(\2, \3, ":p", ":3p")
 15997         -    -3>> =suggVerb(@, ":3p", suggPlur)                      # Accord avec « \1 \2… » incorrect. Conjugaison erronée ou accord nom/adjectif incorrect.
 15998         -__[i]/conj(conj_det_plur_nom_qui)__
 15999         -    ([cmts]es|[nv]os|leurs|quelques) +({w_2}) +qui +({w_2})  @@0,w,$
 16000         -    <<- morph(\2, ":[NAQ].*:[pi]", False) and morphex(\3, ":V", ":(?:[13]p|P|Y|G|A.*:e:[pi])") and morphex(word(-1), ":C", ":[YP]", True)
 16001         -        and not( morph(\3, ":3s", False) and before(r"(?i)\b(?:l[ea] |l’|une? |ce(?:tte|t|) |[mts](?:on|a) |[nv]otre ).+ entre .+ et ") )
 16002         -    -3>> =suggVerb(@, ":3p")                                # Conjugaison erronée. Accord avec « \1 \2… ». Le verbe devrait être à la 3ᵉ personne du pluriel.
        15982  +__conj_det_plur_nom__
        15983  +    [ces|mes|tes|ses|nos|vos|leurs|quelques]  @:[NA].*:[pi]  @:V¬:(?:[13]p|P|Y|G|A.*:e:[pi])
        15984  +        <<- /conj/ morph(<1, ":C|<start>|>,")
        15985  +            and not( morph(\3, ":3s") and before(r"(?i)\b(?:l[ea] |l’|une? |ce(?:tte|t|) |[mts](?:on|a) |[nv]otre ).+ entre .+ et ") ) >>>
        15986  +        <<- /conj/ not checkAgreement(\2, \3) -3>> =suggVerb(\3, ":3p") # Conjugaison erronée. Accord avec “\1 \2…”. Le verbe devrait être à la 3ᵉ personne du pluriel.
        15987  +        <<- /conj/ __else__ and isAmbiguousAndWrong(\2, \3, ":p", ":3p")
        15988  +        -3>> =suggVerb(\3, ":3p", suggPlur)                             # Accord avec « \1 \2… » incorrect. Conjugaison erronée ou accord nom/adjectif incorrect.
        15989  +
        15990  +    [ces|mes|tes|ses|nos|vos|leurs|quelques]  @:[NA].*:[pi]  qui  @:V¬:(?:[13]p|P|Y|G|A.*:e:[pi])
        15991  +        <<- /conj/ morph(<1, ":C|<start>|>,")
        15992  +            and not( morph(\4, ":3s") and before(r"(?i)\b(?:l[ea] |l’|une? |ce(?:tte|t|) |[mts](?:on|a) |[nv]otre ).+ entre .+ et ") )
        15993  +        -4>> =suggVerb(\4, ":3p")                                       # Conjugaison erronée. Accord avec “\1 \2 \3…”. Le verbe devrait être à la 3ᵉ personne du pluriel.
 16003  15994   
 16004  15995   TEST: Ses « chiens » {{coure}} sur ma pelouse.
 16005  15996   TEST: mes filles {{passe}} ce matin
 16006  15997   TEST: vos filles {{passes}} ce matin
 16007  15998   TEST: ces travaux qui {{demande}} tant d’efforts.
 16008  15999   TEST: vos questions ne {{réclame}} aucune réflexion.
 16009  16000   TEST: le lien entre les agences de renseignement et ces mêmes entreprises pouvait reposer sur des activités de surveillance à proprement parler.
 16010  16001   
 16011  16002   
 16012         -__[i]/conj(conj_det_plur_nom_confusion)__
 16013         -    (les|certaine?s|plusieurs) +({w_2}) +({w_2})  @@0,w,$
 16014         -    <<- morph(\2, ":[NAQ].*:[pi]", False) and morphex(\3, ":V", ":(?:[13]p|P|Y|G|A.*:e:[pi])") and morphex(word(-1), ":C", ":[YP]", True)
 16015         -        and not( morph(\3, ":3s", False) and before(r"(?i)\b(?:l[ea] |l’|une? |ce(?:tte|t|) |[mts](?:on|a) |[nv]otre ).+ entre .+ et ") ) >>>
 16016         -    <<- not checkAgreement(\2, \3)
 16017         -    -3>> =suggVerb(@, ":3p")                                # Conjugaison erronée. Accord avec « \1 \2… ». Le verbe devrait être à la 3ᵉ personne du pluriel.
 16018         -    <<- __else__ and (\1 == "les" or \1 == "Les") and isVeryAmbiguousAndWrong(\2, \3, ":p", ":3p", isStart())
 16019         -    -3>> =suggVerb(@, ":3p", suggPlur)                      # Accord avec « les \2… » incorrect. Conjugaison erronée ou accord nom/adjectif incorrect.
 16020         -    <<- __else__ and (\1 == "certains" or \1 == "Certains") and isVeryAmbiguousAndWrong(\2, \3, ":m:p", ":3p", isStart())
 16021         -    -3>> =suggVerb(@, ":3p", suggMasPlur)                   # Accord avec « certains \2… » incorrect. Conjugaison erronée ou accord nom/adjectif incorrect.
 16022         -    <<- __else__ and (\1 == "certaines" or \1 == "Certaines") and isVeryAmbiguousAndWrong(\2, \3, ":f:p", ":3p", isStart())
 16023         -    -3>> =suggVerb(@, ":3p", suggFemPlur)                   # Accord avec « certaines \2… » incorrect. Conjugaison erronée ou accord nom/adjectif incorrect.
 16024         -__[i]/conj(conj_det_plur_nom_qui_confusion)__
 16025         -    (les|certaine?s|plusieurs) +({w_2}) +qui +({w_2})  @@0,w,$
 16026         -    <<- morph(\2, ":[NAQ].*:[pi]", False) and morphex(\3, ":V", ":(?:[13]p|P|Q|Y|G|A.*:e:[pi])") and morphex(word(-1), ":C", ":[YP]", True)
 16027         -        and not( morph(\3, ":3s", False) and before(r"(?i)\b(?:l[ea] |l’|une? |ce(?:tte|t|) |[mts](?:on|a) |[nv]otre ).+ entre .+ et ") )
 16028         -    -3>> =suggVerb(@, ":3p")                                # Conjugaison erronée. Accord avec « \1 \2… ». Le verbe devrait être à la 3ᵉ personne du pluriel.
        16003  +__conj_det_plur_nom_confusion__
        16004  +    les  @:[NA].*:[pi]  @:V¬:(?:3p|P|Y|G|A.*:e:[pi])
        16005  +        <<- /conj/ morph(<1, ":C|<start>|>,")
        16006  +            and not( morph(\3, ":3s") and before(r"(?i)\b(?:l[ea] |l’|une? |ce(?:tte|t|) |[mts](?:on|a) |[nv]otre ).+ entre .+ et ") ) >>>
        16007  +        <<- /conj/ not checkAgreement(\2, \3)
        16008  +        -3>> =suggVerb(\3, ":3p")                                       # Conjugaison erronée. Accord avec “\1 \2…”. Le verbe devrait être à la 3ᵉ personne du pluriel.
        16009  +        <<- /conj/ __else__ and isVeryAmbiguousAndWrong(\2, \3, ":p", ":3p", value(<1, "|<start>|,|"))
        16010  +        -3>> =suggVerb(\3, ":3p", suggPlur)                             # Accord avec “\1 \2…” incorrect. Conjugaison erronée ou accord nom/adjectif incorrect.
        16011  +
        16012  +    [certains|certaines]  @:[NA].*:[pi]  @:V¬:(?:3p|P|Y|G|A.*:e:[pi])
        16013  +        <<- /conj/ morph(<1, ":C|<start>|>,")
        16014  +            and not( morph(\3, ":3s") and before(r"(?i)\b(?:l[ea] |l’|une? |ce(?:tte|t|) |[mts](?:on|a) |[nv]otre ).+ entre .+ et ") ) >>>
        16015  +        <<- /conj/ not checkAgreement(\2, \3)
        16016  +        -3>> =suggVerb(\3, ":3p")                                       # Conjugaison erronée. Accord avec “\1 \2…”. Le verbe devrait être à la 3ᵉ personne du pluriel.
        16017  +        <<- /conj/ __else__ and isVeryAmbiguousAndWrong(\2, \3, ":m:p", ":3p", value(<1, "|<start>|,|"))
        16018  +        -3>> =suggVerb(\3, ":3p", suggMasPlur)                          # Accord avec “\1 \2…” incorrect. Conjugaison erronée ou accord nom/adjectif incorrect.
        16019  +        <<- /conj/ __else__ and isVeryAmbiguousAndWrong(\2, \3, ":f:p", ":3p", value(<1, "|<start>|,|"))
        16020  +        -3>> =suggVerb(\3, ":3p", suggFemPlur)                          # Accord avec “\1 \2…” incorrect. Conjugaison erronée ou accord nom/adjectif incorrect.
        16021  +
        16022  +    plusieurs  @:[NA].*:[pi]  @:V¬:(?:3p|P|Y|G|A.*:e:[pi])
        16023  +        <<- /conj/ morph(<1, ":C|<start>|>,")
        16024  +            and not( morph(\3, ":3s") and before(r"(?i)\b(?:l[ea] |l’|une? |ce(?:tte|t|) |[mts](?:on|a) |[nv]otre ).+ entre .+ et ") )
        16025  +            and not checkAgreement(\2, \3)
        16026  +        -3>> =suggVerb(\3, ":3p")                                       # Conjugaison erronée. Accord avec “\1 \2…”. Le verbe devrait être à la 3ᵉ personne du pluriel.
        16027  +
        16028  +    [les|certains|certaines|plusieurs]  @:[NA].*:[pi]  qui  @:V¬:(?:[13]p|P|Y|G)
        16029  +        <<- /conj/ morph(<1, ":C|<start>|>,")
        16030  +            and not( morph(\4, ":3s") and before(r"(?i)\b(?:l[ea] |l’|une? |ce(?:tte|t|) |[mts](?:on|a) |[nv]otre ).+ entre .+ et ") )
        16031  +        -4>> =suggVerb(\4, ":3p")                                       # Conjugaison erronée. Accord avec “\1 \2 \3…”. Le verbe devrait être à la 3ᵉ personne du pluriel.
 16029  16032   
 16030  16033   TEST: Les abstentions {{est}} présumée manifester un défaut d’opinion marquée
 16031  16034   TEST: Les cours de culture générale nous {{apporte}} de l’ouverture d’esprit.
 16032  16035   TEST: Les hommes ne le lui {{pardonnes}} pas.
 16033  16036   TEST: Les infirmières à mi-temps ne {{travaille}} pas dans cette aile.
 16034  16037   TEST: les données, en quantité plus que suffisante, {{indique}} que…
 16035  16038   TEST: Les hommes comme celui-là {{mange}} comme deux.
................................................................................
 16057  16060   TEST: les chattes {{danse}}
 16058  16061   TEST: certains hommes {{marchandes}} sans cesse
 16059  16062   TEST: certaines femmes {{danse}} beaucoup
 16060  16063   TEST: Sauf que l’un comme l’autre avaient dû y renoncer.
 16061  16064   TEST: L’un comme l’autre devaient y renoncer.
 16062  16065   
 16063  16066   
 16064         -__[i]/conj(conj_des_nom1)__
 16065         -    ^ *des +({w_2}) +({w_2})  @@w,$
 16066         -    <<- morph(\1, ":[NAQ].*:[pi]", False) and morphex(\2, ":V", ":(?:[13]p|P|G|Q|A.*:[pi])") and morph(word(1), ":(?:R|D.*:p)|>au/", False, True) >>>
 16067         -    <<- not morph(\2, ":[NA]", False) -2>> =suggVerb(@, ":3p")                          # Conjugaison erronée. Accord avec « des \1… ». Le verbe devrait être à la 3ᵉ personne du pluriel.
 16068         -    <<- __else__ and not checkAgreement(\1, \2) -2>> =suggVerb(@, ":3p", suggPlur)      # Conjugaison erronée. Accord avec « des \1… ». Le verbe devrait être à la 3ᵉ personne du pluriel.
 16069         -__[i]/conj(conj_des_nom_qui)__
 16070         -    ^ *des +({w_2}) +qui +({w_2})  @@w,$
 16071         -    <<- morph(\1, ":[NAQ].*:[pi]", False) and morphex(\2, ":V", ":(?:[13]p|P|G)")
 16072         -    -2>> =suggVerb(@, ":3p")                                # Conjugaison erronée. Accord avec « des \1… ». Le verbe devrait être à la 3ᵉ personne du pluriel.
        16067  +__conj_des_nom__
        16068  +    [<start>|,]  des  @:[NA].*:[pi]  @:V¬:(?:3p|P|G|Q|A.*:[pi])
        16069  +        <<- /conj/ morph(>1, ":(?:R|D.*:p)|>au/|<end>|>,") >>>
        16070  +        <<- /conj/ not morph(\4, ":[NA]") -4>> =suggVerb(\4, ":3p")                                 # Conjugaison erronée. Accord avec “\2 \3…”. Le verbe devrait être à la 3ᵉ personne du pluriel.
        16071  +        <<- /conj/ __else__ and not checkAgreement(\3, \4) -4>> =suggVerb(\4, ":3p", suggPlur)      # Conjugaison erronée. Accord avec “\2 \3…”. Le verbe devrait être à la 3ᵉ personne du pluriel.
        16072  +
        16073  +    [<start>|,]  des  @:[NA].*:[pi]  qui  @:V¬:(?:3p|P|G)
        16074  +        <<- /conj/ -5>> =suggVerb(\5, ":3p")                                                        # Conjugaison erronée. Accord avec “\2 \3 \4…”. Le verbe devrait être à la 3ᵉ personne du pluriel.
 16073  16075   
 16074  16076   TEST: Des hommes {{arrive}}.
 16075  16077   TEST: Des femmes ne {{demande}} rien.
 16076  16078   TEST: des femmes qui {{conduise}} la marche du monde.
 16077  16079   
 16078  16080   
 16079  16081   #### NOMS PROPRES
 16080  16082   
 16081  16083   # 3sg
 16082         -__[s]/conj(conj_nom_propre)__
 16083         -    ([A-ZÉÈ][\w-]+) +({w_1})  @@0,$
 16084         -    <<- 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]|N.*:m:s)")
 16085         -        and not morph(word(-1), ":[VRD]", False, False) and not before(r"([A-ZÉÈ][\w-]+), +([A-ZÉÈ][\w-]+), +$")
 16086         -        and not (morph(\2, ":3p", False) and word(-1))
 16087         -    -2>> =suggVerb(@, ":3s")
 16088         -    # Conjugaison erronée. Accord avec « \1 ». Le verbe devrait être à la 3ᵉ personne du singulier.
        16084  +__conj_nom_propre__
        16085  +    ~^[A-ZÉÈ]  @:[123][sp]¬:(?:G|3s|3p!|P|M|A.*:[si]|N.*:m:s)
        16086  +        <<- /conj/ not before(r"\b[dD]e l’ *$") and morph(\1, ":M")
        16087  +            and not morph(<1, ":[VRD]|>(?:ni|et|ou)/") and not before(r"([A-ZÉÈ][\w-]+), +([A-ZÉÈ][\w-]+), +$")
        16088  +            and not ( morph(\2, ":3p") and before(r"\w") )
        16089  +        -2>> =suggVerb(\2, ":3s")                                                                   # Conjugaison erronée. Accord avec “\1”. Le verbe devrait être à la 3ᵉ personne du singulier.
 16089  16090   
 16090  16091   TEST: Marc {{arrives}} demain.
 16091  16092   TEST: Paul ne {{viens}} pas demain.
 16092  16093   TEST: Marc Aurèle {{étaient}} l’empereur des Romains. (Pas de trait d’union sur Marc Aurèle.)
 16093  16094   TEST: Arthur D. parvient à…
 16094  16095   TEST: Les fondateurs pionniers de l’Internet n’avaient pas prévu
 16095  16096   TEST: les compteurs Geiger ne détectent pas le polonium
 16096  16097   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
 16097  16098   TEST: Macron président, c’est…
 16098  16099   
 16099  16100   
 16100  16101   # 3pl
 16101         -__[s]/conj(conj_nom_propre_et_nom_propre)__
 16102         -    (?<!et |ou |[dD][eu] |ni )([A-ZÉÈ][\w-]+) et ([A-ZÉÈ][\w-]+) +({w_1})  @@0,w,$
 16103         -    <<- morph(\1, ":M", False) and morph(\2, ":M", False)
 16104         -        and morphex(\3, ":[123][sp]", ":(?:G|3p|P|Q.*:[pi])") and not morph(word(-1), ":R", False, False)
 16105         -    -3>> =suggVerb(@, ":3p")
 16106         -    # Conjugaison erronée. Accord avec « \1 et \2 ». Le verbe devrait être à la 3ᵉ personne du pluriel.
        16102  +__conj_nom_propre_et_nom_propre__
        16103  +    ~^[A-ZÉÈ]  et  ~^[A-ZÉÈ]  @:[123][sp]¬:(?:G|3p|P|Q.*:[pi])
        16104  +        <<- /conj/ morph(\1, ":M") and morph(\3, ":M") and not morph(<1, ":R|>(?:des?|du|et|ou|ni)/")
        16105  +        -4>> =suggVerb(\4, ":3p")                                                                   # Conjugaison erronée. Accord avec “\1 et \2”. Le verbe devrait être à la 3ᵉ personne du pluriel.
 16107  16106   
 16108  16107   TEST: Samantha et Eva {{viennes}} demain.
 16109  16108   TEST: Samantha et Eva leur {{décrive}} une leçon.
 16110  16109   
        16110  +
        16111  +# on / ont
        16112  +__conf_ont!6__
        16113  +    ils  on
        16114  +    [eux|ceux|elles|celles]  qui  on
        16115  +        <<- /conf/ --1>> ont                                    # Confusion probable : “on” est un pronom personnel. Pour la conjugaison du verbe “avoir”, écrivez “on”.
        16116  +
        16117  +    [elles|ceux-ci|ceux-là|celles-ci|celles-là]  on
        16118  +        <<- not morph(<1, ":[RV]|>de/") -2>> ont                # Confusion probable : “on” est un pronom personnel. Pour la conjugaison du verbe “avoir”, écrivez “on”.
        16119  +
        16120  +TEST: celles-là {{on}} {{vraiment}} un problème avec la religion.
        16121  +TEST: j’ai, tu as, ils ont, elles {{on}}
        16122  +TEST: ces gens-là ils {{on}} {{raison}} plus souvent que la plupart des gens.
        16123  +TEST: Ils soutiennent ceux qui {{on}} {{tant}} de raison d’être en colère.
        16124  +TEST: Or parmi celles-ci on trouve typiquement d’un côté les structures
        16125  +
 16111  16126   
 16112  16127   
 16113  16128   !!
 16114  16129   !!
 16115  16130   !!!! Inversion verbe sujet                                                                        !!
 16116  16131   !!
 16117  16132   !!
 16118  16133   
 16119         -__[i]/conj(conj_que_où_comment_verbe_sujet_sing)__
 16120         -    (?:que?|où|comment|combien|dont|quand|pourquoi) +({w1}) (l(?:e(?:ur | )|a |’)|[mts](?:on|a) |ce(?:t|tte|) |[nv]otre |du ) *(?!plupart|majorité)({w1})  @@w,w,$
 16121         -    <<- morphex(\1, ":(?:[12]s|3p)", ":(?:3s|G|W|3p!)") and not after("^ +(?:et|ou) (?:l(?:es? |a |’|eurs? )|[mts](?:a|on|es) |ce(?:tte|ts|) |[nv]o(?:s|tre) |d(?:u|es) )")
 16122         -    -1>> =suggVerb(@, ":3s")                                                        # Conjugaison erronée. Accord avec « \2 \3… ». Le verbe devrait être à la 3ᵉ personne du singulier.
        16134  +__conj_que_où_comment_verbe_sujet_sing__
        16135  +    [que|qu’|qu|où|comment|combien|dont|quand|pourquoi]  @:[123][sp]¬:(?:3s|G|W|3p!)  [le|la|l’|un|une|ce|cet|cette|mon|ton|son|ma|ta|sa|notre|votre|leur]  *WORD
        16136  +        <<- /conj/ not value(\4, "|plupart|majorité|groupe|") and not (value(>1, "|et|ou|") and morph(>2, ":D"))
        16137  +        -2>> =suggVerb(\2, ":3s")                                                   # Conjugaison erronée. Accord avec “\3 \4…”. Le verbe devrait être à la 3ᵉ personne du singulier.
 16123  16138   
 16124  16139   TEST: les possibilités qu’{{offrent}} le chien
 16125  16140   TEST: les possibilités que {{donnent}} le chien.
 16126  16141   TEST: Où {{vas}} l’homme ?
 16127  16142   TEST: l’histoire dont {{bénéficient}} notre langue.
 16128  16143   TEST: de la même façon que survivent le swing ou le latin.
 16129  16144   TEST: en proportion des efforts que requièrent son entretien et son exploitation
 16130  16145   TEST: une crainte aussi que renforcent son éloignement et le protocole compliqué
 16131  16146   TEST: à l’époque de Mansur que grandissent la place et le rôle de…
 16132  16147   TEST: où vivent la majorité des immigrés et des enfants d’immigrés
 16133  16148   
 16134  16149   
 16135         -__[i]/conj(conj_lxquel_verbe_sujet_sing)__
 16136         -    (?:l[ea]s?quel(?:le|)s?) +({w1}) (l(?:e(?:ur | )|a |’)|[mts](?:on|a) |ce(?:t|tte|) |[nv]otre |du ) *(?!plupart|majorité)({w1})  @@w,w,$
 16137         -    <<- morphex(\1, ":(?:[12]s|3p)", ":(?:3s|G|W|3p!)") and not after("^ +(?:et|ou) (?:l(?:es? |a |’|eurs? )|[mts](?:a|on|es) |ce(?:tte|ts|) |[nv]o(?:s|tre) |d(?:u|es) )")
 16138         -        and morph(word(-1), ":R", False, False)
 16139         -    -1>> =suggVerb(@, ":3s")                                                        # Conjugaison erronée. Accord avec « \2 \3… ». Le verbe devrait être à la 3ᵉ personne du singulier.
        16150  +__conj_lxquel_verbe_sujet_sing__
        16151  +    [lequel|laquelle|lesquels|lesquelles]  @:[123][sp]¬:(?:3s|G|W|3p!)  [le|la|l’|un|une|ce|cet|cette|mon|ton|son|ma|ta|sa|notre|votre|leur]  *WORD
        16152  +        <<- /conj/ morph(<1, ":R") and not value(\4, "|plupart|majorité|groupe|") and not (value(>1, "|et|ou|") and morph(>2, ":D"))
        16153  +        -2>> =suggVerb(\2, ":3s")                                                   # Conjugaison erronée. Accord avec “\3 \4…”. Le verbe devrait être à la 3ᵉ personne du singulier.
 16140  16154   
 16141  16155   TEST: une muraille contre laquelle {{venaient}} la masse armée et vociférante.
 16142  16156   
 16143  16157   
 16144         -__[i]/conj(conj_que_où_comment_verbe_sujet_pluriel)__
 16145         -    (?:que?|où|comment|combien|dont|quand|pourquoi) +({w_3}) ([ldcmts]es|quelques|certaine?s|plusieurs|[nv]os|leurs) ({w1})  @@w,w,$
 16146         -    <<- morphex(\1, ":[123]s", ":(?:3p|G|W)") -1>> =suggVerb(@, ":3p")              # Conjugaison erronée. Accord avec « \2 \3… ». Le verbe devrait être à la 3ᵉ personne du pluriel.
        16158  +__conj_que_où_comment_verbe_sujet_pluriel__
        16159  +    [que|qu’|qu|où|comment|combien|dont|quand|pourquoi]  @:[123][sp]¬:(?:3p|G|W)  [les|des|ces|mes|tes|ses|nos|vos|leurs|quelques|certains|certaines|plusieurs|maints|maintes]  *WORD
        16160  +        <<- /conj/ -2>> =suggVerb(\2, ":3p")                                        # Conjugaison erronée. Accord avec “\3 \4…”. Le verbe devrait être à la 3ᵉ personne du pluriel.
 16147  16161   
 16148  16162   TEST: D’où {{vienne}} les hommes ?
 16149  16163   TEST: Comment {{danse}} les femmes ?
 16150  16164   TEST: les idioties qu’{{aime}} les hommes, j’en ai marre.
 16151  16165   TEST: l’amour dont {{parle}} les femmes
 16152  16166   
 16153  16167   
 16154         -__[i]/conj(conj_lxquel_verbe_sujet_pluriel)__
 16155         -    (?:l[ea]s?quel(?:le|)s?) +({w_3}) ([ldcmts]es|quelques|certaine?s|plusieurs|[nv]os|leurs) ({w1})  @@w,w,$
 16156         -    <<- morphex(\1, ":[123]s", ":(?:3p|G|W)") and morph(word(-1), ":R", False, False)
 16157         -    -1>> =suggVerb(@, ":3p")              # Conjugaison erronée. Accord avec « \2 \3… ». Le verbe devrait être à la 3ᵉ personne du pluriel.
        16168  +__conj_lxquel_verbe_sujet_pluriel__
        16169  +    [lequel|laquelle|lesquels|lesquelles]  @:[123][sp]¬:(?:3p|G|W)  [les|des|ces|mes|tes|ses|nos|vos|leurs|quelques|certains|certaines|plusieurs|maints|maintes]  *WORD
        16170  +        <<- /conj/ morph(<1, ":R") -2>> =suggVerb(\2, ":3p")                        # Conjugaison erronée. Accord avec “\3 \4…”. Le verbe devrait être à la 3ᵉ personne du pluriel.
 16158  16171   
 16159  16172   TEST: les amusements pour lesquels {{vienne}} les invités.
 16160  16173   TEST: financé par le Qatar, lequel dépense des millions de dollars pour soutenir le mouvement
 16161  16174   
 16162  16175   
 16163         -__[i]/conj(conj_que_où_comment_verbe_sujet)__
 16164         -    (?:que?|où|comment|combien|dont|quand|pourquoi|l[ea]s?quel(?:le|)s?) +({w_1}[es])(?! je| tu| vous) @@$
 16165         -    <<- morphex(\1, ":[12][sp]", ":(?:G|W|3[sp]|Y|P|Q|N|A|M|VC)") -1>> =suggVerb(@, ":3s")     # Conjugaison erronée. Ce verbe devrait être à la 3ᵉ personne.
 16166         -
 16167         -TEST: Qu’est-ce que tu crois que {{deviens}} réellement, immanquablement et subitement cet homme après une telle dérouillée ?
 16168         -TEST: ces sciences, ces religions, ces philosophies ne sont que contes destinés à nous donner l’illusion de la connaissance.
 16169         -TEST: Le ministre de l’Intérieur a estimé que Calais avait vécu “un degré de violence jamais connu”.
 16170         -TEST: à des règles aussi absurdes que précises
 16171         -
 16172         -
 16173         -#__[i]/conj(conj_que_où_verbe_sujet_3sg)__
 16174         -#    (?:que?|où|comment|combien|dont|quand|pourquoi|l[ea]s?quel(?:le|)s?) +({w_1})(?! [jJ]e| [tT]u| [nNvV]ous| [eE]t )  @@$
 16175         -#    <<- morphex(\1, ":[12][sp]", ":(?:G|W|N|3[sp])") -1>> =suggVerb(@, ":3s")         # Conjugaison erronée. Ce verbe devrait être à la 3ᵉ personne.
 16176         -
 16177         -TEST: peu importe ce que tu crois du lieu où l’{{abandonnerais}} ce salopard…
 16178         -
 16179         -
 16180         -__[i]/conj(conj_puisse)__
 16181         -    (puisses?) ({w_2})  @@0,$
 16182         -    <<- isStart() >>>
 16183         -    <<- morph(\2, ":D.*:p", False) -1>> puissent                                    # Conjugaison erronée. Ce verbe devrait s’accorder au substantif qui le suit.
 16184         -    <<- __else__ and \1.endswith("s") and \2 != "tu" and not before(r"(?i)\btu ")
 16185         -    -1>> puisse                                                                     # Conjugaison erronée. Sujet “tu” introuvable.
        16176  +__conj_puisse__
        16177  +    [<start>|,]  puisse  @:D.*:p
        16178  +        <<- /conj/ -2>> puissent                                                    # Conjugaison erronée. Ce verbe devrait s’accorder au substantif qui le suit.
 16186  16179   
 16187  16180   TEST: {{puisse}} les hommes enfin comprendre leurs erreurs.                         ->> puissent
 16188  16181   TEST: {{puisses}} notre ennemi trembler de peur devant notre courage.               ->> puisse
 16189  16182   
 16190  16183   
 16191  16184   
 16192         -@@@@
 16193         -@@@@
 16194         -@@@@
 16195         -@@@@
 16196         -@@@@GRAPH: last_graph                                                                              _
 16197         -@@@@
 16198         -@@@@
 16199         -@@@@
 16200         -@@@@
        16185  +!!
        16186  +!!
        16187  +!!!! Verbes sans sujets                                                                           !!
        16188  +!!
        16189  +!!
        16190  +
        16191  +__conj_que_où_comment_verbe_sans_sujet!3__
        16192  +    [que|qu’|qu|où|comment|combien|dont|quand|pourquoi|lequel|laquelle|lesquels|lesquelles]  @:[12][sp]¬:(?:G|W|3[sp]|Y|P|Q|N|A|M|VC)
        16193  +        <<- /conj/ morph(\2, ":[12]s") and not value(>1, "|je|tu|") -2>> =suggVerb(\2, ":3s")                           # Conjugaison erronée. Ce verbe devrait être à la 3ᵉ personne.
        16194  +        <<- /conj/ __else__ and morph(\2, ":[12]p") and not value(>1, "|nous|vous|") -2>> =suggVerb(\2, ":3p")          # Conjugaison erronée. Ce verbe devrait être à la 3ᵉ personne.
        16195  +
        16196  +TEST: Qu’est-ce que tu crois que {{deviens}} réellement, immanquablement et subitement cet homme après une telle dérouillée ?
        16197  +TEST: peu importe ce que tu crois du lieu où l’{{abandonnerais}} ce salopard…
        16198  +TEST: ces sciences, ces religions, ces philosophies ne sont que contes destinés à nous donner l’illusion de la connaissance.
        16199  +TEST: Le ministre de l’Intérieur a estimé que Calais avait vécu “un degré de violence jamais connu”.
        16200  +TEST: à des règles aussi absurdes que précises
 16201  16201   
 16202  16202   
        16203  +
        16204  +!!
        16205  +!!
 16203  16206   !!!! Verbe auxiliaire                                                                             !!
        16207  +!!
        16208  +!!
 16204  16209   
 16205  16210   __conf_auxiliaire_avoir_être__
 16206  16211       [/-je|/-tu|/-il|/-on]  @:V.......e_.*:Q
 16207  16212           <<- /conf/ analyse(\1, ">avoir/", "", 0, -3) -1>> _                     # Incohérence. La forme verbale “\2” ne peut pas être utilisé avec l’auxiliaire “avoir”, seulement avec l’auxiliaire “être”.
 16208  16213   
 16209  16214       /-ils  @:V.......e_.*:Q
 16210  16215           <<- /conf/ analyse(\1, ">avoir/", "", 0, -4) -1>> _                     # Incohérence. La forme verbale “\2” ne peut pas être utilisé avec l’auxiliaire “avoir”, seulement avec l’auxiliaire “être”.