Grammalecte  Check-in [c8714ac3a1]

Overview
Comment:[fr] ajout de !! à la fin des bookmarks pour éviter la suppression automatique des espaces en fin de ligne
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | fr | rg
Files: files | file ages | folders
SHA3-256: c8714ac3a1d21a06baacfdfa8916e5571d498f65df6540358fb0f2c412eb9dcd
User & Date: olr on 2018-06-25 07:20:42
Other Links: branch diff | manifest | tags
Context
2018-06-25
07:24
[build] bookmark display update check-in: 55569dd999 user: olr tags: build, rg
07:20
[fr] ajout de !! à la fin des bookmarks pour éviter la suppression automatique des espaces en fin de ligne check-in: c8714ac3a1 user: olr tags: fr, rg
2018-06-24
19:03
merge trunk check-in: 099647c959 user: olr tags: rg
Changes

Modified gc_lang/fr/rules.grx from [0f58bfdc3c] to [b6224d13ea].

    45     45   
    46     46   # ERREURS COURANTES
    47     47   # http://fr.wikipedia.org/wiki/Wikip%C3%A9dia:Fautes_d%27orthographe/Courantes
    48     48   
    49     49   
    50     50   !!
    51     51   !!
    52         -!! Options                                                                                          
           52  +!! Options                                                                                        !!
    53     53   !!
    54     54   !!
    55     55   
    56     56   OPTGROUP/basic: typo apos, esp tab, nbsp unit, tu maj, num virg, nf chim, ocr mapos, liga
    57     57   OPTGROUP/gramm: conf sgpl gn
    58     58   OPTGROUP/verbs: infi conj ppas, imp inte vmode
    59     59   OPTGROUP/style: bs pleo, redon1 redon2, neg
................................................................................
   196    196   OPTLABEL/debug:     Debug
   197    197   OPTLABEL/idrule:    Display control rule identifier [!]|Display control rule identifier in the context menu message.
   198    198   
   199    199   
   200    200   
   201    201   !!
   202    202   !!
   203         -!! Définitions pour les regex                                                                       
          203  +!! Définitions pour les regex                                                                     !!
   204    204   !!
   205    205   !!
   206    206   
   207    207   # REGEX
   208    208   DEF: avoir          [aeo]\w*
   209    209   DEF: etre           [êeésf]\w+
   210    210   DEF: avoir_etre     [aeêésfo]\w*
................................................................................
   242    242   !!
   243    243   !!
   244    244   !!
   245    245   !!
   246    246   !!
   247    247   !!
   248    248   !!
   249         -!! PASSE 0: PARAGRAPHE PAR PARAGRAPHE                                                               
   250         -!!
   251         -!!
   252         -!!
   253         -!!
   254         -!!
   255         -!!
   256         -!!
   257         -!!
   258         -!!
   259         -!!
   260         -!!
   261         -!!
   262         -!!
   263         -!!
   264         -!!
   265         -!!
   266         -!!
   267         -!!
   268         -!!
   269         -!!
   270         -
   271         -
   272         -
   273         -!!
   274         -!!
   275         -!!! Espaces & tabulations                                                                           
          249  +!! PASSE 0: PARAGRAPHE PAR PARAGRAPHE                                                             !!
          250  +!!
          251  +!!
          252  +!!
          253  +!!
          254  +!!
          255  +!!
          256  +!!
          257  +!!
          258  +!!
          259  +!!
          260  +!!
          261  +!!
          262  +!!
          263  +!!
          264  +!!
          265  +!!
          266  +!!
          267  +!!
          268  +!!
          269  +!!
          270  +
          271  +
          272  +
          273  +!!
          274  +!!
          275  +!!! Espaces & tabulations                                                                         !!
   276    276   !!
   277    277   !!
   278    278   
   279    279   # Espaces surnuméraires
   280    280   # Note : les tabulations ne sont pas soulignées dans LibreOffice. Mais l’erreur est bien présente.
   281    281   __<s>/tab(tab_début_ligne)__           ^[      ]+ <<- ->> ""                   # Espace(s) en début de ligne à supprimer : utilisez les retraits de paragraphe.
   282    282   __<s>/tab(tab_fin_ligne)__             [       ]+$ <<- ->> ""                  # Espace(s) en fin de ligne à supprimer.
................................................................................
   377    377   # À partir d’ici, toute règle est susceptible de supprimer des caractères et les remplacer par des espaces ou des chaînes de longueur égale.
   378    378   #
   379    379   #
   380    380   
   381    381   
   382    382   !!!
   383    383   !!!
   384         -!!! Processeur: efface les ponctuations gênantes (URL, sigles, abréviations, IP, heures, etc.)      
          384  +!!! Processeur: efface les ponctuations gênantes (URL, sigles, abréviations, IP, heures, etc.)    !!
   385    385   !!!
   386    386   !!!
   387    387   
   388    388   # e-mail
   389    389   __<i>(p_email)__
   390    390       \w[\w.-]*@\w[\w.-]*\w[.]\w+ <<- ~>> *
   391    391   
................................................................................
   525    525   TEST: Dossier C:\Program Files (x86)\LibreOffice
   526    526   TEST: [1] Dossier à revoir.
   527    527   
   528    528   
   529    529   
   530    530   !!!
   531    531   !!!
   532         -!!! Processeur: balises HTML et LaTeX                                                               
          532  +!!! Processeur: balises HTML et LaTeX                                                             !!
   533    533   !!!
   534    534   !!!
   535    535   
   536    536   # HTML
   537    537   __<i>/html(p_html_amp_xxx)__            &amp;[a-zA-Z]+; <<- ~>> _
   538    538   __<i>/html(p_html_lt)__                 &lt; <<- ~>> "   <"
   539    539   __<i>/html(p_html_gt)__                 &gt; <<- ~>> >
................................................................................
   553    553   TEST: __html__  des <b>{{homme}}</b>
   554    554   TEST: __html__  des [b]{{femme}}[/b]
   555    555   
   556    556   
   557    557   
   558    558   !!
   559    559   !!
   560         -!!!! Écritures épicènes dystypographiques                                                           
          560  +!!!! Écritures épicènes dystypographiques                                                         !!
   561    561   !!
   562    562   !!
   563    563   
   564    564   # (attention aux modifs: brainfuck d’intensité non négligeable)
   565    565   # La désambiguïsation est faite lors de la deuxième passe
   566    566   
   567    567   __[i](typo_écriture_épicène_tous_toutes)__
................................................................................
   652    652   
   653    653   TEST: je suis {{déconsidéré.e}} par ma hiérarchie.
   654    654   TEST: il faut en parler à l’{{auteur(e)}} et à son agent.
   655    655   
   656    656   
   657    657   !!
   658    658   !!
   659         -!!!! Majuscules manquantes                                                                          
          659  +!!!! Majuscules manquantes                                                                        !!
   660    660   !!
   661    661   !!
   662    662   
   663    663   # Majuscules après un point
   664    664   __[s]/maj(majuscule_après_point)__
   665    665       ({w_2})[.] ([a-zéàèîçô]\w*)  @@0,$
   666    666       <<- not re.search("(?i)^(?:etc|[A-Z]|chap|cf|fig|hab|litt|circ|coll|r[eé]f|étym|suppl|bibl|bibliogr|cit|op|vol|déc|nov|oct|janv|juil|avr|sept)$", \1)
................................................................................
   675    675       <<- after("\w\w[.] +\w+") -1>> =\1.capitalize()                                                 # Majuscule en début de phrase, sauf éventuellement lors d’une énumération.
   676    676   
   677    677   TEST: {{je}} suis disponible quand tu veux. Mais pas aujourd’hui.
   678    678   
   679    679   
   680    680   !!
   681    681   !!
   682         -!!!! Virgules                                                                                       
          682  +!!!! Virgules                                                                                     !!
   683    683   !!
   684    684   !!
   685    685   
   686    686   # virgules manquantes
   687    687   __[i>/virg(virgule_manquante_avant_etc)__   {w_1}( etc[.])  @@$ <<- -1>> , etc.                     # Avant « etc. », il faut mettre une virgule.
   688    688   __[i>/virg(virgule_manquante_avant_car)__
   689    689       ({w_1})( car)(?= (?:j[e’]|tu|ils?|nous|vous|elles?|on|les?|l[a’]|ces?|des?|cette|[mts](?:on|a|es))\b)  @@0,$
................................................................................
   733    733   #__<i>/typo__  ({w_2}) *$   @@0
   734    734   #    <<- before("[a-zéàùèê][.] ") and not before(r"^(?:\d|\w[.])")
   735    735   #    -1>> \1.|\1…|\1 !|\1 ?|\1 :|\1 ;|\1,                                               # Il manque une ponctuation finale.
   736    736   
   737    737   
   738    738   !!
   739    739   !!
   740         -!!!! Espaces manquants                                                                              
          740  +!!!! Espaces manquants                                                                            !!
   741    741   !!
   742    742   !!
   743    743   
   744    744   __<s>/typo(typo_espace_manquant_après1)__
   745    745       ({w1})[,:]({w_1})  @@0,$  <<- not \1.isdigit() -2>> " \2"                                       # Il manque un espace.
   746    746   __<s>/typo(typo_espace_manquant_après2)__
   747    747       [?!;%‰‱˚»}]({w_1})  @@$  <<- -1>> " \1"                                                       # Il manque un espace.
................................................................................
   762    762   TEST: espace.{{Manquant}}                                                   ->> " Manquant"
   763    763   TEST: qui ont refuse.{{de}} se sauver                                       ->> " de"
   764    764   TEST: pic.twitter.com/PICNAME
   765    765   
   766    766   
   767    767   !!
   768    768   !!
   769         -!!!! Points                                                                                         
          769  +!!!! Points                                                                                       !!
   770    770   !!
   771    771   !!
   772    772   
   773    773   # Points superflus
   774    774   __[i>/typo(typo_et_cetera)__             etc(?:[.]{3,5}|…) <<- ->> etc.                             # Un seul point après « etc. »
   775    775   
   776    776   TEST: {{etc…}}
................................................................................
   801    801   TEST: Ligne de points{{...........................}}
   802    802   TEST: Aujourd’hui, M. Camus va nous lire son texte.
   803    803   
   804    804   
   805    805   
   806    806   !!
   807    807   !!
   808         -!!!! Tirets                                                                                         
          808  +!!!! Tirets                                                                                       !!
   809    809   !!
   810    810   !!
   811    811   
   812    812   # Tirets, énumérations et dialogues
   813    813   __<s>/typo(typo_tiret_début_ligne)__    ^[-_][  ] <<- ->> "— |– "           # Dialogues et énumérations : un tiret cadratin ou demi-cadratin, suivi d’un espace insécable, est requis.
   814    814   __<s>/typo(typo_tiret_dans_dialogue)__  ^ *«[  ](-[  ]) @@$ <<- -1>> "— |– "
   815    815       # Dialogues : un tiret cadratin ou demi-cadratin, suivi d’un espace insécable, est requis. (Attention : à moins qu’il s’agisse d’un dialogue inclus dans un autre dialogue, cette manière d’écrire est erronée.)
................................................................................
   824    824   TEST: {{—}}Viens là.                                                        ->> "— |– "
   825    825   TEST: Cette phrase contient{{ - }}c’est certain – des tirets d’incise.      ->> " – | — "
   826    826   TEST: « {{- }}Viens ! On va en finir avec cette affaire, sale fils de pute. ->> "— |– "
   827    827   
   828    828   
   829    829   !!
   830    830   !!
   831         -!!!! Ponctuations redondantes                                                                       
          831  +!!!! Ponctuations redondantes                                                                     !!
   832    832   !!
   833    833   !!
   834    834   
   835    835   # virgules et points
   836         -__<s>/typo(typo_virgules_points)__ 
          836  +__<s>/typo(typo_virgules_points)__
   837    837       ,[.,]{2,}
   838    838       <<- ->> =\0.replace(",", ".").replace("...", "…")                                               # Erreur de numérisation ? Virgules au lieu de points ?
   839    839   
   840    840   TEST: Ah !{{,.,}} et en quoi consistait le festin ?
   841    841   
   842    842   
   843    843   __<s>/typo(typo_ponctuation_superflue1)__    , ?([.,;:!?]) @@$ <<- ->> =",|" + \1       # Une de ces ponctuations est superflue.
................................................................................
   872    872   TEST: Succession : a{{;}} b.                                                ->> " ;"
   873    873   TEST: C’est assez {{: }}parlez !                                            ->> ": "
   874    874   TEST: {{» }}C’est ce qu’on croit savoir.                                    ->> "» |« "
   875    875   
   876    876   
   877    877   !!
   878    878   !!
   879         -!!!! Signes typographiques                                                                          
          879  +!!!! Signes typographiques                                                                        !!
   880    880   !!
   881    881   !!
   882    882   
   883    883   __<s>/typo(typo_signe_multiplication)__
   884    884       (\d+) ?[x*] ?(\d+)  @@0,$ <<- not \0.startswith("0x") ->> \1 × \2                               # Signe de multiplication typographique.
   885    885   
   886    886   TEST: {{800 x 600}}                                                         ->> 800 × 600
................................................................................
   901    901   
   902    902   TEST: __liga__ un {{fl}}ottement                                           ->> fl
   903    903   TEST: __liga__ une belle {{fi}}gure                                        ->> fi
   904    904   
   905    905   
   906    906   !!
   907    907   !!
   908         -!!!! Apostrophes                                                                                    
          908  +!!!! Apostrophes                                                                                  !!
   909    909   !!
   910    910   !!
   911    911   ## Apostrophe typographique
   912    912   __[i>/apos(apostrophe_typographique)__
   913    913       ([ldsncjmç]|jusqu|lorsqu|aujourd|presqu|quelqu|puisqu|qu|prud|entr)['´‘′`](?=[\w"«]) @@0 <<- ->> \1’    # Apostrophe typographique.
   914    914   __[i>/apos(apostrophe_typographique_après_t)__
   915    915       t['´‘′`](?!ils?|elles?|on)(?=[\w"«]) <<- ->> t’                                                         # Apostrophe typographique.
................................................................................
   955    955   TEST: Il {{s }}était dit qu’il ne le ferait pas.                                ->> s’
   956    956   TEST: Je {{m }}étais imaginé que je pourrais pas retrouver cet objet.           ->> m’
   957    957   TEST: Je {{n }}ai pas retrouvé l’ambiance de mes années de lycée.               ->> n’
   958    958   
   959    959   
   960    960   !!
   961    961   !!
   962         -!!!! Guillemets typographiques                                                                      
          962  +!!!! Guillemets typographiques                                                                    !!
   963    963   !!
   964    964   !!
   965    965   
   966    966   __<s>/typo(typo_guillemets_typographiques_doubles_ouvrants)__
   967    967       "(?=\w)
   968    968       <<- not before(r"[a-zA-Zéïîùàâäôö]$") ->> « |“                                                  # Guillemets typographiques ouvrants.
   969    969   __<s>/typo(typo_guillemets_typographiques_doubles_fermants)__
................................................................................
   997    997   TEST: Le {{'}}grand’ homme.                                                 ->> “|‘|‹
   998    998   TEST: Le ‘grand{{'}} homme.                                                 ->> ”|’|›
   999    999   TEST: J’en ai '''marre''' (syntaxe wiki).
  1000   1000   
  1001   1001   
  1002   1002   !!
  1003   1003   !!
  1004         -!!!! Élisions                                                                                       
         1004  +!!!! Élisions                                                                                     !!
  1005   1005   !!
  1006   1006   !!
  1007   1007   
  1008   1008   __[i]/typo(typo_élision_déterminants)__
  1009   1009       (l[ea] |de )([aâeéêiîoôu]\w+)  @@0,$
  1010   1010       <<- not re.search("(?i)^(?:onz[ei]|énième|iourte|ouistiti|ouate|one-?step|ouf|Ouagadougou|I(?:I|V|X|er|ᵉʳ|ʳᵉ|è?re))", \2) and not \2.isupper() and not morph(\2, ":G", False)
  1011   1011       -1>> =\1[0]+"’"                                         # Élision de l’article devant un mot commençant par une voyelle.|http://fr.wikipedia.org/wiki/Élision
................................................................................
  1049   1049       -1>> cet                                                # Euphonie : « ce » devient « cet » devant un mot commençant par une voyelle.
  1050   1050   
  1051   1051   TEST: {{ce}} animal est dangereux
  1052   1052   
  1053   1053   
  1054   1054   !!
  1055   1055   !!
  1056         -!!!! Divers                                                                                         
         1056  +!!!! Divers                                                                                       !!
  1057   1057   !!
  1058   1058   !!
  1059   1059   
  1060   1060   ## NF (memo: don’t use flag i)
  1061   1061   __[s]/nf(nf_norme_française)__
  1062   1062       [nN][fF][  -]?(?:c|C|e|E|p|P|q|Q|s|S|x|X|z|Z|[eE][nN](?:[  -][iI][sS][oO]|))[  -]?[0-9]+(?:[/ ‑-][0-9]+|)
  1063   1063       <<- not re.search("^NF (?:C|E|P|Q|S|X|Z|EN(?: ISO|)) [0-9]+(?:‑[0-9]+|)", \0)
................................................................................
  1072   1072       <<- ->> =\0.replace("2", "₂").replace("3", "₃").replace("4", "₄")                               # Typographie des composés chimiques. [!]
  1073   1073   
  1074   1074   TEST: __chim__ les molécules {{CaCO3}} et {{H2O}}…
  1075   1075   
  1076   1076   
  1077   1077   !!
  1078   1078   !!
  1079         -!!!! Cohérence des guillemets                                                                       
         1079  +!!!! Cohérence des guillemets                                                                     !!
  1080   1080   !!
  1081   1081   !!
  1082   1082   
  1083   1083   __<s>/typo(typo_cohérence_guillemets_chevrons_ouvrants)__
  1084   1084       («)[^»“]+?(”)  @@0,$
  1085   1085       <<- not before(r"\w$") -1>> “                                                                   # Guillemet ouvrant différent du guillemet fermant (”).
  1086   1086       <<- not after(r"^\w") -2>> " »"                                                                 # Guillemet fermant différent du guillemet ouvrant («).
................................................................................
  1130   1130   TEST: « Je suis là.
  1131   1131   TEST: — Oui, nous t’avons vu arriver. »
  1132   1132   TEST: « J’en suis “malade”. »
  1133   1133   
  1134   1134   
  1135   1135   !!
  1136   1136   !!
  1137         -!!!! Espaces insécables avant unités de mesure                                                      
         1137  +!!!! Espaces insécables avant unités de mesure                                                    !!
  1138   1138   !!
  1139   1139   !!
  1140   1140   
  1141   1141   __[s]/unit(unit_nbsp_avant_unités1)__
  1142   1142       ((\d+(?:,\d+[⁰¹²³⁴⁵⁶⁷⁸⁹]?|[⁰¹²³⁴⁵⁶⁷⁸⁹]|)) ?)(?:[kcmµn]?(?:[slgJKΩ]|m[²³]?|Wh?|Hz|dB)|[%‰€$£¥Åℓhj]|min|°C|℃)(?![’'])  @@0,0
  1143   1143       <<- -1>> "\2 "
  1144   1144       # Avec une unité de mesure, mettez un espace insécable.
................................................................................
  1168   1168   TEST: 1998 s’annonce grandiose.
  1169   1169   TEST: il y en a 3,43 milliards.
  1170   1170   TEST: je veux 200 euros.
  1171   1171   
  1172   1172   
  1173   1173   !!
  1174   1174   !!
  1175         -!!!! Grands nombres                                                                                 
         1175  +!!!! Grands nombres                                                                               !!
  1176   1176   !!
  1177   1177   !!
  1178   1178   
  1179   1179   __[s]/num(num_grand_nombre_soudé)__
  1180   1180       \d\d\d\d+
  1181   1181       <<- not before("NF[  -]?(C|E|P|Q|X|Z|EN(?:[  -]ISO|)) *$") >>>
  1182   1182       <<- \0.__len__() > 4 ->> =formatNumber(\0)                                                      # Formatage des grands nombres.
................................................................................
  1217   1217       <<- ~>> =\0.replace(" ", "_")
  1218   1218   
  1219   1219   TEST: Il a perdu {{20 000}} euros à la Bourse en un seul mois.
  1220   1220   
  1221   1221   
  1222   1222   !!
  1223   1223   !!
  1224         -!!!! Dates                                                                                          
         1224  +!!!! Dates                                                                                        !!
  1225   1225   !!
  1226   1226   !!
  1227   1227   __[i]/date(date_nombres)__
  1228   1228       (?<!\d[ /.-])(\d\d?)[ /.-](\d\d?)[ /.-](\d\d\d+)(?![ /.-]\d)  @@0,w,$
  1229   1229       <<- not checkDate(\1, \2, \3) and not before(r"(?i)\bversions? +$") ->> _                       # Cette date est invalide.
  1230   1230       <<- ~>> =\0.replace(".", "-").replace(" ", "-").replace("\/", "-")
  1231   1231   
................................................................................
  1234   1234   TEST: le {{32.03.2018}}
  1235   1235   TEST: le {{81/01/2012}}
  1236   1236   TEST: 12-12-2012
  1237   1237   
  1238   1238   
  1239   1239   !!
  1240   1240   !!
  1241         -!!!! Redondances                                                                                    
         1241  +!!!! Redondances                                                                                  !!
  1242   1242   !!
  1243   1243   !!
  1244   1244   __[i]/redon1(redondances_paragraphe)__
  1245   1245       ({w_4})[  ,.;!?:].*[  ](\1)  @@0,$
  1246   1246       <<- not morph(\1, ":(?:G|V0)|>(?:t(?:antôt|emps|rès)|loin|souvent|parfois|quelquefois|côte|petit|même)/", False) and not \1[0].isupper()
  1247   1247       -2>> _                                                      # Dans ce paragraphe, répétition de « \1 » (à gauche).
  1248   1248       <<- __also__ -1>> _                                         # Dans ce paragraphe, répétition de « \1 » (à droite).
................................................................................
  1251   1251   TEST: __redon1__ Car parfois il y en a. Mais parfois il n’y en a pas.
  1252   1252   
  1253   1253   
  1254   1254   
  1255   1255   
  1256   1256   !!!
  1257   1257   !!!
  1258         -!!! Processeur: Dernier nettoyage avant coupure du paragraphe en phrases                            
         1258  +!!! Processeur: Dernier nettoyage avant coupure du paragraphe en phrases                          !!
  1259   1259   !!!
  1260   1260   !!!
  1261   1261   
  1262   1262   # Trait d’union conditionnel (u00AD)
  1263   1263   __<i>(p_trait_union_conditionnel1)__    \w+‑\w+‑\w+ <<- ~>> =\0.replace("‑", "")
  1264   1264   __<i>(p_trait_union_conditionnel2)__    \w+‑\w+ <<- ~>> =\0.replace("‑", "")
  1265   1265   
................................................................................
  1266   1266   # empêcher la scission en fin de dialogue
  1267   1267   __<s>(p_fin_dialogue1)__    ([?!…][?!…  ]*)[ "'”» ]*,  @@0 <<- ~1>> *
  1268   1268   __<s>(p_fin_dialogue2)__    ([?!…][?!…  ]*)[ "'”» ]*[a-zéèêîô]  @@0 <<- ~1>> ,
  1269   1269   
  1270   1270   TEST: « Je suis donc perdu ? », dit Paul.
  1271   1271   TEST: “C’est bon !”, croit savoir Marie.
  1272   1272   TEST: “Parce que… ?” finit par demander Paul.
  1273         -TEST: « Dans quel pays sommes-nous ? » demanda un manifestant. 
  1274         -
  1275         -
  1276         -!!
  1277         -!!
  1278         -!!
  1279         -!!
  1280         -!!
  1281         -!!
  1282         -!!
  1283         -!!
  1284         -!!
  1285         -!!
  1286         -!!
  1287         -!!
  1288         -!!
  1289         -!!
  1290         -!!
  1291         -!!
  1292         -!!
  1293         -!!
  1294         -!!
  1295         -!!
  1296         -!! PASSE 1: PHRASE PAR PHRASE                                                                       
         1273  +TEST: « Dans quel pays sommes-nous ? » demanda un manifestant.
         1274  +
         1275  +
         1276  +!!
         1277  +!!
         1278  +!!
         1279  +!!
         1280  +!!
         1281  +!!
         1282  +!!
         1283  +!!
         1284  +!!
         1285  +!!
         1286  +!!
         1287  +!!
         1288  +!!
         1289  +!!
         1290  +!!
         1291  +!!
         1292  +!!
         1293  +!!
         1294  +!!
         1295  +!!
         1296  +!! PASSE 1: PHRASE PAR PHRASE                                                                     !!
  1297   1297   !!
  1298   1298   !!
  1299   1299   !!
  1300   1300   !!
  1301   1301   !!
  1302   1302   !!
  1303   1303   !!
................................................................................
  1315   1315   !!
  1316   1316   !!
  1317   1317   
  1318   1318   [++]
  1319   1319   
  1320   1320   
  1321   1321   
  1322         -!!!! Doublons (casse identique)                                                                     
         1322  +!!!! Doublons (casse identique)                                                                   !!
  1323   1323   
  1324   1324   __[s](doublon)__
  1325   1325       ({w1}) {1,3}\1  @@0
  1326   1326       <<- not re.search("(?i)^([nv]ous|faire|en|la|lui|donnant|œuvre|h[éoa]|hou|olé|joli|Bora|couvent|dément|sapiens|très|vroum|[0-9]+)$", \1)
  1327   1327           and not (re.search("^(?:est|une?)$", \1) and before("[’']$"))
  1328   1328           and not (\1 == "mieux" and before("(?i)qui +$"))
  1329   1329       ->> \1   # Doublon.
  1330   1330   
  1331   1331   TEST: Il y a un {{doublon doublon}}.
  1332   1332   
  1333   1333   
  1334         -!!!! Nombres: typographie                                                                           
         1334  +!!!! Nombres: typographie                                                                         !!
  1335   1335   
  1336   1336   #(\d\d\d\d)-(\d\d\d\d)   <<- ->> \1–\2                              # Ne pas séparer deux dates par un trait d’union, mais par un tiret demi-cadratin.
  1337   1337   
  1338   1338   __[s]/num(num_lettre_O_zéro1)__  [\dO]+[O][\dO]+ <<- not option("ocr") ->> =\0.replace("O", "0")    # S’il s’agit d’un nombre, utilisez le chiffre « 0 » plutôt que la lettre « O ».
  1339   1339   __[s]/num(num_lettre_O_zéro2)__  [1-9]O <<- not option("ocr") ->> =\0.replace("O", "0")             # S’il s’agit d’un nombre, utilisez le chiffre « 0 » plutôt que la lettre « O ».
  1340   1340   
  1341   1341   TEST: année {{2O11}}                                                      ->> 2011
................................................................................
  1379   1379   TEST: le {{IInd}} siècle                        ->> IIᵈ
  1380   1380   TEST: le {{VIième}} siècle                      ->> VIᵉ
  1381   1381   TEST: Le {{XXIème}} siècle.                     ->> XXIᵉ
  1382   1382   TEST: le {{XXè}} siècle.                        ->> XXᵉ
  1383   1383   
  1384   1384   
  1385   1385   
  1386         -!!!! Écritures épicènes invariables                                                                 
         1386  +!!!! Écritures épicènes invariables                                                               !!
  1387   1387   
  1388   1388   __[i](d_typo_écriture_épicène_pluriel)__
  1389   1389       ({w_1}[éuitsrn])_(?:[nt]|)e_s  @@0
  1390   1390       <<- morphex(\1, ":[NAQ]", ":G") =>> define(\1, [":N:A:Q:e:p"])
  1391   1391   
  1392   1392   __[i](d_typo_écriture_épicène_singulier)__
  1393   1393       ({w_2}[éuitsrn])_e  @@0
  1394   1394       <<- morph(\1, ":[NAQ]", False) =>> define(\1, [":N:A:Q:e:s"])
  1395   1395   
  1396   1396   
  1397         -!!!! Dates                                                                                          
         1397  +!!!! Dates                                                                                        !!
  1398   1398   
  1399   1399   __[i]/date(date_jour_mois_année)__
  1400         -    (\d\d?) (janvier|février|ma(?:rs|i)|a(?:vril|o[ûu]t)|jui(?:n|llet)|septembre|octobre|novembre|décembre) (\d\d\d+)  @@0,w,$ 
         1400  +    (\d\d?) (janvier|février|ma(?:rs|i)|a(?:vril|o[ûu]t)|jui(?:n|llet)|septembre|octobre|novembre|décembre) (\d\d\d+)  @@0,w,$
  1401   1401       <<- not checkDateWithString(\1, \2, \3) ->> _                                                   # Cette date est invalide.
  1402   1402   
  1403   1403   TEST: {{29 février 2011}}
  1404   1404   
  1405   1405   
  1406   1406   __[i]/date(date_journée_jour_mois_année1)__
  1407         -    (lundi|m(?:ardi|ercredi)|jeudi|vendredi|samedi|dimanche),? (?:le |)(\d\d?)-(\d\d?)-(\d\d+)  @@0,w,w,$ 
         1407  +    (lundi|m(?:ardi|ercredi)|jeudi|vendredi|samedi|dimanche),? (?:le |)(\d\d?)-(\d\d?)-(\d\d+)  @@0,w,w,$
  1408   1408       <<- not after(r"^ +av(?:ant|) +J(?:C|ésus-Christ)") and not checkDay(\1, \2, \3, \4)
  1409   1409       -1>> =getDay(\2, \3, \4)                                                                        # Le jour de la date suivante est incorrect.
  1410   1410   
  1411   1411   TEST: {{mercredi}}, le 10-06-2014                                         ->> mardi
  1412   1412   
  1413   1413   
  1414   1414   __[i]/date(date_journée_jour_mois_année2)__
  1415         -    (lundi|m(?:ardi|ercredi)|jeudi|vendredi|samedi|dimanche),? (?:le |)(\d\d?) (janvier|février|ma(?:rs|i)|a(?:vril|o[ûu]t)|jui(?:n|llet)|septembre|octobre|novembre|décembre) (\d\d+)  @@0,w,w,$ 
         1415  +    (lundi|m(?:ardi|ercredi)|jeudi|vendredi|samedi|dimanche),? (?:le |)(\d\d?) (janvier|février|ma(?:rs|i)|a(?:vril|o[ûu]t)|jui(?:n|llet)|septembre|octobre|novembre|décembre) (\d\d+)  @@0,w,w,$
  1416   1416       <<- not after(r"^ +av(?:ant|) +J(?:C|ésus-Christ)") and not checkDayWithString(\1, \2, \3, \4)
  1417   1417       -1>> =getDayWithString(\2, \3, \4)                                                              # Le jour de la date suivante est incorrect.
  1418   1418   
  1419   1419   TEST: {{mercredi}}, le 10 juin 2014                                       ->> mardi
  1420   1420   TEST: {{lundi}}, 18 août 1912                                             ->> dimanche
  1421   1421   TEST: lundi, 18 août 1912 avant Jésus-Christ (date imaginaire)
  1422   1422   
  1423   1423   
  1424   1424   __[i]/date(date_mois_31)__ 31 (avril|juin|septembre|novembre)  @@3
  1425         -    <<- ->> 30 \1                                                                                   # Cette date est invalide. Il n’y a que 30 jours en \1. 
         1425  +    <<- ->> 30 \1                                                                                   # Cette date est invalide. Il n’y a que 30 jours en \1.
  1426   1426   
  1427   1427   TEST: le {{31 avril}}
  1428   1428   
  1429   1429   
  1430   1430   __[i]/date(date_février)__ 3[01] février
  1431         -    <<- ->> 28 février|29 février                                                                   # Cette date est invalide. Il n’y a que 28 ou 29 jours en février. 
         1431  +    <<- ->> 28 février|29 février                                                                   # Cette date est invalide. Il n’y a que 28 ou 29 jours en février.
  1432   1432   
  1433   1433   TEST: le {{30 février}}
  1434   1434   
  1435   1435   
  1436   1436   
  1437   1437   !!!
  1438   1438   !!!
  1439         -!!! Processeur: épuration des signes inutiles et quelques simplifications                           
         1439  +!!! Processeur: épuration des signes inutiles et quelques simplifications                         !!
  1440   1440   !!!
  1441   1441   !!!
  1442   1442   
  1443   1443   # fin de phrase
  1444   1444   __<s>(p_fin_de_phrase)__        [.?!:;…][ .?!… »”")]*$  <<- ~>> *
  1445   1445   
  1446   1446   # début de phrase
................................................................................
  1463   1463   __[i](p_références_aux_notes)__ [a-zéèâàôîù][a-zéèâàôîù-]+(\d+) @@$ <<- not morph(\0, ":", False) ~1>> *
  1464   1464   
  1465   1465   # faux positifs avec adverbes de négation
  1466   1466   __[i](p_pas_mal)__              pas mal <<- not morph(word(-1), ":D", False) ~>> *
  1467   1467   __[i](p_pas_assez)__            pas assez ({w_2}) @@$ <<- morph(\1, ":A", False) and not morph(word(-1), ":D", False) ~>> *
  1468   1468   
  1469   1469   # faux positifs avec «à chez»
  1470         -__[i](p_de_chez_à_chez_pronom)__    de chez \w+ (?:à|jusqu à) chez (?:moi|toi|lui|elles?|eux|nous|vous) <<- ~>> * 
         1470  +__[i](p_de_chez_à_chez_pronom)__    de chez \w+ (?:à|jusqu à) chez (?:moi|toi|lui|elles?|eux|nous|vous) <<- ~>> *
  1471   1471   __[i](p_de_chez)__                  (jusqu à|de) chez @@0 <<- ~1>> *
  1472   1472   
  1473   1473   # faux positifs
  1474   1474   __[i](p_en_tout_et_pour_tout)__ en tout et pour tout <<- ~>> *
  1475   1475   __[i](p_au_sortir_de)__         au (sortir) de?s?  @@3 <<- ~1>> *
  1476   1476   __[i](p_au_revoir)__            au revoir <<- ~>> au_revoir
  1477   1477   
................................................................................
  1502   1502   
  1503   1503   
  1504   1504   TEST: New York {{étaient}} {{devenue}} la plaque tournante de tous les trafics.
  1505   1505   
  1506   1506   
  1507   1507   !!
  1508   1508   !!
  1509         -!!!! Traits d’union                                                                                 
         1509  +!!!! Traits d’union                                                                               !!
  1510   1510   !!
  1511   1511   !!
  1512   1512   
  1513   1513   __<i]/tu(tu_t_euphonique_incorrect)__
  1514   1514       ([-–—− ]t(?:[’' ][-–—−]?|[-–—−][’' ]?))(ils?|elles?|on|tu)  @@0,$
  1515   1515       <<- re.search("(?i)^(?:ils|elles|tu)$", \2) -1>> -      # Le “t” euphonique n’est pas nécessaire avec “\2”.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?T1=t+euphonique&id=2513
  1516   1516       <<- __else__ and \1 != "-t-" and \1 != "-T-" -1>> -t-   # Pour le “t” euphonique, il faut deux traits d’union. Pas d’apostrophe. Pas d’espace.
................................................................................
  1595   1595   
  1596   1596   TEST: Cet {{in folio}} est incroyable.
  1597   1597   TEST: c’est {{in}} stage de réinsertion.
  1598   1598   TEST: Dans ce drive in douze hommes mangent.
  1599   1599   
  1600   1600   
  1601   1601   __[i]/tu(tu_préfixe_mi)__
  1602         -    mi ({w2}) @@$  <<- morph(\1, ":[NAQ]", False) ->> mi-\1                                         # S’il s’agit d’un seul mot, il manque un trait d’union.    
         1602  +    mi ({w2}) @@$  <<- morph(\1, ":[NAQ]", False) ->> mi-\1                                         # S’il s’agit d’un seul mot, il manque un trait d’union.
  1603   1603   
  1604   1604   TEST: J’ai été engagé pour un {{mi temps}}.
  1605   1605   
  1606   1606   
  1607   1607   __[i]/tu(tu_préfixe_quasi)__
  1608         -    (?:l(?:es?|a|eurs?)|ce(?:tte|t|s|)|des?|m(?:a|on|es)|[ts](?:es|a)) (quasi ({w1}))  @@$,$ 
         1608  +    (?:l(?:es?|a|eurs?)|ce(?:tte|t|s|)|des?|m(?:a|on|es)|[ts](?:es|a)) (quasi ({w1}))  @@$,$
  1609   1609       <<- morphex(\2, ":N", ":[AGW]") -1>> quasi-\2                                                   # Il manque un trait d’union : « quasi » s’accroche au mot qui le suit s’il s’agit d’un nom.
  1610   1610       <<- ~1>> \2
  1611   1611   
  1612   1612   TEST: leurs {{quasi indifférences}}
  1613   1613   
  1614   1614   
  1615   1615   __[i]/tu(tu_préfixe_semi)__
................................................................................
  1685   1685   __[i]/tu(tu_là_adverbe)__       là (bas|haut|desso?us|dedans|devant|derrière) @@3 <<- ->> là-\1     # Il manque un trait d’union.
  1686   1686   __[i]/tu(tu_n_est_ce_pas)__             n’est(?: ce[ -]pas|-ce-pas) <<- ->> n’est-ce pas            # Un trait d’union.
  1687   1687   __[i]/tu(tu_nord_sud_ouest)__           (nord|sud) ouest @@0 <<- ->> \1-ouest                       # Il manque un trait d’union.
  1688   1688   __[i]/tu(tu_nord_sud_est)__             (nord|sud) est @@0 <<- isEnd() ->> \1-est                   # Il manque un trait d’union.
  1689   1689   __[i]/tu(tu_outre_mer)__                outre mer <<- ->> outre-mer                                 # Il manque un trait d’union.
  1690   1690   __[i]/tu(tu_ouï_dire)__                 ou[iï] dire <<- morph(word(-1), ":G") ->> ouï-dire          # Il manque un trait d’union.
  1691   1691   __[i]/tu(tu_par_préposition)__
  1692         -    par (desso?us|devant|delà|derrière|dehors|dedans|devers)  @@$ 
         1692  +    par (desso?us|devant|delà|derrière|dehors|dedans|devers)  @@$
  1693   1693       <<- ->> par-\1                                                                                  # Il manque un trait d’union.
  1694   1694   __[i]/tu(tu_par_ci_par_là)__            par ci,? par là <<- ->> par-ci par-là|par-ci, par-là        # Trait(s) d’union manquant(s).
  1695   1695   __[i]/tu(tu_prêt_à_porter)__
  1696         -    (prêts?) à porter  @@0 
         1696  +    (prêts?) à porter  @@0
  1697   1697       <<- before(r"(?i)\b(?:les?|du|des|un|ces?|[mts]on) +") ->> \1-à-porter                          # Il manque les traits d’union.
  1698   1698   __[i]/tu(tu_plate_forme)__  plates? formes? <<- ->> plate-forme|plates-formes|plateforme|plateformes    # Il manque un trait d’union. Vous pouvez aussi souder les deux mots.
  1699   1699   __[i]/tu(tu_quelques_uns_unes)__       quelques (une?s) @@$ <<- ->> quelques-\1                     # Il manque un trait d’union.
  1700   1700   __[i]/tu(tu_plus_moins_values)__       (plus|moins) (values?)  @@0,$  <<- ->> \1-\2                 # Il manque un trait d’union.
  1701   1701   __[i]/tu(tu_rez_de_chaussée)__         rez de chaussées? <<- ->> rez-de-chaussée                    # Il manque un trait d’union.
  1702   1702   __[i]/tu(tu_science_fiction)__         science fiction <<- ->> science-fiction                      # Il manque un trait d’union.
  1703   1703   __[i]/tu(tu_stock_option)__            stock options? <<- ->> =\0.replace(" ", "-")                 # Il manque un trait d’union.
................................................................................
  1713   1713   TEST: on a fait {{à la va vite}}…
  1714   1714   TEST: marre de faire des {{allers retours}}
  1715   1715   TEST: {{le}} {{bouche à oreille}}
  1716   1716   TEST: à ce {{moment là}}                                                        ->> moment-là
  1717   1717   TEST: une {{plus value}}                                                        ->> plus-value
  1718   1718   TEST: Il est {{en-dessous}} de tout.                                            ->> en dessous
  1719   1719   TEST: Ils sont {{en-deçà}} de tout                                              ->> en deçà
  1720         -TEST: {{Là bas}}.                                                               ->> Là-bas 
         1720  +TEST: {{Là bas}}.                                                               ->> Là-bas
  1721   1721   TEST: {{Au dessus}}                                                             ->> Au-dessus
  1722   1722   TEST: {{ci dessus}}                                                             ->> ci-dessus
  1723   1723   TEST: {{par dessus}}                                                            ->> par-dessus
  1724   1724   TEST: {{au delà}}                                                               ->> au-delà
  1725   1725   TEST: {{ci devant}}.                                                            ->> ci-devant
  1726   1726   TEST: Il faisait froid cet {{hiver la}}.                                        ->> hiver-là
  1727   1727   TEST: {{Ceux la}} vont à la pêche.                                              ->> Ceux-là
................................................................................
  1805   1805   __[u]/tu(tu_Nouveau_Brunswick)__        Nouveau Brunswick <<- ->> Nouveau-Brunswick                     # Il manque un trait d’union.
  1806   1806   __[u]/tu(tu_Nouvelle_Qqch)__            Nouvelle (Zélande|Calédonie|Orléans) @@$ <<- ->> Nouvelle-\1    # Il manque un trait d’union.
  1807   1807   __[u]/tu(tu_Pas_de_Calais)__            Pas de Calais <<- ->> Pas-de-Calais                             # Il manque les traits d’union.
  1808   1808   __[u]/tu(tu_Rhône_Alpes)__              Rhône Alpes <<- ->> Rhône-Alpes                                 # Il manque les traits d’union.
  1809   1809   __[u]/tu(tu_Saône_et_Loire)__           Saône et Loire <<- ->> Saône-et-Loire                           # Il manque un trait d’union.
  1810   1810   __[u]/tu(tu_Jésus_Christ)__             Jésus Christ <<- ->> Jésus-Christ                               # Il manque un trait d’union.
  1811   1811   __[u]/tu(tu_Jean_prénom)__
  1812         -    Jean (Baptiste|Claude|François|Jacques|Louis|Luc|Marc|Marie|Michel|Paul|Philippe|Pierre)  @@$ 
         1812  +    Jean (Baptiste|Claude|François|Jacques|Louis|Luc|Marc|Marie|Michel|Paul|Philippe|Pierre)  @@$
  1813   1813       <<- ->> Jean-\1                                                                                 # Il manque un trait d’union.
  1814   1814   __[u]/tu(tu_Marie_Prénom)__
  1815         -    Marie (Ange|Agnès|Anne|Antoinette|Cécile|Chantal|Charlotte|Christine|Claire|Claude|Dominique|France|Françoise|Hélène|Jeanne|José|Josèphe|Line|Louise|Madeleine|Noëlle|Odile|Paule|Pierre|Rose|Thérèse)  @@$ 
         1815  +    Marie (Ange|Agnès|Anne|Antoinette|Cécile|Chantal|Charlotte|Christine|Claire|Claude|Dominique|France|Françoise|Hélène|Jeanne|José|Josèphe|Line|Louise|Madeleine|Noëlle|Odile|Paule|Pierre|Rose|Thérèse)  @@$
  1816   1816       <<- ->> Marie-\1                                                                                # Il manque un trait d’union.
  1817   1817   __[s]/tu(tu_St_Ste_Bidule)__
  1818   1818       ((Ste?) )[A-ZÉÈÎ]\w+ @@0,0
  1819   1819       <<- -1>> \2-
  1820   1820       # Il manque un trait d’union s’il s’agit d’une église, d’une cité, d’une communauté… S’il s’agit d’une personne, écrivez « saint(e) » sans majuscule, sans trait d’union.
  1821   1821   
  1822   1822   TEST: Émigrer au {{Royaume Uni}}
................................................................................
  1914   1914       lors que?
  1915   1915       <<- not before(r"(?i)\bd[eè]s +$") ->> =\0.replace(" ", "")                                     # Attachez les deux mots.|https://fr.wiktionary.org/wiki/lorsque
  1916   1916   
  1917   1917   TEST: Elle y arriva {{lors qu}}’elle trouva l’astuce permettant l’ouverture de la porte.
  1918   1918   TEST: Dès lors qu’on sait comment s’y prendre, aucune raison de faillir.
  1919   1919   
  1920   1920   
  1921         -!!!! Virgules                                                                                       
         1921  +!!!! Virgules                                                                                     !!
  1922   1922   
  1923   1923   # Dialogues
  1924   1924   __[u]/virg(virgule_dialogue_après_nom_propre)__
  1925   1925       ([A-ZÉÈ][\w-]+) (\w+-(?:moi|toi|l(?:ui|a|e(?:ur|s|))|nous|vous|je|tu|ils|elles))  @@0,$
  1926   1926       <<- morphex(\1, ":M", ":G") and not morph(\2, ":N", False) and isStart()
  1927   1927       -1>> \1,                                                                        # Dialogue ? Ajoutez une virgule pour mettre en incise la personne à qui s’adresse la réplique.
  1928   1928   
................................................................................
  1951   1951   
  1952   1952   TEST: Tu vas les {{donner}} Rachel.
  1953   1953   TEST: Il va la {{tuer}} Paul.
  1954   1954   TEST: Cependant les promesses n’engagent que ceux qui les croient, comme aimait à le dire Jacques Chirac.
  1955   1955   
  1956   1956   
  1957   1957   
  1958         -!!!! Apostrophe manquante (2)                                                                       
         1958  +!!!! Apostrophe manquante (2)                                                                     !!
  1959   1959   
  1960   1960   __<s>/typo(typo_apostrophe_manquante_audace2)__
  1961   1961       ^ *([LDSNCJMTÇ] )[aeéiouhAEÉIOUHyîèêôûYÎÈÊÔÛ]  @@*
  1962   1962       <<- option("mapos") -1>> =\1[:-1]+"’"                                                           # Il manque peut-être une apostrophe.
  1963   1963   
  1964   1964   TEST: __mapos__ {{L }}opinion des gens, elle s’en moquait.
  1965   1965   
  1966   1966   
  1967   1967   
  1968         -!!!! A / À: accentuation la préposition en début de phrase                                          
         1968  +!!!! A / À: accentuation la préposition en début de phrase                                        !!
  1969   1969   
  1970   1970   __<s]/typo(typo_À_début_phrase1)__
  1971   1971       ^ *(A) (?!t[’-](?:ils?|elles?|on))({w_2})  @@*,$
  1972   1972       <<- morphex(\2, ":[GNAY]", ":(?:Q|3s)|>(?:priori|post[eé]riori|contrario|capella|fortiori)/")
  1973   1973           or (\2 == "bientôt" and isEnd())
  1974   1974       -1>> À                                                                                          # S’il s’agit de la préposition « à », il faut accentuer la majuscule.
  1975   1975   __<s>/typo(typo_À_début_phrase2)__
................................................................................
  1983   1983   TEST: — {{A}} t’emmener loin de tout ceci.
  1984   1984   TEST: {{A}} bientôt, mon ami.
  1985   1985   TEST: A bientôt fini son devoir.
  1986   1986   TEST: A priori, nul ne peut y parvenir sans une aide extérieure.
  1987   1987   TEST: A devient notre meilleure chance d’y parvenir.
  1988   1988   
  1989   1989   
  1990         -!!!! Accentuation des majuscules                                                                    
         1990  +!!!! Accentuation des majuscules                                                                  !!
  1991   1991   
  1992   1992   __[u]/maj(maj_accents)__
  1993   1993       E(?:tat|glise|co(?:le|nomie)|quipe|lectri(?:cité|que)|gal(?:ité|ement)|té)s? @@1
  1994   1994       <<- ->> ="É"+\0[1:]                                                                            # Accentuez les majuscules.
  1995   1995       <<- ~>> ="É"+\0[1:]
  1996   1996   
  1997   1997   TEST: Le budget de l’{{Etat}}.
  1998   1998   
  1999   1999   
  2000   2000   
  2001   2001   !!!
  2002   2002   !!!
  2003         -!!! Désambiguïsation                                                                                
         2003  +!!! Désambiguïsation                                                                              !!
  2004   2004   !!!
  2005   2005   !!!
  2006   2006   
  2007   2007   # mots grammaticaux
  2008   2008   __[i](d_dans)__
  2009   2009       dans
  2010   2010       <<- not morph(word(-1), ":D.*:p|>[a-z]+ièmes/", False, False) =>> select(\0, ":R")
................................................................................
  2100   2100   TEST: elle finit par être très fière de son fils.
  2101   2101   
  2102   2102   
  2103   2103   
  2104   2104   
  2105   2105   !!
  2106   2106   !!
  2107         -!!!! OCR                                                                                            
         2107  +!!!! OCR                                                                                          !!
  2108   2108   !!
  2109   2109   !!
  2110   2110   
  2111   2111   # ?
  2112   2112   __<s]/ocr(ocr_point_interrogation)__
  2113   2113       [  ]7
  2114   2114       <<- after0("^(?: +[A-ZÉÈÂ(]|…|[.][.]+| *$)") ->> " ?"                                           # Erreur de numérisation ?
................................................................................
  2753   2753   TEST: __ocr__ trouve {{l£}} temps
  2754   2754   TEST: __ocr__ elle s’{{avance*}} sur le seuil
  2755   2755   TEST: __ocr__ par beaucoup d’argent ? {{{Il}} débouche le Jack Daniels
  2756   2756   
  2757   2757   
  2758   2758   !!
  2759   2759   !!
  2760         -!!!! Incohérences de base                                                                           
         2760  +!!!! Incohérences de base                                                                         !!
  2761   2761   !!
  2762   2762   !!
  2763   2763   
  2764   2764   ### double négation
  2765   2765   __[i](double_négation)__
  2766   2766       pas (personne|aucune?|jamais)  @@4
  2767   2767       <<- not morph(word(-1), ":D:[me]" ,False, False) ->> \1|pas, \1
................................................................................
  2815   2815   
  2816   2816   TEST: je ne sais {{des}} {{ses}} choses.
  2817   2817   
  2818   2818   
  2819   2819   
  2820   2820   !!
  2821   2821   !!
  2822         -!!!! Style                                                                                          
         2822  +!!!! Style                                                                                        !!
  2823   2823   !!
  2824   2824   !!
  2825   2825   
  2826   2826   #__bs__  Mr <<- ->> M.                          # M. est l’usage courant pour “Monsieur”. « Mr » est l’abréviation ancienne, française.
  2827   2827   
  2828   2828   # à / en
  2829   2829   __[i]/bs(bs_en_à_ville)__
................................................................................
  2926   2926   #Se rappelle de l’amour
  2927   2927   
  2928   2928   #enjoindre à qqn de faire qqch
  2929   2929   
  2930   2930   
  2931   2931   !!
  2932   2932   !!
  2933         -!!!! Pléonasmes                                                                                     
         2933  +!!!! Pléonasmes                                                                                   !!
  2934   2934   !!
  2935   2935   !!
  2936   2936   
  2937   2937   __[i]/pleo(pleo_abolir)__               (abol\w+) (?:absolument|entièrement|compl[èé]tement|totalement) @@0 <<- morph(\1, ">abolir/", False) ->> \1         # Pléonasme.
  2938   2938   __[i]/pleo(pleo_acculer)__              (accul\w+) aux? pieds? du mur @@0 <<- morph(\1, ">acculer/", False) ->> \1                                          # Pléonasme.
  2939   2939   __[i]/pleo(pleo_achever)__              (ach[eè]v\w+) (?:absolument|entièrement|compl[èé]tement|totalement) @@0 <<- morph(\1, ">achever/", False) ->> \1    # Pléonasme.
  2940   2940   __[i]/pleo(pleo_en_cours)__             actuellement en cours <<- not after(r" +de?\b") ->> en cours                                            # Pléonasme.
................................................................................
  3102   3102   TEST: {{ta}} aimée                                            ->> ton
  3103   3103   TEST: {{ma}} obligée                                          ->> mon
  3104   3104   TEST: Ce couple va donner à la France sa très importante collection qui rejoindra le musée d’Orsay
  3105   3105   
  3106   3106   
  3107   3107   !!
  3108   3108   !!
  3109         -!!!! Confusions                                                                                     
         3109  +!!!! Confusions                                                                                   !!
  3110   3110   !!
  3111   3111   !!
  3112   3112   
  3113   3113   __[s>/conf(conf_ne_n)__     [nN]e n’                        <<- ->> ne m’|n’                        # Incohérence. Double négation.
  3114   3114   __[s>/conf(conf_pronoms1)__ [mtMT]e ([nmst](?:’|e )) @@$    <<- ->> \1                              # Incohérence.
  3115   3115   __[s>/conf(conf_pronoms2)__ [sS]e ([mst](?:’|e )) @@$       <<- ->> \1                              # Incohérence.
  3116         -__[s>/conf(conf_de_d)__     [dD][eu] d’(?![A-ZÉÂÔÈ])        <<- ->> d’                              # Incohérence. 
         3116  +__[s>/conf(conf_de_d)__     [dD][eu] d’(?![A-ZÉÂÔÈ])        <<- ->> d’                              # Incohérence.
  3117   3117   
  3118   3118   TEST: Il {{ne n’}}arrive jamais à l’heure.
  3119   3119   TEST: Ça {{me te }}prend la tête, toutes ces complications vaines.
  3120   3120   TEST: il {{se m’}}est difficile d’y parvenir.
  3121   3121   TEST: Ça t’arrive {{de d’}}arriver à l’heure ?
  3122   3122   TEST: Les écrits de d’Alembert.
  3123   3123   
................................................................................
  3144   3144   TEST: toute chose pourrait finalement advenir indifféremment en n’importe quel point du globe
  3145   3145   
  3146   3146   
  3147   3147   __[i]/conf(conf_malgré_le_la_les_leur)__
  3148   3148       malgré l(?:es? +|eurs? +|a +|’)({w_3})  @@$
  3149   3149       <<- morphex(\1, ":", ":[GNAWMB]") -1>> =suggSimil(\1, ":[NA]", True)                             # Incohérence : après “malgré”, on devrait trouver un groupe nominal.
  3150   3150   
  3151         -TEST: malgré l’{{arrête}} qui interdisait le port 
         3151  +TEST: malgré l’{{arrête}} qui interdisait le port
  3152   3152   TEST: malgré les deux précédentes erreurs
  3153   3153   
  3154   3154   
  3155   3155   __[i]/conf(conf_ma_ta_cette_verbe)__
  3156   3156       ([mt]a|cette) +({w_2})  @@0,$
  3157   3157       <<- morphex(\2, ":V.*:(?:Y|[123][sp])", ":[NAQ]") and \2[0].islower()
  3158   3158       -2>> =suggSimil(\2, ":[NA]:[fe]:[si]", True)                                                    # Incohérence avec « \1 » : « \2 » est un verbe.
................................................................................
  3337   3337   
  3338   3338   # Trop de faux positifs
  3339   3339   #__[i]/conf__
  3340   3340   #    très +(bien|\w+ent) +({w2})  @@w,$
  3341   3341   #    <<- morph(\1, ":W", False) and morphex(\2, ":[123][sp]", ":[GAQW]") -2>> _
  3342   3342   #    # Incohérence avec « très » : « \2 » n’est ni un adjectif, ni un participe passé, ni un adverbe.
  3343   3343   
  3344         - 
         3344  +
  3345   3345   __[i]/conf(conf_très_verbe)__
  3346   3346       très +(?!envie)({w_2})  @@$
  3347   3347       <<- morphex(\1, ":(?:Y|[123][sp])", ":[AQW]") -1>> =suggSimil(\1, ":[AW]", True)                # Incohérence avec « très » : « \1 » n’est ni un adjectif, ni un participe passé, ni un adverbe.
  3348   3348       <<- morph(\1, ">jeûne/", False) -1>> =\1.replace("û", "u")                                      # Confusion. Le jeûne est une privation de nourriture.|https://fr.wiktionary.org/wiki/jeune
  3349   3349   
  3350   3350   TEST: Il est très {{cite}}.
  3351   3351   TEST: très {{suivit}} par ce détective
................................................................................
  3463   3463       (à les) ({w_2})  @@0,6  <<- morphex(\2, ":[NAQ]", ":(?:Y|Oo)") -1>> a les|aux
  3464   3464       # Confusion. Ou vous confondez “a” (préposition) avec “a” (avoir), ou vous devez employer “aux”. Exemple : Elle _a_ donné du travail _aux_ employés _à_ profusion.
  3465   3465   __[i]/conf(conf_a_à_au_aux)__
  3466   3466       (à) aux?(?! (?:moins|plus)) @@0 <<- -1>> a                                                      # Confusion : “à” est une préposition. Pour le verbe avoir, écrivez :
  3467   3467   __[i]/conf(conf_a_à_base_cause)__
  3468   3468       (a) (?:base|cause) d(?:es?|u|) @@0 <<- not before(r"(?i)\bce que?\b") -1>> à                    # Confusion. Utilisez la préposition « à ».
  3469   3469   __[i]/conf(conf_a_à_faim_peur_honte_soif)__
  3470         -    (à) +(?:faim|peur|honte|soif) @@0 <<- -1>> a                                                    # Confusion : “à” est une préposition. Pour le verbe avoir, écrivez : 
         3470  +    (à) +(?:faim|peur|honte|soif) @@0 <<- -1>> a                                                    # Confusion : “à” est une préposition. Pour le verbe avoir, écrivez :
  3471   3471   __[i]/conf(conf_a_à_part)__
  3472   3472       (a) part ({w1}) @@0,7 <<- morph(\2, ":(?:M[12]|D|Oo)") -1>> à                                   # Confusion probable.
  3473   3473   __[i]/conf(conf_a_à_les_à)__
  3474   3474       les (à)(?! côtés| peu près| prioris?| post[eé]rioris?| valoirs?| pics?| propos) @@4 <<- -1>> a
  3475         -    # Confusion : “à” est une préposition. Pour le verbe avoir, écrivez : 
         3475  +    # Confusion : “à” est une préposition. Pour le verbe avoir, écrivez :
  3476   3476   __[i]/conf(conf_a_à_avant_conj_prep)__
  3477   3477       (à) +(?:a(?:fin|lors|près|uprès|ux?(?! moins| plus| mieux)|vant|vec)|au-de(?:dans|hors|là|sso?us|vant)|chez|d(?:ans|evant|ès|déjà|onc|urant)|lorsque?|malgré|par(?:ce|mi|)|p(?:endant|our|uisque)|que?|sur|tandis)  @@0
  3478   3478       <<- -1>> a                                                                                      # Confusion probable : “à” est une préposition. Écrivez “a” pour la conjugaison de “avoir”.
  3479   3479   __[i]/conf(conf_a_participe_passé_ou_vconj)__
  3480   3480       (à) +({w_2})  @@0,$
  3481   3481       <<- \2.islower() and \2 != "coté" >>>
  3482   3482       <<- morphex(\2, ":(?:V.......[_z][az].*:Q|V1.*:Ip:2p)", ":[MGWNY]") -1>> a                      # Confusion probable : “à” est une préposition. Pour le verbe “avoir”, écrivez :
................................................................................
  3499   3499       -1>> à                  # Confusion probable : “a” est la conjugaison du verbe “avoir”. Utilisez la préposition “à”.|http://fr.wiktionary.org/wiki/%C3%A0
  3500   3500   __[s]/conf(conf_a_à_locutions4)__
  3501   3501       (a) (?:[mts](?:es|on|a)|[nv]o(?:s|tre)|leurs?) (?:avis|c(?:onnaissance|ôtés)|c(?:œur|orps) défendant|dé(?:pens|triment)|disposition|encontre|égard|grand(?: désarroi|e (?:surprise|tristesse))|guise|insu|portée|risques et périls|sujet|tour)  @@0
  3502   3502       <<- not before(r"(?i)(?:\bque? |[ln]’$|(?<!-)\b(?:il|elle|on|y|n’en) +$)")
  3503   3503       -1>> à                  # Confusion probable : “a” est la conjugaison du verbe “avoir”. Utilisez la préposition “à”.|http://fr.wiktionary.org/wiki/%C3%A0
  3504   3504   __[s]/conf(conf_a_à_infi)__
  3505   3505       (?<![mtn]’)(a) (?:[mts](?:’(?:en +|y +|)|e +)|[nv]ous|)({w_2}(?:er|re|ir))  @@0,2
  3506         -    <<- morph(\2, ":Y", False) and not before(r"(?i)\bque? |(?:il|elle|on|n’(?:en|y)) +$") 
         3506  +    <<- morph(\2, ":Y", False) and not before(r"(?i)\bque? |(?:il|elle|on|n’(?:en|y)) +$")
  3507   3507       -1>> à                  # Confusion probable : “a” est la conjugaison du verbe “avoir”. Utilisez la préposition “à”.|http://fr.wiktionary.org/wiki/%C3%A0
  3508   3508   __[s]/conf(conf_a_à_après_interrogative)__
  3509   3509       \w+-(?:je|ils?|elles?|je|tu|on|vous|nous) (a)(?! priori| posteriori| fortiori)  @@$
  3510   3510       <<- -1>> à              # Confusion probable : “a” est la conjugaison du verbe “avoir”. Utilisez la préposition “à”.|http://fr.wiktionary.org/wiki/%C3%A0
  3511   3511   
  3512   3512   
  3513   3513   TEST: Cette femme {{à}} été confondue avec une autre.
................................................................................
  3990   3990   __[i]/conf(conf_golf)__
  3991   3991       (champion(?:ne|nat|)s?|clubs?|joueu(?:r|se)s?|parcours|sacs?|balles?|terrains?|tournois?|compétitions?|passionnée?s?|écoles?|professeurs?|parties?|professionnel(?:le|)s?|amateure?s?|stages?|journées?|après-midi|matinées?|heures?|fédérations?|fans?) de (golfe)  @@0,$
  3992   3992       <<- -2>> golf                                                           # Confusion. Le golfe est une zone de mer ou d’un lac avancée dans les terres. Ex : Le golfe Persique.
  3993   3993   __[i]/conf(conf_golfe)__
  3994   3994       (golf) (persique|d[ue] (?:Bengale|Botnie|Gascogne|Gabès|Guinée|Lion|Morbihan|Mexique|Porto|Saint-Laurent|Thaïlande|Tonkin|Tunis|Winam)|d’(?:Aden|Ajaccio|Alaska|Hammamet))  @@0,$
  3995   3995       <<- -1>> golfe                                                          # Confusion. Le golf est un sport.
  3996   3996   __[i]/conf(conf_Golfe)__
  3997         -    (?:guerre|émir|monarchie)s? du (golf) @@$ <<- -1>> Golfe                # Confusion. Le golf est un sport.             
         3997  +    (?:guerre|émir|monarchie)s? du (golf) @@$ <<- -1>> Golfe                # Confusion. Le golf est un sport.
  3998   3998   
  3999   3999   TEST: Il a réalisé un documentaire sur la guerre du {{Golf}}.
  4000   4000   TEST: C’est un bon joueur de {{golfe}}.
  4001   4001   TEST: Le {{golf}} Persique est presque une mer fermée.
  4002   4002   TEST: J’ai fait de la voile dans le {{golf}} du Morbihan.
  4003   4003   TEST: Le {{golf}} d’Aden.
  4004   4004   
  4005   4005   
  4006   4006   # haut delà / au-delà
  4007         -__[i]/conf(conf_au_delà)__      haut[- ]del[àa] <<- ->> au-delà             # Confusion. 
         4007  +__[i]/conf(conf_au_delà)__      haut[- ]del[àa] <<- ->> au-delà             # Confusion.
  4008   4008   
  4009   4009   TEST: il va dans l’{{haut delà}}
  4010   4010   
  4011   4011   
  4012   4012   # héro / héros
  4013   4013   __[i]/conf(conf_héros)__
  4014   4014       (?:le|quel|cet?|un|du|au) (héro) @@$
................................................................................
  4168   4168       ^ *(?:il|ce) (peut-être) @@$
  4169   4169       <<- -1>> peut être                                                      # Confusion probable : « peut-être » signifie « possiblement ».
  4170   4170   __[i]/conf(conf_cela_peut_être_adj)__
  4171   4171       ^ *(?:cela|ceci) (peut-être) ({w_2})  @@w,$
  4172   4172       <<- morph(\2, ":[AQ]", False) -1>> peut être                            # Confusion probable : « peut-être » signifie « possiblement ».
  4173   4173   __[i]/conf(conf_peu_à_peu)__
  4174   4174       peu[xt]? a peu[xt]?
  4175         -    <<- ->> peu à peu                                                       # Confusion : « peu à peu » ou « petit à petit ». 
         4175  +    <<- ->> peu à peu                                                       # Confusion : « peu à peu » ou « petit à petit ».
  4176   4176   __[i]/conf(conf_peu_importe)__
  4177   4177       (peu[tx]) importe(?:nt|) @@w
  4178   4178       <<- morph(word(-1), ":C", False, True) -1>> peu                         # Confusion : « \1 » est une conjugaison de “pouvoir”, utilisez “peu” pour dire “pas beaucoup”.
  4179   4179   __[i]/conf(conf_adv_de_peu)!6__
  4180   4180       (?:très|trop|de|quelque|pour|à) (peu[tx]) @@$
  4181   4181       <<- -1>> peu                                                            # Confusion : « \1 » est une conjugaison de “pouvoir”, utilisez “peu” pour dire “pas beaucoup”.
  4182   4182   __[i]/conf(conf_un_peu)!6__
................................................................................
  4276   4276   TEST: être rassuré quant à l’avenir du continent européen
  4277   4277   TEST: il comprit trop tard qu’en elle naquit alors le doute qui l’éloigna de lui à jamais.
  4278   4278   TEST: Quand à mon tour je réalise l’imposture, c’est trop tard.
  4279   4279   
  4280   4280   
  4281   4281   # quand bien même
  4282   4282   __[i]/conf(conf_quand_bien_même)__
  4283         -    combien même <<- not after("^ si ") ->> quand bien même                                         # Locution conjonctive.|https://fr.wiktionary.org/wiki/quand_bien_m%C3%AAme                             
         4283  +    combien même <<- not after("^ si ") ->> quand bien même                                         # Locution conjonctive.|https://fr.wiktionary.org/wiki/quand_bien_m%C3%AAme
  4284   4284   
  4285   4285   TEST: J’irai, {{combien même}} vous seriez tous contre moi.
  4286   4286   TEST: Il partirait en guerre quand bien même devrait-il être tout seul.
  4287   4287   TEST: Elle veut savoir combien même si ça ne lui est d’aucune utilité immédiate.
  4288   4288   
  4289   4289   
  4290   4290   # qu’elle / quelle
................................................................................
  4429   4429   
  4430   4430   # tant / temps (1re partie)
  4431   4431   __[i]/conf(conf_en_temps_de)__
  4432   4432       en (tant?) de?  @@3
  4433   4433       <<- not after("^[ ’](?:lieux|endroits|places|mondes|villes|pays|régions|cités)") -1>> temps     # Confusion. Écrivez « en temps de » si vous évoquez une période de temps.
  4434   4434   __[i]/conf(conf_de_temps_en_temps)__    de tant? en tant?                   <<- ->> de temps en temps   # Confusion. Écrivez « de temps en temps ».
  4435   4435   __[i]/conf(conf_un_temps_soit_peu)__    un (temps|tan) soi[tes]? peu  @@3   <<- -1>> tant           # Confusion. Écrivez « un tant soit peu ».
  4436         -__[i]/conf(conf_tant_de)__              a(?:près|vec) (temps|tan) de?  @@w  <<- -1>> tant           # Confusion.|http://fr.wiktionary.org/wiki/tant 
         4436  +__[i]/conf(conf_tant_de)__              a(?:près|vec) (temps|tan) de?  @@w  <<- -1>> tant           # Confusion.|http://fr.wiktionary.org/wiki/tant
  4437   4437   __[i]/conf(conf_à_temps_partiel)__      [àa] (tant?) (?:partiel|plein)s? @@2 <<- -1>> temps         # Confusion.
  4438   4438   __[i]/conf(conf_en_même_temps)__        en mêmes? (tant?)  @@$              <<- -1>> temps          # Confusion.
  4439   4439   
  4440   4440   TEST: en {{tant}} de guerre, il faut savoir faire face et ne pas faiblir face à l’adversité.
  4441   4441   TEST: ils vont {{de tan en tan}} au restaurant
  4442   4442   TEST: un {{temps}} soit peu perdu dans cette affaire.
  4443   4443   TEST: après {{temps}} de souffrance, il faut savoir lâcher prise.
................................................................................
  4484   4484   
  4485   4485   
  4486   4486   # voire / voir
  4487   4487   __[i]/conf(conf_voir_voire)__
  4488   4488       (voir) ({w_2}) @@0,$
  4489   4489       <<- not re.search("^(?:grand|petit|rouge)$", \2) and morphex(\2, ":A", ":[NGM]") and not \2.istitle()
  4490   4490           and not before(r"(?i)\b[ndmts](?:e |’(?:en |y ))(?:pas |jamais |) *$") and not morph(word(-1), ":O[os]|>(?:[ndmts]e|falloir|pouvoir|savoir|de)/", False)
  4491         -    -1>> voire 
         4491  +    -1>> voire
  4492   4492       # Confusion probable : “voir” est un verbe concernant la perception visuelle. Pour signifier “et même possiblement”, écrivez :|https://fr.wiktionary.org/wiki/voire
  4493   4493   
  4494   4494   __[i]/conf(conf_voire_voir)__
  4495   4495       voire
  4496   4496       <<- morph(word(-1), ":Cs|>(?:ni|et|sans|pour|falloir|[pv]ouvoir|aller)/", True, False) ->> voir
  4497   4497       # Confusion probable : “voire” signifie “et même possiblement”. Pour le verbe, écrivez “voir”.|https://fr.wiktionary.org/wiki/voire
  4498   4498   
................................................................................
  4514   4514   TEST: car elles pénètrent dans les poumons voire le système sanguin.
  4515   4515   TEST: des enfants malades, qui préfèrent souvent voir Dark Vador que des vieux clowns un peu flippants.
  4516   4516   
  4517   4517   
  4518   4518   
  4519   4519   !!
  4520   4520   !!
  4521         -!!!! Pronoms + incohérences                                                                         
         4521  +!!!! Pronoms + incohérences                                                                       !!
  4522   4522   !!
  4523   4523   !!
  4524   4524   __[i](p_m_enfin)__      m’enfin <<- ~>> *
  4525   4525   
  4526   4526   __[i]/conf(conf_j_y_en_qqch)__
  4527   4527       (j’(?:en +|y +|))({w_1})  @@0,$
  4528   4528       <<- morphex(\2, ":", ":(?:[123][sp]|O[onw])")
................................................................................
  4591   4591   #__[i](p_notre_père_qui_es_au_cieux)__   notre père (qui est? aux cieux) @@11 <<- ~1>> *
  4592   4592   
  4593   4593   
  4594   4594   @@@@
  4595   4595   @@@@
  4596   4596   @@@@
  4597   4597   @@@@
  4598         -@@@@GRAPH: graphe1                                                                                  
         4598  +@@@@GRAPH: graphe1
  4599   4599   @@@@
  4600   4600   @@@@
  4601   4601   @@@@
  4602   4602   @@@@
  4603   4603   
  4604   4604   __p_notre_père_qui_es_au_cieux__
  4605   4605       notre père qui [es|est] aux cieux
  4606   4606           <<- ~4>> !
  4607   4607           <<- ~3:0>> _
  4608   4608   
  4609   4609   
  4610   4610   !!
  4611   4611   !!
  4612         -!!!! Formes verbales sans sujet                                                                     
         4612  +!!!! Formes verbales sans sujet                                                                   !!
  4613   4613   !!
  4614   4614   !!
  4615   4615   
  4616   4616   __tag_sujets__
  4617   4617       [je|j’]
  4618   4618       [moi|moi-même] qui
  4619   4619       [moi|moi-même] [seul|seule]
................................................................................
  4771   4771   TEST: Mon épouse et moi-même avons toujours dit
  4772   4772   TEST: que vous ou moi ignorions à peu près tout du boson de Higgs n’a pas du tout le même sens
  4773   4773   
  4774   4774   
  4775   4775   
  4776   4776   !!
  4777   4777   !!
  4778         -!!!! Locutions invariables                                                                          
         4778  +!!!! Locutions invariables                                                                        !!
  4779   4779   !!
  4780   4780   !!
  4781   4781   
  4782   4782   __locutions_invariables__
  4783   4783       [plus|moins|autant]  que  [prévue|prévus|prévues]
  4784   4784           <<- -3>> prévu                                                                              # Invariable. Implicitement, \1 que ce qui était prévu.
  4785   4785   
................................................................................
  4809   4809   TEST: il y en a moins que {{prévues}}                         ->> prévu
  4810   4810   TEST: comme {{convenus}}                                      ->> convenu
  4811   4811   
  4812   4812   
  4813   4813   
  4814   4814   !!
  4815   4815   !!
  4816         -!!!! Tout, tous, toute, toutes                                                                      
         4816  +!!!! Tout, tous, toute, toutes                                                                    !!
  4817   4817   !!
  4818   4818   !!
  4819   4819   
  4820   4820   __purge_tout_tous_toutes__
  4821   4821       [fais-les|fais-nous]                        [tous|toutes]
  4822   4822       [faisons-les|faisons-nous|faisons-vous]     [tous|toutes]
  4823   4823       [faites-les|faites-nous|faites-vous]        [tous|toutes]
................................................................................
  4944   4944   TEST: aux tout débuts, il y eut bien des erreurs
  4945   4945   TEST: comment les inégalités sociales impactent la santé des tout petits
  4946   4946   
  4947   4947   
  4948   4948   
  4949   4949   !!
  4950   4950   !!
  4951         -!!!! Adverbes de négation                                                                           
         4951  +!!!! Adverbes de négation                                                                         !!
  4952   4952   !!
  4953   4953   !!
  4954   4954   
  4955   4955   __ne_manquant__
  4956   4956       [<start>|,]  je             [le|la|l’|les|me|m’|te|t’|se|s’|nous|vous|lui|leur]     @:1s¬:(?:Oo|X)  [pas|rien|jamais|guère|point]
  4957   4957       [<start>|,]  tu             [le|la|l’|les|me|m’|te|t’|se|s’|nous|vous|lui|leur]     @:2s¬:(?:Oo|X)  [pas|rien|jamais|guère|point]
  4958   4958       [<start>|,]  [il|elle|on]   [le|la|l’|les|me|m’|te|t’|se|s’|nous|vous|lui|leur]     @:3s¬:(?:Oo|X)  [pas|rien|jamais|guère|point]
................................................................................
  5012   5012   TEST: __neg__ Il {{y}} a jamais d’eau.
  5013   5013   TEST: __neg__ je {{deviendrai}} pas hargneux.
  5014   5014   TEST: __neg__ il {{le}} lui donne pas souvent.
  5015   5015   
  5016   5016   
  5017   5017   !!
  5018   5018   !!
  5019         -!!!! Infinitif                                                                                      
         5019  +!!!! Infinitif                                                                                    !!
  5020   5020   !!
  5021   5021   !!
  5022   5022   
  5023   5023   __infi_ne_pas_jamais_etc__
  5024   5024       ne [pas|rien|guère|point]                   ?[le|la|l’|les|leur|lui|nous|vous|me|m’|te|t’|se|s’|en|y]¿  (@:[VNA]¬:(?:Y|W|X|O[ow])|>que?/)
  5025   5025       ne [pas|rien|guère|point] [trop|beaucoup]   ?[le|la|l’|les|leur|lui|nous|vous|me|m’|te|t’|se|s’|en|y]¿  (@:[VNA]¬:(?:Y|W|X|O[ow])|>que?/)
  5026   5026       ne [pas|rien|guère|point] non plus          ?[le|la|l’|les|leur|lui|nous|vous|me|m’|te|t’|se|s’|en|y]¿  (@:[VNA]¬:(?:Y|W|X|O[ow])|>que?/)
................................................................................
  5543   5543       bien assez tôt
  5544   5544       bien des fois
  5545   5545       bien souvent
  5546   5546       bon gré ?,¿ mal gré
  5547   5547       bras dessus ?,¿ bras dessous
  5548   5548       çà et là
  5549   5549       ce faisant
  5550         -    [cela|ça|ceci] mis à part 
         5550  +    [cela|ça|ceci] mis à part
  5551   5551       [cela|ça|ceci] va sans dire
  5552   5552       ces derniers temps
  5553   5553       cette [fois-là|fois-ci]
  5554   5554       chaque fois
  5555   5555       comme avant
  5556   5556       comme autrefois
  5557   5557       comme d’ habitude
................................................................................
  6222   6222       vaille que vaille
  6223   6223       ventre à terre
  6224   6224       vers nulle part
  6225   6225           <<- ~>> *
  6226   6226   
  6227   6227   
  6228   6228   @@@@
  6229         -@@@@END_GRAPH                                                                                       
         6229  +@@@@END_GRAPH
  6230   6230   @@@@
  6231   6231   
  6232         - 
         6232  +
  6233   6233   __[i](p_plus_avant)__           plus avant(?! de | que?) <<- ~>> *
  6234   6234   
  6235   6235   
  6236         -__[i](p_qui_loc_tps)__          qui (ce (?:jour|matin|après-midi|soir)-là|cette (?:nuit|matinée|soirée)-là) @@4 <<- ~1>> *    
         6236  +__[i](p_qui_loc_tps)__          qui (ce (?:jour|matin|après-midi|soir)-là|cette (?:nuit|matinée|soirée)-là) @@4 <<- ~1>> *
  6237   6237   
  6238   6238   
  6239         -    
         6239  +
  6240   6240   
  6241   6241   
  6242   6242   TEST: ils vont et viennent, toujours {{cotes a cotes}}…
  6243   6243   TEST: Nous irons {{tours à tours}} chercher du bois.
  6244   6244   TEST: Ma thèse en 180 secondes.
  6245   6245   
  6246   6246   
  6247         -# je / tu / il / elles / nous / vous / ils / elles 
         6247  +# je / tu / il / elles / nous / vous / ils / elles
  6248   6248   __[i](p_je_vous_en_prie)__      je (?:t’en|vous en) (?:prie|supplie) <<- ~>> *
  6249   6249   __[i](p_nous_vous_en_prions)__  nous (?:t’en|vous en) (?:prions|supplions) <<- ~>> *
  6250   6250   
  6251   6251   # mot-là
  6252   6252   __[i](p_qqch_tiret_là)__        ({w1})(-là) @@0,$ <<- morphex(\1, ":[NAQ]", ":G") ~2>> *
  6253   6253   
  6254   6254   # Après
................................................................................
  6268   6268   __[i](p_de_mes_yeux_vu)__       (de (?:[mts]es|[nv]os|leurs) yeux) vue?s? @@0 <<-  ~1>> *
  6269   6269   __[i](p_en_loc_de1)__           en (arrière|attente|amont|aval|cas|cours|dehors|dépit|direction|faveur|guise|l’(?:absence|honneur)|lieu et place|plein milieu|présence|raison|sus|termes|vertu) d(?:es?|u) @@3 <<- ~1>> *
  6270   6270   __[i](p_en_loc_de2)__           en (flagrant délit|matière) de? @@3 <<- ~1>> *
  6271   6271   __[i](p_en_proie_à)__           (en proie) à @@0 <<- ~1>> *
  6272   6272   __[i](p_eu_égard_à)__           (eu égard) (?:à|aux?) @@0 <<- ~1>> *
  6273   6273   __[i](p_la_une_de)__            la (une) d(?:es?|u) @@3 <<- ~1>> _
  6274   6274   __[i](p_le_long_de)__           le (long) d(?:es?|u) @@3 <<- ~1>> _
  6275         -__[i](p_par_le_biais_de)__      par (le biais|l’entremise) d(?:es?|u) @@4 <<- ~1>> * 
         6275  +__[i](p_par_le_biais_de)__      par (le biais|l’entremise) d(?:es?|u) @@4 <<- ~1>> *
  6276   6276   __[i](p_pour_ou_contre)__       pour (ou contre) @@5 <<- ~1>> *
  6277   6277   __[i](p_rien_comparé_à)__       rien +(comparé) +à @@w <<- ~1>> *
  6278   6278   __[i](p_suite_à)__              (suite) (?:à|aux?) @@0 <<- not before(r"(?i)\b(?:une|la|cette|[mts]a|[nv]otre|de) +") ~1>> *
  6279   6279   __[i](p_vent_debout_contre)__   (vent debout) contre @@0 <<- ~1>> *
  6280   6280   
  6281   6281   # Déterminant + nombre
  6282   6282   __[i](p_dét_plur_nombre_nom)__
................................................................................
  6413   6413   __[i](p_motion_de)__                    motions? (de (?:blâme|censure|défiance)) @@$ <<- ~1>> *
  6414   6414   __[i](p_noix_de)__                      noix (de (?:cajou|p[ée]can|coco|lavage|muscade|veau|macadamia)) @@$ <<- ~1>> *
  6415   6415   __[i](p_nu_comme_un_ver)__              nue?s? (comme (?:un ver|des vers)) @@$ <<- ~1>> *
  6416   6416   __[i](p_numéro)__
  6417   6417       numéro (un|deux|trois|quatre|cinq|six|sept|huit|neuf|dix(?:-sept|-huit|-neuf|)|onze|douze|treize|quatorze|quinze|seize|vingt|trente|quarante|cinquante|soixante(?:-dix|)|quatre-vingt(?:-dix|)|cent|mille|\d+) @@$
  6418   6418       <<- before(r"\b[lL]a +$") =>> define(\0, [">numéro/:N:f:s"])
  6419   6419       <<- ~1>> *
  6420         -__[i](p_oiseau_de)__                    oiseaux? (de (?:malheur|nuit|proie|mauvais augure)) @@$ <<- ~1>> * 
         6420  +__[i](p_oiseau_de)__                    oiseaux? (de (?:malheur|nuit|proie|mauvais augure)) @@$ <<- ~1>> *
  6421   6421   __[i](p_onde_de_choc)__                 ondes? (de choc) @@$ <<- ~1>> *
  6422   6422   __[i](p_orge)__                         orge (perlé|mondé|carré) @@$ <<- ~1>> *
  6423   6423   __[i](p_noire_comme)__                  noire?s? (comme (?:la nuit|une nuit sans lune)) @@$ <<- ~1>> *
  6424   6424   __[i](p_partie_de_jambe_en_l_air)__     parties? (de jambes en l’air) @@$ <<- ~1>> *
  6425   6425   
  6426   6426   __[i](p_pièce_de)__                     pièces? (de (?:théâtre|monnaie|\d+ (?:euros?|centimes?|cents?|livres? sterling|shillings?))) @@$ <<- ~1>> *
  6427   6427   __[i](p_pomme_de)__                     pommes? (de (?:discorde|terre|reinette|pin)|d’(?:Adam|api|amour|ambre|eau|or))  @@$  <<- ~1>> *
................................................................................
  6548   6548   __[i](p_60_qqch)__
  6549   6549       soixante-(?:d(?:eux|ix|ouze)|tr(?:ois|eize)|quat(?:re|orze)|cinq|six|sept|huit|neuf|quinze|seize| et (?:un|onze)|-et-(?:un|onze))
  6550   6550       <<- ~>> soixante
  6551   6551   __[i](p_80_qqch)__
  6552   6552       quatre-vingt-(?:un|d(?:eux|ix|ouze)|tr(?:ois|eize)|quat(?:re|orze)|cinq|six|sept|huit|neuf|onze|quinze|seize)
  6553   6553       <<- ~>> quatre-vingts
  6554   6554   __[i](p_qqch_100)__
  6555         -    ((?:d(?:eux|ouze)|tr(?:ois|eize)|quat(?:re|orze)|cinq|s(?:ix|seize)|sept|huit|neuf|onze|quinze) cents) +({w_2})  @@0,$ 
         6555  +    ((?:d(?:eux|ouze)|tr(?:ois|eize)|quat(?:re|orze)|cinq|s(?:ix|seize)|sept|huit|neuf|onze|quinze) cents) +({w_2})  @@0,$
  6556   6556       <<- morphex(\2, ":[NAQ].*:[pi]", ":(?:G|3p)") ~1>> cent
  6557   6557   __[i](p_qqch_1000)__
  6558   6558       (?:deux|trois|quatre|cinq|six|sept|huit|neuf|cent) (?:cent |)mille
  6559   6559       <<- ~>> mille
  6560   6560   
  6561   6561   __[i](p_det_plur_nombre_nom)__
  6562         -    (?:le(?:ur|)s|des|ses|ces|mes|tes|nos|vos) +((?:quelque +|)(?:d(?:eux|ix|ouze)|tr(?:ois|eize|ente)|qua(?:t(?:re(?:-vingts|)|orze)|rante)|cinq(?:uante|)|s(?:ix|eize|oixante)|sept|huit|neuf|onze|quinze|vingt|cent|mille|\d+)) +({w_2})  @@w,$ 
         6562  +    (?:le(?:ur|)s|des|ses|ces|mes|tes|nos|vos) +((?:quelque +|)(?:d(?:eux|ix|ouze)|tr(?:ois|eize|ente)|qua(?:t(?:re(?:-vingts|)|orze)|rante)|cinq(?:uante|)|s(?:ix|eize|oixante)|sept|huit|neuf|onze|quinze|vingt|cent|mille|\d+)) +({w_2})  @@w,$
  6563   6563       <<- morphex(\2, ":[NAQ].*:[pi]", ":(?:G|3p)") ~1>> *
  6564   6564   
  6565   6565   __[i](p_une_heure)__
  6566   6566       (?:à |d(?:e +|’))une +heure(?: (?:d(?:eu|i)x|tr(?:ois|eize|ente)|qu(?:a(?:t(?:re|orze)|rante)|inze)|cinq(?:uante|)|s(?:ix|ept|eize)|huit|neuf|onze|douze|vingt|décente|(?:très |)tardive)|) <<- ~>> *
  6567   6567   __[i](p_nombre_heure)__
  6568   6568       (?:à|de) (?:d(?:eu|i)x|tr(?:ois|eize)|qu(?:at(?:re|orze)|inze)|cinq|s(?:ix|ept|eize)|huit|neuf|onze|douze|vingt) +heures(?: (?:d(?:eu|i)x|tr(?:ois|eize|ente)|qu(?:a(?:t(?:re|orze)|rante)|inze)|cinq(?:uante|)|s(?:ix|ept|eize)|huit|neuf|onze|douze|vingt)|) <<- ~>> *
  6569   6569   
................................................................................
  6706   6706       le ({w_2}) (le plus) ({w_2})  @@3,w,$
  6707   6707       <<- morphex(\1, ":[NAQ].*:[me]", ":G") and morph(\3, ":[AQ].*:[me]", False) ~2>> *
  6708   6708   __[i](p_la_xxx_la_plus_adj)__
  6709   6709       la ({w_2}) (la plus) ({w_2})  @@3,w,$
  6710   6710       <<- morphex(\1, ":[NAQ].*:[fe]", ":G") and morph(\3, ":[AQ].*:[fe]", False) ~2>> *
  6711   6711   __[i](p_les_xxx_les_plus_adj)__
  6712   6712       (?:[lmts]es|nos|vos|leurs) ({w_2}) (les plus) ({w_2})  @@w,w,$
  6713         -    <<- morphex(\1, ":[NAQ].*:[pi]", ":[123][sp]") and morph(\3, ":A.*:[pi]", False) ~2>> * 
         6713  +    <<- morphex(\1, ":[NAQ].*:[pi]", ":[123][sp]") and morph(\3, ":A.*:[pi]", False) ~2>> *
  6714   6714   __[i](p_le_plus_le_moins)__
  6715   6715       (le (?:plus|moins)) ({w_2})  @@0,$
  6716   6716       <<- morph(\2, ":A", ":([me]:[si]|G)") and morph(word(-1), ">(?:avoir|être)/:V", False) ~1>> *
  6717   6717   __[i](p_bien_sûr)__
  6718   6718       bien sûr(?! de) <<- ~>> *
  6719   6719   __[i](p_bien_mal_fort_adj_adv)__
  6720   6720       (bien|mal|(?:fort|super) (?:bien|mal)|fort) +({w_2})  @@0,$
................................................................................
  7022   7022   
  7023   7023   
  7024   7024   #
  7025   7025   # //////////////////////////////////////// RÈGLES DE CONTRÔLE ////////////////////////////////////////
  7026   7026   #
  7027   7027   
  7028   7028   
  7029         -!!!! Redondances dans la phrase                                                                     
  7030         - 
         7029  +!!!! Redondances dans la phrase                                                                   !!
         7030  +
  7031   7031   __[i]/redon2(redondances_phrase)__
  7032   7032       ({w_4})[ ,].* (\1)  @@0,$
  7033   7033       <<- not morph(\1, ":(?:G|V0)|>même/", False) -2>> _             # Dans cette phrase, répétition de « \1 » (à gauche).
  7034   7034       <<- __also__ -1>> _                                             # Dans cette phrase, répétition de « \1 » (à droite).
  7035   7035   
  7036   7036   TEST: __redon2__ Quelle {{imposture}}, c’est d’un ennui, c’est une {{imposture}}.
  7037   7037   TEST: __redon2__ ils sont là côte à côte.
................................................................................
  7039   7039   TEST: __redon2__ De loin en loin, elle passe.
  7040   7040   TEST: __redon2__ Les mêmes causes produisent/produisant les mêmes effets. (répétition)
  7041   7041   
  7042   7042   
  7043   7043   
  7044   7044   !!
  7045   7045   !!
  7046         -!!!! Groupe nominal (1)                                                                             
         7046  +!!!! Groupe nominal (1)                                                                           !!
  7047   7047   !!
  7048   7048   !!
  7049   7049   
  7050   7050   #### 1 mot
  7051   7051   
  7052   7052   ## Usage impropre
  7053   7053   
................................................................................
  7619   7619   
  7620   7620   TEST: ils trouvent ça de plus en plus {{idiots}}              ->> idiot
  7621   7621   
  7622   7622   
  7623   7623   
  7624   7624   !!
  7625   7625   !!
  7626         -!!!! Groupe nominal (2)                                                                             
         7626  +!!!! Groupe nominal (2)                                                                           !!
  7627   7627   !!
  7628   7628   !!
  7629   7629   
  7630   7630   ## Sans article
  7631   7631   
  7632   7632   __[i]/gn(gn_2m_accord)__
  7633   7633       ^ *({w_2}) +({w_2})  @@*,$
................................................................................
  7724   7724           and not apposition(\1, \2) and not morph(word(-1), ":[NAQ]", False, False)
  7725   7725       -2>> =switchGender(@, False)                                                                    # Accord de genre erroné entre « \1 » et « \2 ».
  7726   7726       <<- __also__ and hasFemForm(\1) -1>> =switchGender(@)                                           # Accord de genre erroné avec « \2 ».
  7727   7727       <<- not re.search("(?i)^air$", \1) and not \2.startswith("seul")
  7728   7728           and morph(\1, ":[si]") and morph(\2, ":[NAQ].*:p")
  7729   7729           and not apposition(\1, \2) and not morph(word(-1), ":[NAQ]", False, False)
  7730   7730       -2>> =suggSing(@)                                                                               # Accord de nombre erroné avec « \1 » : « \2 » devrait être au singulier.
  7731         -    
         7731  +
  7732   7732   TEST: L’{{amande}} {{amer}}
  7733   7733   TEST: l’{{amicale}} {{animal}}
  7734   7734   TEST: du chien et de l’{{excellente}} {{collier}} qu’il avait autour du cou.
  7735   7735   TEST: du chien et de l’{{étonnante}} {{collier}} qu’il avait autour du cou.
  7736   7736   
  7737   7737   
  7738   7738   ## un / une
................................................................................
  7799   7799   __[i]/gn(gn_2m_le)__
  7800   7800       (?<!et |ou )(le) +({w_2}) +({w_2})  @@0,w,$
  7801   7801       <<- morph(\1, ":D", False) >>>
  7802   7802       <<- not \3.startswith("seul")
  7803   7803           and morphex(\2, ":[NAQ].*:[me]", ":(?:B|G|V0)") and morph(\3, ":[NAQ].*:f")
  7804   7804           and not apposition(\2, \3) and not before(r"\b(?:et|ou|de) +$")
  7805   7805       -3>> =suggMasSing(@, True)                                                                      # Accord de genre erroné : « \2 » est masculin, « \3 » est féminin.
  7806         -    <<- not \3.startswith("seul") 
         7806  +    <<- not \3.startswith("seul")
  7807   7807           and morphex(\2, ":[NAQ].*:[si]", ":G") and morphex(\3, ":[NAQ].*:p", ":[GWsi]")
  7808   7808           and not apposition(\2, \3) and not before(r"\b(?:et|ou|de) +$")
  7809   7809       -3>> =suggMasSing(@)                                                                            # Accord de nombre erroné avec « \2 » : « \3 » devrait être au singulier.
  7810   7810   __[i]/gn(gn_2m_le_après_et_ou_de)__
  7811   7811       (?:et|ou) +(le) +({w_2}) +({w_2})  @@w,w,$
  7812   7812       <<- morph(\1, ":D", False) >>>
  7813   7813       <<- not \3.startswith("seul")
  7814   7814           and morphex(\2, ":[NAQ].*:[me]", ":(?:B|G|V0|f)") and morph(\3, ":[NAQ].*:f")
  7815   7815           and not apposition(\2, \3) and not morph(word(-1), ":[NAQ]|>(?:et|ou)/", False, False)
  7816   7816       -3>> =suggMasSing(@, True)                                                                      # Accord de genre erroné : « \2 » est masculin, « \3 » est féminin.
  7817   7817       <<- not \3.startswith("seul")
  7818   7818           and morphex(\2, ":[NAQ].*:[si]", ":G") and morphex(\3, ":[NAQ].*:p", ":[GWsi]")
  7819   7819           and not apposition(\2, \3) and not morph(word(-1), ":[NAQ]|>(?:et|ou)/", False, False)
  7820         -    -3>> =suggMasSing(@)                                                                            # Accord de nombre erroné avec « \2 » : « \3 » devrait être au singulier.    
         7820  +    -3>> =suggMasSing(@)                                                                            # Accord de nombre erroné avec « \2 » : « \3 » devrait être au singulier.
  7821   7821   
  7822   7822   TEST: le test très {{cons}} qu’on a passé hier.
  7823   7823   TEST: c’était le chien {{perdue}} des voisins.
  7824   7824   TEST: viens vite ou le pari {{imperdables}} sera moins facile…
  7825   7825   
  7826   7826   
  7827   7827   __[i]/gn(gn_2m_det_mas_sing)__
  7828   7828       (?<!et |ou |de )(?:cet?|quel|au|ledit) +({w_2}) +({w_2})  @@w,$
  7829   7829       <<- not \2.startswith("seul")
  7830   7830           and morphex(\1, ":[NAQ].*:[me]", ":(?:B|G|V0)") and morph(\2, ":[NAQ].*:f")
  7831   7831           and not apposition(\1, \2) and not before(r"\b(?:et|ou|de) +$")
  7832   7832       -2>> =suggMasSing(@, True)                                                                      # Accord de genre erroné : « \1 » est masculin, « \2 » est féminin.
  7833         -    <<- not \2.startswith("seul") 
         7833  +    <<- not \2.startswith("seul")
  7834   7834           and morphex(\1, ":[NAQ].*:[si]", ":G") and morphex(\2, ":[NAQ].*:p", ":[GWsi]")
  7835   7835           and not apposition(\1, \2) and not before(r"\b(?:et|ou|de) +$")
  7836   7836       -2>> =suggMasSing(@)                                                                            # Accord de nombre erroné avec « \1 » : « \2 » devrait être au singulier.
  7837   7837   __[i]/gn(gn_2m_det_mas_sing_après_et_ou_de)__
  7838   7838       (?:et|ou|de) +(?:cet?|quel|au|ledit) +({w_2}) +({w_2})  @@w,$
  7839   7839       <<- not \2.startswith("seul")
  7840   7840           and morphex(\1, ":[NAQ].*:[me]", ":(?:B|G|V0|f)") and morph(\2, ":[NAQ].*:f")
  7841   7841           and not apposition(\1, \2) and not morph(word(-1), ":[NAQ]|>(?:et|ou)/", False, False)
  7842   7842       -2>> =suggMasSing(@, True)                                                                      # Accord de genre erroné : « \1 » est masculin, « \2 » est féminin.
  7843   7843       <<- not \2.startswith("seul")
  7844   7844           and morphex(\1, ":[NAQ].*:[si]", ":G") and morphex(\2, ":[NAQ].*:p", ":[GWsi]")
  7845   7845           and not apposition(\1, \2) and not morph(word(-1), ":[NAQ]|>(?:et|ou)/", False, False)
  7846         -    -2>> =suggMasSing(@)                                                                            # Accord de nombre erroné avec « \1 » : « \2 » devrait être au singulier.    
         7846  +    -2>> =suggMasSing(@)                                                                            # Accord de nombre erroné avec « \1 » : « \2 » devrait être au singulier.
  7847   7847   
  7848   7848   TEST: cet outil {{terribles}} qu’il a dans les mains
  7849   7849   TEST: J’aimerais connaître de quel parti {{gauchistes}} on parle.
  7850   7850   
  7851   7851   
  7852   7852   __[i]/gn(gn_2m_mon_ton_son)__
  7853   7853       (?<!et |ou |de )[mts]on +({w_2}) +({w_2})  @@w,$
  7854   7854       <<- not \2.startswith("seul")
  7855   7855           and morphex(\1, ":[NAQ].*:m", ":(?:B|G|e|V0|f)") and morph(\2, ":[NAQ].*:f")
  7856   7856           and not apposition(\1, \2) and not before(r"\b(?:et|ou|de) +$")
  7857   7857       -2>> =suggMasSing(@, True)                                                                      # Accord de genre erroné : « \1 » est masculin, « \2 » est féminin.
  7858         -    <<- not \2.startswith("seul") 
         7858  +    <<- not \2.startswith("seul")
  7859   7859           and morphex(\1, ":[NAQ].*:[si]", ":G") and morphex(\2, ":[NAQ].*:p", ":[GWsi]")
  7860   7860           and not apposition(\1, \2) and not before(r"\b(?:et|ou|de) +$")
  7861   7861       -2>> =suggMasSing(@)                                                                            # Accord de nombre erroné avec « \1 » : « \2 » devrait être au singulier.
  7862   7862   __[i]/gn(gn_2m_mon_ton_son_après_et_ou_de)__
  7863   7863       (?:et|ou|de) +[mts]on +({w_2}) +({w_2})  @@w,$
  7864   7864       <<- not \2.startswith("seul")
  7865   7865           and morphex(\1, ":[NAQ].*:m", ":(?:B|G|e|V0|f)") and morph(\2, ":[NAQ].*:f")
  7866   7866           and not apposition(\1, \2) and not morph(word(-1), ":[NAQ]|>(?:et|ou)/", False, False)
  7867   7867       -2>> =suggMasSing(@, True)                                                                      # Accord de genre erroné : « \1 » est masculin, « \2 » est féminin.
  7868   7868       <<- not \2.startswith("seul")
  7869   7869           and morphex(\1, ":[NAQ].*:[si]", ":G") and morphex(\2, ":[NAQ].*:p", ":[GWsi]")
  7870   7870           and not apposition(\1, \2)
  7871   7871           and not morph(word(-1), ":[NAQ]|>(?:et|ou)/", False, False)
  7872         -    -2>> =suggMasSing(@)                                                                            # Accord de nombre erroné avec « \1 » : « \2 » devrait être au singulier.    
         7872  +    -2>> =suggMasSing(@)                                                                            # Accord de nombre erroné avec « \1 » : « \2 » devrait être au singulier.
  7873   7873   
  7874   7874   TEST: il brandissait avec fougue son drapeau {{déchirés}}
  7875   7875   TEST: comment osez-vous médire de mon héritage {{glorieuse}}
  7876   7876   
  7877   7877   
  7878   7878   __[i]/gn(gn_2m_la)__
  7879   7879       (?<!et |ou |de )(la) +({w_2}) +({w_2})  @@0,w,$
  7880   7880       <<- morph(\1, ":D", False) >>>
  7881   7881       <<- \2 != "fois" and not \3.startswith("seul")
  7882   7882           and morphex(\2, ":[NAQ].*:[fe]", ":(?:B|G|V0)") and morph(\3, ":[NAQ].*:m")
  7883   7883           and not apposition(\2, \3) and not before(r"\b(?:et|ou|de) +$")
  7884   7884       -3>> =suggFemSing(@, True)                                                                      # Accord de genre erroné : « \2 » est féminin, « \3 » est masculin.
  7885         -    <<- not \3.startswith("seul") 
         7885  +    <<- not \3.startswith("seul")
  7886   7886           and morphex(\2, ":[NAQ].*:[si]", ":G") and morphex(\3, ":[NAQ].*:p", ":[GWsi]")
  7887   7887           and not apposition(\2, \3) and not before(r"\b(?:et|ou|de) +$")
  7888   7888       -3>> =suggFemSing(@)                                                                            # Accord de nombre erroné avec « \2 » : « \3 » devrait être au singulier.
  7889   7889   __[i]/gn(gn_2m_la_après_et_ou_de)__
  7890   7890       (?:et|ou|de) +(la) +({w_2}) +({w_2})  @@w,w,$
  7891   7891       <<- morph(\1, ":D", False) >>>
  7892   7892       <<- \2 != "fois" and not \3.startswith("seul")
................................................................................
  8136   8136   TEST: Les couleurs rouge, jaune et verte ne doivent pas être utilisées
  8137   8137   TEST: des passeports américain, canadien, néerlandais, allemand et britannique.
  8138   8138   
  8139   8139   
  8140   8140   
  8141   8141   !!
  8142   8142   !!
  8143         -!!!! Groupe nominal (3)                                                                             
         8143  +!!!! Groupe nominal (3)                                                                           !!
  8144   8144   !!
  8145   8145   !!
  8146   8146   
  8147   8147   ## nombre
  8148   8148   
  8149   8149   __[i]/gn(gn_3m)__
  8150   8150       ^ *({w_2}) +({w_2}) +({w_3})  @@*,w,$
................................................................................
  8190   8190   
  8191   8191   TEST: ces petites sottes {{déjantée}}
  8192   8192   
  8193   8193   
  8194   8194   
  8195   8195   !!
  8196   8196   !!
  8197         -!!!! Groupe nominal: Accords avec de / des / du                                                     
         8197  +!!!! Groupe nominal: Accords avec de / des / du                                                   !!
  8198   8198   !!
  8199   8199   !!
  8200   8200   
  8201   8201   __[i]/gn(gn_devinette1)__
  8202   8202       (?:[lmts]a|une|cette) +{w_2} +d(?:e (?:[lmts]a|cette)|’une) +(?!des )({w_2}) +({w_2})  @@w,$
  8203   8203       <<- morphex(\2, ":[NAQ].*:(?:m|f:p)", ":(?:G|P|[fe]:[is]|V0|3[sp])") and not apposition(\1, \2)
  8204   8204       -2>> =suggFemSing(@, True)                                                              # Accord erroné : « \2 » devrait être au féminin singulier.
................................................................................
  8252   8252   
  8253   8253   TEST: {{de telles sorte}}
  8254   8254   
  8255   8255   
  8256   8256   
  8257   8257   !!
  8258   8258   !!
  8259         -!!!! Singuliers & Pluriels                                                                          
         8259  +!!!! Singuliers & Pluriels                                                                        !!
  8260   8260   !!
  8261   8261   !!
  8262   8262   
  8263   8263   #### Prépositions
  8264   8264   
  8265   8265   # Similaires à prépositions : http://www.synapse-fr.com/manuels/PP_ATTENDU.htm
  8266   8266   # attendu, compris, non-compris, y compris, entendu, excepté, ôté, ouï, passé, supposé, vu
................................................................................
  8650   8650   TEST: Son point de {{vus}} prévaudra toujours, faites-vous à cette idée ou dégagez.
  8651   8651   TEST: de mon point de {{vues}}
  8652   8652   
  8653   8653   
  8654   8654   
  8655   8655   !!
  8656   8656   !!
  8657         -!!!! Confusions                                                                                     
         8657  +!!!! Confusions                                                                                   !!
  8658   8658   !!
  8659   8659   !!
  8660   8660   
  8661   8661   # à / a
  8662   8662   __[i]/conf(conf_suite_à)__
  8663   8663       suite (a) ({w1}) @@w,$
  8664   8664       <<- morph(\2, ":D|>[ld]/", False) and isStart() -1>> à          # Confusion : “a” est une forme conjuguée du verbe “avoir”. Pour la préposition, écrivez “à”.
................................................................................
  8707   8707   
  8708   8708   
  8709   8709   __[i]/conf(conf_âcre)__
  8710   8710       acres?
  8711   8711       <<- morph(word(-1), ">(?:être|go[ûu]t|humeur|odeur|parole|parfum|remarque|reproche|réponse|saveur|senteur|sensation|vin)/", False, False)
  8712   8712       ->> =\0.replace("a", "â").replace("A", "Â")
  8713   8713       # Confusion probable : “acre” est une unité de surface agraire. Pour l’adjectif signifiant “irritant”, écrivez :|https://fr.wiktionary.org/wiki/%C3%A2cre
  8714         -    
         8714  +
  8715   8715   TEST: Il avait ce goût {{acre}} dans la bouche qui ne passait pas.
  8716   8716   
  8717   8717   
  8718   8718   # accro / accroc
  8719   8719   __[i]/conf(conf_être_accro)__
  8720   8720       ({etre}|dev\w+|sembl\w+|par\w+|rend\w+) +(accrocs?)  @@0,$
  8721   8721       <<- morph(\1, ">(?:être|devenir|para[îi]tre|rendre|sembler)/", False)
................................................................................
  8775   8775   TEST: Nous avons déconné, nous avons été mis à {{l’amande}}.
  8776   8776   TEST: Ces gens-là ne feront jamais {{amande honorable}}.
  8777   8777   
  8778   8778   
  8779   8779   # annales / anal-e-s
  8780   8780   __[i]/conf(conf_annales1)__
  8781   8781       (anale?s?) (?:littéraires?|politiques?|ecclésiastiques?|du (?:bac(?:calauréat|)|brevet)|de (?:physique|chimie|mathématiques|biologie|géographie)|d’histoire)  @@0
  8782         -    <<- -1>> annales                                                 # Confusion : “\1” est l’adjectif relatif à l’anus.|http://fr.wiktionary.org/wiki/annales 
         8782  +    <<- -1>> annales                                                 # Confusion : “\1” est l’adjectif relatif à l’anus.|http://fr.wiktionary.org/wiki/annales
  8783   8783   __[i]/conf(conf_annales2)__
  8784   8784       [lcdmts]es (anale?s?)  @@4
  8785   8785       <<- -1>> annales                                                 # Confusion : “\1” est l’adjectif relatif à l’anus.|http://fr.wiktionary.org/wiki/annales
  8786   8786   
  8787   8787   TEST: des {{anales}} littéraires
  8788   8788   TEST: il a bachoté les {{anales}}.
  8789   8789   
................................................................................
  9210   9210   TEST: Les pays ibériques et scandinaves ont signé le traité.
  9211   9211   TEST: Les gouvernements espagnol et mexicain ont signé le traité.
  9212   9212   TEST: Béatrice Dalle et Claude
  9213   9213   
  9214   9214   
  9215   9215   __[i]/conf(conf_où_est)__
  9216   9216       où (et) +({w_1}) @@w,$
  9217         -    <<- morphex(\2, ":D", ":R|>(?:quand|pourquoi)") or (\2 == "l" and after("^’")) 
         9217  +    <<- morphex(\2, ":D", ":R|>(?:quand|pourquoi)") or (\2 == "l" and after("^’"))
  9218   9218       -1>> est                                                                        # Confusion probable : “et” est une conjonction de coordination. Pour le verbe être à la 3ᵉ personne du singulier, écrivez :
  9219   9219   
  9220   9220   TEST: où {{et}} cet ennemi ?
  9221   9221   TEST: où {{et}} l’homme qui est passé ce matin ?
  9222   9222   TEST: Je veux savoir où et quand, où et pouquoi.
  9223   9223   TEST: où et avec qui ?
  9224   9224   
................................................................................
  9253   9253   
  9254   9254   TEST: j’ai vu un {{flamand}} rose.
  9255   9255   
  9256   9256   
  9257   9257   # foi / fois
  9258   9258   __[i]/conf(conf_bonne_mauvaise_foi)__
  9259   9259       (mauvaise|bonne) (fois)  @@0,$
  9260         -    <<- not ( \1 == "bonne" and before(r"(?i)\bune +$") and after("(?i)^ +pour toute") ) 
         9260  +    <<- not ( \1 == "bonne" and before(r"(?i)\bune +$") and after("(?i)^ +pour toute") )
  9261   9261       -2>> foi                                                                                        # Confusion probable.|http://fr.wiktionary.org/wiki/foi
  9262   9262   __[i]/conf(conf_faire_perdre_donner_foi)__
  9263   9263       ((?:f[aieî]|perd|donn|[ae])\w*) (fois) @@0,$
  9264   9264       <<- morph(\1, ">(?:faire|perdre|donner|avoir)/", False) -2>> foi                                      # Confusion probable.|http://fr.wiktionary.org/wiki/foi
  9265   9265   
  9266   9266   TEST: C’est une personne de bonne {{fois}}.
  9267   9267   TEST: Mais il a perdu {{fois}} en l’avenir.
................................................................................
  9802   9802   #    <<- not morph(word(-1), ":D", False, False)
  9803   9803   #    ->> quelquefois
  9804   9804   #    # Confusion probable : « quelquefois » est un adverbe qui signifie « parfois » ; ne pas confondre avec les quelques fois qu’il est advenu ou qu’il adviendra quelque chose.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=4334
  9805   9805   
  9806   9806   
  9807   9807   __[i]/conf(conf_quelquefois_quelques_fois)__
  9808   9808       qu(?: elles? que fois?|elles? que fois?|elque fois) <<- ->> quelquefois|quelques fois
  9809         -    # Confusion. Utilisez « quelquefois » si vous voulez dire « parfois ». Utilisez « quelques fois » pour évoquer ce qui est advenu ou adviendra plusieurs fois.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=4334  
         9809  +    # Confusion. Utilisez « quelquefois » si vous voulez dire « parfois ». Utilisez « quelques fois » pour évoquer ce qui est advenu ou adviendra plusieurs fois.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=4334
  9810   9810   
  9811   9811   TEST: {{Quelles que fois}}, on y comprend plus rien.
  9812   9812   TEST: {{Qu’elle que fois}}, on y comprend plus rien.
  9813   9813   TEST: Il y va {{quelque fois}} par an.
  9814   9814   
  9815   9815   
  9816   9816   # quoique / quoi que
................................................................................
  9919   9919   __[i]/conf(conf_prep_soi)__
  9920   9920       (?:chez|don de|sur|avec|pour) (soit) @@$ <<- not after(" soit ") -1>> soi                       # Confusion probable.
  9921   9921   __[i]/conf(conf_en_soi)__
  9922   9922       (?<!’)en (soit)  @@3
  9923   9923       <<- morph(word(1), ":[GY]", True, True) and not before("(?i)quel(?:s|les?|) qu $|on $|il $") and not after(" soit ")
  9924   9924       -1>> soi                                                                                        # Confusion probable.
  9925   9925   __[i]/conf(conf_quel_que_soit2)__
  9926         -    quel(?:le|)s? que (soi(?:es?|)) @@$ <<- -1>> soit|soient                                        # Confusion probable. 
         9926  +    quel(?:le|)s? que (soi(?:es?|)) @@$ <<- -1>> soit|soient                                        # Confusion probable.
  9927   9927   __[i]/conf(conf_soi_même1)__
  9928   9928       (soi[tes]s? mêmes?) @@$
  9929   9929       <<- morph(word(-1), ":[YQ]|>(?:avec|contre|par|pour|sur)/", False, True) -1>> soi-même          # Confusion probable : moi-même, toi-même, lui-même, elle-même, soi-même, elles-mêmes, eux-mêmes.
  9930   9930   __[i]/conf(conf_soi_même2)__
  9931   9931       soi[tes]s?-mêmes? <<- ->> soi-même                                                              # Confusion : moi-même, toi-même, lui-même, elle-même, soi-même, elles-mêmes, eux-mêmes.
  9932   9932   
  9933   9933   TEST: chez {{soit}}, c’est presque toujours mieux.
................................................................................
 10076  10076   
 10077  10077   
 10078  10078   # nouveau / nouvel
 10079  10079   # TODO
 10080  10080   
 10081  10081   
 10082  10082   
 10083         -!!!! Mots composés                                                                                  
        10083  +!!!! Mots composés                                                                                !!
 10084  10084   
 10085  10085   __[i]/mc(mc_mot_composé)__
 10086  10086       ({w2})-({w2})  @@0,$
 10087  10087       <<- not \1.isdigit() and not \2.isdigit()
 10088  10088           and not morph(\0, ":", False) and not morph(\2, ":G", False) and spell(\1+\2)
 10089  10089       ->> \1\2                                                                                        # Vous pouvez ôter le trait d’union.
 10090  10090       <<- \2 != "là" and not re.search("(?i)^(?:ex|mi|quasi|semi|non|demi|pro|anti|multi|pseudo|proto|extra)$", \1)
................................................................................
 10094  10094   
 10095  10095   TEST: __mc__ des {{portes-avions}}.
 10096  10096   
 10097  10097   
 10098  10098   
 10099  10099   !!
 10100  10100   !!
 10101         -!!!! Casse: majuscules et minuscules                                                                
        10101  +!!!! Casse: majuscules et minuscules                                                              !!
 10102  10102   !!
 10103  10103   !!
 10104  10104   
 10105  10105   # Les jours
 10106  10106   __[s]/maj(maj_jours_semaine)__
 10107  10107       (?:Lundi|Mardi|Mercredi|Jeudi|Vendredi|Samedi|Dimanche)
 10108  10108       <<- before(r"[\w,] +$") ->> =\0.lower()
................................................................................
 10264  10264   !!
 10265  10265   !!
 10266  10266   !!
 10267  10267   !!
 10268  10268   !!
 10269  10269   !!
 10270  10270   !!
 10271         -!!! Conjugaisons                                                                                    
        10271  +!!! Conjugaisons                                                                                  !!
 10272  10272   !!
 10273  10273   !!
 10274  10274   !!
 10275  10275   !!
 10276  10276   !!
 10277  10277   !!
 10278  10278   !!
................................................................................
 10279  10279   !!
 10280  10280   !!
 10281  10281   !!
 10282  10282   
 10283  10283   
 10284  10284   !!
 10285  10285   !!
 10286         -!!!! Infinitif                                                                                      
        10286  +!!!! Infinitif                                                                                    !!
 10287  10287   !!
 10288  10288   !!
 10289  10289   
 10290  10290   __[i]/infi(infi_à_en)__
 10291  10291       à en ({w_2}) @@5
 10292  10292       <<- morphex(\1, ":V", ":Y") -1>> =suggVerbInfi(@)                                               # Le verbe devrait être à l’infinitif.
 10293  10293   
................................................................................
 10424  10424       -2>> =suggVerbPpas(\2, ":p")                                                    # Confusion probable : “\2” est à verbe à l’infinitif. Pour l’adjectif, écrivez :
 10425  10425   
 10426  10426   TEST: les documents {{scanner}} ne sont pas lisibles.
 10427  10427   TEST: tes doutes {{remâcher}} deviennent difficiles à vivre.
 10428  10428   
 10429  10429   
 10430  10430   
 10431         -!!!! Participes présents                                                                             
        10431  +!!!! Participes présents                                                                          !!
 10432  10432   
 10433  10433   __[i]/conj(conj_participe_présent)__  (?:ne|lui|me|te|se|nous|vous) ({w_2}ants)  @@$
 10434  10434       <<- morph(\1, ":A", False) -1>> =\1[:-1]                                                        # Un participe présent est invariable.|http://fr.wiktionary.org/wiki/participe_pr%C3%A9sent
 10435  10435   
 10436  10436   TEST: nous {{épuisants}} à la tâche pour des clopinettes, nous défaillîmes.
 10437  10437   
 10438  10438   
 10439  10439   
 10440  10440   !!!
 10441  10441   !!!
 10442         -!!! Processeur: simplification des substantifs                                                      
        10442  +!!! Processeur: simplification des substantifs                                                    !!
 10443  10443   !!!
 10444  10444   !!!
 10445  10445   
 10446  10446   ### @ : we remove @ we introduced after le/la/les in some cases
 10447  10447   __<s>(p_arobase)__      @ <<- ~>> *
 10448  10448   
 10449  10449   ### Avant les verbes (ôter seulement les COI!)
................................................................................
 10561  10561   TEST: Je me doute bien que vous avez trouvé la réponse.
 10562  10562   TEST: Nous nous doutons bien qu’il y a une entourloupe derrière cette affaire.
 10563  10563   TEST: Notre but n’était pas de devenir célèbres.
 10564  10564   TEST: sans qu’on ait à le lui ordonner
 10565  10565   
 10566  10566   
 10567  10567   
 10568         -!!!! OCR                                                                                            
        10568  +!!!! OCR                                                                                          !!
 10569  10569   
 10570  10570   # Participes passés
 10571  10571   __[i]/ocr(ocr_être_participes_passés)__
 10572  10572       ({etre}) +({w_2}es?) @@0,$
 10573  10573       <<- morph(\1, ":V0e", False) >>>
 10574  10574       <<- \2.endswith("e") and morphex(\2, ":V1.*:Ip.*:[13]s", ":(?:[GM]|A)") and not before(r"(?i)\belle +(?:ne +|n’|)$")
 10575  10575       -2>> =suggVerbPpas(\2, ":m:s")                                                                  # Erreur de numérisation ?
................................................................................
 10599  10599   TEST: __ocr__ elle avait envie de s’en sortir enfin.
 10600  10600   TEST: __ocr__ la longueur de la circonférence étant égale à…
 10601  10601   # TEST: __ocr__ vous êtes {{presses}} de monter à bord de ce train-ci.
 10602  10602   # Fonctionne avec nous serons, mais pas nous sommes (bug de JavaScript?)
 10603  10603   
 10604  10604   
 10605  10605   
 10606         -!!!! Confusions                                                                                     
        10606  +!!!! Confusions                                                                                   !!
 10607  10607   
 10608  10608   ## guerre / guère
 10609  10609   __[i]/conf(conf_ne_pronom_pronom_verbe_guère)__
 10610  10610       ne (?:[mts]e|la|les?|[nv]ous|lui|leur) (?:la |les? |lui |leur |l’|)\w{w_2} (?:plus |)(guerre)  @@$
 10611  10611       <<- -1>> guère                                                                                  # Confusion. La guerre est conflit. Pour l’adverbe signifiant “peu”, écrivez :
 10612  10612   
 10613  10613   TEST: tout ceci ne me rapporte {{guerre}}
................................................................................
 10660  10660       ({aller}) +de (soi[tes])  @@0,$
 10661  10661       <<- morph(\1, ">aller/", False) and not after(" soit ") -2>> soi                                # Confusion.|https://fr.wiktionary.org/wiki/aller_de_soi
 10662  10662   
 10663  10663   TEST: cela ne va pas de {{soit}}.
 10664  10664   
 10665  10665   
 10666  10666   
 10667         -!!!! Adverbes après verbe                                                                           
        10667  +!!!! Adverbes après verbe                                                                         !!
 10668  10668   
 10669  10669   # fort
 10670  10670   __[i]/sgpl(sgpl_verbe_fort)__
 10671  10671       ({w_2}) +(forts)  @@0,$
 10672  10672       <<- morphex(\1, ":V", ":[AN].*:[me]:[pi]|>(?:être|sembler|devenir|re(?:ster|devenir)|para[îi]tre|appara[îi]tre)/.*:(?:[123]p|P|Q)|>(?:affirmer|trouver|croire|désirer|estime|préférer|penser|imaginer|voir|vouloir|aimer|adorer|souhaiter)/")
 10673  10673           and not morph(word(1), ":A.*:[me]:[pi]", False)
 10674  10674       -2>> fort                                               # Confusion probable. S’il s’agit ici de l’adverbe “fort” (équivalent de “fortement”), écrivez-le au singulier.
................................................................................
 10694  10694   TEST: Il a de grands biens.
 10695  10695   TEST: Ce sont des biens de peu de valeur.
 10696  10696   
 10697  10697   
 10698  10698   
 10699  10699   !!
 10700  10700   !!
 10701         -!!!! Infinitif                                                                                      
        10701  +!!!! Infinitif                                                                                    !!
 10702  10702   !!
 10703  10703   !!
 10704  10704   
 10705  10705   __[i]/infi(infi_d_en_y)__
 10706  10706       d’(?:en|y) +({w_2})  @@$
 10707  10707       <<- morphex(\1, ":V", ":Y") -1>> =suggVerbInfi(@)                                               # Le verbe devrait être à l’infinitif.
 10708  10708   
................................................................................
 10807  10807   
 10808  10808   TEST: lui {{mangée}} beaucoup.
 10809  10809   
 10810  10810   
 10811  10811   
 10812  10812   !!
 10813  10813   !!
 10814         -!!!! Usage pronominal avec “avoir” au lieu d’“être”                                                 
        10814  +!!!! Usage pronominal avec “avoir” au lieu d’“être”                                               !!
 10815  10815   !!
 10816  10816   !!
 10817  10817   
 10818  10818   __[i]/conj(conj_se_conf_être_avoir)__
 10819  10819       (s’)(?:en +|y+ |)({avoir})  @@0,$
 10820  10820       <<- morph(\2, ">avoir/", False) >>>
 10821  10821       <<- morph(\2, ":3p", False) -2>> sont|étaient|seront|seraient                                   # Confusion. Sous sa forme pronominale, un verbe s’emploie avec l’auxilaire “être”, non “avoir”.
................................................................................
 10849  10849   TEST: {{nous}} nous {{avons}} donné le temps
 10850  10850   TEST: {{vous}} vous {{avez}} perdu toute notion de décence.
 10851  10851   
 10852  10852   
 10853  10853   
 10854  10854   !!
 10855  10855   !!
 10856         -!!!! Participes passés: se +être +verbe                                                             
        10856  +!!!! Participes passés: se +être +verbe                                                           !!
 10857  10857   !!
 10858  10858   !!
 10859  10859   
 10860  10860   __[i]/ppas(ppas_je_me_être_verbe)__
 10861  10861       je +(?:ne +|)m(?:e +|’(?:y +|))(?:s[uo]i[st]|étai[st]|fu(?:sses?|s|t)|serai[st]?) +({w_3}) @@$
 10862  10862       <<- morphex(\1, ":Q.*:p", ":(?:G|Q.*:[si])") and ( morph(\1, ":V[123]_.__p_e_") or (isRealEnd() and not before(r"\b[qQ]ue? +$")) )
 10863  10863       -1>> =suggVerbPpas(\1, ":m:s")                                                                  # Si ce participe passé se rapporte bien à “je”, il devrait être au singulier.
................................................................................
 10942  10942   TEST: des soins que je m’étais donnés.
 10943  10943   TEST: Si t’es pas contente, t’achètes pas.
 10944  10944   
 10945  10945   
 10946  10946   
 10947  10947   !!
 10948  10948   !!
 10949         -!!!! Participes passés: se +laisser +adjectif                                                       
        10949  +!!!! Participes passés: se +laisser +adjectif                                                     !!
 10950  10950   !!
 10951  10951   !!
 10952  10952   
 10953  10953   __[i]/ppas(ppas_me_te_laisser_adj)__
 10954  10954       ([mt]e|l[ae]) +(laiss\w*) +({w_3})  @@0,w,$
 10955  10955       <<- morph(\2, ">laisser/", False) and  morphex(\3, ":[AQ].*:p", ":(?:[YG]|[AQ].*:[is])")
 10956  10956       -3>> =suggSing(@)                                                                               # Accord avec « \1 » : « \3 » devrait être au singulier.
................................................................................
 11138  11138   __[i]/ppas(ppas_avoir_été)__
 11139  11139       (({avoir}) +été) +({w_2})  @@0,0,$
 11140  11140       <<- morph(\2, ":V0a", False) >>>
 11141  11141       <<- morphex(\3, ":[123]s", ":[GNAQWY]") -3>> =suggVerbPpas(@)           # Après « avoir été », il faut un participe passé.
 11142  11142       <<- not before("[çcCÇ]’$|[cC]e n’$|[çÇ]a (?:n’|)$") and not before("(?i)^ *ne pas ") and not morph(word(-1), ":Y", False) >>>
 11143  11143       <<- morphex(\3, ":Y", ":A") -1>> _                                      # Tournure familière. Utilisez « être allé » plutôt que « avoir été ».
 11144  11144       <<- morphex(\3, ":V1..t.*:Y", ":A") -3>> =suggVerbPpas(@)               # Incohérence. Après « avoir été », il faut un participe passé (à moins que « avoir été » signifie ici « être allé »).
 11145         -    
        11145  +
 11146  11146   TEST: j’ai été {{instruis}} par elle
 11147  11147   TEST: avoir été {{prit}} par surprise
 11148  11148   TEST: Ils {{ont été}} {{réaliser}} à partir d’éléments naturels.
 11149  11149   TEST: J’{{ai été}} camper dans les Alpes.
 11150  11150   TEST: Tu {{as été}} prendre du bois.
 11151  11151   TEST: J’{{ai été}} {{chercher}} du pain.
 11152  11152   TEST: Mon grand-père aurait été fier.
................................................................................
 11267  11267   TEST: elles doivent être {{fâché}}
 11268  11268   TEST: elles doivent avoir été {{attaqué}}
 11269  11269   TEST: elles peuvent avoir été {{trompé}}
 11270  11270   TEST: elles souhaitent être plus {{considérée}}
 11271  11271   
 11272  11272   
 11273  11273   
 11274         -!!!! Participes passés: accord en nombre avec la conjugaison de « être »                            
        11274  +!!!! Participes passés: accord en nombre avec la conjugaison de « être »                          !!
 11275  11275   
 11276  11276   ## Contrôle de l’
 11277  11277   __[i]/ppas(ppas_être_accord_singulier)__
 11278  11278       ({w_2}) +(?:qui +|)(?:ne +|n’|)(?:est|était|f[uû]t|sera(?:it|)|a(?:vait|ura|urait|it|) +été|e[uû]t +été) +({w_2})  @@0,$
 11279  11279       <<- morphex(\2, ":[NAQ].*:p", ":[GMWYsi]") and not morph(\1, ":G", False)
 11280  11280       -2>> =suggSing(@)                                                        # Accord avec « être » : « \2 » devrait être au singulier.
 11281  11281   
 11282  11282   __[i]/ppas(ppas_être_accord_pluriel)__
 11283  11283       ({w_2}) +(?:qui +|)(?:ne +|n’|)(?:sont|étaient|fu(?:r|ss)ent|ser(?:ont|aient)|soient|ont +été|a(?:vaient|uront|uraient|ient) +été|eu(?:r|ss)ent +été) +({w_2})  @@0,$
 11284  11284       <<- not re.search("(?i)^légion$", \2) and morphex(\2, ":[NAQ].*:s", ":[GWYpi]") and not morph(\1, ":G", False)
 11285  11285       -2>> =suggPlur(@)                                                        # Accord avec « être » : « \2 » devrait être au pluriel.
 11286  11286   
 11287  11287   
 11288         -!!!! Participes passés: accord en genre avec le substantif précédent                                
        11288  +!!!! Participes passés: accord en genre avec le substantif précédent                              !!
 11289  11289   
 11290  11290   __[i]/ppas(ppas_sujet_être_accord_genre)__
 11291  11291       (?<![dD]’)(une? |les? |la |l’|ce(?:s|t|tte|) |[mts](?:on|a|es) |[nv]os |leurs? ) *({w_2}) +(?:qui +|)(?:ne +|n’|)(?:est|étai(?:en|)t|f[uû]t|sera(?:i(?:en|)t|)|soi(?:en|)t|s(?:er|)ont|fu(?:r|ss)ent) +({w_2})  @@0,w,$
 11292  11292       <<- not re.search("(?i)^légion$", \3)
 11293  11293           and ((morphex(\3, ":[AQ].*:f", ":[GWme]") and morphex(\2, ":m", ":[Gfe]")) or (morphex(\3, ":[AQ].*:m", ":[GWfe]") and morphex(\2, ":f", ":[Gme]")))
 11294  11294           and not ( morph(\3, ":p", False) and morph(\2, ":s", False) )
 11295  11295           and not morph(word(-1), ":(?:R|P|Q|Y|[123][sp])", False, False) and not before(r"\b(?:et|ou|de) +$")
................................................................................
 11322  11322   TEST: Martine n’est pas {{marié}}.
 11323  11323   TEST: Martine est très {{intelligent}}.
 11324  11324   TEST: Martine n’est pas très {{intelligent}}.
 11325  11325   TEST: Pierre est {{dominée}} par son adversaire.
 11326  11326   
 11327  11327   
 11328  11328   
 11329         -!!!! Accords avec l’adjectif précédant le pronom                                                    
        11329  +!!!! Accords avec l’adjectif précédant le pronom                                                  !!
 11330  11330   
 11331  11331   __[i]/ppas(ppas_adj_accord_je_tu)__
 11332  11332       ^ *({w_2}s),? (je?|tu)  @@*,$
 11333  11333       <<- morphex(\1, ":A.*:p", ":(?:G|E|M1|W|s|i)")
 11334  11334       -1>> =suggSing(@)                                                       # Si cet adjectif se réfère au pronom « \2 », l’adjectif devrait être au singulier (et accordé en genre).
 11335  11335   
 11336  11336   TEST: {{Découragés}}, je suis parti.
................................................................................
 11382  11382   TEST: Elles se sont {{rendues}} compte
 11383  11383   TEST: La puissance publique s’en est-elle rendu compte ?
 11384  11384   
 11385  11385   
 11386  11386   
 11387  11387   !!
 11388  11388   !!
 11389         -!!!! Inversion verbe/sujet                                                                          
        11389  +!!!! Inversion verbe/sujet                                                                        !!
 11390  11390   !!
 11391  11391   !!
 11392  11392   __[i]/ppas(ppas_inversion_être_je)__
 11393  11393       (?:s[ou]is|étais|fus(?:sé|)|serais?)-je +({w_2})  @@$
 11394  11394       <<- morphex(\1, ":(?:[123][sp]|Y|[NAQ].*:p)", ":[GWsi]")
 11395  11395       -1>> =suggSing(@)                                                        # Accord avec le sujet « je » : « \1 » devrait être au singulier.
 11396  11396   __[i]/ppas(ppas_inversion_être_tu)__
................................................................................
 11438  11438   TEST: Ne sommes-nous pas {{aveugle}}
 11439  11439   TEST: Que se sont-ils dit ?
 11440  11440   TEST: Est-il question de ceci ou de cela ?
 11441  11441   TEST: Est-ce former de futurs travailleurs ou bien des citoyens
 11442  11442   
 11443  11443   
 11444  11444   
 11445         -## Accord et incohérences 
        11445  +## Accord et incohérences
 11446  11446   __[i]/ppas(ppas_sont)__
 11447  11447       sont ({w_2})  @@5
 11448  11448       <<- morphex(\1, ":[NAQ]", ":[QWGBMpi]") and not re.search("(?i)^(?:légion|nombre|cause)$", \1) and not before(r"(?i)\bce que?\b")
 11449  11449       -1>> =suggPlur(@)               # Incohérence : « \1 » est au singulier. Ou vous confondez « sont » et « son », ou l’accord en nombre est incorrect.
 11450  11450       <<- __else__ and morphex(\1, ":V", ":(?:N|A|Q|W|G|3p)") and not before(r"(?i)\bce que?\b")
 11451  11451       -1>> =suggVerbPpas(\1, ":m:p")  # Incohérence : « \1 » n’est pas un participe passé.
 11452  11452   
 11453  11453   TEST: après avoir mis à jour sont {{profile}}.
 11454  11454   
 11455  11455   
 11456  11456   
 11457  11457   !!
 11458  11458   !!
 11459         -!!!! Se croire/considérer/montrer/penser/révéler/savoir/sentir/voir/vouloir + participe passé/adj   
        11459  +!!!! Se croire/considérer/montrer/penser/révéler/savoir/sentir/voir/vouloir + participe passé/adj !!
 11460  11460   !!
 11461  11461   !!
 11462  11462   
 11463  11463   __[i]/ppas(ppas_je_me_verbe)__
 11464  11464       je +(?:ne +|)me +((?:s[eauû]|montr|pens|rév|v[oiîe])\w+) +({w_2})  @@w,$
 11465  11465       <<- morph(\1, ">(?:montrer|penser|révéler|savoir|sentir|voir|vouloir)/", False) and morphex(\2, ":[NAQ].*:p", ":[GWYsi]")
 11466  11466       -2>> =suggSing(@)                                                        # Accord avec le sujet « je » : « \2 » devrait être au singulier.
................................................................................
 11596  11596   TEST: mais les considérer uniquement ainsi fait perdre la signification politique de leur geste.
 11597  11597   TEST: nous considérer ainsi fait le lit de la haine…
 11598  11598   
 11599  11599   
 11600  11600   
 11601  11601   !!
 11602  11602   !!
 11603         -!!!! Avoir + participes passés                                                                      
        11603  +!!!! Avoir + participes passés                                                                    !!
 11604  11604   !!
 11605  11605   !!
 11606  11606   
 11607  11607   #__[i]/conj__  fait(s|e|es) ({w1}) <<- morph(\2, ":V") and not morph(\2, ":Y")
 11608  11608   #   ->> fait \1                      # Le participe passé de faire reste au masculin singulier s’il est suivi par un verbe à l’infinitif.
 11609  11609   
 11610  11610   __[i](p_les_avoir_fait_vinfi)__
................................................................................
 11749  11749   TEST: c’est vous qui m’avez {{convertit}}.
 11750  11750   TEST: parce que t’as envie que je le fasse
 11751  11751   
 11752  11752   
 11753  11753   
 11754  11754   !!
 11755  11755   !!
 11756         -!!!! COD précédant que                                                                                  
        11756  +!!!! COD précédant que                                                                            !!
 11757  11757   !!
 11758  11758   !!
 11759  11759   
 11760  11760   __[i]/ppas(ppas_det_plur_COD_que_avoir)__
 11761  11761       ([ldmtsc]es) +({w_2}) +que? +(?:j’|tu |ils? |[nv]ous |elles? |on ) *(?:ne +|n’|)({avoir}) +({w_2}[éiust]e?)(?! [mts]’)  @@0,w,w,$
 11762  11762       <<- morph(\3, ":V0a", False)
 11763  11763           and not ((re.search("^(?:décidé|essayé|tenté|oublié)$", \4) and after(" +d(?:e |’)")) or (re.search("^réussi$", \4) and after(" +à")))
................................................................................
 11822  11822       <<- __also__ and \1 == "a" and \2.endswith("r") and not before(r"(?i)\b(?:[mtn]’|il +|on +|elle +)$")
 11823  11823       -1>> à                                                                                          # Confusion probable : “a” est une conjugaison du verbe avoir. Pour la préposition, écrivez :
 11824  11824   
 11825  11825   TEST: Avoir {{marcher}} toute la journée m’a épuisée.
 11826  11826   
 11827  11827   
 11828  11828   
 11829         -!!!! du / dû                                                                                        
        11829  +!!!! du / dû                                                                                      !!
 11830  11830   
 11831  11831   __[i]/ppas(ppas_avoir_dû_vinfi)__
 11832  11832       ({avoir}) +(due?s?) +(?:[mts]’|)({w_2})  @@0,w,$
 11833  11833       <<- morph(\1, ":V0a", False) and (morph(\3, ":Y") or re.search("^(?:[mtsn]e|[nv]ous|leur|lui)$", \3))
 11834  11834       -2>> dû                                                                                         # Participe passé de devoir : « dû ».
 11835  11835   
 11836  11836   __[i]/ppas(ppas_avoir_pronom_du_vinfi)__
................................................................................
 11866  11866   TEST: Ont-ils {{signer}} le contrat ?
 11867  11867   TEST: Ai-je déjà {{signez}} le contrat ?
 11868  11868   TEST: A-t-il déjà {{signer}} le contrat ?
 11869  11869   
 11870  11870   
 11871  11871   !!
 11872  11872   !!
 11873         -!!!! Participes passés avec formes interrogatives                                                   
        11873  +!!!! Participes passés avec formes interrogatives                                                 !!
 11874  11874   !!
 11875  11875   !!
 11876  11876   
 11877  11877   __[i]/ppas(ppas_avoir_pronom1)__
 11878  11878       (?<![ltm]’)({avoir})[- ](?:je|tu|ils?|elles?|t-(?:ils?|elles?|on)|on) +({w2})  @@0,$
 11879  11879       <<- morph(\1, ":V0a", False) and morphex(\2, ":(?:Y|2p|Q.*:[fp])", ":m:[si]") and \2 != "prise"
 11880  11880           and not morph(word(-1), ">(?:les|[nv]ous|en)|:[NAQ].*:[fp]", False) and not before(r"(?i)\b(?:quel(?:le|)s?|combien) ")
................................................................................
 11886  11886       <<- morph(\1, ":V0a", False) and morphex(\2, ":(?:Y|2p|Q.*:[fp])", ":m:[si]") and \2 != "prise"
 11887  11887           and not morph(word(-1), ">(?:les|[nv]ous|en)|:[NAQ].*:[fp]", False) and not before(r"(?i)\b(?:quel(?:le|)s?|combien) ")
 11888  11888       -2>> =suggMasSing(@)
 11889  11889       # Avec « avoir », il faut un participe passé au masculin singulier.
 11890  11890   
 11891  11891   __[i]/ppas(ppas_l_m_t_avoir_pronom)__
 11892  11892       ([ltm]’)({avoir})[- ](?:je|tu|ils?|elles?|t-(?:ils?|elles?|on)|[nv]ous|on) +({w2}s)  @@0,2,$
 11893         -    <<- morph(\2, ":V0a", False) and morphex(\3, ":(?:Y|2p|Q.*:p)", ":[si]") 
        11893  +    <<- morph(\2, ":V0a", False) and morphex(\3, ":(?:Y|2p|Q.*:p)", ":[si]")
 11894  11894       -3>> =suggMasSing(@)
 11895  11895       # Accord avec le COD « \1 » : e participe passé « \2 » devrait être au singulier (et accordé en genre).
 11896  11896   
 11897  11897   __[i]/ppas(ppas_les_avoir_pronom)__
 11898  11898       les +({avoir})-(?:je|tu|ils?|elles?|t-(?:ils?|elles?|on)|[nv]ous|on) +({w_1}(?:[éiut]e?|is|se))  @@w,$
 11899  11899       <<- morph(\1, ":V0a", False) and morphex(\2, ":V[123]..t.*:Q.*:s", ":[GWpi]")
 11900  11900       -2>> =suggPlur(@)
................................................................................
 11933  11933   
 11934  11934   
 11935  11935   __[i]/conj(conj_vous_verbe2)__
 11936  11936       vous [nm](?:e +(?:les? |l’|la |[nv]ous |)|’)({w_3})  @@$
 11937  11937       <<- morphex(\1, ":V", ":2p") and isStart() -1>> =suggVerb(@, ":2p")         # Conjugaison erronée. Accord avec « vous ». Le verbe devrait être à la 2ᵉ personne du pluriel.
 11938  11938   
 11939  11939   TEST: vous ne l’{{avait}} pas vu.
 11940         -TEST: je crois, vous m’{{avais}} trompé… 
        11940  +TEST: je crois, vous m’{{avais}} trompé…
 11941  11941   
 11942  11942   
 11943  11943   ## se + incohérence
 11944  11944   __[i]/conj(conj_se_incohérence)__
 11945  11945       s(?:e +(?:les? +|la +|)|’(?:en +|y +|))({w_2}(?:e[zs]|ons|is|us))  @@$
 11946  11946       <<- morphex(\1, ":2s", ":3[sp]") -1>> =suggVerb(@, ":3s")                   # Incohérence. Avec le pronom “se”, le verbe ne peut être à la deuxième personne du pluriel.
 11947  11947       <<- __else__ and morphex(\1, ":1p", ":3[sp]") -1>> =suggVerb(@, ":3p")      # Incohérence. Avec le pronom “se”, le verbe ne peut être à la deuxième personne du pluriel.
................................................................................
 11950  11950   TEST: se {{considérez}} comme un génie…
 11951  11951   TEST: se {{rencontrerons}} demain grands et petits.
 11952  11952   TEST: se {{crois}} élu par Dieu…
 11953  11953   TEST: avec ceux se trouvant sur leur chemin
 11954  11954   
 11955  11955   
 11956  11956   
 11957         -!!!! Confusions ou/où                                                                               
        11957  +!!!! Confusions ou/où                                                                             !!
 11958  11958   
 11959  11959   __[i]/conf(conf_det_nom_où_pronom)__
 11960  11960       ^ *(?:l(?:es? +|a +|’)|[nv]o(?:s|tre) +|ce(?:t|tte|s|) +|[mts](?:es|on|a) +|des +)({w_2}) +(ou) +(?:je|tu|ils?|elles? +> +\w+|[nv]ous +> +\w+)  @@w,w
 11961  11961       <<- morphex(\1, ":[NAQ]", ":G")
 11962  11962       -2>> où                                                                         # Confusion probable. Pour évoquer un lieu ou un moment, écrivez :|http://fr.wiktionary.org/wiki/o%C3%B9
 11963  11963   
 11964  11964   TEST: L’hôtel {{ou}} ils sont allés l’été dernier.
 11965  11965   
 11966  11966   
 11967  11967   
 11968  11968   
 11969  11969   !!!
 11970  11970   !!!
 11971         -!!! Processeur avant impératif                                                                      
        11971  +!!! Processeur avant impératif                                                                    !!
 11972  11972   !!!
 11973  11973   !!!
 11974  11974   
 11975  11975   __<i>(p_n_importe_qui_quoi)__       n(’)importe quo?i @@1 <<- ~1>> `
 11976  11976   
 11977  11977   
 11978  11978   __<i](p_premier_ne_pro_per_obj1)__
................................................................................
 12009  12009   TEST: Ne manquer de rien.
 12010  12010   TEST: Ne jamais miser sur ces tocards.
 12011  12011   TEST: Ne m’en rien laisser.
 12012  12012   
 12013  12013   
 12014  12014   !!
 12015  12015   !!
 12016         -!!!! Impératif !                                                                                    
        12016  +!!!! Impératif !                                                                                  !!
 12017  12017   !!
 12018  12018   !!
 12019  12019   
 12020  12020   # Confusions
 12021  12021   __[i]/imp(imp_confusion_2e_pers_pluriel)__
 12022  12022       ({w_2}(?:er|ai[st]|ée?s?)) (moi|l(?:es?|a|eur|ui)|nous|vous)  @@0,$
 12023  12023       <<- morph(\1, ":V", False) and isStart() >>>
................................................................................
 12142  12142   TEST: {{Vas}} au diable !
 12143  12143   TEST: {{Écartes}} de moi cette coupe.
 12144  12144   TEST: explique-{{leurs}} de quoi il est question.
 12145  12145   
 12146  12146   
 12147  12147   !!
 12148  12148   !!
 12149         -!!!! Impératif: traits d’union manquants                                                            
        12149  +!!!! Impératif: traits d’union manquants                                                          !!
 12150  12150   !!
 12151  12151   !!
 12152  12152   
 12153  12153   __[i]/imp(imp_union_moi_toi)__
 12154  12154       (?<!’)({w_2}) ([mt]oi)(?! même)  @@0,$
 12155  12155       <<- morphex(\1, ":E", ":[GM]")
 12156  12156       ->> \1-\2
................................................................................
 12263  12263   TEST: {{vas y}}, ce n’est pas dangereux
 12264  12264   TEST: {{convenez en}}, c’est une belle affaire malgré son prix élevé
 12265  12265   
 12266  12266   
 12267  12267   
 12268  12268   !!!
 12269  12269   !!!
 12270         -!!! Processeur: destruction des pronoms qui précèdent un verbe et de l’adverbe de négation “ne”.    
        12270  +!!! Processeur: destruction des pronoms qui précèdent un verbe et de l’adverbe de négation “ne”.  !!
 12271  12271   !!!
 12272  12272   !!!
 12273  12273   
 12274  12274   # Brainfuck (ici, prudence !)
 12275  12275   __[i](p_pro_per_obj01)__
 12276  12276       (ne +(?:l(?:ui|eur|a|es?)|[mts]e|[nv]ous) +(?:l(?:a|es?|ui|eur)|en|y)) +({w_1})  @@0,$
 12277  12277       <<- morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)")
................................................................................
 12411  12411       <<- __also__ ~1>> *
 12412  12412   # Fin du Brainfuck
 12413  12413   
 12414  12414   
 12415  12415   
 12416  12416   !!
 12417  12417   !!
 12418         -!!!! Confusions                                                                                     
        12418  +!!!! Confusions                                                                                   !!
 12419  12419   !!
 12420  12420   !!
 12421  12421   
 12422  12422   #### CONFUSION a / à
 12423  12423   __[i]/conf(conf_pronom_verbe_à)__
 12424  12424       ^ *(?:je|tu|ils?|on|elles?) +({w_2}) +(a)  @@w,$
 12425  12425       <<- morph(\1, ":V", False) and \2 != "A"
................................................................................
 12454  12454   TEST: La révolution est crainte.
 12455  12455   TEST: Je n’en ai cure.
 12456  12456   TEST: Notre communauté vous est redevable.
 12457  12457   TEST: l’humour est affaire de culture
 12458  12458   TEST: Aller chercher l’air pur à la campagne est peine perdue.
 12459  12459   
 12460  12460   
 12461         -#### CONFUSION veillez/veuillez                                                                     
        12461  +#### CONFUSION veillez/veuillez
 12462  12462   
 12463  12463   __[i]/conf(conf_veillez2)__
 12464  12464       (veuillez) +à +(ne|{infi})  @@0,$
 12465  12465       <<- isStart() and morph(\2, ":Y|>ne/", False) -1>> veillez          # Confusion probable : “veuillez” est une forme conjuguée du verbe “vouloir”.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=1939
 12466  12466   
 12467  12467   TEST: {{Veuillez}} à ne pas tomber dans ce piège.
 12468  12468   TEST: Et {{veuillez}} surtout à ouvrir grand les yeux.
................................................................................
 12487  12487   TEST: Veillez à éviter de faire des fautes.
 12488  12488   TEST: Veillez votre mari qui est malade.
 12489  12489   
 12490  12490   
 12491  12491   
 12492  12492   !!
 12493  12493   !!
 12494         -!!!! Infinitif                                                                                      
        12494  +!!!! Infinitif                                                                                    !!
 12495  12495   !!
 12496  12496   !!
 12497  12497   
 12498  12498   __[i]/infi(infi_comment_où)__
 12499  12499       (?:comment|où) +({w_2}(?:ée?s?|ez))  @@$
 12500  12500       <<- morphex(\1, ":V", ":M") and not (\1.endswith("ez") and after(" +vous"))
 12501  12501       -1>> =suggVerbInfi(@)                                                                           # Le verbe devrait être à l’infinitif.
................................................................................
 12591  12591   TEST: ils sont {{tromper}} par tous ces hypocrites.
 12592  12592   TEST: Jeûner n’est pas seulement cesser de manger.
 12593  12593   TEST: Ne pas aimer n’est pas oublier l’autre.
 12594  12594   
 12595  12595   
 12596  12596   !!
 12597  12597   !!
 12598         -!!!! Conjugaison                                                                                    
        12598  +!!!! Conjugaison                                                                                  !!
 12599  12599   !!
 12600  12600   !!
 12601  12601   
 12602  12602   ## 1sg
 12603  12603   __[i]/conj(conj_j)__
 12604  12604       j’({w_1})  @@2
 12605  12605       <<- morphex(\1, ":V", ":1s|>(?:en|y)/") >>>
................................................................................
 12843  12843   TEST: un des hommes qui vient.
 12844  12844   TEST: une des dames qui se sentent mal à l’aise dans cet avion est venue nous trouver.
 12845  12845   TEST: l’un des chants les plus diffusés pendant la Révolution culturelle
 12846  12846   
 12847  12847   
 12848  12848   __[i]/conj(conj_infi)__
 12849  12849       ^ *({infi}) +({w_2})  @@*,$
 12850         -    <<- morph(\1, ":Y", False) and morph(\2, ":V.[a-z_!?]+(?!.*:(?:3s|P|Q|Y|3p!))") 
        12850  +    <<- morph(\1, ":Y", False) and morph(\2, ":V.[a-z_!?]+(?!.*:(?:3s|P|Q|Y|3p!))")
 12851  12851       -2>> =suggVerb(@, ":3s")                                 # Conjugaison erronée. Accord avec « \1… ». Le verbe devrait être à la 3ᵉ personne du singulier.
 12852  12852   
 12853  12853   TEST: manger {{fais}} grossir.
 12854  12854   TEST: boire immodérément {{nuis}} à la santé
 12855  12855   
 12856  12856   
 12857  12857   __[i]/conj(conj_det_sing_nom)__
................................................................................
 13143  13143       -2>> =suggVerb(@, ":3p")                                # Conjugaison erronée. Accord avec « des \1… ». Le verbe devrait être à la 3ᵉ personne du pluriel.
 13144  13144   
 13145  13145   TEST: Des hommes {{arrive}}.
 13146  13146   TEST: Des femmes ne {{demande}} rien.
 13147  13147   TEST: des femmes qui {{conduise}} la marche du monde.
 13148  13148   
 13149  13149   
 13150         -!!!! Quel(le) que soit / quel(le)s que soient                                                       
        13150  +!!!! Quel(le) que soit / quel(le)s que soient                                                     !!
 13151  13151   
 13152  13152   # singulier
 13153  13153   __[i]/conj(conj_quel_quelle_que_3sg1)__
 13154  13154       quel(?:le|)s? que ([sf]\w+) +(?:l[ea]|ce(?:t|tte|)|[mts](?:a|on)|[nv]otre|leur)  @@w
 13155  13155       <<- morphex(\1, ":V0e", ":3s")
 13156  13156       -1>> =suggVerb(@, ":3s")                                                             # Conjugaison erronée. Mettez “être” à la 3ᵉ personne du singulier.
 13157  13157   
................................................................................
 13220  13220   TEST: Samantha et Eva {{viennes}} demain.
 13221  13221   TEST: Samantha et Eva leur {{décrive}} une leçon.
 13222  13222   
 13223  13223   
 13224  13224   
 13225  13225   !!
 13226  13226   !!
 13227         -!!!! Inversion verbe sujet                                                                          
        13227  +!!!! Inversion verbe sujet                                                                        !!
 13228  13228   !!
 13229  13229   !!
 13230  13230   
 13231  13231   __[i]/conj(conj_que_où_comment_verbe_sujet_sing)__
 13232  13232       (?: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,$
 13233  13233       <<- 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) )")
 13234  13234       -1>> =suggVerb(@, ":3s")                                                        # Conjugaison erronée. Accord avec « \2 \3… ». Le verbe devrait être à la 3ᵉ personne du singulier.
................................................................................
 13299  13299   TEST: {{puisse}} les hommes enfin comprendre leurs erreurs.                         ->> puissent
 13300  13300   TEST: {{puisses}} notre ennemi trembler de peur devant notre courage.               ->> puisse
 13301  13301   
 13302  13302   
 13303  13303   
 13304  13304   !!
 13305  13305   !!
 13306         -!!!! Formes interrogatives ?                                                                        
        13306  +!!!! Formes interrogatives ?                                                                      !!
 13307  13307   !!
 13308  13308   !!
 13309  13309   
 13310  13310   __[i]/inte(inte_union_xxxe_je)__
 13311  13311       (?<![jJ]’)({w_2}[éèe]) je  @@0
 13312  13312       <<- morphex(\1, ":V.*:1[sŝś]", ":[GNW]") and not before(r"(?i)\bje +$") and morphex(word(1), ":", ":(?:Oo|X|1s)", True)
 13313  13313       ->> =\1[:-1]+"é-je"                                                                             # Forme interrogative ? Mettez un trait d’union.
................................................................................
 13429  13429       -1>> =suggSimil(\1, ":3p", False)                                                               # Forme interrogative : « \1 » n’est pas un verbe à la 3ᵉ personne du pluriel.
 13430  13430   
 13431  13431   TEST: {{attaquant}}-ils                                     ->> attaquent
 13432  13432   TEST: {{prendrons}}-elles un verre avec moi ?
 13433  13433   
 13434  13434   
 13435  13435   
 13436         -!!!! Verbe auxiliaire                                                                               
        13436  +!!!! Verbe auxiliaire                                                                             !!
 13437  13437   
 13438  13438   __[i]/conf(conf_avoir_sujet_participe_passé)__
 13439  13439       ({avoir})-(?:je|tu|ils?|elles?|on) +({ppas})  @@0,$
 13440  13440       <<- 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”.
 13441  13441   __[i]/conf(conf_sujet_avoir_participe_passé)__
 13442  13442       (?:j’|je |tu |ils? |elles? |on ) *({avoir}) +({ppas})  @@*,$
 13443  13443       <<- 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”.
................................................................................
 13451  13451   
 13452  13452   
 13453  13453   
 13454  13454   @@@@
 13455  13455   @@@@
 13456  13456   @@@@
 13457  13457   @@@@
 13458         -@@@@GRAPH: last_graph                                                                               
        13458  +@@@@GRAPH: last_graph
 13459  13459   @@@@
 13460  13460   @@@@
 13461  13461   @@@@
 13462  13462   @@@@
 13463  13463   
 13464  13464   
 13465  13465   !!
 13466  13466   !!
 13467         -!!!! Modes verbaux                                                                                  
        13467  +!!!! Modes verbaux                                                                                !!
 13468  13468   !!
 13469  13469   !!
 13470  13470   
 13471  13471   # conditionnel / futur
 13472  13472   
 13473  13473   __vmode_j_aimerais_vinfi__
 13474  13474       [<start>|,]  [je|j’]  [aimerai|préférerai|préfèrerai|apprécierai|voudrai|souhaiterai|désirerai|adorerai]  @:[YX]|>(?:y|ne|que?)/¬:R
................................................................................
 13542  13542   __vmode_qqch_que_subjonctif2__
 13543  13543       à       condition   [que|qu’|qu]    @:(?:Os|M)      @:I¬:[GYS]
 13544  13544       pour    peu         [que|qu’|qu]    @:(?:Os|M)      @:I¬:[GYS]
 13545  13545       il      peut        [que|qu’|qu]    @:(?:Os|M)      @:I¬:[GYS]
 13546  13546           <<- /vmode/ -5>> =suggVerbMode(\5, ":S", \4)                                                    # Ce verbe devrait être au subjonctif.
 13547  13547   
 13548  13548   TEST: à condition qu’il {{finit}} son boulot.
 13549         -TEST: pour peu qu’il {{prend}} son devoir sérieux… 
        13549  +TEST: pour peu qu’il {{prend}} son devoir sérieux…
 13550  13550   TEST: il se peut que nous {{avons}} tort.
 13551  13551   
 13552  13552   
 13553  13553   # Bien que + subjonctif
 13554  13554   __vmode_bien_que_subjonctif__
 13555  13555       [<start>|,]  bien  [que|qu’|qu]  @:(?:Os|M)  @:I¬:(?:[GSK]|If|V0a)|>(?:hériter|recevoir|donner|offrir)/
 13556  13556           <<- /vmode/ -5>> =suggVerbMode(\5, ":S", \1)                                                # Après « bien que », le verbe s’emploie au subjonctif.
................................................................................
 13604  13604           <<- /vmode/ -3>> =suggVerbMode(\3, ":I", \2)                                                # Après « quand » ou « lorsque », le verbe ne s’emploie pas au subjonctif mais à l’indicatif.
 13605  13605   
 13606  13606   TEST: quand elle {{rencontrât}} son créateur
 13607  13607   TEST: lorsqu’il y {{eût}} du grabuge, nous montâmes tous sur le pont.
 13608  13608   
 13609  13609   
 13610  13610   @@@@
 13611         -@@@@END_GRAPH                                                                                       
        13611  +@@@@END_GRAPH
 13612  13612   @@@@
 13613  13613   
 13614  13614   
 13615  13615   
 13616  13616   @@@@
 13617  13617   @@@@
 13618  13618   @@@@
 13619  13619   @@@@
 13620         -@@@@GRAPH: test                                                                                     
        13620  +@@@@GRAPH: test
 13621  13621   @@@@
 13622  13622   @@@@
 13623  13623   @@@@
 13624  13624   @@@@
 13625  13625   
 13626  13626   __code_legacy__
 13627  13627       legacy code
................................................................................
 13645  13645           <<- ~2>> *
 13646  13646   
 13647  13647   TEST: Ça me fait {{plaisirs}}.
 13648  13648   
 13649  13649   
 13650  13650   
 13651  13651   @@@@
 13652         -@@@@END_GRAPH                                                                                       
        13652  +@@@@END_GRAPH
 13653  13653   @@@@
 13654  13654   
 13655  13655   
 13656  13656   !!
 13657  13657   !!
 13658  13658   !!
 13659  13659   !!
................................................................................
 13669  13669   !!
 13670  13670   !!
 13671  13671   !!
 13672  13672   !!
 13673  13673   !!
 13674  13674   !!
 13675  13675   !!
 13676         -!! TESTS: Faux positifs potentiels                                                                  
        13676  +!! TESTS: Faux positifs potentiels                                                                !!
 13677  13677   !!
 13678  13678   !!
 13679  13679   !!
 13680  13680   !!
 13681  13681   !!
 13682  13682   !!
 13683  13683   !!
................................................................................
 13692  13692   !!
 13693  13693   !!
 13694  13694   !!
 13695  13695   !!
 13696  13696   !!
 13697  13697   !!
 13698  13698   
 13699         -!!! À trier                                                                                         
        13699  +!!! À trier                                                                                       !!
 13700  13700   TEST: L’homme sur le bateau de Patrick {{viens}} de temps en temps {{mangé}} chez moi.
 13701  13701   TEST: Ces marchands {{passe}} leur temps à se quereller.
 13702  13702   TEST: Ils jugeront en toute impartialité de ce cas {{délirante}}.
 13703  13703   TEST: Ils sont de manière si étonnante et si admirable {{arrivé}} à ce résultat…
 13704  13704   TEST: Les tests grand public de Jean-Paul {{montre}} des résultats surprenants.
 13705  13705   TEST: Ils ont à plusieurs reprises {{perdus}} leur sang-froid.
 13706  13706   TEST: Ces attaques à main armée {{donne}} la chair de poule.
................................................................................
 13731  13731   TODO: Des copains plus vieux que moi qui fumaient.
 13732  13732   TODO: Des copains plus vieux que toi qui fumaient.
 13733  13733   TODO: André Juin était un sculpteur français.
 13734  13734   TODO: La bataille de Monte Cassino révèle le génie militaire du général Juin.
 13735  13735   TODO: Les côtes sont dans leur ensemble extrêmement découpées.
 13736  13736   
 13737  13737   
 13738         -!!! Indécidable                                                                                     
        13738  +!!! Indécidable                                                                                   !!
 13739  13739   TEST: Du sable fin grippe les rouages (accord avec ce qui précède).
 13740  13740   TEST: Du monde noir sortent les envahisseurs (accord avec ce qui suit).
 13741  13741   
 13742         -!!! Autres tests                                                                                    
        13742  +!!! Autres tests                                                                                  !!
 13743  13743   TEST: Ça a l’air de t’aller.
 13744  13744   TEST: Et je m’en sors.
 13745  13745   TEST: C’est à chacun d’entre nous de suivre le modèle d’Amos.
 13746  13746   TEST: C’est toi qui voulais y aller.
 13747  13747   TEST: je ne suis qu’une joueuse en robe de soirée.
 13748  13748   TEST: Tu ne fais qu’aggraver les choses.
 13749  13749   TEST: Que veut-il ? Vous parler du boulot.
................................................................................
 13800  13800   TEST: Enfin, les thèmes de la nouvelle réforme ont été longuement débattus.
 13801  13801   TEST: Le moral des ménages au plus haut depuis 2007
 13802  13802   TEST: Ce qu’ils nous ont fait
 13803  13803   TEST: Comment vous expliquez ça ?
 13804  13804   TEST: Comment vous expliquer ça ?
 13805  13805   
 13806  13806   
 13807         -!!! Tests historiques                                                                               
        13807  +!!! Tests historiques                                                                             !!
 13808  13808   
 13809  13809   ## Version 0.5.14
 13810  13810   TEST: par le léger tissu de rayonne qui les protégeait en ce moment.
 13811  13811   
 13812  13812   ## Version 0.5.11
 13813  13813   TEST: Un moteur à cylindrée fixe
 13814  13814   
................................................................................
 14576  14576   TEST: Je soussigné Pierre Dupont déclare avoir pris connaissance des conditions de ce contrat.
 14577  14577   TEST: J’ai mille cent timbres.
 14578  14578   TEST: À qui mieux mieux, à qui mieux mieux
 14579  14579   TEST: L’est est loin, la gare de l’est aussi.
 14580  14580   
 14581  14581   
 14582  14582   
 14583         -!!! Tests repris de LanguageTool                                                                    
        14583  +!!! Tests repris de LanguageTool                                                                  !!
 14584  14584   ## NOTE : ces textes contiennent parfois des erreurs (corrigées quand repérées par le correcteur)
 14585  14585   
 14586  14586   TEST: Au voisinage du zéro absolu de température.
 14587  14587   TEST: La couronne périphérique alterne falaises abruptes et plages.
 14588  14588   TEST: Henri VIII rencontre François Iᵉʳ.
 14589  14589   TEST: à ce jour.
 14590  14590   TEST: avoir un bel avenir
................................................................................
 16641  16641   TEST: Le 29 février 2008.
 16642  16642   TEST: Le 29 février 2012.
 16643  16643   TEST: Le 29 février 2016.
 16644  16644   TEST: Le 29 février 2020.
 16645  16645   TEST: Le 29-février-2004
 16646  16646   
 16647  16647   
 16648         -!!! Le Horla, de Guy de Maupassant                                                                  
        16648  +!!! Le Horla, de Guy de Maupassant                                                                !!
 16649  16649   # Nouvelle intégrale (228 lignes)
 16650  16650   # Certains points diffèrent du texte original tiré de Wikisource :
 16651  16651   # — les paragraphes sont souvent scindés pour des raisons pratiques.
 16652  16652   # — les virgules avant les points de suspension ont été supprimées
 16653  16653   # — moyen âge -> Moyen Âge
 16654  16654   TEST: Le Horla — Guy de Maupassant
 16655  16655   TODO: 8 mai. — Quelle journée admirable ! J’ai passé toute la matinée {{étendu}} sur l’herbe, devant ma maison, sous l’énorme platane qui la couvre, l’abrite et l’ombrage tout entière.
................................................................................
 17013  17013   TEST: Pourquoi ce corps transparent, ce corps inconnaissable, ce corps d’Esprit, s’il devait craindre, lui aussi, les maux, les blessures, les infirmités, la destruction prématurée ?
 17014  17014   TEST: La destruction prématurée ? toute l’épouvante humaine vient d’elle !
 17015  17015   TEST: Après l’homme le Horla. — Après celui qui peut mourir tous les jours, à toutes les heures, à toutes les minutes, par tous les accidents, est venu celui qui ne doit mourir qu’à son jour, à son heure, à sa minute, parce qu’il a touché la limite de son existence !
 17016  17016   TEST: Non… non… sans aucun doute, sans aucun doute… il n’est pas mort… Alors… alors… il va donc falloir que je me tue, moi !…
 17017  17017   # FIN DU HORLA
 17018  17018   
 17019  17019   
 17020         -!!! Double assassinat dans la rue morgue, d’Edgar Poe                                               
        17020  +!!! Double assassinat dans la rue morgue, d’Edgar Poe                                             !!
 17021  17021   # Texte tiré de Wikisource
 17022  17022   # Les paragraphes ont été découpés pour réduire la longueur des tests.
 17023  17023   TEST: DOUBLE ASSASSINAT DANS LA RUE MORGUE — Edgar Poe
 17024  17024   TEST: Quelle chanson chantaient les sirènes ? quel nom Achille avait-il pris, quand il se cachait parmi les femmes ? – Questions embarrassantes, il est vrai, mais qui ne sont pas situées au-delà de toute conjecture.
 17025  17025   TEST: Sir Thomas Browne.
 17026  17026   TODO: Les facultés de l’esprit qu’on définit par le terme {{analytiques}} sont en elles-mêmes fort peu susceptibles d’analyse.
 17027  17027   TEST: Nous ne les apprécions que par leurs résultats. Ce que nous en savons, entre autres choses, c’est qu’elles sont pour celui qui les possède à un degré extraordinaire une source de jouissances des plus vives.
................................................................................
 17557  17557   TEST: Néanmoins, qu’il n’ait pas pu débrouiller ce mystère, il n’y a nullement lieu de s’en étonner, et cela est moins singulier qu’il ne le croit ; car, en vérité, notre ami le préfet est un peu trop fin pour être profond. Sa science n’a pas de base.
 17558  17558   TEST: Elle est tout en tête et n’a pas de corps, comme les portraits de la déesse Laverna, – ou, si vous aimez mieux, tout en tête et en épaules, comme une morue.
 17559  17559   TEST: Mais, après tout, c’est un brave homme. Je l’adore particulièrement pour un merveilleux genre de cant auquel il doit sa réputation de génie.
 17560  17560   TEST: Je veux parler de sa manie de nier ce qui est, et d’expliquer ce qui n’est pas[2].
 17561  17561   # FIN DU DOUBLE ASSASSINAT DANS LA RUE MORGUE
 17562  17562   
 17563  17563   
 17564         -!!! Vers Dorés, de Pythagore                                                                        
        17564  +!!! Vers Dorés, de Pythagore                                                                      !!
 17565  17565   # Origine?
 17566  17566   TEST: Aux dieux, suivant les lois, rends de justes hommages ;
 17567  17567   TEST: Respecte le serment, les héros et les sages ;
 17568  17568   TEST: Honore tes parents, tes rois, tes bienfaiteurs ;
 17569  17569   TEST: Choisi parmi tes amis les hommes les meilleurs.
 17570  17570   TEST: Sois obligeant et doux, sois facile en affaires.
 17571  17571   TEST: Ne hais pas ton ami pour des fautes légères ;
................................................................................
 17657  17657   TEST: XXX. Mais abstiens-toi des aliments que je t’ai défendus. Apprends à discerner ce qui est nécessaire dans la purification et la délivrance de l’âme. Examine tout ; donne à ta raison la première place et, content de te laisser conduire, abandonne-lui les rênes.
 17658  17658   TEST: XXXI. Ainsi, quand tu auras quitté les dépouilles mortelles, tu monteras dans l’air libre ; tu deviendras un dieu immortel et la mort n’aura plus d’empire sur toi.
 17659  17659   TEST: Fin des vers dorés de Pythagore
 17660  17660   TEST: Note : Chez les Pythagoriciens, la monade ou l’unité représente Dieu-même, parce qu’elle n’est engendrée par aucun nombre, qu’elle les engendre tous, qu’elle est simple et sans aucune composition. La dyade, ou le nombre deux, est l’image de la nature créée, parce qu’elle est le premier produit de l’unité, parce qu’elle est inspirée, parce qu’ayant des parties elle peut se décomposer et se défendre. La monade et la dyade réunies forment le ternaire, et représentent l’immensité de tout ce qui existe, l’être immuable et la matière altérable et changeante. J’ignore par quelle propriété le quaternaire, le nombre quatre, est encore un emblème de la divinité.
 17661  17661   # FIN DES VERS DORÉS DE PYTHAGORE
 17662  17662   
 17663  17663   
 17664         -!!! Épître du feu philosophique, de Jean Pontanus                                                   
        17664  +!!! Épître du feu philosophique, de Jean Pontanus                                                 !!
 17665  17665   # Les paragraphes ont été découpés et ne correspondent pas à ceux du texte.
 17666  17666   TEST: Épître du Feu Philosophique
 17667  17667   TEST: Lettre concernant la pierre dite philosophale
 17668  17668   TEST: Jean Pontanus
 17669  17669   TEST: in Theatrum Chimicum, 1614, t. III
 17670  17670   TEST: « Nous affirmons, au contraire, — et l’on peut avoir foi en notre sincérité, — qu’il sera impossible d’obtenir le moindre succès dans l’Œuvre si l’on a pas une connaissance parfaite de ce qu’est le Vase des Philosophes ni de quelle manière il faut le fabriquer. Pontanus avoue qu’avant de connaître ce vaisseau secret il avait recommencé, sans succès, plus de deux cents fois le même travail, quoiqu’il besognât sur les matières propres et convenables, et selon la méthode régulière. L’artiste doit faire lui-même son vaisseau ; c’est une maxime de l’art. N’entreprenez rien, en conséquence, tant que vous n’aurez pas reçu toute la lumière sur cette coquille de l’œuf qualifiée secretum secretorum chez les maîtres du Moyen Âge. »
 17671  17671   TEST: — Fulcanelli, Le Mystère des Cathédrales, p. 204-205
................................................................................
 17703  17703   TEST: Et moyennant notre feu, la médecine se multipliera si elle est conjointe à la matière crue, non seulement en quantité mais aussi en vertu.
 17704  17704   TEST: Recherche donc de toutes les forces de ton esprit ce feu, et tu parviendras au but que tu t’es proposé ; car c’est lui qui fait tout l’œuvre, et il est la clef de tous les Philosophes, laquelle ils n’ont jamais révélée dans leurs livres.
 17705  17705   TEST: Si tu penses bien profondément aux propriétés du feu ci-dessus, tu la connaîtras, mais non autrement.
 17706  17706   TEST: Donc, touché d’un mouvement de pitié, j’ai écrit ceci ; mais, et afin que je me satisfasse, le feu n’est point transmué avec la matière, comme je l’ai dit ci-dessus.
 17707  17707   TEST: J’ai bien voulu le dire et en avertir les prudents de ces choses, pour qu’ils ne dépensent pas inutilement leur argent, mais qu’ils sachent auparavant ce qu’ils doivent chercher, et, par ce moyen, parviendront à la vérité de l’Art ; non pas autrement. À Dieu.
 17708  17708   # FIN DE L’ÉPÎTRE DU FEU PHILOSOPHIQUE
 17709  17709   
 17710         -!!! Le Misanthrope, de Molière                                                                      
        17710  +!!! Le Misanthrope, de Molière                                                                    !!
 17711  17711   TEST: LE MISANTHROPE (1666)
 17712  17712   TEST: de Molière
 17713  17713   TEST: Texte établi par Charles Louandre, Charpentier, 1910 (2, pp. 170-239).
 17714  17714   TEST: PERSONNAGES
 17715  17715   TEST: Alceste, amant de Célimène,
 17716  17716   TEST: Philinte, ami d’Alceste,
 17717  17717   TEST: Oronte, amant de Célimène,