#
# RÈGLES DE GRAMMAIRE FRANÇAISE POUR GRAMMALECTE
# par Olivier R.
#

# DOCUMENTATION
# Expressions régulières en Python : http://docs.python.org/library/re.html

# [++] : séparateur des règles pour le paragraphe et des règles pour la phrase.

# Types d’action:
#   ->> erreur
#   ~>> préprocesseur de texte
#   =>> désambiguïsateur

# Groups positioning code for JavaScript:
# Always begins by @@
#   0 ... n         left boundary position from left
#   $               right boundary
#   w               word boundaries
#   *               something somewhere
#   **              something somewhere after previous group
#   >x:_            within group x, _ is group position code within group x

# Fin d’interprétation du fichier avec une ligne commençant par #END

# ERREURS COURANTES
# http://fr.wikipedia.org/wiki/Wikip%C3%A9dia:Fautes_d%27orthographe/Courantes


#
# OPTIONS ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#
OPTGROUP/basic: typo apos, esp nbsp, tu maj, num virg, unit nf, liga mapos, chim ocr
OPTGROUP/gramm: conf sgpl, gn
OPTGROUP/verbs: infi conj ppas, imp inte vmode
OPTGROUP/style: bs pleo, redon1 redon2, neg
OPTGROUP/misc: date mc
OPTGROUP/debug: idrule

# pour l’instant, seuls les colonnes Python et JavaScript sont utiles

OPTSOFTWARE:        Python      JavaScript  Writer      Firefox     Thunderbird
OPT/typo:           True        True        True        True        True
OPT/apos:           True        True        True        True        True
OPT/esp:            True        False       True        False       False
OPT/nbsp:           True        False       True        False       False
OPT/tu:             True        True        True        True        True
OPT/maj:            True        True        True        True        True
OPT/num:            True        True        True        True        True
OPT/virg:           True        True        True        True        True
OPT/unit:           True        True        True        True        True
OPT/nf:             True        True        True        True        True
OPT/liga:           False       False       False       False       False
OPT/mapos:          False       False       False       False       False
OPT/chim:           False       False       False       False       False
OPT/ocr:            False       False       False       False       False
OPT/conf:           True        True        True        True        True
OPT/sgpl:           True        True        True        True        True
OPT/gn:             True        True        True        True        True
OPT/infi:           True        True        True        True        True
OPT/conj:           True        True        True        True        True
OPT/ppas:           True        True        True        True        True
OPT/imp:            True        True        True        True        True
OPT/inte:           True        True        True        True        True
OPT/vmode:          True        True        True        True        True
OPT/bs:             True        True        True        True        True
OPT/pleo:           True        True        True        True        True
OPT/redon1:         False       False       False       False       False
OPT/redon2:         False       False       False       False       False
OPT/neg:            False       False       False       False       False
OPT/date:           True        True        True        True        True
OPT/mc:             False       False       False       False       False
OPT/idrule:         False       False       False       False       False
OPT/html:           False       True        False       True        True
OPT/latex:          False       False       False       False       False


OPTLANG/fr_FR:      Grammalecte (Français)

OPTLABEL/basic:     Typographie
OPTLABEL/typo:      Signes typographiques
OPTLABEL/apos:      Apostrophe typographique|Correction des apostrophes droites. Automatisme possible dans le menu Outils > Options d’autocorrection > Options linguistiques > Guillemets simples > Remplacer (à cocher)
OPTLABEL/esp:       Espaces surnuméraires|Signale les espaces inutiles en début et en fin de ligne.
OPTLABEL/nbsp:      Espaces insécables|Vérifie les espaces insécables avec les ponctuations « ! ? : ; » (à désactiver si vous utilisez une police Graphite)
OPTLABEL/maj:       Majuscules|Vérifie l’utilisation des majuscules et des minuscules (par exemple, « la raison d’État », « les Européens »).
OPTLABEL/virg:      Virgules|Virgules manquantes avant “mais”, “car” et “etc.”.
OPTLABEL/tu:        Traits d’union|Cherche les traits d’union manquants ou inutiles.
OPTLABEL/num:       Nombres|Espaces insécables sur les grands nombres (> 10 000). Vérifie la présence de « O » au lieu de « 0 ».
OPTLABEL/unit:      Espaces insécables avant unités de mesure
OPTLABEL/nf:        Normes françaises
OPTLABEL/liga:      Signaler ligatures typographiques|Ligatures de fi, fl, ff, ffi, ffl, ft, st.
OPTLABEL/mapos:     Apostrophes manquantes après lettres isolées [!]|Apostrophes manquantes après les lettres l d s n c j m t ç. Cette option sert surtout à repérer les défauts de numérisation des textes et est déconseillée pour les textes scientifiques.
OPTLABEL/chim:      Chimie [!]|Typographie des composés chimiques (H₂O, CO₂, etc.).
OPTLABEL/ocr:       Erreurs de numérisation (OCR) [!]|Erreurs de reconnaissance optique des caractères. Beaucoup de faux positifs.

OPTLABEL/gramm:     Accords, pluriels et confusions
OPTLABEL/conf:      Confusions, homonymes et faux-amis|Cherche des erreurs souvent dues à l’homonymie (par exemple, les confusions entre « faîte » et « faite »).
OPTLABEL/sgpl:      Pluriels (locutions)|Vérifie l’usage du pluriel ou du singulier dans certaines locutions.
OPTLABEL/gn:        Accords de genre et de nombre|Accords des noms et des adjectifs.

OPTLABEL/verbs:     Verbes
OPTLABEL/conj:      Conjugaisons|Accord des verbes avec leur sujet.
OPTLABEL/infi:      Infinitif|Confusion entre l’infinitif et d’autres formes.
OPTLABEL/imp:       Impératif|Vérifie notamment la deuxième personne du singulier (par exemple, les erreurs : « vas … », « prend … », « manges … »).
OPTLABEL/inte:      Interrogatif|Vérifie les formes interrogatives et suggère de lier les pronoms personnels avec les verbes.
OPTLABEL/ppas:      Participes passés, adjectifs
OPTLABEL/vmode:     Modes verbaux

OPTLABEL/style:     Style
OPTLABEL/bs:        Populaire|Souligne un langage courant considéré comme erroné, comme « malgré que ».
OPTLABEL/pleo:      Pléonasmes|Repère des redondances sémantiques, comme « au jour d’aujourd’hui », « monter en haut », etc.
OPTLABEL/neg:       Adverbe de négation [!]|Ne … pas, ne … jamais, etc.
OPTLABEL/redon1:    Répétitions dans le paragraphe [!]|Sont exclus les mots grammaticaux, ceux commençant par une majuscule, ainsi que “être” et “avoir”.
OPTLABEL/redon2:    Répétitions dans la phrase [!]|Sont exclus les mots grammaticaux, ainsi que “être” et “avoir”.

OPTLABEL/misc:      Divers
OPTLABEL/mc:        Mots composés [!]|Vérifie si les mots composés à trait d’union existent dans le dictionnaire (hormis ceux commençant par ex-, mi-, quasi-, semi-, non-, demi- et d’autres préfixes communs).
OPTLABEL/date:      Validité des dates

OPTLABEL/debug:     Débogage
OPTLABEL/idrule:    Identifiant des règles de contrôle [!]|Affiche l’identifiant de la règle de contrôle dans les messages d’erreur.


OPTLANG/en_US:      Grammar checking (French)

OPTLABEL/basic:     Typography
OPTLABEL/typo:      Typographical glyphs
OPTLABEL/apos:      Typographical apostrophe|Detects typewriter apostrophes. You may get automatically typographical apostrophes in Tools > Autocorrect options > Localized options > Single quote > Replace (checkbox).
OPTLABEL/esp:       Unuseful spaces|Checks spaces at the beginning and the end of lines.
OPTLABEL/nbsp:      Non-breakable spaces|Checks the use of non-breakable spaces with the following punctuation marks: « ! ? : ; » (deactivate it if you use a Graphite font).
OPTLABEL/maj:       Capitals|Checks the use of uppercase and lowercase letters (i.e. « la raison d’État », « les Européens »).
OPTLABEL/virg:      Commas|Missing commas before “mais”, “car” and “etc.”.
OPTLABEL/tu:        Hyphens|Checks missing or useless hyphens.
OPTLABEL/num:       Numbers|Large numbers and « O » instead of « 0 ».
OPTLABEL/unit:      Non-breaking spaces before units of measurement
OPTLABEL/nf:        French standards
OPTLABEL/liga:      Report typographical ligatures|Ligatures of fi, fl, ff, ffi, ffl, ft, st.
OPTLABEL/mapos:     Missing apostrophes after single letters [!]|Missing apostrophes after l d s n c j m t ç. This option is mostly useful to detect defects of digitized texts and is not recommended for scientific texts.
OPTLABEL/chim:      Chemistry [!]|Typography for molecules (H₂O, CO₂, etc.)
OPTLABEL/ocr:       OCR errors [!]|Warning: many false positives.

OPTLABEL/gramm:     Agreement, plurals, confusions
OPTLABEL/conf:      Confusions, homonyms and false friends|Seeks errors often due to homonymy (i.e. confusions between « faîte » et « faite »).
OPTLABEL/sgpl:      Plural (locutions)|Checks the use of plural and singular in locutions.
OPTLABEL/gn:        Agreement (gender and number)|Agreement between nouns and adjectives.

OPTLABEL/verbs:     Verbs
OPTLABEL/conj:      Conjugation|Agreement between verbs and their subject.
OPTLABEL/infi:      Infinitive|Checks confusions between infinitive forms and other forms.
OPTLABEL/imp:       Imperative mood|Checks particularly verbs at second person singular (i.e. errors such as: « vas … », « prend … », « manges … »).
OPTLABEL/inte:      Interrogative mood|Checks interrogative forms and suggests linking the personal pronouns with verbs.
OPTLABEL/ppas:      Past participles, adjectives|Checks subject agreement with past participles and adjectives.
OPTLABEL/vmode:     Verbal modes

OPTLABEL/style:     Style
OPTLABEL/bs:        Popular style|Underlines misuse of language though informal and commonly used.
OPTLABEL/pleo:      Pleonasms|Semantic replications, like « au jour d’aujourd’hui », « monter en haut », etc.
OPTLABEL/neg:       Negation adverb [!]|Ne … pas, ne … jamais, etc.
OPTLABEL/redon1:    Duplicates in paragraph [!]|Are excluded grammatical words, words beginning by a capital letter, and also “être” and “avoir”.
OPTLABEL/redon2:    Duplicates in sentence [!]|Are excluded grammatical words, and also “être” and “avoir”.

OPTLABEL/misc:      Miscellaneous
OPTLABEL/mc:        Compound words [!]|Check if words with hyphen exist in the dictionary (except those beginning by ex-, mi-, quasi-, semi-, non-, demi- and other common prefixes).
OPTLABEL/date:      Date validity.

OPTLABEL/debug:     Debug
OPTLABEL/idrule:    Display control rule identifier [!]|Display control rule identifier in the context menu message.



#
# DÉFINITIONS ************************************************************************************
#
DEF: avoir          [aeo]\w*
DEF: etre           [êeésf]\w+
DEF: avoir_etre     [aeêésfo]\w*
DEF: aller          (?:all|v|ir)\w+
DEF: ppas           \w[\w-]+[éiust]e?s?
DEF: infi           \w[\w-]+(?:er|ir|re)
DEF: w_1            \w[\w-]*
DEF: w_2            \w[\w-]+
DEF: w_3            \w[\w-]+\w
DEF: w_4            \w[\w-][\w-]+\w
DEF: w1             \w+
DEF: w2             \w\w+
DEF: w3             \w\w\w+
DEF: w4             \w\w\w\w+




#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
# //////////////////////////////////////// PASSE 0 ////////////////////////////////////////
# paragraphe par paragraphe
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#



#
# //////////////////////////////////////// CONTRÔLE DES ESPACES ////////////////////////////////////////
#

# Début de ligne
__<s>/esp(espaces_début_ligne)__            ^ + <<- ->> ""              # Espace(s) en début de ligne à supprimer : utilisez les retraits de paragraphe (ou les tabulations à la rigueur).

TEST: {{         }}Espaces surnuméraires.                                 ->> ""
TEST: {{ }}— Je suis là…


# Fin de ligne
__<s>/esp(espaces_fin_ligne)__              " +$" <<- ->> ""                                        # Espace(s) en fin de ligne à supprimer.

TEST: Espaces surnuméraires.{{         }}                                 ->> ""
TEST: Fin de ligne{{ }}


# En milieu de paragraphe
__<s>/esp(espaces_milieu_ligne)__           (?:\b|[.?!,:;%‰‱˚»”])(  +) @@$ <<- -1>> " "             # Espace(s) surnuméraire(s) à supprimer.

TEST: Espaces{{                 }}surnuméraires.                          ->> " "


# Espaces insécable et sécable
__<s>/esp(espaces_mélangés)__               (?:  |  ) <<- ->> " | "                                 # Incohérence : l’espace insécable à côté de l’espace sécable n’a pas d’effet.

TEST: J’espère que ça ne va pas durer trop longtemps avec Mr{{  }}Paul.


# Espaces insécables multiples
__<s>/esp(espaces_insécables_multiples)__   "  +" <<- ->> " "                                       # Espace(s) insécable(s) surnuméraire(s) à supprimer.

TEST: «{{  }}Je suis partie. »


# Espaces et crochets et parenthèses
__<s>/typo(typo_espace_après_signe_ouvrant)__    "([[(]) "  @@0 <<- ->> \1                          # Pas d’espace après ce signe.
__<s>/typo(typo_espace_avant_signe_fermant)__    " ([])])"  <js> ([\]\)])</js>  @@1  <<- ->> \1     # Pas d’espace avant ce signe.

TEST: c’est pas trop tôt {{( }}on a failli attendre).
TEST: blabla … {{[ }}crochets]                                            ->> [
TEST: {{( }}parenthèses)                                                  ->> (
TEST: c’est (enfin{{ )}} parti.
TEST: voici des (parenthèses{{ )}}, n’est-ce pas ?                        ->> )


# Parenthèses collées
__<s>/typo(typo_parenthese_fermante_collée)__    [)]\b(?!s\b) <<- ->> ") "                          # Il manque un espace après la parenthèse.
__<s>/typo(typo_parenthese_ouvrante_collée)__    \b[(](?=[^)][^)][^)]) <<- ->> " ("                 # Il manque un espace avant la parenthèse.

TEST: C’est au fond du couloir{{(}}celui du deuxième étage{{)}}qu’il se trouve.


# Points et espaces
__<s>/typo(typo_point_entre_deux_espaces)__      [  ][.](?=[  ])  <<- ->> .                         # Pas d’espace avant un point.
__<s>/typo(typo_point_collé_à_mot_suivant)__     [  ][.](?=\w)  <<- ->> ". |."                      # L’espace se place après le point, et non avant (ou bien sert de liant entre deux lettres).

TEST: Il a fini{{ .}} Va te faire foutre, connard.
TEST: Merde{{ .}}Ça m’emmerde, ces trucs.


# Virgules et espaces
__<s>/typo(typo_virgule_entre_deux_espaces)__    "[  ],(?=[  ])"  <<- ->> ,                         # Pas d’espace avant une virgule.
__<s>/typo(typo_virgule_collée_à_mot_suivant)__  "[  ],(?=\w)"  <<- ->> ", "                        # Pas d’espace avant une virgule. Un espace après.

TEST: Merde{{ ,}}ça fait chier.
TEST: Eh oui{{ ,}} c’est encore moi.


# Guillemets et espaces
__<s>/typo(typo_guillemets_fermants_perdus)__    [  ]”[  ] <<- ->> "” | “"                          # Pas d’espace avant ces guillemets ouvrants.
__<s>/typo(typo_guillemets_ouvrants_perdus)__    [  ]“[  ]  <<- ->> " “|” "                         # Pas d’espace après ces guillemets ouvrants.
__<s>/typo(typo_guillemets_perdus)__             [  ](?:"|['‘’]['‘’])[  ]  <<- ->> " « | » | “|” "  # Guillemets isolés.

TEST: Bon sang, c’en est trop à présent. Vos prétendues “excuses{{ ” }}ne trompent personne !
TEST: Bon sang, c’en est trop à présent. Vos prétendues{{ “ }}excuses” ne trompent personne !
TEST: Encore des guillemets{{ ‘’ }}dont on ne sait que faire.


__<s>/typo(typo_guillemets_fermants_inverses)__  [  ]”(?=\w) <<- ->> " “"                           # Mettez des guillemets ouvrants plutôt que fermants.
__<s>/typo(typo_guillemets_ouvrants_inverses1)__ \w([«“][  ]) @@1 <<- -1>> " »|”"                   # Mettez des guillemets fermants plutôt qu’ouvrants.
__<s>/typo(typo_guillemets_ouvrants_inverses2)__ ([«“])[  ]*$ @@0 <<- -1>> " »|”"                   # Mettez des guillemets fermants plutôt qu’ouvrants.
__<s>/typo(typo_guillemets_ouvrants_inverses3)__ \w([  ][«“])[  ]*[!?,:;.…] @@1 <<- -1>> " »|”"     # Mettez des guillemets fermants plutôt qu’ouvrants.

TEST: « Le grand homme{{«}}
TEST: « La grande femme{{ «}} !
TEST: Eux et leurs{{ ”}}amis” sont finis !
TEST: Vos “amis{{“ }}et vous êtes finis !


# Cohérence des guillemets
__<s>/typo(typo_cohérence_guillemets1)__
    («)[^»“]+?(”)  @@0,$
    <<- not before(r"\w$") -1>> “                                                                   # Guillemet ouvrant différent du guillemet fermant (”).
    <<- not after(r"^\w") -2>> " »"                                                                 # Guillemet fermant différent du guillemet ouvrant («).
__<s>/typo(typo_cohérence_guillemets2)__
    (“)[^”«]+?(»)  @@0,$
    <<- not before(r"\w$") -1>> "« "                                                                # Guillemet ouvrant différent du guillemet fermant (»).
    <<- not after(r"^\w") -2>> ”                                                                    # Guillemet fermant différent du guillemet ouvrant (“).

TEST: C’est {{«}}stupide{{”}}.
TEST: Quel {{“}}emmerdeur{{»}}, ce gars-là.
TEST: « J’en suis “malade”. »


# Tout contrôle des espaces doit se faire avant ce point.
# À 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.



#
# //////////////////////////////////////// PRÉPROCESSEUR ////////////////////////////////////////
#


# e-mail
__<i>__  \w[\w.-]*@\w[\w.-]*\w[.]\w+ <<- ~>> *
# URL
__<i>__  https?://[\w./?&!%=+*"'@$#-]+ <<- ~>> *
__<i]__  ({w_2})[.](?:com|net|org|info|fr|ca|be|ch|i[ot]|co[.]uk|tk|es|jp|zh|ru|us|nl) @@0 <<- ~>> =\1.capitalize()
# Numéro de chapitre
__<i>__  ^\d+[.][\d.-]* <<- ~>> *
# Numéro suivi de plusieurs espaces, considéré comme une numérotation de chapitre
__<i>__  ^\d+(?:  +|\t+) <<- ~>> *
# bibliographie
__[s>__  [cC](?:f|hap|oll?)([.]) @@$ <<- ~1>> *
__[s]__  p[.] ?\d+(?:-\d+|) <<- ~>> *
__[s]__  pp[.] ?\d+-\d+ <<- ~>> *
__[i]__  figure (\d+(?:[.:-]\d+|))  @@0 <<- ~1>> *
__[i]__  art(?:icle|[.]) (1er|\d+(?:[.:-]\d+|)) @@$ <<- ~1>> *
__[s>__  av[.] <<- ~>> av
# sigles
__<s>__  ([A-Z][.][A-Z][.](?:[A-Z][.])*) +[A-ZÉÀÂÊÎÈÔ]  @@0  <<- ~1>> =\1.replace(".", "")+"."
__[s>__  [a-zA-Z][.][a-zA-Z][.](?:[a-zA-Z][.])*
    <<- not re.search(r"(?i)^(?:i\.e\.|s\.[tv]\.p\.|e\.g\.|a\.k\.a\.|c\.q\.f\.d\.|b\.a\.)$", \0) ->> =\0.replace(".", "").upper()
    # Sigle. Il est recommandé d’ôter les points pour les sigles.|https://fr.wikipedia.org/wiki/Sigle#Typographie
    <<- \0 != "b.a." ~>> =\0.replace(".", "_")
__[s>__  J[.]-[A-Z][.] <<- ~>> =\0.replace(".", "").replace("-","")
# Ne pas scinder la phrase si les points de suspension sont suivis d’une minuscule
__<s>__  ({w1})(…)(?= [a-zéèêàâîô])  @@0,$ <<- not re.search("(?i)^etc", \1) ~2>> ,
# Mr et MM
__[s>__  (M[.]) (?:[A-ZÉÈÎ]\w+|l[e'’])  @@0 <<- ~1>> Mr
__[s>__  MM[.] <<- ~>> "MM "
__[s>__  M(?:r|gr|me|[.]) [A-ZÉ]([.])(?=\W+[a-zéèêâîïû]) @@$ <<- ~1>> *
# Patronyme réduit à une seule lettre
__[s]__  ([A-ZÉÈÂ][\w-]+)[  ]([A-ZÉÈÂ][.][  ]([A-ZÉÈÂ][\w-]+)) @@0,$,$ <<- morph(\1, ":M[12]", False) and (morph(\3, ":(?:M[12]|V)", False) or not spell(\3)) ~2>> *
__[s>__  ([A-ZÉÈÂ][\w-]+)[  ]([A-ZÉÈÂ][.]) @@0,$ <<- morph(\1, ":M[12]", False) and after("^\W+[a-zéèêîïâ]") ~2>> *
# IP
__[s]__  \d+[.:]\d+[.:]\d+[.:]\d+  <<- ~>> *
# mètres (m)
__[s>__  "\d+ (m) "  @@w <<- ~1>> _
# heures
__[s]__  (?:à |)[012]?\d[h:]\d\d(?:[m:]\d\ds?|) <<- ~>> *
# crochets
__[s]__  \[…\] <<- ~>> *
__[s]__  \[({w1})\] @@1 <<- ~>> \1
__[s]__  \(…\)
    <<- ->> […]                                                                                     # Pour indiquer une troncature de texte, on utilise usuellement des crochets.
    <<- ~>> *


TEST: l’{{A.N.P.E.}} n’existe plus
TEST: ce chien […] ne {{semblez}} pas perdu.
TEST: ce chat {{(…)}} ne {{semblez}} pas perdu.
TEST: ce nouveau moteur de recherche (http://www.cherche-moi-ça.fr/home.php&lang=fr) fonctionne pas mal.
TEST: l’A.M. Turing Award 2015
TEST: Retrouvez-nous sur le Monde.fr
TEST: Arthur D. vient chez nous.
TEST: Arthur D., de toute façon, vient chez nous.
TEST: Arthur D. « viendra ».
TEST: Ça arrivera à 12:30
TEST: Prêt à 03:03:12.
TEST: Les conseillers de George W. Bush dominent toujours l’establishment républicain.
TEST: IP : 192.168.0.99
TEST: Si l’on peut comprendre que Mme S. ait voulu être prise au sérieux
TEST: C’est le b.a.-ba du métier.
#TEST: des <b>{{homme}}</b>
#TEST: des [b]{{femme}}[/b]


# HTML
__<i>/html__  &amp;[a-zA-Z]+; <<- ~>> _
__<i>/html__  &lt; <<- ~>> "   <"
__<i>/html__  &gt; <<- ~>> >
__<i>/html__  &amp; <<- ~>> &
__<i>/html__  <\w+.*?> <<- ~>> *
__<i>/html__  </\w+ *> <<- ~>> *
__<i>/html__  \[/?\w+\] <<- ~>> *


# LATEX
__<i]/latex__  \\[a-z]+ <<- ~>> *
__<i>/latex__  \\[,;/\\] <<- ~>> *
__<s>/latex__  \{(?:abstract|align|cases|center|description|enumerate|equation|figure|flush(?:left|right)|gather|minipage|multline|quot(?:ation|e)|SaveVerbatim|table|tabular|thebibliography|[vV]erbatim|verse|wrapfigure)\} <<- ~>> *



#
# //////////////////////////////////////// RÈGLES DE CONTRÔLE ////////////////////////////////////////
#


############################## TYPOGRAPHIE ##############################


### Écritures épicènes invariables

__[u](typo_écriture_épicène_pluriel)__
    ({w_1}[éuitsrn])[-·–—.(/]([nt]|)e[-·–—.)/]s  @@0,**
    <<- option("typo") and not \0.endswith("·e·s")
    ->> \1s et \1\2es|\1\2es et \1s|\1·\2e·s                                                        # Écriture épicène brouillon. Préférez écrire lisiblement. Sinon, utilisez les points médians.
    <<- morphex(\1, ":[NAQ]", ":G") =>> define(\0, [":N:A:Q:e:i"])
    <<- ~>> \1es

TEST: nous sommes {{déconsidéré-e-s}}.
TEST: serons-nous toujours {{perdu.e.s}}.
TEST: les illustres {{inconnu(e)s}}.
TEST: la situation des {{salarié/e/s}}.
TEST: des {{Iranien-ne-s}} sont venues                                  ->> Iraniens et Iraniennes|Iraniennes et Iraniens|Iranien·ne·s
TEST: rendez-vous avec des {{écrivain(e)s}}                             ->> écrivains et écrivaines|écrivaines et écrivains|écrivain·e·s


__[i](typo_écriture_épicène_singulier)__
    ({w_2}[éuitsr])(?:[-·–—./]e|[(]e[)])  @@0
    <<- option("typo") and not \0.endswith("·e") ->> \1·e                                           # Écriture épicène. Utilisez les points médians. (Note : écriture journalistique brouillon.)
    <<- morph(\1, ":[NAQ]", False) =>> define(\0, [":N:A:Q:e:s"])
    <<- ~>> \1e

TEST: je suis {{déconsidéré.e}} par ma hiérarchie.
TEST: il faut en parler à l’{{auteur(e)}} et à son agent.


# Majuscules après un point
__[s]/maj(majuscule_après_point)__
    ({w_2})[.] ([a-zéàèî]\w*)  @@0,$
    <<- 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)
    and morph(\1, ":", False) and morph(\2, ":", False)
    -2>> =\2.capitalize()                                                                           # Après un point, une majuscule est généralement requise.

TEST: Je suis là. {{viens}}.                                              ->> Viens
TEST: Ils sont devenus idiots. {{c}}’est peine perdue.


## virgules manquantes
__[i>/virg(virgule_manquante_avant_etc)__   {w_1}( etc[.])  @@$ <<- -1>> , etc.                     # Avant « etc. », il faut mettre une virgule.
__[i>/virg(virgule_manquante_avant_car)__
    ({w_1})( car)(?= (?:j[e’]|tu|ils?|nous|vous|elles?|on|les?|la|ces?|des?|cette|[mts](?:on|a))\b)  @@0,$
    <<- not morph(\1, ":[DR]", False) -2>> , car
    # Si « car » est la conjonction de coordination, une virgule est peut-être souhaitable.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=3447
__[i>/virg(virgule_manquante_avant_mais)__
    {w_1}( mais)(?= (?:j[e’]|tu|ils?|elles?|on|ces?|des?|cette|[mts](?:on|a))\b)  @@$
    <<- -1>> , mais
    # Si « mais » est la conjonction de coordination, une virgule est souhaitable si elle introduit une nouvelle proposition.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=3445

TEST: Un chien, un chat{{ etc.}}                                          ->> , etc.
TEST: Je suis fatigué{{ car}} ils ont joué toute la nuit.                 ->> , car
TEST: Je suis fatigué{{ mais}} il a joué toute la nuit.                   ->> , mais


#__virg__  , ({w_1})
#   <<- morphex(\1, ":[123][sp]", ":(?:N|E|A|W|G|M[12])") and not before(",")
#   ->> =0[1:]    # Un verbe ne doit pas être séparé du sujet, sauf éventuellement par une incise. (Et ce verbe n’est pas non plus un impératif.) [Sac à bugs]
__<s>/virg(virgule_point_fin_dialogue)__    ([.] » )[a-zéà]  @@0 <<- -1>> " », | » "
    # Ou il faut une virgule (exemple : « Je viens », dit-il). Ou le point est superflu. Ou il faut une majuscule sur le mot suivant.
__<s>/virg(virgule_fin_dialogue)__          (, »,? )[a-zéà]  @@0 <<- -1>> " », | » "                # Virgule mal placée ou superflue.

TEST: « Ça suffit{{. » }}dit-elle.
TEST: « J’en ai plus qu’assez{{, » }}dis-je.
TEST: {{Julien}} donne-moi le sel.
TEST: dès son premier rendez-vous au centre
TEST: Depuis combien de temps fumez-vous ?


# Fin de paragraphe
#__<i>/typo__  ({w_2}) *$   @@0
#    <<- before("[a-zéàùèê][.] ") and not before(r"^(?:\d|\w[.])")
#    -1>> \1.|\1…|\1 !|\1 ?|\1 :|\1 ;|\1,                                               # Il manque une ponctuation finale.


# Espaces manquants
__<s>/typo(typo_espace_manquant_après1)__    ({w1})[,:]({w_1})  @@0,$  <<- not \1.isdigit() -2>> " \2"      # Il manque un espace.
__<s>/typo(typo_espace_manquant_après2)__    [?!;%‰‱˚»]({w_1})  @@$  <<- -1>> " \1"                         # Il manque un espace.
__<s>/typo(typo_espace_manquant_après3)__    [a-zéêîù]+[.]({w_2}|\w(?= ))  @@$  <<- spell(\1) -1>> " \1"    # Il manque un espace.

TEST: J’en ai marre,{{ça}} suffit.
TEST: elle est délirante.{{Devine}} ce qu’elle a dit.
TEST: Voilà,{{il}} manque un espace.                                        ->> " il"
TEST: Dernier essai.{{Voilà}}.                                              ->> " Voilà"
TEST: espace:{{manquant}}                                                   ->> " manquant"
TEST: espace{{;}}{{manquant}}                                               ->> " manquant||| ;"
TEST: espace ;{{manquant}}                                                  ->> " manquant"
TEST: espace{{?}}{{manquant}}                                               ->> " manquant||| ?"
TEST: espace{{!}}{{manquant}}                                               ->> " manquant||| !"
TEST: espace.{{Manquant}}                                                   ->> " Manquant"
TEST: qui ont refuse.{{de}} se sauver                                       ->> " de"


# Points superflus
__[i>/typo(typo_et_cetera)__             etc(?:[.]{3,5}|…) <<- ->> etc.                             # Un seul point après « etc. »

TEST: {{etc…}}
TEST: {{etc...}}


__[s>/typo(typo_point_après_titre)__     (M(?:me|gr|lle)s?[.]) [A-ZÉÈ]  @@0  <<- -1>> =\1[0:-1]                     # Pas de point après cette abréviation.
__[s>/typo(typo_point_après_numéro)__    ([nN]os?[.])[  ]\d+  @@0  <<- -1>> ="nᵒˢ"  if \1[1:3] == "os"  else "nᵒ"   # Pas de point dans l’abréviation de numéro.

TEST: Je crois que {{Mlle.}} Eva est partie.
TEST: J’ai pensé à {{Mme.}} Bovary toute la journée.
TEST: C’est situé au {{no.}} 12.


# Points de suspension
__<s>/typo(typo_points_suspension1)__    (?<![.])[.]{3,5}(?![.]) <<- not before("(?i)etc$") ->> …   # Typographie : points de suspension. Utilisez le caractère dédié.
__<s>/typo(typo_points_suspension2)__    [.]{6,} <<- ->> =\0.replace("...", "…").rstrip(".")        # Typographie : succession de points. Utilisez le caractère dédié.
__<s>/typo(typo_points_suspension3)__    (?<![.…])[.][.](?![.]) <<- ->> …|.                         # Typographie : un ou trois points ?
__<s>/typo(typo_points_superflus)__      …[.][.]?(?![.]) <<- ->> …                                  # Point(s) superflu(s).

TEST: 3 points de suspension{{...}}
TEST: 5 points de suspension{{....}}
TEST: 5 points de suspension{{.....}}
TEST: 4 points de suspension{{….}}
TEST: 5 points de suspension{{…..}}
TEST: Double point{{..}}
TEST: Ligne de points…{{...........................}}
TEST: Ligne de points{{...........................}}
TEST: Aujourd’hui, M. Camus va nous lire son texte.


__<s>/typo(typo_virgule_avant_points_suspension)__       , *… <<- ->> …          # Typographie : pas de virgule avant les points de suspension.
__<s>/typo(typo_virgule_après_point)__
    ({w1})([.],)  @@0,$
    <<- not re.search("^(?:etc|[A-Z]|fig|hab|litt|circ|coll|ref|étym|suppl|bibl|bibliogr|cit|vol|déc|nov|oct|janv|juil|avr|sept|pp?)$", \1)
    -2>> ,|.                                                                # Pas de virgule après un point (sauf éventuellement après une abréviation).

TEST: ceci, cela{{, …}}                                                   ->> …
TEST: Les chiens, les chats{{.,}} les poules.                             ->> ,|.


# Tirets, énumérations et dialogues
__<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.
__<s>/typo(typo_tiret_dans_dialogue)__  ^ *«[  ](-[  ]) @@$ <<- -1>> "— |– "
    # 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.)
__<s>/nbsp(nbsp_après_tiret)__          ^([—–]) +  @@0  <<- ->> "\1 "       # Dialogues et énumérations : ce tiret doit être suivi d’un espace insécable.
__<s>/typo(typo_tiret_incise)__         " - " <<- ->> " – | — "             # Tiret d’incise : un tiret cadratin ou demi-cadratin est requis.

TEST: {{- }}Ce tiret n’est correct nulle part.                              ->> "— |– "
TEST: {{– }}Il manque toujours un espace insécable !                        ->> "– "
TEST: {{— }}Idem ! etc.                                                     ->> "— "
TEST: Cette phrase contient{{ - }}c’est certain – des tirets d’incise.      ->> " – | — "
TEST: « {{- }}Viens ! On va en finir avec cette affaire, sale fils de pute. ->> "— |– "


# Ponctuations redondantes
__<s>/typo(typo_ponctuation_superflue1)__    , ?([.,;:!?]) @@$ <<- ->> =",|" + \1       # Une de ces ponctuations est superflue.
__<s>/typo(typo_ponctuation_superflue2)__    ; ?([.,;:…!?]) @@$ <<- ->> =";|" + \1      # Une de ces ponctuations est superflue.
__<s>/typo(typo_ponctuation_superflue3)__    :[.,;:…!?] <<- ->> =":|" + \0[1]           # Une de ces ponctuations est superflue.

TEST: Mouais{{, ;}}
TEST: Vraiment, bof {{;;}} on ne sait guère qu’en penser.
TEST: Raisons {{:.}} trop, c’est trop.


#__<s]/typo__  °C <<- ->> ℃                                                      # Typographie. Utilisez le signe des degrés approprié.

# Espaces insécables avant unités de mesure
__[s]/unit(unit_nbsp_avant_unités1)__
    ((\d+(?:,\d+[⁰¹²³⁴⁵⁶⁷⁸⁹]?|[⁰¹²³⁴⁵⁶⁷⁸⁹]|)) ?)(?:[kcmµn]?(?:[slgJKΩ]|m[²³]?|Wh?|Hz|dB)|[%‰€$£¥Åℓhj]|min|°C|℃)(?![’'])  @@0,0
    <<- -1>> "\2 "
    # Avec une unité de mesure, mettez un espace insécable.
__[s]/unit(unit_nbsp_avant_unités2)__
    ((\d+(?:,\d+[⁰¹²³⁴⁵⁶⁷⁸⁹]?|[⁰¹²³⁴⁵⁶⁷⁸⁹])) ?)([a-zA-Zµ][a-zA-Z0-9Ωℓ⁰¹²³⁴⁵⁶⁷⁸⁹/·]*)  @@0,0,$
    <<- morphex(\3, ";S", ":[VCR]") or mbUnit(\3) or not spell(\3)
    -1>> "\2 "
    # Si “\3” est une unité de mesure, il manque un espace insécable. Si le nombre se rapporte au mot suivant, c’est aussi valable.
__[s]/unit(unit_nbsp_avant_unités3)__
    ((\d+) )([a-zA-Zµ][a-zA-Z0-9Ωℓ⁰¹²³⁴⁵⁶⁷⁸⁹/·]*)(?![’'])  @@0,0,$
    <<- (not re.search("^[0-9][0-9]{1,3}$", \2) and not spell(\3)) or morphex(\3, ";S", ":[VCR]") or mbUnit(\3)
    -1>> "\2 "
    # Si “\3” est une unité de mesure, il manque un espace insécable. Si le nombre se rapporte au mot suivant, c’est aussi valable.

TEST: Ça a duré {{3}}µs
TEST: Ça a duré {{3,5 }}µs
TEST: il y en a {{3 }}m²
TEST: il a fait {{10}}%
TEST: Ça coûte {{13,4}}¥.
TEST: il mesure {{30,3 }}cm
TEST: il est monté à {{18 }}%
TEST: une température de {{22,4 }}°C
TEST: il en veut {{18}}kg
TEST: il me le propose pour {{243 }}gCO2/kWh
TEST: il me le propose pour {{243,4 }}gCO2/kWh
TEST: en l’an 2000 Urgondorletroll eut une idée
TEST: 1998 s’annonce grandiose.
TEST: il y en a 3,43 milliards.
TEST: je veux 200 euros.


# Espaces insécables
__<s>/nbsp(nbsp_ajout_avant_double_ponctuation)__   \b[?!;]  <<- sCountry != "CA" ->> =" "+\0               # Il manque un espace insécable.
__<s>/nbsp(nbsp_avant_double_ponctuation)__         " ([?!;])"  @@1 <<- ->> " \1"                           # Il manque un espace insécable.
__<s>/nbsp(nbsp_avant_deux_points)__                (?: |\b):(?= |$)  <<- ->> " :"                          # Il manque un espace insécable.
__<s>/nbsp(nbsp_après_chevrons_ouvrants)__          «(?: |\b)  <<- ->> "« "                                 # Il manque un espace insécable.
__<s>/nbsp(nbsp_avant_chevrons_fermants1)__         (?: |\b)»  <<- ->> " »"                                 # Il manque un espace insécable.
__<s>/nbsp(nbsp_avant_chevrons_fermants2)__         ([].!?)])»  <js>([\].!?\)])»</js>  @@0 <<- ->> "\1 »"   # Il manque un espace insécable.
__<s>/nbsp(nbsp_après_double_ponctuation)__         ([:;!?]) (?=\w)  @@0 <<- ->> "\1 "                      # Pas d’espace insécable après le signe “\1”.

TEST: {{«}}Il manque deux espaces insécables. »                             ->> "« "
TEST: « Il manque deux espaces insécables{{.»}}                             ->> ". »"
TEST: « Il manque deux espaces insécables{{ »}}                             ->> " »"
TEST: Et encore{{!}}?                                                       ->> " !"
TEST: Quoi{{?}}                                                             ->> " ?"
TEST: Voici{{:}} les deux points.                                           ->> " :"
TEST: Voyelles:{{a}}.                                                       ->> " a"
TEST: Succession : a{{;}} b.                                                ->> " ;"
TEST: C’est assez {{: }}parlez !                                            ->> ": "


# Signes typographiques.
__<s>/typo(typo_signe_multiplication)__             (\d+) ?[x*] ?(\d+)  @@0,$ <<- ->> \1 × \2       # Signe de multiplication typographique.

TEST: {{800 x 600}}                                                         ->> 800 × 600
TEST: {{800*600}}                                                           ->> 800 × 600
TEST: {{800 * 600}}                                                         ->> 800 × 600


__<s>/typo(typo_inférieur_ou_égal)__                [\w  ](<=)[\w  ]  @@* <<- -1>> ≤|⩽              # Signe “inférieur ou égal”.
__<s>/typo(typo_supérieur_ou_égal)__                [\w  ](>=)[\w  ]  @@* <<- -1>> ≥|⩾              # Signe “supérieur ou égal”.

TEST: 3{{>=}}2
TEST: est-ce que a {{<=}} c


# Guillemets typographiques
__<s>/typo(typo_guillemets_typographiques_doubles_ouvrants)__
    "(?=\w)
    <<- not before(r"[a-zA-Zéïîùàâäôö]$") ->> « |“                                                  # Guillemets typographiques ouvrants.
__<s>/typo(typo_guillemets_typographiques_doubles_fermants)__
    [\w.?!,](")(?!\w)  @@*
    <<- -1>> ”| »                                                                                   # Guillemets typographiques fermants.

TEST: {{"}}Le grand homme.{{"}}                                           ->> « |“|||”| »


__<s>/typo(typo_guillemets_typographiques_simples_ouvrants)__
    (?:^|[ –—-])(''?)(?=\w)  @@*
    <<- -1>> “|‘                                                                                    # Guillemets typographiques ouvrants.
__<s>/typo(typo_guillemets_typographiques_simples_fermants)__
    [\w.?!,](''?)(?![\w'])  @@*
    <<- -1>> ”|’                                                                                    # Guillemets typographiques fermants.

TEST: Le {{'}}grand{{'}} homme.                                           ->> “|‘|||”|’
TEST: J’en ai '''marre''' (syntaxe wiki).


# ligatures typographiques : fi, fl, ff, ffi, ffl, ft, st
__<s>/liga(ligatures_typographiques)__              [ﬁﬂﬀﬃﬄﬅﬆ] <<- ->> =undoLigature(\0)             # Suppression de la ligature typographique.

TEST: __liga__ un {{ﬂ}}ottement                                           ->> fl
TEST: __liga__ une belle {{ﬁ}}gure                                        ->> fi


# Apostrophe typographique
__[i>/apos(apostrophe_typographique)__
    ([ldsncjmç]|jusqu|lorsqu|aujourd|presqu|quelqu|puisqu|qu|prud|entr)['´‘′`](?=[\w"«]) @@0 <<- ->> \1’    # Apostrophe typographique.
__[i>/apos(apostrophe_typographique_après_t)__
    t['´‘′`](?!ils?|elles?|on)(?=[\w"«]) <<- ->> t’                                                         # Apostrophe typographique.

TEST: {{C'}}est {{l'}}apostrophe typographique qui manque.                ->> C’|||l’
TEST: {{Aujourd'}}hui, je suis fatigué
TEST: Je pense {{qu`}}elle se trompe
TEST: Que {{t'}}arrive-t-il ?


__[i>/typo(typo_apostrophe_plus_espace1)__
    (([ldsncjmt])(?:[’'´‘`] | [’'´‘′`] ?))[aeéiouhœæyîèêôû]  @@0,0
    <<- -1>> \2’                                                                                    # Pas d’espace avant ou après une apostrophe.
__[i>/typo(typo_apostrophe_plus_espace2)__
    ((lorsqu|puisqu|presqu|quoiqu|quelqu|jusqu|qu|aujourd|entr|ç)(?:[’'´‘′`] | [’'´‘′`] ?))[aeéiouhœæyîèêôû]  @@0,0
    <<- -1>> \2’                                                                                    # Pas d’espace avant ou après une apostrophe.
__[i>/typo(typo_apostrophe_double)__
    (([ldsncjmtç]|lorsqu|puisqu|presqu|quoiqu|quelqu|jusqu|qu|aujourd|entr)(?:[’'´‘′`][’'´‘′`]|”|“|"))[aeéiouhœæyîèêôû]  @@0,0
    <<- -1>> \2’                                                                                    # Apostrophe surnuméraire.

TEST: {{C’ }}est rageant.                                                 ->> C’
TEST: {{Lorsqu’ }}il vient, on s’ennuie.
TEST: {{l’'}}électricien est parti
TEST: Je pense {{qu ` }}elle ne viendra pas.


## Apostrophes manquantes
__[i>/typo(typo_apostrophe_manquante)__
    "(lorsqu|puisqu|presqu|quoiqu|jusqu|qu|aujourd|entr) "  @@0  <<- ->> \1’                        # Il manque vraisemblablement une apostrophe.
# Solution prudente :
__[i>/typo(typo_apostrophe_manquante_prudence1)__
    ne ([mtsl] )([aeéiouhyîèêôû][\w-]*)  @@3,$  <<- -1>> =\1[:-1]+"’"                               # Il manque une apostrophe.
__[i>/typo(typo_apostrophe_manquante_prudence2)__
    (?:je|tu|ils?|nous|vous|on|ça|elles?) ([nmtsl] )([aeéiouhyîèêôû][\w-]*)  @@*,$
    <<- not option("mapos") and morph(\2, ":V", False) -1>> =\1[:-1]+"’"                            # Il manque probablement une apostrophe.
# Solution audacieuse :
__[s>/typo(typo_apostrophe_manquante_audace1)__
    ([ldsncjmtç] )[aeéiouhAEÉIOUHyîèêôûYÎÈÊÔÛ]  @@0
    <<- option("mapos") and not before("(?i)(?:lettre|caractère|glyphe|dimension|variable|fonction|point) *$")
    -1>> =\1[:-1]+"’"                                                                               # Il manque peut-être une apostrophe.
# Note : pour les majuscules, la règle se situe lors de la passe suivante.

TEST: __mapos__ {{n }}arrive pas à sa cheville
TEST: le coup {{qu }}avait donné                                                ->> qu’
TEST: pendant {{qu }}il avançait d’un pas indolent                              ->> qu’
TEST: {{jusqu }}à plus soif                                                     ->> jusqu’
TEST: il ne {{m }}avait jamais fait défaut                                      ->> m’
TEST: Il {{s }}était dit qu’il ne le ferait pas.                                ->> s’
TEST: Je {{m }}étais imaginé que je pourrais pas retrouver cet objet.           ->> m’
TEST: Je {{n }}ai pas retrouvé l’ambiance de mes années de lycée.               ->> n’


## Élisions
__[i]/typo(typo_élision_déterminants)__
    (l[ea] |de )([aâeéêiîoôu]\w+)  @@0,$
    <<- 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)
    -1>> =\1[0]+"’"                                         # Élision de l’article devant un mot commençant par une voyelle.|http://fr.wikipedia.org/wiki/Élision

__[i]/typo(typo_élision_si)__    (si )ils?  @@0 <<- -1>> s’                      # Il faut élider « si » et l’accoler au pronom.|http://fr.wikipedia.org/wiki/Élision
__[i]/typo(typo_élision_que)__   (que )(?:ils?|elles?|on)  @@0 <<- -1>> qu’      # Il faut élider « que » et l’accoler au pronom.|http://fr.wikipedia.org/wiki/Élision

TEST: {{le }}amour                                                        ->> l’
TEST: {{la }}imagination                                                  ->> l’
TEST: {{de }}amour                                                        ->> d’
TEST: {{de }}est                                                          ->> d’
TEST: je crois que {{si }}ils viennent, ils seront mécontents
TEST: {{Que }}ils soient heureux
TEST: J’ai passé une journée de ouf.


# ce -> cet
__[i]/typo(typo_euphonie_cet)__
    (ce) ([aâeéêiîoôu]\w+)  @@0,$
    <<- not re.search("(?i)^(?:onz|énième|ouf|énième|ouistiti|one-?step|I(?:I|V|X|er|ᵉʳ))", \2) and morph(\2, ":[me]")
    -1>> cet                                                # Euphonie : « ce » devient « cet » devant un mot commençant par une voyelle.

TEST: {{ce}} animal est dangereux


## NF (memo: don’t use flag i)
__[s]/nf(nf_norme_française)__
    [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]+|)
    <<- not re.search("^NF (?:C|E|P|Q|S|X|Z|EN(?: ISO|)) [0-9]+(?:‑[0-9]+|)", \0)
    ->> =formatNF(\0)                                       # Norme française. Utilisez les espaces et tirets insécables.|http://fr.wikipedia.org/wiki/Liste_de_normes_NF

TEST: __nf__ Norme française : {{Nf-EN ISO 3892-23}}


## Chimie
__[s]/chim(chim_molécules)__
    (?:Ca(?:CO3|SO4)|CO2|(?:H2|Na2)(?:CO3|O|SO4)|[HNO]2|HNO3|Fe2O3|KMnO4|NO2|SiO2|SO[23])
    <<- ->> =\0.replace("2", "₂").replace("3", "₃").replace("4", "₄")                               # Typographie des composés chimiques. [!]

TEST: __chim__ les molécules {{CaCO3}} et {{H2O}}…


#
# GRANDS NOMBRES ---------------------------------------------------------------------------------
#

__<s>/num(num_grand_nombre_soudé)__
    \b\d\d\d\d\d+\b
    <<- not before("NF[  -]?(C|E|P|Q|X|Z|EN(?:[  -]ISO|)) *") ->> =formatNumber(\0)                 # Formatage des grands nombres.

TEST: {{12345}}                               ->> 12 345
TEST: {{123456}}                              ->> 123 456
TEST: {{1234567}}                             ->> 1 234 567
TEST: {{12345678}}                            ->> 12 345 678
TEST: {{023456789}}                           ->> 023 456 789|023 45 67 89|02 345 67 89
TEST: {{0234567890}}                          ->> 0 234 567 890|02 34 56 78 90|023 456 78 90|0234 567-890
TEST: {{12345678901}}                         ->> 12 345 678 901
TEST: {{112798931830912839}}                  ->> 112 798 931 830 912 839
TEST: {{2308393909}}                          ->> 2 308 393 909|2308 393-909


__[s>(num_grand_nombre_avec_points)__
    \d\d?\d?(?:[.]\d\d\d)+(?![0-9])
    <<- option("num") ->> =\0.replace(".", " ")                                                     # Grands nombres : utilisez des espaces insécables plutôt que des points.
    <<- ~>> =\0.replace(".", "")

TEST: il cumule {{200.000.000}} de pertes sèches


__[s](num_grand_nombre_avec_espaces)__
    \d\d?\d?(?: \d\d\d)+
    <<- option("num") ->> =\0.replace(" ", " ")                                                     # Grands nombres : utilisez des espaces insécables.
    <<- ~>> =\0.replace(" ", "")

TEST: Il a perdu {{20 000}} euros à la Bourse en un seul mois.



#
# DATES ------------------------------------------------------------------------------------------
#
__[i]/date(date_nombres)__
    (?<!\d[ /.-])(\d\d?)[ /.-](\d\d?)[ /.-](\d\d\d+)(?![ /.-]\d)  @@0,w,$
    <<- not checkDate(\1, \2, \3) and not before(r"(?i)\bversions? +$") ->> _                       # Cette date est invalide.
    <<- ~>> =\0.replace(".", "-").replace(" ", "-").replace("\/", "-")

TEST: le {{29 02 2011}}
TEST: le {{40-02-2011}}
TEST: le {{32.03.2018}}
TEST: le {{81/01/2012}}
TEST: 12-12-2012


#
# REDONDANCES (dans le paragraphe) ---------------------------------------------------------------
#

__[i]/redon1(redondances_paragraphe)__
    ({w_4})[  ,.;!?:].*[  ](\1)  @@0,$
    <<- 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()
    -2>> _                                                      # Dans ce paragraphe, répétition de « \1 » (à gauche).
    <<- __also__ -1>> _                                         # Dans ce paragraphe, répétition de « \1 » (à droite).

TEST: __redon1__ Tu es son {{avenir}}. Et lui aussi est ton {{avenir}}.
TEST: __redon1__ Car parfois il y en a. Mais parfois il n’y en a pas.




#
# //////////////////////////////////////// PRÉPROCESSEUR ////////////////////////////////////////
# Dernier nettoyage avant coupure du paragraphe en phrases
#

# Trait d’union conditionnel (u00AD)
__<i>__  \w+‑\w+‑\w+ <<- ~>> =\0.replace("‑", "")
__<i>__  \w+‑\w+ <<- ~>> =\0.replace("‑", "")

# empêcher la scission en fin de dialogue
__<s>__  ([?!…][?!…  ]*)[ "'”» ]*,  @@0 <<- ~1>> *
__<s>__  ([?!…][?!…  ]*)[ "'”» ]*[a-zéèêîô]  @@0 <<- ~1>> ,

TEST: « Je suis donc perdu ? », dit Paul.
TEST: “C’est bon !”, croit savoir Marie.
TEST: “Parce que… ?” finit par demander Paul.
TEST: « Dans quel pays sommes-nous ? » demanda un manifestant. 



#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
# //////////////////////////////////////// PASSE 1 ////////////////////////////////////////
# phrase par phrase
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
[++]



#
# DOUBLONS (casse identique) ---------------------------------------------------------------------
#
__[s](doublon)__
    ({w1}) {1,3}\1  @@0
    <<- 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)
    and not (re.search("^(?:est|une?)$", \1) and before("[’']$"))
    and not (\1 == "mieux" and before("(?i)qui +$"))
    ->> \1   # Doublon.

TEST: Il y a un {{doublon doublon}}.


#
# NOMBRES : TYPOGRAPHIE --------------------------------------------------------------------------
#

#(\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.

__[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 ».
__[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 ».

TEST: année {{2O11}}                                                      ->> 2011
TEST: {{3O}} (chiffre avec un O).                                         ->> 30


# Nombres ordinaux
__[s]/typo(typo_ordinaux)__              ([0-9]+) ?(?:è|i?[èe]mes?)  @@0 <<- ->> \1ᵉ|\1e            # Nombre ordinal.
__[s]/typo(typo_ordinaux_romains)__      ([IVXLCM]{1,3}) ?(?:è|i?[èe]mes?)  @@0 <<- ->> \1ᵉ|\1e     # Nombre ordinal romain.

TEST: le {{VIième}} siècle                      ->> VIᵉ|VIe
TEST: C’est la {{3ème}} fois…                   ->> 3ᵉ|3e
TEST: Non, la {{2è}} fois.                      ->> 2ᵉ|2e
TEST: Le {{XXIème}} siècle.                     ->> XXIᵉ|XXIe
TEST: le {{XXè}} siècle.                        ->> XXᵉ|XXe


#
# DATES ------------------------------------------------------------------------------------------
#

__[i]/date(date_jour_mois_année)__
    (\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,$ 
    <<- not checkDateWithString(\1, \2, \3) ->> _                                                   # Cette date est invalide.

TEST: {{29 février 2011}}


__[i]/date(date_journée_jour_mois_année1)__
    (lundi|m(?:ardi|ercredi)|jeudi|vendredi|samedi|dimanche),? (?:le |)(\d\d?)-(\d\d?)-(\d\d+)  @@0,w,w,$ 
    <<- not after(r"^ +av(?:ant|) +J(?:C|ésus-Christ)") and not checkDay(\1, \2, \3, \4)
    -1>> =getDay(\2, \3, \4)                                                                        # Le jour de la date suivante est incorrect.

TEST: {{mercredi}}, le 10-06-2014                                         ->> mardi


__[i]/date(date_journée_jour_mois_année2)__
    (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,$ 
    <<- not after(r"^ +av(?:ant|) +J(?:C|ésus-Christ)") and not checkDayWithString(\1, \2, \3, \4)
    -1>> =getDayWithString(\2, \3, \4)                                                              # Le jour de la date suivante est incorrect.

TEST: {{mercredi}}, le 10 juin 2014                                       ->> mardi
TEST: {{lundi}}, 18 août 1912                                             ->> dimanche
TEST: lundi, 18 août 1912 avant Jésus-Christ (date imaginaire)


__[i]/date(date_mois_31)__ 31 (avril|juin|septembre|novembre)  @@3
    <<- ->> 30 \1                                                                                   # Cette date est invalide. Il n’y a que 30 jours en \1. 

TEST: le {{31 avril}}


__[i]/date(date_février)__ 3[01] février
    <<- ->> 28 février|29 février                                                                   # Cette date est invalide. Il n’y a que 28 ou 29 jours en février. 

TEST: le {{30 février}}



#
# //////////////////////////////////////// PRÉPROCESSEUR ////////////////////////////////////////
# épuration des signes inutiles et quelques simplifications
#

# fin de phrase
__<s>__  [.?!:;…][ .?!… »”")]*$  <<- ~>> *

# début de phrase
__<s>__  ^ *[-–—] <<- ~>> *

# Guillemets et exposants
__<s>__  [«»“”"„`¹²³⁴⁵⁶⁷⁸⁹⁰]+ <<- ~>> *

# Chapitres et références
__<s>__  [[({][\dIVXLCDM]+, \d+[])}]   <js>[\[\(\{][\dIVXLCDM]+, \d+[\]\)\}]</js>   <<- ~>> *

# simplification des mots grammaticaux élidés
__[i>__  (lorsqu|puisqu|quoiqu|jusqu|qu)’ @@0 <<- ~>> \1

# le, la ou les chose(s)
__[i>__  l[ea] ou les {w_2}([(]s[)]) @@$ <<- ~1>> s
__[i]__  l(e ou la|a ou le) {w_2} @@1 <<- ~1>> ’

# les références aux notes
__[i]__  [a-zéèâàôîù][a-zéèâàôîù-]+(\d+) @@$ <<- not morph(\0, ":", False) ~1>> *

# faux positifs avec adverbes de négation
__[i]__  pas mal <<- not morph(word(-1), ":D", False) ~>> *
__[i]__  pas assez ({w_2}) @@$ <<- morph(\1, ":A", False) and not morph(word(-1), ":D", False) ~>> *

# faux positifs avec «à chez»
__[i]__  de chez \w+ (?:à|jusqu à) chez (?:moi|toi|lui|elles?|eux|nous|vous) <<- ~>> * 
__[i]__  (jusqu à|de) chez @@0 <<- ~1>> *

# faux positifs
__[i]__  en tout et pour tout <<- ~>> *
__[i]__  au (sortir) de?s?  @@3 <<- ~1>> *
__[i]__  au revoir <<- ~>> au_revoir

# singletons entre parenthèses / crochets / accolades
__<s>__  [(]\w+[)] <js>\([a-zA-Z]+\)</js> <<- ~>> *
__<s>__  [{]\w+[}] <js>\{[a-zA-Z]+\}</js> <<- ~>> *
__<s>__  [[]\w+[]] <js>\[[a-zA-Z]+\]</js> <<- ~>> *

# Avocats
__[s]__  (Me) [A-ZÉÂÔÈ][\w-]+ @@0 <<- ~1>> *

# Évènements
__[s]__  Mai 68 <<- ~>> Mai-68

# Rois, reines, papes et vaniteux du même acabit
__[s]__  [A-ZÉÂÔÈ]\w+ ([XVI]+|I(?:er|ᵉʳ)) @@$ <<- ~1>> *

# Marques
__[i]__  Peugeot (\d0\d\d?) @@$ <<- ~1>> *

# alors que / dès lors que (éviter d’accorder un participe passé avec un pseudo-COD antérieur)
__[i]__  (alors|dès lors) que?  @@0 <<- ~1>> _

# Fusion des mots “multiples” (expérimental)
__[s]__  [A-Z][a-z]+ [A-Z][a-z]+
    <<- spell(\0.replace(" ", "_")) ~>> =\0.replace(" ", "_")


TEST: New York {{étaient}} {{devenue}} la plaque tournante de tous les trafics.



#
# //////////////////////////////////////// DÉSAMBIGUÏSATEUR ////////////////////////////////////////
#

__[i]__  ne +(?:l(?:es? |eurs? |ui |a |’)|[nv]ous |)({w_1}) @@$
    <<- not morph(\1, ":(?:O[sp]|X)", False) =>> select(\1, ":V")
__[i]__  n’({w_1}) @@2
    <<-  =>> select(\1, ":V")
__[i]__  d(?:e +|’)({w_1}) @@$
    <<- not morph(\1, ":[YD]", False) =>> exclude(\1, ":V")
__[i]__  d’une? ({w_1}) @@$
    <<-  =>> exclude(\1, ":V")
__[i]__  (?:des|chaque|quelques?|cet(?:te|)) +({w_1}) @@$
    <<-  =>> exclude(\1, ":V")
__[i]__  de la ({w_2}) @@6
    <<- not morph(\1, ":Y", False) =>> exclude(\1, ":V")
__[i]__  de (?:tel(?:le|)s?|ce(?:tte|t|s)|[ts](?:a|es)|m(?:on|a|es)|[nv]o(?:tre|s)|plein) +({w_2})  @@$
    <<-  =>> exclude(\1, ":V")
__[i]__  très +({w_2}) @@$
    <<-  =>> exclude(\1, ":[123][sp]")
__[i]__  dans
    <<- not morph(word(-1), ":D.*:p|>[a-z]+ièmes ", False, False) =>> select(\0, ":P")

TEST: il s’agit d’{{un}} {{anagramme}}



#
# //////////////////////////////////////// RÈGLES DE CONTRÔLE ////////////////////////////////////////
#


############################## LIAISONS - TRAITS D’UNION ##############################

__<i]/tu(tu_t_euphonique1)__
    (-t[’' ])(il|elle|on)  @@0,$  <<- -1>> -t-      # Pour le “t” euphonique, il faut deux traits d’union.
__<i]/tu(tu_t_euphonique2)__
    ( t[-’' –—])(il|elle|on)  @@0,$  <<- -1>> -t-   # Pour le “t” euphonique, il faut deux traits d’union.
__<i]/tu(tu_t_euphonique3)__
    ([- ]t[-’'])tu  @@0
    <<- -1>> -                                      # Le “t” euphonique n’est pas nécessaire avec “tu”.|http://66.46.185.79/bdl/gabarit_bdl.asp?T1=t+euphonique
    <<- ~>> -tu
__<i]/tu(tu_t_euphonique4)__
    ([- ]t[-’'])(?:ils|elles)  @@0
    <<- -1>> -                                      # Le “t” euphonique ne s’emploie qu’avec “il”, “elle” ou “on” dans certains cas.|http://66.46.185.79/bdl/gabarit_bdl.asp?T1=t+euphonique
    <<- ~>> -\1
__<i]/tu(tu_t_euphonique5)__
    [td]([- ]t[-’'])(?:il|elle|on)  @@1
    <<- -1>> -                                      # Le “t” euphonique est superflu quand le verbe se termine par “t” ou “d”.|http://66.46.185.79/bdl/gabarit_bdl.asp?T1=t+euphonique
#    <<- ~>> -\2
__<i]/tu(tu_t_euphonique6)__
    ([–—−]t[–—−])(?:ils?|elles?|on)  @@0
    <<- -1>> -t-                                    # Utilisez les traits d’union ordinaires. Les tirets cadratins et demi-cadratins (ou le signe moins) sont inutiles ici.
    <<- ~1>> -t-
__<i]/tu(tu_t_euphonique7)__
    [aec](-(il|elle|on))  @@1,2  <<- -1>> -t-\2     # Il faut un “t” euphonique.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?T1=t+euphonique

TEST: va{{ t’}}il y parvenir ?                          ->> -t-
TEST: A{{ t’}}elle soif ?                               ->> -t-
TEST: A{{ t-}}elle faim ?                               ->> -t-
TEST: a{{ t'}}elle                                      ->> -t-
TEST: a{{-t'}}il                                        ->> -t-
TEST: a{{-t }}il.                                       ->> -t-
TEST: a{{ t’}}il.                                       ->> -t-
TEST: a{{ t-}}on.                                       ->> -t-
TEST: donne{{ t-}}ils                                   ->> -
TEST: donne{{-t }}il                                    ->> -t-
TEST: vient{{-t-}}il                                    ->> -
TEST: viendras{{-t-}}tu                                 ->> -
TEST: Viendront{{ t-}}ils                               ->> -
TEST: viennent{{ t-}}ils                                ->> -
TEST: mangent{{-t-}}elles                               ->> -
TEST: Ont{{ t’}}ils                                     ->> -
TEST: Ont{{-t’}}ils                                     ->> -
TEST: l’ont{{ t’}}ils vu ?                              ->> -
TEST: exploite{{−t−}}il les ressources numériques       ->> -t-
TEST: vainc{{-il}} ses ennemis aisément                 ->> -t-il


__[i]/tu(tu_va_t_en)__              va[ -]t[ -]en(?! guerre) <<- ->> va-t’en                        # Une apostrophe est nécessaire (s’en aller).
__[i]/tu(tu_va_t_en_guerre)__       va[ -]t[’' -]en guerres? <<- ->> va-t-en-guerre                 # Va-t-en-guerre (invariable) : des traits d’union sont nécessaires.

TEST: {{Va-t-en}}, c’en est assez.
TEST: Un {{va-t’en guerre}}, on ne peut pas lui faire confiance.
TEST: Les {{va-t-en guerre}} sont de sortie.


### Traits d’union douteux
__[i]/tu(tu_trait_union_douteux)__
    ({w1})(?:--|—|–)({w1})  @@0,$
    <<- spell(\1+"-"+\2) and analyse(\1+"-"+\2, ":", False) ->> \1-\2                               # Trait d’union : un tiret simple suffit.

TEST: Nous préparons une {{contre–attaque}}.


### ce / cet / cette / ces + nom + là
__[i]/tu(tu_ce_cette_ces_nom_là1)__
    c(?:e[st]?|ette) (({w_2}) là)(?! où)  @@$,w <<- morph(\2, ":[NB]", False) -1>> \2-là            # Il manque probablement un trait d’union.
__[i]/tu(tu_ce_cette_ces_nom_là2)__
    c(?:e[st]?|ette) (({w_2}) la)  @@$,w <<- morph(\2, ":[NB]", False) and not word(1) -1>> \2-là   # Il manque probablement un trait d’union.

TEST: Ces {{trois là}} sont incollables.
TEST: Je connais bien cette {{sensation là}}.
TEST: Laisse ce chiot là où il est !


### Préfixes
__[i]/tu(tu_préfixe_ex)__
    ex ({w2}) @@$  <<- morph(\1, ":N") and not re.search("(?i)^(?:aequo|nihilo|cathedra|absurdo|abrupto)", \1)
    ->> ex-\1                                                                                       # S’il s’agit d’un seul mot, il manque un trait d’union.

TEST: Son {{ex ami}} est un vrai cauchemar.
TEST: Ton ex donne du fil à retordre.


__[i]/tu(tu_préfixe_mi)__
    mi ({w2}) @@$  <<- morph(\1, ":[NAQ]", False) ->> mi-\1                                         # S’il s’agit d’un seul mot, il manque un trait d’union.    

TEST: J’ai été engagé pour un {{mi temps}}.


__[i]/tu(tu_préfixe_quasi)__
    (?:l(?:es?|a|eurs?)|ce(?:tte|t|s|)|des?|m(?:a|on|es)|[ts](?:es|a)) (quasi ({w1}))  @@$,$ 
    <<- 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.
    ~1>> \2

TEST: leurs {{quasi indifférences}}


__[i]/tu(tu_préfixe_semi)__
    semi ({w2})  @@$ <<- morphex(\1, ":[NAQ]", ":G") ->> semi-\1                                   # S’il s’agit d’un seul mot, il manque un trait d’union.

TEST: en {{semi liberté}}


__[i]/tu(tu_préfixe_xxxo)__
    (franco|américano|anglo|belgo|électro|ferro|hydro|labio|macro|magnéto|médico|micro|nano|néo|neuro|paléo|physico|politico|rétro|rhino|sino|socio|stéréo) ({w1})  @@0,$
    <<- spell(\1+"-"+\2) and analyse(\1+"-"+\2, ":", False)
    ->> \1-\2                                                                                       # S’il s’agit d’un seul mot, il manque un trait d’union.

TEST: des {{franco américains}}
TEST: {{franco américaine}}                             ->> franco-américaine
TEST: {{ferro électrique}}                              ->> ferro-électrique
TEST: {{rétro ingénierie}}.                             ->> rétro-ingénierie


__[i]/tu(tu_préfixe_pseudo)__
    pseudo ({w_2}) @@$
    <<- morph(\1, ":N") ->> pseudo-\1                                                               # Si vous voulez évoquer le simulacre de “\1”, mettez un trait d’union.
    <<- morph(\1, ":N") ~>> \1
__[i]__  pseudo-({w_2}) @@$ <<- ~>> \1

TEST: il n’avait contracté qu’un {{pseudo mariage}}.


__[i]/tu(tu_préfixe_divers)__
    (anti|auto|arrière|avant|demi|extra|intra|multi|non|post|sans|sous) ({w1})  @@0,$
    <<- spell(\1+"-"+\2) and analyse(\1+"-"+\2, ":", False) and morph(word(-1), ":D", False, not bool(re.search("(?i)^s(?:ans|ous)$", \1)))
    ->> \1-\2                                                                                       # Il manque probablement un trait d’union.

TEST: il a pris une balle dans l’{{arrière train}}.


__[i]/tu(tu_mots_composés)__
    (attrape|garde|porte|brise|cache|casse|chauffe|contre|coupe|cure|croque|entre|essuie|lance|lave|lève|marque|pare|passe|perce|pèse|porte|poste|pousse|presse|protège|ramasse|serre|taille|tire|tourne|traîne|vice|vide) ({w1})  @@0,$
    <<- spell(\1+"-"+\2) and analyse(\1+"-"+\2, ":N", False) and morph(word(-1), ":(?:D|V0e)", False, True)
    and not (morph(\1, ":G", False) and morph(\2, ":[GYB]", False))
    ->> \1-\2                                                                                       # Il manque probablement un trait d’union.

TEST: ce sont des {{lève tard}}.


### Tri 1
__[i]/tu(tu_à_tout_va)__                    [àa] tout vas? <<- ->> à tout-va                        # Il manque un trait d’union.
__[i]/tu(tu_aller_retour)__                 allers? retours? <<- ->> =\0.replace(" ", "-")          # Il manque un trait d’union.
__[i]/tu(tu_arc_en_ciel)__                  arcs? en ciel <<- ->> =\0.replace(" ", "-")             # Il manque les traits d’union.
__[i]/tu(tu_après_demain)__                 après demain <<- ->> après-demain                       # Il manque un trait d’union.
__[i]/tu(tu_au_préposition)__               au (delà|dehors|desso?us|devant) @@$ <<- ->> au-\1      # Il manque un trait d’union.
__[i]/tu(tu_avant_hier)__                   avant hier <<- ->> avant-hier                           # Il manque un trait d’union.
__[i]/tu(tu_c_est_à_dire)__                 c’est [àa] dire <<- ->> c’est-à-dire                    # Il manque les traits d’union.
__[i]/tu(tu_chef_d_œuvre_lieu)__            chef (lieu|d’œuvre) @@$ <<- ->> chef-\1                 # Il manque un trait d’union.
__[i]/tu(tu_celui_celle_là_ci)__    ce(?:lles?|lui|ux) (?:là|[cs]i) <<- ->> =\0.replace(" ", "-").replace("si", "ci")     # Il manque un trait d’union.
__[i]/tu(tu_centre_ville)__                 centres? villes? <<- ->> centre-ville|centres-villes    # Il manque un trait d’union.
__[i]/tu(tu_ci_dessous_devant_contre)__     ci (desso?us|devant|contre) @@$ <<- ->> ci-\1           # Il manque un trait d’union.
__[i]/tu(tu_de_ci_de_là)__                  de ci,? de là <<- ->> de-ci de-là|de-ci, de-là          # Il manque les traits d’union.
__[i]/tu(tu_est_ce)__
    (?<![cCdDlL][’'])est ce(?! +qui )
    <<- morph(word(-1), ":Cs", False, True) ->> est-ce                                              # Il manque un trait d’union.
__[i]/tu(tu_en_contre_bas_partie)__     en contre (bas|partie) @@$ <<- ->> en contre\1|en contre-\1 # Mettez un trait d’union ou soudez.
__[i]/tu(tu_en_contrepoint)__           en (contre[- ]point) @@$ <<- -1>> contrepoint               # Soudez.
__[i]/tu(tu_état_major)__               état major <<- ->> état-major                               # Il manque un trait d’union.
__[i]/tu(tu_grand_chose)__              grand chose <<- ->> grand-chose                             # Il manque un trait d’union.
__[i]/tu(tu_grand_père_mère)__          grands? (?:père|mère)s? <<- ->> =\0.replace(" ", "-")       # Il manque un trait d’union.
__[i]/tu(tu_ici_bas)__                  ici bas <<- ->> ici-bas                                     # Il manque un trait d’union.
__[i]/tu(tu_jusque_là)__                jusque là <<- ->> jusque-là                                 # Il manque un trait d’union.
__[i]/tu(tu_là_adverbe)__       là (bas|haut|desso?us|dedans|devant|derrière) @@3 <<- ->> là-\1     # Il manque un trait d’union.
__[i]/tu(tu_n_est_ce_pas)__             n’est(?: ce[ -]pas|-ce-pas) <<- ->> n’est-ce pas            # Un trait d’union.
__[i]/tu(tu_nord_sud_ouest)__           (nord|sud) ouest @@0 <<- ->> \1-ouest                       # Il manque un trait d’union.
__[i]/tu(tu_nord_sud_est)__             (nord|sud) est @@0 <<- not word(1) ->> \1-est               # Il manque un trait d’union.
__[i]/tu(tu_outre_mer)__                outre mer <<- ->> outre-mer                                 # Il manque un trait d’union.
__[i]/tu(tu_ouï_dire)__                 ou[iï] dire <<- morph(word(-1), ":G") ->> ouï-dire          # Il manque un trait d’union.
__[i]/tu(tu_par_préposition)__
    par (desso?us|devant|delà|derrière|dehors|dedans|devers)  @@$ 
    <<- ->> par-\1                                                                                  # Il manque un trait d’union.
__[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).
__[i]/tu(tu_prêt_à_porter)__
    (prêts?) à porter  @@0 
    <<- before(r"(?i)\b(?:les?|du|des|un|ces?|[mts]on) +") ->> \1-à-porter                          # Il manque les traits d’union.
__[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.
__[i]/tu(tu_quelques_uns_unes)__       quelques (une?s) @@$ <<- ->> quelques-\1                     # Il manque un trait d’union.
__[i]/tu(tu_plus_moins_values)__       (plus|moins) (values?)  @@0,$  <<- ->> \1-\2                 # Il manque un trait d’union.
__[i]/tu(tu_rez_de_chaussée)__         rez de chaussée <<- ->> rez-de-chaussée                      # Il manque un trait d’union.
__[i]/tu(tu_sans_gêne)__        ({w1}) (sans gêne) @@0,$ <<- morph(\1, ":D", False) -2>> sans-gêne  # Il manque un trait d’union.
__[i]/tu(tu_science_fiction)__         science fiction <<- ->> science-fiction                      # Il manque un trait d’union.
__[i]/tu(tu_soi_disant)__              soi disant
    <<- not ( morph(word(-1), ":R", False) and after("^ +qu[e’]") ) ->> soi-disant                  # Il manque un trait d’union.
__[i]/tu(tu_sous_jacent)__             sous (jacente?s?) @@$ <<- ->> sous-\1                        # Il manque un trait d’union.
# sur-mesures
__[i]/tu(tu_vice_président_roi)__      vice (présidents?|rois?) @@$ <<- ->> vice-\1                 # Il manque un trait d’union.
__[i]/tu(tu_vis_à_vis)__               vis [àa] vis <<- ->> vis-à-vis                               # Il manque les traits d’union.
__[i]/tu(tu_week_end)__                week (ends?) @@$ <<- ->> week-\1                             # Il manque un trait d’union.

TEST: Ils font des tests {{à tout va}}
TEST: marre de faire des {{allers retours}}
TEST: à ce {{moment là}}                                                        ->> moment-là
TEST: une {{plus value}}                                                        ->> plus-value
TEST: Il est {{en-dessous}} de tout.                                            ->> en dessous
TEST: Ils sont {{en-deçà}} de tout                                              ->> en deçà
TEST: {{Là bas}}.                                                               ->> Là-bas 
TEST: {{Au dessus}}                                                             ->> Au-dessus
TEST: {{ci dessus}}                                                             ->> ci-dessus
TEST: {{par dessus}}                                                            ->> par-dessus
TEST: {{au delà}}                                                               ->> au-delà
TEST: {{ci devant}}.                                                            ->> ci-devant
TEST: Il faisait froid cet {{hiver la}}.                                        ->> hiver-là
TEST: {{Ceux la}} vont à la pêche.                                              ->> Ceux-là
TEST: {{est ce}} que c’est grave ?                                              ->> est-ce
TEST: qu’{{est ce}} que c’est ?                                                 ->> est-ce
TEST: {{en contre bas}}
TEST: mes deux {{grands pères}} sont décédés
TEST: elles vont viennent {{de ci, de là}}.
TEST: mais {{celles là}} sont différentes.
TEST: seulement par {{ouï dire}}.
TEST: ne vois-tu pas que c’est un {{chef d’œuvre}} ?
TEST: Mieux qu’{{avant hier}}.
TEST: nous irons là-bas {{après demain}}.
TEST: L’{{état major}} n’a pas encore tranché la question.
TEST: {{ici bas}}, n’attends rien de bon, à moins que…
TEST: un bel enfoiré, {{c’est à dire}} un hypocrite
TEST: {{jusque là}}, tout va bien
TEST: regarde l’{{arc en ciel}}
TEST: ils sont allés au {{centre ville}}.
TEST: Il ne connaît pas {{grand chose}} à tout ça.
TEST: en {{contre point}},
TEST: {{Quelques unes}} sont très habiles.
TEST: Tout ce que nous faisons {{par ci, par là}}.
TEST: La papesse du {{prêt à porter}} viendra demain.
TEST: sur cette {{plate forme}}, rien ne fonctionne
TEST: Un énorme {{plus value}}.
TEST: Habiter au {{rez de chaussée}}, quelle horreur.
TEST: {{Apporte moi}} ce dictionnaire.                  ->> Apporte-moi
TEST: Ce {{sans gêne}} mérite une bonne leçon
TEST: C’est de la {{science fiction}}.
TEST: Tout ce {{soi disant}} esprit religieux
TEST: {{sous jacent}}                                   ->> sous-jacent
TEST: Il a été nommé {{vice président}}
TEST: Que vas-tu faire {{vis à vis}} d’eux              ->> vis-à-vis
TEST: un super {{week end}}                             ->> week-end
TEST: ils sont partis {{outre mer}}
TEST: elles sont allées au {{sud ouest}}
TEST: {{nord est}}
TEST: elles reviendront, {{n’est ce pas}} ?


### Tri 2
__[i]/tu(tu_beaux_arts)__       (?:[ld]es|aux) (beaux arts) @@$ <<- -1>> beaux-arts                 # Il manque un trait d’union.
__[i]/tu(tu_basket_volley)__    (basket|volley) ball @@0 <<- ->> \1-ball                            # Il manque un trait d’union.
__[i]/tu(tu_pronom_même)__      (lui|elle|[mts]oi|vous) même @@0 <<- not after("^ +s(?:i |’)") ->> \1-même  # Il manque un trait d’union si “même” se rapporte à “\1”.|https://fr.wiktionary.org/wiki/moi-m%C3%AAme
__[i]/tu(tu_pronom_mêmes)__     (nous|vous|eux|elles) mêmes @@0 <<- ->> \1-mêmes                                        # Il manque un trait d’union.
__[i]/tu(tu_va_et_vient)__      (?:[lcd]es?|un|[mts]on|leurs?|[nv]os|quels?) (va et vien[ts]) @@$ <<- -1>> va-et-vient  # Il manque les traits d’union.

TEST: les {{beaux arts}}
TEST: je déteste le {{basket ball}}
TEST: {{Lui même}}                                    ->> Lui-même
TEST: {{eux mêmes}}.                                  ->> eux-mêmes
TEST: un {{va et vient}} incessant me casse la tête


### Noms propres
__[u]/tu(tu_Royaume_Uni)__      Royaume Uni <<- ->> Royaume-Uni             # Il manque un trait d’union (s’il s’agit de l’État englobant la Grande-Bretagne et l’Irlande du Nord).
__[u]/tu(tu_Grande_Bretagne)__  Grande Bretagne <<- ->> Grande-Bretagne     # Il manque un trait d’union (s’il s’agit de l’État englobant l’Angleterre, l’Écosse et le pays de Galles).
__[u]/tu(tu_Pays_Bas)__                 (?:[ld]es|aux) (Pays Bas) @@$ <<- -1>> Pays-Bas                         # Il manque un trait d’union.
__[u]/tu(tu_Aix_en_Provence)__          Aix en Provence <<- ->> Aix-en-Provence                                 # Il manque un trait d’union.
__[u]/tu(tu_Bosnie_Herzégovine)__       Bosnie Herzégovine <<- ->> Bosnie-Herzégovine                           # Il manque un trait d’union.
__[u]/tu(tu_Charente_Maritime)__        Charente Maritime <<- ->> Charente-Maritime                             # Il manque un trait d’union.
__[u]/tu(tu_Clermont_Ferrand)__         Clermont Ferr?an[dt] <<- ->> Clermont-Ferrand                           # Il manque un trait d’union.
__[u]/tu(tu_Colombie_Britannique)__     Colombie Britannique <<- ->> Colombie-Britannique                       # Il manque un trait d’union.
__[u]/tu(tu_États_Unis)__               États Unis <<- ->> États-Unis                                           # S’il s’agit des USA, il manque un trait d’union.
__[u]/tu(tu_Franche_Comté)__            Franche Comté <<- ->> Franche-Comté                                     # Il manque un trait d’union.
__[u]/tu(tu_Haute_Département)__        Haute (Garonne|Loire|Marne|Normandie|Corse|Vienne) @@$ <<- ->> Haute-\1 # Il manque un trait d’union.
__[u]/tu(tu_Île_de_France)__            [ÎI]le [dD]e France <<- ->> Île-de-France                               # Il manque les traits d’union.
__[u]/tu(tu_Maison_Blanche)__           Maison Blanche <<- ->> Maison-Blanche                           # Il manque un trait d’union.
__[u]/tu(tu_Moyen_Orient)__             Moyen Orient <<- ->> Moyen-Orient                               # Il manque un trait d’union.
__[u]/tu(tu_Nouveau_Brunswick)__        Nouveau Brunswick <<- ->> Nouveau-Brunswick                     # Il manque un trait d’union.
__[u]/tu(tu_Nouvelle_Qqch)__            Nouvelle (Zélande|Calédonie|Orléans) @@$ <<- ->> Nouvelle-\1    # Il manque un trait d’union.
__[u]/tu(tu_Pas_de_Calais)__            Pas de Calais <<- ->> Pas-de-Calais                             # Il manque les traits d’union.
__[u]/tu(tu_Rhône_Alpes)__              Rhône Alpes <<- ->> Rhône-Alpes                                 # Il manque les traits d’union.
__[u]/tu(tu_Saône_et_Loire)__           Saône et Loire <<- ->> Saône-et-Loire                           # Il manque un trait d’union.
__[u]/tu(tu_Jésus_Christ)__             Jésus Christ <<- ->> Jésus-Christ                               # Il manque un trait d’union.
__[u]/tu(tu_Jean_prénom)__
    Jean (Baptiste|Claude|François|Jacques|Louis|Luc|Marc|Marie|Michel|Paul|Philippe|Pierre)  @@$ 
    <<- ->> Jean-\1                                                                                 # Il manque un trait d’union.
__[u]/tu(tu_Marie_Prénom)__
    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)  @@$ 
    <<- ->> Marie-\1                                                                                # Il manque un trait d’union.
__[s]/tu(tu_St_Ste_Bidule)__
    ((Ste?) )[A-ZÉÈÎ]\w+ @@0,0
    <<- -1>> \2-
    # 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.

TEST: Émigrer au {{Royaume Uni}}
TEST: Étudier en {{Grande Bretagne}}
TEST: Vivre aux {{Pays Bas}}
TEST: Il passe par {{Aix en Provence}}
TEST: Qui se souvient de la {{Bosnie Herzégovine}} ?
TEST: en {{Charente Maritime}}
TEST: À {{Clermont Ferrand}}
TEST: habiter la {{Colombie Britannique}}
TEST: Il fait son stage étudiant aux {{États Unis}}
TEST: Des fromages délicieux de {{Franche Comté}}
TEST: La {{Haute Garonne}}
TEST: L’{{Île de France}} est surpeuplée.
TEST: Un nouveau président à la {{Maison Blanche}}
TEST: La guerre au {{Moyen Orient}}
TEST: Il ne connaît au {{Nouveau Brunswick}}
TEST: Elle a visité la {{Nouvelle Orléans}}
TEST: Vivre dans le {{Pas de Calais}}
TEST: Des vacances en {{Rhône Alpes}}
TEST: Elle déménage en {{Saône et Loire}}
TEST: {{Jésus Christ}}, dernier héros de l’Antiquité
TEST: Elle a quitté {{Jean Paul}}.
TEST: {{Marie Hélène}} s’est perdue dans le dédale
TEST: Elle va prier à {{Ste }}Catherine.


### nombres
__[i]/tu(tu_nombres)__
    (?:dix|trente|quarante|cinquante|soixante|septante|octante|huitante|nonante) (?:deux|trois|six|sept|huit|quatre?|cinqu?|neu[fv])(?:ièmes?|)
    <<- ->> =\0.replace(" ", "-")                                                                   # Il manque un trait d’union.
__[i]/tu(tu_nombres_vingt)__
    vingts? (?:deux|trois|six|sept|huit|quatre?|cinqu?|neu[fv])(?:ièmes?|)
    <<- not before("(?i)quatre $") ->> =\0.replace(" ", "-").replace("vingts", "vingt")             # Il manque un trait d’union.
__[i]/tu(tu_nombres_soixante)__
    soixante (?:douze?|treize?|quatorze?|quinze?|seize?|dix(?:[- ]sept|[- ]huit|[- ]neu[fv]|))(?:ièmes?|)
    <<- ->> =\0.replace(" ", "-")                                                                   # Trait(s) d’union manquant(s).
__[i]/tu(tu_nombres_octante)__
    quatre[- ]vingts? (?:une?|deux|trois|six|sept|huit|quatre?|onze?|douze?|treize?|quatorze?|quinze?|seize?|cinqu?|neu[fv]|dix(?:[- ]sept|[- ]huit|[- ]neu[fv]|))(?:ièmes?|)
    <<- ->> =\0.replace(" ", "-").replace("vingts", "vingt")                                        # Trait(s) d’union manquant(s).
#__[i]tu(tu_nombre et un)__
#    (vingt|trente|quarante|cinquante|soixante|septante|octante|huitante|nonante)[- ](une?|unièmes?)
#   ->> \1 et \2|\1-et-\2                                      # Il manque « et ». (Si vous suivez la réforme orthographique, utilisez des traits d’union.)

TEST: Il en veut {{vingts}} !                 ->> vingt
TEST: Y a-t-il {{quarante deux}} pages ?      ->> quarante-deux
TEST: J’en veux {{quatre-vingt}} !            ->> quatre-vingts
TEST: Non, {{quatre-vingts deux}} !           ->> quatre-vingt-deux
TEST: {{Quatre vingts deux}}.                 ->> Quatre-vingt-deux
TEST: cent {{mot}}                            ->> mots
TEST: cinquante {{mot}}                       ->> mots
TEST: mille cinquante {{mot}}                 ->> mots
TEST: deux {{cents}} trois mots               ->> cent
TEST: il y a {{cents}} mots                   ->> cent
TEST: {{cents}} mots                          ->> cent
TEST: ils mangent {{cents}} têtes             ->> cent
TEST: deux {{tête}}                           ->> têtes
TEST: {{soixante quatorze}}, c’est trop
TEST: Mais {{vingt trois}}, c’est assez
TEST: La poïesis, en grec, est ce qui permet de faire passer n’importe quoi du non-être à l’être


### Pas de trait d’union
__[i]/tu(tu_deux_tiers)__           deux-tiers <<- ->> deux tiers                                               # Pas de trait d’union.
__[i]/tu(tu_en_bas_haut)__          en-(bas|haut|de(?:ssous|hors|çà)) @@$ <<- ->> en \1                         # Pas de trait d’union.
__[i]/tu(tu_peu_à_peu)__            peu-[aà]-peu <<- ->> peu à peu                                              # Pas de trait d’union.
__[i]/tu(tu_s_il_te_plaît)__        s’il-(?:[tm]e|[vn]ous)-pla[îi]t <<- ->> =\0.replace("-", " ")               # Pas de traits d’union.
__[i]/tu(tu_tout_à_fait)__          tout-à-fait <<- ->> tout à fait                                             # Pas de trait d’union.
__[i]/tu(tu_trois_quarts)__         trois-quarts? <<- not morph(word(-1), ":D", False, False) ->> trois quarts  # Pas de trait d’union.
__[i]/tu(tu_parce_que)__            parce-que? <<- ->> =\0.replace("-", " ")                                    # Pas de trait d’union.
__<i]/tu(tu_qqch_ça_aussi_donc)__   \b-(?:ç[aà]|aussi|donc) <<- ->> =\0.replace("-", " ")                       # Pas de trait d’union.
__[i]/tu(tu_d_entre_pronom)__       d’entre-(?:nous|vous|eux|elles) <<- ->> =\0.replace("-", " ")               # Pas de trait d’union.

TEST: J’en ai déjà fait les {{deux-tiers}}.
TEST: {{en-haut}} de la montagne.
TEST: On va finir par s’y faire, {{peu-à-peu}}.
TEST: Venez vite, {{s’il-vous-plait}}.
TEST: Elles sont {{tout-à-fait}} ravies.
TEST: {{Trois-quarts}} des participantes y sont parvenues.
TEST: {{Parce-qu}}’ils y croient plus que tout.
TEST: Oui, ça{{-aussi}}.
TEST: Peu {{d’entre-nous}} savent ce dont il s’agit.


__[i]/tu(tu_y_attaché)__
    (y[’-])({avoir_etre})(?:-(?:t-|)(?:ils?|elles?|je|tu|on|nous|vous)|) @@0,2
    <<- morph(\2, ":V0|>en ", False) -1>> "y "                                                      # Ici, ni apostrophe, ni trait d’union.

TEST: {{Y’}}a trop de malheureux sur Terre.
TEST: {{Y’}}en a marre, de ces conneries.
TEST: {{y-}}a-t-il des beignets ?                     ->> "y "


# Dialogues
__[u]/virg(virgule_dialogue_après_nom_propre)__
    ([A-ZÉÈ][\w-]+) (\w+-(?:moi|toi|l(?:ui|a|e(?:ur|s|))|nous|vous|je|tu|ils|elles))  @@0,$
    <<- morphex(\1, ":M", ":G") and not morph(\2, ":N", False) and not word(-1)
    -1>> \1,                                                                        # Dialogue ? Ajoutez une virgule pour mettre en incise la personne à qui s’adresse la réplique.

TEST: {{Maria}} donnez-vous du temps ?
TEST: {{Marion}} passe-moi le sel.
TEST: {{Paul}} prends-lui la main.
TEST: Alexandre tient-il ses généraux ?
TEST: Alexandra vient-elle ?


__[u]/virg(virgule_dialogue_avant_nom_propre)__
    ({w1})(-l(?:es?|a)(?:-(?:[mt]oi|[nv]ous|lui|leur)|)) ([A-ZÉÈ][\w-]+)   @@0,*,$
    <<- morph(\1, ":E", False) and morph(\3, ":M", False)
    -2>> \2,                                                                        # Dialogue. Ajoutez une virgule pour mettre en incise la personne à qui s’adresse la réplique.

TEST: viens et donne{{-le}} Paul.
TEST: donne{{-le-moi}} Camille.
TEST: donne-moi Alice.
TEST: Tape-toi Patrick.


__[u]/virg(virgule_après_verbe_COD)__
    l(?:es?|a) ({w_2}(?:[ei]r|re)) ([A-ZÉÂÔÈ][\w-]+)  @@w,$
    <<- morph(\1, ":Y", False) and morph(\2, ":M", False) and not morph(word(-1), ">à ", False, False)
    -1>> \1,                                                                                        # Une virgule est probablement souhaitable.

TEST: Tu vas les {{donner}} Rachel.
TEST: Il va la {{tuer}} Paul.
TEST: Cependant les promesses n’engagent que ceux qui les croient, comme aimait à le dire Jacques Chirac.


# Apostrophe manquante (voir règle à la passe précédente)
__<s>/typo(typo_apostrophe_manquante_audace2)__
    ^ *([LDSNCJMTÇ] )[aeéiouhAEÉIOUHyîèêôûYÎÈÊÔÛ]  @@0
    <<- option("mapos") -1>> =\1[:-1]+"’"                                                           # Il manque peut-être une apostrophe.

TEST: __mapos__ {{L }}opinion des gens, elle s’en moquait.


## A / À
# accentuation la préposition en début de phrase
__<s]/typo(typo_À_début_phrase1)__
    ^ *(A) (?!t[’-](?:ils?|elles?|on))({w_2})  @@0,$
    <<- morphex(\2, ":[GNAY]", ":(?:Q|3s)|>(?:priori|post[eé]riori|contrario|capella|fortiori) ")
    -1>> À                                                                                          # S’il s’agit de la préposition « à », il faut accentuer la majuscule.
__<s>/typo(typo_À_début_phrase2)__
    ^ *(A) [ldnms]’  @@0  <<- -1>> À                                                                # S’il s’agit de la préposition « à », il faut accentuer la majuscule.
__<s>/typo(typo_À_début_phrase3)__
    ^ *(A) t’(?!il |elle |ont? )  @@0  <<- -1>> À                                                   # S’il s’agit de la préposition « à », il faut accentuer la majuscule.

TEST: {{A}} vaincre sans péril, on triomphe sans gloire.
TEST: — {{A}} n’en plus pouvoir
TEST: {{A}} t’emmener loin de tout ceci.
TEST: A priori, nul ne peut y parvenir sans une aide extérieure.


############################## OCR (expérimental) ##############################

# Nombres
__[s]/ocr(ocr_nombres)__    [\dOI]+
    <<- \0 == "II" ->> 11|Il                                                                        # Erreur de numérisation ?
    <<- __else__ and not \0.isdigit() ->> =\0.replace("O", "0").replace("I", "1")                   # Erreur de numérisation ?

TEST: __ocr__ {{II}} pleut tout le temps.
TEST: __ocr__ En l’an {{2OO1}}, tout commença.


# âge / age
__[i]/ocr(ocr_age)__        ages? <<- ->> =\0.replace("a", "â").replace("A", "Â")                   # Erreur de numérisation ?

TEST: __ocr__ À son {{age}}, on ne sait plus ce qu’on fait.


# autre / antre
__[i]/ocr(ocr_autre)__      antres? <<- ->> =\0.replace("n", "u")                                   # Erreur de numérisation ?

TEST: __ocr__ cet {{antre}} gars lui semblait bien louche.


# avec / aven / arec
__[i]/ocr(ocr_avec)__       a(?:rec|ven) <<- ->> avec                                               # Erreur de numérisation ?

TEST: __ocr__ Elle s’en alla {{arec}} eux sans un regard en arrière.

# avaient / avalent
__[i]/ocr(ocr_avaient)__    avalent <<- ->> avaient                                                 # Erreur de numérisation ?

TEST: __ocr__ Ils {{avalent}} très faim.


# avais / avals / axais
__[i]/ocr(ocr_avis)__       a(?:val|xai)s <<- ->> avais                                             # Erreur de numérisation ?

TEST: __ocr__ j’{{axais}} souvent perdu le contrôle de moi-même, mais jamais à ce point


# car dans / cardans
__[i]/ocr(ocr_car_dans)__   cardans <<- ->> car dans                                                # Erreur de numérisation ?

TEST: __ocr__ On se tut tous, {{cardans}} l’armée on apprend à la boucler.


# chère / obère
__[i]/ocr(ocr_chère)__      obère <<- not before(r"(?i)\b([jnlmts]’|il |on |elle )$") ->> chère     # Erreur de numérisation ?

TEST: __ocr__ cette femme {{obère}} à notre cœur.


# celui / celai
__[i]/ocr(ocr_celui)__      celai <<- not before(r"(?i)\b[jn]e +$") ->> celui                       # Erreur de numérisation ?

TEST: __ocr__ je suis déjà venu et {{celai}} qui viendra encore.


# ces / cos
__[i]/ocr(ocr_ces)__        cos <<- ->> ces                                                         # Erreur de numérisation ?

TEST: __ocr__ {{cos}} problèmes sont insolubles.


# C’était / Celait
__[i]/ocr(ocr_c_était)__    celait <<- ->> c’était                                                  # Erreur de numérisation ?

TEST: __ocr__ {{celait}} perdu d’avance.


# cette / celte
__[i]/ocr(ocr_cette1)__     (celte) ({w_2})  @@0,$ <<- morph(\2, ":N.*:f:s", False) -1>> cette      # Erreur de numérisation ?

TEST: __ocr__ mais {{celte}} femme semblait savoir ce qu’elle faisait.


# cette / cotte
__[i]/ocr(ocr_cette2)__     cotte <<- not morph(word(-1), ":D.*:f:[si]") ->> cette                  # Erreur de numérisation ?

TEST: __ocr__ on poirautait, {{cotte}} mariée n’arrivait pas à se décider.


# Comme / Gomme
__[s]/ocr(ocr_comme)__      Gomme <<- not morph(word(1), ">(?:et|o[uù]) ") ->> Comme                # Erreur de numérisation ?

TEST: __ocr__ {{Gomme}} il était sage à cette époque-là !


# Comment / Gomment
__[s]/ocr(ocr_comment)__    Gomment <<- ->> Comment                                                 # Erreur de numérisation ?

TEST: __ocr__ {{Gomment}} s’en sortir avec tous ces retards qui s’accumulent ?

# contre / coutre / contra
__[i]/ocr(ocr_contre)__     co[un]tr[ea] <<- not re.search("(?i)^contre$", \0) ->> contre           # Erreur de numérisation ?

TEST: __ocr__ elle était {{coutre}} cette idée et le serait toujours.


# dans / bans / clans
__[i]/ocr(ocr_dans1)__      bans <<- not morph(word(-1), ":D.*:p", False, False) ->> dans           # Erreur de numérisation ?
__[s]/ocr(ocr_dans2)__
    (clans) (?:les?|la|ce(?:tte|t|s|)|des?|[mts](?:on|a|es)|leurs?|[nv]os|cha(?:que|cun)|tou(?:tes?|s|t))  @@0
    <<- not morph(word(-1), ":D.*:p", False, False) -1>> dans                                       # Erreur de numérisation ?

TEST: __ocr__ Mais {{bans}} cette ferme, tout était bien organisé.
TEST: __ocr__ sache que, {{clans}} cette ferme, on ne fait que du bio.


# dé / de / dés / des / dès
__[i]/ocr(ocr_de_des1)__    dés?
    <<- \0.endswith("é") and not morph(word(-1), ":D.*:m:[si]", False, False) ->> de                # Erreur de numérisation ?
    <<- \0.endswith("s") and not morph(word(-1), ":D.*:m:p", False, False) ->> des|dès              # Erreur de numérisation ?

TEST: __ocr__ {{dés}} fois, ça ne passe pas
TEST: __ocr__ {{dé}} gros camions circulaient toute la journée


# de / dos
__[i]/ocr(ocr_de_des2)__    dos?
    <<- \0.endswith("o") ->> de                                                                     # Erreur de numérisation ?
    <<- __else__ and not morph(word(-1), ":D.*:[me]", False, False) ->> des|dès                     # Erreur de numérisation ?

TEST: __ocr__ {{dos}} camions cabossés à n’en plus finir


# de la / delà
__[i]/ocr(ocr_de_la)__      delà <<- not before(r"(?i)\bau ") ->> de la|de là                       # Erreur de numérisation ?

TEST: __ocr__ la peinture {{delà}} maison s’écaillait


# doute / cloute
__[i]/ocr(ocr_doute)__      cloute <<- ->> doute                                                    # Erreur de numérisation ?

TEST: __ocr__ Sans aucun {{cloute}}.


# elle / elfe
__[s]/ocr(ocr_elle)__       [eE]lfes?
    <<- \0.endswith("e") and ( morph(word(-1), ":R", False, True) or isNextVerb() ) ->> elle        # Erreur de numérisation ?
    <<- \0.endswith("s") and ( morph(word(-1), ":R", False, True) or isNextVerb() ) ->> elles       # Erreur de numérisation ?

TEST: __ocr__ {{Elfes}} s’ennuyaient à mourir.


# est / ost
__[i]/ocr(ocr_est)__        ost <<- ->> est                                                         # Erreur de numérisation ?

TEST: __ocr__ Le cheval {{ost}} attaché.


# et / cl
__[i]/ocr(ocr_et)__         cl <<- not before("[0-9] +$") ->> et                                    # Erreur de numérisation ?

TEST: __ocr__ elle {{cl}} lui, c’était pour la vie.


# état / étal
__[i]/ocr(ocr_état)__       étals?
    <<- \0.endswith("l") ->> état                                                                   # Erreur de numérisation ?
    <<- __else__ ->> étais|états                                                                    # Erreur de numérisation ?

TEST: __ocr__ Quels {{étals}} sont venus ?


# étaient / étalent
__[i]/ocr(ocr_étaient)__    étalent <<- ->> étaient                                                 # Erreur de numérisation ?

TEST: __ocr__ Ce qu’ils {{étalent}} vraiment, nul ne le savait.


# fille / tille
__[i]/ocr(ocr_fille)__      tille <<- ->> fille                                                     # Erreur de numérisation ?

TEST: __ocr__ Cette {{tille}} n’en avait jamais assez.


# fut / rut
__[i]/ocr(ocr_fut)__        rut <<- ->> fut                                                         # Erreur de numérisation ?

TEST: __ocr__ ce petit {{rut}} traité comme un chien

# il / n
__[s]/ocr(ocr_il)__         (n )([bcdfghjklmnpqrstvwxz][\w-]+)  @@0,$
    <<- not word(-1) and morph(\2, ":(?:O[on]|3s)", False) -1>> "il "                               # Erreur de numérisation ?

TEST: __ocr__ {{n }}contient trop de soufre.


# il / ils / U / Us
__[s]/ocr(ocr_il_ils2)__    Us?
    <<- \0.endswith("s") ->> Ils|ils                                                                # Erreur de numérisation ?
    <<- __else__ ->> Il|il                                                                          # Erreur de numérisation ?

TEST: __ocr__ {{Us}} arrive demain.


# il / i1 / if / 11
__[i]/ocr(ocr_il_ils2)__    [i1][1f]s?
    <<- not \0.endswith("s") ->> Il|il                                                              # Erreur de numérisation ?
    <<- __else__ ->> Ils|ils                                                                        # Erreur de numérisation ?

TEST: __ocr__ {{i1s}} en savent beaucoup trop pour leur propre bien.


# large / largo
__[i]/ocr(ocr_large)__      largos? <<- ->> =\0.replace("o", "e")                                   # Erreur de numérisation ?

TEST: __ocr__ elle pense {{largo}}


# l’ / j’ / Y / I
__[s]/ocr(ocr_lj1)__        (Y[ ’'])([aâeéêëiîïoôuy][\w-]+) @@0,2
    <<- before(r"\w") or not morph(\2, ":Y", False) -1>> l’|L’|j’|J’                                # Erreur de numérisation ?
__[s]/ocr(ocr_lj2)__        ([Ii][ ’'])([aâeéêëiîïoôuy][\w-]+) @@0,2
    <<-  -1>> l’|L’|j’|J’                                                                           # Erreur de numérisation ?

TEST: __ocr__ {{Y’}}arrive demain.
TEST: __ocr__ {{I’}}arrive demain.


# V -> l’
__[s]/ocr(ocr_lv)__         V({w_2}) @@1
    <<- \0.istitle() and spell("v"+\1) and before(r"\w") ->> v\1                                    # Erreur de numérisation ?
    <<- \0.istitle() and spell(\1) and before(r"\w") ->> l’\1                                       # Erreur de numérisation ?

TEST: __ocr__ avec {{Vagile}} méthode de notre ami, tout est possible.
TEST: __ocr__ la {{Vérité}}


# le les / lé / lés
__[i]/ocr(ocr_le_les)__     l[éè]s?
    <<- ->> =\0.replace("é", "e").replace("É", "E").replace("è", "e").replace("È", "E")             # Erreur de numérisation ?

TEST: __ocr__ {{lès}} camions de passage


# les / lai / lei
__[i]/ocr(ocr_lui_les)__    l[ae]i <<- ->> lui|les                                                  # Erreur de numérisation ?

TEST: __ocr__ {{lai}} gros sont mal vus.


# le / la / tu / lu
__[s]/ocr(ocr_tu_le_la)__   lu <<- not morph(word(-1), ":(?:V0|N.*:m:[si])", False, False) ->> tu|le|la     # Erreur de numérisation ?

TEST: __ocr__ {{lu}} as si bien réussi


# M. / Mr / M
__[s>/ocr(ocr_mr)__         (M(?:, | ))[A-ZÉÈ] @@0 <<- -1>> Mr|M.                                       # Erreur de numérisation ?

TEST: __ocr__ {{M, }}Patrick nous a oubliés.


# Mais / Hais / Mats
__[u]/ocr(ocr_mais1)__      Hais <<- ->> Mais                                                       # Erreur de numérisation ?
__[i]/ocr(ocr_mais2)__      mats <<- not morph(word(-1), ":D:[me]:p", False, False) ->> mais        # Erreur de numérisation ?

TEST: __ocr__ {{Hais}} il en sait trop.
TEST: __ocr__ c’était bien, {{mats}} quelle journée


# même / même / mème / mémo / môme
__[i]/ocr(ocr_même1)__      mômes?
    <<- \0.endswith("e") and not morph(word(-1), ":D.*:[me]:[si]", False, False) ->> même           # Erreur de numérisation ?
    <<- \0.endswith("s") and not morph(word(-1), ":D.*:[me]:[pi]", False, False) ->> mêmes          # Erreur de numérisation ?
__[i]/ocr(ocr_même2)__      mèmes? <<- ->> =\0.replace("è", "ê").replace("È", "Ê")                  # Erreur de numérisation ?
__[i]/ocr(ocr_même3)__      mémos? <<- ->> =\0.replace("é", "ê").replace("É", "Ê")                  # Erreur de numérisation ?

TEST: __ocr__ J’en ai assez {{môme}} si ça ne se voit pas.
TEST: __ocr__ Ces {{mèmes}} hommes qui nous ont lâchés au pire moment
TEST: __ocr__ C’est l’incessant retour du {{mémo}}.


# mon / won
__[i]/ocr(ocr_mon)__        won <<- ->> mon                                                         # Erreur de numérisation ?

TEST: __ocr__ c’est {{won}} ami


# ne / na / no / rie
__[i]/ocr(ocr_ne1)__        n[oa] <<- ->> ne                                                        # Erreur de numérisation ?
__[s]/ocr(ocr_ne2)__        rie <<- ->> ne                                                          # Erreur de numérisation ?

TEST: __ocr__ {{no}} fais rien que tu pourrais regretter
TEST: __ocr__ elle avance, mais {{rie}} prend jamais de risque inconsidéré.


# nous / noue / noua
__[i]/ocr(ocr_nous)__       nou[ea] <<- ->> nous                                                    # Erreur de numérisation ?

TEST: __ocr__ {{noue}} attaquer à eux signerait notre perte.


# par / paf / pan / pat
__[i]/ocr(ocr_par)__        pa[fnt] <<- ->> par                                                     # Erreur de numérisation ?

TEST: __ocr__ Une seule action {{paf}} jour


# par le / par la / par les / parle / parla / parles
__[i]/ocr(ocr_par_le)__     (parle) ({w_2})  @@0,$
    <<- not before(r"(?i)\b(?:ne|il|on|elle|je) +$") and morph(\2, ":[NA].*:[me]:[si]", False) -1>> par le  # Erreur de numérisation ?
__[i]/ocr(ocr_par_la)__     (parla) ({w_2})  @@0,$
    <<- not before(r"(?i)\b(?:ne|il|on|elle) +$") and morph(\2, ":[NA].*:[fe]:[si]", False) -1>> par la     # Erreur de numérisation ?
__[i]/ocr(ocr_par_les)__    (parles) ({w_2})  @@0,$
    <<- not before(r"(?i)\b(?:ne|tu) +$") and morph(\2, ":[NA].*:[pi]", False) -1>> par les                 # Erreur de numérisation ?

TEST: __ocr__ {{parle}} glaive et le mensonge, l’Église s’imposa.
TEST: __ocr__ {{parla}} force, on peut réussir
TEST: __ocr__ tu fus trompée {{parles}} mensonges permanents de son beau-père.


# pendant / pondant
__[i]/ocr(ocr_pendant)__    pondant <<- ->> pendant                                                 # Erreur de numérisation ?

TEST: __ocr__ {{pondant}} qu’elle travaille, il se prélasse.


# peu / peut / peux / pou
__[i]/ocr(ocr_peu_peux_peut)__      poux?
    <<- \0.endswith("u") and not morph(word(-1), ":D.*:m:s", False, False) ->> peu                  # Erreur de numérisation ?
    <<- \0.endswith("x") and not morph(word(-1), ":D.*:m:p", False, False) ->> peux|peut|pour       # Erreur de numérisation ?

TEST: __ocr__ il est {{pou}} probable qu’il y parvienne.


# plus / pins
__[i]/ocr(ocr_plus)__       pins <<- ->> plus                                                       # Erreur de numérisation ?

TEST: __ocr__ ils sont {{pins}} instruits qu’il n’y paraît.


# puis / pois
__[i]/ocr(ocr_puis)__       pois <<- not morph(word(-1), ":D.*:m:p", False, False) ->> puis         # Erreur de numérisation ?

TEST: __ocr__ elles sont venues, {{pois}} elles sont parties.


# pour / pouf
__[i]/ocr(ocr_pour)__       pouf <<- not morph(word(-1), ":D.*:f:s", False, False) ->> pour         # Erreur de numérisation ?

TEST: __ocr__ {{pouf}} elle, il était prêt à tout.


# près / prés
__[i]/ocr(ocr_près)__       prés <<- not morph(word(-1), ":D.*:[me]:p", False, False) ->> près      # Erreur de numérisation ?

TEST: __ocr__ ils sont arrivés {{prés}} de la tombe.


# que / quo
__[i]/ocr(ocr_que)__        quo <<- ->> que                                                         # Erreur de numérisation ?

TEST: __ocr__ elles ne savent pas {{quo}} faire


# qui / gui
__[i]/ocr(ocr_qui)__        gui <<- not morph(word(-1), ":D.*:m:s", False, False) ->> qui           # Erreur de numérisation ?

TEST: __ocr__ avec {{gui}} faire alliance ?


# s’il / sil
__[i]/ocr(ocr_s_il)__       sils?
    <<- \0.endswith("s") ->> s’ils                                                                  # Erreur de numérisation ?
    <<- __else__ ->> s’il                                                                           # Erreur de numérisation ?

TEST: __ocr__ {{sil}} avait su, il n’aurait rien tenté de trop audacieux.


# sur / sar
__[i]/ocr(ocr_sur)__        sar <<- ->> sur                                                         # Erreur de numérisation ?

TEST: __ocr__ il ne savait rien {{sar}} eux.


# tard / lard
__[s]/ocr(ocr_tard)__       lard <<- not before(r"(?i)\b(?:ce|[mts]on|du|un|le) $") ->> tard        # Erreur de numérisation ?

TEST: __ocr__ elles seront là tôt ou {{lard}}.


# tandis que / taudis
__[i]/ocr(ocr_tandis)__     (taudis) que? @@0 <<- -1>> tandis                                       # Erreur de numérisation ?

TEST: __ocr__ mais {{taudis}} qu’elle œuvrait à leur salut, les nuages s’amoncelaient.


# tête / tète
__[i]/ocr(ocr_tête)__       tète
    <<- not before(r"(?i)\b(?:je|il|elle|on|ne) $")
    ->> =\0.replace("è", "ê").replace("È", "Ê")                                                    # Erreur de numérisation ?

TEST: __ocr__ cette forte {{tète}} n’écoute jamais personne.


# tin / fin / un
__[i]/ocr(ocr_fin_un)__     tin <<- ->> fin|un                                                      # Erreur de numérisation ?

TEST: __ocr__ c’était {{tin}} marchand vaniteux.


# ton / tan
__[i]/ocr(ocr_ton)__        tans? <<- ->> =\0.replace("a", "o").replace("A", "O")                   # Erreur de numérisation ?

TEST: __ocr__ pour {{tan}} propre bien.


# toute / tonte
__[i]/ocr(ocr_toute)__      tontes? <<- ->> =\0.replace("n", "u").replace("N", "U")                 # Erreur de numérisation ?

TEST: __ocr__ à {{tonte}} fin utile


# un / vin
__[i]/ocr(ocr_un)__         vin <<- not before(r"(?i)\b(?:ce|d[eu]|un|quel|leur|le) +") ->> un      # Erreur de numérisation ?

TEST: __ocr__ {{vin}} mathématicien hors du commun.


# une / ure / vine
__[i]/ocr(ocr_une1)__       ure <<- ->> une                                                         # Erreur de numérisation ?
__[i]/ocr(ocr_une2)__       vine <<- ->> une                                                        # Erreur de numérisation ?

TEST: __ocr__ il avait {{ure}} femme élégante et silencieuse
TEST: __ocr__ c’est pour {{vine}} amie


# vous / voua / voue
__[i]/ocr(ocr_vous)__       vou[ae] <<- ->> vous                                                    # Erreur de numérisation ?

TEST: __ocr__ avec {{voue}}, je n’ai pas confiance.



############################## RÈGLES DE BASE ##############################


### double négation
__[i](double_négation)__
    pas (personne|aucune?|jamais)  @@4
    <<- not morph(word(-1), ":D:[me]" ,False, False) ->> \1|pas, \1
    # Double négation : les mots « pas \1 » ne devraient pas se succéder. Si ces mots appartiennent à des propositions distinctes, une virgule est peut-être préférable.

TEST: Ce que tu ne fais {{pas jamais}}.


### incohérences globales (attention à la casse du 2e mot, car beaucoup de sigles peuvent tromper)
__[s](incohérences_globales1)__
    ([clmtsCLMTS]es|[nvNV]os|[aA]ux) ([cdlmst]es|[nv]os|cettes?|[mts]a|mon|je|tu|ils?|elle?|[vn]ous|on)  @@0,$
    <<- -2>> =suggSimil(\2, ":[NA].*:[pi]")         # Incohérence : les mots “\1” et “\2” ne devraient pas se succéder.
__[s](incohérences_globales2)__
    ([cC]e(?:tte|t|)|[mtsMTS]a|[mM]on|[aA]u) ([cdlmst]es|[nv]os|cettes?|[mts]a|mon|je|tu|ils?|elle?|[vn]ous|on)  @@0,$
    <<- -2>> =suggSimil(\2, ":[NA].*:[si]")         # Incohérence : les mots “\1” et “\2” ne devraient pas se succéder.
__[s](incohérences_globales3)__
    ([dD]es) ([cdlmst]es|[nv]os|cettes?|[mts]a|mon|je|tu|ils?|elle?|[vn]ous|on)  @@0,$
    <<- -2>> =suggSimil(\2, ":[NA].*:[pi]")         # Incohérence : les mots “\1” et “\2” ne devraient pas se succéder.
    <<- -1>> de                                     # Incohérence : les mots “\1” et “\2” ne devraient pas se succéder.

TEST: Au MES, rien de nouveau
TEST: {{Ces}} {{cette}} canaille qui nous a donné tant de fil à retordre.
TEST: Mon {{il}} est une merveille.
TEST: je ne sais {{des}} {{ses}} choses.



################################################## STYLE ##################################################

########## Basique

#__bs__  Mr <<- ->> M.                          # M. est l’usage courant pour “Monsieur”. « Mr » est l’abréviation ancienne, française.

# à / en
__[i]/bs(bs_en_à_ville)__
    (en) A(?:gen|miens|ngers|jjacio|rles|vignon)  @@0
    <<- -1>> à       # On utilise la préposition “à” avant les villes (à Avignon, à Arles…), la préposition “en” avant les régions (en Amérique, en Afrique…).

TEST: {{En}} Avignon
TEST: {{En}} Agen


# avoir été
__[i]/bs(bs_avoir_été_chez)__
    ({avoir}) été chez  @@0
    <<- not re.search("(?i)^avoir$", \1) and morph(\1, ">avoir ", False)
    ->> _                                                                                           # Tournure familière. Utilisez « être allé ».

TEST: J’{{ai été chez}} le coiffeur.


# abyme / abîme
__[i]/bs(bs_mise_en_abyme)__
    mis\w+ en (ab[îi]mes?) @@$ <<- -1>> abyme
    # Classiquement, on écrit plutôt « abyme » dans cette expression.|https://fr.wiktionary.org/wiki/mise_en_abyme

TEST: La mise en {{abîme}}.


# à date / jusqu’à date
__[i]/bs(bs_à_date)__
    ({etre}|m\w+) ([aà] date)  @@0,$  <<- morph(\1, ">(?:être|mettre) ", False) -2>> à jour         # Anglicisme incompris hors du Québec.
__[i]/bs(bs_jusquà_date)__
    jusqu [àa] date <<- ->> jusqu’ici|jusqu’à maintenant|jusqu’à ce jour|à ce jour                  # Anglicisme incompris hors du Québec.

TEST: être {{à date}}
TEST: mettre {{a date}}
TEST: {{jusqu’à date}}


# pire
__[i]/bs(bs_pire)__          (?:moins|aussi|plus) (pires?) @@$ <<- -1>> mauvais|mauvaise|mauvaises  # Tournure erronée. Utilisez « mauvais ».|http://www.academie-francaise.fr/plus-pire-moins-pire
__[i]/bs(bs_de_mal_en_pis)__ de mal en pires? <<- ->> de mal en pis                                 # Tournure erronée. Utilisez « de mal en pis ».
__[i]/bs(bs_au_pis_aller)__  au pire aller <<- ->> au pis aller                                     # Tournure erronée. Utilisez « au pis aller ».

TEST: c’est plus {{pire}} que tout.
TEST: il est moins {{pire}} que l’autre.
TEST: elles sont aussi {{pires}} que les autres.
TEST: ils vont {{de mal en pire}}
TEST: {{Au pire aller}}, on s’en passera.


# pour ne pas que
__[i]/bs(bs_pour_ne_pas_que)__
    pour ne pas que?  <<- ->> _
    # Tournure familière. Écrivez “pour qu’il ne vienne pas” plutôt que “pour ne pas qu’il vienne.”|http://www.academie-francaise.fr/pour-pas-que-au-lieu-de-pour-que-ne-pas

TEST: Nous y sommes allés {{pour ne pas qu}}’elle se sente seule.


# très / trop
__[i]/bs(bs_très_trop_superflu)__
    tr(ès|op) (beaucoup|assez|mieux|pire|meilleur|délicieux|plus|moins) @@2,$ <<- ->> \2            # « tr\1 » est superflu.

TEST: Je l’aime {{très beaucoup}}.


# novlangue
__[i]/bs(bs_vidéoprotection)__
    vidéo-?protection(s|)  @@$
    <<- ->> vidéosurveillance\1|télésurveillance\1|surveillance\1 des populations
    # Novlangue. Double pensée. Utilisez un terme plus approprié.|http://fr.wikipedia.org/wiki/Doublepens%C3%A9e

TEST: {{vidéo-protection}}


#__[i]/bs__  (tomb\w+) dans les pommes <<- ->> \1 dans les pâmes                                    # « Tomber dans les pâmes » est l’ancienne tournure.

# malgré que
__[i]/bs(bs_malgré_que)__
    malgré (que?)  @@7
    <<- not after_chk1(r" \w[\w-]+ en ([aeo][a-zû]*)", ":V0a")
    ->> bien \1                                                                                     # Tournure populaire. Utilisez « bien que ».

TEST: {{Malgré que}} je sois fou.




######### Expressions impropres

#([mts]e|[nv]ous) (rappel\w+) (de) <<- word(1) != "ne" and not morph(word(1), ":V")
#   -3>> _                                                     # Expression impropre. « Se rappeler quelque chose » ou « Se souvenir de quelque chose ».
#Se rappelle de l’amour

#enjoindre à qqn de faire qqch


########## Pléonasmes

__[i]/pleo(pleo_abolir)__               (abol\w+) (?:absolument|entièrement|compl[èé]tement|totalement) @@0 <<- morph(\1, ">abolir ", False) ->> \1         # Pléonasme.
__[i]/pleo(pleo_acculer)__              (accul\w+) aux? pieds? du mur @@0 <<- morph(\1, ">acculer ", False) ->> \1                                          # Pléonasme.
__[i]/pleo(pleo_achever)__              (ach[eè]v\w+) (?:absolument|entièrement|compl[èé]tement|totalement) @@0 <<- morph(\1, ">achever ", False) ->> \1    # Pléonasme.
__[i]/pleo(pleo_en_cours)__             actuellement en cours <<- not after(r" +de?\b") ->> en cours                                            # Pléonasme.
__[i]/pleo(pleo_en_train_de)__          (actuellement en train) d(?:e(?! nuit)|’{w_2}) @@0 <<- -1>> en train                                    # Pléonasme.
__[i]/pleo(pleo_ajouter)__              (ajout\w+) en plus @@0 <<- ->> \1                                                                       # Pléonasme.
__[i]/pleo(pleo_apanage)__              (apanages?) exclusifs? @@0 <<- ->> \1                                                                   # Pléonasme.
__[i]/pleo(pleo_applaudir)__            (applaudi\w+) des deux mains @@0 <<- ->> \1                                                             # Pléonasme.
__[i]/pleo(pleo_aujourd_hui)__          au jour d’aujourd’hui <<- ->> aujourd’hui                                                               # Pléonasme.
__[i]/pleo(pleo_avancer)__              (avan[cç]\w+) en avant @@0 <<- morph(\1, ">avancer ", False) ->> \1                                     # Pléonasme.
__[i]/pleo(pleo_s_avérer)__             s’av([éè]r\w+) vrai(e?s?) @@4,$ <<- ->> s’av\1 exact\2                                                  # Pléonasme.
__[i]/pleo(pleo_avéré)__                (avérée?s?) vraie?s? @@0 <<- ->> \1                                                                     # Pléonasme.
__[i]/pleo(pleo_avenir)__               avenir devant (?:lui|[mts]oi|eux|[nv]ous) <<- morph(word(-1), ":A|>un", False) ->> avenir               # Pléonasme.
__[i]/pleo(pleo_bourrasque)__           (bourrasques?) de vent @@0 <<- ->> \1                                                                   # Pléonasme.
__[i]/pleo(pleo_car_en_effet)__         car en effet <<- ->> car|en effet                                                                       # Pléonasme.
__[i]/pleo(pleo_cirrhose)__             (cirrhoses?) du foie @@0 <<- ->> \1                                                                     # Pléonasme.
__[i]/pleo(pleo_collaborer)__           (collabor\w+) ensemble @@0 <<- morph(\1, ">collaborer ", False) ->> \1                                  # Pléonasme.
__[i]/pleo(pleo_comme_par_exemple)__    comme par exemple <<- ->> comme|par exemple                                                             # Pléonasme.
__[i]/pleo(pleo_comparer)__             (compar\w+) entre (?:eux|elles) @@0 <<- morph(\1, ">comparer ", False) ->> \1                           # Pléonasme.
__[i]/pleo(pleo_contraindre)__          (contrai\w+) malgré (?:soi|eux|lui|moi|elle|toi) @@0 <<- morph(\1, ">contraindre ", False) ->> \1       # Pléonasme.
__[i]/pleo(pleo_descendre)__            (descend\w+) en bas(?! de) @@0 <<- ->> \1                                                               # Pléonasme.
__[i]/pleo(pleo_dessiner)__             (dessin\w+) un dessin @@0 <<- ->> \1                                                                    # Pléonasme.
__[i]/pleo(pleo_donc_par_conséquent)__  donc par conséquent <<- ->> donc|par conséquent|c’est pourquoi                                          # Pléonasme.
__[i]/pleo(pleo_enchevêtrer)__          (enchevêtr\w+) les uns dans les autres @@0 <<- morph(\1, ">enchevêtrer ", False) ->> \1                 # Pléonasme.
__[i]/pleo(pleo_entraider)__            (entraid\w+) (?:mutuellement|les uns les autres) @@0 <<- morph(\1, ">entraider ", False) ->> \1         # Pléonasme.
__[i]/pleo(pleo_entraide)__             (entraides?) mutuelles? @@0 <<- ->> \1                                                                  # Pléonasme.
__[i]/pleo(pleo_erreur)__               (erreurs?) involontaires? @@0 <<- ->> \1                                                                # Pléonasme.
__[i]/pleo(pleo_étape)__                (étapes?) intermédiaires? @@0 <<- ->> \1                                                                # Pléonasme.
__[i]/pleo(pleo_hasard)__               (hasards?) imprévus? @@0 <<- ->> \1                                                                     # Pléonasme.
__[i]/pleo(pleo_hémorragie)__           (hémorragies?) de sang @@0 <<- ->> \1                                                                   # Pléonasme.
__[i]/pleo(pleo_joindre)__              (join\w+) ensemble @@0 <<- morph(\1, ">joindre ") ->> \1|mettre ensemble                                # Pléonasme.
__[i]/pleo(pleo_lever)__                lever debout <<- ->> lever                                                                              # Pléonasme.
__[i]/pleo(pleo_mais_qqch)__            mais (cependant|pourtant|toutefois) @@5 <<- ->> mais|cependant|pourtant|toutefois                       # Pléonasme.
__[i]/pleo(pleo_marche)__               (marches?) à pieds? @@0 <<- ->> \1                                                                      # Pléonasme.
__[i]/pleo(pleo_méandre)__              (méandres?) sinueux @@0 <<- ->> \1                                                                      # Pléonasme.
__[i]/pleo(pleo_media)__                (m[eé]dias?) d’informations? @@0 <<- ->> \1                                                             # Pléonasme.
__[i]/pleo(pleo_monopole)__             (monopoles?) exclusifs? @@0 <<- ->> \1                                                                  # Pléonasme.
__[i]/pleo(pleo_monter)__               (mont\w+) en haut(?! d[eu’]) @@0 <<- morph(\1, ">monter ", False) ->> \1                                # Pléonasme.
__[i]/pleo(pleo_opportunité)__          (opportunités?) à saisir @@0 <<- ->> \1                                                                 # Pléonasme.
__[i]/pleo(pleo_orage)__                (orages?) électriques? @@0 <<- ->> \1                                                                   # Pléonasme.
__[i]/pleo(pleo_jumelles)__             paires? de jumelles? <<- ->> jumelles                                                                   # Pléonasme.
__[i]/pleo(pleo_panacée)__              (panacées?) universelles? @@0 <<- ->> \1|remède universel                                               # Pléonasme.
__[i]/pleo(pleo_perspective)__          (perspectives?) d’avenir @@0 <<- ->> \1                                                                 # Pléonasme.
__[i]/pleo(pleo_balbutiement)__         premiers? (balbutiements?) @@$ <<- ->> \1                                                               # Pléonasme.
__[i]/pleo(pleo_priorité)__             premières? (priorités?) @@$ <<- ->> \1                                                                  # Pléonasme.
__[i]/pleo(pleo_projet1)__              (projets?) futurs? @@0 <<- ->> \1                                                                       # Pléonasme.
__[i]/pleo(pleo_projet2)__              futurs? (projets?) @@$ <<- ->> \1                                                                       # Pléonasme.
__[i]/pleo(pleo_prototype)__            (prototypes?) expérimenta(?:l|ux) @@0 <<- ->> \1                                                        # Pléonasme.
__[i]/pleo(pleo_rénover)__              (rénov\w+) à neuf @@0 <<- morph(\1, ">rénov(?:er|ation) ", False) ->> \1                                # Pléonasme.
__[i]/pleo(pleo_puis_qqch)__            puis (?:après|ensuite|alors) <<- ->> puis|après|ensuite|alors                                           # Pléonasme.
__[i]/pleo(pleo_réunir)__               (réuni\w*) ensemble @@0 <<- morph(\1, ">réunir ", False) ->> \1                                         # Pléonasme.
__[i]/pleo(pleo_reculer)__              (recul\w*) en arrière @@0 <<- morph(\1, ">recul(?:er|) ", False) ->> \1                                 # Pléonasme.
__[i]/pleo(pleo_risque)__               (risques?) (?:potentiels?|de menaces?) @@0 <<- ->> \1                                                   # Pléonasme.
__[i]/pleo(pleo_secousse)__             (secousses?) sé?ismiques? @@0 <<- ->> secousse tellurique|secousses telluriques|tremblement de terre    # Pléonasme.
__[i]/pleo(pleo_solidaire)__            (solidaires?) les uns des autres @@0 <<- ->> \1                                                         # Pléonasme.
__[i]/pleo(pleo_suffire)__              (suffi\w+) simplement @@0 <<- morph(\1, ">suffire ", False) ->> \1                                      # Pléonasme.
__[i]/pleo(pleo_talonner)__             (talonn\w+) de près @@0 <<- morph(\1, ">talonner ", False) ->> \1                                       # Pléonasme.
__[i]/pleo(pleo_taux_alcoolémie)__      taux d’alcoolémies? @@7 <<- ->> taux d’alcool|alcoolémie                                                # Pléonasme. L’alcoolémie est le taux d’alcool dans le sang.
__[i]/pleo(pleo_tunnel)__               (tunnels?) souterrains? @@0 <<- ->> \1                                                                  # Pléonasme.
__[i]/pleo(pleo_hardes)__               vieilles hardes <<- ->> hardes                                                                          # Pléonasme.
__[i]/pleo(pleo_voire_même)__           voire même <<- ->> voire|même                                                                           # Pléonasme.|https://fr.wiktionary.org/wiki/voire_m%C3%AAme

TEST: il faut {{abolir totalement}} ces pratiques   ->> abolir
TEST: il faut {{achever complètement}} ce projet    ->> achever
TEST: {{au jour d’aujourd’hui}}                     ->> aujourd’hui
TEST: {{actuellement en cours}}                     ->> en cours
TEST: ils sont {{actuellement en train}} de manger  ->> en train
TEST: avoir un grand {{avenir devant soi}}          ->> avenir
TEST: {{acculé au pied du mur}}                     ->> acculé
TEST: {{Avancer en avant}}, pas le choix            ->> Avancer
TEST: {{dessiner un dessin}}                        ->> dessiner
TEST: {{joindre ensemble}}                          ->> joindre|mettre ensemble
TEST: {{collaborer ensemble}}                       ->> collaborer
TEST: {{comparer entre eux}}                        ->> comparer
TEST: {{monter en haut}}                            ->> monter
TEST: {{descendre en bas}}                          ->> descendre
TEST: {{enchevêtrer les uns dans les autres}}       ->> enchevêtrer
TEST: rien ne vaut l’{{entraide mutuelle}}          ->> entraide
TEST: s’{{entraider mutuellement}}                  ->> entraider
TEST: s’{{entraident les uns les autres}}           ->> entraident
TEST: {{comme par exemple}}                         ->> comme|par exemple
TEST: {{médias d’informations}}                     ->> médias
TEST: {{lever debout}}                              ->> lever
TEST: {{cirrhose du foie}}                          ->> cirrhose
TEST: {{s’avérer vrai}}                             ->> s’avérer exact
TEST: {{avérées vraies}}                            ->> avérées
TEST: {{bourrasques de vent}}                       ->> bourrasques
TEST: {{contraint malgré lui}}                      ->> contraint
TEST: {{contraindre malgré eux}}                    ->> contraindre
TEST: {{applaudir des deux mains}}                  ->> applaudir
TEST: {{erreurs involontaires}}                     ->> erreurs
TEST: {{hasards imprévus}}                          ->> hasards
TEST: {{méandres sinueux}}                          ->> méandres
TEST: {{hémorragies de sang}}                       ->> hémorragies
TEST: des {{orages électriques}}                    ->> orages
TEST: {{perspectives d’avenir}}                     ->> perspectives
TEST: {{marche à pied}}                             ->> marche
TEST: {{paires de jumelles}}                        ->> jumelles
TEST: {{puis après}}                                ->> puis|après|ensuite|alors
TEST: {{mais pourtant}}                             ->> mais|cependant|pourtant|toutefois
TEST: {{donc par conséquent}}                       ->> donc|par conséquent|c’est pourquoi
TEST: {{car en effet}}                              ->> car|en effet
TEST: {{opportunités à saisir}}                     ->> opportunités
TEST: {{apanages exclusifs}}                        ->> apanages
TEST: {{monopole exclusif}}                         ->> monopole
TEST: {{étapes intermédiaires}}                     ->> étapes
TEST: {{ajouter en plus}}                           ->> ajouter
TEST: la {{panacée universelle}}                    ->> panacée|remède universel
TEST: ce sont leurs {{premiers balbutiements}}      ->> balbutiements
TEST: la {{première priorité}}, c’est…              ->> priorité
TEST: {{réserver d’avance}}                         ->> réserver
TEST: Un {{futur projet}}                           ->> projet
TEST: ce sont des {{projets futurs}}                ->> projets
TEST: {{prototypes expérimentaux}}                  ->> prototypes
TEST: Nous avons {{rénové à neuf}} l’ensemble       ->> rénové
TEST: Nous voilà {{réunis ensemble}}                ->> réunis
TEST: {{Recule en arrière}}                         ->> Recule
TEST: {{risques de menaces}}                        ->> risques
TEST: {{secousses sismiques}}                       ->> secousse tellurique|secousses telluriques|tremblement de terre
TEST: {{solidaires les uns des autres}}             ->> solidaires
TEST: Il {{suffisait simplement}} d’y penser.       ->> suffisait
TEST: Il la {{talonnait de près}}                   ->> talonnait
TEST: ce {{taux d’alcoolémie}} est très élevé       ->> taux d’alcool|alcoolémie
TEST: {{tunnels souterrains}}                       ->> tunnels
TEST: {{vieilles hardes}}                           ->> hardes
TEST: {{voire même}}                                ->> voire|même


# d’avance / à l’avance
__[i]/pleo(pleo_verbe_à_l_avance)__
    ((?:pré[pvds]|pressen|pronostiqu|réserv|dev(?:an[cç]|in)|avert)\w+) (?:d’avance|à l’avance)  @@0
    <<- morph(\1, ">(?:prévenir|prévoir|prédire|présager|préparer|pressentir|pronostiquer|avertir|devancer|deviner|réserver) ", False)
    ->> \1                                                                                                              # Pléonasme.

TEST: {{prédire à l’avance}}                  ->> prédire
TEST: {{pronostiquer d’avance}}               ->> pronostiquer


# plus tard / à une date ultérieure
__[i]/pleo(pleo_différer_ajourner_reporter)__
    ((?:diff|ajourn|report)\w+) à (?:plus tard|date ultérieure|une date ultérieure)  @@0
    <<- morph(\1, ">(?:ajourner|différer|reporter) ", False)
    ->> \1                                                                                                              # Pléonasme.

TEST: {{Ajourner à une date ultérieure}}      ->> Ajourner
TEST: {{différer à une date ultérieure}}      ->> différer
TEST: {{reporter à plus tard}}                ->> reporter



#### CONFUSIONS
__[s>/conf(conf_ne_n)__     [nN]e n’                        <<- ->> ne m’|n’                        # Incohérence. Double négation.
__[s>/conf(conf_pronoms1)__ [mtMT]e ([nmst](?:’|e )) @@$    <<- ->> \1                              # Incohérence.
__[s>/conf(conf_pronoms2)__ [sS]e ([mst](?:’|e )) @@$       <<- ->> \1                              # Incohérence.
__[s>/conf(conf_de_d)__     [dD][eu] d’(?![A-ZÉÂÔÈ])        <<- ->> d’                              # Incohérence. 

TEST: Il {{ne n’}}arrive jamais à l’heure.
TEST: Ça {{me te }}prend la tête, toutes ces complications vaines.
TEST: il {{se m’}}est difficile d’y parvenir.
TEST: Ça t’arrive {{de d’}}arriver à l’heure ?
TEST: Les écrits de d’Alembert.


#### Articles et prépositions + verbes

__[i]/conf(conf_ma_ta_cette_verbe)__
    ([mt]a|cette) +({w_2})  @@0,$
    <<- morphex(\2, ":V.*:(?:Y|[123][sp])", ":[NAQ]") and \2[0].islower()
    -2>> =suggSimil(\2, ":[NA]:[fe]:[si]")                                                          # Incohérence avec « \1 » : « \2 » est un verbe.

TEST: Cette {{pèle}} est trop fragile.


__[i]/conf(conf_sa_verbe)__
    (sa) ({w_2})  @@0,3
    <<- morphex(\2, ":V.*:(?:Y|[123][sp])", ":N.*:[fe]|:[AW]") and \2[0].islower() or \2 == "va"
    -1>> ça                                                                                         # Confusion : « \2 » est un verbe. Exemples : sa jambe, ça vient.
    <<- morphex(\2, ":V.*:(?:Y|[123][sp])", ":[NAQ]") and \2[0].islower() and hasSimil(\2)
    -2>> =suggSimil(\2, ":[NA]:[fe]:[si]")                                                          # Incohérence avec « \1 » : « \2 » est un verbe.

TEST: {{sa}} devient difficile.
TEST: il me tendit {{sa}} {{pèche}}.


__[i]/conf(conf_du_cet_au_verbe)__
    (du|cet|au) +({w_2})  @@0,$
    <<- morphex(\2, ":V.*:(?:Y|[123][sp])", ":[NAQ]") and \2[0].islower() and not (\2 == "sortir" and re.search(r"(?i)au", \1))
    -2>> =suggSimil(\2, ":[NA]:[me]:[si]")                                                          # Incohérence avec « \1 » : « \2 » est un verbe.

TEST: cet {{plaît}} est infectée.


__[i]/conf(conf_ce_verbe)__
    (ce) +(?!faire|peut)({w_2})  @@0,$
    <<- morphex(\2, ":V.*:(?:Y|[123][sp])", ":[NAQ]:.:[si]|:V0e.*:3[sp]|>devoir") and \2[0].islower() and hasSimil(\2)
    -2>> =suggSimil(\2, ":[NA]:[me]:[si]")                                                          # Incohérence avec « \1 » : « \2 » est un verbe.

TEST: {{ce}} {{rappelle}} n’en finit pas.


__[i]/conf(conf_mon_verbe)__
    (mon) +({w_2})  @@0,$
    <<- morphex(\2, ":V.*:(?:Y|[123][sp])", ":[NAQ]") and \2[0].islower()
    -2>> =suggSimil(\2, ":[NA]:.:[si]")                                                             # Incohérence avec « \1 » : « \2 » est un verbe.

TEST: mon {{rackette}} n’a pas porté les fruits espérés.


__[i]/conf(conf_ton_son_verbe)__
    [st]on ({w_2})  @@4
    <<- morph(\1, ":V.*:(?:Y|[123][sp])") and \1[0].islower() and not word(-1)
    -1>> =suggSimil(\1, ":[NA]:[me]:[si]")                                                          # Incohérence : « \1 » est un verbe.

TEST: ton {{recèle}} a été dévoilé


__[i]/conf(conf_det_plur_verbe)__
    ([dcmts]es|quelques|aux|[nv]os) +({w_2})  @@0,$
    <<- morphex(\2, ":V.*:(?:Y|[123][sp])", ":[NAQ]") and \2[0].islower() and not re.search(r"(?i)^quelques? soi(?:ent|t|s)\b", \0)
    -2>> =suggSimil(\2, ":[NA]:.:[pi]")                                                             # Incohérence avec « \1 » : « \2 » est un verbe.

TEST: la crainte des {{attentas}} fait feu de tout bois.


__[i]/conf(conf_auxdits_verbe)__
    (auxdits) +({w_2})  @@0,$
    <<- morphex(\2, ":V.*:(?:Y|[123][sp])", ":[NAQ]") and \2[0].islower()
    -2>> =suggSimil(\2, ":[NA]:[me]:[pi]")                                                          # Incohérence avec « \1 » : « \2 » est un verbe.

TEST: elle se rendit auxdits {{jardinais}}


__[i]/conf(conf_auxdites_verbe)__
    (auxdites) +({w_2})  @@0,$
    <<- morphex(\2, ":V.*:(?:Y|[123][sp])", ":[NAQ]") and \2[0].islower()
    -2>> =suggSimil(\2, ":[NA]:[fe]:[pi]")                                                          # Incohérence avec « \1 » : « \2 » est un verbe.

TEST: auxdites {{scelles}}, il ne prêta pas attention.


__[i]/conf(conf_de_la_vconj)__  de la ({w_2})  @@6
    <<- morphex(\1, ":[123][sp]", ":[NAQ]")
    -1>> =suggSimil(\1, ":(?:[NA]:[fe]:[si])")                                                      # Incohérence : « \1 » est un verbe.

TEST: les petits esprits de la {{pensait}} religieuse


TEST: pour les insulter au sortir du seul troquet dispensateur d’oubli liquide du coin
TEST: ce peut être un matériau à part entière pour alimenter discussions et délibérations.


__[i]/conf(conf_de_le_nom_ou_vconj)__
    (de le) ({w_2})  @@0,6
    <<- morphex(\2, ":[NAQ].*:[me]", ":[YG]") and \2[0].islower() -1>> du                           # Incohérence : « \2 » est un nom ou un adjectif.
    <<- morph(\2, ":[123][sp]", False) -2>> =suggSimil(\2, ":Y")                                    # Incohérence : « \2 » est une forme verbale conjuguée.

TEST: il n’est pas interdit de le {{pensait}}


__[i]/conf(conf_de_l_vconj)__
    de l’({w_2})  @@5
    <<- morphex(\1, ":[123][sp]", ":[NAQ]") -1>> =suggSimil(\1, ":(?:[NA]:.:[si])")                 # Incohérence : « \1 » est une forme verbale conjuguée.

TEST: de l’{{entra}}


__[i]/conf(conf_un_verbe)__
    (?<!’)un ({w_2})  @@3
    <<- morph(\1, ":(?:Y|[123][sp])") and not before("(?i)(?:dont|sauf|un à) +$")
    -1>> =suggSimil(\1, ":[NAQ]:[me]:[si]")                                                         # Incohérence : « \1 » est une forme verbale conjuguée.

TEST: un {{maintient}} difficile.


__[i]/conf(conf_de_dès_par_vconj)__
    (?:d(?:e|ès)|par) ({w_2})  @@$
    <<- \1[0].islower() and morph(\1, ":V.*:[123][sp]") -1>> =suggSimil(\1, ":[NA]")                # Incohérence : « \1 » est une forme verbale conjuguée.

TEST: par {{bloque}} de données


__[i]/conf(conf_d_une_vconj)__
    d’(?:une? +|)({w_2})  @@$
    <<- \1[0].islower() and morphex(\1, ":V.*:[123][sp]", ":[GNA]") and not before(r"(?i)\b(?:plus|moins) +$")
    -1>> =suggSimil(\1, ":[NA]")    # Incohérence : « \1 » est une forme verbale conjuguée.

TEST: d’une {{habille}} femme
TEST: plus d’un ont été traumatisés
TEST: plus d’une sont parties aussi vite qu’elles étaient venues


__[i]/conf(conf_il_on_pas_verbe)__
    (?<!t’)(?:il|on) (?:l’|l(?:es?|a|eur|ui) +|[nv]ous +|)({w_2}) @@$
    <<- morphex(\1, ":", ":(?:[123][sp]|O[onw]|X)|ou ") and morphex(word(-1), ":", ":3s", True)
    -1>> =suggSimil(\1, ":(?:3s|Oo)")                                                               # Incohérence : « \1 » devrait être un verbe, un pronom objet, un adverbe de négation, etc.

TEST: il {{et}} parti.


__[i]/conf(conf_ils_pas_verbe)__
    (?<!t’)ils (?:l’|l(?:es?|a|eur|ui) +|[nv]ous +|)({w_2}) @@$
    <<- morphex(\1, ":", ":(?:[123][sp]|O[onw]|X)|ou ") and morphex(word(-1), ":", ":3p", True)
    -1>> =suggSimil(\1, ":(?:3p|Oo)")                                                               # Incohérence avec « ils » : « \1 » devrait être un verbe, un pronom objet, un adverbe de négation, etc.

TEST: ils {{son}} du même bois.
TEST: Ils {{étai}} partie au {{restaurent}}


__[i]/conf(conf_je_pas_verbe)__
    je (?!soussigné)(?:l’|l(?:es?|a|eur|ui) +|[nv]ous +|)({w_2}) @@$
    <<- morphex(\1, ":", ":(?:[123][sp]|O[onw]|X)") and morphex(word(-1), ":", ":1s", True)
    -1>> =suggSimil(\1, ":(?:1s|Oo)")                                                               # Incohérence avec « je » : « \1 » devrait être un verbe, un pronom objet, un adverbe de négation, etc.

TEST: Je {{travail}}.


__[i]/conf(conf_tu_pas_verbe)__
    tu (?:l’|l(?:es?|a|eur|ui) +|[nv]ous +|)({w_2}) @@$
    <<- morphex(\1, ":", ":(?:[123][sp]|O[onw]|X)") and morphex(word(-1), ":", ":(?:2s|V0e)", True)
    -1>> =suggSimil(\1, ":(?:2s|Oo)")                                                               # Incohérence avec « tu » : « \1 » devrait être un verbe, un pronom objet, un adverbe de négation, etc.

TEST: tu {{croix}} que tu sais quelque chose, mais tu ne sais rien.


TEST: elles seules peuvent s’en sortir.
TEST: elle seule peut y arriver
TEST: elle seules les femmes la font craquer


#### Participes présents

__[i]/conf(conf_adj_part_présent1)__    [nmts]e (\w+ant) @@3 <<- morphex(\1, ":", ":P") -1>> _      # Incohérence : « \1 » n’est pas un participe présent.
__[i]/conf(conf_adj_part_présent2)__    (?:[nv]ous|lui) (\w+ant) @@$ <<- morph(\1, ":[NAQ]") -1>> _ # Incohérence : « \1 » n’est pas un participe présent.

TEST: ne {{convaincant}} que les convaincus.
TEST: une tension lui {{provocant}} un ulcère
TEST: comme des nuages ou des coteaux se reﬂétant dans l’eau (ligature ﬂ)


#### Pronoms
__[i]__  m’enfin <<- ~>> *

__[i]/conf(conf_j_y_en_qqch)__
    (j’(?:en +|y +|))({w_1})  @@0,$
    <<- spell(\2) and not morph(\2, ":(?:[123][sp]|O[onw])", False)
    -2>> =suggSimil(\2, ":[123][sp]")                                                               # Incohérence avec « \1 » : « \2 » devrait être un verbe.
__[i]/conf(conf_ne_qqch)__
    (n(?:e +|’))({w_1})  @@0,3
    <<- spell(\2) and not morph(\2, ":(?:[123][sp]|Y|P|O[onw]|X)|>(?:[lmtsn]|surtout|guère|presque|même) ", False) and not re.search("(?i)-(?:ils?|elles?|[nv]ous|je|tu|on|ce)$", \2)
    -2>> =suggSimil(\2, ":(?:[123][sp]|Oo|Y)")                                                      # Incohérence avec « \1 » : « \2 » devrait être un verbe ou un pronom personnel objet.
__[i]/conf(conf_n_y_en_qqch)__
    (n’(?:en|y)) ({w_1})  @@0,$
    <<- spell(\2) and not morph(\2, ":(?:[123][sp]|Y|P|O[onw]|X)", False) and not re.search("(?i)-(?:ils?|elles?|[nv]ous|je|tu|on|ce)$", \2)
    -2>> =suggSimil(\2, ":(?:[123][sp]|Y)")                                                         # Incohérence avec « \1 » : « \2 » devrait être un verbe.
__[i]/conf(conf_me_te_se_qqch)__
    ([mts]e) (?!voi(?:là|ci))({w_1})  @@0,3
    <<- not re.search("(?i)^se que?", \0)
    and spell(\2) and not morph(\2, ":(?:[123][sp]|Y|P|Oo)|>[lmts] ", False) and not re.search("(?i)-(?:ils?|elles?|[nv]ous|je|tu|on|ce)$", \2)
    -2>> =suggSimil(\2, ":(?:[123][sp]|Oo|Y)")                                                      # Incohérence avec « \1 » : « \2 » devrait être un verbe ou un pronom personnel objet.
__[i]/conf(conf_m_t_s_y_en_qqch)__
    ([mts]’(?:en|y)) (?!voilà)({w_1})  @@0,$
    <<- spell(\2) and not morph(\2, ":(?:[123][sp]|Y|P|Oo)", False) and not re.search("(?i)-(?:ils?|elles?|[nv]ous|je|tu|on|ce)$", \2)
    -2>> =suggSimil(\2, ":(?:[123][sp]|Y)")                                                         # Incohérence avec « \1 » : « \2 » devrait être un verbe.
__[i]/conf(conf_m_s_qqch)__
    ([ms]’)({w_1})  @@0,2
    <<- spell(\2) and not morph(\2, ":(?:[123][sp]|Y|P)|>(?:en|y|ils?) ", False) and not re.search("(?i)-(?:ils?|elles?|[nv]ous|je|tu|on|ce)$", \2)
    -2>> =suggSimil(\2, ":(?:[123][sp]|Y)")                                                         # Incohérence avec « \1 » : « \2 » devrait être un verbe.
__[i]/conf(conf_t_qqch)__
    (t’)({w_1})  @@0,2
    <<- spell(\2) and not morph(\2, ":(?:[123][sp]|Y|P)|>(?:en|y|ils?|elles?) ", False) and not re.search("(?i)-(?:ils?|elles?|[nv]ous|je|tu|on|ce)$", \2)
    -2>> =suggSimil(\2, ":(?:[123][sp]|Y)")                                                         # Incohérence avec « \1 » : « \2 » devrait être un verbe.
__[i]/conf(conf_c_ç_qqch)__
    ([cç]’)({w_1})  @@0,2
    <<- spell(\2) and not morph(\2, ":[123][sp]|>(?:en|y|que?) ", False) and not re.search("(?i)-(?:ils?|elles?|[nv]ous|je|tu|on|dire)$", \2)
    -2>> =suggSimil(\2, ":3s")                                                                      # Incohérence avec « \1 » : « \2 » devrait être un verbe.

TEST: ne {{pensée}} rien, jamais
TEST: n’en {{laissée}} que des miettes
TEST: s’y {{intéressé}}
TEST: Il ne {{travail}} pas le week-end.
TEST: Je m’en {{fou}}.
TEST: J’y {{travail}}.
TEST: ç’{{avé}} été dur.
TEST: me {{pronostic}} un cancer dans les trois mois.
TEST: t’{{appel}} l’autre gras, puis on y va.
TEST: M’enfin, c’est absurde
TEST: il est normal de ne presque pas payer des gens qui effectuent un travail
TEST: j’ai l’impression de ne même pas savoir ce qu’est un « juif français ».
TEST: C’que j’comprends, c’est qu’il y a des limites à ce qu’on peut supporter.


# incohérences

# Trop de faux positifs
#__[i]/conf__
#    très +(bien|\w+ent) +({w2})  @@w,$
#    <<- morph(\1, ":W", False) and morphex(\2, ":[123][sp]", ":[GAQW]") -2>> _
#    # Incohérence avec « très » : « \2 » n’est ni un adjectif, ni un participe passé, ni un adverbe.

 
__[i]/conf(conf_très_verbe)__
    très +(?!envie)({w2})  @@$
    <<- morphex(\1, ":(?:Y|[123][sp])", ":[AQW]") -1>> =suggSimil(\1, ":[AW]")              # Incohérence avec « très » : « \1 » n’est ni un adjectif, ni un participe passé, ni un adverbe.

TEST: Il est très {{cite}}.


__[i]/conf(conf_presque_trop_vconj)__
    (presque|trop) +({w2})  @@0,$
    <<- morphex(\2, ":[123][sp]", ":[GNAQWM]") and not before(r"(?i)\bce que? ") -2>> _     # Incohérence probable avec « \1 » : « \2 » n’est ni un adjectif, ni un participe passé, ni un adverbe.

TEST: J’ai trop {{mangeais}}.
TEST: Ce que nous réussissons presque sera considéré comme un échec.


# élimination de presque
__[i]__  presque <<- ~>> *

__[i]/conf(conf_chez_vconj)__
    chez +({w2})  @@$
    <<- not \1[0].isupper() and morphex(\1, ":[123][sp]", ":[GNAQM]") -1>> _                        # Incohérence avec « chez ».

TEST: Tout ce qu’on fera chez {{sera}} enregistré.


__[i]/conf(conf_sur_vconj)__
    sur +({w2})  @@$
    <<- not \1[0].isupper() and morphex(\1, ":[123][sp]", ":[GNAQM]") and not morph(word(-1), ":[NA]:[me]:si", False)
    -1>> _                                                                                          # Incohérence avec « sur ».

TEST: Toutes les blagues qu’on fera sur {{entreront}} dans l’histoire !


__[i]/conf(conf_si_vconj)__
    si +({w2})  @@$
    <<- morphex(\1, ":[123][sp]", ":[GNAQWMT]") and morphex(word(1), ":", ":D", True)
    -1>> =suggSimil(\1, ":[AWGT]")                                                                  # Incohérence avec « si » : « \1 » ne devrait pas être une forme verbale conjuguée.

TEST: Ces gens sont si {{prit}} par leur travail qu’ils en oublient de vivre.
TEST: Ça ira mieux demain, surtout si émerge une demande forte de la part des consommateurs.


__[i]/conf(conf_de_plus_en_plus_verbe)__
    de plus en plus +({w_2})  @@$
    <<- morphex(\1, ":(?:[123][sp]|Y)", ":[GAQW]") and not morph(word(-1), ":V[123].*:[123][sp]", False, False) -1>> =suggVerbPpas(@)
    # Incohérence avec « de plus en plus » : « \1 » n’est ni un adjectif, ni un participe passé, ni un adverbe.

TEST: de plus en plus {{gagnait}} par la folie.


# a / à
__[i]/conf(conf_a_à_tout_à_fait)__  tout (a) fait @@5                                               <<- -1>> à          # Confusion.
__[i]/conf(conf_a_à_jusqu_à)__      jusqu (a) @@6                                                   <<- -1>> à          # Confusion.
__[i]/conf(conf_a_à_grâce_à)__      grâce (a) @@6             <<- morph(word(-1), ":[VN]", False, True) -1>> à          # Confusion probable.
__[i]/conf(conf_a_à_moins_que)__    (a) moins que? @@0                                 <<- not word(-1) -1>> à          # Confusion probable : « à moins que » pour dire « sauf si ».
__[i]/conf(conf_a_à_tout_à_coup)__  tout h?ah? co[uû][pt]?                                          <<- ->> tout à coup # Confusion.
__[i]/conf(conf_a_à_coup_sûr)__     a coup s[uû]r                                                   <<- ->> à coup sûr  # Confusion.
__[i]/conf(conf_a_à_face_à)__       face (a) @@5    <<- not before(r"(?i)\b(?:[lmts]a|leur|une|en) +$") -1>> à          # Confusion.
__[i]/conf(conf_a_à_pas_à_pas)__    pas (a) pas @@4                                                 <<- -1>> à          # Confusion.
__[i]/conf(conf_a_à_par_rapport)__  par rapport (a) ({w_2}) @@12,$  <<- morph(\2, ":(?:D|Oo|M)", False) -1>> à          # Confusion.
__[i]/conf(conf_a_à_être_à)__
    ({etre}) (a)(?! priori| posteriori| fortiori)  @@0,$
    <<- morph(\1, ">être :V") and not before(r"(?i)\bce que? ") -2>> à                                # Confusion. Utilisez la préposition « à ».
__[i]/conf(conf_a_à_peu_près)__
    (?:a peu[tx]? (?:près|prés?|prêts?)|à peu[tx] (?:près|prés?|prêts?)|à peu (?:prés?|prêts?))
    <<- ->> à peu près                                                                              # Confusion.
    <<- ~>> *
__[i]/conf(conf_a_à_pronoms1)__     ne +l(?:es?|a) +(?:l(?:eur|ui) +|)(à)  @@$  <<- -1>> a          # Confusion : “à” est une préposition. Pour le verbe avoir, écrivez :
__[i]/conf(conf_a_à_pronoms2)__     ne +[nv]ous +(?:les +|l’|)(à)  @@$          <<- -1>> a          # Confusion : “à” est une préposition. Pour le verbe avoir, écrivez :
__[i]/conf(conf_a_à_pronoms3)__     [mtsn]e l(?:es +|’)(à)  @@$                 <<- -1>> a          # Confusion : “à” est une préposition. Pour le verbe avoir, écrivez :
__[i]/conf(conf_a_à_pronoms4)__     [mtsnl]’(?:en|y) +(à)  @@$                  <<- -1>> a          # Confusion : “à” est une préposition. Pour le verbe avoir, écrivez :
__[i]/conf(conf_a_à_pronoms5)__     les (?:en|y) +(à)  @@$                      <<- -1>> a          # Confusion : “à” est une préposition. Pour le verbe avoir, écrivez :
__[i]/conf(conf_a_à_pronoms6)__     [nv]ous +(?:en +|y +|les +|l’)(à)  @@$      <<- -1>> a          # Confusion : “à” est une préposition. Pour le verbe avoir, écrivez :
__[i]/conf(conf_a_à_pronoms7)__     [mt]’(à) @@2                                <<- -1>> a          # Confusion : “à” est une préposition. Pour le verbe avoir, écrivez :
__[i]/conf(conf_a_à_l_à)__
    l’(à) ({w_2})  @@2,4
    <<- not re.search("(?i)^(?:côtés?|coups?|peu(?:-près|)|pics?|propos|valoir|plat-ventrismes?)", \2)
    -1>> a                                                                                          # Confusion : “à” est une préposition. Pour le verbe avoir, écrivez :
    <<- re.search("(?i)^(?:côtés?|coups?|peu(?:-pr(?:ès|êts?|és?)|)|pics?|propos|valoir|plat-ventrismes?)", \2)
    ->> l’à-\2                                                                                      # Il faut un trait d’union.
__[i]/conf(conf_a_à_il_on_à)__
    (?:il|on) +(?:l(?:es +|’)|en +|y +(?:en +|)|[vn]ous +|)(à)  @@$
    <<- not morph(word(-1), ":3s", False, False) -1>> a                                             # Confusion probable : “à” est une préposition. Pour le verbe avoir, écrivez :
__[i]/conf(conf_a_à_elle_à)__
    elle +(?:l(?:es +|’)|en +|y +(?:en |)|[vn]ous +|)(à)  @@$
    <<- not morph(word(-1), ":(?:3s|R)", False, False) and not morph(word(1), ":Oo|>qui ", False, False)
    -1>> a                                                                                          # Confusion probable : “à” est une préposition. Pour le verbe avoir, écrivez :
__[i]/conf(conf_a_à_qui_pronom_à)__
    qui (?:l(?:ui|eur)(?: en|)|nous|vous|en|y) +(à)  @@$ <<- -1>> a                                 # Confusion : “à” est une préposition. Pour le verbe avoir, écrivez :
__[i]/conf(conf_a_à_qui_a)__
    qui (à) +({w_2})  @@4,$  <<- morphex(\2, ":Q", ":M[12P]") -1>> a                                # Confusion : “à” est une préposition. Pour le verbe avoir, écrivez :
__[i]/conf(conf_a_à_le)__
    (à le) ({w_2})  @@0,5  <<- morphex(\2, ":[NAQ]", ":(?:Y|Oo)") -1>> a le|au
    # Confusion. Ou vous confondez “a” (préposition) avec “a” (avoir), ou vous devez employer “au”. Exemple : _à_ midi, il _a_ pris son déjeuner _au_ restaurant.
__[i]/conf(conf_a_à_les)__
    (à les) ({w_2})  @@0,6  <<- morphex(\2, ":[NAQ]", ":(?:Y|Oo)") -1>> a les|aux
    # 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.
__[i]/conf(conf_a_à_au_aux)__
    (à) aux?(?! (?:moins|plus)) @@0 <<- -1>> a                                                      # Confusion : “à” est une préposition. Pour le verbe avoir, écrivez :
__[i]/conf(conf_a_à_base_cause)__
    (a) (?:base|cause) d(?:es?|u) @@0 <<- not before(r"(?i)\bce que?\b") -1>> à                     # Confusion. Utilisez la préposition « à ».
__[i]/conf(conf_a_à_faim_peur_honte_soif)__
    (à) +(?:faim|peur|honte|soif) @@0 <<- -1>> a                                                    # Confusion : “à” est une préposition. Pour le verbe avoir, écrivez : 
__[i]/conf(conf_a_à_part)__
    (a) part ({w1}) @@0,7 <<- morph(\2, ":(?:M[12]|D|Oo)") -1>> à                                   # Confusion probable.
__[i]/conf(conf_a_à_les_à)__
    les (à)(?! côtés| peu près| prioris?| post[eé]rioris?| valoirs?| pics?| propos) @@4 <<- -1>> a
    # Confusion : “à” est une préposition. Pour le verbe avoir, écrivez : 
__[i]/conf(conf_a_à_avant_conj_prep)__
    (à) +(?: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
    <<- -1>> a                                                                                      # Confusion probable : “à” est une préposition. Écrivez “a” pour la conjugaison de “avoir”.
__[i]/conf(conf_a_à_vconj)__
    (à) +({w2})  @@0,$
    <<- morph(\2, ":[123][sp]") and not \2[0:1].isupper() and not \2.startswith("tord") ->> _       # Incohérence : “\1” est une préposition. “\2” est un verbe conjugué.
__[i]/conf(conf_a_à_locutions1)__
    (a) (?:nouveau|présent|(?:bonne distance|bord|cause|contre-courant|côté|court|défaut|droite|gauche|l’(?:arrière|autre bout|écart|égard|extérieur|aune|avant|encontre|ins(?:u|tar)|intérieur|opposé)|la (?:portée|suite)|partir|portée|propos|rebours) d(?:es?|u))  @@0
    <<- -1>> à                                                                                      # Confusion. Utilisez la préposition “à”.
__[s]/conf(conf_a_à_locutions2)__
    (a) (?:califourchon|contre(?:cœur|temps)|côté d(?:e|’\w[\w-]+)|demi-mot|nouveau|présent|rebrousse-poil|regret|travers|tout-va|l’(?:heure (?:actuelle|qu il est)|accoutumée|amiable|avance|aven(?:ir|ant)|air libre|aveuglette|emporte-pièce|évidence|exclusion de toute autre chose|improviste|inverse|ordre du jour|œil nu|en croire|un(?:animité| (?:d’entre eux|des leurs)|e (?:d’entre elles|des leurs)))|la (?:bonne franquette|con|dér(?:ive|obée)|diable|fois|limite du supportable|lumière de tout ce(?:ci|la)|mords-moi-le-nœud|papa|petite semaine|pointe du progrès|queue leu leu|rescousse|sauvette|surprise générale|virgule près|volée)|partir (?:de (?:demain|là|maintenant|rien)|d’(?:aujourd’hui|hier|ici))|au(?:cun prix|trui|tre chose)|bas co[ûu]t|bâ(?:bord|tons rompus)|beaucoup près|belles dents|bien (?:des égards|y (?:penser|réfléchir|songer))|bon (?:compte|escient|droit)|bout (?:de (?:bras|souffle|forces?)|portant|touchant)|bras (?:ouverts|le corps)|brève échéance|but non lucratif|cause d(?:e (?:ça|[mt]oi|lui|[nv]ous)|’e(?:lles?|ux))|ce (?:compte-là|moment-là|titre)|cet (?:égard|instant(?: précis|))|cette (?:époque(?: de l’année|)|heure de la (?:journée|nuit))|chaque (?:fois|instant)|chaudes larmes|cœur (?:joie|ouvert|perdu)|ciel ouvert|contre-cœur|corps perdu|cou(?:p sûr|per le souffle|rt terme|rte (?:échéance|portée))|de nombreuses reprises|des kilomètres à la ronde|double (?:titre|tranchant)|durée limitée|en (?:juger par (?:[mts]on|[nv]otre|leur) expérience|perdre (?:haleine|la tête))|faible (?:allure|revenu)|feu et à sang|flanc de (?:colline|montagne)|fleur de peau|géométrie variable|grand(?:-peine|e échelle)|haut risque|hue et à dia|huis clos|intervalles (?:ir|)réguliers|juste (?:raison|titre)|long terme|longue(?: échéance| portée|ur (?:de (?:temps|journée))|d’année)|loyer modéré|main (?:armée|droite|gauche|levée)|maint(?:s égards|es reprises)|marche forcée|merveille|mi-(?:course|distance|temps)|mi(?:di|nuit)(?: pile|)|moindres frais|moyen(?: terme|ne échéance)|mots couverts|ne (?:jamais|pas|rien|guère)|n’en (?:pas douter|point douter|plus finir)|outrance|parler franc|part (?:entière|ça|ce(?:la|ci))|partir de là|part(?:ir de rien|s égales)|pas de (?:géant|loup|tortue|velours)|personne en danger|perte de vue|petit(?: feu|e (?:dose|échelle))|peu (?:de choses? |)près|pieds joints|pile ou face|plat(?: ventre|e couture)|plein(?: (?:régime|temps|nez)|s poumons)|plus (?:forte raison|d’un titre)|point nommé|portée de main|première vue|prix (?:cassé|modique)s?|proprement parler|qui (?:mieux mieux|que ce soit|de droit)|quelque distance|quelques exceptions près|ras bords?|rude épreuve|tel point|temps (?:plein|partiel|complet)|tête reposée|tire[ -]d’aile|titre (?:conservatoire|d’exemple|indicatif|informatif|grâcieux|personnel|posthume)|tombeau ouvert|tort (?:ou à raison|et à travers)|tour de (?:bras|rôle)|tous (?:crins|points de vue)|tout(?: (?:âge|bout de champ|crin|instant|jamais|le (?:moins|monde)|moment|point de vue|prix|un chacun)|e (?:allure|bride|épreuve|force|heure|vitesse|volée))|toutes (?:fins utiles|jambes)|tribord|un moment donné|usage interne|visage découvert|vive allure|voix (?:haute|basse)|vol d’oiseau|vrai dire|vue d’œil|y (?:regarder de plus près|réfléchir))  @@0
    <<- not before(r"(?i)[ln]’$|(?<!-)\b(?:il|elle|on|y|n’en) +$")
    -1>> à                  # Confusion probable : “a” est la conjugaison du verbe “avoir”. Utilisez la préposition “à”.|http://fr.wiktionary.org/wiki/%C3%A0
__[s]/conf(conf_a_à_locutions3)__
    (a) (?:confesse|mi(?:di|nuit)|r(?:allonge|eculons|enverse|isque)|tâtons|la (?:manque|ramasse|re(?:dresse|nverse)))  @@0
    <<- not before(r"(?i)(?:\bque? |[ln]’$|(?<!-)\b(?:il|elle|on|y|n’en) +$)")
    -1>> à                  # Confusion probable : “a” est la conjugaison du verbe “avoir”. Utilisez la préposition “à”.|http://fr.wiktionary.org/wiki/%C3%A0
__[s]/conf(conf_a_à_locutions4)__
    (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
    <<- not before(r"(?i)(?:\bque? |[ln]’$|(?<!-)\b(?:il|elle|on|y|n’en) +$)")
    -1>> à                  # Confusion probable : “a” est la conjugaison du verbe “avoir”. Utilisez la préposition “à”.|http://fr.wiktionary.org/wiki/%C3%A0
__[s]/conf(conf_a_à_infi)__
    (?<![mtn]’)(a) (?:[mts](?:’|e +)|[nv]ous|)({w_2}(?:er|re|ir))  @@0,2
    <<- morph(\2, ":Y", False) and not before(r"(?i)\bque? |(?:il|elle|on|n’(?:en|y)) +$") 
    -1>> à                  # Confusion probable : “a” est la conjugaison du verbe “avoir”. Utilisez la préposition “à”.|http://fr.wiktionary.org/wiki/%C3%A0
__[s]/conf(conf_a_à_après_interrogative)__
    \w+-(?:je|ils?|elles?|je|tu|on|vous|nous) (a)(?! priori| posteriori| fortiori)  @@$
    <<- -1>> à              # Confusion probable : “a” est la conjugaison du verbe “avoir”. Utilisez la préposition “à”.|http://fr.wiktionary.org/wiki/%C3%A0
__[s]/conf(conf_m_a_tuer)__
    m’a +(tuer) @@$ <<- -1>> tué|tuée
    # Cliché. Évitez cette erreur de grammaire délibérée, faite d’innombrables fois, pour mimer l’affaire Omar Raddad.|https://fr.wikipedia.org/wiki/Omar_m'a_tuer

TEST: elles sont tout {{a}} fait compétentes
TEST: c’est grâce {{a}} nous que vous y êtes parvenus
TEST: elles se défendront jusqu’{{a}} la mort.
TEST: ce qu’elles feront alors {{a coup sûr}}, difficile de le devenir.
TEST: elles progressent pas {{a}} pas
TEST: elle n’y {{à}} pas droit.
TEST: elle risque de tout perdre, {{a}} moins qu’un miracle survienne.
TEST: {{tout a coup}}, il n’y eut plus aucune lumière
TEST: il y {{à}} des pertes.
TEST: ce qui {{à}} pris tant de valeur, c’est…
TEST: Ce chien, croyons-nous savoir, {{à le}} maître le plus violent qui soit.
TEST: Il ne les leur {{à}} pas imposés.
TEST: l’homme, jamais, ne la lui {{à}} imposés.
TEST: l’homme, jamais, ne nous l’{{à}} prise.
TEST: il me les {{à}} donnés
TEST: il me l’{{à}} donné
TEST: qui en {{à}} ?
TEST: Il l’a fait {{a}} cause de toi.
TEST: Il ne m’{{à}} jamais vu.
TEST: Que fait-il {{a}} cette conférence ?
TEST: Il m’en {{à}} donné.
TEST: Il y en {{à}}.
TEST: ce que cet homme, dans son garage, {{à}} alors une importance.
TEST: Il les y {{à}}.
TEST: On {{à}} faim.
TEST: Elle en {{à}} pris.
TEST: Elle {{à}} froid.
TEST: Elle l’en {{à}} averti.
TEST: un élève qui leur {{à}} fait bien des misères.
TEST: il {{à}} faim
TEST: Je sais qu’ils sont {{a}} toi.
TEST: Celui qui y croit {{à les}} moyens d’y parvenir.
TEST: Face {{a}} ces gens, il ne pensait pas pouvoir réussir
TEST: On s’y fait, d’une manière ou d’une autre, {{a}} notre corps défendant.
TEST: Puisqu’on nous méprise, autant y aller {{a}} reculons.
TEST: Ne pas hésiter {{a}} {{demander}} des conseils.
TEST: Sébastien {{a}} {{demander}} des conseils.
TEST: Personne {{a}} part Tom ne connaît son adresse
TEST: Attention {{a}} ne pas la réveiller.
TEST: C’est {{à peu prêt}} la même chose.
TEST: ils viennent nous attaquer {{a}} tout bout de champ
TEST: par rapport {{a}} eux, je me sens parfois dépassé
TEST: par rapport {{a}} ces hommes-là, nous manquons d’expérience
TEST: la réalité m’a {{tuer}}
TEST: Ce que cet homme {{à devient}} aujourd’hui notre problème
TEST: Je tenais à le lui faire savoir.
TEST: ce que cette personne, dans son esprit trouble et vindicatif, {{à}} aux hommes à dire, nul ne le sait.
TEST: il va falloir songer à les leur donner
TEST: le coût est estimé à au moins 1000 milliards de dollars
TEST: elle à qui nous avons donné notre cœur et pour laquelle nous avons tout tenté pour la faire aimer de nos concitoyens.
TEST: jusqu’à parfois se mettre en danger



# au temps / autant
__[i]/conf(conf_au_temps_pour_moi)__
    (au ?tant?) pour moi @@0
    <<- not word(-1) -1>> au temps                                          # Pour reconnaître son erreur, « au temps pour moi » est l’expression recommandée par l’Académie française.
__[i]/conf(conf_autant_que_faire_se_peut)__
    au t(?:emps|ant?) que f(?:aire|erre|ers?) [sc]e peu[xt]?
    <<- ->> autant que faire se peut                                        # Locution adverbiale : « autant que faire se peut ».|https://fr.wiktionary.org/wiki/autant_que_faire_se_peut

TEST: Je me suis trompé. {{Autant}} pour moi.
TEST: on va y arriver, {{au temps que faire se peut}}…


# ça / çà / sa
__[i]/conf(conf_ça_sa)__
    (ça) ({w_2}) @@0,3 <<- morph(\2, ":[NAQ].*:f") and not re.search("^seule?s?", \2) -1>> sa       # Confusion. « sa » (sa maison, sa voiture) ≠ « ça » (ça vient, ça heurte).
__[i]/conf(conf_sa_ça1)__
    (sa) +({w_2}) @@0,$
    <<- morphex(\2, ":G", ">(?:tr(?:ès|op)|peu|bien|plus|moins|toute) |:[NAQ].*:f") -1>> ça         # Confusion : « sa » (sa maison, sa voiture) ≠ « ça » (ça vient, ça heurte).
__[i]/conf(conf_sa_ça2)__       comme (sa) @@6 <<- not word(1) or after("(?i)^ +que? ") -1>> ça     # Confusion : « sa » est un déterminant possessif.
__[i>/conf(conf_sa_ça3)__       (sa) +(?:[dnmtsjl]’|lorsqu |qu |puisqu )  @@0 <<- -1>> ça           # Confusion : « sa » (sa maison, sa voiture) ≠ « ça » (ça vient, ça heurte).
__[i]/conf(conf_çà_ça)__        çà(?! et là) <<- not before(r"\b(?:[oO]h|[aA]h) +$") ->> ça         # Confusion : « çà » ne s’emploie plus guère que dans l’expression « çà et là ».
__[i]/conf(conf_çà_et_là)__     ça et là <<- not morph(word(-1), ":R") ->> çà et là                 # Confusion : « ça » équivaut à « cela ». Dans l’expression « çà et là », « çà » équivaut à « ici ».

TEST: {{ça}} patrie, il la détestait
TEST: et {{sa}} par deux fois
TEST: {{sa}} prend du temps.                                                  ->> ça
TEST: {{çà}} va                                                               ->> ça
TEST: {{sa}} va                                                               ->> ça
TEST: Il trouva de la nourriture {{ça et là}}.                                ->> çà et là
TEST: Elle parle comme {{ça}} mère.                                           ->> sa
TEST: il faut s’y prendre comme {{sa}}
TEST: on fait {{sa}} lorsqu’on a tout perdu
TEST: avec sa presque belle-mère
TEST: sa toute nouvelle application de synchronisation de fichiers


# ce / se / ceux
__[i]/conf(conf_se_verbe1)__
    (ce) (?!faire)({infi})  @@0,3
    <<- morph(\2, ":Y")  and \1 != "CE" -1>> se                             # Confusion. Ce chien, ce chat… Se demander, se croire…
__[i]/conf(conf_se_verbe2)__
    (ce) (?!faire)({w_2})  @@0,3
    <<- morph(\2, ":V[123].*:(?:Y|[123][sp])") and not morph(\2, ">(?:devoir|pouvoir) ") and \2[0].islower() and \1 != "CE"
    -1>> se                                                                 # Confusion : « \2 » est un verbe. Exemples : ce bâtiment, se perdre.
__[i]/conf(conf_pour_ce_faire)__
    pour (se) faire,? ({w_2})  @@5,$
    <<- (\0.find(",") >= 0 or morphex(\2, ":G", ":[AYD]"))
    -1>> ce                                                                 # Confusion probable. Dans cette locution, il faut employer “ce”.|http://fr.wiktionary.org/wiki/pour_ce_faire
__[i]/conf(conf_ne_se1)__   ne (ce) @@3 <<- -1>> se                         # Confusion. Ce chien, ce chat… Se demander, se croire…
__[i>/conf(conf_ne_se2)__   ne ([cç]’) @@3 <<- -1>> s’                      # Confusion. Ce chien, ce chat… Se demander, se croire…
__[i]/conf(conf_ce_conj_prep)__
    (se) (?:qu[ei]?|dont|malgré|pourquoi|avec|pour|par) @@0 <<- -1>> ce     # Confusion. Exemples : ce bâtiment, se perdre.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=2440
__[i]/conf(conf_il_se)__
    ils? (ce) @@$ <<- not word(-1) -1>> se                                  # Confusion. Exemples : ce bâtiment, se perdre.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=2440
__[i]/conf(conf_qui_se_verbe)__
    qui (ce) ({w_2})  @@4,$
    <<- morphex(\2, ":V", ":[NAQ].*:[me]") or before(r"(?i)\b[cs]e +")
    -1>> se                                                                 # Confusion probable. Exemples : ce bâtiment, se perdre.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=2440
__[i]/conf(conf_ce_être)__
    (ceux) (?:ne |)(?:sont|serai(?:en|)[ts]?|f[uû](?:ren|)t|n’(?!ayant|étant)\w+) @@0
    <<- -1>> ce                                                             # Confusion.|http://www.intellego.fr/soutien-scolaire-6eme/aide-scolaire-francais/ce-ceux-ou-se/3829
__[s]/conf(conf_ce_ne_être_doit)__
    ([sS]e) n(?:e |’)({être}|d[eouû]\w+|p[oeuû]\w+)  @@0,$
    <<- morph(\2, ">(?:être|pouvoir|devoir) .*:3s", False)
    -1>> ce                                                                 # Confusion probable.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=2440
__[i]/conf(conf_ce_ne)__
    (ceux) ne ({w_2}) @@0,$
    <<- morphex(\2, ":[123]s", ":P") -1>> ce                                # Confusion.|http://www.intellego.fr/soutien-scolaire-6eme/aide-scolaire-francais/ce-ceux-ou-se/3829
__[i]/conf(conf_ce_nom1)__
    (se) ({w1}) @@0,3
    <<- morphex(\2, ":[NAQ]", ":([123][sp]|Y|P|Q)|>l[ea]? ") -1>> ce        # Confusion. Ce chien, ce chat… Se demander, se croire…
__[i]/conf(conf_ce_nom2)__
    (ceux) (?!l[aà] |qu[ie]? )({w_2}) @@0,$
    <<- morphex(\2, ":N.*:s", ":(?:A.*:[pi]|P|R)|>autour ") -1>> ce         # Confusion probable.|http://www.intellego.fr/soutien-scolaire-6eme/aide-scolaire-francais/ce-ceux-ou-se/3829

TEST: il ne {{ce}} compte pas parmi eux
TEST: il ne {{ç’}}avançait jamais sans avoir pesé toutes les conséquences
TEST: {{Se}} seraient des histoires.
TEST: {{se}} seraient des jours heureux.
TEST: {{Se}} sont de grands enfants.
TEST: {{Se}} sera une fille.
TEST: {{ceux}} seraient des jours heureux
TEST: Pour {{se}} faire, ils sont prêts à tout.
TEST: {{se}} {{ne}} peut être ainsi.
TEST: C’est tout {{se}} qu’il y a
TEST: Tout {{se}} que je fais
TEST: tout {{se}} qu’il entend
TEST: {{Ce}} {{promener}} est relaxant.
TEST: Il {{ce}} {{sent}} seul
TEST: {{se}} {{train}} est en retard
TEST: {{ceux}} train arrive trop vite.
TEST: {{ceux}} ne doit pas nous faire oublier ce désastre
TEST: qui {{ce}} donne en spectacle.
TEST: les expatriés éloignés ou ceux habitant ici
TEST: les photographies de ceux n’ayant pas dépassé sept sur vingt.
TEST: Pensez-vous que ceux ne sachant même pas ce qu’est une VHS peuvent y trouver leur compte ?
TEST: la réduction de ma liberté intellectuelle et celle de ceux autour de moi


# ces / ses / c’est
__[s]/conf(conf_c_est1)__
    ([scSC]es) (?:à|au-dessus|avec|aux?|contre|derrière|devant|par|pour|sans) (?:l(?:es?|a|)|une?|[cs]es?|cette|de?s?|du|lui|elles?|eux|nous|vous)  @@0
    <<- -1>> c’est                                                                          # Confusion. Écrivez « c’est » pour dire « ceci est… ».
__[s>/conf(conf_c_est2)__
    ([scSC]es) [ld]’(?![A-Z])  @@0
    <<- -1>> c’est                                                                          # Confusion. Écrivez « c’est » pour dire « ceci est… ».
__[s]/conf(conf_c_est3)__
    ([scSC]es) (?:qu(?:lle|el?|)|comme|ce(?:t|tte|)|[nv]os|les?|eux|elles)  @@0
    <<- -1>> c’est                                                                          # Confusion probable. Écrivez « c’est » pour dire « ceci est… ».
__[i]/conf(conf_ces_ses)__
    (c’est) ({w_2})  @@0,6 <<- morphex(\2, ":N.*:p", ":(?:G|W|M|A.*:[si])") -1>> ces|ses    # Confusion. Exemples : c’est facile ; ces chats (désignation) ; ses chats (possession)…

TEST: {{ses}} au-dessus de ses forces.
TEST: {{ces}} comme la peste
TEST: car {{ses}} d’avance perdu
TEST: {{ces}} qu’il y a tant de pertes
TEST: {{c’est}} {{délires}} nous ennuient
TEST: En 2015, c’est Paris et son agglomération qui…


# d’en / dans
__[i]/conf(conf_dans1)__
    (d’en|dan) (?:l(?:es?|a)|une?|d(?:es?|u)|[mts](?:on|a|es)|[nv]o(?:tre|s)|ce(?:tte|t|s|))  @@0
    <<- \1.endswith("en") or before("^ *$") -1>> dans                               # Confusion. Utilisez “dans” pour dire “à l’intérieur de quelque chose”.
__[i]/conf(conf_dans2)__
    ^ *(dents?) (?:l(?:es?|a)|une?|[mts](?:on|a|es)|[nv]o(?:tre|s)|ce(?:tte|t|s|))  @@w
    <<- -1>> dans                                                                   # Confusion. Utilisez “dans” pour dire “à l’intérieur de quelque chose”.

TEST: {{dan}} la voiture
TEST: ils sont partis {{d’en}} une direction différente
TEST: {{dents}} les montagnes au loin.


# davantage / d’avantage
__[i]/conf(conf_d_avantages)__
    (?:peu|plein|beaucoup|trop|plus|moins|assez|suffisamment|tellement|obtentions?|régimes?) (davantage)  @@$
    <<- -1>> d’avantages                                                            # Confusion probable : “davantage” signifie “plus” ; un “avantage” signifie “faveur”, “bénéfice”, “profit”…
__[i]/conf(conf_davantage1)__
    ({w1}) (d’avantages?) @@0,$
    <<- morphex(\1, ":V", ":Q") -2>> davantage                                      # Confusion probable : “davantage” signifie “plus” ; un “avantage” signifie “faveur”, “bénéfice”, “profit”…
__[i]/conf(conf_davantage2)__
    ({w_1})-(?:je|tu|ils?|elles?|[nv]ous|on) +(d’avantages?) @@0,$
    <<- not morph(\1, ">(?:profiter|bénéficier) ", False) -2>> davantage            # Confusion probable : “davantage” signifie “plus” ; un “avantage” signifie “faveur”, “bénéfice”, “profit”…
__[i>/conf(conf_davantage3)__
    (d’avantages?) d(?:e +|’) @@0
    <<- -1>> davantage                                                              # Confusion possible : “davantage” signifie “plus” ; un “avantage” signifie “faveur”, “bénéfice”, “profit”…
__[i]/conf(conf_être_davantage_ppas)__
    ({etre}) (d’avantages?) ({w_2}) @@0,w,$
    <<- morph(\1, ":V0e", False) and morphex(\3, ":[NAQ]", ":G") -2>> davantage     # Confusion possible : “davantage” signifie “plus” ; un “avantage” signifie “faveur”, “bénéfice”, “profit”…

TEST: ils ont peu {{davantage}} à vivre ici.
TEST: Ils s’exerceront {{d’avantages}}.
TEST: {{d’avantage}} de monde de jour en jour
TEST: Viens-tu {{d’avantage}} à la maison
TEST: {{d’avantage}} de monde viendra
TEST: ils sont {{d’avantages}} perdus que les autres.


# eh bien, hé bien / et bien
__[i]/conf(conf_eh_bien)__
    et bien(?! que?| sûr| d’autres| entendu| avant| souvent| longtemps| des| moins| plus| au-delà)
    <<- not word(-1) and not morph(word(1), ":[WAY]", False, False)
    ->> eh bien|hé bien                                     # Confusion probable.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?T1=h%C3%A9&T3.x=0&T3.y=0
__[i]/conf(conf_eh_ben)__
    et (ben)  @@3
    <<- not \1.startswith("B")
    ->> eh ben|hé ben                                       # Confusion probable.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?T1=h%C3%A9&T3.x=0&T3.y=0

TEST: {{et bien}} il y aura des pertes
TEST: {{et ben}} on n’en sait rien.
TEST: nous y songions, et bien au-delà des considérations habituelles.
TEST: une image bien plus colorée, et bien plus intense, de la vie.
TEST: Toutes ces questions, et bien d’autres, sont vues aujourd’hui dans le paradigme quantitatif de la monnaie, des taux de change flottants et de la monnaie administrée.
TEST: et bien manger, c’est important.
TEST: il a été vaincu, et bien vaincu.


# haut delà / au-delà
__[i]/conf(conf_au_delà)__      haut[- ]del[àa] <<- ->> au-delà             # Confusion. 

TEST: il va dans l’{{haut delà}}


# hors / or
__[i>/conf(conf_hors_or1)__
    ^ *(hors),  @@w <<- -1>> or
    # Confusion. Écrivez “or” pour dire “néanmoins”. La préposition “hors” sert à dire “en dehors de” ou “excepté”.|https://fr.wiktionary.org/wiki/hors
__[i]/conf(conf_hors_or2)__
    (hors) (?:j(?:e|’[\w-]+)|tu|ils?|on|parce|quel(?:le|)s?|pourquoi|qu[ie])  @@0 <<- -1>> or,
    # Confusion probable. Écrivez “or” pour dire “néanmoins”. La préposition “hors” sert à dire “en dehors de” ou “excepté”.|https://fr.wiktionary.org/wiki/hors

TEST: {{hors}}, nous y coryons malgré tout ce qu’on peut en dire.
TEST: {{Hors}} il y a tant à faire depuis que nous sommes arrivés en ces lieux.
TEST: Hors nous, personne ne sait ce qui s’est passé là-bas.
TEST: Le peuple se sent hors jeu.


# la / là
__[s]/conf(conf_la_là)__
    ([lL]a) (?:a(?:fin|lors|près|uprès|ux?|vant|vec)|au(?:-de(?:dans|hors|là|sso?us|vant)|x|)|c(?:e(?:t|te|s|)|ar|hez|omme)|ça|d(?:ans|evant|es?|ès|onc|urant|’{w_1})|e(?:lles?|n|t)|ils?|je?|l(?:es?|a|orsque?|’{w_1})|m(?:algré|es|on|a|e)|n(?:e|ous)|o[uùn]|par(?:ce|fois|mi|)|p(?:arce|endant|our|uisque)|qu(?:e?|and)|s(?:on|a|es?|ouvent|ur)|t(?:andis|on|a|es?|u)|un|vous)
    @@0
    <<- not morph(word(-1), ":E|>le ", False, False)
    -1>> là                                                                                         # Confusion probable. Écrivez “là” si vous voulez dire “ici”.

TEST: nous serions encore {{la}} l’année prochaine
TEST: en reprenant le chandail de John {{la}} où elle l’avait abandonne.
TEST: Qui serait la ou le plus à même à occuper ce poste selon vous ?


__[i]/conf(conf_tiret_la_là)__
    ce(?:te|s|) +{w_2}-(la) @@$
    <<- -1>> là                                                                                     # Confusion. Écrivez “là” soudé au nom pour désigner un objet précis.

TEST: Ce {{fait}}-{{la}} ne peut être ignoré.


# leurs / leur
__[i]/conf(conf_leurs_verbe)__
    (leurs) ({w_2})  @@0,6
    <<- morphex(\2, ":(?:[123][sp]|Y)", ":(?:G|N|A|M[12P])") and not before(r"(?i)\b[ld]es +$")
    -1>> leur                                                                                       # Incohérence : “leurs” est un déterminant pluriel censé précéder un substantif pluriel. Pour le pronom personnel devant un verbe, écrivez :

TEST: je vais {{leurs}} reprendre
TEST: je {{leurs}} apprends la programmation
TEST: après qu’un des leurs ait été gravement blessé par un tir de grenade


# min / mins
__[u]/conf(conf_symbole_min)__  \d+ (mins) @@$ <<- -1>> min                                         # Les unités de mesure abrégées ne prennent pas la marque du pluriel.

TEST: 120 {{Mins}} de bonheur


# on / ont
__[i]/conf(conf_on_ont_adverbe)__
    (?<!’)(on) ({w_2})  @@0,3
    <<- morph(\2, ":W", False) and not morph(word(-1), ":V.*:3s", False, False) -1>> ont            # Confusion probable : “avoir” à la 3ᵉ personne du pluriel du présent s’écrit “ont”.

TEST: ces gens {{on}} {{souvent}} tort.
TEST: {{Ont}} lui avait donné du temps
TEST: {{Ont}} leur prendra tout
TEST: {{Ont}} n’arrive pas à s’en sortir.
TEST: {{Ont}} viens !
TEST: {{Ont}} ne sait pas comment faire.


# pale / pâle
__[i]/conf(conf_pale_pâle1)__
    (?:bien|tr(?:ès|op)|si|vraiment|tellement) +(pales?)  @@$
    <<- -1>> =\1.replace("pal", "pâl")
    # Utilisez “pâle” pour évoquer la pâleur… Une pale est, entre autres choses, un élément d’une hélice.|http://fr.wiktionary.org/wiki/pale
__[i]/conf(conf_pale_pâle2)__
    (pales?) +(?:imitat(?:ion|eur|rice)|rayon)s?  @@0
    <<- -1>> =\1.replace("pal", "pâl")
    # Utilisez “pâle” pour évoquer la pâleur… Une pale est, entre autres choses, un élément d’une hélice.|http://fr.wiktionary.org/wiki/pale

TEST: elles sont si {{pales}}.
TEST: cette {{pale}} imitation d’un chef-d’œuvre


# peu / peux / peut / peut-être
__[i]/conf(conf_peut_adv)__
    (?<![dDuUnN][eEnN] )(peu) (?:pas|donc|jamais|rien|parfois|alors|enfin|rarement|éventuellement) @@0
    <<- not before("très +$") -1>> peut                                     # Confusion probable : « peu » signifie « pas beaucoup », pour le verbe pouvoir, écrivez :
__[i]/conf(conf_il_ce_peut_être)__
    ^ *(?:il|ce) (peut-être) @@$
    <<- -1>> peut être                                                      # Confusion probable : « peut-être » signifie « possiblement ».
__[i]/conf(conf_cela_peut_être_adj)__
    ^ *(?:cela|ceci) (peut-être) ({w_2})  @@w,$
    <<- morph(\2, ":[AQ]", False) -1>> peut être                            # Confusion probable : « peut-être » signifie « possiblement ».
__[i]/conf(conf_peu_à_peu)__
    peu[xt]? a peu[xt]?
    <<- ->> peu à peu                                                       # Confusion : « peu à peu » ou « petit à petit ». 
__[i]/conf(conf_peu_importe)__
    (peu[tx]) importe(?:nt|) @@w
    <<- morph(word(-1), ":C", False, True) -1>> peu                         # Confusion : « \1 » est une conjugaison de “pouvoir”, utilisez “peu” pour dire “pas beaucoup”.
__[i]/conf(conf_adv_de_peu)__
    (?:très|trop|de|quelque|pour|à) (peu[tx]) @@$
    <<- -1>> peu                                                            # Confusion : « \1 » est une conjugaison de “pouvoir”, utilisez “peu” pour dire “pas beaucoup”.
__[i]/conf(conf_un_peu)__
    un (peu[xt]) @@3
    <<- not before("(?i)(?:quelqu|l|d)’") -1>> peu                          # Confusion : « \1 » est une conjugaison de “pouvoir”, utilisez “peu” pour dire “pas beaucoup”.
__[i]/conf(conf_il_on_ne_peut)__
    (?:il|on) (?:ne |)(peu) @@$
    <<- -1>> peut                                                           # Confusion : « peu » signifie « pas beaucoup ».
__[i]/conf(conf_je_tu_peux)__
    (?:je|tu) (?:ne |)(peu)
    @@$ <<- -1>> peux                                                       # Confusion : « peu » signifie « pas beaucoup ».
__[i]/conf(conf_ne_se_peut)__
    [ns]e (peu) @@3
    <<- -1>> peut                                                           # Confusion. Exemples : Il est peu habile, mais il peut y arriver.
__[i]/conf(conf_peu_adj)__
    (peu[tx]) ({w_2})  @@0,$
    <<- morph(\2, ":A") and not re.search("(?i)^seule?s?$", \2) -1>> peu    # Confusion probable : « \1 » est une conjugaison de « pouvoir », utilisez « peu ».

TEST: {{peu}} rarement y arriver.
TEST: Il est un {{peut}} comme une forêt
TEST: Il {{peut-être}} mortel.
TEST: Cela {{peut-être}} mortel.
TEST: cela ne se {{peu}}.
TEST: des bâtisses {{peu a peu}} abandonnées.
TEST: aucun pays – ou très peu alors – n’a réussi à faire ça de façon durable
TEST: Mais {{peut}} importe le rang.
TEST: homme de {{peut}} de foi, écoute le vent.
TEST: Il en vient un {{peut}} tous les jours.
TEST: {{peut}} sympathique, cet individu.
TEST: il {{peu}} y parvenir
TEST: tu ne {{peu}} en savoir plus
TEST: {{peut}} {{embarrassés}} par leurs déboires, ils poursuivirent comme si de rien n’était.


# la plupart
__[i]/conf(conf_la_plupart)__   la (plu[st][ -]part) @@3 <<- -1>> plupart                           # Confusion. Écrivez « la plupart » pour évoquer la majeure partie de quelque chose.

TEST: la {{plus part}}


# pot aux roses / poteau rose
__[i]/conf(conf_pot_aux_roses)__
    poteau rose <<- ->> pot aux roses
    # Confusion probable. On dit : « découvrir le pot aux roses ».|http://fr.wiktionary.org/wiki/d%C3%A9couvrir_le_pot_aux_roses

TEST: Ils ont découvert le {{poteau rose}}.


# prêt / près / pré
__[i]/conf(conf_prêt_à)__
    (près) à ({w_2})  @@0,$
    <<- not before("(?i)(?:peu|de) $") and morph(\2, ":Y|>(?:tout|les?|la) ") -1>> prêt|prêts       # Confusion. Être près de (faire) quelque chose. Prêt à faire quelque chose.
__[i]/conf(conf_près_de)__
    (prêts?) d(?:e +|’)({w_1}) @@0,$
    <<- morph(\2, ":(?:Y|M[12P])|>(?:en|y|les?) ", False) -1>> près                                 # Confusion. Être près de (faire) quelque chose. Prêt à faire quelque chose.
__[i]/conf(conf_près)__         de(?: plus|puis) (prêts?)  @@$ <<- -1>> près                        # Confusion. Être prêt(e) à faire quelque chose. Être près de quelque chose.
__[i]/conf(conf_très_près)__    très (pr(?:êt|é)s?) @@$ <<- -1>> près                               # Confusion probable. Pour évoquer la proximité, utilisez :

TEST: ils se sont approchés très {{prêts}}.
TEST: Je suis si {{prêt}} d’y arriver.
TEST: Il est {{près}} à les aider
TEST: Elle va regarder ça de plus {{prêt}}.


# quand / quant / qu’en
__[i]/conf(conf_quant_à)__
    (?<![dD]e )(quand) (?:à|aux?)  @@0
    <<- not morph(word(-1), ">(?:arriver|venir|à|revenir|partir|aller) ") -1>> quant                # Confusion probable. Quand = à quel moment. Quant à = à propos de.
__[i]/conf(conf_quand)__    quant(?! à| aux?| est[ -]il d(?:es?|u) ) <<- ->> quand                  # Confusion. Quand = à quel moment. Quant à = à propos de.
__[i]/conf(conf_qu_en1)__   (quan[dt]) est[ -]il d(?:es?|u) @@0 <<- -1>> qu’en                      # Confusion. Ce qu’il en est de… → Qu’en est-il de… ?
__[i]/conf(conf_qu_en2)__   (quan[dt]) ({w_2}ant) @@0,$ <<- morph(\2, ":P", False) -1>> qu’en       # Confusion probable.

TEST: {{Quant}} est-il du chien ?
TEST: {{Quand}} à ma santé, elle est défaillante.
TEST: {{Quant}} ils…
TEST: {{quant}} je…
TEST: {{quant}} nous…
TEST: il comprit {{quand}} prenant son parti, il se protégeait aussi.
TEST: être rassuré quant à l’avenir du continent européen


# qu’elle / quelle
__[i]/conf(conf_quelle_nom_adj)__
    (qu elles?) +(?!seule?s?)({w_2})  @@0,$
    <<- morphex(\2, ":[NAQ]", ":(?:G|[123][sp]|W)") -1>> =\1.replace(" ", "")                       # Confusion probable. Ex : Quelle femme ! Je crois qu’elle réussira.

TEST: {{qu’elle}} emmerdeuse.


# savoir / ignorer
__[i]/conf(être_pas_sans_savoir)__
    ({etre}) pas sans (ignor(?:e[rz]|ée?s?|ai[st]))  @@0,$
    <<- morph(\1, ":V0e", False)
    -2>> savoir     # Confusion : vous écrivez l’inverse de ce que vous voulez dire.|http://fr.wiktionary.org/wiki/vous_n%E2%80%99%C3%AAtes_pas_sans_savoir

TEST: Vous n’êtes pas sans {{ignorer}} que…


## s’en / sens / sans / cent / cens
__[i]/conf(conf_il_on_s_en)__  (?:ils?|on) (san[sg]|cen[st]|c’en) ({w_2})  @@w,$
    <<- not word(-1) and morph(\2, ":V", False)
    -1>> s’en                                                                                       # Confusion probable.
__[i]/conf(conf_elle_s_en)__  elles? (san[sg]|cen[st]|c’en) ({w_2})  @@w,$
    <<- not word(-1) and morph(\2, ":V", False) and not ( \1 == "sans" and morph(\2, ":[NY]", False) )
    -1>> s’en                                                                                       # Confusion probable.

TEST: {{S’en}} était vraiment trop !
TEST: Car {{s’en}} était vraiment fini !
TEST: elle {{sang}} était voulu


# sur / sûr
__[i]/conf(conf_sûr_de_nom_propre)__
    (sur) d(?:e |’)([A-ZÉÈ][\w-]+)  @@0,$
    <<- morph(\2, ":M[12]", False) -1>> sûr
    # Confusion probable : “sur” est une préposition ou un adjectif signifiant acide ou aigre ; utilisez “sûr” pour certain, vrai ou sans danger.|http://fr.wiktionary.org/wiki/sur

TEST: Je suis {{sur}} de Patrick.


# tant / temps (1re partie)
__[i]/conf(conf_en_temps_de)__          en (tant?) de?  @@3                 <<- -1>> temps          # Confusion. Écrivez « en temps de ».
__[i]/conf(conf_de_temps_en_temps)__    de tant? en tant?                   <<- ->> de temps en temps   # Confusion. Écrivez « de temps en temps ».
__[i]/conf(conf_un_temps_soit_peu)__    un (temps|tan) soi[tes]? peu  @@3   <<- -1>> tant           # Confusion. Écrivez « un tant soit peu ».
__[i]/conf(conf_tant_de)__              a(?:près|vec) (temps|tan) de?  @@w  <<- -1>> tant           # Confusion.|http://fr.wiktionary.org/wiki/tant 
__[i]/conf(conf_à_temps_partiel)__      [àa] (tant?) (?:partiel|plein)s? @@2 <<- -1>> temps         # Confusion.
__[i]/conf(conf_en_même_temps)__        en mêmes? (tant?)  @@$              <<- -1>> temps          # Confusion.

TEST: en {{tant}} de guerre, il faut savoir faire face et ne pas faiblir face à l’adversité.
TEST: ils vont {{de tan en tan}} au restaurant
TEST: un {{temps}} soit peu perdu dans cette affaire.
TEST: après {{temps}} de souffrance, il faut savoir lâcher prise.
TEST: il travaille à {{tant}} partiel
TEST: en même {{tant}}, on s’en moque, de toutes ces histoires ennuyeuses.


# voie / vois / voix
# ->> voix
__[i]/conf(conf_à_haute_voix)__     à haute (voi[tes])   @@8            <<- -1>> voix               # Confusion.|http://fr.wiktionary.org/wiki/voix
__[i]/conf(conf_à_voix)__           à (voi[tes]) (?:basse|haute) @@2    <<- -1>> voix               # Confusion.|http://fr.wiktionary.org/wiki/voix
__[i]/conf(conf_de_vive_voix)__     de vives? (voi[est])  @@$           <<- -1>> voix               # Confusion.|http://fr.wiktionary.org/wiki/voix

TEST: à haute {{voie}}
TEST: à {{voie}} haute
TEST: de vive {{voie}}

# ->> voie
__[i]/conf(conf_sur_la_bonne_voie)__        sur la bonne (voix) @@$     <<- -1>> voie               # Confusion.|http://fr.wiktionary.org/wiki/voix
__[i]/conf(conf_en_voie_de)__
    en (voix) d(?:e (?:développement|disparition|guérison|résorption)|’(?:acquisition|achèvement|extinction|obtention))  @@3
    <<- -1>> voie                                                                                   # Confusion.|http://fr.wiktionary.org/wiki/voie
__[i]/conf(conf_ouvrir_la_voix)__
    (ouv\w+) +la (voix) (?:à|aux?)  @@0,w <<- morph(\1, ">ouvrir ", False) -2>> voie                # Confusion.|http://fr.wiktionary.org/wiki/voie
__[i]/conf(conf_par_voie_de_conséquence)__  par (voix) de conséquence   @@4 <<- -1>> voie           # Confusion.|http://fr.wiktionary.org/wiki/voie
__[i]/conf(conf_voie_adj)__
    (voix) (?:abdominale|anale|biliaire|carrossable|communale|express|interdite|intramusculaire|intraveineuse|piétonne|principale|prioritaire|privée|publique|déserte|romaine|appienne|flaminienne|ferrée|ferroviaire|lactée|lacrymale|aérienne|maritime|fluviale|terrestre|navigable|détournée|déviée|buccale|digestive|urinaire|respiratoire|parallèle|administrative|diplomatique|gouvernementale|législative|hiérarchique|rectiligne|sinueuse|souterraine|urbaine)s? @@0
    <<- -1>> voie                                                                                   # Confusion.|http://fr.wiktionary.org/wiki/voie

TEST: sur la bonne {{voix}}
TEST: ces patients sont en {{voix}} de guérison.
TEST: il faut ouvrir la {{voix}} aux nouveaux venus.
TEST: Je propse que, par {{voix}} de conséquence, nous partions immédiatement.
TEST: C’est une {{voix}} interdite.


# voire / voir
__[i]/conf(conf_voir_voire)__
    (voir) ({w_2}) @@0,$
    <<- not re.search("^(?:grand|petit|rouge)$", \2) and morphex(\2, ":A", ":[NGM]")
    and not before(r"(?i)\bne (?:pas |jamais |) *$") and not morph(word(-1), ":O[os]|>(?:ne|falloir|pouvoir|savoir|de) ", False)
    -1>> voire 
    # Confusion probable : “voir” est un verbe concernant la perception visuelle. Pour signifier “et même possiblement”, écrivez :|https://fr.wiktionary.org/wiki/voire

__[i]/conf(conf_voire_voir)__
    voire
    <<- morph(word(-1), ":Cs|>(?:ni|et|sans|pour|falloir|[pv]ouvoir|aller) ", True, False) ->> voir
    # Confusion probable : “voire” signifie “et même possiblement”. Pour le verbe, écrivez “voir”.|https://fr.wiktionary.org/wiki/voire

TEST: Elles sont fatiguées, {{voir}} épuisées.
TEST: Ce serait pour aider, ainsi que {{voire}} l’avancement du projet.
TEST: Elles vont voir rouge en apprenant cet échec.
TEST: Voir les enfants jouer ne me rend pas nostalgique.
TEST: Il faut voir grand.
TEST: Il sait voir grand.
TEST: Il sait voir telle ou telle chose avec acuité.
TEST: ça reste à voir
TEST: Je veux le voir étonné par toutes ces merveilles.
TEST: Les start-ups doivent aller vite, voir grand.
TEST: de fortes chances de se voir ruiné
TEST: Quelle chance tu as eue de voir ruiné ce connard.
TEST: l’immobilier a été ces dernières années l’investissement le plus rentable (voir graphique ci-dessous)
TEST: elles sont pas mal ainsi, voire élégantes pourrait-on dire.
TEST: il y en a peu, voire très peu.
TEST: car elles pénètrent dans les poumons voire le système sanguin.


#### SGPL

## plus que prévu / mois que prévu
__[i]/sgpl(sgpl_que_prévu1)__   (plus|moins|autant) +que (prévu(?:es?|s)) @@0,$ <<- -2>> prévu                          # Invariable. Implicitement, \1 que ce qui était prévu.
__[i]/sgpl(sgpl_que_prévu2)__   (plus|moins|aussi) +({w_2}) +que (prévu(?:es?|s)) @@0,w,$ <<- -3>> prévu                # Invariable. Implicitement, \1 \2 que ce qui était prévu.
__[i]/sgpl(sgpl_que_prévu3)__   (plus|moins|autant) +d(?:e |’)({w_2}) +que (prévu(?:es?|s)) @@0,w,$ <<- -3>> prévu      # Invariable. Implicitement, \1 \2 que ce qui était prévu.
__[i]/sgpl(sgpl_comme_adj)__    comme ((annoncé|convenu|prévu)(?:es?|s)) @@6,6 <<- -1>> \2                              # Invariable. Implicitement, comme ce qui était \2.

TEST: il y en a autant que {{prévus}}.
TEST: elles sont plus nombreuses plus que {{prévues}}
TEST: il y a moins de bouffe que {{prévue}}
TEST: comme {{annoncés}}, ils sont arrivés
TEST: moins loin que {{prévus}}                               ->> prévu
TEST: plus rapide que {{prévues}}                             ->> prévu
TEST: autant d’hommes que {{prévus}}                          ->> prévu
TEST: il y en a moins que {{prévues}}                         ->> prévu
TEST: comme {{convenus}}                                      ->> convenu



#### TOUT / TOUS / TOUTE / TOUTES

__[i]__  fai(?:tes|sons|s)-(?:les|[nv]ous) (tou(?:te|)s) @@$ <<- ~1>> *
__[i]__  (tout) (?:débuts|petits) @@0 <<- before(r"\b(aux|[ldmts]es|[nv]os) +$") ~1>> *
__[i]__  (?:[ldmtsc]es|[nv]os|leurs) (tout) ({w_2})  @@w,$
    <<- morph(\2, ":[AQ].*:[pi]", False) ~1>> *


__[i]/gn(gn_tous_deux)__
    (tout) deux  @@0 <<- not word(-1) -1>> tous                                                     # Locution pronominale : « tous deux ».|https://fr.wiktionary.org/wiki/tous_deux

TEST: {{Tout}} deux sont partis les premiers.


__[i]/gn(gn_tous_déterminant_pluriel)__
    tout(?= [cmts]es\b)
    <<- not before(r"(?i)\b(?:d[eu]|avant|après|sur|malgré) +$") ->> tous                           # Erreur d’accord probable.

TEST: {{Tout}} mes hommes sont venus.
TEST: Malgré tout ces hommes sont quand même revenus.


__[i]/gn(gn_tous_les)__
    (tout) les ({w_2})  @@0,$
    <<- not before(r"(?i)\b(?:d[eu]|avant|après|sur|malgré) +$") and not morph(\2, ":(?:3s|Oo)", False)
    -1>> tous                                                                                       # Erreur d’accord probable avec « les \2 ».

TEST: {{Tout}} les hommes sont dingues.


__[i]/gn(gn_tous_ceux)__
    tout(?= ceux\b)
    <<- not before(r"(?i)\b(?:d[eu]|avant|après|sur|malgré) +$") ->> tous                           # Erreur d’accord probable avec « ceux ».

TEST: Donne à manger à {{tout}} ceux qui sont là.
TEST: Revenus de tout ceux qui sont partis ont perdu la foi.


__[i]/gn(gn_toutes_déterminant_fem_plur)__  toute(?= (?:celles|[clmtsd]es)\b)   <<- ->> toutes      # Erreur d’accord probable.
__[i]/gn(gn_tout_ce)__                      toute(?= cet?\b)                    <<- ->> tout        # Erreur d’accord probable.
__[i]/gn(gn_tout_mon)__                     toute(?= mon [bcdfgjklmnpqrstvwxz]) <<- ->> tout        # Erreur d’accord probable.

TEST: {{Toute}} celles qui viendront…
TEST: et {{toute}} ce barouf ne nous a apporté que des ennuis.
TEST: car {{toute}} mon savoir vient d’elle


__[i]/gn(gn_toutes_déterminant_nom_fem_plur)__
    (tous) +(?:[lcmtsd]es) +({w_2})  @@0,$
    <<- morphex(\2, ":f", ":[123][sp]") and morphex(word(-1), ":", ":(?:R|[123][sp]|Q)|>(?:[nv]ous|eux) ", True)
    -1>> toutes                                                                                     # Erreur d’accord probable. « \2 » est féminin.
    <<- __also__ and hasFemForm(\2) -2>> =suggMasPlur(@, True)                                      # Erreur d’accord probable. « \1 » est masculin.
__[i]/gn(gn_tous_déterminant_nom_mas_plur)__
    (toutes) +(?:[lcmtsd]es) +({w_2})  @@0,$
    <<- morphex(\2, ":m", ":[123][sp]") and morphex(word(-1), ":", ":(?:R|[123][sp]|Q)|>(?:[nv]ous|eux) ", True)
    -1>> tous                                                                                       # Erreur d’accord probable. « \2 » est masculin.
    <<- __also__ and hasFemForm(\2) -2>> =suggFemPlur(@, True)                                      # Erreur d’accord probable. « \1 » est féminin.

TEST: {{tous}} ces {{idiotes}}
TEST: {{toutes}} mes {{bars}}


__[i]/gn(gn_tout_nom_mas_sing)__
    tout ({w3})  @@5
    <<- morphex(\1, ":N.*:[fp]", ":(?:A|W|G|M[12P]|Y|[me]:i|3s)") and morph(word(-1), ":R|>de ", False, True)
    -1>> =suggMasSing(@, True)                                                                      # “\1” devrait être au masculin singulier.

__[i]/gn(gn_toute_nom_fem_sing)__
    toute ({w3})  @@6
    <<- morph(\1, ":[NAQ].*:[mp]") and morph(word(-1), ":R|>de ", False, True)
    -1>> =suggFemSing(@, True)                                                                      # “\1” devrait être au féminin singulier.

__[i]/gn(gn_tous_nom_mas_plur)__
    tous ({w3})  @@5
    <<- morph(\1, ":[NAQ].*:[fs]") and morph(word(-1), ":R|>de ", False, True)
    -1>> =suggMasPlur(@, True)                                                                      # “\1” devrait être au masculin pluriel.

__[i]/gn(gn_toutes_nom_fem_plur)__
    toutes ({w3})  @@7
    <<- morph(\1, ":[NAQ].*:[ms]") and morph(word(-1), ":R|>de ", False, True)
    -1>> =suggFemPlur(@, True)                                                                      # “\1” devrait être au féminin pluriel.

TEST: Tout {{hommes}}
TEST: De tous {{âge}} !
TEST: avec toutes {{femme}}                                   ->> femmes
TEST: sur toutes {{armure}}                                   ->> armures
TEST: Toute {{époux}} doit faire preuve de bienveillance
TEST: Il se souvient de toute mon histoire.
TEST: Tout les sépare.
TEST: les tout débuts du mouvement ouvrier
TEST: vos tout débuts furent difficiles
TEST: aux tout débuts, il y eut bien des erreurs
TEST: comment les inégalités sociales impactent la santé des tout petits


#### ADVERBES DE NÉGATION

__[i]/neg(ne_manquant1)__
    (?:je|tu|ils?|on|elles?) ([bcdfgjklmnpqrstvwxz][\w-]*) (pas|rien|jamais|guère)  @@w,$
    <<- morph(\1, ":[123][sp]", False) and not (re.search("(?i)^(?:jamais|rien)$", \2) and before(r"\b(?:que?|plus|moins) "))
    -1>> ne \1                                                                                      # Ne … \2 : il manque l’adverbe de négation.

__[i]/neg(ne_manquant2)__
    (?:je|tu|ils?|on|elles?) ([aeéiouœ][\w-]*) (pas|rien|jamais|guère)    @@w,$
    <<- morph(\1, ":[123][sp]", False) and not (re.search("(?i)^(?:jamais|rien)$", \2) and before(r"\b(?:que?|plus|moins) "))
    -1>> n’\1                                                                                       # Ne … \2 : il manque l’adverbe de négation.

__[i]/neg(ne_manquant3)__
    (?:je|tu|ils?|on|elles?) ([mts](?:e +|’(?:en|y) +|’)|[vn]ous +|l(?:e +|a +|eur +|ui +|l’))({w_1}) (pas|rien|jamais|guère)  @@*,w,$
    <<- morph(\2, ":[123][sp]", False) and not (re.search("(?i)^(?:jamais|rien)$", \3) and before(r"\b(?:que?|plus|moins) "))
    -1>> ne \1                                                                                      # Ne … \3 : il manque l’adverbe de négation.

__[i]/neg(ne_manquant4)__
    (?:je|tu|ils?|on|elles?) (y|en) ({w_1}) (pas|rien|jamais|guère)  @@w,w,$
    <<- morph(\2, ":[123][sp]", False) and not (re.search("(?i)^(?:jamais|rien)$", \3) and before(r"\b(?:que?|plus|moins) "))
    -1>> n’\1                                                                                       # Ne … \3 : il manque l’adverbe de négation.

TEST: __neg__ On {{a}} pas compris.
TEST: __neg__ Il {{part}} pas encore.
TEST: __neg__ On {{vous }}a pas compris.
TEST: __neg__ On {{en}} a pas.
TEST: __neg__ Il {{y}} a jamais d’eau.


#### INFINITIF

__[i]__  ne (?:pas|plus|jamais) +(beaucoup|trop)  @@$ <<- ~1>> *

__[i]/infi(infi_ne)__
    ne (?:pas|rien|jamais(?: rien| plus|)|plus(?: jamais| rien| guère|)|guère|point) (?:non plus |)(?:l(?:e(?:ur|s|)|a|ui) |nous |vous |[mtsl]’(?:en |y |)|[mts]e |en |y |)({w_1})
    @@$
    <<- not morph(\1, ":(?:Y|W|O[ow])|>que? ", False) and spell(\1)
    -1>> =suggVerbInfi(@)                                                                           # Le verbe devrait être à l’infinitif.

TEST: ne jamais {{cédé}}
TEST: ne rien {{finit}}
TEST: ne jamais plus s’y {{frottait}}
TEST: ne plus guère y {{pensée}}
TEST: ne pas les {{contrariés}}
TEST: Ne rien m’en {{dit}}
TEST: Ne jamais lui {{donnait}} sa chance.
TEST: J’espère ne pas te déranger
TEST: Ne pas te le donner, ce serait une insulte.
TEST: ne jamais vraiment évoquer le sujet
TEST: déterminés à ne pas se laisser récupérer
TEST: de ne pas en élire du tout
TEST: Mais gare à ne pas non plus trop surestimer la menace
TEST: ne jamais beaucoup bosser, c’est sa devise.




#
# //////////////////////////////////////// PRÉPROCESSEUR ////////////////////////////////////////
# épuration des adverbes, locutions adverbiales, interjections et expressions usuelles
#

# Dates
__[s]__  (?:[dD]epuis le|[lL]e|[dD]u|[aA]u|[jJ]usqu au|[àÀ] compter du) (?:1(?:er|ᵉʳ)|\d\d?) (?:janvier|février|mars|avril|mai|juin|juillet|ao[ûu]t|septembre|octobre|novembre|décembre|vendémiaire|brumaire|frimaire|nivôse|pluviôse|ventôse|germinal|floréal|prairial|messidor|thermidor|fructidor)(?: \d+| dernier| prochain|) <<- ~>> *
__[i]__  en l’an (?:de grâce |)\d+ <<- ~>> *
__[s]__  (?:[eE]n +|[dD](?:e +|’))(?:janvier|février|mars|avril|mai|juin|juillet|ao[ûu]t|septembre|octobre|novembre|décembre|vendémiaire|brumaire|frimaire|nivôse|pluviôse|ventôse|germinal|floréal|prairial|messidor|thermidor|fructidor) +\d{2,4}
    <<- ~>> *
__[i]__  en \d\d+ <<- not morph(word(1), ":[AN].*:[pi]", False, False) ~>> *
__[i]__  un (\d+) ({w_2}) @@w,$ <<- morph(\2, ":A.*:s")  ~1>> *
__[i]__  (de \d\d+) ({w_2}) @@0,$ <<- morph(\2, ":A.*:s", False) ~1>> *
__[s]__  [àÀ] la mi-(?:janvier|février|mars|avril|mai|juin|juillet|ao[ûu]t|septembre|octobre|novembre|décembre|vendémiaire|brumaire|frimaire|nivôse|pluviôse|ventôse|germinal|floréal|prairial|messidor|thermidor|fructidor)(?:\d{2,4}|) <<- ~>> *
__[i]__  [àÀ] l’(?:été|automne|hiver) \d{2,4}  <<- ~>> *
__[i]__  au printemps \d{2,4}  <<- ~>> *

TEST: Une étude de 2005 publiée dans le Journal
TEST: Les cinq variantes de la couverture du magazine Wired d’avril 2016 consacrée à Silicon Valley.
TEST: c’est donc la cinquième en 50 ans
TEST: l’équipe veut aussi voir dans la lettre le nombre d’or, un symbole d’harmonie, ainsi qu’un 6 retourné.

## moi/toi/lui/elle/nous/vous/eux/elles seul·e·s
__[i]__  [mt]oi (seule?) @@4 <<- ~1>> *
__[i]__  lui (seul) @@4 <<- ~1>> *
__[i]__  elle (seule) @@5 <<- ~1>> *
__[i]__  [nv]ous (seule?s) @@5 <<- ~1>> *
__[i]__  eux (seuls) @@4 <<- ~1>> *
__[i]__  elles (seules) @@6 <<- ~1>> *

## personne d’autre que…
__[i]__  personne (d’autre qu(?:e |’)(?:lui|elles?|[nv]ous|eux)) @@$ <<- ~1>> *

## Avant
__[i]__  dès (?:à présent|aujourd’hui|maintenant|(?:demain|hier)(?: (?:soir|matin|après-midi)|)) <<- ~>> *
__[i]__  et (?:ainsi de suite|tutti quanti) <<- ~>> *
__[i]__  et(/ou) @@2 <<- ~1>> *
__[i]__  ni (?:à|avec|contre|pour|chez|sur|sous|devant|derrière) *(?:[tm]oi|lui|elles?|eux|[nv]ous|),? ni (?:à|avec|contre|pour|chez|sur|sous|devant|derrière) (?:[mt]oi|lui|elles?|eux|[nv]ous) <<- ~>> *
__[i]__  quant à présent <<- ~>> *

## Inconditionnel
__[i]__  24 ?h(?:eures|) ?(?:sur |/ ?)24 <<- ~>> *
__[i]__  7 ?j(?:ours|) ?(?:sur |/ ?)7 <<- ~>> *
__[i]__  sept jours sur sept <<- ~>> *
__[i]__  vingt-quatre heures sur vingt-quatre <<- ~>> *
__<i]__  ^ *(?:et(?: puis|)|puis|car|mais|or donc|m’est avis que) <<- ~>> *
__[i]__  à (?:califourchon|confesse|contre(?:cœur|temps)|demi-mot|foison|grand-peine|loisir|merveille|moitié|nouveau|outrance|peine|perpétuité|présent|raison|rallonge|rebrousse-poil|reculons|regret|renverse|risque|tâtons|tort|tout-va) <<- ~>> *
__[i]__  à côté (?:de (?:ça|lui|[mt]oi|[nv]ous)|d’(?:elles|eux))(?! et) <<- ~>> *
__[i]__  à la (?:bo(?:nne franquette|urre)|con|dér(?:ive|obée)|diable|fois|leur|limite du supportable|longue|lumière de tout ce(?:ci|la)|manque|mords-moi-le-nœud|papa|petite semaine|pointe du progrès|queue leu leu|ramasse|re(?:nverse|dresse|scousse)|sauvette|surprise générale|virgule près|volée) <<- ~>> *
__[i]__  à \d\d? ?h(?: ?\d\d|)(?: (?:du (?:matin|soir)|de l’après-midi|ce (?:matin|soir)|cet après-midi|demain (?:matin|soir|après-midi)|)|) <<- ~>> *
__[i]__  à (?:au(?:cun prix|trui|tre chose)|bas (?:co[ûu]t|prix)|bâ(?:bord|tons rompus)|beaucoup près|belles dents|bien (?:des égards|pire|y (?:penser|réfléchir|songer))|bon (?:compte|escient|droit)|bout (?:de (?:bras|souffle|forces?)|portant|touchant)|bras (?:ouverts|le corps)|brève échéance|but (?:non |)lucratif|cause d(?:e (?:ça|[mt]oi|lui|[nv]ous)|’e(?:lles?|ux))|ce (?:compte-là|moment-là|titre)|cet (?:égard|instant(?: précis|))|cette (?:époque(?: de l’année|)|heure de la (?:journée|nuit)|occasion)|chaque (?:fois|instant)|chaudes larmes|cœur (?:joie|ouvert|perdu)|ciel ouvert|contre-cœur|corps perdu|cou(?:p sûr|per le souffle|rt terme|rte (?:échéance|portée))|de (?:nombreuses|multiples) reprises|des kilomètres à la ronde|défaut d’autre chose|double (?:titre|tranchant)|durée limitée|en (?:juger par (?:[mts]on|[nv]otre|leur) expérience|perdre (?:haleine|la tête))|faible (?:allure|revenu)|feu et à sang|flanc de (?:colline|montagne)|fleur de peau|géométrie variable|grand(?:-peine|e échelle)|haut risque|hue et à dia|huis clos|intervalles (?:ir|)réguliers|juste (?:raison|titre)|long terme|longue(?: échéance| portée|ur (?:de (?:temps|journée))|d’année)|loyer modéré|main(?: (?:armée|droite|gauche|levée)|s nues)|maint(?:s égards|es reprises)|marche forcée|merveille|mi-(?:course|distance|temps)|mi(?:di|nuit)(?: pile|)|moindres frais|mots couverts|moyen(?: terme|ne échéance)|n’en (?:pas douter|point douter|plus finir)|outrance|parler franc|part (?:entière|ça|ce(?:la|ci))|partir de là|part(?:ir de rien|s égales)|pas de (?:géant|loup|tortue|velours)|personne en danger|perte de vue|petit(?: feu|e (?:dose|échelle))|peu (?:de (?:distance|choses près|frais)|près)|pieds joints|pile ou face|plat(?: ventre|e couture)|plein(?: (?:régime|temps|nez)|s poumons)|plus (?:forte raison|d’un titre)|point nommé|portée de (?:main|tir)|première vue|prix (?:cassé|modique)s?|proprement parler|qui (?:mieux mieux|que ce soit|de droit)|quelque(?: distance|s (?:exceptions|nuances) près)|ras bords?|rude épreuve|somme nulle|tel point|temps (?:plein|partiel|complet)|tête reposée|tire[ -]d’aile|titre (?:conservatoire|d’exemple|expérimental|indicatif|informatif|grâcieux|personnel|posthume)|tombeau ouvert|tort (?:ou à raison|et à travers)|tour de (?:bras|rôle)|tous (?:crins|points de vue)|toutes (?:fins utiles|jambes)|tribord|un moment donné|usage interne|visage (?:découvert|humain)|vive allure|voix (?:haute|basse)|vol d’oiseau|vrai dire|vue d’œil|y (?:regarder de plus près|réfléchir)) <<- ~>> *
__[i]__  à partir (?:de (?:demain(?: matin| midi| soir|)|là|maintenant|rien)|d’(?:aujourd’hui|hier(?: matin| midi| soir|)|ici)) <<- ~>> *
__[i]__  à quelques-un(?:s d’entre eux|es d’entre elles) <<- ~>> *
__[i]__  à tout(?: (?:âge|bout de champ|crin|instant|jamais|le (?:moins|monde)|moment|point de vue|prix|un chacun)|e (?:allure|bride|épreuve|force|heure(?: d(?:u jour|e la nuit)|)|vitesse|volée)) <<- ~>> *
__[i]__  à l’(?:heure (?:actuelle|qu il est)|accoutumée|amiable|avance|aven(?:ir(?: incertain)|ant)|air libre|aveuglette|emporte-pièce|échelle (?:nationale|mondiale|régionale|départementale|cantonale|locale|galactique|universelle)|évidence|exclusion de toute autre chose|improviste|inverse|occasion|ordre du jour|œil nu|en croire|un(?:animité| (?:d’entre eux|des leurs)|e (?:d’entre elles|des leurs))) <<- ~>> *
__[i]__  à (?:[mts]es|[nv]os|leurs) (?:côtés|dépens|risques et périls|trousses) <<- ~>> *
__[i]__  à (?:[mts]a|[nv]otre|leur) (?:connaissance|disposition|grande (?:surprise|tristesse)|guise|portée) <<- ~>> *
__[i]__  à (?:[mts]on|[nv]otre|leur) (?:avis|c(?:œur|orps) défendant|détriment|encontre|égard|grand désarroi|insu|sujet|tour) <<- ~>> *
__[i]__  à mi(?:di|nuit)(?: pile|) <<- ~>> *
__[i]__  à cette heure(?: (?:du jour|de la nuit|tardive)|) <<- ~>> *
__[i]__  [aà] (?:priori|post[eé]riori|contrario|cappella) <<- ~>> *
__[i]__  ab (?:absurdo|initio) <<- ~>> *
__[i]__  ad (?:hoc|vitam æternam|hominem|infinitum|nauseam|valorem|patres) <<- ~>> *
__[i]__  advienne que pourra <<- ~>> *
__[i]__  après (?:[mts]oi|lui|eux|mûre réflexion|tout,|un certain temps|cette date(?: fatidique|)) <<- ~>> *
__[i]__  (heure|minute|seconde|jour|nuit|semaine|trimestre|semestre|mois|décennie|année|siècle|génération) après \1 @@0 <<- ~>> *
__[i]__  au-de(?:ssus (?:de (?:[mts]oi|lui|[nv]ous)|d’(?:eux|elles?))|là du descriptible) <<- ~>> *
__[i]__  au (?:[xXvViI]+[eᵉ] siècle|bas mot|beau fixe|bon moment|bout (?:du (?:compte|rouleau)|d’un moment)|cas par cas|commencement|contraire|coude à coude|coup par coup|déb(?:otté|but)|demeurant|doigt mouillé|fil (?:des ans|du temps)|grand (?:complet|jamais)|hasard|jour (?:et à l’heure dits|le jour)|jugé|leur|lieu de (?:ce(?:la|ci)|ça|quoi)|loin|même titre que n’importe l(?:aquelle|equel) d’entre (?:nous|vous|eux|elles)|milieu de nulle part|moment opportun|pas de (?:charge|course)|plus (?:haut point|pressé|vite|tôt|tard)|premier abord|préalable|propre comme au figuré|quotidien|ras des pâquerettes|sens (?:figuré|large|propre)|surplus) <<- ~>> *
__[i]__  au (?:dernier|même|bon|mauvais) (?:moment|instant) <<- ~>> *
__[i]__  au cours des (?:deux|trois|quatre|cinq|six|sept|huit|neux|dix|onze|douze|treize|quatorze|quinze|seize|dix-(?:sept|huit|neuf)|vingt|trente|quarante|cinquante|soixante|soixante-dix|quatre-vingt|quatre-vingt-dix|cent) (?:derni(?:ère|er)s|prochaine?s) (?:années|mois|siècles) <<- ~>> *
__[i]__  (?:tout |)au fond (?:de (?:[mts]oi|lui|[nv]ous)|d’(?:elles?|eux))(?:-mêmes?|) <<- ~>> *
__[i]__  aux (?:abois|leurs) <<- ~>> *
__[i]__  autant que (?:nécessaire|possible|faire se peut) <<- ~>> *
__[i]__  autour (?:d’(?:eux|elles?)|de (?:lui|[nv]ous|[mt]oi)) <<- ~>> *
__[i]__  autrement dit <<- ~>> *
__[i]__  av. J.-C. <<- ~>> *
__[i]__  avant (?:longtemps|terme|tout le monde|toute(?: chose|s choses)|d’aller plus loin|J.-C.|Jésus-Christ|d’en arriver là|de faire quoi que ce soit(?: de stupide|)|qu il ne soit trop tard) <<- ~>> *
__[i]__  avec (?:joie|légèreté|insistance|peine|autre chose|pertes et fracas|un peu de chance|tout le respect que (?:je (?:vous|te|l(?:eur|ui)) dois|nous (?:vous|te|l(?:eur|ui)) devons)|tout un chacun) <<- ~>> *
__[i]__  avec (?:autrui|[mts]oi|lui|e(?:ux|lles?)|[nv]ous|le plus grand soin|tout le monde|tout ça|on ne sait quo?i)(?! qui) <<- ~>> *
__[i]__  avec brio <<- ~>> *
__[i]__  beaucoup (?:plus|moins) <<- ~>> *
__[i]__  bel et bien <<- ~>> *
__[i]__  bien (?:assez tôt|des fois|souvent) <<- ~>> *
__[i]__  bon gré,? mal gré <<- ~>> *
__[i]__  bras dessus,? bras dessous <<- ~>> *
__[i]__  çà et là <<- ~>> *
__[i]__  ce faisant <<- ~>> *
__[i]__  ce(?:ci mis à part|la va sans dire) <<- ~>> *
__[i]__  ces derniers temps <<- ~>> *
__[i]__  ce(?:lui|lles?|ux) (d’entre (?:[nv]ous|eux|elles)) @@$ <<- ~1>> *
__[i]__  cette fois-(?:là|ci) <<- ~>> *
__[i]__  chacune? (d’entre (?:[nv]ous|eux|elles)) @@$ <<- ~1>> *
__[i]__  chez (?:[mt]oi|lui|e(?:ux|lles?)|[nv]ous|autrui|on ne sait qui) <<- ~>> *
__[i]__  comme (?:avant|autrefois|d’habitude|toujours|de juste|bon (?:me|te|l(?:ui|eur)|[nv]ous) semble|au bon vieux temps|cul et chemise|frappée?s? par la foudre|n’importe où(?: ailleurs|)|par (?:enchantement|magie|un fait exprès)|promis|si de rien n’était|tout un chacun) <<- ~>> *
__[i]__  comme tant d’autres (?:avant|après) (?:[mts]oi|lui|[nv]ous|eux|elles?)(?! qui) <<- ~>> *
__[i]__  contrairement aux apparences <<- ~>> *
__[i]__  contre (?:mauvaise fortune,? bon cœur|nature|toute (?:attente|vraisemblance)|vents et marées|[mts]oi|lui|elles?|[nv]ous|eux|(?:[mts]on|[nv]otre|leur) gré) <<- ~>> *
__[i]__  côte à côte <<- ~>> *
__[i]__  co[ûu]te que co[ûu]te <<- ~>> *
__[i]__  cro(?:yez|ois)-le ou (?:non|pas) <<- ~>> *
__[i]__  cul par-dessus tête <<- ~>> *
__[i]__  dans (?:ce cas(?: précis|-là|-ci| particulier|)|l’i(?:déal|mmédiat)|la mesure du possible|les années \d\d+|peu de temps|tout (?:ce(?:la|ci)|ça)|très peu de temps|un(?: cas comme dans l’autre|e (?:certaine|large|moindre) mesure)) <<- ~>> *
__[i]__  début (?:janvier|février|mars|avril|mai|juin|juillet|ao[ûu]t|septembre|octobre|novembre|décembre)(?: \d\d\d\d|) <<- ~>> *
__[i]__  d’(?:abord|affilée|ailleurs|année en année|aujourd’hui|antan|autant (?:plus|moins)|autre(?:fois|s fois| part)|arr(?:arrache-?pied|ière en avant)|avant en arrière|à côté|âge mûr|emblée|empoigne|en face|entr(?:e (?:[nv]ous|eux|elles)|ée de jeu)|est en ouest|extrême[ -](?:droite|gauche)|égale? à égale?|habitude|hier(?: (?:matin|soir|après-midi)|)|ici(?: là| peu(?: de temps|)| très peu(?: de temps|)|)|ordinaire|origine (?:inconnue|douteuse)|ordre général|ouest en est|ore?s et déjà|un (?:bout à|côté comme de) l’autre|un autre côté) <<- ~>> *
__[i]__  d’une (?:autre trempe|(?:façon|manière) ou d’une autre|certaine (?:façon|manière)|tout autre ampleur|(?:minute|seconde) à l’autre) <<- ~>> *
__[i]__  d’(?:heure en heure|année en année) <<- ~>> *
__[i]__  d’où qu (?:(?:il|elle|on) vienne|(?:ils|elles) viennent) <<- ~>> *
__[i]__  de-ci,? de-là <<- ~>> *
__[i]__  de \d\d? ?h(?: ?\d\d|)(?: (?:du (?:matin|soir)|de l’après-midi|ce (?:matin|soir)|cet après-midi|demain (?:matin|soir|après-midi))|) <<- ~>> *
__[i]__  de (?:\d+(?:,\d+|) ?%|cesse|conserve|facto|fait|guingois|luxe|nouveau|permanence|partout|préférence|profundis|rechange|routine|surcro[îi]t|visu|A à Z|bas(?: (?:en haut|étage)|se (?:condition|extraction|))|bon (?:aloi|cœur|gré|matin|ton)|bonne (?:facture|famille|foi|heure|humeur|grâce|qualité|compagnie)|bric et de broc|but en blanc|ce(?: (?:fait(?: même|)|seul fait|point de vue)|tte sorte)|courte (?:durée|vue)|dernière minute|demain(?: (?:matin|soir|après-midi)|)|droite (?:à|comme de) gauche|fil en aiguille|fond en comble|fort (?:loin|près)|fra[iî]che date|ga[îi]e?té de cœur|gauche (?:à|comme de) droite|grande (?:taille|envergure)|gré ou de force|guerre lasse|haut(?: (?:en bas|rang|vol)|e (?:lutte|stature|volée))|jour comme de nuit|là-bas|la (?:meilleure (?:manière|façon) possible|même (?:façon|manière)|sorte|tête aux pieds|veille)|loin(?: en loin|)|longue (?:date|durée|haleine)|main de ma[îi]tre|mauvais(?: (?:aloi|go[ûu]t|gré)|e (?:foi|grâce|humeur))|mieux en mieux|nature (?:inconnue|indéterminée|insolite)|nombreuses (?:fois|années plus (?:tôt|tard))|nos jours|notoriété publique|nulle part|pire en pire|près(?: ou de loin|)|par(?: le monde(?: entier|)|t et d’autre)|petite taille|pied ferme|premi(?:er (?:ordre|plan)|ère main)|plein (?:droit|fouet)|plus (?:belle|près)|première nécessité|prime abord|proche en proche|sang-froid|seconde (?:zone|importance|main)|si bon(?: matin|ne heure)|source sûre|taille moyenne|telle sorte|temps (?:en temps|à autre)|tr(?:ès|op) (?:loin|près)|vive voix) <<- ~>> *
__[i]__  de [nv]ous tous <<- ~>> *
__[i]__  de tou(?:t (?:poil|temps|à l’heure|premier (?:ordre|plan))|tes (?:parts|pièces|sortes|(?:[mts]es|leurs|[nv]os) forces)|te (?:éternité|évidence|façon|urgence)|s (?:côtés|bords)) <<- ~>> *
__[i]__  de ce(?:ux|lles)-(?:ci|là)(?! qui) <<- ~>> *
__[i]__  de (?:[mts]on|[nv]otre|leur) (?:mieux|plein gré|point de vue|propre (?:cru|chef)|vivant) <<- ~>> *
__[i]__  de (moins|plus|mieux|pire|jour|minute|semaine|mois|trimestre|semestre|siècle|millénaire|décennie) en \1 @@3 <<- ~>> *
__<i]__  ^ *de plus <<- ~>> *
__[i]__  de (?:ce(?:ux|lles?|lui)-(?:là|ci)|(?:[mts]a|[nv]otre|leur) part) <<- ~>> *
__[i]__  dès (?:aujourd’hui|à présent|demain(?: matin| après-midi| soir|)|lors|que possible|\d\d\d\d?) <<- ~>> *
__[i]__  des (?:fois|pieds à la tête|uns et des autres|(?:années|mois|siècles|millénaires|décennies|semaines) plus t(?:ôt|ard)) <<- ~>> *
__[i]__  depuis (?:assez longtemps|belle lurette|bien longtemps|de (?:très |)longues années|des lustres|longtemps|lors|peu de temps|quelque temps|quelques (?:secondes|minutes|heures|jours|semaines|mois|trimestres|semestres|années|décennies|siècles|millénaires)|si longtemps|toujours|tout ce temps|très longtemps) <<- ~>> *
__[i]__  Dieu (?:[mt]’en (?:garde|soit témoin)|[nv]ous en (?:garde|soit témoin)|l(?:es |’)en garde|l(?:eur|ui) en soit témoin) <<- ~>> *
__[i]__  depuis (\d+ (?:ans|années|mois|semaines|jours|heures|minutes|secondes|)|les années \d\d+) @@$ <<- ~>> *
__[i]__  du moins <<- ~>> _
__[i]__  du (?:[xXvViI]+[eᵉ] siècle|bout des lèvres|début à la fin|fond du cœur|jour au lendemain|haut en bas|même (?:acabit|tonneau)|moins,? pas|(?:nord|sud) au (?:nord|sud)|tout au tout) <<- ~>> *
__[i]__  (?:après-|avant |)demain(?: matin| soir| après-midi|) <<- ~>> *
__[i]__  (don) Juan @@0 <<- ~1>> *
__[i]__  du même (?:ordre|coup) <<- ~>> *
__[i]__  en \d\d+(?: ans| années|) <<- ~>> *
__[i]__  en cours(?! d[e’]) <<- ~>> *
__[i]__  en (?:aparté|apparence|arrière|avance|avant|cachette|ceci|cela|clair|commun|conséquence|continu|contrepartie|définitive|détail|direct|douce|effet|émoi|filigrane|général|goguette|hâte|majorité|outre|pâmoison|parallèle|partie|particulier|permanence|personne|pratique|prime|privé|principe|priorité|public|réalité|retour|revanche|rien|rogne|route|secret|silence|somme|suspens|théorie|trompe-l’œil|vain|vérité|ville|vitesse) <<- ~>> *
__[i]__  en (?:[mt]oi|eux|elles?) <<- ~>> *
__[i]__  en (?:aucun(?: cas|e (?:circonstance|façon|manière))|bon(?: état|ne (?:compagnie|et due forme|posture|santé(?: physique| mentale|)|voie))|bout de course|cas d(?:e (?:besoin|doute)|’urgence)|chair et en os|chute libre|comparution immédiate|connaissance de cause|cours de route|d’autres (?:circonstances|termes|temps)|de telles circonstances|début d(?:e (?:journée|matinée|soirée)|’après-midi)|définitive|dehors de (?:tout|)(?:ça|cela|ceci)|dents de scie|dernier (?:lieu|recours|ressort)|désespoir de cause|détention provisoire|direction d(?:u (?:nord|sud)(?:-est|-ouest|)|e l’(?:est|ouest))|état (?:de (?:choc(?: circulatoire|)|marche)|d’ébriété(?: avancée|))|file indienne|fin d(?:e (?:compte|journée|matinée|soirée)|’après-midi)|forte (?:baisse|hausse)|garde à vue(?: prolongée|)|grand(?: nombre|e (?:difficulté|majorité|partie|pompe))|haut lieu|l’occurrence|lieu sûr|ligne de (?:compte|mire)|mains propres|mauvais(?: état|e (?:posture|santé))|même temps|milieu d(?:e (?:journée|matinée|soirée)|’après-midi)|nombre (?:plus que |)suffisant|partant de zéro|plein(?: air| jour|e (?:gueule|figure|forme|nuit))|perte de vitesse|peu de temps|point de mire|position de force|premi(?:er lieu|ère (?:instance|ligne))|pure perte|quantité (?:plus que |)suffisante|quelque sorte|queue de peloton|rase campagne|règle générale|roue libre|sens inverse|si peu de temps|sous-main|tête à tête|temps (?:et en heure|normal|opportun|ordinaire|utile|voulu)|termes choisis|toile de fond|tous (?:les cas|sens)|tout (?:bien tout honneur|cas|genre|lieu|et pour tout|état de cause|premier lieu|sens|temps)|toute(?: (?:circonstance|connaissance de cause|confiance|discrétion|franchise|hâte|impartialité|impunité|innocence|légalité|liberté|logique|sécurité|simplicité)|s circonstances)|un (?:clin d’œil|rien de temps)|une autre occasion|vase clos|voie de développement|y réfléchissant bien) <<- ~>> *
__[i]__  en (?:janvier|février|mars|avril|mai|jui(?:n|llet)|ao[ûu]t|septembre|octobre|novembre|décembre) dernier <<- ~>> *
__[i]__  en (?:[mts]on|leur|[nv]otre) (?:âme et conscience|for intérieur|nom propre) <<- ~>> *
__[i]__  en ce(?: (?:moment|temps-là|qui (?:[mt]e|l(?:es?|a)|[nv]ous) concern(?:e|ait))|t instant) <<- ~>> *
__[i]__  encore (?:une fois|et (?:encore|toujours)) <<- ~>> *
__[i]__  envers (?:autrui|et contre tout|les uns et les autres|tout le monde) <<- ~>> *
__[i]__  entre (?:(?:[mt]oi|lui|elles?|[nv]ous|eux) et (?:[mt]oi|lui|elles?|[nv]ous|eux)|de (?:bonnes|mauvaises) mains|l’une? et l’autre|les uns et les autres|quat(?:re[- ]z-?yeux|’ z-?yeux)) <<- ~>> *
__[i]__  entre (?:janvier|février|mars|avril|mai|juin|juillet|ao[ûu]t|septembre|octobre|novembre|décembre) (?:\d\d{1,3} |)et (?:janvier|février|mars|avril|mai|juin|juillet|ao[ûu]t|septembre|octobre|novembre|décembre)(?: \d\d{1,3}|) <<- ~>> * 
__[i]__  épaule contre épaule <<- ~>> *
__[i]__  été comme hiver <<- ~>> *
__[i]__  (?:oh|ah|euh|eh bien) <<- ~>> *
__[i]__  ex (?:nihilo|cathedra|absurdo|abrupto) <<- ~>> *
__[i]__  face à face <<- ~>> *
__[i]__  (?:deux|trois|quatre|cinq|six|sept|huit|neuf|dix|onze|douze|treize|quatorze|quinze|seize|vingt|trente|quarante|cinquante|soixante|cent) fois de suite <<- ~>> *
__[i]__  grosso modo <<- ~>> *
# __[i]__  grand bien lui fasse
__[i]__  (?:avant-|)hier(?: matin| soir| après-midi|) <<- ~>> *
__[i]__  hors (?:de (?:contrôle|portée)|d’(?:atteinte|état de nuire)|du commun) <<- ~>> *
__[i]__  ici(?: comme ailleurs| ou ailleurs| et (?:là|maintenant)| même|-bas) <<- ~>> *
__[i]__  id est <<- ~>> *
__[i]__  il y a (?:longtemps|peu de temps|très (?:longtemps|peu de temps)|(?:quelques|moins de \d+|\d+) (?:secondes|minutes|heures|jours|semaines|mois|an(?:née|)s|siècles|millénaires)|quelque temps) <<- ~>> *
__[i]__  il n’y a pas (?:si |)longtemps <<- ~>> *
__[i]__  illico presto <<- ~>> *
__[i]__  in (?:abstracto|extenso|extremis|fine|petto|situ|utero|vitro|vivo) <<- ~>> *
__[i]__  ipso facto <<- ~>> *
__[i]__  j’en passe et des meilleurs <<- ~>> *
__[i]__  jour pour jour <<- ~>> *
__[i]__  jusque-là <<- ~>> *
__[i]__  jusqu (?:alors|ici|aujourd’hui|au bout des ongles) <<- ~>> *
__[i]__  jusqu à (?:aujourd’hui|bac ?[+] ?\d\d?|présent|maintenant|récemment|(?:demain|hier)(?: matin| soir| après-midi|)|nouvel ordre|plus (?:ample informé|soif)|preuve du contraire|la fin de (?:[mts]es|[nv]os|leurs) jours|(?:[mts]on|leur|[nv]otre) dernier souffle(?: de vie|)|ce que (?:mort s’ensuive|(?:j’en sache|tu en saches|(?:il|elle|on) en sache|nous en sachions|vous en sachiez|(?:ils|elles) en sachent) plus)|Noël|Pâques) <<- ~>> *
__[i]__  la (?:plupart du temps|main dans la main|mort dans l’âme) <<- ~>> *
__[i]__  le (?:cas échéant|moins (?:du monde|souvent)|plus (?:tôt|tard|souvent|de (?:temps|monde)) possible|plus souvent) <<- ~>> *
__[i]__  là(?:-bas|-haut|-de(?:dans|hors|rrière|sso?us|vant)| non plus) <<- ~>> *
__[i]__  l’une? (?:après|pour|de(?:rrière|)|avec|contre|sur|près de) l’autre <<- ~>> *
__[i]__  le pour et le contre <<- ~>> =\0.replace(" ", "_")
__[i]__  les une?s (?:des |(?:après |pour |avec |contre |sur |derrière |devant |)les) autres <<- ~>> *
__[i]__  non (?:loin (?:d’ici|de là)|plus|seulement) <<- ~>> *
__[i]__  loin (?:de (?:là|tout ça)|d’(?:être|ici)|s’en fa(?:ut|llait)) <<- ~>> *
__[i]__  (?:[lcd]es |)maintes fois <<- ~>> *
__[i]__  malgré (?:[mt]oi|lui|elles?|[nv]ous|eux)(?! qui) <<- ~>> *
__[i]__  malgré (?:ça|cela|tout) <<- ~>> *
__[i]__  manu militari <<- ~>> *
__[i]__  mieux va(?:u|lai)t tard que jamais <<- ~>> *
__[i]__  moins que nécessaire <<- ~>> *
__[i]__  moitié ({w2}),? moitié ({w2}) @@7,$ <<- ~>> *
__[i]__  mot pour mot <<- ~>> *
__[i]__  mutatis mutandis <<- ~>> *
__[i]__  ne (?:vous |l(?:ui|eur) |t’)en déplaise <<- ~>> *
__[i]__  nez à nez <<- ~>> *
__[i]__  ni (?:de près,? ni de loin|plus ni moins|vu,? ni connu) <<- ~>> *
__[i]__  non (?:plus|sans raison) <<- ~>> *
__[i]__  nulle part <<- ~>> * 
__[i]__  ô combien <<- ~>> * 
__[i]__  ou (bien) @@3 <<- ~1>> *
__[i]__  ou quelque chose d’approchant <<- ~>> *
__[i]__  où bon (?:me|te|lui|nous|vous|leur) semble <<- ~>> *
__[i]__  oui (?:ou|et) non <<- ~>> *
__[i]__  outre mesure <<- ~>> *
__[i]__  (une?|deux|trois|quatre|cinq|six|sept|huit|neuf|dix|onze|douze|treize|quatorze|quinze|seize|vingt|trente|quarante|cinquante|soixante|cent|mille|éta[pg]e|morceau|pièce) par \1 @@0 <<- ~>> *
__[i]__  par (?:à-coups|ailleurs|avance|chance|conséquent|curiosité|contre|défaut|définition|endroits|essence|ex(?:cellence|emple)|hasard|ici|inadvertance|là|moments|monts et par vaux|nature|principe|terre) <<- ~>> *
__[i]__  par (?:la (?:même occasion|suite)|(?:bien des|certains) (?:aspects|côtés)|acquit de conscience|beau temps|bonté de cœur|ce biais|égard pour (?:moi|toi|lui|elles?|eux|nous|vous)(?! qui)|lui-même|elle(?:-même|)|eux(?:-mêmes|)|elles(?:-mêmes|)|le passé|les temps qui courent|[nv]ous-mêmes?|[mt]oi(?:-même|)|tout le monde|voie (?:de (?:conséquence|mer|terre)|d’exception)) <<- ~>> *
__[i]__  par-(?:devant|derrière|dessus (?:le marché|tout)|ci,? par-là) <<- ~>> *
__[i]__  par-devers (?:moi|toi|lui|elles?|lui|eux|nous|vous) <<- ~>> *
__[i]__  par (?:deux|trois|quatre|cinq|six|sept|huit|neuf|dix|onze|douze|treize|quatorze|quinze|seize|vingt|trente|quarante|cinquante|soixante|cent) fois <<- ~>> *
__[i]__  parmi (?:[nv]ous(?: autres|)|eux|elles) <<- ~>> *
__[i]__  partant de là <<- ~>> *
__[i]__  pas (?:du tout|à pas|le moins du monde) <<- ~>> *
__[i]__  pendant (?:ce temps-là|(?:bien |si |assez |)longtemps|plusieurs (?:heures|minutes|secondes|mois|semaines|jours|années|siècles|millénaires|décennies)|quelque temps) <<- ~>> *
__[i]__  petit à petit <<- ~>> *
__[i]__  peu (?:à peu|de temps auparavant|ou prou) <<- ~>> *
__[i]__  pile poil <<- ~>> *
__[i]__  plein (?:nord|sud|ouest|de fois) <<- ~>> *
__[i]__  plus avant(?! de | que?) <<- ~>> *
__[i]__  plus (?:du tout|que (?:jamais|tout(?: au monde|e autre chose))|jamais|bas que terre|d’une fois) <<- ~>> *
__[i]__  plusieurs fois(?: de suite)? <<- ~>> *
__[i]__  pour (?:autrui|le (?:moment|moins|meilleur et pour le pire)|une fois|l’(?:essentiel|instant)|l’heure|de bon|la suite|un oui ou pour un non|ainsi dire|ce faire|quelque (?:part|temps)|tout (?:le monde|un chacun|dire)|faire bonne mesure|y parvenir|couronner le tout|ce que (?:(?:j’|tu )en sais)|ça va(?:ut|lait)) <<- ~>> *
__[i]__  pour (?:[mt]oi|elles?|eux|ça|cela|ceci|ceux-(?:là|ci)|celles?-(?:là|ci))(?! qui) <<- ~>> *
__[i]__  pour la (?:première|seconde|{w_2}ième|dernière) fois(?: de suite| de ma vie|) <<- ~>> *
__[i]__  pour (?:[mts]a|[nv]otre|leur) (?:gouverne|part) <<- ~>> *
__[i]__  pour (?:[mts]on|[nv]otre|leur) propre (?:compte|bien) <<- ~>> *
__[i]__  pour ce(?:lles?|ux|lui) (?:et ce(?:lles?|ux|lui) |)que (?:ça|ce(?:la|ci)) intéresse <<- ~>> *
__[i]__  pour (?:[mts]’|[vn]ous )en rendre compte <<- ~>> *
__[i]__  quand b(?:ien même|on (?:[mt]e|l(?:ui|eur)|[nv]ous) semble) <<- ~>> *
__[i]__  quant à (?:[mt]oi|lui|elles?|[nv]ous|eux)(?! qui) <<- ~>> *
__[i]__  que ça (?:me|te|l(?:ui|eur)|[nv]ous) plaise ou non <<- ~>> *
__[i]__  que (?:je le veuille|tu le veuilles|vous le vouliez|nous le voulions) ou non <<- ~>> *
__[i]__  qu (?:à cela ne tienne|(?:(?:il|elle|on) le veuille|(?:ils|elles) le veuillent) ou non) <<- ~>> *
__[i]__  quel qu en soit le (?:moyen|prix|risque(?: financier|)|danger) <<- ~>> *
__[i]__  quelle qu en soit la (?:cause|raison) <<- ~>> *
__[i]__  quelque(?: (?:part|temps)|s fois) <<- ~>> *
__[i]__  quelques (?:instants|secondes|minutes|heures|jours|semaines|mois|années|siècles|millénaires|trimestres|semestres) (?:auparavant|plus (?:tard|tôt)) <<- ~>> *
__[i]__  qui plus est <<- ~>> *
__[i]__  qui (ce (?:jour|matin|après-midi|soir)-là|cette (?:nuit|matinée|soirée)-là) @@4 <<- ~1>> *
__[i]__  quoi qu il (?:(?:arriv|en co[ûu]t)(?:e|ât)|adv(?:ienne|înt)) <<- ~>> *
__[i]__  sans (?:grande|grosse) difficulté(?: apparente| aucune| financière| majeure| particulière|) <<- ~>> *
__[i]__  sans (?:ambages|arrêt|au(?:cun doute|tre forme de procès)|cesse|commune mesure|conteste|coup férir|crier gare|difficulté(?: apparente| aucune| financière| majeure| particulière|)|dire mot|doute|encombres?|états d’âme|fin|foi,? ni loi|le (?:faire exprès|vouloir)|mot dire|nul doute|queue ni tête|raison apparente|relâche|(?:grand |)succès|trêve|(?:pour autant |)y (?:prendre g(?:arde|o[ûu]t)|faire attention|parvenir|réussir|réfléchir|songer|penser)|faire de vagues|s’en (?:rendre compte|apercevoir)|l’aide de personne) <<- ~>> *
__[i]__  séance tenante <<- ~>> *
__[i]__  selon (?:toute vraisemblance|(?:[mt]oi|lui|elles?|eux|nous|vous)(?! qui)) <<- ~>> *
__[i]__  sembl(?:e-t-il|ait-il) <<- ~>> *
__[i]__  sens dessus dessous <<- ~>> *
__[i]__  seule?s? à seule?s? <<- ~>> *
__[i]__  s’il (?:te|vous) pla[îi]t <<- ~>> *
__[i]__  si (?:bas|besoin est|haut|longtemps|possible|soudain|(?:cela|ça) ne tenait qu à (?:moi|toi|lui|eux|elles?|nous|vous)) <<- ~>> *
__[i]__  six pieds sous terre <<- ~>> *
__[i]__  sine (?:die|qua non) <<- ~>> *
__[i]__  soi(?:t dit en passant|-disant) <<- ~>> *
__[i]__  sous (?:bonne (?:escorte|garde)|haute surveillance) <<- ~>> *
__[i]__  stricto sensu <<- ~>> *
__[i>__  sur ce, <<- ~>> *
__[i]__  sur (?:le (?:(?:long|moyen|court) terme|qui-vive)|la (?:forme comme sur le fond|même longueur d’onde)|(?:leur|[mts]on|[nv]otre) (?:trente[ -]et[ -]un|31)) <<- ~>> *
__[i]__  tant (?:bien que mal|s’en faut) <<- ~>> *
__[i]__  tôt ou tard <<- ~>> *
__[i]__  tour à tour <<- ~>> *
__[i]__  tous (?:comptes faits|frais payés) <<- ~>> *
__[i]__  tout (?:à (?:fait|coup|l’heure)|le temps|de (?:même|suite|go)|au plus|aussi bien|simplement|bonnement|compte fait|feu,? tout flammes?|bien (?:considéré|réfléchi)|du long) <<- ~>> *
__[i]__  toutes (?:affaires cessantes|choses égales par ailleurs|griffes dehors|proportions gardées) <<- ~>> *
__[i]__  trait pour trait <<- ~>> *
__[i]__  très (?:bas|haut) <<- ~>> *
__[i]__  (une?) à \1 @@0 <<- ~>> *
__[i]__  un (?:à un|jour ou l’autre|instant plus (?:tôt|tard)|moment plus (?:tôt|tard)|peu (?:mieux|moins bien|partout|plus t(?:ôt|ard) que prévu)|tant soit peu) <<- ~>> *
__[i]__  plus t(?:ôt|ard) que prévu <<- ~>> *
__[i]__  une (?:à une|autre fois|bonne fois pour toutes|fois(?: pour toutes| de plus| n’est pas coutume)) <<- ~>> *
__[i]__  une fois <<- ~>> _
__[i]__  urbi et orbi <<- ~>> *
__[i]__  v(?:aille que vaille|entre à terre|ers nulle part) <<- ~>> *

# je / tu / il / elles / nous / vous / ils / elles 
__[i]__  je (?:t’en|vous en) (?:prie|supplie) <<- ~>> *
__[i]__  nous (?:t’en|vous en) (?:prions|supplions) <<- ~>> *

# mot-là
__[i]__  ({w1})(-là) @@0,$ <<- morphex(\1, ":[NAQ]", ":G") ~2>> *

# Après
__[i]__  (?:bien|si|assez) longtemps <<- ~>> *
__[i]__  plus (?:près|loin|tôt|tard|ou moins|que (?:nécessaire|jamais)|d’une fois) <<- ~>> *

## Simplification partielle
__[i]__  (tout au long) d(?:es?|u) @@0 <<- not morph(word(-1), ":R", False, False) ~1>> au
__[i]__  à (bonne distance|bord|cause|contre-courant|côté|court|défaut|droite|gauche|hauteur|l’(?:aff[ûu]t|arrière|autre bout|aune|avant|écart|égard|extérieur|encontre|ins(?:u|tar)|intérieur|opposé|orée|approche)|la (?:hauteur|portée|suite)|partir|portée|pro(?:ximité|pos)|quelques (?:mètres|kilomètres|lieues|pas|centaines de mètres|minutes|heures)|rebours) d(?:es?|u) @@2 <<- ~1>> *
__[i]__  à (base|grand(?: renfort|s coups)|raison) de? @@2 <<- ~1>> *
__[i]__  au (bout|beau milieu|courant|cours|détriment|fin fond|grand dam|fur et à mesure|gré|l(?:ieu|ong|arge)|milieu|nez et à la barbe|plus profond|profit|s(?:ein|ortir|ujet)|vu(?: et au su|)) d(?:es?|u) @@3 <<- ~1>> *
__[i]__  aux (abords|dépens) d(?:es?|u) @@4 <<- ~1>> *
__[i]__  ceux (et celles?) +qui @@5 <<- ~1>> *
__[i]__  (compte tenu) d(?:es?|u) @@0 <<- ~1>> avec
__[i]__  (de mes yeux) vue?s? @@0 <<-  ~1>> *
__[i]__  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>> *
__[i]__  en (flagrant délit|matière) de? @@3 <<- ~1>> *
__[i]__  (en proie) à @@0 <<- ~1>> *
__[i]__  (eu égard) (?:à|aux?) @@0 <<- ~1>> *
__[i]__  (?:[dmts]es|nos|vos|le(?:ur|)s) (\d+(?: ou \d+|)) ({w_2})  @@w,$
    <<- not re.search("(?i)^(?:janvier|février|mars|avril|mai|juin|juillet|ao[ûu]t|septembre|octobre|novembre|décembre|vendémiaire|brumaire|frimaire|nivôse|pluviôse|ventôse|germinal|floréal|prairial|messidor|thermidor|fructidor)s?$", \2) ~1>> *
__[i]__  la (une) d(?:es?|u) @@3 <<- ~1>> _
__[i]__  le (long) d(?:es?|u) @@3 <<- ~1>> _
__[i]__  par (le biais|l’entremise) d(?:es?|u) @@4 <<- ~1>> * 
__[i]__  pour (ou contre) @@5 <<- ~1>> *
__[i]__  rien +(comparé) +à @@w <<- ~1>> *
__[i]__  (suite) (?:à|aux?) @@0 <<- not before(r"\b(?:une|la|cette|[mts]a|[nv]otre|de) +") ~1>> *
__[i]__  (vent debout) contre @@0 <<- ~1>> *

## Simplifications des substantifs
__[i]__  l’article (\d+(?:[.-](?:[0-9]+|\w)|)) @@$ <<- ~1>> *
__[i]__  armées? (de (?:l’air|terre)|jusqu aux dents) @@$ <<- ~1>> *
__[i]__  armée?s? (jusqu aux dents) @@$ <<- ~1>> *
__[i]__  armes? (à feu|de (?:poing|guerre|destruction massive)) @@$ <<- ~1>> *
__[i]__  (?:attestation|déclaration)s? (sur l’honneur) @@$ <<- ~1>> *
__[i]__  ayants (droit) @@$ <<- ~1>> *
__[i]__  bo[îi]tes? (aux lettres) @@$ <<- ~1>> *
__[u]__  bisph[ée]nols? (A) @@$ <<- ~1>> *
__[i]__  blanc(?:he|)s? (comme neige|comme de la craie) @@$ <<- ~1>> *
__[i]__  bombes? (à (?:eau|fragmentation|retardement)) @@$ <<- ~1>> *
__[i]__  chairs? (à (?:pâté|canons?)) @@$ <<- ~1>> *
__[i]__  chambres? (d’(?:agriculture|hôtes?)|de (?:commerce|compensation|décompression|dégrisement)) @@$ <<- ~1>> *
__[i]__  chilis? (con carne) @@$ <<- ~1>> *
__[i]__  chefs?(-d’œuvre) @@$ <<- ~1>> *
__[i]__  claire?s? (comme de l’eau de roche) @@$ <<- ~1>> *
__[i]__  commise?s? (d’office) @@$ <<- ~1>> *
__[i]__  conventions? (récepteur|générateur) @@$ <<- ~1>> *
__[i]__  coups? (de (?:cœur|foudre|fil|grâce|jarnac|théâtre|coude|genou|main|p(?:ied|oing|oker|ouce)|tête)|d’(?:avance|éclat|État|œil|épaule)|du sort) @@$
    <<- ~1>> *
__[i]__  courses? (contre la montre) @@$ <<- ~1>> *
__[i]__  cousue?s? +(main) @@$ <<- ~1>> *
__[i]__  (?:co[uû]t|prix) (de revient) @@$ <<- ~1>> *
__[i]__  délais? (d’attente|de (?:carence|connexion|prescription|préavis|rétraction|rigueur)) @@$ <<- ~1>> *
__[i]__  d[îi]ners? (aux chandelles) @@$ <<- ~1>> *
__[i]__  dignes? (de (?:confiance|foi|ce nom)) @@$ <<- ~1>> *
__[i]__  (droit) (?:au but|dans les yeux) @@0 <<- ~1>> *
__[i]__  espérances? (de vie) @@$ <<- ~1>> *
__[i]__  états? (d’(?:âme|e(?:sprit|xtrême urgence)|urgence)|de (?:conservation|fait|l’art)) @@$ <<- ~1>> *
__[i]__  (f[aiîeo]\w*) +(tous(?: deux| trois|) +|)(allusion|assaut|confiance|compliqué|chaud|débat|demi-tour|froid|gr(?:ise mine|and cas)|h(?:alte|onte)|ma(?:chine|rche) arrière|p(?:art(?:ie(?: intégrante|)|)|eur|rofil bas)|rage|salle comble|sens|table rase|volte-face|ce que bon (?:me|te|lui|leur|nous|vous) semble) @@0,*,$
    <<- morph(\1, ">faire ", False) ~2>> *
    <<- morph(\1, ">faire ", False) ~3>> *
__[i]__  filles? (au pair|à (?:papa|maman)) @@$ <<- ~1>> *
__[i]__  fils (à (?:papa|maman)) @@$ <<- ~1>> *
__[s]__  [fF]emmes? (de (?:chambre|lettres|loi|ménage)|d’(?:âge mûr|affaires|exception|É(?:tat|glise)|honneur)) @@$ <<- ~1>> *
__[s]__  [hH]ommes? (de (?:lettres|loi|main|paille)|d’(?:âge mûr|affaires|armes|exception|É(?:tat|glise)|honneur)) @@$ <<- ~1>> *
__[i]__  gardes? (à vue|du corps) @@$ <<- ~1>> *
__[i]__  (?:infirmières?|médecins?) (de garde) @@$ <<- ~1>> *
__[i]__  (l(?:a (?:nette|bizarre) +|’étrange +|’)impression) +que? @@0 <<- ~1>> *
__[i]__  (le (?:pres|)sentiment) +que? @@0 <<- ~1>> *
__[i]__  listes? (d’attente) @@$ <<- ~1>> *
__[i]__  invitée?s? (d’honneur|surprise) @@$ <<- ~1>> *
__[i]__  journa(?:l|ux) (de bord) @@$ <<- ~1>> *
__[i]__  mains? (d’œuvre) @@$ <<- ~1>> *
__[i]__  maisons? (de (?:passe|retraite)) @@$ <<- ~1>> *
__[i]__  ma(?:l|ux) (de (?:tête|ventre)) @@$ <<- ~1>> *
__[i]__  marchés? (aux puces) @@$ <<- ~1>> *
__[i]__  metteu(?:r|se)s? (en scène) @@$ <<- ~1>> *
__[i]__  mineure?s? (de moins de ({w1}) ans) @@$,>1:w <<- \2.isdigit() or morph(\2, ":B", False) ~1>> *
__[i]__  mis(?:es?|) (à (?:jour|niveau|plat|l’écart)|au p(?:oint|as)|en (?:avant|bouche|demeure|garde|œuvre|scène|terre)) @@$ <<- ~1>> *
__[i]__  modes? (de (?:paiement|scrutin|vie)) @@$ <<- ~1>> *
__[i]__  mots? (de passe) @@$ <<- ~1>> *
__[i]__  noix (de (?:cajou|p[ée]can|coco|lavage|muscade|veau|macadamia)) @@$ <<- ~1>> *
__[i]__  notre père (qui est? aux cieux) @@11 <<- ~1>> *
__[i]__  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+) @@$
    <<- before(r"\b[lL]a +$") =>> define(\0, [">numéro :N:f:s"])
    <<- ~1>> *
__[i]__  oiseaux? (de (?:malheur|nuit|proie)) @@$ <<- ~1>> * 
__[i]__  ondes? (de choc) @@$ <<- ~1>> *
__[i]__  orge (perlé|mondé|carré) @@$ <<- ~1>> *
__[i]__  noire?s? (comme (?:la nuit|une nuit sans lune)) @@$ <<- ~1>> *
__[i]__  pièces? (de (?:théâtre|monnaie|\d+ (?:euros?|centimes?|cents?|livres? sterling|shillings?))) @@$ <<- ~1>> *
__[i]__  parties? (de jambes en l’air) @@$ <<- ~1>> *
__[i]__  portes? (de (?:service|garage)) @@$ <<- ~1>> *
__[i]__  poudres? (aux yeux) @@$ <<- ~1>> *
__[i]__  (pr[eiî]\w+) +(à la légère|au dépourvu|de court|en charge|pour argent comptant|par surprise) @@0,$ <<- morph(\1, ">prendre ", False) ~2>> *
__[i]__  quelqu un (d’autre) @@$ <<- ~1>> *
__[i]__  remise?s? (à plat) @@$ <<- ~1>> *
__[i]__  requêtes? (en (?:nullité|non (?:conciliation|inscription|lieu|révocation de sursis))) @@$ <<- ~1>> *
__[i]__  (rest\w+) (lettre morte) @@0,$ <<- morph(\1, ">rester ", False) ~2>> *
__[i]__  rouges? (à lèvres) @@$ <<- ~1>> *
__[i]__  sacs? (à (?:dos|main|langer)|de (?:couchage|sport|voyage)) @@$ <<- ~1>> *
__[i]__  salles? (à manger|d’attente|de (?:bains?|conférence)) @@$ <<- ~1>> *
__[i]__  saine?s? (d(?:e corps et d|)’esprit) @@$ <<- ~1>> *
__[i]__  (sembl\w+|par[au]\w+) +(être|avoir été) +({w_2}) @@0,w,$ <<- morph(\1, ">(?:sembler|para[îi]tre) ") and morphex(\3, ":A", ":G") ~2>> *
__[u]__  systèmes? (d’exploitation|D) @@$ <<- ~1>> *
__[i]__  taille (\d+) @@$ <<- ~1>> *
__[i]__  têtes? (de déterrée?s?) @@$ <<- ~1>> *
__[i]__  (t[eiî]\w+) +(compte) d(?:es?|u) @@0,w <<- morph(\1, ">tenir ", False) ~2>> *
__[i]__  (tout un) chacun @@0 <<- ~1>> *
__[i]__  tours? (de passe-passe) @@$ <<- ~1>> *
__[i]__  (tri\w+) (sur le volet) @@0,$ <<- morph(\1, ">trier ", False) ~2>> *
__[i]__  tueu(?:r|se)s? (à gages) @@$ <<- ~1>> *
__[i]__  (v[eiî]n\w+) ((?:on ne sait|je ne sais) (?:pas |)(?:trop |)d’où) @@0,$ <<- morph(\1, ">venir ", False) ~2>> *
__[i]__  vecteurs? (accélération|position|rotation|vitesse) @@$ <<- ~1>> *
__[i]__  vernis (à ongles) @@$ <<- ~1>> *
__[i]__  vols? (à l(?:’étalage|a (?:sauvette|tire))) @@$ <<- ~1>> *
__[i]__  voies? (de recours) @@$ <<- ~1>> *
__[i]__  usines? (à gaz) @@$ <<- ~1>> *

# simplification des nombres
__<i]__  dix-(?:sept|huit|neuf) <<- ~>> dix
__[i]__  (?:vingt|trente|quarante|cinquante)(-(?:deux|trois|quatre|cinq|six|sept|huit|neuf|et-un)| et un) @@$ <<- ~1>> *
__[i]__  soixante-(?:d(?:eux|ix|ouze)|tr(?:ois|eize)|quat(?:re|orze)|cinq|six|sept|huit|neuf|quinze|seize| et (?:un|onze)|-et-(?:un|onze))
    <<- ~>> soixante
__[i]__  quatre-vingt-(?:un|d(?:eux|ix|ouze)|tr(?:ois|eize)|quat(?:re|orze)|cinq|six|sept|huit|neuf|onze|quinze|seize)
    <<- ~>> quatre-vingts

__[i]__  ((?:d(?:eux|ouze)|tr(?:ois|eize)|quat(?:re|orze)|cinq|s(?:ix|seize)|sept|huit|neuf|onze|quinze) cents) +({w_2})  @@0,$ 
    <<- morphex(\2, ":[NAQ].*:[pi]", ":(?:G|3p)") ~1>> cent
__[i]__  (?:deux|trois|quatre|cinq|six|sept|huit|neuf|cent) (?:cent |)mille
    <<- ~>> mille

__[i]__  (?: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,$ 
    <<- morphex(\2, ":[NAQ].*:[pi]", ":(?:G|3p)") ~1>> *

__[i]__  (?:à |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)|) <<- ~>> *
__[i]__  (?:à|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)|) <<- ~>> *

## Conditionnel
__[i]__  à ({w_2}) pour cent @@2 <<- morph(\1, ":B", False) ~>> *
__[i]__  au moins <<- morph(word(-1), ":V0", False) or not morph(word(1), ":A", False) ~>> *
__[i]__  au hasard <<- isEndOfNG() ~>> *
__[i]__  aussi ({w_2}) que (?:nécessaire|possible) @@6 <<- morph(\1, ":W", False) ~>> *
__[i]__  au sens (?:le (?:plus|moins) |)({w_2}) du terme @@w <<- morph(\1, ":A .*:m:s", False) ~>> *
#__[i]__  aussi ({w_2}) que ce soit
__[i]__  (nombre) des? @@0 <<- morph(word(-1), ":(?:R|C[sc])", False, True) ~1>> *
__[i]__  à ({w_2}) reprises @@2 <<- morph(\1, ":B", False) or re.search("(?i)^(?:plusieurs|maintes)", \1) ~>> *
__[i]__  bien entendu <<- morph(word(1), ":[NAQR]", False, True) ~>> *
__[i]__  ({w_2}) (comme (?:eux|elles?|lui|ça|celui-(?:ci|là)|celles?-(?:ci|là)|ceux(?:ci|là)|l[ea] [nv]ôtre|le [mts]ien|la [mts]ienne|les (?:[nv]ôtres|sien(?:ne|)s))) @@0,$
    <<- morphex(\1, ":[NAQ]", ":V0") ~2>> *
__[i]__  ({w_2}) (pêle-mêle) @@0,$ <<- not morph(\1, ":D", False) ~2>> *
__[i]__  ({w_2}) (droit) devant @@0,w <<- not morph(\1, ":D.*:[me]:[si]", False) ~2>> *
__[i]__  dans (?:la (?:(?:grande |)majorité|plupart) des|de (?:tr[èo][sp] |)nombreux) cas <<- not morph(word(1), ":([AQ].*:[me]:[pi])", False, False) ~>> *
__[i]__  (du coup) ({w_1}) @@0,$ <<- not morph(\2, ":A", False) ~1>> *
__[i]__  (d[eouû]\w+|cr[ouû]\w+|pens\w+|imagin\w+|estim\w+) (l(?:eur|ui)|nous|vous) être @@0,w
    <<- morph(\1, ">(?:croire|devoir|estimer|imaginer|penser) ") ~2>> *
__[i]__  (en partie) ({w_2}) @@0,$ <<- morph(\1, ":(?:R|D|[123]s|X)", False) ~1>> *
__[i]__  (en quelques (?:années|semaines|minutes)) +({w_2}) @@0,$ <<- not morph(\2, ":[AQ]:[ef]:[si]", False) ~1>> *
__[i]__  (en quelques (?:jours|mois|siècles)) +({w_2}) @@0,$ <<- not morph(\2, ":[AQ]:[em]:[si]", False) ~1>> *
__[i]__  entre (?:eux|elles|nous|vous)(?: et (?:moi|toi|nous|vous|elles|eux)|) <<- not before(r"(?i)\b(?:il +|n’)$") ~>> *
__[i]__  haut et fort <<- not morph(word(-1), ":D", False, False) ~>> *
__[i]__  hélas <<- not before(r"(?i)\bt(?:u|oi qui)\b") ~>> *
__[i]__  nécessité fait loi <<- not morph(word(-1), ":D", False, False) ~>> *
__[i]__  (non|par trop) ({w_2}) @@0,$ <<- morph(\2, ":A", False) ~1>> *
__[i]__  plein est <<- not morph(word(-1), ":D", False, False) ~>> *
__[i]__  (?:plus|moins|aussi) ({w3}) que prévu @@w <<- morph(\1, ":W", False) ~>> *
__[i]__  (?:plus|moins|aussi) ({w3}) (que (?:les autres|l’autre)) @@w,$ <<- morphex(\1, ":[AW]", ":G") ~2>> *
__[i]__  plus ({w3}) (les une?s que les autres) @@5,$ <<- morph(\1, ":[AW]", False) ~2>> *
__[i]__  (pour autant (?:que (?:je sache|tu saches|nous sachions|vous sachiez)|qu (?:il|elle)(?: sache|s sachent))) ({w_1})  @@0,$
    <<- not morph(\2, ":Y", False) ~1>> *
#__[i]__  avec ({w1}) <<- morph(\1, ":N") and not re.search("(?i)^(force|air)$", \1) and not morph(word(1), ":A", False) ~>> *
__[i]__  ({w_2}) +(tête baissée) @@0,$ <<- morphex(\1, ":[NV]", ":D") ~2>> *
__[i]__  ((?:pas |)tant que ça) ({w1}) @@0,$ <<- not morph(\2, ":(?:3s|X)", False) ~1>> *
__[i]__  (?:le|un|ce|[mts]on) (putain d(?:e +|’))({w_2}) @@*,$ <<- morph(\2, ":[me]", False) ~1>> *

# Noms propres
__[i]__  cocktails? (Molotov) @@$ <<- ~1>> *
__[i]__  effets? (Streisand) @@$ <<- ~1>> *
__[i]__  prix (Nobel) @@5 <<- ~1>> *
__[s]__  Amérique (centrale|du (?:Nord|Sud)) @@$ <<- ~1>> *
__[s]__  ([A-ZÉÈÂ][\w-]+) ([A-ZÉÈÂ][\w-]+) @@0,$ <<- morph(\1, ":M[12]", False) and (morph(\2, ":(?:M[12]|V)", False) or not spell(\2)) ~2>> *
__[s]__  (?:de |d’)([A-ZÉÈÂ][\w-]+) +(?:et|ou) +(?:de |d’)([A-ZÉÈÂ][\w-]+) @@w,$ <<- morph(\1, ":M", False) and morph(\2, ":M", False) ~>> *
__[s]__  (?:de |d’)([A-ZÉÈÂ][\w-]+) @@$ <<- morph(\1, ":M", False) ~>> *
__[s]__  entre ([A-ZÉÈÂ][\w-]*) +et ([A-ZÉÈÂ][\w-]*) @@6,$ <<- morph(\1, ":(?:M[12]|N)") and morph(\2, ":(?:M[12]|N)") ~>> *
__[s]__  en ([A-ZÉ][\w-]+) @@3 <<- morph(\1, ":MP") ~>> *
__[u]__  (?:[lc]e|du) (?:baron|docteur|député|duc|frère|prince|professeur|roi|sénateur|mir) ([A-ZÉÈÂ][\w-]+) @@$ <<- morph(\1, ":M[12]", False) ~1>> *
__[u]__  (?:la|cette) (?:baronne|docteure?|députée|duchesse|sœur|princesse|professeure?|reine|sénatrice) ([A-ZÉÈÂ][\w-]+) @@$
    <<- morph(\1, ":M[12]", False) ~1>> *
__[s]__  M(?:r|lle|me|gr|iss) ([A-ZÉÈÂ][\w-]+) @@$ <<- ~1>> *
__[s]__  ([A-ZÉÈÊ][\w-]+) +et (lui|elles?|eux|[nv]ous|[mt]oi) @@0,$
    <<- morph(\1, ":[MT]", False) and morph(word(-1), ":Cs", False, True) and not before(r"\b(?:plus|moins|aussi) .* que +$")
    ~>> =rewriteSubject(\1,\2)

# après être, après avoir
__[i]__  ({etre}) +(à jamais|un jour|sous peu|du moins|avant tout|de passage|frère et sœur|mari et femme|père et mère|papa et maman|monnaie courante|pieds et poings liés|partie (?:intégrante|prenante))  @@0,$
    <<- morph(\1, ":V0e", False) ~2>> *
__[i]__  ([ésf]\w+)-(?:ils|[nv]ous|elles) +(frère et sœur|mari et femme|père et mère|papa et maman|bon marché|meilleur marché)  @@0,$
    <<- morph(\1, ":V0e", False) ~2>> *
__[i]__  ({w1}) +(on ne peut (?:pas |)(?:plus|moins)|plus que) +({w2})  @@0,w,$
    <<- morph(\1, ":(?:V0e|N)", False) and morph(\3, ":[AQ]", False) ~2>> *
__[i]__  ({avoir_etre}) +(pas|jamais|plus|en partie|point|tous (?:deux|trois)|somme toute)  @@0,$
    <<- morph(\1, ":V0", False) ~2>> *
__[i]__  ({avoir_etre}) +(beaucoup|bien entendu|dans (?:leur |son |l’)ensemble|à ce(?:t (?:instant|endroit)| moment)|sans peine|un (?:moment|peu|minimum|petit peu|tout petit peu)) +({w_2})  @@0,w,$
    <<- morph(\1, ":V0", False) and morph(\3, ":[QY]", False) ~2>> *
__[i]__  ({avoir}) +(besoin|bon (?:dos|pied,? bon œil)|confiance|crainte|faim|forme humaine|honte|partie (?:gagnée|liée)|peur|soif|voix au chapitre)  @@0,$
    <<- morph(\1, ":V0a", False) and not (\2 == "crainte" and before(r"\w")) ~2>> *
__[i]__  ({avoir})-(?:je|tu|ils?|elles?|nous|vous|on) +(besoin|bon (?:dos|pied,? bon œil)|confiance|crainte|faim|forme humaine|honte|partie (?:gagnée|liée)|peur|soif|voix au chapitre)  @@0,$
    <<- morph(\1, ":V0a", False) ~2>> *
__[i]__  ({avoir}) +(tou(?:te|)s les ({w_2})) +({w_2})  @@0,w,>3:$,$
    <<- morph(\1, ":V0a", False) and morph(\3, ":B", False) and morph(\4, ":(?:Q|V1.*:Y)", False) ~2>> *

# elle aussi + adj
__[i]__  (elle aussi) +({w_3}) @@0,$ <<- morph(\2, ":A:[fe]:s", False) ~1>> *
__[i]__  (elles aussi) +({w_3}) @@0,$ <<- morph(\2, ":A:[fe]:p", False) ~1>> *

# après verbe
__[i]__  ({w1}) (?:pas |)(jour et nuit|quand même(?: pas|)) @@0,$ <<- morph(\1, ":V", False) ~2>> *
__[i]__  ({w_2}) (bien entendu|juste|ensemble) @@0,$ <<- morph(\1, ":V[123]") ~2>> *
__[i]__  ({w_2}) ((?:fort|très|super) (?:bien|mal)|bien|mal) @@0,$ <<- morph(\1, ":V[123]", False) ~2>> *
__[i]__  ({w_1}) ((?:[mt]oi|[nv]ous|elles?|lui|eux) aussi) @@0,$ <<- morph(\1, ":V", False) ~2>> *
__[i]__  (?:tout |)aussi <<- ~>> *
__[i]__  aussi(?:tôt|) <<- ~>> *
__[i]__  ({w_1}) (même) @@0,$ <<- morphex(\1, ":V", ":G") ~2>> *

# avant adjectifs, avant adverbes
__[i]__  (au moins) ({w_2})  @@0,$
    <<- not morph(\2, "[NAQ].*:[me]:[si]", False) ~1>> *
__[i]__  le ({w_2}) (le plus) ({w_2})  @@3,w,$
    <<- morphex(\1, ":[NAQ].*:[me]", ":G") and morph(\3, ":[AQ].*:[me]", False) ~2>> *
__[i]__  la ({w_2}) (la plus) ({w_2})  @@3,w,$
    <<- morphex(\1, ":[NAQ].*:[fe]", ":G") and morph(\3, ":[AQ].*:[fe]", False) ~2>> *
__[i]__  [ld]es ({w_2}) (les plus) ({w_2})  @@4,w,$
    <<- morphex(\1, ":[NAQ].*:[pi]", ":[123][sp]") and morph(\3, ":[AQ].*:[pi]", False) ~2>> * 
__[i]__  bien sûr(?! de) <<- ~>> *
__[i]__  (bien|mal|(?:fort|super) (?:bien|mal)|fort) +({w_2})  @@0,$
    <<- morph(\2, ":[AW]") ~1>> *
__[i]__  (à (?:demi|peine|peu près)|depuis peu|quelque peu|pas très|un (?:petit |)peu(?: plus| moins|)|un minimum|peu|plus|moins|si) +({w_2})  @@0,$
    <<- morph(\2, ":[AW]", False) ~1>> *
__[i]__  (un (?:brin|chou[iï]a|tantinet|soupçon)(?: trop|)) ({w_2}) @@0,$
    <<- morph(\2, ":[AQ]", False) ~1>> *
__[i]__  (?:assez|trop) +(\w+ment)  @@$
    <<- morphex(\1, ":W", ":3p") ~>> *
__[i]__  (assez|trop) +({w_2})  @@0,$
    <<- morphex(\2, ":[AW]", ":[123][sp]") ~1>> *

# adverbes en -ment
__[i]__  ({w_2}) (l[ea] (?:plus|moins) (\w+ment)) ({w_2})  @@0,w,>2:$,$
    <<- morph(\1, ":[NAQ]", False) and morph(\3, ":W", False) and morph(\4, ":[AQ]", False) ~2>> *
__[i]__  complètement <<- not morph(word(-1), ":D", False, True) ~>> *
__[i]__  (\w+ment)(?: parlant|) @@0 <<- morph(\1, ":W\\b") ~>> *

# couleurs invariables
__[i]__  ({w_2}) +((?:beige|blanc|bleu|brun|châtain|cyan|gris|jaune|magenta|marron|orange|pourpre|rose|rouge|vert|violet) (?:clair|fluo|foncé|irisé|pâle|pastel|sombre|vif)) @@0,$
    <<- morph(\1, ":[NAQ]", False) ~2>> *

# locutions adjectivales & couleurs
__[i]__  ({w_2}) +(bas(?: de gamme|se consommation)|bon (?:enfant|marché|teint|chic,? bon genre)|cl(?:é|ef) en mains?|dernier cri|fleur bleue|grand (?:public|luxe)|grandeur nature|haut(?: de gamme|e résolution)|longue (?:distance|portée|durée)|meilleur marché|numéro (?:un|deux|trois|quatre|cinq|six|sept|huit|neuf|dix(?:-sept|-huit|-neuf)|onze|douze|treize|quatorze|quinze|seize|vingt)|plein cadre|top secret|vieux jeu|open source|Créative Commons|pur jus|terre à terre|bleu (?:marine|saphir|turquoise)|vert (?:émeraude|olive|pomme)|rouge (?:brique|rubis|sang)|jaune sable|blond platine|gris (?:acier|anthracite|perle)|noir (?:d(?:’encre|e jais)|et blanc))
    @@0,$
    <<- morph(\1, ":(?:N|A|Q|V0e)", False) ~2>> *

# tous / tout / toute / toutes
__[i]__  (tout) (?:le|cet?|[mts]on) @@0             <<- ~1>> *
__[i]__  (toute) (?:la|cette|[mts]a) @@0            <<- ~1>> *
__[i]__  (tou(?:te|)s) (?:[ldscsmt]es) @@0          <<- ~1>> *


## 1 mot
__[i]__  ai(?:lleurs|nsi)                           <<- ~>> *
__[i]__  al(?:entour|ors)                           <<- ~>> *
__[i]__  au(?:jourd’hui|paravant)                   <<- ~>> *
__[i]__  bientôt                                    <<- ~>> *
__[i]__  ce(?:pendant|rtes)                         <<- ~>> *
__[i]__  ci-desso?us                                <<- ~>> *
__[i]__  de(?:bout|rechef)                          <<- ~>> *
__[i]__  (depuis), @@0                             <<- ~1>> *
__[i]__  dé(?:jà|sormais)                           <<- ~>> *
__[i]__  do(?:nc|rénavant)                          <<- ~>> *
__[i]__  en(?:fin|suite|core)                       <<- ~>> *
__[i]__  guère                                      <<- ~>> *
__[i]__  jadis                                      <<- ~>> *
__[i]__  jamais          <<- not before(r"(?i)\bne +$") ~>> *
__[i]__  lo(?:in|ngtemps)                           <<- ~>> *
__[i]__  mouais                                     <<- ~>> *
__[i]__  n(?:aguère|éanmoins)                       <<- ~>> *
__[i]__  par(?:fois|tout)                           <<- ~>> *
__[i]__  p(?:eut-être|lutôt|ourtant|resque|rimo)    <<- ~>> *
__[i]__  quelquefois                                <<- ~>> *
__[i]__  sou(?:dain|vent)                           <<- ~>> *
__[i]__  tou(?:jours|tefois)                        <<- ~>> *
__[i]__  secondo                                    <<- ~>> *
__[i]__  sur(?:-le-champ|tout)                      <<- ~>> *
__[i]__  t(?:ôt|ard|antôt|ertio)                    <<- ~>> *
__[i]__  très                                       <<- ~>> *
__[i]__  volontiers                                 <<- ~>> *

# après
__[i]__  au fur et à mesure                         <<- ~>> *
__<i>__  , +(?:oui|non|entre autres),               <<- ~>> *
__<s>__  , +,                                       <<- ~>> *
__<s>__  ^ *,                                       <<- ~>> *
__<s>__  , *$                                       <<- ~>> *
__<s>__  [—–-] +[—–-]                               <<- ~>> *
__<s>__  [<] +[>]                                   <<- ~>> *
__<s>__  [(] +[)]                                   <<- ~>> *

# Seconde passe (il faut réorganiser tout le cycle de simplification)
__[i]__  (à (?:[mts]es|[nv]os|leurs) yeux) +({w_1}) @@0,$ <<- not morph(\2, ":A.*:[me]:[pi]", False) ~1>> *
__[i]__  (chaque (?:année|semaine|journée|décennie)) +({w_1}) @@0,$ <<- not morph(\2, ":(?:A.*:[fe]:[si]|Oo|[123][sp])", False) ~1>> *
__[i]__  (chaque (?:an|jour|mois)) +({w_1}) @@0,$ <<- not morph(\2, ":(?:A.*:[me]:[si]|Oo|[123][sp])", False) ~1>> *
__[i]__  (dans l’ensemble) +({w_1}) @@0,$ <<- not morph(\2, ":A.*:[me]:[si]", False) ~1>> *
__[i]__  (de ce (?:seul |)fait) +({w_1}) @@0,$ <<- not morph(\2, ":A.*:[me]:[si]", False) ~1>> *
__[i]__  (dès les premiers (?:jours|mois|ans|siècles|trimestres|semestres)) +({w_1}) @@0,$ <<- not morph(\2, ":A.*:[me]:[pi]", False) ~1>> *
__[i]__  (dès les premières (?:années|semaines|minutes|secondes|heures|décennies)) +({w_1}) @@0,$ <<- not morph(\2, ":A.*:[fe]:[pi]", False) ~1>> *
__[i]__  (en (?:certaines|quelques|plusieurs|de multiples) occasions) +({w_1}) @@0,$ <<- not morph(\2, ":A.*:[fe]:[pi]", False) ~1>> *
__[i]__  (entre autres choses) +({w_1}) @@0,$ <<- not morph(\2, ":A.*:[fe]:[pi]", False) ~1>> *
__[i]__  ((?:quelques|plusieurs|de +nombreuses) (?:secondes|minutes|heures|journées|semaines|années|décennies)) +({w_1}) @@0,$ <<- not morph(\2, ":A.*:[fe]:[pi]", False) ~1>> *
__[i]__  ((?:quelques|plusieurs|de +nombreux) (?:instants|moments|jours|mois|ans|siècles)) +({w_1}) @@0,$ <<- not morph(\2, ":A.*:[me]:[pi]", False) ~1>> *
__[i]__  (un (?:instant|moment)) +({w_1}) @@0,$ <<- not morph(\2, ":A.*:[me]:[si]", False) ~1>> *


TEST: pourquoi faire compliqué quand on peut faire simple
TEST: Pour ceux et celles qui étaient présents à la cérémonie
TEST: les pires vilénies suite au mauvais vote du peuple
TEST: La numéro 1 mondiale
TEST: cette information n’est rien comparé à cette énorme pression
TEST: elle n’est de fait assumée par personne
TEST: cohabitent sans difficulté musulmans, juifs et mozarabes.
TEST: Rien n’a été trop beau pour cette saga aux costumes cousus main
TEST: l’adoption est bien entendu à promouvoir
TEST: Les retours que j’ai sont très différents et dépendent de la sensibilité de chacun
TEST: refuser le voyeurisme teinté de misérabilisme et le mépris de classe en boycottant les émissions racoleuses
TEST: en passant par les “séjours humanitaires” clé en main
TEST: qui sont en majorité moins attentifs à la qualité de la prestation qu’ils proposent aux clients
TEST: Il a une tête de déterré.
TEST: Malgré quelques envolées un brin trop solennelles, tout ce que j’ai dit était très sincère.
TEST: Je constate également qu’il n’y pas beaucoup d’entente entre eux.
TEST: cet appareil supersonique a été conçu pour mener des frappes longue distance
TEST: C’est à mes yeux totalement secondaire.
TEST: les femmes se révoltèrent alors, elles aussi désespérées par ces injonctions contradictoires.
TEST: pouvoir envisager de dîner avec ses enfants à une heure décente plusieurs fois par semaine
TEST: Le vecteur position du point P(t)
TEST: Le vecteur vitesse d’un point d’un solide
TEST: Le vecteur accélération
TEST: Le vecteur rotation
TEST: la construction à l’avenir incertain
TEST: Il resta quelques secondes pensif.
TEST: Il resta quelques instants immobile.
TEST: La foule, un instant subjuguée et silencieuse
TEST: Ils furent de nombreuses minutes persuadés du contraire.
TEST: Elles avaient plusieurs heures travaillé sans relâche.
TEST: Entre autres choses merveilleuses, il fit poser un bassin en airain (Ctesse Ségur)



#### DÉSAMBIGUÏSATION

#__[i]__  ({avoir}) +({w_1}[eiuts])  @@0,$
#    <<- morph(\1, ":V0a", False) and morphex(\1, ":Q", ":G")
#    =>> exclude(\2, ":A")


### Désambiguïsation par séparation de le/la/les avec la suite s’il s’agit de COD dans les syntagmes verbaux
#__[i>__  [nmts]e l(?:es?|a)( ) @@$          <<- ~1>> @
__[i>__  je l(?:es?|a)( ) @@$               <<- not morph(word(-1), ":1s", False, False) ~1>> @
__[i>__  tu l(?:es?|a)( ) @@$               <<- not morph(word(-1), ":2s", False, False) ~1>> @
__[i>__  (?:il|elle|on) l(?:es?|a)( ) @@$   <<- not morph(word(-1), ":3s", False, False) ~1>> @
__[i>__  nous l(?:es?|a)( ) @@$             <<- not morph(word(-1), ":1p", False, False) ~1>> @
__[i>__  vous l(?:es?|a)( ) @@$             <<- not morph(word(-1), ":2p", False, False) ~1>> @
__[i>__  (?:ils|elles) l(?:es?|a)( ) @@$    <<- not morph(word(-1), ":3p", False, False) ~1>> @
#__[i]__  l(?:es?|a)( )({w_2}) @@*,$         <<- morph(\2, ":[123][sp]") ~1>> @


### DPP: Désambiguïsation par distinction des mots qui sont à la fois (verbes conjugués ET (noms ET/OU adjectifs))
# Cette distinction est nécessaire seulement pour les mots suivant un groupe nominal.
# Exemples : finis, donne(s), avance(s), bavarde(s)
__[i]__  (?<![lL]’)une? ({w_2})( ) *({w_2})  @@w,**,$
    <<- isAmbiguousNAV(\3) and morphex(\1, ":[NAQ]", ">telle ")
    ~2>> ~
__[i]__  (?:d(?:es? |’)|[mts](?:es|on|a) |ce(?:s|t(?:te|)|rtaine?s|) |[nv](?:otre|os) |leurs |quelques ) *({w_2})( ) *({w_2}) @@w,**,$
    <<- isAmbiguousNAV(\3) and morphex(\1, ":[NAQ]", ">telle ") and not re.search("^[dD](?:’une?|e l(?:a|eur)) ", \0)
    ~2>> ~
__[i]__  l(?:es? |a |’|eur ) *({w_2})( ) *({w_2})  @@w,**,$
    <<- isAmbiguousNAV(\3) and ( morph(\1, ":[NAQ]", False) or (morphex(\1, ":[NAQ]", ":3[sp]") and not word(-1)) )
    ~2>> ~

TEST: comme le signe évident d’une politique volontaire
TEST: c’était le signe évident d’une politique volontaire
TEST: ce que c’est : le signe évident d’une politique volontaire



#
# //////////////////////////////////////// RÈGLES DE CONTRÔLE ////////////////////////////////////////
#


#### Redondances
 
__[i]/redon2(redondances_phrase)__
    ({w_4})[ ,].* (\1)  @@0,$
    <<- not morph(\1, ":(?:G|V0)|>même ", False) -2>> _             # Dans cette phrase, répétition de « \1 » (à gauche).
    <<- __also__ -1>> _                                             # Dans cette phrase, répétition de « \1 » (à droite).

TEST: __redon2__ Quelle {{imposture}}, c’est d’un ennui, c’est une {{imposture}}.
TEST: __redon2__ ils sont là côte à côte.
TEST: __redon2__ Tu avances petit à petit, et tu réussis.
TEST: __redon2__ De loin en loin, elle passe.
TEST: __redon2__ Les mêmes causes produisent/produisant les mêmes effets. (répétition)



############################## GROUPE NOMINAL ##############################

#### 1 mot

## Usage impropre

__[s](au_le_nom)__
    ([aA]u le) ({w_2})  @@0,6   <<- morph(\2, ":[NAQ]", False) -1>> au          # Usage impropre. Après “au”, l’article “le” est inapproprié. (Ex : Je vais à la gare, je vais au stade.)
__[s](au_les_nom)__
    ([aA]u les) ({w_2})  @@0,7  <<- morph(\2, ":[NAQ]", False) -1>> aux         # Usage impropre. Après “au”, l’article “les” n’est pas nécessaire.
__[s](au_la)__
    ([aA]u) la ({w_2})  @@0,6   <<- morph(\2, ":[NAQ].*:[fe]", False) -1>> à    # Usage impropre. Avec un nom féminin, utilisez la préposition “à”. (Ex : Je vais à la gare, je vais au stade.)
__[i>(au_l)__
    ([aA]u) l’  @@0             <<- -1>> à                                      # Usage impropre. Ex : Elle va à l’opéra. Elle va au bal.

TEST: {{au le}} chien
TEST: {{au les}} armoires
TEST: qui sont {{au}} l’usage
TEST: {{au}} la passion


__[i]/gn(gn_l_accord)__ l’({w_2})  @@$
    <<- morphex(\1, ":[NAQ].*:p", ":[123][sp]|:[si]")
    -1>> =suggSing(@)                                                                               # Accord de nombre erroné :  « \1 » devrait être au singulier.

TEST: toute l’importance de l’{{accords}} musical.


__<i]/gn(gn_le_accord1)__
    , +(le) +({w_2})  @@w,$
    <<- morphex(\2, ":[NAQ].*:f", ":(?:e|m|P|G|W|[123][sp]|Y)") -1>> la                             # Accord de genre erroné : « \2 » est féminin.
    <<- __also__ and hasMasForm(\2) -2>> =suggMasSing(@, True)                                      # Accord de genre erroné : « \1 » est un déterminant masculin.
    <<- morph(\2, ":[NAQ].*:p") -2>> =suggMasSing(@)                                                # Accord de nombre erroné : « \2 » devrait être au singulier.
__[i]/gn(gn_le_accord2)__
    ({w_1}) +(le) +({w_2})  @@0,w,$
    <<- morphex(\3, ":[NAQ].*:f", ":(?:e|m|P|G|W|[123][sp]|Y)")
    or ( morphex(\3, ":[NAQ].*:f", ":[me]") and morphex(\1, ":R", ">(?:e[tn]|ou) ") and not (morph(\1, ":Rv", False) and morph(\3, ":Y", False)) )
    -2>> la                                                                                         # Accord de genre erroné : « \3 » est féminin.
    <<- __also__ and hasMasForm(\3) -3>> =suggMasSing(@, True)                                      # Accord de genre erroné : « \2 » est un déterminant masculin.
    <<- morph(\3, ":[NAQ].*:p")
    or ( morphex(\3, ":[NAQ].*:p", ":[si]") and morphex(\1, ":[RC]", ">(?:e[tn]|ou)") and not (morph(\1, ":Rv", False) and morph(\3, ":Y", False)) )
    -3>> =suggMasSing(@)                                                                            # Accord de nombre erroné : « \3 » devrait être au singulier.
__[i]/gn(gn_le_accord3)__
    ^ *(le) +({w_2}) @@w,$
    <<- morphex(\2, ":[NAQ].*:f", ":(?:e|m|P|G|W|Y)") -1>> la                                       # Accord de genre erroné : « \2 » est féminin.
    <<- __also__ and hasMasForm(\2) -2>> =suggMasSing(@, True)                                      # Accord de genre erroné : « \1 » est un déterminant masculin.
    <<- morphex(\2, ":[NAQ].*:p", ":[siGW]") -2>> =suggMasSing(@)                                   # Accord de nombre erroné : « \2 » devrait être au singulier.

TEST: c’est une catastrophe, le {{profits}} a baissé ces deux derniers trimestres
TEST: {{Le}} démoralisation.                                  ->> La
TEST: {{Le}} Guyane française.                                ->> La
TEST: avec {{le}} {{pile}}                                    ->> la|||pilé
TEST: {{le}} {{publique}}                                     ->> la|||public
TEST: {{Le}} {{pendue}}


__[i]/gn(gn_ledit_accord)__
    (ledit) +({w_2})  @@0,$
    <<- morphex(\2, ":[NAQ].*:f", ":[GWme]") -1>> ladite                                            # Accord de genre erroné : « \2 » est féminin.
    <<- __also__ and hasMasForm(\2) -2>> =suggMasSing(@, True)                                      # Accord de genre erroné : « \1 » est un déterminant masculin.
    <<- morphex(\2, ":[NAQ].*:p", ":[siGW]") -2>> =suggMasSing(@)                                   # Accord de nombre erroné : « \2 » devrait être au singulier.
__[i]/gn(gn_un_accord)__
    (un) +({w_2})  @@0,$
    <<- morphex(\2, ":[NAQ].*:f", ":(?:e|m|G|W|V0|3s)") -1>> une                                    # Accord de genre erroné : « \2 » est féminin.
    <<- __also__ and hasMasForm(\2) -2>> =suggMasSing(@, True)                                      # Accord de genre erroné : « \1 » est un déterminant masculin.
    <<- morphex(\2, ":[NAQ].*:p", ":[siGW]") and not morph(word(-2), ":B", False) -2>> =suggMasSing(@) # Accord de nombre erroné : « \2 » devrait être au singulier.
__[i]/gn(gn_un_des_accord)__
    (un) +des +({w_2})  @@0,$
    <<- morphex(\2, ":[NAQ].*:f", ":(?:e|m|G|W|V0|3s)") -1>> une                                    # Accord de genre erroné : « \2 » est féminin.
    <<- __also__ and hasMasForm(\2) -2>> =suggMasPlur(@, True)                                      # Accord de genre erroné : « \1 » est un déterminant masculin.
__[i]/gn(gn_du_accord)__
    (du) +({w_2})  @@0,$
    <<- morphex(\2, ":[NAQ].*:f", ":[GWme]") -1>> de la                                             # Accord de genre erroné : « \2 » est féminin.
    <<- __also__ and hasMasForm(\2) -2>> =suggMasSing(@, True)                                      # Accord de genre erroné : « \1 » est un déterminant masculin.
    <<- morphex(\2, ":[NAQ].*:p", ":[siGW]") -2>> =suggMasSing(@)                                   # Accord de nombre erroné : « \2 » devrait être au singulier.
__[i]/gn(gn_cet_accord)__
    (cet) +({w_2})  @@0,$
    <<- morphex(\2, ":[NAQ].*:f", ":[GWme]") -1>> cette                                             # Accord de genre erroné : « \2 » est féminin.
    <<- __also__ and hasMasForm(\2) -2>> =suggMasSing(@, True)                                      # Accord de genre erroné : « \1 » est un déterminant masculin.
    <<- morphex(\2, ">[bcçdfgjklmnpqrstvwxz].+:[NAQ].*:m", ":[efGW]") -1>> ce                       # Accord de genre correct, mais euphonie non respectée.|http://fr.wikipedia.org/wiki/Euphonie
    <<- morphex(\2, ":[NAQ].*:p", ":[siGW]") -2>> =suggMasSing(@)                                   # Accord de nombre erroné : « \2 » devrait être au singulier.
__[i]/gn(gn_ce_accord)__
    (ce) +({w_2})  @@0,$
    <<- morphex(\2, ":[NAQ].*:f", ":(?:3s|[GWme])") -1>> cette                                      # Accord de genre erroné : « \2 » est féminin.
    <<- __also__ and hasMasForm(\2) -2>> =suggMasSing(@, True)                                      # Accord de genre erroné : « \1 » est un déterminant masculin.
    <<- morphex(\2, ":[NAQ].*:f", ":[GWme]") and morph(\2, ":3s", False) -1>> cette|se              # Accord de genre erroné : « \2 » est féminin. Ou bien vous confondez le déterminant “ce” avec le pronom “se”.
    <<- morphex(\2, ":[NAQ].*:p", ":[siGW]") -2>> =suggMasSing(@)                                   # Accord de nombre erroné : « \2 » devrait être au singulier.
__[i]/gn(gn_mon_ton_son_accord)__
    ([mts]on) +({w_2})  @@0,$
    <<- morphex(\2, ">[bcdfgjklmnpqrstvwxz].*:[NAQ].*:f", ":[GWme]") -1>> =\1.replace("on", "a")    # Accord de genre erroné : « \2 » est féminin.
    <<- __also__ and hasMasForm(\2) -2>> =suggMasSing(@, True)                                      # Accord de genre erroné : « \1 » est un déterminant masculin.
    <<- morphex(\2, ":[NAQ].*:p", ":[siGW]") -2>> =suggMasSing(@)                                   # Accord de nombre erroné : « \2 » devrait être au singulier.
__[i]/gn(gn_au_accord)__
    (au) +({w_2})  @@0,$
    <<- morphex(\2, ":[NAQ].*:f:s", ":[GWme]") -1>> à la                                            # Accord de genre erroné : « \2 » est féminin.
    <<- __also__ and hasMasForm(\2) -2>> =suggMasSing(@, True)                                      # Accord de genre erroné : « \1 » est un déterminant masculin.
    <<- morphex(\2, ":[NAQ].*:p", ":[siGW]") -2>> =suggMasSing(@)                                   # Accord de nombre erroné : « \2 » devrait être au singulier.
    <<- __also__ -1>> aux                                                                           # Accord de nombre erroné : « \2 » est au pluriel.

TEST: ledit {{accords}} ne vaut rien.
TEST: {{au}} {{États-Unis}}                                   ->> |||aux
TEST: {{Un}} {{amie}}                                         ->> Une|||ami
TEST: {{Cet}} {{idiote}}.                                     ->> Cette|||idiot
TEST: {{cet}} ballon.                                         ->> ce
TEST: {{Ce}} animal.                                          ->> Cet
TEST: {{un}} des {{chattes}}
TEST: {{une}} des {{chats}}
TEST: {{mon}} {{chienne}}
TEST: cet {{oliviers}}
TEST: ce {{claviers}}
TEST: cette bouffe, c’est du {{chiens}}


__<i]/gn(gn_la_accord1)__
    , +(la) +({w_2})  @@w,$
    <<- morphex(\2, ":[NAQ].*:m", ":(?:e|f|P|G|W|[1-3][sp]|Y)") -1>> le                             # Accord de genre erroné : « \2 » est masculin.
    <<- __also__ and hasFemForm(\2) -2>> =suggFemSing(@, True)                                      # Accord de genre erroné : « \1 » est un déterminant féminin.
    <<- morph(\2, ":[NAQ].*:p") -2>> =suggFemSing(@)                                                # Accord de nombre erroné : « \2 » devrait être au singulier.
__[i]/gn(gn_la_accord2)__
    ({w_1}) +(la) +({w_2})  @@0,w,$
    <<- morphex(\3, ":[NAQ].*:m", ":(?:e|f|P|G|W|[1-3][sp]|Y)")
    or ( morphex(\3, ":[NAQ].*:m", ":[fe]") and morphex(\1, ":[RC]", ">(?:e[tn]|ou) ") and not (morph(\1, ":(?:Rv|C)", False) and morph(\3, ":Y", False)) )
    -2>> le                                                                                         # Accord de genre erroné : « \3 » est masculin.
    <<- __also__ and hasFemForm(\3) -3>> =suggFemSing(@, True)                                      # Accord de genre erroné : « \2 » est un déterminant féminin.
    <<- morph(\3, ":[NAQ].*:p")
    or ( morphex(\3, ":[NAQ].*:p", ":[si]") and morphex(\1, ":[RC]", ">(?:e[tn]|ou)") and not (morph(\1, ":Rv", False) and morph(\3, ":Y", False)) )
    -3>> =suggFemSing(@)                                                                            # Accord de nombre erroné : « \3 » devrait être au singulier.
__[i]/gn(gn_la_accord3)__
    ^ *(la) +({w_2})  @@w,$
    <<- morphex(\2, ":[NAQ].*:m", ":[efPGWY]") -1>> le                                              # Accord de genre erroné : « \2 » est masculin.
    <<- __also__ and hasFemForm(\2) -2>> =suggFemSing(@, True)                                      # Accord de genre erroné : « \1 » est un déterminant féminin.
    <<- morphex(\2, ":[NAQ].*:p", ":[siGW]") -2>> =suggFemSing(@)                                   # Accord de nombre erroné : « \2 » devrait être au singulier.

TEST: c’est ennuyeux, la {{parties}} deux est ratée.
TEST: {{La}} Cameroun                                         ->> Le
TEST: {{La}} mustang est un cheval sauvage.                   ->> Le
TEST: {{La}} tableau.                                         ->> Le
TEST: {{la}} {{véhicule}}
TEST: {{La}} {{pris}}
TEST: la force de la {{formes}} parfaite


__[i]/gn(gn_ladite_accord)__
    (ladite) +({w_2})  @@0,$
    <<- morphex(\2, ":[NAQ].*:m", ":[efGW]") -1>> ledit                                             # Accord de genre erroné : « \2 » est masculin.
    <<- __also__ and hasFemForm(\2) -2>> =suggFemSing(@, True)                                      # Accord de genre erroné : « \1 » est un déterminant féminin.
    <<- morphex(\2, ":[NAQ].*:p", ":[siGW]") -2>> =suggFemSing(@)                                   # Accord de nombre erroné : « \2 » devrait être au singulier.

TEST: ladite {{passions}} l’avait conduit à sa perte.


__[i]/gn(gn_une_accord)__
    (une) +({w_2})  @@0,$
    <<- morphex(\2, ":[NAQ].*:m", ":(?:e|f|G|W|V0|3s|P)") and not ( \2 == "demi" and morph(word(1), ":N.*:f") )
    -1>> un                                                                                         # Accord de genre erroné : « \2 » est masculin.
    <<- __also__ and hasFemForm(\2) -2>> =suggFemSing(@, True)                                      # Accord de genre erroné : « \1 » est un déterminant féminin.
    <<- morphex(\2, ":[NAQ].*:p", ":[siGW]") and not morph(word(-2), ":B", False) -2>> =suggFemSing(@) # Accord de nombre erroné : « \2 » devrait être au singulier.
__[i]/gn(gn_une_des_accord)__
    (une) +des +({w_2})  @@0,$
    <<- morphex(\2, ":[NAQ].*:m", ":(?:e|f|G|W|V0|3s)") -1>> un                                     # Accord de genre erroné : « \2 » est masculin.
    <<- __also__ and hasFemForm(\2) -2>> =suggFemPlur(@, True)                                      # Accord de genre erroné : « \1 » est un déterminant féminin.


TEST: un {{slashs}}                                           ->> slash
TEST: un {{fromages}}.                                        ->> fromage
TEST: Un {{ballons}}                                          ->> ballon
TEST: Une {{cinglées}}                                        ->> cinglée


__[i]/gn(gn_cette_accord)__
    (cette) +({w_2})  @@0,$
    <<- morphex(\2, ":[NAQ].*:m", ":[efGW]") -1>> =suggCeOrCet(\2)                                  # Accord de genre erroné : « \2 » est masculin.
    <<- __also__ and hasFemForm(\2) -2>> =suggFemSing(@, True)                                      # Accord de genre erroné : « \1 » est un déterminant féminin.
    <<- morphex(\2, ":[NAQ].*:p", ":[siGW]") -2>> =suggFemSing(@)                                   # Accord de nombre erroné : « \2 » devrait être au singulier.
__[i]/gn(gn_ma_ta_sa_accord)__
    ([mts]a) {1,3}({w_2})  @@0,$
    <<- morphex(\2, ":[NAQ].*:m", ":[efGW]") -1>> =\1.replace("a", "on")                            # Accord de genre erroné : « \2 » est masculin.
    <<- __also__ and not re.search("(?i)^[aâeéèêiîoôuûyœæ]", \2) and hasFemForm(\2)
    -2>> =suggFemSing(@, True)                                                                      # Accord de genre erroné : « \1 » est un déterminant féminin.
    <<- morphex(\2, ">[aâeéèêiîoôuûyœæ].+:[NAQ].*:f", ":[eGW]") -1>> =\1.replace("a", "on")         # Même si « \2 » est féminin, on utilise « mon/ton/son » pour faire la liaison.|http://fr.wikipedia.org/wiki/Euphonie
    <<- morphex(\2, ":[NAQ].*:p", ":[siGW]") -2>> =suggFemSing(@)                                   # Accord de nombre erroné : « \2 » devrait être au singulier.

TEST: {{une}} des {{chats}}
TEST: {{ma}} amour                                            ->> mon
TEST: {{ma}} obligé                                           ->> mon
TEST: {{ma}} {{parti}}                                        ->> mon|||partie
TEST: {{une}} kyste                                           ->> un
TEST: {{ma}} armure                                           ->> mon
TEST: {{Cette}} {{animal}} mort.                              ->> Cet|||animale
TEST: Ce couple va donner à la France sa très importante collection qui rejoindra le musée d’Orsay


__[i]/gn(gn_certains_accord)__
    (certains) +({w_2})  @@0,$
    <<- morphex(\2, ":[NAQ].*:f", ":[emGWP]") -1>> certaines                                        # Accord de genre erroné : « \2 » est féminin.
    <<- __also__ and hasMasForm(\2) -2>> =suggMasPlur(@, True)                                      # Accord de genre erroné : « \1 » est un déterminant masculin.
    <<- (morphex(\2, ":[NAQ].*:s", ":(?:[ipGWP]|V0)")
    and not (after("^ +(?:et|ou) ") and morph(word(2), ":[NAQ]", True, False)))
    or \1 in aREGULARPLURAL
    -2>> =suggPlur(@)                                                                               # Accord de nombre erroné : « \2 » devrait être au pluriel.
__[i]/gn(gn_certains_des_accord)__
    (certains) +des +({w_2})  @@0,$
    <<- morphex(\2, ":[NAQ].*:f", ":[emGW]") -1>> certaines                                         # Accord de genre erroné : « \2 » est féminin.
    <<- __also__ and hasMasForm(\2) -2>> =suggMasPlur(@, True)                                      # Accord de genre erroné : « \1 » est un déterminant masculin.

__[i]/gn(gn_certaines_accord)__
    (certaines) +({w_2})  @@0,$
    <<- morphex(\2, ":[NAQ].*:m", ":[efGWP]") -1>> certains                                         # Accord de genre erroné : « \2 » est masculin.
    <<- __also__ and hasFemForm(\2) -2>> =suggFemPlur(@, True)                                      # Accord de genre erroné : « \1 » est un déterminant féminin.
    <<- (morphex(\2, ":[NAQ].*:s", ":[ipGWP]")
    and not (after("^ +(?:et|ou) ") and morph(word(2), ":[NAQ]", True, False)))
    or \2 in aREGULARPLURAL
    -1>> =suggPlur(@)                                                                               # Accord de nombre erroné : « \2 » devrait être au pluriel.
__[i]/gn(gn_certaines_des_accord)__
    (certaines) +des ({w_2})  @@0,$
    <<- morphex(\2, ":[NAQ].*:m", ":[efGW]") -1>> certains                                          # Accord de genre erroné : « \2 » est masculin.
    <<- __also__ and hasFemForm(\2) -2>> =suggFemPlur(@, True)                                      # Accord de genre erroné : « \1 » est un déterminant féminin.

TEST: {{Certaines}} danse
TEST: Certains {{chien}}
TEST: {{certains}} des {{nouvelles}} sont à côté de la plaque.
TEST: {{certaines}} des hommes
TEST: Un problème rapporté par certains est l’incapacité à trouver un partenaire


## Singuliers épicènes

__<i]/gn(gn_leur_accord1)__
    , +(leur) +({w_2})  @@w,$
    <<- morph(\2, ":[NAQ].*:p") -1>> leurs                                                          # Accord de nombre erroné avec « \2 ».
    <<- __also__ -2>> =suggSing(@)                                                                  # Accord de nombre erroné : « \2 » devrait être au singulier.
__[i]/gn(gn_leur_accord2)__
    ({w_1}) +(leur) +({w_2})  @@0,w,$
    <<- morph(\3, ":[NAQ].*:p") or ( morphex(\3, ":[NAQ].*:p", ":[si]") and morphex(\1, ":[RC]|>de ", ">(?:e[tn]|ou)") and not (morph(\1, ":Rv", False) and morph(\3, ":Y", False)) )
    -2>> leurs                                                                                      # Accord de nombre erroné avec « \3 ».
    <<- __also__ -3>> =suggSing(@)                                                                  # Accord de nombre erroné : « \3 » devrait être au singulier.
__<i]/gn(gn_leur_accord3)__
    ^ *(leur) +({w_2})  @@w,$
    <<- morphex(\2, ":[NAQ].*:p", ":[siGW]") -1>> leurs                                             # Accord de nombre erroné avec « \1 ».
    <<- __also__ -2>> =suggSing(@)                                                                  # Accord de nombre erroné : « \2 » devrait être au singulier.

TEST: Tu sais, {{leur}} {{impatiences}} est notoire.
TEST: J’en ai assez de {{leur}} {{délires}}
TEST: {{Leur}} {{perceptions}} des choses m’exaspère.


__[i]/gn(gn_notre_votre_chaque_accord)__
    (?:[nv]otre|chaque) +({w_2})  @@$
    <<- morphex(\1, ":[NAQ].*:p", ":[siGW]") -1>> =suggSing(@)                                      # Accord de nombre erroné : « \1 » devrait être au singulier.

TEST: Chaque {{chiens}}.                                      ->> chien


__[i]/gn(gn_quelque_accord)__
    (quelque) +({w_2})(?! que?)  @@0,$
    <<- morphex(\2, ":[NAQ].*:p", ":[siG]") -1>> quelques                                           # Il manque un “s” à « quelque » ou « \2 » doit être au singulier.

TEST: {{Quelque}} amis


## Pluriels épicènes

__<i]/gn(gn_les_accord1)__
    , les +({w_2})  @@$
    <<- ( morph(\1, ":[NAQ].*:s") and not (after("^ +(?:et|ou) ") and morph(word(2), ":[NAQ]", True, False)) )
    or \1 in aREGULARPLURAL
    -1>> =suggPlur(@)                                                                               # Accord de nombre erroné : « \1 » devrait être au pluriel.
__[i]/gn(gn_les_accord2)__
    ({w_1}) +les +({w_2})  @@0,$
    <<- ( morph(\2, ":[NAQ].*:s")
    or (morphex(\2, ":[NAQ].*:s", ":[pi]|>avoir") and morphex(\1, ":[RC]", ">(?:e[tn]|ou) ") and not (morph(\1, ":Rv", False) and morph(\2, ":Y", False))) )
    and not (after("^ +(?:et|ou) ") and morph(word(2), ":[NAQ]", True, False))
    -2>> =suggPlur(@)                                                                               # Accord de nombre erroné : « \2 » devrait être au pluriel.
__[i]/gn(gn_les_accord3)__
    ^ *les +({w_2})  @@$
    <<- (morphex(\1, ":[NAQ].*:s", ":[ipYPGW]")
    and not (after("^ +(?:et|ou) ") and morph(word(2), ":[NAQ]", True, False)))
    or \1 in aREGULARPLURAL
    -1>> =suggPlur(@)                                                                               # Accord de nombre erroné : « \1 » devrait être au pluriel.

TEST: ils viennent, les {{petit}}
TEST: Les {{tiret}}                                           ->> tirets
TEST: Les plus {{grand}} hommes.                              ->> grands
TEST: les {{véhicule}}                                        ->> véhicules
TEST: Les {{démoralisation}}.                                 ->> démoralisations


__[i]/gn(gn_leurs_accord)__
    (leurs) +({w_2})  @@0,$
    <<- (morphex(\2, ":[NAQ].*:s", ":(?:[ipGW]|[123][sp])")
    and not (after("^ +(?:et|ou) ") and morph(word(2), ":[NAQ]", True, False)))
    or \2 in aREGULARPLURAL
    -2>> =suggPlur(@)                                                                               # Accord de nombre erroné avec « \1 » : « \2 » devrait être au pluriel.
    <<- __also__ -1>> leur                                                                          # Accord de nombre erroné avec « \2 ».

TEST: {{leurs}} {{action}}


__[i]/gn(gn_det_pluriel_accord)__
    (?:[dcmts]es|[nv]os|quelques|lesdits|aux|moult) +({w_2})  @@$
    <<- (morphex(\1, ":[NAQ].*:s", ":[ipGW]")
    and not (after("^ +(?:et|ou) ") and morph(word(2), ":[NAQ]", True, False)))
    or \1 in aREGULARPLURAL
    -1>> =suggPlur(@)                                                                               # Accord de nombre erroné : « \1 » devrait être au pluriel.
__[i]/gn(gn_plusieurs_accord)__
    plusieurs +({w_2})  @@$
    <<- (morphex(\1, ":[NAQ].*:s", ":[ipGWP]")
    and not (after("^ +(?:et|ou) ") and morph(word(2), ":[NAQ]", True, False)))
    or \1 in aREGULARPLURAL
    -1>> =suggPlur(@)                                                                               # Accord de nombre erroné : « \1 » devrait être au pluriel.

TEST: des {{pain}}                                            ->> pains
TEST: ces {{détournement}} de fonds et ces vols
TEST: Quelques {{homme}}.                                     ->> hommes
TEST: {{leur}} {{données}}                                    ->> leurs|||donnée
TEST: plusieurs {{femme}} sont venues.
TEST: une personne ou plusieurs ayant décidé de façon déterminée et coordonnée de faire cuire la grenouille


## Cas particuliers

__[i]/gn(gn_det_plur_cas_particuliers)__
    (?:[cdmts]es|[nv]os|leurs) (même|point|son|ton) @@$ <<- -1>> \1s                                # Accord de nombre erroné : mettez au pluriel.

TEST: des {{son}} que nous entendons jour et nuit.
TEST: j’entends ces {{même}} âneries tous les jours


## Pluriel des groupes

__[i]/gn(gn_nombre_de_accord)__
    nombre d(?:e +|’)({w_2})  @@$
    <<- (morphex(\1, ":[NAQ].*:s", ":[ip]|>o(?:nde|xydation|or)\\b") and morphex(word(-1), ":(?:G|[123][sp])", ":[AD]", True))
    or \1 in aREGULARPLURAL
    -1>> =suggPlur(@)                                                                               # Ici, « nombre de » devrait probablement être suivi d’un pluriel.

TEST: Je connais nombre d’{{emmerdeur}} et aucun n’est pire que lui.


__[i]/gn(gn_det_plur_groupe_de_accord)__
    (?:[ldcsmt]es|leurs|nos|vos|quelques) (?:centaine|milli(?:er|ion|iard)|d(?:ix|ouz)aine|multitude|horde)s? +d(?:e +|’)({w_2})  @@$
    <<- morphex(\1, ":[NAQ].*:s", ":[ip]") or \1 in aREGULARPLURAL
    -1>> =suggPlur(@)                                                                               # Mettre au pluriel.

TEST: des centaines de {{bête}} à cornes passèrent devant nous.


__[i]/gn(gn_det_sing_groupe_de_accord)__
    (?:une?|l[ea]|ce(?:tte|)|s(?:on|a)|m(?:on|a)|t(?:on|a)) (?:centaine|milli(?:er|ion|iard)|d(?:ix|ouz)aine|multitude|horde) d(?:e +|’)({w_2}) @@$
    <<- morphex(\1, ":[NAQ].*:s", ":[ip]") or \1 in aREGULARPLURAL
    -1>> =suggPlur(@)                                                                               # Mettre au pluriel.

TEST: une multitude d’{{homme}}                               ->> hommes


## quelque adverbe

__[i]/gn(gn_quelque_adverbe1)__
    quelques(?= \d+) <<- ->> quelque                                                                # Devant un nombre, « quelque » est un adverbe, donc invariable.
__[i]/gn(gn_quelque_adverbe2)__
    (quelques) +({w1}) @@0,$
    <<- morph(\2, ":B.*:p", False) and \2 != "cents" -1>> quelque                                   # Devant un nombre, « quelque » est un adverbe, donc invariable.

TEST: Elle a eu {{quelques}} 300 réponses à sa petite-annonce.
TEST: Il commande {{quelques}} trois cents hommes.
TEST: {{Quelques}} 120 hommes                                 ->> Quelque
TEST: {{Quelques}} deux cents hommes.                         ->> Quelque
TEST: les quelque 2,5 millions d’habitants
TEST: les quelque 12 000 stations-service



# A TRIER
TEST: dans les {{usine}}                                      ->> usines
TEST: dans {{leur}} {{usines}}                                ->> leurs|||usine|||usine
TEST: dans la {{parties}}                                     ->> partie

TEST: de {{la}} vin                                           ->> le
TEST: {{de le}} vin                                           ->> du



## Nombres

__[i]/gn(gn_nombre_lettres_accord)__
    (d(?:eux|ix|ouze)|tr(?:ois|eize)|qua(?:tre(?:-vingt(?:s|-dix)|)|torze|rante)|cinq(?:uante|)|six|sept(?:ante|)|huit(?:ante|)|onze|quinze|seize|vingt|trente|soixante(?:-dix|)|cents?|octante|nonante) +({w_2})  @@0,$
    <<- (morph(\2, ":[NAQ].*:s")
    and not re.search("(?i)^(janvier|février|mars|avril|mai|juin|juillet|ao[ûu]t|septembre|octobre|novembre|décembre|rue|route|ruelle|place|boulevard|avenue|allée|chemin|sentier|square|impasse|cour|quai|chaussée|côte|vendémiaire|brumaire|frimaire|nivôse|pluviôse|ventôse|germinal|floréal|prairial|messidor|thermidor|fructidor)$", \2))
    or \2 in aREGULARPLURAL
    -2>> =suggPlur(@)                                                                               # Accord de nombre erroné avec « \1 » : « \2 » devrait être au pluriel.

TEST: ce sont trois {{idiot}} pas foutus de trouver leur chemin avec un GPS.


__[i]/gn(gn_neuf_accord)__
    (neuf) +({w_2})  @@0,$
    <<- (morph(\2, ":[NAQ].*:s") and not morph(word(-1), ":N", False)
    and not re.search("(?i)^(janvier|février|mars|avril|mai|juin|juillet|ao[ûu]t|septembre|octobre|novembre|décembre|rue|route|ruelle|place|boulevard|avenue|allée|chemin|sentier|square|impasse|cour|quai|chaussée|côte|vendémiaire|brumaire|frimaire|nivôse|pluviôse|ventôse|germinal|floréal|prairial|messidor|thermidor|fructidor)$", \2))
    or \2 in aREGULARPLURAL
    -2>> =suggPlur(@)                                                                               # Accord de nombre erroné avec « \1 » : « \2 » devrait être au pluriel.

TEST: Il a abandonné neuf {{enfant}}.


__[i]/gn(gn_mille_accord)__
    mille +({w_2})  @@$
    <<- (morph(\1, ":[NAQ].*:s") or \1 in aREGULARPLURAL) and not before(r"(?i)\b(?:le|un|ce|du) +$")
    -1>> =suggPlur(@)                                                                               # Accord de nombre erroné avec « mille » : « \1 » devrait être au pluriel.

TEST: On peut trouver mille {{travailleur}} d’un claquement de doigts.


__[i]/gn(gn_01_accord)__
    [01] ({w_2})  @@$
    <<- morph(\1, ":[NAQ].*:p")
    and not re.search("(?i)^(janvier|février|mars|avril|mai|juin|juillet|ao[ûu]t|septembre|octobre|novembre|décembre|rue|route|ruelle|place|boulevard|avenue|allée|chemin|sentier|square|impasse|cour|quai|chaussée|côte|vendémiaire|brumaire|frimaire|nivôse|pluviôse|ventôse|germinal|floréal|prairial|messidor|thermidor|fructidor|Rois|Corinthiens|Thessaloniciens)$", \1)
    -1>> =suggSing(@)                                                                               # Accord de nombre erroné : « \1 » devrait être au singulier.

TEST: 00 heure, 01 heure
TEST: il a adopté 1 {{chiens}}.


__[i]/gn(gn_nombre_chiffres_accord)__
    (?<!/)(\d+) ({w_2})  @@0,$
    <<- not re.search("^0*[01]$", \1)
    and ((morph(\2, ":[NAQ].*:s") and not re.search("(?i)^(janvier|février|mars|avril|mai|juin|juillet|ao[ûu]t|septembre|octobre|novembre|décembre|rue|route|ruelle|place|boulevard|avenue|allée|chemin|sentier|square|impasse|cour|quai|chaussée|côte|vendémiaire|brumaire|frimaire|nivôse|pluviôse|ventôse|germinal|floréal|prairial|messidor|thermidor|fructidor)$", \2))
    or \1 in aREGULARPLURAL)
    -2>> =suggPlur(@)                                                                               # Accord de nombre erroné : « \2 » devrait être au pluriel.

TEST: 22 {{heure}}
TEST: 3 {{heure}}


## quel / quels / quelle / quelles
__[i]/gn(gn_quel_accord)__
    (quel) +({w_2})  @@0,$
    <<- morphex(\2, ":[NAQ].*:f:p", ":(?:V0e|[NAQ].*:[me]:[si])")       -1>> quelles                # Accord de genre et de nombre erroné : « \2 » est féminin et au pluriel.
    <<- __also__ and hasFemForm(\2)                                     -2>> =suggMasSing(@, True)  # Accord de genre et de nombre erroné : « \1 » est masculin et au singulier.
    <<- morphex(\2, ":[NAQ].*:m:p", ":(?:V0e|[NAQ].*:[me]:[si])")       -1>> quels                  # Accord de nombre erroné : « \2 » est au pluriel.
    <<- __also__                                                        -2>> =suggSing(@)           # Accord de nombre erroné : « \1 » est au singulier.
    <<- morphex(\2, ":[NAQ].*:f:[si]", ":(?:V0e|[NAQ].*:[me]:[si])")    -1>> quelle                 # Accord de genre erroné : « \2 » est féminin.
    <<- __also__ and hasFemForm(\2)                                     -2>> =suggMasSing(@, True)  # Accord de genre erroné : « \1 » est masculin.
__[i]/gn(gn_quels_accord)__
    (quels) +({w_2})  @@0,$
    <<- morphex(\2, ":[NAQ].*:f:s", ":(?:V0e|[NAQ].*:[me]:[pi])")       -1>> quelle                 # Accord de genre et de nombre erroné : « \2 » est féminin et au singulier.
    <<- __also__ and hasFemForm(\2)                                     -2>> =suggMasPlur(@, True)  # Accord de genre et de nombre erroné : « \1 » est masculin et au pluriel.
    <<- morphex(\2, ":[NAQ].*:m:s", ":(?:V0e|[NAQ].*:[me]:[pi])")       -1>> quel                   # Accord de nombre erroné : « \2 » est au singulier.
    <<- __also__                                                        -2>> =suggPlur(@)           # Accord de nombre erroné : « \1 » est au pluriel.
    <<- morphex(\2, ":[NAQ].*:f:[pi]", ":(?:V0e|[NAQ].*:[me]:[pi])")    -1>> quelles                # Accord de genre erroné : « \2 » est féminin.
    <<- __also__ and hasFemForm(\2)                                     -2>> =suggMasPlur(@, True)  # Accord de genre erroné : « \1 » est masculin.
__[i]/gn(gn_quelle_accord)__
    (quelle) +({w_2})  @@0,$
    <<- morphex(\2, ":[NAQ].*:m:p", ":(?:V0e|[NAQ].*:[fe]:[si])")       -1>> quels                  # Accord de genre et de nombre erroné : « \2 » est masculin et au pluriel.
    <<- __also__ and hasFemForm(\2)                                     -2>> =suggFemSing(@, True)  # Accord de genre et de nombre erroné : « \1 » est féminin et au singulier.
    <<- morphex(\2, ":[NAQ].*:f:p", ":(?:V0e|[NAQ].*:[fe]:[si])")       -1>> quelles                # Accord de nombre erroné : « \2 » est au pluriel.
    <<- __also__                                                        -2>> =suggSing(@)           # Accord de nombre erroné : « \1 » est au singulier.
    <<- morphex(\2, ":[NAQ].*:m:[si]", ":(?:V0e|[NAQ].*:[fe]:[si])")    -1>> quel                   # Accord de genre erroné : « \2 » est masculin.
    <<- __also__ and hasFemForm(\2)                                     -2>> =suggFemSing(@, True)  # Accord de genre erroné : « \1 » est féminin.
__[i]/gn(gn_quelles_accord)__
    (quelles) +({w_2})  @@0,$
    <<- morphex(\2, ":[NAQ].*:m:s", ":(?:V0e|[NAQ].*:[fe]:[pi])")       -1>> quel                   # Accord de genre et de nombre erroné. « \2 » est masculin et au singulier.
    <<- __also__ and hasFemForm(\2)                                     -2>> =suggFemPlur(@, True)  # Accord de genre et de nombre erroné : « \1 » est féminin et au pluriel.
    <<- morphex(\2, ":[NAQ].*:f:s", ":(?:V0e|[NAQ].*:[fe]:[pi])")       -1>> quelle                 # Accord de nombre erroné : « \2 » est au singulier.
    <<- __also__                                                        -2>> =suggPlur(@)           # Accord de nombre erroné : « \1 » est au pluriel.
    <<- morphex(\2, ":[NAQ].*:m:[pi]", ":(?:V0e|[NAQ].*:[fe]:[pi])")    -1>> quels                  # Accord de genre erroné : « \2 » est masculin.
    <<- __also__ and hasFemForm(\2)                                     -2>> =suggFemPlur(@, True)  # Accord de genre erroné : « \1 » est féminin.

TEST: {{Quelle}} homme.                                       ->> Quel
TEST: {{Quel}} femme.                                         ->> Quelle
TEST: {{Quels}} chanson.                                      ->> Quelle
TEST: {{Quelles}} {{tarés}}.                                  ->> Quels|||tarées
TEST: Quelle sale journée…
TEST: Quelles drôles de prunes


__[i]/gn(gn_quel_quel_accord_être)__
    (quel(?:le|)) (sont|étaient|ser(?:o|aie)nt|fu(?:r|ss)ent)  @@0,$
    <<- not before(r"\btel(?:le|)s? +$")
    -1>> \1s                                                                                        # Accord de nombre erroné avec “\2”.

__[i]/gn(gn_quels_quelles_accord_être)__
    (quel(?:le|)s) (est|étai[ts]|serai?t|f[uû][ts])  @@0,$
    <<- not before(r"\btel(?:le|)s? +$")
    -1>> =\1[:-1]                                                                                   # Accord de nombre erroné avec “\2”.

__[i]/gn(gn_quel_accord_être_sujet)__
    (quel) (?:est|était|sera(?:i[ts]|)|f[uû][ts]) (la|cette|[mts](?:a|on)|[vn]otre) +({w_2})  @@0,w,$
    <<- not before(r"\btel(?:le|)s? +$") and morphex(\3, ":[NAQ].*:f", ":[me]")
    -1>> quelle                                                                                     # Accord de genre erroné avec « \2 \3 ».

__[i]/gn(gn_quelle_accord_être_sujet)__
    (quelle) (?:est|était|sera(?:i[ts]|)|f[uû][ts]) (le|cet?|[mts]on|[vn]otre) +({w_2})  @@0,w,$
    <<- not before(r"\btel(?:le|)s? +$") and morphex(\3, ":[NAQ].*:m", ":[fe]")
    -1>> quel                                                                                       # Accord de genre erroné avec « \2 \3 ».

__[i]/gn(gn_quels_accord_être_sujet)__
    (quels) (?:sont|étaient|ser(?:o|aie)nt|fu(?:r|ss)ent) (les|ces|[mts]es|[vn]os) +({w_2})  @@0,w,$
    <<- not before(r"\btel(?:le|)s? +$") and morphex(\3, ":[NAQ].*:f", ":[me]")
    -1>> quelles                                                                                    # Accord de genre erroné avec « \2 \3 ».

__[i]/gn(gn_quelles_accord_être_sujet)__
    (quelles) (?:sont|étaient|ser(?:o|aie)nt|fu(?:r|ss)ent) (les|ces|[mts]es|[vn]os) +({w_2})  @@0,w,$
    <<- not before(r"\btel(?:le|)s? +$") and morphex(\3, ":[NAQ].*:m", ":[fe]")
    -1>> quels                                                                                      # Accord de genre erroné avec « \2 \3 ».

TEST: {{Quel}} sont ces hommes.                               ->> Quels
TEST: {{Quel}} est cette force ?                              ->> Quelle
TEST: {{Quelle}} est mon animal favori ?                      ->> Quel
TEST: {{Quels}} sont ces femmes ?                             ->> Quelles
TEST: {{Quelles}} est cette imbécillité ?                     ->> Quelle
TEST: {{Quelles}} sont ces hommes ?                           ->> Quels
TEST: Il s’agit de définir quelle est notre propre orientation.


#### Quel(le) que soit …

## masculin requis
__[i]/gn(gn_quel_que_être_mas_sing)__
    (quelle) que ([sf]\w+) +(le|cet?) +({w_2})  @@0,w,w,$
    <<- morph(\2, ":V0e", False)
    -1>> quel                                                                                       # Accord de genre avec « \3 \4 ». Utilisez le masculin.
__[i]/gn(gn_quel_que_être_mas)__
    (quelles?) que ([sf]\w+) +(ces|[mts](?:on|ses)|[nv]o(?:tre|s)|leurs?) +({w_2})  @@0,w,w,$
    <<- morph(\2, ":V0e", False) and morphex(\4, ":[NAQ].*:m", ":[fe]")
    -1>> =\1.replace("lle", "l")                                                                    # Accord de genre avec « \3 \4 ». Utilisez le masculin.

TEST: {{quelle}} que soit le chien                            ->> quel
TEST: {{Quelles}} que soient ces intérêts                     ->> Quels
TEST: {{Quelle}} que soit le truc.                            ->> Quel
TEST: {{Quelle}} que soient les astuces.                      ->> Quelles


## féminin requis
__[i]/gn(gn_quelle_que_être_fem_sing)__
    (quel) que ([sf]\w+) +(la|cette|[mts]a) +({w_2})  @@0,w,w,$
    <<- morph(\2, ":V0e", False)
    -1>> quelle                                                                                     # Accord de genre avec « \3 \4 ». Utilisez le féminin.
__[i]/gn(gn_quelle_que_être_fem)__
    (quels?) que ([sf]\w+) +(ces|[mts](?:on|ses)|[nv]o(?:tre|s)|leurs?) +({w_2})  @@0,w,w,$
    <<- morph(\2, ":V0e", False) and morphex(\4, ":[NAQ].*:f", ":[me]")
    -1>> =\1.replace("l", "lle")                                                                    # Accord de genre avec « \3 \4 ». Utilisez le féminin.

TEST: {{Quels}} que soient ces idiotes                        ->> Quelles
TEST: {{Quel}} que soit mon aversion                          ->> Quelle
TEST: {{Quel}} que soit cette femme                           ->> Quelle
TEST: {{Quels}} que soit la force appliquée.                  ->> Quel
TEST: {{Quel}} que soit la force appliquée.                   ->> Quelle


##  trouver ça/ceci/cela + adj
__[i]/gn(gn_trouver_ça_adj)__
    (trouv\w+) +(ça|ce(?:ci|la)) +({w_2})  @@0,w,$
    <<- morph(\1, ">trouver ", False) and morphex(\3, ":A.*:(?:f|m:p)", ":(?:G|3[sp]|M[12P])")
    -3>> =suggMasSing(@)                                                                            # Trouver \2 + [adjectif] : l’adjectif s’accorde avec “\2” (au masculin singulier).

TEST: ils trouvent ça de plus en plus {{idiots}}              ->> idiot


#### 2 mots

## Sans article

__[i]/gn(gn_2m_accord)__
    ^ *({w_2}) +({w_2})  @@w,$
    <<- ((morph(\1, ":[NAQ].*:m") and morph(\2, ":[NAQ].*:f")) or (morph(\1, ":[NAQ].*:f") and morph(\2, ":[NAQ].*:m"))) and not apposition(\1, \2)
    -2>> =switchGender(@)                                                                           # Accord de genre erroné avec « \1 ».
    <<- __also__ and hasFemForm(\1) -1>> =switchGender(@)                                           # Accord de genre erroné avec « \2 ».
    <<- ((morph(\1, ":[NAQ].*:s") and morph(\2, ":[NAQ].*:p")) or (morph(\1, ":[NAQ].*:p") and morph(\2, ":[NAQ].*:s"))) and not apposition(\1, \2)
    -2>> =switchPlural(@)                                                                           # Accord de nombre erroné avec « \1 ».
    <<- __also__ -1>> =switchPlural(@)                                                              # Accord de nombre erroné avec « \2 ».

TEST: {{Femmes}} {{intelligente}}.
TEST: {{Homme}} {{impatients}}.


## Prépositions

__[i]/gn(gn_2m_pfx_en)__
    en +({w_2}) +({w_2})  @@w,$
    <<- ( (morph(\1, ":[NAQ].*:m") and morph(\2, ":[NAQ].*:f")) or (morph(\1, ":[NAQ].*:f") and morph(\2, ":[NAQ].*:m")) )
    and not apposition(\1, \2) and morph(word(-1), ":[VRX]", True, True)
    -2>> =switchGender(@)                                                                           # Accord de genre erroné avec « \1 ».
    <<- __also__ and hasFemForm(\1) -1>> =switchGender(@)                                           # Accord de genre erroné avec « \2 ».
    <<- ( (morph(\1, ":[NAQ].*:p") and morph(\2, ":[NAQ].*:s")) or (morph(\1, ":[NAQ].*:s") and morph(\2, ":[NAQ].*:p")) )
    and not apposition(\1, \2) and morph(word(-1), ":[VRX]", True, True)
    -2>> =switchPlural(@)                                                                           # Accord de nombre erroné avec « \1 ».
    <<- __also__ -1>> =switchPlural(@)                                                              # Accord de nombre erroné avec « \2 ».

TEST: en homme {{courtoise}}
TEST: en {{femme}} {{cultivées}}


__[i]/gn(gn_2m_pfx_à_par_pour_sans)__
    (?:à|par|pour|sans) +({w_2}) +({w_2})  @@w,$
    <<- ( (morphex(\1, ":[NAQ].*:m", ":[GYfe]") and morph(\2, ":[NAQ].*:f")) or (morphex(\1, ":[NAQ].*:f", ":[GYme]") and morph(\2, ":[NAQ].*:m")) )
    and not apposition(\1, \2) and morph(word(-1), ":[VRX]", True, True)
    -2>> =switchGender(@)                                                                           # Accord de genre erroné avec « \1 ».
    <<- __also__ and hasFemForm(\1) -1>> =switchGender(@)                                           # Accord de genre erroné avec « \2 ».
    <<- ( (morphex(\1, ":[NAQ].*:p", ":[GYsi]") and morph(\2, ":[NAQ].*:s")) or (morphex(\1, ":[NAQ].*:s", ":[GYpi]") and morph(\2, ":[NAQ].*:p")) )
    and not apposition(\1, \2) and morph(word(-1), ":[VRX]", True, True)
    -2>> =switchPlural(@)                                                                           # Accord de nombre erroné avec « \1 ».
    <<- __also__ -1>> =switchPlural(@)                                                              # Accord de nombre erroné avec « \2 ».

TEST: à {{grande}} {{enjambées}}
TEST: pour {{belle}} {{appartement}}


__[i]/gn(gn_2m_pfx_de_sur_avec_après)__
    (?:de|sur|avec|après) +({w_2}) +({w_2})  @@w,$
    <<- ( (morphex(\1, ":[NAQ].*:m", ":(?:[Gfe]|V0e|Y)") and morph(\2, ":[NAQ].*:f")) or (morphex(\1, ":[NAQ].*:f", ":(?:[Gme]|V0e|Y)") and morph(\2, ":[NAQ].*:m")) )
    and not apposition(\1, \2) and morph(word(-1), ":[VRX]", True, True)
    -2>> =switchGender(@)                                                                           # Accord de genre erroné avec « \1 ».
    <<- __also__ and hasFemForm(\1) -1>> =switchGender(@)                                           # Accord de genre erroné avec « \2 ».
    <<- ( (morphex(\1, ":[NAQ].*:p", ":(?:[Gsi]|V0e|Y)") and morph(\2, ":[NAQ].*:s")) or (morphex(\1, ":[NAQ].*:s", ":(?:[Gpi]|V0e|Y)") and morph(\2, ":[NAQ].*:p")) )
    and not apposition(\1, \2) and morph(word(-1), ":[VRX]", True, True)
    -2>> =switchPlural(@)                                                                           # Accord de nombre erroné avec « \1 ».
    <<- __also__ -1>> =switchPlural(@)                                                              # Accord de nombre erroné avec « \2 ».

TEST: Ils ont de {{grandes}} {{oreille}}
TEST: certains hommes {{petite}}                              ->> petits|||petits
TEST: de {{grands}} {{homme}}
TEST: de {{manière}} {{légal}}
TEST: de {{petite}} {{homme}}
TEST: de {{pousse}} {{actif}}
TEST: De {{bon}} {{conseils}}
TEST: De {{mauvaises}} {{hommes}}
TEST: Ces produits sont de {{belle}} {{qualités}}.
TEST: Après être demeurée assise pendant quelque temps, elle se leva
TEST: ils choisissent de devenir indépendants


## l’

__[i]/gn(gn_2m_l)__
    (?<!et |ou |de )l’({w_2}) +({w_2})  @@2,$
    <<- not re.search("(?i)^air$", \1) and not \2.startswith("seul")
    and ( (morph(\1, ":m") and morph(\2, ":[NAQ].*:f")) or (morph(\1, ":f") and morph(\2, ":[NAQ].*:m")) )
    and not apposition(\1, \2) and not before(r"\b(?:et|ou|de) +$")
    -2>> =switchGender(@, False)                                                                    # Accord de genre erroné entre « \1 » et « \2 ».
    <<- __also__ and hasFemForm(\1) -1>> =switchGender(@)                                           # Accord de genre erroné avec « \2 ».
    <<- not re.search("(?i)^air$", \1) and not \2.startswith("seul")
    and morph(\1, ":[si]") and morph(\2, ":[NAQ].*:p")
    and not apposition(\1, \2) and not before(r"\b(?:et|ou|de) +$")
    -2>> =suggSing(@)                                                                               # Accord de nombre erroné avec « \1 » : « \2 » devrait être au singulier.
__[i]/gn(gn_2m_l_après_et_ou_de)__
    (?:et|ou|de) +l’({w_2}) +({w_2})  @@w,$
    <<- not \2.startswith("seul")
    and ( (morph(\1, ":m") and morph(\2, ":[NAQ].*:f")) or (morph(\1, ":f") and morph(\2, ":[NAQ].*:m")) )
    and not apposition(\1, \2) and not morph(word(-1), ":[NAQ]", False, False)
    -2>> =switchGender(@, False)                                                                    # Accord de genre erroné entre « \1 » et « \2 ».
    <<- __also__ and hasFemForm(\1) -1>> =switchGender(@)                                           # Accord de genre erroné avec « \2 ».
    <<- not re.search("(?i)^air$", \1) and not \2.startswith("seul")
    and morph(\1, ":[si]") and morph(\2, ":[NAQ].*:p")
    and not apposition(\1, \2) and not morph(word(-1), ":[NAQ]", False, False)
    -2>> =suggSing(@)                                                                               # Accord de nombre erroné avec « \1 » : « \2 » devrait être au singulier.
    
TEST: L’amande {{amer}}
TEST: l’{{amicale}} {{animal}}
TEST: du chien et de l’{{excellente}} {{collier}} qu’il avait autour du cou.
TEST: du chien et de l’{{étonnante}} {{collier}} qu’il avait autour du cou.


## un / une

__[i]/gn(gn_2m_un)__
    (?<!et |ou | d’)un +({w_2}) +({w_2})  @@w,$
    <<- not \2.startswith("seul")
    and morphex(\1, ":[NAQ].*:[me]", ":(?:B|G|V0|f)") and morph(\2, ":[NAQ].*:f")
    and not apposition(\1, \2) and not before(r"\b(?:et|ou|de) +$")
    -2>> =suggMasSing(@, True)                                                                      # Accord de genre erroné : « \1 » est masculin, « \2 » est féminin.
    <<- morph(\1, ":[NAQ].*:[si]", False) and morph(\2, ":[NAQ].*:p") and not \2.startswith("seul")
    and not apposition(\1, \2) and not before(r"\b(?:et|ou|d’) *$")
    -2>> =suggMasSing(@)                                                                            # Accord de nombre erroné avec « \1 » : « \2 » devrait être au singulier.
__[i]/gn(gn_2m_un_après_et_ou_de)__
    (?:et +|ou +|d’)un +({w_2}) +({w_2})  @@w,$
    <<- not \2.startswith("seul")
    and morphex(\1, ":[NAQ].*:[me]", ":(?:B|G|V0|f)") and morph(\2, ":[NAQ].*:f")
    and not apposition(\1, \2)
    and not morph(word(-1), ":[NAQ]|>(?:et|ou) ", False, False)
    -2>> =suggMasSing(@, True)                                                                      # Accord de genre erroné : « \1 » est masculin, « \2 » est féminin.
    <<- morph(\1, ":[NAQ].*:[si]", False) and morph(\2, ":[NAQ].*:p") and not \2.startswith("seul")
    and not apposition(\1, \2)
    and not morph(word(-1), ":[NAQB]|>(?:et|ou) ", False, False)
    -2>> =suggMasSing(@)                                                                            # Accord de nombre erroné avec « \1 » : « \2 » devrait être au singulier.

TEST: un exercice pas très {{utiles}}.                        ->> utile
TEST: un homme {{grands}}                                     ->> grand
TEST: un homme {{futiles}}                                    ->> futile
TEST: Une femme {{laconiques}}.                               ->> laconique
TEST: je me souviens d’un homme {{arrogants}}
TEST: C’est pas les quelques vues sur Linux qui vont rattraper un scénario {{bancale}}.


__[i]/gn(gn_2m_une)__
    (?<!et |ou | d’)une +({w_2}) +({w_2})  @@w,$
    <<- not \2.startswith("seul")
    and morphex(\1, ":[NAQ].*:[fe]", ":(?:B|G|V0|m)") and morph(\2, ":[NAQ].*:m")
    and not apposition(\1, \2) and not before(r"\b(?:et|ou|de) +$")
    -2>> =suggFemSing(@, True)                                                                      # Accord de genre erroné : « \1 » est féminin, « \2 » est masculin.
    <<- \1 != "fois" and morph(\1, ":[NAQ].*:[si]", False) and morph(\2, ":[NAQ].*:p") and not \2.startswith("seul")
    and not apposition(\1, \2) and not before(r"\b(?:et|ou|d’) *$")
    -2>> =suggFemSing(@)                                                                            # Accord de nombre erroné avec « \1 » : « \2 » devrait être au singulier.
__[i]/gn(gn_2m_une_après_et_ou_de)__
    (?:et +|ou +|d’)une +({w_2}) +({w_2})  @@w,$
    <<- not \2.startswith("seul")
    and morphex(\1, ":[NAQ].*:[fe]", ":(?:B|G|V0|m)") and morph(\2, ":[NAQ].*:m")
    and not apposition(\1, \2)
    and not morph(word(-1), ":[NAQ]|>(?:et|ou) ", False, False)
    -2>> =suggFemSing(@, True)                                                                      # Accord de genre erroné : « \1 » est féminin, « \2 » est masculin.
    <<- \1 != "fois" and morph(\1, ":[NAQ].*:[si]", False) and morph(\2, ":[NAQ].*:p") and not \2.startswith("seul")
    and not apposition(\1, \2)
    and not morph(word(-1), ":[NAQB]|>(?:et|ou) ", False, False)
    -2>> =suggFemSing(@)                                                                            # Accord de nombre erroné avec « \1 » : « \2 » devrait être au singulier.

TEST: Une grande {{homme}}.
TEST: une géologue {{intelligents}}                           ->> intelligente|||intelligente
TEST: Et une femme {{déterminées}}
TEST: on parle là d’une femme {{inconnu}}
TEST: L’or allume le feu d’une cupidité d’une couleur et d’une sorte différentes.


## articles divers

__[i]/gn(gn_2m_det_mas_sing)__
    (?<!et |ou |de )(?:le|cet?|quel|au|ledit) +({w_2}) +({w_2})  @@w,$
    <<- not \2.startswith("seul")
    and morphex(\1, ":[NAQ].*:[me]", ":(?:B|G|V0|f)") and morph(\2, ":[NAQ].*:f")
    and not apposition(\1, \2) and not before(r"\b(?:et|ou|de) +$")
    -2>> =suggMasSing(@, True)                                                                      # Accord de genre erroné : « \1 » est masculin, « \2 » est féminin.
    <<- not \2.startswith("seul") 
    and morph(\1, ":[NAQ].*:[si]", False) and morphex(\2, ":[NAQ].*:p", ":[GWsi]")
    and not apposition(\1, \2) and not before(r"\b(?:et|ou|de) +$")
    -2>> =suggMasSing(@)                                                                            # Accord de nombre erroné avec « \1 » : « \2 » devrait être au singulier.
__[i]/gn(gn_2m_det_mas_sing_après_et_ou_de)__
    (?:et|ou|de) +(?:le|cet?|quel|au|ledit) +({w_2}) +({w_2})  @@w,$
    <<- not \2.startswith("seul")
    and morphex(\1, ":[NAQ].*:[me]", ":(?:B|G|V0|f)") and morph(\2, ":[NAQ].*:f")
    and not apposition(\1, \2) and not morph(word(-1), ":[NAQ]|>(?:et|ou) ", False, False)
    -2>> =suggMasSing(@, True)                                                                      # Accord de genre erroné : « \1 » est masculin, « \2 » est féminin.
    <<- not \2.startswith("seul")
    and morph(\1, ":[NAQ].*:[si]", False) and morphex(\2, ":[NAQ].*:p", ":[GWsi]")
    and not apposition(\1, \2) and not morph(word(-1), ":[NAQ]|>(?:et|ou) ", False, False)
    -2>> =suggMasSing(@)                                                                            # Accord de nombre erroné avec « \1 » : « \2 » devrait être au singulier.    

TEST: cet outil {{terribles}} qu’il a dans les mains
TEST: J’aimerais connaître de quel parti {{gauchistes}} on parle.


__[i]/gn(gn_2m_mon_ton_son)__
    (?<!et |ou |de )[mts]on +({w_2}) +({w_2})  @@w,$
    <<- not \2.startswith("seul")
    and morphex(\1, ":[NAQ].*:m", ":(?:B|G|e|V0|f)") and morph(\2, ":[NAQ].*:f")
    and not apposition(\1, \2) and not before(r"\b(?:et|ou|de) +$")
    -2>> =suggMasSing(@, True)                                                                      # Accord de genre erroné : « \1 » est masculin, « \2 » est féminin.
    <<- not \2.startswith("seul") 
    and morph(\1, ":[NAQ].*:[si]", False) and morphex(\2, ":[NAQ].*:p", ":[GWsi]")
    and not apposition(\1, \2) and not before(r"\b(?:et|ou|de) +$")
    -2>> =suggMasSing(@)                                                                            # Accord de nombre erroné avec « \1 » : « \2 » devrait être au singulier.
__[i]/gn(gn_2m_mon_ton_son_après_et_ou_de)__
    (?:et|ou|de) +[mts]on +({w_2}) +({w_2})  @@w,$
    <<- not \2.startswith("seul")
    and morphex(\1, ":[NAQ].*:m", ":(?:B|G|e|V0|f)") and morph(\2, ":[NAQ].*:f")
    and not apposition(\1, \2) and not morph(word(-1), ":[NAQ]|>(?:et|ou) ", False, False)
    -2>> =suggMasSing(@, True)                                                                      # Accord de genre erroné : « \1 » est masculin, « \2 » est féminin.
    <<- not \2.startswith("seul")
    and morph(\1, ":[NAQ].*:[si]", False) and morphex(\2, ":[NAQ].*:p", ":[GWsi]")
    and not apposition(\1, \2)
    and not morph(word(-1), ":[NAQ]|>(?:et|ou) ", False, False)
    -2>> =suggMasSing(@)                                                                            # Accord de nombre erroné avec « \1 » : « \2 » devrait être au singulier.    

TEST: il brandissait avec fougue son drapeau {{déchirés}}
TEST: comment osez-vous médire de mon héritage {{glorieuse}}


__[i]/gn(gn_2m_det_fem_sing)__
    (?<!et |ou |de )(?:la|[mts]a|cette|quelle|ladite) +({w_2}) +({w_2})  @@w,$
    <<- \1 != "fois" and not \2.startswith("seul")
    and morphex(\1, ":[NAQ].*:[fe]", ":(?:B|G|V0|m)") and morph(\2, ":[NAQ].*:m")
    and not apposition(\1, \2) and not before(r"\b(?:et|ou|de) +$")
    -2>> =suggFemSing(@, True)                                                                      # Accord de genre erroné : « \1 » est féminin, « \2 » est masculin.
    <<- not \2.startswith("seul") 
    and morph(\1, ":[NAQ].*:[si]", False) and morphex(\2, ":[NAQ].*:p", ":[GWsi]")
    and not apposition(\1, \2) and not before(r"\b(?:et|ou|de) +$")
    -2>> =suggFemSing(@)                                                                            # Accord de nombre erroné avec « \1 » : « \2 » devrait être au singulier.
__[i]/gn(gn_2m_det_fem_sing_après_et_ou_de)__
    (?:et|ou|de) +(?:la|[mts]a|cette|quelle|ladite) +({w_2}) +({w_2})  @@w,$
    <<- \1 != "fois" and not \2.startswith("seul")
    and morphex(\1, ":[NAQ].*:[fe]", ":(?:B|G|V0|m)") and morph(\2, ":[NAQ].*:m")
    and not apposition(\1, \2) and not morph(word(-1), ":[NAQ]|>(?:et|ou) ", False, False)
    -2>> =suggFemSing(@, True)                                                                      # Accord de genre erroné : « \1 » est féminin, « \2 » est masculin.
    <<- not \2.startswith("seul")
    and morph(\1, ":[NAQ].*:[si]", False) and morphex(\2, ":[NAQ].*:p", ":[GWsi]")
    and not apposition(\1, \2) and not morph(word(-1), ":[NAQ]|>(?:et|ou) ", False, False)
    -2>> =suggFemSing(@)                                                                            # Accord de nombre erroné avec « \1 » : « \2 » devrait être au singulier.    

TEST: La plus grande {{cinglé}}.
TEST: quelle belle {{étourdi}}, cette gamine
TEST: Peut-on imaginer de plus {{beaux}} {{enfant}} ?
TEST: il imaginait de la pluie {{noir}} tombant sur une terre dévastée.


__[i]/gn(gn_2m_det_epi_sing)__
    (?<!et |ou |de )(?:leur|chaque|quelque|[nv]otre) +({w_2}) +({w_2})  @@w,$
    <<- \1 != "fois" and not \2.startswith("seul") and not re.search("(?i)^quelque chose", \0)
    and ((morphex(\1, ":[NAQ].*:m", ":(?:B|e|G|V0|f)") and morph(\2, ":[NAQ].*:f")) or (morphex(\1, ":[NAQ].*:f", ":(?:B|e|G|V0|m)") and morph(\2, ":[NAQ].*:m")))
    and not apposition(\1, \2) and not before(r"\b(?:et|ou|de) +$")
    -2>> =switchGender(@, False)                                                                    # Accord de genre erroné entre « \1 » et « \2 ».
    <<- __also__ and hasFemForm(\1) -1>> =switchGender(@, False)                                    # Accord de genre erroné avec « \2 ».
    <<- not \2.startswith("seul")
    and morph(\1, ":[NAQ].*:[si]", False) and morphex(\2, ":[NAQ].*:p", ":[GWsi]")
    and not apposition(\1, \2) and not before(r"\b(?:et|ou|de) +$")
    -2>> =suggSing(@)                                                                               # Accord de nombre erroné avec « \1 » : « \2 » devrait être au singulier.
__[i]/gn(gn_2m_det_epi_sing_après_et_ou_de)__
    (?:et|ou|de) +(?:leur|chaque|quelque|[nv]otre) +({w_2}) +({w_2})  @@w,$
    <<- \1 != "fois" and not \2.startswith("seul") and not re.search("(?i)quelque chose", \0)
    and ((morphex(\1, ":[NAQ].*:m", ":(?:B|e|G|V0|f)") and morph(\2, ":[NAQ].*:f")) or (morphex(\1, ":[NAQ].*:f", ":(?:B|e|G|V0|m)") and morph(\2, ":[NAQ].*:m")))
    and not apposition(\1, \2)
    and not morph(word(-1), ":[NAQ]|>(?:et|ou) ", False, False)
    -2>> =switchGender(@, False)                                                                    # Accord de genre erroné entre « \1 » et « \2 ».
    <<- __also__ and hasFemForm(\1) -1>> =switchGender(@, False)                                    # Accord de genre erroné avec « \2 ».
    <<- not \2.startswith("seul")
    and morph(\1, ":[NAQ].*:[si]", False) and morphex(\2, ":[NAQ].*:p", ":[GWsi]")
    and not apposition(\1, \2) and not morph(word(-1), ":[NAQ]|>(?:et|ou) ", False, False)
    -2>> =suggSing(@)                                                                               # Accord de nombre erroné avec « \1 » : « \2 » devrait être au singulier.

TEST: chaque élément {{terrestres}}
TEST: je me souviens de leur verve {{décalé}}


__[i]/gn(gn_2m_det_mas_plur)__
    (?<!et |ou |de )(?:certains|quels|lesdits) +({w_2}) +({w_2})  @@w,$
    <<- not \2.startswith("seul")
    and morphex(\1, ":[NAQ].*:[me]", ":(?:B|G|V0|f)") and morph(\2, ":[NAQ].*:f")
    and not apposition(\1, \2) and not before(r"\b(?:et|ou|de) +$")
    -2>> =suggMasPlur(@, True)                                                                      # Accord de genre erroné : « \1 » est masculin, « \2 » est féminin.
    <<- not \2.startswith("seul")
    and morph(\1, ":[NAQ].*:[pi]", False) and morph(\2, ":[NAQ].*:s")
    and not apposition(\1, \2) and not after_chk1(r"^ +et +(\w[\w-]+)", ":A")
    and not before(r"(?i)\bune de ")
    -2>> =suggMasPlur(@)                                                                            # Accord de nombre erroné avec « \1 » : « \2 » devrait être au pluriel.
__[i]/gn(gn_2m_det_mas_plur_après_et_ou_de)__
    (?:et|ou|de) +(?:certains|quels|lesdits) +({w_2}) +({w_2})  @@w,$
    <<- not \2.startswith("seul")
    and morphex(\1, ":[NAQ].*:[me]", ":(?:B|G|V0|f)") and morph(\2, ":[NAQ].*:f")
    and not apposition(\1, \2)
    and not morph(word(-1), ":[NAQ]|>(?:et|ou) ", False, False)
    -2>> =suggMasPlur(@, True)                                                                      # Accord de genre erroné : « \1 » est masculin, « \2 » est féminin.
    <<- not \2.startswith("seul")
    and morph(\1, ":[NAQ].*:[pi]", False) and morph(\2, ":[NAQ].*:s")
    and not apposition(\1, \2) and not after_chk1(r"^ +et +(\w[\w-]+)", ":A")
    and not ( before(r"(?i)\bune? de ") or (\0.startswith("de") and before(r"(?i)\bune? +$")) )
    -2>> =suggMasPlur(@)                                                                            # Accord de nombre erroné avec « \1 » : « \2 » devrait être au pluriel.

TEST: certains claviers {{dégueulasse}}
TEST: elle se rappelle de quels rapports {{désastreuses}} il s’agit.


__[i]/gn(gn_2m_det_fem_plur)__
    (?<!et |ou |de )(?:certaines|quelles|lesdites) +({w_2}) +({w_2})  @@w,$
    <<- \1 != "fois" and not \2.startswith("seul")
    and morphex(\1, ":[NAQ].*:[fe]", ":(?:B|G|V0|m)") and morph(\2, ":[NAQ].*:m")
    and not apposition(\1, \2) and not before(r"\b(?:et|ou|de) +$")
    -2>> =suggFemPlur(@, True)                                                                      # Accord de genre erroné : « \1 » est féminin, « \2 » est masculin.
    <<- not \2.startswith("seul")
    and morph(\1, ":[NAQ].*:[pi]", False) and morph(\2, ":[NAQ].*:s")
    and not apposition(\1, \2) and not after_chk1(r"^ +et +(\w[\w-]+)", ":A")
    and not before(r"(?i)\bune de ")
    -2>> =suggFemPlur(@)                                                                            # Accord de nombre erroné avec « \1 » : « \2 » devrait être au pluriel.
__[i]/gn(gn_2m_det_fem_plur_après_et_ou_de)__
    (?:et|ou|de) +(?:certaines|quelles|lesdites) +({w_2}) +({w_2})  @@w,$
    <<- \1 != "fois" and not \2.startswith("seul")
    and morphex(\1, ":[NAQ].*:[fe]", ":(?:B|G|V0|m)") and morph(\2, ":[NAQ].*:m")
    and not apposition(\1, \2)
    and not morph(word(-1), ":[NAQ]|>(?:et|ou) ", False, False)
    -2>> =suggFemPlur(@, True)                                                                      # Accord de genre erroné : « \1 » est féminin, « \2 » est masculin.
    <<- not \2.startswith("seul")
    and morph(\1, ":[NAQ].*:[pi]", False) and morph(\2, ":[NAQ].*:s")
    and not apposition(\1, \2) and not after_chk1(r"^ +et +(\w[\w-]+)", ":A")
    and not ( before(r"(?i)\bune? de ") or (\0.startswith("de") and before(r"(?i)\bune? +$")) )
    -2>> =suggFemPlur(@)                                                                            # Accord de nombre erroné avec « \1 » : « \2 » devrait être au pluriel.

TEST: certaines idioties {{stupide}}
TEST: je ne sais guère de quelles âneries {{proférés}} on parle.


__[i]/gn(gn_2m_det_epi_plur)__
    (?<!et |ou |de )(?:[lcmts]es|[nv]os|leurs|quelques|plusieurs|aux|moult) +({w_2}) +({w_2})  @@w,$
    <<- \1 != "fois" and not \2.startswith("seul")
    and ((morphex(\1, ":[NAQ].*:m", ":(?:B|e|G|V0|f)") and morph(\2, ":[NAQ].*:f")) or (morphex(\1, ":[NAQ].*:f", ":(?:B|e|G|V0|m)") and morph(\2, ":[NAQ].*:m")))
    and not apposition(\1, \2) and not before(r"\b(?:et|ou|de) +$")
    -2>> =switchGender(@, True)                                                                     # Accord de genre erroné entre « \1 » et « \2 ».
    <<- __also__ and hasFemForm(\1) -1>> =switchGender(@, True)                                     # Accord de genre erroné avec « \2 ».
    <<- \1 != "fois" and not \2.startswith("seul")
    and morph(\1, ":[NAQ].*:[pi]", False) and morph(\2, ":[NAQ].*:s")
    and not apposition(\1, \2) and not after_chk1(r"^ +et +(\w[\w-]+)", ":A")
    and not before(r"(?i)\bune? de ")
    -2>> =suggPlur(@)                                                                               # Accord de nombre erroné avec « \1 » : « \2 » devrait être au pluriel.
__[i]/gn(gn_2m_det_epi_plur_après_et_ou_de)__
    (?:et|ou|de) +(?:[lcmts]es|[nv]os|leurs|quelques|plusieurs|aux|moult) +({w_2}) +({w_2})  @@w,$
    <<- \1 != "fois" and not \2.startswith("seul")
    and ((morphex(\1, ":[NAQ].*:m", ":(?:B|e|G|V0|f)") and morph(\2, ":[NAQ].*:f")) or (morphex(\1, ":[NAQ].*:f", ":(?:B|e|G|V0|m)") and morph(\2, ":[NAQ].*:m")))
    and not apposition(\1, \2)
    and not morph(word(-1), ":[NAQ]|>(?:et|ou) ", False, False)
    -2>> =switchGender(@, True)                                                                     # Accord de genre erroné entre « \1 » et « \2 ».
    <<- __also__ and hasFemForm(\1) -1>> =switchGender(@, True)                                     # Accord de genre erroné avec « \2 ».
    <<- \1 != "fois" and not \2.startswith("seul")
    and morph(\1, ":[NAQ].*:[pi]", False) and morph(\2, ":[NAQ].*:s")
    and not apposition(\1, \2) and not after_chk1(r"^ +et +(\w[\w-]+)", ":A")
    and not ( before(r"(?i)\bune? de ") or (\0.startswith("de") and before(r"(?i)\bune? +$")) )
    -2>> =suggPlur(@)                                                                               # Accord de nombre erroné avec « \1 » : « \2 » devrait être au pluriel.

TEST: ces {{beaux}} {{institutions}}
TEST: de vos défauts {{terrible}}, je connais presque tout.
TEST: Les éléments caractéristiques liés à ses valeurs historique et architecturale


## des

__[i]/gn(gn_2m_des)__
    des +({w_2}) +({w_2})  @@w,$
    <<- \1 != "fois" and not \2.startswith("seul")
    and ( (morphex(\1, ":[NAQ].*:m", ":[fe]") and morph(\2, ":[NAQ].*:f")) or (morphex(\1, ":[NAQ].*:f", ":[me]") and morph(\2, ":[NAQ].*:m")) )
    and not apposition(\1, \2) and morph(word(-1), ":[VRBX]|>comme ", True, True)
    -2>> =switchGender(@, True)                                                                     # Accord de genre erroné avec « \1 ».
    <<- __also__ and hasFemForm(\1) -1>> =switchGender(@)                                           # Accord de genre erroné avec « \2 ».
    <<- morph(\1, ":[NAQ].*:[pi]", False) and morph(\2, ":[NAQ].*:s")
    and not apposition(\1, \2) and (morphex(\2, ":N", ":[AQ]") or morph(word(-1), ":[VRBX]|>comme ", True, True))
    -2>> =suggPlur(@)                                                                               # Accord de nombre erroné avec « \1 » : « \2 » devrait être au pluriel.

TEST: faire table rase des passions {{inutile}}               ->> inutiles
TEST: à bonne distance des {{chiens}} {{méchante}}
TEST: des hommes {{attaquée}}                                 ->> attaqués|||attaquées
TEST: des femmes {{agressé}}                                  ->> agressées|||agressés
TEST: des hommes très mal {{renseigné}}                       ->> renseignés
TEST: des dépenses non {{nécessaire}}                         ->> nécessaires
TEST: Des règles pas du tout {{claire}}.                      ->> claires
TEST: Des peines à peine {{croyable}}.                        ->> croyables



#### 3 mots

## nombre

__[i]/gn(gn_3m)__
    ^ *({w_2}) +({w_2}) +({w_3})  @@w,w,$
    <<- (morph(\1, ":[NAQ].*:p") and morph(\2, ":[NAQ].*:[pi]") and morph(\3, ":[NAQ].*:s"))
    or (morph(\1, ":[NAQ].*:s") and morph(\2, ":[NAQ].*:[si]") and morph(\3, ":[NAQ].*:p"))
    -3>> =switchPlural(@)                                                   # Accord de nombre erroné avec « \1 \2 » : « \3 » devrait être au pluriel.

TEST: Grande manifestation {{réprimées}} dans le sang.


__[i]/gn(gn_3m_les)__
    les +({w_2}) +({w_2}) +({w_3})  @@w,w,$
    <<- morph(\1, ":[NAQ].*:[pi]") and morph(\2, ":[NAQ].*:[pi]") and morph(\3, ":[NAQ].*:s")
    -3>> =suggPlur(@)                                                       # Accord de nombre erroné avec « \1 \2 » : « \3 » devrait être au pluriel.

TEST: les heureux imbéciles {{payé}} au lance-pierre.


__[i]/gn(gn_3m_det_sing)__
    ^ *(l(?:e(?:ur|dit|)|a(?:dite|))|une?|ce(?:t|tte|)|[mts](?:on|a)|[nv]otre|au|quel(?:le|)) +({w_2}) +({w_2}) +({w_3})  @@w,w,w,$
    <<- morph(\2, ":[NAQ].*:[si]", False) and morphex(\3, ":[NAQ].*:[si]", ":G") and morph(\4, ":[NAQ].*:p")
    -4>> =suggSing(@)                                                       # Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au singulier.

TEST: un gros connard {{pathétiques}}
TEST: le jour venu prises par surprise elles durent s’enfuir.


__[i]/gn(gn_3m_det_plur)__
    ([cmts]es|[nv]os|leurs|quel(?:que|le|)s|plusieurs|certaine?s|lesdite?s|aux|moult) +({w_2}) +({w_2}) +({w_3})  @@0,w,w,$
    <<- morph(\2, ":[NAQ].*:[pi]", False) and morphex(\3, ":[NAQ].*:[pi]", ":G") and morph(\4, ":[NAQ].*:s")
    and not before(r"(?i)\bune? de ")
    -4>> =suggPlur(@)                                                       # Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au pluriel.

TEST: ces petites sottes {{déjantée}}



#### Accords avec de / des / du

__[i]/gn(gn_devinette1)__
    (?:[lmts]a|une|cette) +{w_2} +d(?:e (?:[lmts]a|cette)|’une) +(?!des )({w_2}) +({w_2})  @@w,$
    <<- morphex(\2, ":[NAQ].*:(?:m|f:p)", ":(?:G|P|[fe]:[is]|V0|3[sp])") and not apposition(\1, \2)
    -2>> =suggFemSing(@, True)                                                              # Accord erroné : « \2 » devrait être au féminin singulier.

__[i]/gn(gn_devinette2)__
    (?:le|un|cet?) +{w_2} +d(?:e cet?|u|’un) +(?!des )({w_2}) +({w_2})  @@w,$
    <<- morphex(\2, ":[NAQ].*:(?:f|m:p)", ":(?:G|P|[me]:[is]|V0|3[sp])") and not apposition(\1, \2)
    -2>> =suggMasSing(@, True)                                                              # Accord erroné : « \2 » devrait être au masculin singulier.

__[i]/gn(gn_devinette3)__
    (?:le|un|cet?) +{w_2} +de [mts]on +({w_2}) +({w_2})  @@w,$
    <<- not morph(\1, ":[NAQ].*:f|>[aéeiou].*:e", False) and morphex(\2, ":[NAQ].*:(?:f|m:p)", ":(?:G|P|m:[is]|V0|3[sp])") and not apposition(\1, \2)
    -2>> =suggMasSing(@, True)                                                              # Accord erroné : « \2 » devrait être au masculin singulier.

__[i]/gn(gn_devinette4)__
    [mts]on +({w_2}) +d(?:e cet?|u|’un) +(?!des )({w_2}) +({w_2})  @@w,w,$
    <<- morphex(\1, ":[NAQ].*:m", ":G|>[aéeiou].*:[ef]")
    and morphex(\3, ":[NAQ].*:(?:f|m:p)", ":(?:G|P|[me]:[is]|V0|3[sp])") and not apposition(\2, \3)
    -3>> =suggMasSing(@, True)                                                              # Accord erroné : « \3 » devrait être au masculin singulier.

__[i]/gn(gn_devinette5)__
    [mts]on +({w_2}) +de [mts]on +({w_2}) +({w_2})  @@w,w,$
    <<- morphex(\1, ":[NAQ].*:m", ":G|>[aéeiou].*:[ef]")
    and not morph(\2, ":[NAQ].*:f|>[aéeiou].*:e", False) and morphex(\3, ":[NAQ].*:(?:f|m:p)", ":(?:G|P|[me]:[is]|V0|3[sp])") and not apposition(\2, \3)
    -3>> =suggMasSing(@, True)                                                              # Accord erroné : « \3 » devrait être au masculin singulier.

__[i]/gn(gn_devinette6)__
    (?:[lmtsc]es|[nv]os|leurs|quelques) +{w_2} +de(?: (?:[mtsc]es|[nv]os|leurs)|s) +({w_2}) +({w_2})  @@w,$
    <<- morphex(\2, ":[NAQ].*:s", ":(?:G|P|[me]:[ip]|V0|3[sp])") and not apposition(\1, \2)
    -2>> =suggPlur(@)                                                                       # Accord erroné : « \2 » devrait être au pluriel.

#__[i]/gn__  (?:l[ea]|une?|ce(?:tte|t|)|[mts](?:on|a)|[nv]otre|leur) +{w_2} +d(?:e(?: (?:la|ce(?:tte|t|)|[mts](?:on|a)|[nv]otre|leur) +|’une? +|)|u +)({w_2}) +({w_2})  @@w,$
#    <<- morphex(\2, ":[NAQ].*:p", ":(?:G|P|[is]|V0|3[sp])") and not apposition(\1, \2)
#    -2>> =suggSing(@)                                                                       # Accord erroné : « \2 » devrait être au pluriel.

TEST: La fille de cette belle {{inconnu}}                       ->> inconnue
TEST: Le chien du voisin {{mourante}}                           ->> mourant
TEST: Un chien de ce voisin {{amicale}}                         ->> amical
TEST: Les hommes des mines {{voisin}}                           ->> voisins
TEST: mon amour du chocolat {{immodérée}}                       ->> immodéré
TEST: ton amour de son verbe {{enthousiasmante}}                ->> enthousiasmant
TEST: Cet homme de mon groupe {{oubliés}}                       ->> oublié
TEST: Lutter contre le chômage de masse avec les armes des travailleurs reste pour nous une priorité.


## divers
__[i]/gn(gn_de_telle_sorte)__
    de tel(?:s? sorte(?:s|nt|)|les sorte(?:s|nt|)|le sorte(?:s|nt))
    <<- ->> de telle sorte                                                                          # Accord erroné.

TEST: {{de telles sorte}}



############################## SINGULIERS & PLURIELS ##############################

#### Prépositions

# Similaires à prépositions : http://www.synapse-fr.com/manuels/PP_ATTENDU.htm
# attendu, compris, non-compris, y compris, entendu, excepté, ôté, ouï, passé, supposé, vu
# ! problème avec l’ouïe, ouï retiré de la liste
__<i]/sgpl(sgpl_prep_compris_det)__
    ^ *((Compris|Non[- ]compris)es?) +(?:l(?:es?|a)|ce(?:te|t|s|)|leurs?|[mts](?:on|a|es)|[nv]os)  @@0,0
    <<- -1>> \2                                                                                     # Considéré comme préposition, invariable.
__<i]/sgpl(sgpl_prep_entendu_det)__
    ^ *((Entendu|Excepté|Ôté|Supposé|Passé)(?:es?|s)) +(?:l(?:es?|a)|ce(?:te|t|s|)|leurs?|[mts](?:on|a|es)|[nv]os)  @@0,0
    <<- -1>> \2                                                                                     # Considéré comme préposition, invariable.
__[i]/sgpl(sgpl_prep_attendu_que)__
    (attendu(?:es?|s)) que? @@0                         <<- not word(-1) -1>> attendu               # Considéré comme préposition, invariable.
__[i]/sgpl(sgpl_prep_étant_donné)__
    étant donné(?:es?|s)                                <<- not word(-1) ->> étant donné            # Considéré comme préposition, invariable.
__[i]/sgpl(sgpl_prep_vu_det)__
    (vu(?:es?|s)) (?:[lc]es?|la|cette|leurs?|que?) @@0  <<- not word(-1) -1>> vu                    # Considéré comme préposition, invariable.

TEST: {{comprises}} mes prestations sur place
TEST: {{Exceptés}} les petits, tous sont tombes malades.
TEST: {{Attendues}} qu’on n’en sait rien, impossible de tirer des conclusions définitives.
TEST: Il viendra, {{étant donnée}} son addiction…
TEST: {{Vues}} les idioties qu’on entend, normal qu’on perde la tête.
TEST: {{Passées}} les premières heures du jour…


#### Nombres cardinaux

# vingt
__[i]/sgpl(sgpl_vingt)__
    vingts <<- not before(r"(?i)\bquatre $") ->> vingt                                              # “Vingt” ne prend la marque du pluriel que dans “quatre-vingts”.
__[i]/sgpl(sgpl_quatre_vingt)__
    quatre[- ]vingt
    <<- not morph(word(1), ":B", False) and not before(r"(?i)\b(?:numéro|page|chapitre|référence|année|test|série)s? +$")
    ->> quatre-vingts                                                                               # Mettre « vingt » au pluriel, excepté s’il s’agit d’une référence (page, chapitre, année…).
__[i]/sgpl(sgpl_quatre_vingt_x)__
    quatre-(vingts)-(?:deux|trois|quatre|cinq|six|sept|huit|neufs?|dix|onze|douze|treize|quatorze|quinze|seize)  @@7
    <<- -1>> vingt                                                                                  # Mettez « vingt » au singulier.

TEST: Il y a {{vingts}} personnes dans le salon.
TEST: {{Quatre-vingt}} femmes sont passées.
TEST: On en a reçu quatre-{{vingts}}-dix.
TEST: Le gagnant est le numéro quatre-vingt.


# neuf
__[i]/sgpl(sgpl_xxx_neuf)__
    (?:dix|vingt|trente|quarante|cinquante|soixante(?:-dix|)|quatre-vingt(?:-dix|))-neufs
    <<- ->> =\0[:-1]                                                                                # Pas de “s”.

TEST: par {{trente-neufs}} degrés.


# cent
__[i]/sgpl(sgpl_xxx_cents)__
    (?:deux|trois|quatre|cinq|six|sept|huit|neuf) (cent)  @@$
    <<- not morph(word(1), ":B|>une?", False, True) and not before(r"(?i)\b(?:numéro|page|chapitre|référence|année|test|série)s? +$")
    -1>> cents                      # Mettre « cent » au pluriel (centaines entières), excepté s’il s’agit d’une référence (page, chapitre, année…).|http://fr.wiktionary.org/wiki/cent
__[i]/sgpl(sgpl_xxx_cent)__
    (?:deux|trois|quatre|cinq|six|sept|huit|neuf|mille) (cents)  @@$
    <<- morph(word(1), ":B|>une?", False, False)
    -1>> cent                       # Nombre cardinal : pas de “s” à “cent” (hormis sur les centaines entières).|http://fr.wiktionary.org/wiki/cent
__[i]/sgpl(sgpl_cents_nom)__
    (cents) ({w_2})  @@0,6
    <<- morphex(\2, ":[NAQ].*:[pi]", ":G") and morphex(word(-1), ":[VR]", ":B", True)
    -1>> cent                       # Nombre cardinal : pas de “s” à “cent” (hormis sur les centaines entières).|http://fr.wiktionary.org/wiki/cent

TEST: trois {{cent}} marches à gravir.
TEST: deux {{cents}} quatre tests lancés à chaque itération du processus nouveau
TEST: par {{cents}} idées différentes.


# mille
__[i]/sgpl(sgpl_mille)__
    milles
    <<- morphex(word(1), ":B|:N.*:p", ":[QA]", False) or (morph(word(-1), ":B") and morph(word(1), ":[NAQ]", False))
    ->> mille                       # « Mille » est invariable s’il s’agit d’un nombre (et non de l’unité de mesure maritime).

TEST: Plus de {{milles}} personnes sont venues.
TEST: plus de deux cent quatre-vingt mille personnes


#### Groupes, regroupements, collections, etc.

__[i]/sgpl(sgpl_carnet_de)__
    carnets? de (chèque|note|timbre|ticket|vacance) @@$ <<- -1>> \1s                      # Il manque un “s”. Il y en a plusieurs dans un carnet.
__[i]/sgpl(sgpl_collectif_de)__
    collectifs? d(?:e |’)(artiste|architecte|association|citoyen(?:ne|)|con(?:ne|)|consommat(?:eur|rice)|enfant|entreprise|femme|fille|garçon|homme|infirmière|jeune|médecin|motarde?|passionnée?|prostituée?|touriste|travailleu(?:r|se)|vieill(?:e|ard)) @@$
    <<- morph(word(-1), ":D.*:[si]", False, True) -1>> \1s                                          # Il manque un “s”. Il y en a plusieurs dans un collectif.
__[i]/sgpl(sgpl_collection_de)__
    collections? d(?:e |’)(autocollant|boîte|blason|bouton|carte|chaussure|écusson|étiquette|film|fossile|gravure|jeu|insecte|livre|médaille|moto|papillon|pièce|pierre|pipe|tableau|timbre|voiture) @@$
    <<- -1>> \1s                                                                                    # Il manque un “s”. Il y en a plusieurs dans une collection.
__[i]/sgpl(sgpl_concours_de_circonstances)__
    concours de (circonstance)  @@$ <<- -1>> circonstances                                # Un concours de circonstances signifie qu’il y a plusieurs circonstances.
__[i]/sgpl(sgpl_confluence_de)__
    confluences? de (rivière|fleuve|ruisseau)  @@$ <<- -1>> =suggPlur(@)                  # Confluence de plusieurs cours d’eau : mettez au pluriel.
__[i]/sgpl(sgpl_groupe_de)__
    (?:association|groupe|rassemblement|regroupement|réunion|troupe)s? d(?:e |’)(artiste|agricult(?:eur|rice)|architecte|automobiliste|citoyen(?:ne|)|con(?:ne|)|consommat(?:eur|rice)|enfant|entreprise|femme|fille|garçon|homme|infirmière|jeune|médecin|motarde?|passionnée?|prostituée?|touriste|travailleu(?:r|se)|vieill(?:e|arde?)) @@$
    <<- -1>> \1s                                                                                    # Il manque un “s”. Il y en a plusieurs dans un groupe, un rassemblement, un regroupement, etc.
__[i]/sgpl(sgpl_troupeau_de)__
    troupeaux? d(?:e |’)(âne|animal|bœuf|buffle|bovin|bison|con(?:ne|)|cheval|chèvre|génisse|mouton|mulet?|porc|taureau|touriste|vache|veau) @@$
    <<- -1>> =suggPlur(@)                                                                           # Il manque un “s”. Il y en a plusieurs dans un troupeau.

TEST: d’un air compassé, il sortit son carnet de {{chèque}}.
TEST: Ce collectif d’{{artiste}} est très inventif.
TEST: Rends-moi ma collection de {{film}} !
TEST: C’est un malheureux concours de {{circonstance}}.
TEST: à la confluence de {{rivière}}
TEST: ils constituent un groupe de {{passionné}}.
TEST: C’est un putain de troupeau de {{mouton}} !


#### Locutions


# à
__[i]/sgpl(sgpl_à_nu)__
    (m[eiî]\w+) +([aà] nu(?:es?|s))  @@0,$
    <<- morph(\1, ">(?:mettre|mise) ", False) -2>> à nu                     # « nu » est invariable dans cette locution.

TEST: Mettre {{à nus}} les hommes.

__[i]/sgpl(sgpl_à_part_égales)__
    à part? égale? <<- ->> à parts égales                                   # Il y a plusieurs parts.

TEST: {{à part égale}}

__[i]/sgpl(sgpl_à_moindres_frais)__
    [àa] moindre frais? <<- ->> à moindres frais                            # Lorsqu’on parle des dépenses, “frais” est un pluriel.

TEST: {{a moindre frais}}


# affaires
__[i]/sgpl(sgpl_chiffre_d_affaires)__
    chiffres? d’(affaire) @@$ <<- -1>> affaires                             # Le chiffre d’affaires. Toujours un “s” final.
__[i]/sgpl(sgpl_faire_affaire_avec)__
    (f[aieî]\w+) (affaires) avec  @@0,w
    <<- morph(\1, ">faire ", False) -2>> affaire                            # « Faire affaire avec ». Pas de “s”.
__[u]/sgpl(sgpl_faire_affaire_à_en)__
    (f[aieî]\w+) (affaire) (?:à|en) ([A-ZÉÈÂ][\w-]+)  @@0,w,$
    <<- morph(\1, ">faire ", False) and morph(\3, ":(?:N|MP)")
    -2>> affaires                                                           # Ajoutez un “s” à « affaire ».

TEST: Quel est son chiffre d’{{affaire}} ?
TEST: Allez-vous faire {{affaires}} avec ces connards ?
TEST: Faire {{affaire}} à Paris.


# ayants droit
__[i]/sgpl(sgpl_ayants_droit)__
    [ldcs]es (ayant[- ]droits?) @@4 <<- -1>> ayants droit                 # Au singulier : « un ayant droit ». Au pluriel : « des ayants droit ».

TEST: Comment lutter contre la cupidité des {{ayant droits}}
# Note: À supprimer? Graphie qui tend vers la soudure et le pluriel régulier (ayant-droit(s))


# boisson
__[i]/sgpl(sgpl_débit_de_boissons)__
    débits? de (boisson) @@$ <<- -1>> boissons                            # Il manque un “s” à « boisson ».

TEST: ils ont ouvert un débit de {{boisson}} à Paris.


# demi-heure, heure et demie
__[i]/sgpl(sgpl_demi_heure)__
    demi(?:e[- ]| )heure(s|) @@$ <<- ->> demi-heure\1                     # « Une demi-heure ».
__[i]/sgpl(sgpl_heure_et_demie)__
    heures? et (demi(?:s|es|)) @@$ <<- -1>> demie                         # « Une heure et demie », « deux heures et demie », etc.

TEST: L’entretien dure environ une {{demie heure}}.
TEST: nous avons rendez-vous dans une heure et {{demi}}


# dévolu
__[i]/sgpl(sgpl_leur_dévolu)__
    jet\w+ +(leurs dévolus) @@$ <<- -1>> leur dévolu                      # « Jeter son dévolu » : au singulier.

TEST: Ces gens qui jettent {{leurs dévolus}} sur n’importe qui, c’est d’une indécence.


# escalier
__[i]/sgpl(sgpl_cage_d_escalier)__
    cages? d’(escaliers) @@$ <<- -1>> escalier                            # Pas de “s” à escalier.

TEST: Elle est passée par la cage d’{{escaliers}}


# à l’extérieur/intérieur
__[i]/sgpl(sgpl_à_l_intérieur_extérieur)__
    (?:l’|d’|[cdls]es +|[mts]on +|leurs? +|[nv]otre +|en +|cet(?:te|) +)((?:ex|in)térieures?) @@$
    <<- -1>> =\1.rstrip("e")                                                        # Ceci est un adjectif féminin. Pas de “e” pour le nom masculin.

TEST: que pensez-vous de notre {{intérieure}} ?


# collet monté
__[i]/sgpl(sgpl_collet_monté)__
    ({w1}) +(collets[- ]montée?s) @@0,$
    <<- morph(\1, ":(?:V0e|W)|>très", False) -2>> collet monté
    # « Être collet monté » : dans cette locution, « collet monté » est invariable.

TEST: Elles sont tellement {{collets montées}} !


# coûter cher
__[i]/sgpl(sgpl_coûter_cher)__
    ((?:co[uû]t|pa)\w+) +(chers|chères?|chaire?s?)  @@0,$
    <<- morph(\1, ">(?:co[ûu]ter|payer) ", False)
    -2>> cher                                                                       # Ici, « cher » est un adverbe, invariable.

TEST: ces saloperies coûtent vraiment {{chères}} !


# donner lieu
__[i]/sgpl(sgpl_donner_lieu)__
    (donn\w+) +(lieux) @@0,$
    <<- morph(\1, ">donner ", False)
    -2>> lieu                                                                       # « Donner lieu » : “lieu” est invariable dans cette locution verbale.

TEST: ces conneries donneront {{lieux}} à une enquête approfondie.


# en bons termes
__[i]/sgpl(sgpl_en_bons_termes)__
    en bon terme @@$ <<- ->> en bons termes                                         # En bons termes : cette locution est toujours au pluriel.

TEST: nous sommes à présent {{en bon terme}}


# eux-mêmes, elles-mêmes
__[i]/sgpl(sgpl_eux_elles_mêmes)__
    (?:eux|elles)-(même) @@$ <<- -1>> mêmes                                         # Il manque un “s” à même.

TEST: Elles ne sont plus elles-{{même}}.
TEST: Ils ne peuvent s’en prendre qu’à eux-{{même}}.


# par intermittence
__[i]/sgpl(sgpl_par_intermittence)__
    par (intermittences) @@$ <<- -1>> intermittence                                 # Locution : « par intermittence ».

TEST: Elles ne viennent que par {{intermittences}}


# par intervalles
__[i]/sgpl(sgpl_par_intervalles)__
    par (intervalle) @@$ <<- -1>> intervalles                                       # Locution : « par intervalles ».

TEST: On va procéder par {{intervalle}}


# pied
__[i]/sgpl(sgpl_avoir_pied)__
    ([aeop]\w*) +(?:pas |)(pieds)  @@0,$
    <<- morph(\1, ">(?:avoir|perdre) ", False) -2>> pied                            # Pas de “s” final.
__[i]/sgpl(sgpl_à_pied)__
    à (pieds)  @@2
    <<- not before(r"(?i)\b(?:lit|fauteuil|armoire|commode|guéridon|tabouret|chaise)s?\b")
    -1>> pied                                                                       # Pas de “s” final.
__[i]/sgpl(sgpl_au_pied_levé)__
    (?:à|aux) pieds? levée?s? <<- ->> au pied levé                                  # Locution adverbiale invariable.

TEST: ils ont tout simplement perdu {{pieds}}
TEST: ils y sont allés à {{pieds}}.
TEST: Elles ont accompli l’impossible, et de surcroît {{aux pieds levés}}


# plein
__[i]/sgpl(sgpl_plein_de)__
    (pleins) de?  @@0
    <<- morphex(word(-1), ":(?:V|[NAQ].*:s)", ":(?:[NA]:.:[pi]|V0e.*:[123]p)", True)
    -1>> plein                                                                      # Au singulier.

TEST: Je connais {{pleins}} de gens
TEST: Les avocats sont pleins de nutriments.


# pleines dents
__[i]/sgpl(sgpl_à_pleines_dents)__
    [àa] pl[ea]ine(?: dents?|s? dent) <<- ->> à pleines dents                       # Toujours au pluriel.

TEST: Elle mord la vie {{à plaine dent}}.


# possible
__[i]/sgpl(sgpl_autant_que_possible)__
    autant (?:d(?:e |’){w_2} |)que (possibles) @@$ <<- -1>> possible                # Invariable. Implicitement, autant que ce qui est possible.

TEST: nous ferons des tests autant que {{possibles}}.
TEST: nous ferons autant de tests que {{possibles}}, c’est une nécessité.


# quelque
__[i]/sgpl(sgpl_quelque_temps)__
    (quelques) temps @@0 <<- -1>> quelque                                           # Quelque temps : un temps indéterminé, pas de “s”.
__[i]/sgpl(sgpl_en_quelque_sorte)__
    en (quelques sortes) @@$ <<- -1>> quelque sorte                                 # En quelque sorte : locution invariable.|https://fr.wiktionary.org/wiki/en_quelque_sorte

TEST: Il y a {{quelques}} temps que nous nous connaissons.
TEST: Je suis en vacances, en {{quelques sortes}}.


# rafales
__[i]/sgpl(sgpl_par_en_rafales)__
    (?:par|en) (rafale) @@$ <<- -1>> rafales                                        # En général, il y a plusieurs rafales. Par rafales, en rafales.

TEST: Je lance des tests en {{rafale}}.


#sans (crainte|défense)s <<- ->> sans \1                                            # En général, pas de pluriel.

# par souci de
__[i]/sgpl(sgpl_par_souci_de)__
    par (soucis) (?:de|d) @@4 <<- -1>> souci                                        # Invariable dans cette locution.

TEST: par {{soucis}} d’équité, chacun aura droit à une part.


# ce / se
__[i]/conf(conf_ce_être)__
    (se) (?:sera(?:i(?:en|)t|)|sont|f[uû](?:ren|)t)  @@0
    <<- (after("^ [ldmtsc]es ") and not before(r"(?i)\b(?:ils?|elles?|ne) +")) or
    ( morph(word(-1), ":Cs", False, True) and not before(", +$") and not after(r"(?i)^ +(?:ils?|elles?)\b") and not morph(word(1), ":Q", False, False) )
    -1>> ce                                                                 # Confusion probable.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=2440
TEST: des pans entiers de l’univers — pour reprendre l’expression d’Orwell — se sont d’ores et déjà volatilisés
TEST: À la pause, ils se sont tous les deux assis à l’arrière, et j’ai vu progressivement leurs corps se rapprocher.


# termes
__[i]/sgpl(sgpl_en_termes_de)__
    en (terme) (?:de|d) @@3 <<- -1>> termes                                         # Locution « en termes de ». Mettez “terme” au pluriel.

TEST: en {{terme}} de communication, c’est une véritable catastrophe


# tous / tout / toutes
__[i]/sgpl(sgpl_tous_azimuts)__
    tout azimuts? <<- ->> tous azimuts                                              # « Tous azimuts » signifie « dans toutes les directions ».
__[i]/sgpl(sgpl_une_bonne_fois_pour_toutes)__
    une (?:bonne |)fois pour (toute) @@$ <<- -1>> toutes                            # Il manque un “s”. Sous-entendu : une fois pour toutes les autres fois.

TEST: ils lancent des attaques {{tout azimut}}.
TEST: une bonne fois pour {{toute}}


# vacances
__[i]/sgpl(sgpl_bonnes_vacances)__
    bonne vacance <<- not morph(word(-1), ":D.*:f:s", False, False) ->> bonnes vacances             # Au pluriel.
__[i]/sgpl(sgpl_en_vacances)__
    ({w1}) +en (vacance)  @@0,$
    <<- morph(\1, ">(?:aller|partir) ", False) -2>> vacances                                        # Si vous parlez des congés, « vacance » doit être au pluriel.

TEST: Je pars en {{vacance}}.
TEST: {{Bonne vacance}} !
TEST: Il nous reste un poste en vacance.
TEST: Cette place est en vacance.


# vites
__[i]/sgpl(sgpl_vite)__
    vites
    <<- not morph(word(-1), ":V0e.*:3p", False, False) or morph(word(1), ":Q", False, False)
    ->> vite                                                                                        # Adverbe “vite” invariable. (La forme adjective est désuète.)

TEST: ils mangent {{vites}}.
TEST: elles sont {{vites}} parties.
TEST: elles sont vites.


# vu / vue
__[i]/sgpl(sgpl_point_de_vue)__
    points? de (vu(?:s|es|)) @@$ <<- -1>> vue                                                       # Au singulier.

TEST: c’est son point de {{vu}} qui prime.



############################## CONFUSIONS, HOMONYMES ET FAUX-AMIS ###############################


# accro / accroc
__[i]/conf(conf_être_accro)__
    ({etre}|dev\w+|sembl\w+|par\w+|rend\w+) +(accrocs?)  @@0,$
    <<- morph(\1, ">(?:être|devenir|para[îi]tre|rendre|sembler) ", False)
    -2>> =\2.replace("oc", "o")
    # Confusion : “accroc” signifie “déchirure”, “incident”, etc. tandis que “accro” est un terme familier qui signifie “dépendant”.
__[i]/conf(conf_accro_à)__
    (accrocs?) (?:[àa] (?:la (?:bouffe|cocaïne|cod[ée]ine|course|drogue|coke|meth|méthamphétamine|morphine|nicotine|nourriture|télé(?:vision|)|clope|cigarette|came|poudre|baise|musique)|cette (?:came|émission|merde|poudre|femme|meuf|gonzesse|conne|salope|garce)|ce (?:mec|keum|type|con(?:nard|)|fils de pute)|cet (?:homme|enculé|imbécile|enfoiré)|l’(?:alcool|amour|ecstasy|herbe|héro(?:ïne|)|opium|ordi(?:nateur|))|Facebook|Internet|Twitter|lui|elle)|[ad]u (?:chocolat|cul|jeu|poker|sexe|shopping|smartphone|sport|sucre|tabac|téléphone|travail|LSD|crack)|aux (?:anti-?dépresseurs|bonbons|mecs|femmes|médicaments|jeux|séries|sucreries))
    @@0
    <<- -1>> =\1.replace("oc", "o")
    # Confusion : “accroc” signifie “déchirure”, “incident”, etc. tandis que “accro” est un terme familier qui signifie “dépendant”.

TEST: ils y sont {{accrocs}} depuis toujours
TEST: au poker, il semble {{accroc}}
TEST: il est {{accroc}} à la cocaïne
TEST: elle est {{accroc}} au jeu
TEST: Patricia est {{accroc}} à ce mec
TEST: Tous {{accrocs}} à Internet.
TEST: {{Accroc}} à cette merde depuis toujours.


# acquis / acquit
__[i]/conf(conf_par_acquit_de_conscience)__
    par (acquis) de conscience  @@4
    <<- -1>> acquit                                                                                 # Confusion. On écrit « par acquit de conscience ».
    <<- ~>> *
__[i]/conf(conf_tenir_pour_acquit)__
    (t\w+) +pour (acquits?) @@0,$ <<- morph(\1, ">tenir ") -2>> acquis                              # Confusion. On écrit « tenir pour acquis ».

TEST: Je le tenais pour {{acquit}}.
TEST: Par {{acquis}} de conscience.


# affilée / affilé
__[i]/conf(conf_d_affilée)__
    d’(affilés?) @@2 <<- -1>> affilée                                                               # Locution.

TEST: C’est arrivé trois jours d’{{affilé}}


# amende / amande
__[i]/conf(conf_yeux_en_amande)__
    yeux en (amendes?) @@$ <<- -1>> amande                                                          # Confusion. Une amende est une peine.|http://www.cnrtl.fr/lexicographie/amende
__[i]/conf(conf_à_l_amende)__
    (m\w+) à (l’amande) @@0,$ <<- morph(\1, ">mettre ", False) -2>> l’amende                        # Confusion. L’amande est un fruit.
__[i]/conf(conf_faire_amende_honorable)__
    (f\w+)(?:-(?:je|tu|ils?|[nv]ous|elles?)|) +(amandes? honorables?) @@0,$
    <<- morph(\1, ">faire ", False) -2>> amende honorable                                           # Confusion. L’amande est un fruit.

TEST: Avec ses beaux yeux en {{amendes}} nul ne peut lui résister.
TEST: Nous avons déconné, nous avons été mis à {{l’amande}}.
TEST: Ces gens-là ne feront jamais {{amande honorable}}.


# annales / anal-e-s
__[i]/conf(conf_annales1)__
    (anale?s?) (?:littéraires?|politiques?|ecclésiastiques?|du (?:bac(?:calauréat|)|brevet)|de (?:physique|chimie|mathématiques|biologie|géographie)|d’histoire)  @@0
    <<- -1>> annales                                                 # Confusion : “\1” est l’adjectif relatif à l’anus.|http://fr.wiktionary.org/wiki/annales 
__[i]/conf(conf_annales2)__
    [lcdmts]es (anale?s?)  @@4
    <<- -1>> annales                                                 # Confusion : “\1” est l’adjectif relatif à l’anus.|http://fr.wiktionary.org/wiki/annales

TEST: des {{anales}} littéraires
TEST: il a bachoté les {{anales}}.


# air / aire / ère
__[i]/conf(conf_ère)__
    (aire?) (?:baroque|digitale?|numérique|industrielle|glacière|glaciaire|géologique|Meiji|cénozoïque|moderne|paléozoïque|pliocène|primaire|secondaire|tertiaire|quaternaire|du (?:big data|cénozoïque|digital|numérique|paléozoïque|pliocène|pétrole|primaire|secondaire|tertiaire|quaternaire))
    @@0
    <<- -1>> ère                 # Confusion : l’aire est une surface.
__[i]/conf(conf_air)__
    (aire|ère) du temps  @@0
    <<- -1>> air                 # Confusion.

TEST: L’{{aire}} du pétrole n’est pas encore terminée.
TEST: Ce sera un jour dans l’{{ère}} du temps


# auspice / hospice
__[i]/conf(conf_sous_les_auspices1)__
    sous [ldc]es (hospices) @@$ <<- -1>> auspices
    # Confusion probable. L’hospice est un centre de soins.|https://fr.wiktionary.org/wiki/auspice
__[i]/conf(conf_sous_les_auspices2)__
    sous (?:les \w+|d’\w+|des? \w+) +(hospices) @@$ <<- -1>> auspices
    # Confusion probable. L’hospice est un centre de soins.|https://fr.wiktionary.org/wiki/auspice
__[i]/conf(conf_hospice1)__
    ({etre}|{aller}) +(?:à|dans) l’(auspice) @@0,$ <<- morph(\1, ">(?:être|aller) ", False) -2>> hospice
    # Confusion. Les auspices sont des présages, des devins ou, au sens moderne, les circonstances.|https://fr.wiktionary.org/wiki/auspice
__[i]/conf(conf_hospice2)__
    dans (?:un|cet|[ldc]es) +(auspices?) @@$ <<- -1>> =\1.replace("auspice", "hospice")
    # Confusion. Les auspices sont des présages, des devins ou, au sens moderne, les circonstances.|https://fr.wiktionary.org/wiki/auspice
__[i]/conf(conf_hospice3)__
    (auspices?) pour (?:vieill(?:ard|e)|vieux|s[eé]nior|personne|enfant|orphelin|femme|aliéné|incurable|indigent|pauvre)s?  @@0
    <<- -1>> =\1.replace("auspice", "hospice").replace("Auspice", "Hospice")
    # Confusion. Les auspices sont des présages, des devins ou, au sens moderne, les circonstances.|https://fr.wiktionary.org/wiki/auspice

TEST: sous les {{hospices}} du conseil général de la nation.
TEST: sous de terribles {{hospices}}
TEST: Elles vont souvent à l’{{auspice}}.
TEST: Dans cet {{auspice}}, la nourriture est abominable.
TEST: On va l’envoyer dans un {{auspice}} pour personnes âgées.


# autel / hôtel
__[i]/conf(conf_autel)__
    sacrifi\w+ +sur l’(hôtel) @@$ <<- -1>> autel
    # Confusion. L’hôtel est un établissement offrant un service d’hébergement. L’autel est une table ou un monument destiné aux sacrifices ou à la messe.|https://fr.wiktionary.org/wiki/autel

TEST: ils sont sacrifiés sur l’{{hôtel}} de la rentabilité


# avion / avions
__[i]/conf(conf_avions)__
    nous (avion) @@5 <<- -1>> avions                                  # Confusion probable : l’avion est un appareil volant.

TEST: Je pense que nous {{avion}} tort.


# bât / bas
__[i]/conf(conf_bât)__
    le (ba[st]) bless\w+ @@3 <<- -1>> bât                             # Confusion : là où le bât blesse.|http://fr.wiktionary.org/wiki/b%C3%A2t

TEST: C’est là que le {{bas}} blesse.

# bel et bien
__[i]/conf(conf_bel_et_bien)__
    (belle) et bien (?!que?|sûr) @@0 <<- not morph(word(1), ":[AQ]") -1>> bel
    # Confusion. « Bel et bien » est équivalent à « vraiment ».

TEST: ils vont {{belle}} et bien par monts et par vaux.


# bite / bitte
__[i]/conf(conf_bitte)__
    (bites?) (?:d’amarrage|du quai|sur le quai) @@0 <<- -1>> =\0.replace("ite", "itte")             # Bitte d’amarrage.

TEST: les mouettes sur les {{bites}} d’amarrage.


# bonne et due forme / bonnet difforme / bon uniforme
__[i]/conf(conf_en_bonne_et_due_forme)__
    en (bons? uniformes?|bonnets? difformes?|bonn?e?s? et due?s? formes?)  @@3
    <<- \1 != "bonne et due forme" -1>> bonne et due forme            # En bonne et due forme : locution invariable.|https://fr.wiktionary.org/wiki/en_bonne_et_due_forme

TEST: une raclée en {{bonnes et dues formes}}


# en butte à / but / bute
__[i]/conf(conf_en_butte_à_au)__
    en (bute?s?) +(?:à|aux?) @@3 <<- -1>> butte                       # Confusion. Écrivez « en butte \1 ».

TEST: Et moi toujours en {{but}} à de nouveaux dangers


# cane / canne (from LanguageTool)
__[i]/conf(conf_canne_à_de)__
    (canes?) (?:à (?:sucre|pêche|selfie)|de (?:bambou|bois|combat|compagnon|compagnonnage|défense|golf|marche|Noël|ramonage)|d’aveugles?)  @@0
    <<- -1>> =\1.replace("cane", "canne")
    # Confusion. La cane est la femelle du canard.|https://fr.wiktionary.org/wiki/cane
__[i]/conf(conf_nom_de_canne)__
    (?:alcool|coup|sucre|sirop)s? de (canes?) @@$ <<- -1>> canne
    # Confusion. La cane est la femelle du canard.|https://fr.wiktionary.org/wiki/cane
__[i]/conf(conf_nom_de_cane)__
    (?:œuf|filet)s? de (cannes?) @@$ <<- -1>> cane
    # Confusion. La canne est un bâton ou un roseau. Pour la femelle du canard, écrivez|https://fr.wiktionary.org/wiki/canne
__[i]/conf(conf_verbe_canne)__
    ((?:appu|batt|frapp|l[eè]v|march)\w+) (?:avec|sur) (?:[dl]es|[mts](?:a|es)|une) (canes?)  @@0,$
    <<- morph(\1, ">(?:appuyer|battre|frapper|lever|marcher) ", False)
    -2>> =\2.replace("cane", "canne")
    # Confusion. La cane est la femelle du canard.|https://fr.wiktionary.org/wiki/cane
__[i]/conf(conf_bec_de_cane)__
    becs?-de-(cannes?) @@$ <<- -1>> cane
    # Le bec-de-cane se somme ainsi à cause de la ressemblance avec le bec de l’animal.|https://fr.wiktionary.org/wiki/bec-de-cane
__[i]/conf(conf_ville_de_Cannes1)__
    (?:aéroport|acteur|actrice|baie|port|festival|gare|maire|mairie|tourisme|ville|vieux-port)s? de (cann?es?)  @@$
    <<- not re.search("^C(?:annes|ANNES)", \1) -1>> Cannes
    # La ville portuaire de la Côte d’Azur s’écrit “Cannes”.
__[i]/conf(conf_ville_de_Cannes2)__
    (?:bienvenue?|restaurant|activité|h[ôo]tel|séjour|dormir|habiter|situer|vivre)s? à (cann?es?)  @@$
    <<- not re.search("^C(?:annes|ANNES)", \1) -1>> Cannes
    # La ville portuaire de la Côte d’Azur s’écrit “Cannes”.

TEST: œufs de {{cannes}}
TEST: {{canes}} à pêche
TEST: {{cane}} de défense
TEST: alcool de {{cane}}
TEST: appuyé sur sa {{cane}}
TEST: bec-de-{{cannes}}
TEST: aéroport de {{cannes}}
TEST: restaurant à {{cane}}


# chair / chère
__[i]/conf(conf_faire_bonne_chère)__
    (f[aioîe]\w+) +(bonnes? ch(?:ai|e)re?) @@0,$
    <<- morph(\1, ">faire ", False)
    -2>> bonne chère                                                                    # Confusion. « Faire bonne chère » signifie bien manger, ripailler.

TEST: ils ont fait {{bonne chaire}}.


# compte / comte / conte
__[i]/conf(conf_compte)__
    (co[mn]tes?) (?:à rebours|bancaires?|des opérations) @@0 <<-
    -1>> compte|comptes                                                                 # Confusion. Un conte est un récit fictif, “comte” est un titre de noblesse. Pour un état chiffré, un calcul… écrivez :

TEST: mon {{comte}} bancaire est encore à sec.


# content / contant / comptant
__[i]/conf(conf_content)__
    ({avoir}) +(?:tout |)(?:[mts]on|[nv]otre|leur) (co(?:mp|n)tant) @@0,$
    <<- morph(\1, ":V0a", False) -2>> content                                           # Confusion. Avoir (tout) son content…|http://www.larousse.fr/dictionnaires/francais/content/18572
__[i]/conf(conf_argent_comptant)__
    argent (cont[ea]nt)  @@7
    <<- morph(word(-1), ":[VR]", False) -1>> comptant                                   # Confusion probable.|https://fr.wiktionary.org/wiki/argent_comptant

TEST: Elle a déjà eu tout son {{comptant}} de problèmes.
TEST: On paye toujours argent {{content}}.


# cor / corps
__[i]/conf(conf_à_cor_et_à_cri)__
    [àa] corp?s? es?t [àa] cris?
    <<- not re.search("(?i)^à cor et à cri$", \0) ->> à cor et à cri
    # Locution adverbiale invariable. (Le cor est un instrument à vent utilisé pour la chasse.)|https://fr.wiktionary.org/wiki/%C3%A0_cor_et_%C3%A0_cri

TEST: Elles hurlèrent {{à corps et à cris}}.


# cou / coût / coup
__[i]/conf(conf_tordre_le_cou)__
    (tord\w*) +le (co[uû][pt]s?) @@0,$ <<- morph(\1, ">tordre ", False) -2>> cou
    # Confusion. Le coût indique ce que ça coûte. Un coup, c’est quelque chose qui frappe. La partie séparant la tête du corps s’écrit “cou”.
__[i]/conf(conf_rendre_coup_pour_coup)__
    (rend\w*) +(co[uû]t?s? pour co[uû]t?s?)  @@0,$
    <<- morph(\1, ">rendre ", False) -2>> coup pour coup
    # Confusion. Le coût indique ce que ça coûte. Un cou est la partie séparant la tête du corps. Pour ce qui frappe, écrivez “coup”.

TEST: Je vais tordre le {{coup}} à toutes ces idées stupides, une par une.
TEST: Implacable, elle a rendu {{cout pour cout}} sans se départir de son calme.


# cour / cours / court
__[i]/conf(conf_au_cours_de)__
    au (court?) (?:des?|du?) @@3 <<- -1>> cours                                 # Confusion probable. Une cour… Un cours… Court(e) : adjectif.
__[i]/conf(conf_en_cours)__
    en cour(?! martiale?| de justice) <<- ->> en cours                          # Confusion probable. Une cour… Un cours… Court(e) : adjectif.
__[i]/conf(conf_couper_court)__
    (coup\w+) (cours?) @@0,$ <<- morph(\1, ">couper ") -2>> court               # « Couper court ». Écourter. Une cour… Un cours… Court(e) : adjectif.
__[i]/conf(conf_laisser_libre_cours)__
    ({w1}) +libre (court?) @@0,$
    <<- morph(\1, ">(?:avoir|donner|laisser) ", False) -2>> cours               # Confusion probable. Une cour… Un cours… Court(e) : adjectif.
__[i]/conf(conf_à_court_de)__
    à (cours?) de? @@2 <<- -1>> court                                           # Confusion probable : écrivez « à court de … » pour « manquer de … »
__[i]/conf(conf_à_court_terme)__
    à cour(?:s|ts|) termes? <<- ->> à court terme                               # Confusion. Une cour… Un cours… Court(e) : adjectif.

TEST: au {{court}} de cette journée
TEST: les exercices {{en cour}} se déroulent bien.
TEST: je vais couper {{cours}} à ces conneries.
TEST: il faut donner libre {{cour}} à ses envies.
TEST: Nous allons bientôt être à {{cours}} d’argent.
TEST: le rendement {{à cours terme}} est excellent.
TEST: porter l’affaire en Cour de justice


# dés / dès
__[i]/conf(conf_dès_que_lors1)__
    (dés) (?:les?|la|que?|lors|avant|demain) @@0
    <<- not before(r"(?i)\b(?:[lmtsc]es|des?|[nv]os|leurs|quels) +$") -1>> dès
    # Confusion probable. Les dés sont des polyèdres ou des protège-doigts pour la couture. Pour signifier “à partir de/du/des”, écrivez :|https://fr.wiktionary.org/wiki/d%C3%A9
__[i]/conf(conf_dès_que_lors2)__
    (des) (?:les?|la|que?|lors|demain) @@0
    <<- -1>> dès
    # Confusion probable : “des” est un déterminant pluriel. Pour signifier “à partir de/du/des”, écrivez :|https://fr.wiktionary.org/wiki/d%C3%A9

TEST: {{dés}} que nous sommes partis, il a piqué une crise
TEST: {{des}} {{les}} premiers symptômes, appelez-moi


# différend / différent
__[i]/conf(conf_différend)__
    (?:[mts]on|[vn]otre|leur) +(différent) @@$
    <<- morphex(word(1), ":[GVX]", ":[NAQ]", True)
    -1>> différend                                          # Confusion : « différent » est un adjectif, « différend » est le nom qui signifie désaccord.
__[i]/conf(conf_un_différend)__
    un (différent)  @@3
    <<- morphex(word(1), ":[GV]", ":[NAQ]", False)
    -1>> différend                                          # Confusion : « différent » est un adjectif, « différend » est le nom qui signifie désaccord.
__[i]/conf(conf_différends)__
    (?:leurs|[mts]es|[nv]os) (différents) @@$
    <<- morphex(word(1), ":[GV]", ":[NAQ]", True)
    -1>> différends                                         # Confusion : « différent » est un adjectif, « différend » est le nom qui signifie désaccord.
__[i]/conf(conf_les_différends)__
    (?:[ld]es) (différents) @@$
    <<- morphex(word(1), ":G", ":[NAQ]")
    -1>> différends                                         # Confusion : « différent » est un adjectif, « différend » est le nom qui signifie désaccord.
__[i]/conf(conf_être_différent)__
    ({etre}) +(?:pas +|)(?:si +|)(différends?)  @@0,$
    <<- morph(\1, ":V0e", False)
    -2>> =\2.replace("nd", "nt")                            # Confusion : « différent » est un adjectif, « différend » est le nom qui signifie désaccord.

TEST: Régler votre {{différent}}.
TEST: Notre {{différent}} avec eux perdure.
TEST: Un {{différent}} peut toujours se résoudre.
TEST: J’en ai marre de leurs {{différents}}.
TEST: Il y a des {{différents}} que nul ne saurait résoudre.
TEST: Ils sont pas vraiment {{différends}}.
TEST: J’en veux un différent.
TODO: dans ses différents ouvrages


# en train / entrain
__[i]/conf(conf_en_train)__
    entrain <<- morph(word(-1), ":V0e", False, False) ->> en train              # Confusion. L’entrain est une fougue, une ardeur à accomplir quelque chose.|https://fr.wiktionary.org/wiki/entrain

TEST: Vous êtes {{entrain}} de vaincre.


# envi / envie
__[i]/conf(conf_à_l_envi)__
    à l’(envie)  @@4
    <<- not morph(word(-1), ">(?:abandonner|céder|résister) ", False) and not after("^ d(?:e |’)")
    -1>> envi                                                                                       # Locution adverbiale « à l’envi », signifiant « autant que possible ».

TEST: Ils s’amusèrent à l’{{envie}} et oublièrent tous leurs soucis.
TEST: Je résiste à l’envie de manger du chocolat.
TEST: On ne s’intéresse pas à l’école ni à l’âge, mais aux compétences et à l’envie de partager.


# chant / champ
__[i]/conf(conf_Chandeleur)__
    la (cha(?:nt|mp)s? de l’heure?) @@3 <<- -1>> Chandeleur
    # Confusion : la Chandeleur est une fête.|http://fr.wikipedia.org/wiki/Chandeleur
__[i]/conf(conf_champ_de)__
    (chants?) de (?:blé|betteraves?|fleurs|maïs|tournesols?|tulipes|force|lavande)  @@0
    <<- -1>> =\1.replace("nt", "mp")
    # Confusion probable. Un chant est ce qui se chante.|http://fr.wiktionary.org/wiki/champ

TEST: C’est {{la}} {{champ de l’heur}}.
TEST: Il traversa le {{chant}} de betteraves.


# colon / côlon
__[i]/conf(conf_côlon)__
    cancer du (colon) @@10 <<- -1>> côlon                                       # Confusion : le côlon est un segment du gros intestin, le colon colonise.

TEST: Il a le cancer du {{colon}}.


# censé / sensé
__[i]/conf(conf_être_censé)__
    ({etre}) +(sensée?s?) +(?:y |en |leur |[nv]ous |[mtsn](?:en? |’y |’)|l(?:es?|a) |)({w_2})  @@0,w,$
    <<- morph(\1, ":V0e", False) and morph(\3, ":(?:Y|Oo)", False)
    -2>> =\2.replace("sens", "cens")                                            # Confusion : “sensé” se dit de quelqu’un de “bon sens”. Pour ce qui est attendu, écrivez :

TEST: Ils sont {{sensés}} y parvenir.
TEST: Elles étaient {{sensés}} m’y conduire
TEST: il est {{sensé}} prendre l’avion demain


__[i]/conf(conf_sensé)__
    (censée?s?) *$  @@0
    <<- -1>> =\1.replace("c", "s").replace("C", "S")                            # Confusion probable : il y a ce qui est “sensé”, c’est-à-dire de “bon sens”, et il y a ce que chacun est “censé” accomplir.

TEST: Ce sont pourtant des gens si {{censés}}


# côté / coté
__[i]/conf(conf_côté)__
    (?:à|au|autres?|bon|mauvais|les?|de|ce|du|[mts](?:on|es)|[nv]otre|chaque|un|leurs?) (cotés?)  @@$
    <<- -1>> =\1.replace("o", "ô")                                             # Confusion : « coté » est le participe passé du verbe « coter ».

TEST: Je reste à ses {{cotés}}.


# cote / côte / cotte
__[i]/conf(conf_côte)__
    (cott?es?) (?:d(?:e (?:bœuf|porc|veau|Bretagne)[sx]?|’(?:agneaux?|Albâtre|Azur|Ivoire|Or|Opale|Émeraude))|(?:brisée|cassée|fêlée|fracturée|surnuméraire|rocheuse|adriatique|américaine|californienne|atlantiques?|basque|bretonne|landaise|normande|française|belge|espagnole|italienne|portugaise|africaine|méditerranéenne|pacifique|raide|occidentale|fractale)s?|nord|sud|ouest)  @@0
    <<- -1>> =\1.replace("o", "ô").replace("tt", "t")           # Confusion : écrivez “côtes” pour les os du thorax et les rivages.|https://fr.wiktionary.org/wiki/c%C3%B4te
__[i]/conf(conf_côtes)__
    (?:fracture|radiographie)s? des (cott?es)  @@$
    <<- -1>> côtes                                              # Confusion : écrivez “côtes” pour les os du thorax.|https://fr.wiktionary.org/wiki/c%C3%B4te
__[i]/conf(conf_cote)__
    (c(?:ôt|ott)es?) (?:mobilières?|foncières?|de (?:niveau|popularité|confiance)|d’(?:alerte|altitude|amour))  @@0
    <<- -1>> =\1.replace("ô", "o").replace("tt", "t")           # Confusion : utilisez « cote » pour chiffrer (cotation).|http://fr.wiktionary.org/wiki/cote
__[i]/conf(conf_cotte)__
    (c[ôo]tes?) de mailles?  @@0
    <<- -1>> =\1.replace("ô", "o").replace("t", "tt")           # Confusion : écrivez « cotte » pour la cotte de mailles.|https://fr.wiktionary.org/wiki/cotte_de_mailles
__[i]/conf(conf_avoir_la_cote)__
    ({avoir}) +la (côte)  @@0,$
    <<- morph(\1, ":V0a", False) -2>> cote                      # Confusion probable : utilisez « cote » (cotation).|http://fr.wiktionary.org/wiki/cote

TEST: Rien ne vaut une bonne {{cote}} de bœuf.
TEST: Elles ont passé une radiographie des {{cottes}}.
TEST: Quelle est sa {{côte}} de popularité
TEST: il a réussi à percer sa {{cote}} de mailles.
TEST: Il a la {{côte}} auprès de ses collègues


# cou / coup / coût
__[i]/conf(conf_coup_de)__
    (co[uû]t?s?) d(?:e (?:baguette|bâton|barre|bec|bélier|blues|botte|boule|boutoir|bol|bite|cœur|chaud|coude|dé|dent|déprime|froid|fil|foudre|genou|gueule|grâce|griffe|grisou|hache|hanche|Jarnac|jus|jeune|klaxon|main|ma[îi]tre|massue|neuf|nostalgie|pied|poing|poignard|pouce|pute|rein|rabot|savate|sang|sabot|sifflet|soleil|surin|tête|théâtre|torchon|vent|vieux)|’(?:éclat|épée|état|épaule|œil|estoc)|ur)s? @@0
    <<- -1>> coup
    # Confusion probable. Le coût est le prix d’une chose. Le cou est la partie joignant le tronc à la tête. Pour ce qui frappe, écrivez :
__[i]/conf(conf_coût_de)__
    (coup?s?) de (?:base|revien[ts]|distribution|développement|production|la vie|maintenance|construction|fonctionnement|fabrication|financement|formation|renonciation|stockage|trans(?:action|fert|port|formation)|viabilisation)s? @@0
    <<- -1>> coût
    # Confusion probable. Le cou est la partie joignant le tronc à la tête. Pour ce qui frappe, on écrit “coup”. Pour ce que ça coûte, écrivez :
__[i]/conf(conf_cou)__
    (co[uû][pt]s?) +(?:long|graci(?:eux|le))s?  @@0
    <<- -1>> cou
    # Confusion probable. Le coût est le prix d’une chose. Le coup désigne un acte ou une force qui frappe. Pour la partie séparant le tronc de la tête, écrivez :

TEST: J’ai pris un {{cou}} de bâton.
TEST: Merci de calculer le {{coup}} de production avant d’établir une facture.
TEST: Elle a un {{coût}} si gracile.


# desceller / déceler / desseller
__[i]/conf(conf_erreur_problème_decelé)__
    (erreur|faute|incohérence|problème|bug|bogue|faille|maladie|défaut|défaillance|perturbation|irrégularité)s? .*(des[cs]ell\w+)  @@0,$
    <<- morph(\2, ">(?:desceller|desseller) ", False)
    -2>> =\2.replace("descell", "décel").replace("dessell", "décel")
    # Confusion probable si ce mot se rapporte à « \1 ». Desceller signifie briser un sceau, un cachet… Desseller signifie ôter une selle. Si vous voulez dire “remarquer”, “dévoiler”, “découvrir”, écrivez :|http://fr.wiktionary.org/wiki/déceler
__[i]/conf(conf_deceler_qqch)__
    (des[cs]ell\w+) +(?:une?|l[ae]|des?|ce(?:tte|t|s|)|[mts](?:on|a|es)|[nv]os|leurs?|plusieurs|quelques|deux|trois|quatre|cinq|six|sept|huit|neuf|dix|onze|douze) +(?:(?:petite?|grande?|énorme|dangeureu(?:x|se)|formidable|forte?|lég(?:er|ère)|merveilleu(?:x|se)|nouv(?:el|elle|eaux?)|vraie?|réel(?:le|)|sévère|véritable)s? +|)(acidité|activité|allergie|anévrisme|anomalie|arnaque|appendicite|atrophie|baisse|bébé|blessure|bug|bogue|carie|cancer|cause|changement|complot|comète|concentration|corrélation|croissance|défaut|défaillance|demande|dépression|diabète|différence|diminution|effluve|épilepsie|erreur|essai|existence|grossesse|grosseur|faille|faute|fuite|fraude|grippe|handicap|hausse|hémorragie|hostilité|hypertrophie|incompatibilité|incohérence|infection|infraction|indice|infidélité|insuffisance|intrigue|irrégularité|leucémie|lésion|lueur|lumière|maladie|malformation|manœuvre|manipulation|molécule|mensonge|mutation|once|perturbation|personnalité|piste|perte|planète|exoplanète|présence|qualité|odeur|opportunité|otite|problème|surdité|talent|tendance|tentative|tumeur|utilisation|hoax|variation|vie|virus)s?  @@0,$
    <<- morph(\1, ">(?:desceller|desseller) ", False)
    -1>> =\1.replace("descell", "décel").replace("dessell", "décel")
    # Confusion probable si ce mot se rapporte à « \2 ». Desceller signifie briser un sceau, un cachet… Desseller signifie ôter une selle.|http://fr.wiktionary.org/wiki/déceler

TEST: il y a une erreur qu’on peut {{desceller}} dans ses analyses.
TEST: elle a {{dessellé}} une forte hostilité dans ses propos.


# faite / faîte / fait
__[i]/conf(conf_faites)__
    vous +(?:ne |leur |lui |nous |vous |)(faîtes?) @@$ <<- -1>> faites                              # Confusion. Le faîte (≠ faire) est le point culminant de quelque chose.
__[i]/conf(conf_faites_vous)__
    (faîtes?)[- ]vous  @@0 <<- not morph(word(-1), ":D.*:[me]:[sp]", False) -1>> faites             # Confusion. Le faîte (≠ faire) est le point culminant de quelque chose.
__[i]/conf(conf_avoir_être_faite)__
    ({avoir_etre}) +(faîtes?)  @@0,$
    <<- morph(\1, ":V0", False) -2>> =\2.replace("î", "i")                                          # Confusion. Le faîte (≠ faire) est le point culminant de quelque chose.

TEST: Vous nous {{faîtes}} mal.
TEST: Comment {{faîtes}} vous ça ?
TEST: Elles sont {{faîtes}} comme ça.
TEST: Elle est souvent {{faîte}} de cette manière-là.


__[i]/conf(conf_en_fait)__
    en fa[iî]tes?
    <<- not before(r"(?i)\b(?:[vn]ous|lui|leur|et toi) +$|[nm]’$") ->> en fait                      # Confusion probable : « en fait » = « en réalité ».

TEST: {{en faite}}, on en voit partout, ça grouille.
TEST: Que {{faîtes}}-vous ? Vous {{faîtes}} mal !
TEST: Aujourd’hui, n’en faites pas trop.


# flamant rose
__[i]/conf(conf_flamant_rose)__
    (flamands?)[~ ]+roses? @@0 <<- -1>> =\1.replace("and", "ant")                                   # Confusion. Flamand = habitant des Flandres. Flamant = oiseau.

TEST: j’ai vu un {{flamand}} rose.


# foi / fois
__[i]/conf(conf_bonne_mauvaise_foi)__
    (mauvaise|bonne) (fois)  @@0,$
    <<- not ( \1 == "bonne" and before(r"(?i)\bune +$") and after("(?i)^ +pour toute") ) 
    -2>> foi                                                                                        # Confusion probable.|http://fr.wiktionary.org/wiki/foi
__[i]/conf(conf_faire_perdre_donner_foi)__
    ((?:f|perd|donn)\w+) (fois) @@0,$
    <<- morph(\1, ">(?:faire|perdre|donner) ", False) -2>> foi                                      # Confusion probable.|http://fr.wiktionary.org/wiki/foi

TEST: C’est une personne de bonne {{fois}}.
TEST: Mais il a perdu {{fois}} en l’avenir.


# fond / fonds
__[i]/conf(conf_de_fonds)__
    (?:collecte|levée)s? de (fon[dt]) @@$ <<- -1>> fonds
    # Confusion : fonds (ce qui constitue une richesse) ≠ fond (partie la plus basse/profonde).
__[i]/conf(conf_à_fonds_perdus)__
    à (fond) perdus? @@2 <<- -1>> fonds
    # Confusion : fonds (ce qui constitue une richesse) ≠ fond (partie la plus basse/profonde).
__[i]/conf(conf_fonds_qqch)__
    (fon[dt]) (?:monétaires?|spéculatifs?|de (?:commerce|garantie|roulement|pension|placement|retraite|roulement|solidarité)|d’(?:aide|investissement|indemnisation))  @@0
    <<- -1>> fonds
    # Confusion : fonds (ce qui constitue une richesse) ≠ fond (partie la plus basse/profonde).
__[i]/conf(conf_fonts_baptismaux)__
    (fonds) baptismaux @@0 <<- -1>> fonts
    # Confusion. Écrivez “fonts”, qui vient du latin “fons” et signifie « fontaine, source ».

TEST: faire une levée de {{fond}}.
TEST: à {{fond}} perdu
TEST: elle a vendu son {{fond}} de commerce
TEST: il a reçu de l’argent d’un {{fond}} d’investissement
TEST: les {{fonds}} baptismaux.


# glaciaire / glacière
__[i]/conf(conf_glacière)__
    ({w1}) (glaciaires?) @@0,$ <<- morph(\1, ":D", False) -2>> glacière         # Confusion : « glaciaire » est un adjectif.
__[i]/conf(conf_glaciaire)__
    ères? (glacières?) @@$ <<- -1>> glaciaire                                   # Confusion : une glacière est un contenant préservant le froid.

TEST: Passe-moi la glacière, s’il te plaît.
TEST: Autrefois, il y eut plusieurs ères {{glacières}}.
TEST: dans la {{glaciaire}}


# en son for intérieur / fort
__[i]/conf(conf_for_intérieur)__
    (?:en|dans) (?:[mts]on|leur|[nv]otre) (forts? intérieurs?) @@$ <<- -1>> for intérieur
    # Confusion : “for” vient du latin “forum” et le “for intérieur” évoque la conscience individuelle.

TEST: En mon {{fort intérieur}}, je le crois.
TEST: Dans son {{fort intérieur}}, je le crois.


# gène / gêne
__[i]/conf(conf_sans_gêne)__
    sans[- ]gènes? <<- ->> sans-gêne                                      # Confusion. Gène = élément des chromosomes. Gêne = embarras.
__[i]/conf(conf_gènes)__
    (?:[dmtsc]es|[nv]os|leurs) (gênes) @@$ <<- -1>> gènes                 # Confusion probable. Gène = élément des chromosomes. Gêne = embarras.

TEST: Quel {{sans gène}}, celui-là !
TEST: Il croit que ses {{gênes}} décident de sa santé…


# gent [nf] / gent(e)(s) [adj]
__[i]/conf(conf_gent)__
    la (gente) (?:féminine|masculine) @@3 <<- -1>> gent
    # Confusion. « Gente » est un adjectif vieilli. Utiliser « gent » pour désigner un groupe de personnes.

TEST: la {{gente}} masculine est grossière et l’a toujours été.


# golf / golfe
__[i]/conf(conf_golf)__
    (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,$
    <<- -2>> golf                                                           # Confusion. Le golfe est une zone de mer ou d’un lac avancée dans les terres. Ex : Le golfe Persique.
__[i]/conf(conf_golfe)__
    (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,$
    <<- -1>> golfe                                                          # Confusion. Le golf est un sport.
__[i]/conf(conf_Golfe)__
    (?:guerre|émir|monarchie)s? du (golf) @@$ <<- -1>> Golfe                # Confusion. Le golf est un sport.             

TEST: Il a réalisé un documentaire sur la guerre du {{Golf}}.
TEST: C’est un bon joueur de {{golfe}}.
TEST: Le {{golf}} Persique est presque une mer fermée.
TEST: J’ai fait de la voile dans le {{golf}} du Morbihan.
TEST: Le {{golf}} d’Aden.


# gré / grès
__[i]/conf(conf_à_leur_gré)__
    à (?:[mts]on|[nv]otre|leur) (grès) @@$ <<- -1>> gré                                   # Confusion probable. Le grès est une roche détritique.
__[i]/conf(conf_bon_gré_mal_gré)__
    bon grès,? mal grès <<- ->> bon gré, mal gré|bon gré mal gré                          # Confusion. Le grès est une roche détritique.
__[i]/conf(conf_au_gré_de)__
    au (grès) d(?:es?|u) @@3 <<- -1>> gré                                                 # Confusion probable. Le grès est une roche détritique.
__[i]/conf(conf_de_gré_ou_de_force)__
    de (grès) ou de force @@3 <<- -1>> gré                                                # Confusion. Le grès est une roche détritique.
__[i]/conf(conf_de_bon_gré)__
    de (?:bon|mauvais|(?:[mts]on|[nv]otre|leur) plein) (grès) @@$ <<- -1>> gré            # Confusion. Le grès est une roche détritique.
__[i]/conf(conf_contre_leur_gré)__
    contre (?:[mts]on|[nv]otre|leur) (grès) @@$ <<- -1>> gré                              # Confusion probable. Le grès est une roche détritique.
#savoir gré à quelqu’un « lui être reconnaissant »
#au gré de quelqu’un, « selon son goût, son désir »

TEST: il en sera fait à votre {{grès}}
TEST: Il est venu contre son {{grès}}.
TEST: Il viendra de bon {{grès}} ou de mauvais {{grès}}.
TEST: Errer au {{grès}} des vents.
TEST: Errer au {{grès}} du vent.
TEST: Il acceptera de {{grès}} ou de force.
TEST: nous vaincrons, {{bon grès mal grès}}


# héro / héros
__[i]/conf(conf_héros)__
    (?:le|quel|cet?|un|du|au) (héro) @@$
    <<- -1>> héros                                          # Confusion. L’héro est l’abréviation de “héroïne” (la drogue). L’homme héroïque s’écrit “héros”.

TEST: Mon frère, {{ce}} {{héro}} !


# jeune / jeûne
__[i]/conf(conf_jeûne)__
    (jeune) (?:du (?:carême|ramadan)|alimentaire|eucharistique|rituel|sacramentel)  @@0
    <<- -1>> jeûne                                          # Pour les privations alimentaires, écrivez “jeûne”.|https://fr.wiktionary.org/wiki/je%C3%BBne

TEST: il accomplit le {{jeune}} rituel


# la / là
__[i]/conf(conf_celui_celle_là)__
    ce(?:lles?|lui|ux)[ -]la <<- ->> =\0[:-1].replace(" ", "-")+"à"             # Écrivez “là” et non “la”.
__[i]/conf(conf_verbe_impératif_la)__
    ({w2})-(là) @@0,$ <<- morphex(\1, ":V", ":[NAQ]") -2>> la                   # Confusion : pour un COD, utilisez “la”.
__[i]/conf(conf_mot_là)__
    ({w2})-(la) @@0,$ <<- morphex(\1, ":[NAQ]", ":[123][sp]") -2>> là           # Confusion : « \1 » n’est pas un verbe.
__[i]/conf(conf_ne_me_te_se_la)__
    [nmts]e (là) @@3 <<- -1>> la                                                # Confusion : “là” signifie “ici”.|http://fr.wiktionary.org/wiki/l%C3%A0

TEST: {{ceux la}} sont des idiots, rien à en tirer.
TEST: {{celle la}} ne vaut pas mieux, laisse-la tomber.
TEST: Apporte-{{là}} près du feu
TEST: cette {{bête}}-{{la}}
TEST: il ne {{là}} croit pas.


# la / l’a
__[i]/conf(conf_il_elle_on_la_vconj)__
    (?:il|elle|on) (?:nous |vous |)(l’a) +([bcdfghjklmnpqrstvwxz][\w-]+)  @@w,$
    <<- morphex(\2, ":[123][sp]", ":[GQ]") -1>> la                                                  # Confusion probable. Pour un pronom objet féminin, écrivez :
__[i]/conf(conf_ne_la_vconj)__
    ne (?:nous |vous |)(l’a) +([bcdfghjklmnpqrstvwxz][\w-]+) @@w,$
    <<- morphex(\2, ":[123][sp]", ":[GQ]") -1>> la                                                  # Confusion probable. Pour un pronom objet féminin, écrivez :
__[i]/conf(conf_ne_la_lui_leur)__
    ne (l’a) l(?:ui|eur)  @@3
    <<- -1>> la                                                                                     # Confusion probable. Pour un pronom objet féminin, écrivez :
__[i]/conf(conf_me_se_se_la_vconj)__
    [mts]e (l’a) +([bcdfghjklmnpqrstvwxz][\w-]+)  @@3,$
    <<- morphex(\2, ":[123][sp]", ":[GQ]") -1>> la                                                  # Confusion probable. Pour un pronom objet féminin, écrivez :

TEST: on {{l’a}} prit pour une idiote.
TEST: il ne {{l’a}} connaît pas.
TEST: elle ne {{l’a}} leur donne pas sans condition.
TEST: elle se {{l’a}} réserve pour elle-même.


# laissez-passer / laissez-faire
__[i]/conf(conf_laisser_passer)__
    laisser-passer <<- ->> laissez-passer                                                 # Confusion.
__[i]/conf(conf_laisser_aller)__
    laissez-(aller|faire) @@8 <<- ->> laisser-\1                                          # Confusion.

TEST: ils ont oublié leur {{laisser-passer}}.
TEST: il faut en finir avec le {{laissez-aller}}.


# levée / lever
__[i]/conf(conf_lever_de_rideau_soleil)__
    levée?s?(?= d(?:e (?:rideau|soleil))|u soleil) <<- ->> =\0.replace("ée", "er")                  # Confusion. Exemple : une levée de fonds, un lever de soleil.

TEST: {{levée}} de soleil


# lever un lièvre / soulever
__[i]/conf(conf_lever_un_lièvre)__
    (soul\w+) +(?:un|le) lièvre  @@0
    <<- morph(\1, ">soulever ", False) -1>> =\1[3:]
    # Expression impropre. On écrit « lever un lièvre ».|http://fr.wiktionary.org/wiki/lever_le_li%C3%A8vre

TEST: j’ai {{soulevé}} un lièvre, là !


# lieux / lieues / lieus
__[i]/conf(conf_des_lieux)__
    (?:assurances?|états?|visites?|ma[îi]tres?|seigneurs?|magie|chefs?|responsables?|respect|entretien|propreté|propriétaires?|tranquillité|dans|vers|plans?) des (lieue?s)  @@$
    <<- -1>> lieux
    # Confusion probable. Pour désigner un endroit, utilisez “lieux”.|http://fr.wiktionary.org/wiki/lieu
__[i]/conf(conf_lieux_qqch)__
    (lieue?s) (?:aménagée?s|abandonnée?s|accueillante?s|insolites|accessibles|inaccessibles|inexplorée?s|éloignée?s|lointains|louches|réservée?s|proches|touristiques|saints|sacrée?s|connue?s|inconnue?s|méconnue?s|privilégiée?s|mythiques|publics|privée?s|prestigieux|romantiques|stratégiques|historiques|où|humides|secs|de (?:communication|contemplation|culte|chasse|détente|détention|départ|méditation|mémoire|pouvoir|prière|prostitution|sépulture|repos|refuge|stockage|travail|vacances?|spectacles?|conférences?|rassemblements?|stationnement|rencontres?|villégiature))
    @@0
    <<- -1>> lieux
    # Confusion probable. Pour désigner un endroit, utilisez “lieu(x)”.|http://fr.wiktionary.org/wiki/lieu
__[i]/conf(conf_être_à_xxx_lieues)__
    ((?:[eêsf]|demeur|habit|trouv|situ|rest)\w+) à (?:quelques|dix|douze|quinze|seize|vingt|cent|mille|des|\d+) (lieu[sx])  @@0,$
    <<- morph(\1, ">(?:être|habiter|trouver|situer|rester|demeurer?) ", False)
    -2>> lieues
    # Confusion probable. Pour désigner une distance, utilisez “lieues”.|http://fr.wiktionary.org/wiki/lieue
__[i]/conf(conf_avoir_eu_lieu)__
    ({avoir}) +(?:eue?s? +|)(lieu(?:es?|x))  @@0,$
    <<- morph(\1, ">avoir ", False) -2>> lieu                                                       # Confusion. Dans l’expression « avoir lieu », “lieu” est invariable.

TEST: qui est le responsable des {{lieues}} ?
TEST: ce sont des {{lieus}} mythiques
TEST: elle habitait à quelques {{lieux}} d’ici
TEST: Cette réunion ayant eu {{lieue}} loin d’ici


# en général
__[i]/conf(conf_en_général)__
    en (générale) @@3 <<- -1>> général                                                    # Expression impropre. Écrivez :

TEST: On en sait en {{générale}} pas assez.


# mare / marre
__[i]/conf(conf_marre)__
    (marre) @@$ <<- before(r"(?i)(?:la|une|cette|quelle|cette|[mts]a) +$") -1>> mare
    # Confusion. Pour parler d’une petite étendue d’eau, écrivez “mare”. En avoir marre de = en avoir assez de.

TEST: cette {{marre}} est presque sèche.


__[i]/conf(conf_avoir_marre)__
    ({avoir}) +(mare) @@0,$ <<- morph(\1, ":V0a", False) -2>> marre
    # Confusion. Une mare est une petite étendue d’eau.

TEST: j’en ai {{mare}} de tout ça.
TEST: en avoir vraiment {{mare}} de ces conneries.


# mi / mis / mie
__[i]/conf(conf_avoir_mis)__
    ({avoir}) +(mie?) @@0,$ <<- morph(\1, ":V0a", False) -2>> mis                                   # Confusion. Pour le participe passé de mettre, écrivez :
__[i]/conf(conf_mis_en_qqch)__
    (mie?) en (?:abyme|bouteilles?|cause|demeure|évidence|examen|f[ûu]ts?|images?|liquidation|mémoire|musique|œuvres?|paiement|place|pièces?|quarantaine|scène|tonneaux?|service|valeur)  @@0
    <<- -1>> mis                                                                                    # Confusion. Pour le participe passé de mettre, écrivez :
__[i]/conf(conf_mis_à_qqch)__
    (mie?) à (?:jours?|pieds?|dispositions?|part|mal|nue?|contribution|rude|mort)  @@0
    <<- -1>> mis                                                                                    # Confusion. Pour le participe passé de mettre, écrivez :

TEST: Elle a {{mie}} son plus bel ensemble.
TEST: Les éléments {{mi}} en évidence suffisent à le désigner comme coupable.
TEST: Ils étaient partis au restaurant après avoir {{mi}} à jour son profil.      ->> mis|||mis


# n’est-ce pas - ai / es / est
__[i]/conf(conf_n_est_ce_pas)__
    n’(?:es|ai[ets]?s?)[- ]ce[- ]pas <<- ->> n’est-ce pas                                           # Erreur de conjugaison.

TEST: on en a plus qu’assez, {{n’ait-ce pas}} ?


# notre / nôtre -- votre / vôtre
# Hunspell corrige déjà les formes au pluriel (les nôtres).
__[i]/conf(conf_les_nôtres)__
    (?:les?|la|du|des|aux?) ([nv]otres?)  @@$
    <<- not (\1 == "Notre" and after("Père")) -1>> =\1.replace("otre", "ôtre")                      # Confusion : « notre possession », « la nôtre ».
__[i]/conf(conf_notre_votre_qqch)__
    ([nv]ôtres?) ({w_2})  @@0,$
    <<- not before(r"(?i)\b(les?|la|du|des|aux?) +") and morph(\2, ":[NAQ]", False)
    -1>> =\1.replace("ôtre", "otre").rstrip("s")                                                    # Confusion : « notre possession », « la nôtre ».

TEST: C’est la {{votre}} ?
TEST: {{nôtre}} père est si âgé.


# nulle part
__[i]/conf(conf_nulle_part)__
    nul part <<- not morph(word(-1), ":D", False, False) ->> nulle part                             # Confusion : pour dire « en aucun lieu », écrivez :

TEST: car {{nul part}} ailleurs, on n’en trouve une telle concentration


# numérique / digital
__[i]/conf(conf_qqch_numérique)__
    (?:stratégie|appareil|trans(?:ition|formation)|caméra|télévision|banque|connexion|prise|présence|entreprise|com(?:pagnie|munication)|agence|expérience|solution|identité|économie|ère|service)s? (digital(?:es?|aux|))  @@$
    <<- -1>> numérique|numériques
    # Confusion : “digital” est un adjectif se rapportant aux doigts (empreinte digitale, arthrose digitale, etc.). Utilisez :
__[i]/conf(conf_le_numérique)__
    (?:le|du|au) (digital)  @@$
    <<- -1>> numérique
    # Confusion : “digital” est un adjectif se rapportant aux doigts (empreinte digitale, arthrose digitale, etc.). Utilisez :

TEST: une économie {{digitale}} ou rien
TEST: Dans l’ère du {{digital}}, tout va plus vite.


# on / ont
__[i>/conf(conf_on1)__
    (ont) [nmts]’(?!(?:ils?|elles?))  @@0
    <<- not word(-1) -1>> on                                                                        # Confusion probable : “ont” est une conjugaison du verbe avoir.
__[i]/conf(conf_on2)__
    (?<![nmts]’)(ont) ({w_1})  @@0,$
    <<- ( re.search("^[nmts]e$", \2) or
    (not re.search("(?i)^(?:confiance|envie|peine|prise|crainte|affaire|hâte|force|recours|somme)$", \2) and morphex(\2, ":[0123][sp]", ":[QG]")) )
    and morph(word(-1), ":Cs", False, True)
    -1>> on                                                                                         # Confusion probable : “ont” est une conjugaison du verbe avoir.
__[i]/conf(conf_on3)__
    (ont) (?:l(?:ui|eur)|[nv]ous) ({w_2})  @@0,$
    <<- morphex(\2, ":V.*:(?:[1-3][sp])", ":(?:G|1p)")
    and not ( \0.find(" leur ") and morph(\2, ":[NA].*:[si]", False) ) and not word(-1)
    -1>> on                                                                                         # Confusion probable : “ont” est une conjugaison du verbe avoir.
__[i]/conf(conf_on4)__
    [nmtsl]’(?:y|en) (on) @@$ <<- -1>> ont                                                          # Confusion. Exemples : « on y va », « ils ont faim ».
__[i]/conf(conf_on5)__
    [nmts]e l’(on) @@5 <<- -1>> ont                                                                 # Confusion. Exemples : « on y va », « ils ont faim ».
__[i]/conf(conf_on6)__
    qui +(on) @@$
    <<- not morph(word(-1), ":[VR]", False, False) and not morph(word(1), ":(?:3s|Oo|X)", False)
    -1>> ont                                                                                        # Confusion probable. Exemples : « on y va », « ils ont faim ».

TEST: {{ont}} m’assure qu’il n’y en a pas.
TEST: {{Ont}} ne sait jamais quoi faire
TEST: Qu’importe, {{ont}} leur prend tout
TEST: n’y {{on}} jamais lieu de telles abominations !
TEST: ces chiens te l’{{on}} {{donné}}
TEST: si {{ont}} donne à ces gens, ça n’en finit plus.
TEST: qui n’ont somme toute que le désir de vivre paisiblement


# ou / où
__[i]/conf(conf_où_verbe)__
    ^(Ou) ({w_2}) @@0,3 <<- morphex(\2, ":3[sp]", ":Y") -1>> Où                             # Confusion probable. Utilisez “où” pour “en quel lieu”.
__[i]/conf(conf_au_moment_par_d_où)__
    (?:au moment |jusqu |par |d’)(ou) @@$ <<- -1>> où                                       # Confusion. On écrit “ceci ou cela” mais “où aller ?”, “par où aller”, “au moment où”…
__[i]/conf(conf_vers_où)__
    vers (ou) @@5 <<- not morph(word(-1), ":D", False, False) -1>> où                       # Confusion probable. On écrit “ceci ou cela” mais “vers où aller ?”
__[i]/conf(conf_jusqu_où_au_cas_où)__
    (?:au|le|des) cas (ou) @@$ <<- -1>> où                                                  # Confusion. On écrit “ceci ou cela” mais “où aller ?”

TEST: {{Ou}} sont tes affaires ?
TEST: au moment {{ou}} elle allait enfin réussir
TEST: vers {{ou}} se tourner quand tout va mal ?
TEST: pour le cas {{ou}} on serait arrêté dans notre élan.


# pain / pin
__[i]/conf(conf_pain_qqch)__
    (pins?) (?:d’épices?|perdus?|sans glutens?) @@0 <<- -1>> =\1.replace("pin", "pain")
    # Confusion. Le pin est un arbre résineux à aiguilles persistantes. Pour parler la pâte de farine et d’eau cuite au four, écrivez :
__[i]/conf(conf_manger_pain)__
    ((?:mang|dévor|aval|englout)\w+) +(?:les?|d(?:u|es)|un|[mts](?:on|es)|leurs?|[nv]o(?:s|tre)) +(pins?)  @@0,$
    <<- morph(\1, ">(?:manger|dévorer|avaler|engloutir) ") -2>> =\2.replace("pin", "pain")
    # Confusion probable. Le pin est un arbre résineux à aiguilles persistantes. Pour parler la pâte de farine et d’eau cuite au four, écrivez :
__[i]/conf(conf_pomme_de_pin)__
    pommes? de (pains?) @@$ <<- -1>> pin
    # Le pain est une pâte de farine et d’eau cuite au four. La pomme de pin est le fruit du pin.|https://fr.wiktionary.org/wiki/pomme_de_pin

TEST: Je ne mange que du {{pin}} sans gluten.
TEST: Il avala son {{pin}} avec gloutonnerie.
TEST: Là, ce sont des pommes de {{pain}}.


# pair / paire
__[i]/conf(conf_aller_de_pair)__
    ((?:all|v|ir)\w+) de (pair(?:es?|s)|perd?s?)  @@0,$
    <<- morph(\1, ">aller ", False) -2>> pair                                                       # Confusion. On écrit « aller de pair ».

TEST: Ils vont de {{paires}}.


# pâle / pale
__[i]/conf(conf_être_pâle)__
    ({etre}) +(pales?)  @@0,$
    <<- morph(\1, ":V0e", False) -2>> =\2.replace("pal", "pâl")
    # Utilisez “pâle” pour évoquer la pâleur… Une pale est, entre autres choses, un élément d’une hélice.|http://fr.wiktionary.org/wiki/pale
__[i]/conf(conf_qqch_pâle)__
    (?:airs?|lu(?:mière|eur)s?|teinte?s?|co(?:loris|uleurs?)|peaux?|visages?|bleus?|rouges?|jaunes?|verts?|gris|oranges?|violets?|pourpres?) +(pales?) @@$
    <<- -1>> =\1.replace("pal", "pâl")
    # Utilisez “pâle” pour évoquer la pâleur… Une pale est, entre autres choses, un élément d’une hélice.|http://fr.wiktionary.org/wiki/pale

TEST: Elle est très {{pale}} !
TEST: Sous une lumière {{pale}},


# parti / partie
__[i]/conf(conf_prendre_parti)__
    (pr\w+) +(parti(?:s|es?)) @@0,$ <<- morph(\1, ">prendre ", False) -2>> parti                    # Confusion. On écrit « prendre parti ».
__[i]/conf(conf_tirer_parti)__
    (tir\w+) +(parti(?:s|es?)) @@0,$ <<- morph(\1, ">tirer ", False) -2>> parti                     # Confusion. On écrit « tirer parti ».
__[i]/conf(conf_faire_partie)__
    (f[aieoî]\w+) +(parti(?:s|es|)) @@0,$ <<- morph(\1, ">faire ", False) -2>> partie               # Confusion. On écrit « faire partie ».
__[i]/conf(conf_juge_et_partie)__
    juges? et partis? <<- ->> juge et partie|juges et parties                                       # Confusion. On écrit « être juge et partie ».
__[i]/conf(conf_prendre_à_partie)__
    (pr\w+) +(?:{w_2} +|)([àa] partis?) @@0,$ <<- morph(\1, ">prendre ", False) -2>> à partie       # Confusion. On écrit « prendre à partie ».

TEST: Elle prend toujours {{partie}} aux réunions.
TEST: Il faut savoir tirer {{partis}} de ces atouts-là.
TEST: Tu fais {{parti}} de l’élite, enfin, façon de parler.
TEST: Nous sommes tous d’une manière ou d’une autre {{juge et parti}}.
TEST: Prendre Damien {{à parti}}.


# pâte / patte
__[i]/conf(conf_coq_en_pâte)__
    (?:coqs?) en (pattes?) @@$ <<- -1>> pâte                                              # Confusion. Patte = jambe. Pâte = matière pâteuse.

TEST: Il est comme un coq en {{pattes}} là.


# peu / peut / peux
__[i]/conf(conf_peu_de_qqch)__
    (peu[xt]) d(?:e |’)({w_2}) @@0,$
    <<- morph(\2, ":[NAQ]") -1>> peu                                        # Confusion probable : « \1 » est une conjugaison de “pouvoir”, utilisez “peu” pour dire “pas beaucoup”.

TEST: Et {{peut}} de gens peuvent en dire autant.
TEST: Il est guéri et peut de nouveau travailler.


# peut-être / peut être
__[i]/conf(conf_peut_être_adverbe1)__
    ({w1}) (peut être) @@0,$ <<- morphex(\1, ":V", ":(?:N|A|Q|G|MP)") -2>> peut-être      # Confusion probable. Pour dire “possiblement”, écrivez :
__[i]/conf(conf_peut_être_adverbe2)__
    ^ *(peut être) @@$ <<- -1>> peut-être                                                 # Confusion probable. Pour dire “possiblement”, écrivez :

TEST: {{Peut être}} qu’on en saura plus demain.
TEST: Ils vont {{peut être}} enfin faire quelque chose de leur misérable existence.
TEST: L’un peut être réglé immédiatement


# plain / pied
__[i]/conf(conf_de_plain_pied)__
    (?:de|au) (pleins?[- ]pieds?) @@3 <<- -1>> plain-pied                                 # Écrivez « plain-pied ». Plain (vieux) : qui est plat, uni.

TEST: C’est une maison de {{plein pied}}.


# pôle / pole
__[i]/conf(conf_pôle)__
    pole(?! position| dance) <<- ->> pôle                                                 # « pole », uniquement pour la « pole position » ou la « pole dance ».

TEST: il y a {{un}} {{pole}} d’activités pas loin d’ici.
TEST: il est parti en pole position.
TEST: elle fait de la pole dance.


# diagnostic / diagnotique // pronostic / pronostique
__[i]/conf(conf_diagnostic_pronostique)__
    (?:diagnostique|pronostique)s?
    <<- ( \0.endswith("s") and before(r"(?i)\b(?:[mtscd]es|[nv]os|leurs|quels) $") )
    or ( \0.endswith("e") and before(r"(?i)\b(?:mon|ce|quel|un|du) $") )
    ->> =\0.replace("que", "c")                                                           # Confusion. Le nom s’écrit avec un “c”.

TEST: Ce {{diagnostique}} est absurde.
TEST: C’est la valse des {{pronostiques}} contradictoires aujourd’hui.


# pu / pus
__[i]/conf(conf_pu)__
    ({avoir}) +(pu(?:es?|s)) @@0,$ <<- morph(\1, ":V0a", False) -2>> pu                   # Confusion. Pour le participe passé de pouvoir, écrivez :

TEST: Ils étaient partis au restaurant après avoir {{pue}} dire un mot.           ->> pu


# quand même / comme même
__[i]/conf(conf_)__
    comme même <<- morph(word(1), ":(?:Os|C)", False, True) ->> quand même                # Confusion probable.|http://fr.wiktionary.org/wiki/quand_m%C3%AAme

TEST: {{comme même}} il y va fort, le saligaud !
TEST: La météo disait qu’il ferait beau temps, mais il pleut {{comme même}}…


# quel que soit / quoi qu’il en soit
__[i]/conf(conf_quel_que_soit)__
    quelques? soi(?:ent|t|s|)
    <<- ->> quel que soit|quelle que soit|quels que soient|quelles que soient             # Confusion.|https://fr.wiktionary.org/wiki/quel_que_soit
__[i]/conf(conf_quoi_qu_il_en_soit)__
    quoiqu il en soit <<- not morph(word(1), ":[AQ]", False) ->> quoi qu’il en soit       # Confusion.|https://fr.wiktionary.org/wiki/quoi_qu%E2%80%99il_en_soit

TEST: {{quelques soient}} les avantages d’un correcteur…
TEST: {{quoiqu’il en soit}}, nous ne nous laisserons pas faire, vous pouvez compter sur nous.


# quelque part
__[i]/conf(conf_quelque_part)__
    quel(?:(?:le|)s? que par[ts]?|ques? pars?) <<- ->> quelque part                       # Confusion probable.|https://fr.wiktionary.org/wiki/quelque_part

TEST: Il faut bien aller {{quelle que part}}.
TEST: Je les ai oubliés {{quelque pars}}.


# quelquefois / quelques fois
# Note : quelquefois ne peut être vérifié ici, puisque le mot est supprimé par le préprocesseur.
#__[i]/conf(conf_)__
#    quelques? fois(?! au cours| par)
#    <<- not morph(word(-1), ":D", False, False)
#    ->> quelquefois
#    # 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


__[i]/conf(conf_quelquefois_quelques_fois)__
    qu(?: elles? que fois?|elles? que fois?|elque fois) <<- ->> quelquefois|quelques fois
    # 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  

TEST: {{Quelles que fois}}, on y comprend plus rien.
TEST: {{Qu’elle que fois}}, on y comprend plus rien.
TEST: Il y va {{quelque fois}} par an.


# quoique / quoi que
__[i]/conf(conf_de_quoi_que)__
    de (quoique) @@3 <<- -1>> quoi que                                                    # Confusion.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=1571

TEST: de {{quoique}} ce soit, je ne veux pas en entendre parler.


# quoiqu’il en coûte
__[i]/conf(conf_quoi_qu_il_en_coûte)__
    (quoiqu il) en (?:co[uû]te) @@0 <<- not word(1) -1>> quoi qu’il                       # Confusion probable.

TEST: Elle y parviendra, {{quoiqu’il}} en coûte.


# raisonner / résonner
__[i]/conf(conf_raisonner)__
    (?:la|les?|[mts]e|[nv]ous) (résonn\w+)  @@$
    <<- morph(\1, ">résonner ", False) -1>> =\1.replace("réso", "raiso")                  # Confusion probable. Vous utilisez la raison, mais vous ne « sonnez » pas.

TEST: Vous {{résonnez}} comme un sot.
TEST: Nous allons le {{résonner}}.


# ris / riz
__[i]/conf(conf_ris_de_veau_agneau)__
    (riz?) (?:de veaux?|d’agneaux?) @@0 <<- -1>> ris                                      # Confusion.|http://fr.wiktionary.org/wiki/ris

TEST: Elles ont préparé un {{riz}} de veau.


# saint / sain / sein / seing
__[i]/conf(conf_saint)__
    (s[ae]in) ([A-ZÉÊÈ]\w+) @@0,$ <<- morph(\2, ":M1", False) and morph(word(-1), ":(?:R|[123][sp])", False, True) -1>> saint
    # Confusion : “sain” signifie “en bonne santé”, le sein est un organe thoracique féminin. Pour évoquer ce qui est “sanctifié”, écrivez :|https://fr.wiktionary.org/wiki/saint
__[i]/conf(conf_sein)__
    (?:en|dans|sur) [mts]on (saint?) @@$ <<- -1>> sein
    # Confusion : “sain” signifie “en bonne santé”, “saint” évoque ce qui “sanctifié”. Pour évoquer, au sens figuré, ce qui est une partie intime de quelque chose ou quelqu’un, écrivez :|https://fr.wiktionary.org/wiki/sein
__[i]/conf(conf_au_sein_de)__
    au (sain) d(?:es?|u) @@3 <<- -1>> sein
    # Confusion : “sain” signifie “en bonne santé”, “saint” évoque ce qui “sanctifié”. Pour évoquer, au sens figuré, ce qui est une partie intime de quelque chose ou quelqu’un, écrivez :|https://fr.wiktionary.org/wiki/sein
__[i]/conf(conf_blanc_seing)__
    blanc-(?:s[ae]int?)(s|) @@$ <<- ->> blanc-seing\1                                     # Confusion.|http://fr.wiktionary.org/wiki/blanc-seing

TEST: il priait {{sain}} Anselme de le secourir.
TEST: Au {{sain}} de l’obscurité, elle se sentait en sécurité.
TEST: Sur son {{sain}}
TEST: en son {{saint}}.
TEST: {{blanc-sein}}


# sale / salle
__[i]/conf(conf_salle_qqch)__
    (sales?) (?:d’(?:accouchement|arcade|attente|audience|eau|escalade|échographie|embarquement|exposition|hospitalisation|observation|opération|urgence)s?|d(?:es?|u) (?:bain|bal|banquet|billard|bloc|cinéma|classe|colle|commandement|concert|conférence|conseil|consultation|cours|culture|danse|départ|fête|formation|garde|gym|gymnastique|infirmier|lecture|machine|malade|mammographie|marché|mariage|musculation|musique|ordinateur|presse|prière|prof(?:esseur|)|projection|radio|radiographie|réanimation|réception|rédaction|rééducation|restaurant|réunion|réveil|séjour|shoot|soin|spectacle|sport|stockage|théâtre|tir|toilette|torture|trading|travail|vente|fitness|infirmier|jeu|repos|urgence)s?|à manger) @@0
    <<- -1>> =\1.replace("sale", "salle")
    # Confusion : “sale” signifie “malpropre”. Pour désigner une pièce, écrivez :
__[i]/conf(conf_être_sale)__
    ({etre}) +(salles?)  @@0,$
    <<- morph(\1, ":V0e", False) -2>> =\2.replace("salle", "sale")
    # Confusion. Une salle est une pièce. Pour la malpropreté, écrivez :

TEST: dans la {{sale}} des professeurs
TEST: une {{sale}} d’arcade
TEST: ils sont tellement {{salles}}
TEST: pour le service en salle


# sans / sens
__[i]/conf(conf_sens_dessus_dessous)__
    sans[ -]dessus[ -]dessous <<- ->> sens dessus dessous       # Confusion. Locution adverbiale : « sens dessus dessous ».|https://fr.wiktionary.org/wiki/sens_dessus_dessous

TEST: Tout est {{sans dessus dessous}}.


# sceptique / septique
__[i]/conf(conf_qqch_septique)__
    (?:fosse|installation|choc|chirurgie|maladie|plaie|blessure|embolie|arthrite|isolement|pneumo-entérite)s? (sceptiques?)  @@$
    <<- -1>> =\1.replace("scep","sep")                          # Confusion possible. Septique = corrompu, infecté. Sceptique = ayant des doutes.
__[i]/conf(conf_être_sceptique)__
    ({etre}|demeur\w+) +(septiques?)  @@0,$
    <<- morph(\1, ">(?:être|demeurer) ", False) -2>> =\2.replace("sep", "scep")
    # Confusion possible. Septique = corrompu, infecté. Sceptique = ayant des doutes.

TEST: cette fosse {{sceptique}} est pleine.
TEST: Je suis {{septique}} !


# s’ensuivre
__[i]/conf(conf_s_ensuivre)__
    s’en (sui\w+) @@$ <<- morph(\1, ">suivre ", False) ->> s’en\1                         # Verbe « s’ensuivre ».

TEST: {{S’en suivit}} une guerre de tous les instants.
TEST: {{S’en suivre}}.


# soi / soit
__[i]/conf(conf_soi_disant)__
    soi[tse]?[ -]disante?s? <<- not re.search("(?i)^soi-disant$", \0) ->> soi-disant      # Confusion : “soi-disant” est un adjectif invariable.|http://fr.wiktionary.org/wiki/soi-disant

TEST: Méfiez-vous de cette {{soi-disante}} sorcière.
TEST: Méfiez-vous de cette {{soit-disant}} sorcière.
TEST: Méfiez-vous de cette {{soi disant}} sorcière.


__[i]/conf(conf_prep_soi)__
    (?:chez|don de|sur|avec|pour) (soit) @@$ <<- not after(" soit ") -1>> soi             # Confusion probable.
__[i]/conf(conf_en_soi)__
    (?<!’)en (soit)  @@3
    <<- morph(word(1), ":[GY]", True, True) and not before("(?i)quel(?:s|les?|) qu $|on $|il $") and not after(" soit ")
    -1>> soi                                                                              # Confusion probable.
__[i]/conf(conf_quel_que_soit)__
    quel(?:le|)s? que (soi(?:es?|)) @@$ <<- -1>> soit|soient                              # Confusion probable. 
__[i]/conf(conf_soi_même1)__
    (soi[tes]s? mêmes?) @@$
    <<- 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.
__[i]/conf(conf_soi_même2)__
    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.

TEST: chez {{soit}}, c’est presque toujours mieux.
TEST: ce n’est pas la philosophie en {{soit}} qui est problématique
TEST: quel que {{soie}} sa pensée, je refuse d’y accorder de l’attention.
TEST: Penser par {{soit même}}…
TEST: S’aimer {{soit-même}}, c’est le début d’une grande histoire d’amour. (Oscar Wilde)
TEST: Je regrette que l’on en soit encore à des considérations que je croyais dépassées
TEST: Quoi qu’il en soit


# son / sont
__[i]/conf(conf_ne_sont)__
    ne (?:l(?:e|eur|ui) |[nv]ous |)(son)  @@$
    <<- -1>> sont                   # Confusion : “son” est un déterminant ou un nom masculin. Le verbe “être” à la 3ᵉ personne du pluriel s’écrit “sont”.
__[i]/conf(conf_me_te_se_son)__
    [mts]e (son)  @@3
    <<- -1>> sont                   # Confusion : “son” est un déterminant ou un nom masculin. Le verbe “être” à la 3ᵉ personne du pluriel s’écrit “sont”.
__[i]/conf(conf_son_qqch)__
    (sont) ({w_2})  @@0,$
    <<- ( morphex(\2, ":N.*:[me]:s", ":[GW]") or (re.search("(?i)^[aeéiîou]", \2) and morphex(\2, ":N.*:f:s", ":G")) )
    and ( before(r"(?i)^ *$|\b(?:à|avec|chez|dès|contre|devant|derrière|par|pour|sans|sur) +$|, +$| en +$|^en +$") 
    or (morphex(word(-1), ":V", ":(?:G|W|[NA].*:[pi])") and not before(r"(?i)\bce que?\b")) )
    -1>> son                        # Confusion : “sont” est le verbe “être” à la 3ᵉ personne du pluriel. Pour le déterminant, écrivez “son”.

TEST: ne leur {{son}} pas odieux.
TEST: Ces chiens me {{son}} odieux.
TEST: {{sont}} {{pain}}
TEST: en {{sont}} {{absence}}
TEST: elles s’en sont mal portées
TEST: ils en sont reconnaissants


# statu / statut
__[i]/conf(conf_statu_quo)__
    statu[tse] quo <<- ->> statu quo                                                      # Confusion.|https://fr.wiktionary.org/wiki/statu_quo
__[i]/conf(conf_statue_statut)__
    statu(?! quo) <<- ->> statut|statue                                                   # Confusion : “statu” ne s’emploie que dans l’expression “statu quo”.

TEST: Ça n’en finit pas, c’est le {{statut quo}}.
TEST: Quelle splendide {{statu}}.


# sur / sûr
__[i]/conf(conf_sûr_que)__
    (sure?s?) que?  @@0
    <<- -1>> =\1.replace("sur", "sûr")
    # Confusion probable : “sur” est une préposition ou un adjectif signifiant acide ou aigre ; utilisez “sûr” pour certain, vrai ou sans danger.|http://fr.wiktionary.org/wiki/sur
__[i]/conf(conf_sûre_surs_de)__
    (sur(?:es?|s)) de?  @@0
    <<- -1>> =\1.replace("sur", "sûr")
    # Confusion probable : “sur” un adjectif signifiant acide ou aigre ; utilisez “sûr” pour certain, vrai ou sans danger.|http://fr.wiktionary.org/wiki/sur
__[i]/conf(conf_sûr_de)__
    (sur) d(?:e (?:m(?:oi|es?|on|a)|t(?:oi|es?|on|a)|vous|nous|l(?:ui|es?)|s(?:oi|es?|on|a)|ce(?:ci|la|s|tte|t|)|ça)|’(?:elles?|eux))  @@0
    <<- -1>> sûr
    # Confusion probable : “sur” est une préposition ou un adjectif signifiant acide ou aigre ; utilisez “sûr” pour certain, vrai ou sans danger.|http://fr.wiktionary.org/wiki/sur
__[i]/conf(conf_sûr_de_vinfi)__
    (sur) de (?:l(?:a |’|es? |ui |eur )|)({infi})  @@0,$
    <<- morph(\2, ":Y", False)
    -1>> =\1.replace("sur", "sûr")
    # Confusion probable : “sur” est une préposition ou un adjectif signifiant acide ou aigre ; utilisez “sûr” pour certain, vrai ou sans danger.|http://fr.wiktionary.org/wiki/sur
__[i]/conf(conf_en_lieu_sûr)__
    en lieu (sur)  @@8
    <<- -1>> sûr
    # Confusion probable : “sur” est une préposition ou un adjectif signifiant acide ou aigre ; utilisez “sûr” pour certain, vrai ou sans danger.|http://fr.wiktionary.org/wiki/sur

TEST: Je suis {{sure}} qu’il ne va pas tarder à venir
TEST: {{sures}} d’elles-mêmes, elles ne s’en laissent pas conter.
TEST: {{sur}} de toi et de moi, que peut-il nous arriver, sinon le meilleur.
TEST: Il est tellement {{sur}} de la trouver.
TEST: ils sont en lieu {{sur}} et introuvables.


# tâche / tache (de chocolat / rousseur / vin / sang / café / gras / graisse / huile / etc.)
__[i]/conf(conf_tache_de_qqch)__
    (tâches?) d(?:e +|’)({w_2})  @@0,$
    <<- morphex(\2, ":N", ":[GMY]|>(?:fonds?|grande (?:envergure|ampleur|importance)|envergure|ampleur|importance|départ|surveillance) ") and not before("accompl|dél[éè]gu")
    -1>> =\1.replace("â", "a")
    # Confusion probable. Une tâche est un travail à accomplir. Pour une salissure, une altération, une marque, une coloration… employez “tache”.
__[i]/conf(conf_tache_indélébile)__
    (tâches?) +indélébiles?  @@0
    <<- -1>> =\1.replace("â", "a")
    # Confusion. Une tâche est un travail à accomplir. Pour une salissure, une altération, une marque, une coloration… employez “tache”.

TEST: une {{tâche}} de chocolat                                             ->> tache
TEST: une {{tâche}} vraiment indélébile
TEST: en tâche de fond
TEST: la tâche de la justice
TEST: déléguer des tâches de sécurité publique à des machines autonomes
TEST: tirer bénéfice de nouvelles données en fonction de la tâche de départ qui leur a été assignée
TEST: Les « pervenches » fonctionnaires seraient alors affectées à d’autres tâches de surveillances, notamment au sein de la nouvelle brigade anti-insécurité.


# taule / tôle
__[i]/conf(conf_aller_en_taule)__
    ({aller}) +en (t[ôo]les?)  @@0,$
    <<- morph(\1, ">aller ", False) -2>> taule                            # Confusion. La tôle est une plaque de métal laminé. Pour la prison, écrivez :
__[i]/conf(conf_faire_de_la_taule)__
    (f[aiî]\w+) +de la (t[ôo]les?)  @@0,$
    <<- morph(\1, ">faire ", False) -2>> taule                            # Confusion. La tôle est une plaque de métal laminé. Pour la prison, écrivez :
__[i]/conf(conf_tôle_qqch)__
    (taules?) (?:(?:boulonné|cintré|émaillé|embouti|galvanisé|gaufré|nervuré|ondulé|perforé|soudé|translucide)e?s?|(?:d(?:e |’)|en )(?:acier|alu|aluminium|bardage|cuivre|étanchéité|fer|festonnage|inox|laiton|métal|trapèze|zinc|éverite|fibro-?ciment|plastique|polycarbonate|PVC)s?)  @@0
    <<- -1>> =\1.replace("au", "ô")                                         # Confusion. La taule est la forme argotique pour évoquer la prison, le bordel ou toute forme d’habitation.

TEST: Demain, il va aller en {{tôle}}.
TEST: Tu as fait de la {{tôle}} ?
TEST: C’est la {{taule}} galvanisée.


# tant / temps (2e partie)
__[i]/conf(conf_en_tant_que)__
    en (temps|tan) que? @@3 <<- -1>> tant                         # Confusion. Écrivez « en tant que ».|http://fr.wiktionary.org/wiki/en_tant_que
__[i]/conf(conf_il_être_tant_de)__
    il ({etre}) +(tant?) d(?:e |’)({infi}|ne|en|y)  @@3,w,$
    <<- morph(\1, ":V0e", False) and morph(\3, ":Y|>(?:ne|en|y) ", False)
    -2>> temps                                                              # Confusion.

TEST: en {{tan}} que meneuse intrépide, elle a toujours fait preuve d’une grande imagination.
TEST: il est bien évidemment {{tant}} d’en finir avec ça.


# teint / tain / thym
__[i]/conf(conf_sans_tain)__
    (?:glace|miroir|verre)s? sans (tains|teints?|thyms?) @@$ <<- -1>> tain                # Confusion.|http://fr.wiktionary.org/wiki/glace_sans_tain
__[i]/conf(conf_fond_de_teint)__
    fonds? de (tains?|teints|thyms?) @@$ <<- -1>> teint                                   # Confusion.|https://fr.wiktionary.org/wiki/fond_de_teint

TEST: Elle l’a observé par un miroir sans {{teint}}.
TEST: Elle a acheté un nouveau fond de {{tain}}.


# tort / tord
__[i]/conf(conf_à_tort)__
    à (tords?) @@2 <<- -1>> tort                                    # Confusion : “tord” est une conjugaison du verbe tordre.
__[i]/conf(conf_avoir_tort)__
    ({avoir}) +(tords?) @@0,$
    <<- morph(\1, ">avoir ", False) -2>> tort                       # Confusion : “tord” est une conjugaison du verbe tordre.

TEST: elles seront à {{tord}} accusées.
TEST: ils ont {{tords}}…
TEST: ils ont {{tord}}.                                                           ->> tort|||tordu
TEST: ils n’ont pas {{tord}}.                                                     ->> tort|||tordu


# venimeux / vénéneux
__[i]/conf(conf_qqch_venimeux)__
    (?:serpent|araignée|scorpion|vipère|cobra|crapaud|grenouille|dendrobate|poulpe|guêpe|abeille|méduse|morsure|piqûre|dard|dent|croc|crochet)s? +(vénéneu(?:x|ses?))  @@$
    <<- -1>> =\1.replace("énén", "enim")                                    # Confusion : “vénéneux” se dit des plantes, employez “venimeux”.
__[i]/conf(conf_qqch_vénéneux)__
    (?:(?:plante|champignon|lépiote|fruit|herbe|fleur|chair|moule|humus|substance)s?|végéta(?:l|ux)) +(venimeu(?:x|ses?))  @@$
    <<- -1>> =\1.replace("enim", "énén")                                    # Confusion : pas de venin ici.

TEST: ces araignées {{vénéneuses}}.
TEST: ce champignon {{venimeux}}.


# verre / vers / vert / ver
__[i]/conf(conf_ver)__
    (?:[lc]e|du|un) (ver(?:re|t)s?) +(?:qui +|)(?:est +|étai[ts] +|serai?[st]? +|f[uû][ts] +|)dans le fruit  @@3
    <<- -1>> ver            # Confusion. Verre = matière. Vert = couleur. Vers = suite de mots rythmés. Vers = préposition (« en direction de »). Pour l’animal, écrivez :
__[i]/conf(conf_ver_de_terre)__
    (ver(?:re|t)s?) de terre @@0
    <<- -1>> =\1.replace("re", "").replace("t", "")
    # Confusion. Verre = matière. Vert = couleur. Vers = suite de mots rythmés. Vers = préposition (« en direction de »). Pour l’animal, écrivez :

TEST: en finir avec le {{vert}} qui était dans le fruit.
TEST: un immonde {{vert}} de terre


# vieil / vieux
__[i]/conf(conf_vieil_euphonie)__
    (vieux) ([aeioué]\w+|homme)  @@0,$
    <<- morph(\2, ":[NAQ].*:[me]:s") -1>> vieil
    # Euphonie. Utilisez « vieil » pour un nom masculin singulier commençant par une voyelle ou un h.|https://fr.wikipedia.org/wiki/Euphonie

TEST: ce {{vieux}} homme
TEST: c’est un {{vieux}} imbécile.
TEST: Le {{vieux}} homme était parti.                         ->> vieil


# nouveau / nouvel
# TODO


# vu / vue
__[i]/conf(conf_point_de_vue)__
    points? de (vu(?:es|s|)) @@$ <<- -1>> vue                                             # Mettez au féminin singulier.

TEST: Son point de {{vu}} prévaudra toujours, faites-vous à cette idée ou dégagez.
TEST: de mon point de {{vues}}



# TESTS À TRIER

TEST: après avoir {{mi}} ses souliers tenir
TEST: avoir {{pus}} réussir
TEST: ce qu’ils ont {{pue}}
TEST: il a {{pues}} partir
TEST: très {{suivit}} par ce détective
TEST: de plus en plus {{concerner}} par ce problème
TEST: après avoir mis à jour sont {{profile}}.
TEST: il s’agit de {{mette}} en évidence.
TEST: il était très {{habille}}



############################## MOTS COMPOSÉS ###############################

__[i]/mc(mc_mot_composé)__
    ({w2})-({w2})  @@0,$
    <<- not \1.isdigit() and not \2.isdigit() and not morph(\0, ":", False) and not morph(\2, ":G", False) and spell(\1+\2) ->> \1\2
    # Vous pouvez ôter le trait d’union.
    <<- \2 != "là" and not re.search("(?i)^(?:ex|mi|quasi|semi|non|demi|pro|anti|multi|pseudo|proto|extra)$", \1)
    and not \1.isdigit() and not \2.isdigit() and not morph(\2, ":G", False)
    and not morph(\0, ":", False) and not spell(\1+\2) ->> _
    # Mot inconnu du dictionnaire.|http://www.dicollecte.org/dictionary.php?prj=fr&unknownword=on

TEST: __mc__ des {{portes-avions}}.


############################## MAJUSCULES & MINUSCULES ###############################

# Les jours
__[s]/maj(maj_jours_semaine)__
    (?:Lundi|Mardi|Mercredi|Jeudi|Vendredi|Samedi|Dimanche)
    <<- before(r"[\w,] +$") ->> =\0.lower()
    # Pas de majuscule sur les jours de la semaine.|http://www.academie-francaise.fr/la-langue-francaise/questions-de-langue#42_strong-em-jours-de-la-semaine-pluriel-et-majuscules-em-strong

TEST: Nous vous donnons rendez-vous {{Mercredi}} le 18.


# Les mois
__[s]/maj(maj_mois)__
    (?:Janvier|Février|Avril|Mai|Juin|Juillet|Ao[ûu]t|Septembre|Octobre|Novembre|Décembre|Vendémiaire|Brumaire|Frimaire|Nivôse|Pluviôse|Ventôse|Germinal|Floréal|Prairial|Messidor|Thermidor|Fructidor)
    <<- before(r"[\w,] +$") and not( ( \0=="Juillet" and before("(?i)monarchie +de +$") ) or ( \0=="Octobre" and before("(?i)révolution +d’$") ) )
    ->> =\0.lower()
    # Pas de majuscule sur les mois.|http://www.academie-francaise.fr/la-langue-francaise/questions-de-langue#42_strong-em-jours-de-la-semaine-pluriel-et-majuscules-em-strong
__[s]/maj(maj_mois_mars)__
    (?:[eE]n|[0-3]?[0-9]) (Mars)  @@$
    <<- -1>> mars
    # Pas de majuscule sur les mois.|http://www.academie-francaise.fr/la-langue-francaise/questions-de-langue#42_strong-em-jours-de-la-semaine-pluriel-et-majuscules-em-strong

TEST: 15 {{Septembre}}                                                  ->> septembre
TEST: 23 {{Messidor}}                                                   ->> messidor
TEST: ils viendront en {{Mars}}.                                        ->> mars


# Les États
__[s]/maj(maj_État_qqch)__
    (état) (?:français|belge|suisse|canadien|palestinien|souverain|américain|russe|anglais|allemand|espagnol|italien|mexicain|japonais|chinois|australien|polonais|membre|africain|européen|asiatique|voyou|démocratique|totalitaire|fédéral|fédéré|capitaliste|communiste|providence|nation)  @@0
    <<- -1>> État                                       # Majuscule manquante : si vous parlez de l’institution dirigeante d’une nation, écrivez “État”.
__[s]/maj(maj_États_qqch)__
    (états) (?:français|belge|suisse|canadien|palestinien|souverain|membre|américain|africain|européen|asiatique|voyou|démocratique|totalitaire|fédéra(?:l|ux)|fédéré|capitaliste|communiste|providence|nation)s?  @@0
    <<- -1>> États                                      # Majuscule manquante : si vous parlez de l’institution dirigeante d’une nation, écrivez “État”.

__[s]/maj(maj_qqch_d_État)__
    (?:affaire|agent|administration|chancellerie|chefs|conseil|coup|diplôme|doctorat|emprunt|lycée|propriété|secret|homme|femme|police|religion|ministre|ministère|subvention|secrétaire|secrétariat|raison|ressortissant|université)s? d’(état)  @@$
    <<- -1>> État                                       # Majuscule manquante : si vous parlez de l’institution dirigeante d’une nation, écrivez “État”.
__[s]/maj(maj_qqch_de_l_État)__
    (?:défense|s[ûu]reté|agent|budget|caisse|capitale|constitution|charge|chef|dirigeant|denier|finance|fonction|fonctionnement|frontière|institution|propriété|monopole|pouvoir|rouage|ressource|service|subvention|suprême)s? de l’(état)  @@$
    <<- not re.search("(?i)^fonctions? ", \0) or not before(r"(?i)\ben $")
    -1>> État                                           # Majuscule manquante : si vous parlez de l’institution dirigeante d’une nation, écrivez “État”.

__[s]/maj(maj_État_nation_providence)__
    (états?)-(?:[nN]ation|[pP]rovidence)s?  @@0
    <<- -1>> =\1.replace("é", "É")                      # Majuscule manquante : si vous parlez de l’institution dirigeante d’une nation, écrivez “État”.

TEST: Nous n’avons reçu aucune décision de l’{{état}} fédéral.
TEST: Les {{états}} démocratiques ne sont gouvernés que par des hypocrites et des opportunistes.
TEST: C’est une affaire d’{{état}}.
TEST: la défense de l’{{état}}.                                           ->> État
TEST: C’est une prérogative de l’{{état}}-nation


# gentilés / ethnonymes
__[i]/maj(maj_gentilés)__
    ({w_2}) ((?:afghan|albanais|algérien|allemand|américain|andorran|ango?lais|arabe|argentin|arménien|australien|autrichien|asiatique|azerbaïdjanais|bahamien|bangladais|bengladeshi|barbadien|basque|belge|bélizien|béninois|breton|bhoutanais|biélorusse|birman|bolivien|bosnien|botswanais|brésilien|britannique|brunéien|bulgare|burkinabé|burundais|cambodgien|camerounais|canadien|capverdien|centrafricain|chilien|chinois|chypriote|colombien|comorien|congolais|nord-coréen|corse|costaricien|croate|cubain|danois|djiboutien|dominicain|ivoirien|égyptien|émirati|équatorien|érythréen|estonien|espagnol|états-?unien|étasunien|éthiopien|fidjien|finlandais|formosan|français|gabonais|gambien|géorgien|ghanéen|grec|grenadien|guadeloupéen|guatémaltèque|guinéen|équato-guinéen|guyanien|haïtien|hondurien|hollandais|hongrois|indien|indochinois|indonésien|irakien|italien|iranien|irlandais|islandais|israélien|jamaïcain|japonais|jordanien|kazakh|kényan|kosovar|koweïtien|laotien|lapon|letton|libanais|libérien|libyen|liechtensteinois|lituanien|luxembourgeois|macédonien|maghrébin|malgache|malaisien|malawite|maldivien|malien|maltais|maori|marocain|martien|mauricien|mauritanien|mexicain|micronésien|moldave|monégasque|monténégrin|mongol|mozambicain|namibien|népalais|nicaraguayen|nigérien|nigérian|néerlandais|norvégien|néo-zélandais|ougandais|ouzbek|pakistanais|palestinien|panaméen|paraguayen|perse|péruvien|philippin|polonais|polynésien|portugais|québécois|qatari|roumain|russe|rwandais|salvadorien|sénégalais|serbe|singapourien|slovaque|slovène|somalien|soudanais|srilankais|suédois|suisse|surinamais|syrien|tadjik|tanzanien|tchadien|tchèque|thaïlandais|togolais|tahitien|saoudien|scandinave|sud-africain|sud-coréen|sud-américain|tunisien|turkmène|turc|taïwanais|ukrainien|soviétique|uruguayen|vénézuélien|vietnamien|yéménite|yougoslave|zaïrois|zambien|zimbabwéen)n?e?s?)
    @@0,$
    <<- \2.istitle() and morphex(\1, ":N", ":(?:A|V0e|D|R|B)") and not re.search("(?i)^[oO]céan Indien", \0)
    -2>> =\2.lower()                                                                                # S’il s’agit d’un adjectif, ne mettez pas de majuscule.
    <<- \2.islower() and not \2.startswith("canadienne") and
    ( re.search("(?i)^(?:certaine?s?|cette|ce[ts]?|[dl]es|[nv]os|quelques|plusieurs|chaque|une|aux)$", \1) or
    ( re.search("(?i)^un$", \1) and not after("(?:approximatif|correct|courant|parfait|facile|aisé|impeccable|incompréhensible)") ) )
    -2>> =\2.capitalize()                                                                           # S’il s’agit d’un gentilé, mettez une majuscule.

TEST: des {{français}} sont arrivés
TEST: une référence aux {{israéliens}}
TEST: une {{érythréenne}}
TEST: et des {{soudanaises}}.
TEST: Allemands contre Grecs, Grecs contre Allemands
TEST: sept Français sur dix
TEST: l’océan Indien


__[s]/maj(maj_gentilés2)__
    (?:une? |certaine?s? |cet? |[cdl]es |cette |l[ea] |quelques |plusieurs |chaque )((?:européen|parisien|lyonnais|marseillais|lillois|toulousain|nantais|strasbourgeois|montpelliérain|bordelais|bruxellois|montréalais|londonien|genévois|zurichois|bâlois|berlinois)n?e?s?)  @@$
    <<- -1>> =\1.capitalize()                                                                       # S’il s’agit d’un gentilé, mettez une majuscule.

TEST: des {{parisiens}} en vacances


# les langues
__[s]/maj(maj_langues)__
    ((?:parl|cours|leçon|appr|étud|tradu|enseign|professeur|enseignant|dictionnaire|méthode)\w*) (?:le |d[eu] |l’|d’|qu |)(Afrikaans|Albanais|Allemand|Alsacien|Anglais|Arabe|Aragonais|Arménien|Asturien|Basque|Bengali|Biélorusse|Birman|Bosniaque|Breton|Bulgare|Cantonais|Catalan|Cherokee|Chinois|Corse|Cornique|Coréen|Croate|Danois|Écossais|Espagnol|Espéranto|Estonien|Féroïen|Farsi|Finnois|Flamand|Français|Frison|Galicien|Gallois|Gaulois|Géorgien|Grec|Gujarati|Hakka|Hawaïen|Hébreu|Hindi|Hollandais|Hongrois|Javanais|Ido|Indonésien|Interlingua|Islandais|Italien|Irlandais|Japonais|Kazakh|Khmer|Kurde|Ladino|Laotien|Latin|Ligurien|Limbourgeois|Lituanien|Lombard|Luxembourgeois|Macédonien|Malais|Maldivien|Malgache|Maltais|Mandarin|Maori|Marathi|Marwari|Moldave|Mongol|Napolitain|Néerlandais|Norvégien|Occitan|Ourdou|Ouzbek|Persan|Peul|Piémontais|Polonais|Portugais|Provençal|Quichua|Romanche|Roumain|Russe|Sans[ck]rit|Sarde|Serbe|Sicilien|Sindhi|Slovaque|Slovène|Soudanais|Sorabe|Suédois|Swahili|Tagalog|Tahitien|Tamoul|Tatar|Tchèque|Thaï|Turc|Ukrainien|Vénitien|Vietnamien|Volapük|Wallon|Wo?u|Yiddish|Xhosa|Xiang|Zoulou)  @@0,$
    <<- morph(\1, ">(?:parler|cours|leçon|apprendre|étudier|traduire|enseigner|professeur|enseignant|dictionnaire|méthode) ", False)
    -2>> =\2.lower()                                                                                # Si vous parlez de la langue, pas de majuscule.

__[s]/maj(maj_en_langue)__
    (?:[Ee]n )(Afrikaans|Albanais|Allemand|Alsacien|Anglais|Arabe|Aragonais|Arménien|Asturien|Basque|Bengali|Biélorusse|Birman|Bosniaque|Breton|Bulgare|Cantonais|Catalan|Cherokee|Chinois|Cornique|Coréen|Croate|Danois|Écossais|Espagnol|Espéranto|Estonien|Féroïen|Farsi|Finnois|Flamand|Français|Frison|Galicien|Gallois|Gaulois|Géorgien|Grec|Gujarati|Hakka|Hawaïen|Hébreu|Hindi|Hollandais|Hongrois|Javanais|Ido|Indonésien|Interlingua|Islandais|Italien|Irlandais|Japonais|Kazakh|Khmer|Kurde|Ladino|Laotien|Latin|Ligurien|Limbourgeois|Lituanien|Lombard|Luxembourgeois|Macédonien|Malais|Maldivien|Malgache|Maltais|Mandarin|Maori|Marathi|Marwari|Moldave|Mongol|Napolitain|Néerlandais|Norvégien|Occitan|Ourdou|Ouzbek|Persan|Peul|Piémontais|Polonais|Portugais|Provençal|Quichua|Romanche|Roumain|Russe|Sans[ck]rit|Sarde|Serbe|Sicilien|Sindhi|Slovaque|Slovène|Soudanais|Sorabe|Suédois|Swahili|Tagalog|Tahitien|Tamoul|Tatar|Tchèque|Thaï|Turc|Ukrainien|Vénitien|Vietnamien|Volapük|Wallon|Wo?u|Yiddish|Xhosa|Xiang|Zoulou)  @@3
    <<- -1>> =\1.lower()                                                                            # Si vous parlez de la langue, pas de majuscule.

TEST: il ne parle qu’{{Allemand}}.
TEST: ta traduction en {{Russe}} est superbe.


# Moyen Âge
__[s]/maj(maj_Moyen_Âge)__
    [Mm]oyen[- ][Aâa]ge <<- ->> Moyen Âge                                                  # Le « Moyen Âge ».

TEST: C’est le {{moyen age}}, chez ces ploucs.


# Église
__[s]/maj(maj_Église)__
    [lL]’(église) (?:adventiste|anglicane|copte|catholique|calviniste|épiscopalienne|jacobite|luth[eé]rienne|méthodiste|mormone|néo-?apostolique|orthodoxe|pentecôtiste|presbytérienne|protestante|réformée) @@2
    <<- -1>> Église
    # Lorsqu’on parle de l’institution, une majuscule est requise. Pour un bâtiment, pas de majuscule.
__[s]/maj(maj_homme_d_Église)__
    [hH]ommes? d’(église) @@$
    <<- -1>> Église
    # Lorsqu’on parle de l’institution, une majuscule est requise. Pour un bâtiment, pas de majuscule.
__[s]/maj(maj_qqch_de_l_Église)__
    (?:[cC]hef|[rR]ite|[sS]acrement)s? de l’(église) @@$
    <<- -1>> Église
    # Lorsqu’on parle de l’institution, une majuscule est requise. Pour un bâtiment, pas de majuscule.
__[s]/maj(maj_église_qqch)__
    (Église)s? +(?:baroques?|gothiques?|romanes?|Saint-[A-ZÉÊ]{w_2})  @@0
    <<- before(r"\w") -1>> église
    # Pour un bâtiment, une minuscule est requise. La majuscule est pour l’institution.

TEST: L’{{église}} orthodoxe.                                           ->> Église
TEST: un homme d’{{église}}                                             ->> Église
TEST: les sacrements de l’{{église}}                                    ->> Église
TEST: Une {{Église}} baroque.                                           ->> église
TEST: L’{{Église}} Saint-Paul.                                          ->> église
TEST: Un homme d’{{église}}.                                            ->> Église


# Points cardinaux
__[s]/maj(maj_qqch_du_Nord_Sud)__
    (?:Afrique|Amérique|Asie|Corée|Galles|Europe|Irlande|Soudan|Rhodésie|Territoire) du (nord|sud)  @@$
    <<- -1>> =\1.capitalize()                                                                       # Majuscule manquante.
__[s]/maj(maj_qqch_de_l_Ouest_Est)__
    (?:Afrique|(?:ex-|)Allemagne|Asie|Europe|Pays) de l’(ouest|est) @@$
    <<- -1>> =\1.capitalize()                                                                       # Majuscule manquante.

TEST: Ça se passe en Europe du {{nord}}.
TEST: J’ai visité toute l’Afrique du {{sud}}.
TEST: Dans l’Europe de l’{{ouest}}.


# Unités de mesure
__[s]/maj(maj_unités)__
    (\d+|une?|deux|trois|quatre|cinq|six|sept|huit|neuf|dix|onze|douze|treize|quatorze|quinze|seize|vingt|trente|quarante|cinquante|soixante|septante|octante|huitante|nonante|cents?|mille) ([A-Z]\w+)  @@0,$
    <<- re.search("^(?:Mètre|Watt|Gramme|Seconde|Ampère|Kelvin|Mole|Cand[eé]la|Hertz|Henry|Newton|Pascal|Joule|Coulomb|Volt|Ohm|Farad|Tesla|W[eé]ber|Radian|Stéradian|Lumen|Lux|Becquerel|Gray|Sievert|Siemens|Katal)s?|(?:Exa|P[ée]ta|Téra|Giga|Méga|Kilo|Hecto|Déc[ai]|Centi|Mi(?:lli|cro)|Nano|Pico|Femto|Atto|Ze(?:pto|tta)|Yo(?:cto|etta))(?:mètre|watt|gramme|seconde|ampère|kelvin|mole|cand[eé]la|hertz|henry|newton|pascal|joule|coulomb|volt|ohm|farad|tesla|w[eé]ber|radian|stéradian|lumen|lux|becquerel|gray|sievert|siemens|katal)s?", \2)
    -2>> =\2.lower()
    # Pas de majuscule sur les unités de mesure.|https://fr.wikipedia.org/wiki/Unit%C3%A9_de_mesure

TEST: J’en veux 3 {{Mètres}}.
TEST: Elle en prendra vingt {{Grammes}}.




################################################################# CONJUGAISONS ##############################################################################


#### INFINITIF
__[i]/infi(infi_à_en)__
    à en ({w_2}) @@5
    <<- morphex(\1, ":V", ":Y") -1>> =suggVerbInfi(@)                                               # Le verbe devrait être à l’infinitif.

TEST: à en {{parlé}} sans cesse


__[i]/infi(infi_de)__
    de ({w_2}(?:é|ez))  @@3
    <<- morph(\1, ":V1") and not \1[0:1].isupper()
    and (\1.endswith("z") or not before(r"(?i)\b(?:quelqu(?:e chose|’une?)|(?:l(es?|a)|nous|vous|me|te|se)[ @]trait|personne|rien(?: +[a-zéèêâîûù]+|) +$)"))
    -1>> =suggVerbInfi(@)                                                                           # Le verbe devrait être à l’infinitif.

TEST: Il tentait de {{raisonné}} en homme libre
TEST: sa façon de {{nettoyez}} était inefficace.


__[i]/infi(infi_de_nous_vous_lui)__
    de +(?:[nv]ous|lui) ({w_2}(?:ée?s?|ez))  @@$
    <<- morphex(\1, ":V1", ":M[12P]") -1>> =suggVerbInfi(@)                                         # Le verbe devrait être à l’infinitif.

TEST: de nous {{libérez}} de lui


__[i]/infi(infi_de_le_les)__
    de les? ({w_2}(?:ée?s?|ez|ai[st])) @@$
    <<- morph(\1, ":V1", False) -1>> =suggVerbInfi(@)                                               # Le verbe devrait être à l’infinitif.

TEST: {{de le}} {{changé}}


__[i]/infi(infi_y)__
    (?<!d’)y +({w_2}ée?s?)  @@$
    <<- morphex(\1, ":V", ":[123][sp]") -1>> _                                                      # Le verbe ne devrait pas être un participe passé.

TEST: y {{mangée}} était un supplice


__[i]/infi(infi_pour)__
    pour ({w_2}(?:ée?s?|ez))  @@5
    <<- morphex(\1, ":V1", ":[NM]") and not morph(word(-1), ">(?:tenir|passer) ", False)
    -1>> =suggVerbInfi(@)                                                                           # Le verbe devrait être à l’infinitif.

TEST: pour {{mangé}} à sa faim, il faudra chasser.


__[i]/infi(infi_pour_nous_vous_lui)__
    pour +(?:[nv]ous|lui) ({w_2}(?:ée?s?|ez))  @@$
    <<- morph(\1, ":V1", False) -1>> =suggVerbInfi(@)                                               # Le verbe devrait être à l’infinitif.

TEST: pour nous {{chassez}} de chez lui


__[i]/infi(infi_sans)__
    sans ({w_2}(?:ée?s?|ez))  @@$
    <<- morphex(\1, ":V1", ":[NM]") -1>> =suggVerbInfi(@)                                           # Le verbe devrait être à l’infinitif.

TEST: sans {{dérogez}} aux règles en vigueur dans cet établissement


__[i]/infi(infi_nous_vous)__
    (?:nous|vous) ({w_2}ée?s?)  @@$
    <<- morph(\1, ":Q", False) and not morph(word(-1), "V0.*[12]p", False) -1>> _                   # Le verbe ne devrait pas être un participe passé.

TEST: Nous {{intéressé}} à la question ne suffit pas à faire de nous des experts.


__[i]/infi(infi_devoir_savoir_pouvoir_interrogatif)__
    (d[eouû]\w+|s[auû]\w+|p[eouû]\w+)-(?:ils?|elles?|on|je|tu|nous|vous) +(?:[mts](?:e +|’)|lui +|[nv]ous +|)({w_2})  @@0,$
    <<- morph(\1, ">(?:devoir|savoir|pouvoir) ", False) and morphex(\2, ":(?:Q|A|[123][sp])", ":[GYW]")
    -2>> =suggVerbInfi(@)                                                                           # Après « \1 » , le verbe devrait être à l’infinitif.

TEST: Peuvent-elles s’{{installaient}} ici ?
TEST: Peut-il {{chassé}} ces intrus ?


__[i]/infi(infi_est_ce_que)__
    est-ce que +({w_2})  @@$
    <<- morphex(\1, ":(?:V1.*:Q|[13]s|2[sp])", ":[GYWM]") and not before(r"(?i)\bque? +$")
    -1>> =suggVerbInfi(@)                                                                           # Le verbe devrait être à l’infinitif.

TEST: est-ce que {{rapporté}} ces données nous aidera ?
TEST: est-ce que {{priait}} est la solution ?
TEST: Est-ce que Pierre Xazzz va bien ?
TEST: Qu’est-ce que rapporte réellement Dassault & Co au budget


__[i]/infi(infi_commencer_finir_par)__  ((?:commen[cç]|fin[iî])\w+) +par ({w_2}(?:ée?s?|ai[st]))  @@0,$
    <<- morph(\1, ">(?:commencer|finir) ", False) and morphex(\2, ":V", ":[NGM]") and not \2[0:1].isupper()
    -2>> =suggVerbInfi(@)                                                                           # Le verbe devrait être à l’infinitif.

TEST: commence par {{mangé}} le poulet.
TEST: enfin la petite finit par {{pleuré}} à chaudes larmes.
TEST: sa tournée, elle la finit par Rodez.


#### PARTICIPES PRÉSENTS

__[i]/conj(conj_participe_présent)__  (?:ne|lui|me|te|se|nous|vous) ({w_2}ants)  @@$
    <<- morph(\1, ":A", False) -1>> =\1[:-1]                                                        # Un participe présent est invariable.|http://fr.wiktionary.org/wiki/participe_pr%C3%A9sent

TEST: nous {{épuisants}} à la tâche pour des clopinettes, nous défaillîmes.



#
# //////////////////////////////////////// PRÉPROCESSEUR ////////////////////////////////////////
#

### @ : we remove @ we introduced after le/la/les in some cases
__<s>__  @ <<- ~>> *

### Avant les verbes (ôter seulement les COI!)
__[i]__  ne (leur|lui)(?! en) @@3 <<- ~1>> *

### Après les verbes
__[i]__  jamais <<- ~>> *
__[i]__  guère <<- ~>> *
__[i]__  ({w1}) (pas|point|rien|bien|ensemble) @@0,$ <<- morph(\1, ":V", False) ~2>> *
__[i]__  \w+-(?:je|tu|ils?|elles?|on|[nv]ous) (pas|point|rien|bien|ensemble) @@$ <<- ~1>> *

# sembler le croire/penser/présumer/supposer/envisager/imaginer
__[i]__  que +(sembl\w+) +(l(?:e (?:penser|croire|présumer|supposer)|’(?:envisager|imaginer))) @@w,$
    <<- morph(\1, ">sembler ", False) ~2>> *

### tous / tout / toute / toutes
__[i]__  (tout) (?:le|ce|[mts]on|leur) @@0 <<- ~1>> *
__[i]__  (toute) (?:la|cette|[mts](?:a|on)|leur) @@0 <<- ~1>> *
__[i]__  (tou(?:te|)s) (?:[csmlt]es|[vn]os|leurs) @@0 <<- ~1>> *

### Simplification des groupes nominaux

# désambiguïsation - pour contrer le faux positif qui veut accorder fois avec le participe passé de la proposition suivante
__[s]__  (fois )que? @@0 <<- ~1>> fois=
__[i]__  que (l’)on  @@4 <<- ~1>> *


__[i]__  beaucoup (de (?:monde|temps)) @@9 <<- ~1>> _
__[i]__  en pleine? ({w_2}) @@$
    <<- morph(\1, ":[NAQ]", False) and isEndOfNG() ~>> *
__[i]__  en tant que tel(?:s|lles?|) <<- ~>> *

# de +
__[i]__  d(?:e |’)({infi}) @@$
    <<- morph(\1, ":V[123]_i", False) and isNextNotCOD() ~>> *
__[i]__  de (?:manière|façon) +(?:non +|)({w_2}) +et +(?:non +|)({w_2})  @@w,$
    <<- morph(\1, ":A", False) and morphex(\2, ":A", ":[GM]") ~>> *
__[i]__  de (?:manière|façon) +(?:non +|)({w_2})  @@$
    <<- morph(\1, ":A", False) ~>> *
__[i]__  d(?:e +|’)({w_2}) +({w_2})  @@w,$
    <<- morph(\1, ":[NAQ].*:s", False) and morphex(\2, ":[NAQ].*:s", ":[GV]") and isEndOfNG() ~>> *

__[i]__  (?:les? |la |l’|des |ce(?:s|tte|t|) |[mts](?:es|on|a) |[nv]o(?:s|tre) |leurs? |certaine?s? |quelques |aux? ) *({w2}) +({w2})  @@w,$
    <<- morphex(\1, ":[NAQ]", ":V0") and morphex(\2, ":[NAQ]", ":(?:G|[123][sp]|P)")
    ~2>> *

__[i]__  aucune? (de [nv]ous|d’e(?:ux|lles|ntre (?:[nv]ous|e(?:ux|lles)))) @@$ <<- ~1>> *
__[i]__  aucune? +(des +{w_2}) +ne? @@w <<- ~1>> *
__[i]__  chacune? (de [nv]ous|d’e(?:ux|lles|ntre (?:[nv]ous|e(?:ux|lles)))) @@$ <<- ~1>> *
__[i]__  l’une? (de [nv]ous|des [nv]ôtres|d’e(?:ux|lles|ntre (?:[nv]ous|e(?:ux|lles)))) @@$ <<- ~1>> *
__[i]__  la plupart (des {w_2}) @@11 <<- ~1>> *

# groupe déjà partiellement simplifié (selon les règles de la passe 3)
__[i]__  (?:a(?:ux?|vec)|à|en)   +d(?:e +(?:la |l’|leurs? |ce(?:s|tte|t|) |[nv]o(?:s|tre) |[mts](?:a|on) |quelques? |certaine?s? )|es? |u ) *({w2})  @@$
    <<- morph(\1, ":[NAQ]", False) and isEndOfNG() ~>> *

## y compris (pas terrible, mais cas difficile)
__[i]__  y compris <<- not before("[jn]’$") ~>> *

## eux/nous/vous tous -- elles toutes
__[i]__  [nv]ous (tou(?:te|)s) qui @@5 <<- ~1>> *
__[i]__  eux (tous) qui @@4 <<- ~1>> *
__[i]__  elles (toutes) qui @@6 <<- ~1>> *

## groupe avec préposition
__[i]__  (?:avec|à|s(?:ur|ous|elon)|c(?:ontre|hez)|dans|envers|p(?:ar|our)|aux?) +({w_2})  @@$
    <<- morphex(\1, ":[NAQ]", ":[GY]") and isEndOfNG()
    ~>> *
__[i]__  (?:avec|à|s(?:ur|ous|elon)|c(?:ontre|hez)|dans|envers|p(?:ar|our)) +(?:les? |la |l’|de(?:s| la|) |ce[st]? |cette |[mts](?:es|on|a) |[nv]o(?:s|tre) |leurs? |certaine?s? |quelques ) *({w_2})  @@$
    <<- morph(\1, ":[NAQ]", False) and isEndOfNG()
    ~>> *
__[i]__  lors d(?:’|e(?:s| la|) |u ) *({w_2})  @@$
    <<- morph(\1, ":[NAQ]", False) and isEndOfNG()
    ~>> *

__[i]__  nul doute qu  <<- not word(-1) ~>> *

## de +
__[i]__  d(?:e +|’)(?!autres)({w_2}) @@$
    <<- morphex(\1, ":N", ":[GY]") and isEndOfNG() ~>> *
__[i]__  de (?:ce(?:t|tte|s|)|[mts](?:on|a|es)|[nv](?:otre|os)|leurs) +({w_2})  @@$
    <<- morph(\1, ":[NAQ]", False) and isEndOfNG() ~>> *
__[i]__  de l(?:a|eur) +({w_2})  @@$
    <<- morphex(\1, ":[NAQ]", ":Y") and isEndOfNG() ~>> *

__[s]__  , +, <<- ~>> *
__[s]__  ^ *, <<- ~>> *
__[s]__  , *$ <<- ~>> *
__[s]__  [—–-] +[—–-] <<- ~>> *
__[s]__  [<] +[>] <<- ~>> *
__[s]__  [(] +[)] <<- ~>> *


TEST: tandis que d’autres perçoivent le bon goût de la soupe.


#
# //////////////////////////////////////// RÈGLES DE CONTRÔLE ////////////////////////////////////////
#


#### CONFUSIONS

# guerre / guère
__[i]/conf(conf_ne_pronom_pronom_verbe_guère)__
    ne (?:[mts]e|la|les?|[nv]ous|lui|leur) (?:la |les? |lui |leur |l’|)\w{w_2} (?:plus |)(guerre)  @@$
    <<- -1>> guère                                                                                  # Confusion. La guerre est conflit. Pour l’adverbe signifiant “peu”, écrivez :

TEST: tout ceci ne me rapporte {{guerre}}


__[i]/conf(conf_ne_en_y_verbe_guère)__
    ne (?:[lmts]’(?:en |y |)|)\w{w_2} (?:plus |)(guerre)  @@$
    <<- -1>> guère                                                                                  # Confusion. La guerre est conflit. Pour l’adverbe signifiant “peu”, écrivez :

TEST: je ne m’en soucie {{guerre}}


__[i]/conf(conf_n_en_y_verbe_guère)__
    n’(?:en |y |)\w{w_2} (?:plus |)(guerre)  @@$
    <<- -1>> guère                                                                                  # Confusion. La guerre est conflit. Pour l’adverbe signifiant “peu”, écrivez :

TEST: Il n’y prête {{guerre}} d’attention.
TEST: Elle n’en accorde plus {{guerre}}.


__[i]/conf(conf_ne_guère)__
    ne (?:plus |)(guerre)  @@$
    <<- -1>> guère                                                                                  # Confusion. La guerre est conflit. Pour l’adverbe signifiant “peu”, écrivez :

TEST: ne plus {{guerre}} s’en soucier


## s’en / c’en
__[i]/conf(conf_c_en_être)__
    (s’en) (?:n’|)(?:est|seras?|étai[ts]) +({w_2})  @@0,$
    <<- re.search("(?i)^(?:fini|terminé)s?", \2) and morph(word(-1), ":C", False, True)
    -1>> c’en
    # Confusion probable. « C’en est… » équivaut à « ça, c’est… ».|http://fr.wiktionary.org/wiki/c%E2%80%99en_est_fait_de
    <<- re.search("(?i)^(?:assez|trop)$", \2) and (after("^ +d(?:e |’)") or not word(1))
    -1>> c’en
    # Confusion probable. « C’en est… » équivaut à « ça, c’est… ».|http://fr.wiktionary.org/wiki/c%E2%80%99en_est_fait_de
    <<- morphex(\2, ":A", ":[GVW]") and morph(word(-1), ":C", False, True)
    -1>> c’en
    # Confusion probable : “\2” est un adjectif. « C’en est… » équivaut à « ça, c’est… ».3|http://fr.wiktionary.org/wiki/c%E2%80%99en_est_fait_de

TEST: c’en est fini d’eux, ils sont comme morts
TEST: c’en est assez, ça suffit
TEST: tout ça, {{s’en}} est fini.
TEST: {{s’en}} est assez de ces foutaises.
TEST: c’est tellement idiot, {{s’en}} est dérisoire…


## soit / soie / soi
__[i]/conf(conf_aller_de_soi)__
    ({aller}) +de (soi[tes])  @@0,$
    <<- morph(\1, ">aller", False) and not after(" soit ") -2>> soi                                 # Confusion.|https://fr.wiktionary.org/wiki/aller_de_soi

TEST: cela ne va pas de {{soit}}.


#### ADVERBES
__[i]/sgpl(sgpl_verbe_fort)__
    ({w_2}) +(forts)  @@0,$
    <<- morphex(\1, ":V", ":[AN].*:[me]:[pi]|>(?:être|sembler|devenir|re(?:ster|devenir)|para[îi]tre) .*:[123]p|>(?:affirmer|trouver|croire|désirer|estime|préférer|penser|imaginer|voir|vouloir|aimer|adorer|souhaiter) ")
    and not morph(word(1), ":A.*:[me]:[pi]", False)
    -2>> fort                                               # Confusion probable. S’il s’agit ici de l’adverbe “fort” (équivalent de “fortement”), écrivez-le au singulier.

TEST: ces emmerdeurs crient bien trop {{forts}}
TEST: ces animaux paraissent forts, mais ils sont faibles.
TEST: ils sont forts, ces gars-là.
TEST: ils se croient forts.
TEST: je les imagine forts et intelligents.
TEST: elles les veulent forts et astucieux.



#### INFINITIF

__[i]/infi(infi_d_en_y)__
    d’(?:en|y) +({w_2}(?:ée?s?|ai[st]?|ez))  @@$
    <<- morph(\1, ":V", False) -1>> =suggVerbInfi(@)                                                # Le verbe devrait être à l’infinitif.

TEST: arrête d’y {{consacré}} autant de temps.


__[i]/infi(infi_de_pronom)__
    de (?:[mts]e|les?) +({w_2}(?:ée?s?|ai[st]?|ez))  @@$
    <<- morph(\1, ":V", False) -1>> =suggVerbInfi(@)                                                # Le verbe devrait être à l’infinitif.

TEST: Il s’agit de les {{attrapés}}.


__[i]/infi(infi_de_pronom_le_les_la)__
    de [mts]e l(?:es?|a) +({w_2}(?:ée?s?|ai[st]?|ez))  @@$
    <<- morph(\1, ":V", False) -1>> =suggVerbInfi(@)                                                # Le verbe devrait être à l’infinitif.
    <<- ~>> *

TEST: de me le {{facturé}}


__[i]/infi(infi_faire)__
    ((?:fai|f[iî]|fer|fon|v[oe]u)\w+) +({w_2}(?:ée?s?|ez))  @@0,$
    <<- morph(\1, ">(?:faire|vouloir) ", False) and not before(r"(?i)\b(?:en|[mtsld]es?|[nv]ous|un) +$") and morphex(\2, ":V", ":M")
    and not (re.search("(?i)^(?:fait|vouloir)$", \1) and \2.endswith("é"))
    and not (re.search("(?i)^(?:fait|vouloir)s$", \1) and \2.endswith("és"))
    -2>> =suggVerbInfi(@)                                                                           # Le verbe devrait être à l’infinitif.

TEST: Tu fais {{décoloré}} tes cheveux ?
TEST: fait pourtant avéré et corroboré par le même sondage.


__[i]/infi(infi_me_te_se_faire)__
    [mts]e (f(?:ai|[iî]|er|on)\w+) +({w_2}(?:ée?s?|ez))  @@0,$
    <<- morph(\1, ">faire ", False) and morphex(\2, ":V", ":M")
    -2>> =suggVerbInfi(@)                                                                           # Le verbe devrait être à l’infinitif.

TEST: me faire constamment {{laminé}} au jeu, ça finit par me fâcher.


__[i]/infi(infi_de_vouloir_faire)__
    de (?:vouloir|faire) +({w_2}(?:ée?s?|ez))  @@$
    <<- morphex(\1, ":V", ":M")
    -1>> =suggVerbInfi(@)                                                                           # Le verbe devrait être à l’infinitif.

TEST: Je suis fatigué de vouloir {{essayé}} d’y remédier.


__[i]/infi(infi_savoir)__
    (s[auû]\w+) +({w_2}(?:ée?s?|ez))  @@0,$
    <<- morph(\1, ">savoir :V", False) and morph(\2, ":V", False) and not before(r"(?i)\b(?:[mts]e|[vn]ous|les?|la|un) +$")
    -2>> =suggVerbInfi(@)                                                                           # Le verbe devrait être à l’infinitif.

TEST: Il faut savoir {{arrêté}} les frais.
TEST: un certain nombre de savoirs spécialisés

__[i]/infi(infi_il_faut)__
    il (?:ne |)fa(?:ut|udrait|udra|llut) +(?:lui (?:en|)|[mts](?:e |’(?:y |en |))|[nv]ous (?:en |y |)|en |y |)({w_2}(?:ée?s?|ez))  @@$
    <<- morph(\1, ":(?:Q|2p)", False)
    -1>> =suggVerbInfi(@)                                                                           # Le verbe devrait être à l’infinitif.

TEST: il faut sans cesse {{persévéré}}


__[i]/infi(infi_il_faut_le_les_la)__
    il (?:ne |)fa(?:ut|udrait|udra|llut) +l(?:es? |a |’)({w_2}(?:ée?s?|ez))  @@$
    <<- morphex(\1, ":(?:Q|2p)", ":N")
    -1>> =suggVerbInfi(@)                                                                           # Le verbe devrait être à l’infinitif.

TEST: Il faudrait l’{{essayé}}.


__[i]/infi(infi_lui)__
    lui ({w_2}ée?s?)  @@$
    <<- morph(\1, ":Q", False) -1>> =suggVerbInfi(@)                                                # Le verbe ne devrait pas être un participe passé.

TEST: lui {{mangée}} beaucoup.


#### PAS D’INFINITIF

__[i]/ppas(ppas_se_être)__
    [mts](?:e +|’)({etre}) +({w_2})  @@w,$
    <<- morph(\1, ">être ", False) >>>
    <<- morph(\2, ":Y", False) -2>> =suggVerbPpas(@)                        # Incohérence. Après « s’être », le verbe doit être un participe passé, pas à l’infinitif.
    <<- __else__ and morph(\1, ":[123]s", False) and morph(\2, ":Q.*:p", False) and not before(r"(?i)\bque?[, ]")
    -2>> =suggSing(@)                                                       # Le participe passé devrait être au singulier.

TEST: s’être {{donner}} le mot.
TEST: je me suis {{donnés}} à fond



# À TRIER
TEST: Il ne nous reste plus qu’à {{vérifié}} si votre maquette.
TEST: C’est pour {{attaqué}} la journée.
TEST: Je veux à {{mangé}}.
TEST: comment {{abandonnez}}
TEST: Pour {{changé}}.
TEST: Elles ont voulu {{mangé}} de la viande.
TEST: Ne jamais {{mangez}} de viande !
TEST: nous {{ridiculisé}}
TEST: en train de {{demandées}}
TEST: je sais {{mangé}}
TEST: en train de {{mangez}}
TEST: je veux {{changé}}
TEST: je ne voulais pas {{marché}}
TEST: te {{mangé}}
TEST: vous {{mangé}}
TEST: je ne veux pas {{mangé}}
TEST: tu dois {{mangé}}
TEST: elle fit peu {{mangé}} les enfants
TEST: elles ont pu {{mangé}}
TEST: ne pas {{allé}}
TEST: Ne pas hésiter à {{demandé}} des conseils.
TEST: Il venait, comme d’habitude, {{discuté}} avec son ami.
TEST: Ces types-là venaient {{mangé}} chez moi tous les dimanches.
TEST: ils viennent bien entendu {{attaqué}} le parlement
TEST: ils vont par voie de conséquence vraiment {{attaqué}} la banque
TEST: s’y {{accordez}}
TEST: s’en {{approché}}
TEST: m’y {{attaché}}
TEST: je t’en {{parlé}}
TEST: Il a décidé de ne plus {{mangés}} avec nous.
TEST: ne plus {{mangez}} fait maigrir
TEST: ne plus {{mangées}} fait maigrir
TEST: Il renonça à faire



#### ÊTRE / AVOIR ÉTÉ / SEMBLER (+ÊTRE via PP) / DEVENIR / RESTER / DEVENIR / REDEVENIR / PARAÎTRE + PARTICIPE PASSÉ / ADJ

__[i]/ppas(ppas_je_verbe)__
    j(?:e +|’(?:y +|en +|))(?:ne +|n’|)((?:s[oue]|étai|fus|dev|re(?:dev|st)|par)\w*|a(?:ie?|vais|urais?) +été|eus(?:se|) +été) +({w_2})  @@w,$
    <<- (morph(\1, ">(?:être|sembler|devenir|re(?:ster|devenir)|para[îi]tre) ", False) or \1.endswith(" été")) and morphex(\2, ":[NAQ].*:p", ":[GWYsi]")
    -2>> =suggSing(@)                                                        # Accord avec le sujet « je » : « \2 » devrait être au singulier.

TEST: j’étais {{perdus}}                                                          ->> perdu
TEST: j’aurais été {{perdus}} sans toi                                            ->> perdu
TEST: je n’étais pas {{perdus}}                                                   ->> perdu
TEST: Je suis {{contents}}.                                                       ->> content
TEST: J’ai été {{contents}}.                                                      ->> content
TEST: Je parais {{contents}}.                                                     ->> content
TEST: Je dirais que la vie est un peu moins {{cher}} en France.
TEST: Je semble {{contents}}.                                                     ->> content
TEST: J’ai {{mettrai}} du sel.                                                    ->> mis
TEST: J’ai {{lut}} son journal.                                                   ->> lu
TEST: je ne suis pas {{petits}}
TEST: je parais {{insignifiants}}
TEST: Je suis moi aussi complètement {{désespérés}}                               ->> désespéré
TEST: J’y semble être {{perdus}}.


__[i]/ppas(ppas_tu_verbe)__
    tu +(?:ne +|n’|)((?:es|étai|fus|se[rm]|soi|dev|re(?:dev|st)|par)\w*|a(?:s|ies|vais|urai?s) +été|eus(?:ses|) +été) +({w_2})  @@w,$
    <<- (morph(\1, ">(?:être|sembler|devenir|re(?:ster|devenir)|para[îi]tre) ", False) or \1.endswith(" été")) and morphex(\2, ":[NAQ].*:p", ":[GWYsi]")
    -2>> =suggSing(@)                                                        # Accord avec le sujet « tu » : « \2 » devrait être au singulier.

TEST: tu n’es pas {{petites}}
TEST: tu es {{insignifiants}}


__[i]/ppas(ppas_il_verbe)__
    (il|ce|ce qui|celui +qui|ça +qui|lui +qui|celui-(?:ci|là) +qui|quiconque) +(?:ne +|n’|)((?:es|étai|f[uû]|se[mr]|soi|dev|re(?:dev|st)|par)\w*|a(?:it|vait|ura(?:it|)|) +été|e[uû]t +été) +({w_2})  @@0,w,$
    <<- (morph(\2, ">(?:être|sembler|devenir|re(?:ster|devenir)|para[îi]tre) ", False) or \2.endswith(" été"))
    and (morphex(\3, ":[NAQ].*:p", ":[GWYsi]") or morphex(\3, ":[AQ].*:f", ":[GWYme]"))
    -3>> =suggMasSing(@)                                                     # Accord avec le sujet « \1 » : « \3 » devrait être au masculin singulier.

TEST: Il semble être {{partis}} pour toujours.                                    ->> parti
TEST: Il est {{demander}} à chacun de participer.
TEST: Il est {{contents}}.                                                        ->> content
TEST: Il est {{laisser}} à lui-même
TEST: il ne semble pas {{étonnés}}
TEST: il paraît {{stupides}}


__[i]/ppas(ppas_c_être)__
    c’(?:est|était|e[uû]t +été) +({w_2})  @@$
    <<- not (morph(\1, ">seule ", False) and after("^ +que? "))
    and ( morphex(\1, ":[NAQ].*:p", ":[GWYsi]") or ( morphex(\1, ":[AQ].*:f", ":[GWYme]") and not morph(word(1), ":N.*:f", False, False) ) )
    -1>> =suggMasSing(@)                                                     # Accord avec le sujet « c’ » : « \1 » devrait être au masculin singulier.

TEST: c’est {{condescendants}}.                                                   ->> condescendant
TEST: C’est {{finis}}.
TEST: C’est donc seules que les deux femmes sont amenées à comparaître


__[i]/ppas(ppas_ç_être)__
    ç’(?:a(?:it|vait|ura(?:it|)|) +été) +({w_2})  @@$
    <<- morphex(\1, ":[NAQ].*:p", ":[GWYsi]") or ( morphex(\1, ":[AQ].*:f", ":[GWYme]") and not morph(word(1), ":N.*:f", False, False) )
    -1>> =suggMasSing(@)                                                     # Accord avec le sujet « ç’ » : « \1 » devrait être au masculin singulier.

TEST: Ç’avait été {{horribles}}


__[i]/ppas(ppas_ça_verbe)__
    (ça|ce(?:la|ci)|celui-(?:ci|là)|lequel) +(?:ne +|n’|)((?:es|étai|f[uû]|se[mr]|soi|par|dev|re(?:dev|st))\w+|a(?:it|vait|ura(?:it|)|) +été|e[uû]t +été) +({w_2})  @@0,w,$
    <<- (morph(\2, ">(?:être|sembler|devenir|re(?:ster|devenir)|para[îi]tre) ", False) or \2.endswith(" été"))
    and ( morphex(\3, ":[NAQ].*:p", ":[GWYsi]") or ( morphex(\3, ":[AQ].*:f", ":[GWYme]") and not morph(word(1), ":N.*:f", False, False) ) )
    and not morph(word(-1), ":R", False, False)
    -3>> =suggMasSing(@)                                                     # Accord avec le sujet « \1 » : « \3 » devrait être au masculin singulier.

TEST: ça semble {{perdus}}
TEST: cela paraît {{incroyables}}
TEST: Je n’arrêtais pas de me répéter que tout cela était peut-être pure imagination


__[i]/ppas(ppas_elle_verbe)__
    (elle|celle-(?:ci|là)|laquelle) +(?:ne +|n’|)((?:es|étai|f[uû]|se[rm]|soi|dev|re(?:dev|st)|par)\w*|a(?:it|vait|ura(?:it|)|) +été|e[uû]t +été) +({w_2})  @@0,w,$
    <<- (morph(\2, ">(?:être|sembler|devenir|re(?:ster|devenir)|para[îi]tre) ", False) or \2.endswith(" été"))
    and (morphex(\3, ":[NAQ].*:p", ":[GWYsi]") or morphex(\3, ":[AQ].*:m", ":[GWYfe]"))
    and not morph(word(-1), ":R|>de ", False, False)
    -3>> =suggFemSing(@)                                                     # Accord avec le sujet « \1 » : « \3 » devrait être au féminin singulier.

TEST: elle a été {{perdu}} sans toi                                               ->> perdue
TEST: Elle semble être totalement {{ruiné}}.                                      ->> ruinée
TEST: Elle est complètement {{fol}}.                                              ->> folle
TEST: elle n’est pas {{petits}}
TEST: Elle est de plus en plus {{belles}}.                                        ->> belle


__[i]/ppas(ppas_elle_qui_verbe)__
    (c?elle +qui) +(?:ne +|n’|)((?:es|étai|f[uû]|se[rm]|soi|dev|re(?:dev|st)|par)\w*|a(?:it|vait|ura(?:it|)|) +été|e[uû]t +été) +({w_2})  @@0,w,$
    <<- (morph(\2, ">(?:être|sembler|devenir|re(?:ster|devenir)|para[îi]tre) ", False) or \2.endswith(" été"))
    and (morphex(\3, ":[NAQ].*:p", ":[GWYsi]") or morphex(\3, ":[AQ].*:m", ":[GWYfe]"))
    -3>> =suggFemSing(@)                                                     # Accord avec le sujet « \1 » : « \3 » devrait être au féminin singulier.

TEST: celle qui paraît {{dingues}} de toi


__[i]/ppas(ppas_nous_verbe)__
    nous +(?:ne +|n’|)((?:sommes|étions|fûmes|fussions|seri?ons|soyons|sembl|dev|re(?:dev|st)|par)\w*|a(?:vi?ons|uri?ons|yions) +été|e(?:ûme|ussion)s +été) +({w_2})  @@w,$
    <<- not re.search("(?i)^légion$", \2) and not before(r"(?i)\b(?:nous|ne) +$")
    and ((morph(\1, ">(?:être|sembler|devenir|re(?:ster|devenir)|para[îi]tre) ", False) and morph(\1, ":1p", False)) or \1.endswith(" été"))
    and morphex(\2, ":[NAQ].*:s", ":[GWYpi]")
    -2>> =suggPlur(@)                                                        # Accord avec le sujet « nous » : « \2 » devrait être au pluriel.

TEST: nous paraissons {{faible}}
TEST: Nous paraissons avoir été complètement {{prise}} de panique.                ->> prises


__[i]/ppas(ppas_ils_verbe)__
    (ils|c?eux +qui|ceux-ci|ceux-là|lesquels) +(?:ne +|n’|)((?:sont|étaient|fu[rs]|se[rm]|soient|dev|re(?:dev|st)|par)\w*|ont +été|a(?:ient|vaient|ur(?:ont|aient)) +été|eu(?:r|ss)ent +été) +({w_2})  @@0,w,$
    <<- not re.search("(?i)^légion$", \3) and (morph(\2, ">(?:être|sembler|devenir|re(?:ster|devenir)|para[îi]tre) ", False) or \2.endswith(" été"))
    and (morphex(\3, ":[NAQ].*:s", ":[GWYpi]") or morphex(\3, ":[AQ].*:f", ":[GWYme]")) and not before("(?i)ce que? +$")
    and (not re.search("^(?:ceux-(?:ci|là)|lesquels)$", \1) or not morph(word(-1), ":R", False, False))
    -3>> =suggMasPlur(@)                                                     # Accord avec le sujet « \1 » : « \3 » devrait être au masculin pluriel.

TEST: ils sont {{parti}}.                                                         ->> partis
TEST: ils sont {{parties}}.                                                       ->> partis
TEST: ils restaient {{méfiantes}}                                                 ->> méfiants
TEST: Ils semblent avoir été {{attaqué}} par des soldats.                         ->> attaqués
TEST: Ils sont, semble-t-il, {{parti}} à la chasse.
TEST: Ils sont bel et bien {{mort}}.
TEST: Ils sont tout à fait {{désœuvré}}.
TEST: ils sont, qu’on le veuille ou non, déjà {{parti}}.
TEST: ils sont jour après jour plus {{perdu}}
TEST: ils sont très loin d’être {{idiot}}.


__[i]/ppas(ppas_elles_verbe)__
    (elles|c?elles +qui|celles-(?:ci|là)|lesquelles) +(?:ne +|n’|)((?:sont|étai|fu[rs]|se[rm]|soi|dev|re(?:dev|st)|par)\w*|ont +été|a(?:ient|vaient|ur(?:ont|aient)) +été|eu(?:r|ss)ent +été) +({w_2})  @@0,w,$
    <<- not re.search("(?i)^légion$", \3) and (morph(\2, ">(?:être|sembler|devenir|re(?:ster|devenir)|para[îi]tre) ", False) or \2.endswith(" été"))
    and (morphex(\3, ":[NAQ].*:s", ":[GWYpi]") or morphex(\3, ":[AQ].*:m", ":[GWYfe]"))
    and (not re.search("(?i)^(?:elles|celles-(?:ci|là)|lesquelles)$", \1) or not morph(word(-1), ":R", False, False))
    -3>> =suggFemPlur(@)                                                     # Accord avec le sujet « \1 » : « \3 » devrait être au féminin pluriel.

TEST: elles n’ont tout de même pas été {{attaqué}}                                ->> attaquées
TEST: Elles sont {{affamé}}.                                                      ->> affamées
TEST: Celles-là sont {{folle}}.
TEST: celles qui redeviennent {{méchante}}


__[i]/ppas(ppas_avoir_été)__
    ({avoir}) +été +({w_2})  @@0,$
    <<- morph(\1, ">avoir ", False) and morphex(\2, ":[123]s", ":[GNAQWY]")
    -2>> =suggVerbPpas(@)                                                    # Après « avoir été », il faut un participe passé.

TEST: j’ai été {{instruis}} par elle
TEST: avoir été {{prit}} par surprise




## pouvoir/sembler/paraître/vouloir/devoir/croire/déclarer/penser/dire/affirmer + être/avoir été
__[i]/ppas(ppas_je_verbe_être)__
    j(?:e|’(?:y|en)) +(?:ne +|n’|)((?:p[aeouûr]|s(?:embl|ouhait)|cr[ouû]|d[eouûéî]|estim|imagin|v[eo]u|a(?:ffirm|im|dor))\w+) +(?:être|avoir été) +({w_2}) @@w,$
    <<- morph(\1, ">(?:sembler|para[îi]tre|pouvoir|penser|préférer|croire|d(?:evoir|éclarer|ésirer|étester|ire)|vouloir|affirmer|aimer|adorer|souhaiter|estimer|imaginer) ", False)
    and morphex(\2, ":[NAQ].*:p", ":[GWYsi]")
    -2>> =suggSing(@)                                                        # Accord avec le sujet « je » : « \2 » devrait être au singulier.

TEST: Je ne peux pas être {{méchants}}.
TEST: j’aurais vraiment été {{tentés}}
TEST: je ne pense pas être {{démasqués}}
TEST: Je veux être {{méconnaissables}}
TEST: je voudrais bien être dans ses souliers


__[i]/ppas(ppas_tu_verbe_être)__
    tu +(?:ne +|n’|)((?:p[aeouûr]|s(?:embl|ouhait)|cr[ouû]|d[eouûéî]|estim|imagin|v[eo]u|a(?:ffirm|im|dor))\w+) +(?:être|avoir été) +({w_2})  @@w,$
    <<- morph(\1, ">(?:sembler|para[îi]tre|pouvoir|penser|préférer|croire|d(?:evoir|éclarer|ésirer|étester|ire)|vouloir|affirmer|aimer|adorer|souhaiter|estimer|imaginer) ", False)
    and morphex(\2, ":[NAQ].*:p", ":[GWYsi]")
    -2>> =suggSing(@)                                                        # Accord avec le sujet « tu » : « \2 » devrait être au singulier.

TEST: tu ne crois pas être {{meilleurs}}.
TEST: tu ne crois pas avoir été {{découvertes}}


__[i]/ppas(ppas_il_verbe_être)__
    (il|ce|ce qui|celui +qui|ça +qui|lui +qui|celui-(?:ci|là) +qui|quiconque) +(?:ne +|n’|)((?:p[aeouûr]|s(?:embl|ouhait)|cr[ouû]|d[eouûéî]|estim|imagin|v[eo]u|a(?:ffirm|im|dor))\w+) +(?:être|avoir été) +({w_2})  @@0,w,$
    <<- morph(\2, ">(?:sembler|para[îi]tre|pouvoir|penser|préférer|croire|d(?:evoir|éclarer|ésirer|étester|ire)|vouloir|affirmer|aimer|adorer|souhaiter|estimer|imaginer) ", False)
    and (morphex(\3, ":[NAQ].*:p", ":[GWYsi]") or morphex(\3, ":[AQ].*:f", ":[GWYme]"))
    -3>> =suggMasSing(@)                                                     # Accord avec le sujet « \1 » : « \3 » devrait être au masculin singulier.

TEST: Il peut être {{observée}}.
TEST: celui-là pensait être {{perdue}}
TEST: celui-là peut être {{perdue}}
TEST: il pense avoir été {{volés}}
TEST: lui qui ne pensait jamais être {{reconnus}}.


__[i]/ppas(ppas_ça_verbe_être)__
    (ça|ce(?:la|ci)|celui-(?:ci|là)|lequel) +(?:ne +|n’|)((?:p[aeouûr]|s(?:embl|ouhait)|cr[ouû]|d[eouûéî]|estim|imagin|v[eo]u|a(?:ffirm|im|dor))\w+) +(?:être|avoir été) +({w_2})  @@0,w,$
    <<- morph(\2, ">(?:sembler|para[îi]tre|pouvoir|penser|préférer|croire|d(?:evoir|éclarer|ésirer|étester|ire)|vouloir|affirmer|aimer|adorer|souhaiter|estimer|imaginer) ", False)
    and (morphex(\3, ":[NAQ].*:p", ":[MWYsi]") or morphex(\3, ":[AQ].*:f", ":[GWYme]"))
    and not morph(word(-1), ":R", False, False)
    -3>> =suggMasSing(@)                                                     # Accord avec le sujet « \1 » : « \3 » devrait être au masculin singulier.

TEST: ça ne semble pas avoir été {{conçus}} pour ça.


__[i]/ppas(ppas_elle_verbe_être)__
    (elle|celle-(?:ci|là)|laquelle) +(?:ne +|n’|)((?:p[aeouûr]|s(?:embl|ouhait)|cr[ouû]|d[eouûéî]|estim|imagin|v[eo]u|a(?:ffirm|im|dor))\w+) +(?:être|avoir été) +({w_2})  @@0,w,$
    <<- morph(\2, ">(?:sembler|para[îi]tre|pouvoir|penser|préférer|croire|d(?:evoir|éclarer|ésirer|étester|ire)|vouloir|affirmer|aimer|adorer|souhaiter|estimer|imaginer) ", False)
    and (morphex(\3, ":[NAQ].*:p", ":[GWYsi]") or morphex(\3, ":[AQ].*:m", ":[GWYfe]"))
    and not morph(word(-1), ":R", False, False)
    -3>> =suggFemSing(@)                                                     # Accord avec le sujet « \1 » : « \3 » devrait être au féminin singulier.

TEST: elle ne croit pas être {{trompé}}


__[i]/ppas(ppas_elle_qui_verbe_être)__
    (c?elle +qui) +(?:ne +|n’|)((?:p[aeouûr]|s(?:embl|ouhait)|cr[ouû]|d[eouûéî]|estim|imagin|v[eo]u|a(?:ffirm|im|dor))\w+) +(?:être|avoir été) +({w_2}) @@0,w,$
    <<- morph(\2, ">(?:sembler|para[îi]tre|pouvoir|penser|préférer|croire|d(?:evoir|éclarer|ésirer|étester|ire)|vouloir|affirmer|aimer|adorer|souhaiter|estimer|imaginer) ", False)
    and (morphex(\3, ":[NAQ].*:p", ":[MWYsi]") or morphex(\3, ":[AQ].*:m", ":[GWYfe]"))
    -3>> =suggFemSing(@)                                                     # Accord avec le sujet « \1 » : « \3 » devrait être au féminin singulier.

TEST: celle qui pense être {{découvert}}


__[i]/ppas(ppas_nous_verbe_être)__
    (?<![nN][oO][uU][sS] )nous +(?:ne +|n’|)((?:p[aeouûr]|s(?:embl|ouhait)|cr[ouû]|d[eouûéî]|estim|imagin|v[eo]u|a(?:ffirm|im|dor))\w+) +(?:être|avoir été) +({w_2})  @@w,$
    <<- not re.search("(?i)^légion$", \2) and morph(\1, ">(?:sembler|para[îi]tre|pouvoir|penser|préférer|croire|d(?:evoir|éclarer|ésirer|étester|ire)|vouloir|affirmer|aimer|adorer|souhaiter|estimer|imaginer) ", False)
    and morph(\1, ":1p", False) and morphex(\2, ":[NAQ].*:s", ":[GWYpi]")
    -2>> =suggPlur(@)                                                        # Accord avec le sujet « nous » : « \2 » devrait être au pluriel.

TEST: nous pensons être {{désiré}}
TEST: nous ne devons pas être {{instruit}}


__[i]/ppas(ppas_ils_verbe_être)__
    (ils|c?eux +qui|ceux-(?:ci|là)|lesquels) +(?:ne +|n’|)((?:p[aeouûr]|s(?:embl|ouhait)|cr[ouû]|d[eouûéî]|estim|imagin|v[eo]u|a(?:ffirm|im|dor))\w+) +(?:être|avoir été) +({w_2})  @@0,w,$
    <<- not re.search("(?i)^légion$", \3) and morph(\2, ">(?:sembler|para[îi]tre|pouvoir|penser|préférer|croire|d(?:evoir|éclarer|ésirer|étester|ire)|vouloir|affirmer|aimer|adorer|souhaiter|estimer|imaginer) ", False)
    and (morphex(\3, ":[NAQ].*:s", ":[GWYpi]") or morphex(\3, ":[AQ].*:f", ":[GWYme]"))
    and (not re.search("^(?:ceux-(?:ci|là)|lesquels)$", \1) or not morph(word(-1), ":R", False, False))
    -3>> =suggMasPlur(@)                                                     # Accord avec le sujet « \1 » : « \3 » devrait être au masculin pluriel.

TEST: ils croient être {{perdu}}


__[i]/ppas(ppas_elles_verbe_être)__
    (elles|c?elles +qui|celles-(?:ci|là)|lesquelles) +(?:ne +|n’|)((?:p[aeouûr]|s(?:embl|ouhait)|cr[ouû]|d[eouûéî]|estim|imagin|v[eo]u|a(?:ffirm|im|dor))\w+) +(?:être|avoir été) +({w_2})  @@0,w,$
    <<- not re.search("(?i)^légion$", \3) and morph(\2, ">(?:sembler|para[îi]tre|pouvoir|penser|préférer|croire|d(?:evoir|éclarer|ésirer|étester|ire)|vouloir|affirmer|aimer|adorer|souhaiter|estimer|imaginer) ", False)
    and (morphex(\3, ":[NAQ].*:s", ":[GWYpi]") or morphex(\3, ":[AQ].*:m", ":[GWYfe]"))
    and (not re.search("^(?:elles|celles-(?:ci|là)|lesquelles)$", \1) or not morph(word(-1), ":R", False, False))
    -3>> =suggFemPlur(@)                                                     # Accord avec le sujet « \1 » : « \3 » devrait être au féminin pluriel.

TEST: elles veulent être {{différente}}
TEST: Elle peut être {{observées}}.
TEST: Elles ne peuvent pas être {{observée}}.
TEST: elles doivent être {{fâché}}
TEST: elles doivent avoir été {{attaqué}}
TEST: elles peuvent avoir été {{trompé}}
TEST: elles souhaitent être plus {{considérée}}



## Contrôle de l’accord en nombre avec la conjugaison de « être »
__[i]/ppas(ppas_être_accord_singulier)__
    ({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,$
    <<- morphex(\2, ":[NAQ].*:p", ":[GMWYsi]") and not morph(\1, ":G", False)
    -2>> =suggSing(@)                                                        # Accord avec « être » : « \2 » devrait être au singulier.

__[i]/ppas(ppas_être_accord_pluriel)__
    ({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,$
    <<- not re.search("(?i)^légion$", \2) and morphex(\2, ":[NAQ].*:s", ":[GWYpi]") and not morph(\1, ":G", False)
    -2>> =suggPlur(@)                                                        # Accord avec « être » : « \2 » devrait être au pluriel.



## Contrôle de l’accord en genre avec le substantif précédent
__[i]/ppas(ppas_sujet_être_accord_genre)__
    (?<![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,$
    <<- not re.search("(?i)^légion$", \3)
    and ((morphex(\3, ":[AQ].*:f", ":[GWme]") and morphex(\2, ":m", ":[Gfe]")) or (morphex(\3, ":[AQ].*:m", ":[GWfe]") and morphex(\2, ":f", ":[Gme]")))
    and not ( morph(\3, ":p", False) and morph(\2, ":s", False) )
    and not morph(word(-1), ":(?:R|P|Q|Y|[123][sp])", False, False) and not before(r"\b(?:et|ou|de) +$")
    -3>> =switchGender(@)                                                   # Accord erroné : « \2 » et « \3 » ne sont pas accordés en genre.

TEST: la danse est {{fini}}…
TEST: Un orage est {{annoncée}}.
TEST: Une averse est {{annoncé}}.
TEST: Le chien ne sera pas {{oubliés}}
TEST: les femmes sont vraiment {{partis}}                                         ->> parties
TEST: les hommes ne sont pas tout à fait {{fâché}}                                ->> fâchés
TEST: les enfants ne sont pas {{content}}
TEST: les réunions sans cesse reportées sont {{annulés}}
TEST: l’avenir de la région était {{suspendue}}
TEST: il prétendait que les banques universelles « à la française » s’{{était}} très honorablement comportées


__[s]/ppas(ppas_nom_propre_être_accord_genre)__
    (?<![dD]’)([A-ZÉÈ]{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|a(?:vait|ura|urait|it|) +été|e[uû]t +été) +({w_2})  @@0,$
    <<- not re.search("(?i)^légion$", \2)
    and ((morphex(\1, ":M[1P].*:f", ":[GWme]") and morphex(\2, ":m", ":[GWfe]")) or (morphex(\1, ":M[1P].*:m", ":[GWfe]") and morphex(\2, ":f", ":[GWme]")))
    and not morph(word(-1), ":(?:R|P|Q|Y|[123][sp])", False, False) and not before(r"\b(?:et|ou|de) +$")
    -2>> =switchGender(@)                                                   # Accord erroné : « \1 » et « \2 » ne sont pas accordés en genre.

TEST: Antoine est {{mariée}}.
TEST: Antoine n’est pas {{mariés}}.
TEST: Antoine est peut-être {{fatiguée}}.
TEST: Éric n’est pas très {{fatiguée}}.
TEST: Martine est {{marié}}.
TEST: Martine n’est pas {{marié}}.
TEST: Martine est très {{intelligent}}.
TEST: Martine n’est pas très {{intelligent}}.


## accords avec l’adjectif précédant le pronom

__[i]/ppas(ppas_adj_accord_je_tu)__
    ^ *({w_2}s),? (je?|tu)  @@w,$
    <<- morphex(\1, ":A.*:p", ":(?:G|E|M1|W|s|i)")
    -1>> =suggSing(@)                                                       # Si cet adjectif se réfère au pronom « \2 », l’adjectif devrait être au singulier (et accordé en genre).

TEST: {{Découragés}}, je suis parti.


__[i]/ppas(ppas_adj_accord_il)__
    ^ *({w_2}[es]),? il  @@w
    <<- morphex(\1, ":A.*:[fp]", ":(?:G|E|M1|W|m:[si])")
    -1>> =suggMasSing(@)                                                    # Si cet adjectif se réfère au pronom « il », l’adjectif devrait être au masculin singulier.

TEST: — {{Déçue}}, il s’en est allé.


__[i]/ppas(ppas_adj_accord_elle)__
    ^ *({w_2}[éuitsx]),? elle  @@w
    <<- morphex(\1, ":A.*:[mp]", ":(?:G|E|M1|W|f:[si])|>(?:désoler|pire) ")
    -1>> =suggFemSing(@)                                                    # Si cet adjectif se réfère au pronom « elle », l’adjectif devrait être au féminin singulier.

TEST: — {{Déçu}}, elle s’en est allée.


__[i]/ppas(ppas_adj_accord_ils)__
    ^ *({w_2}[eiuéts]),? ils  @@w
    <<- morphex(\1, ":A.*:[fs]", ":(?:G|E|M1|W|m:[pi])|>(?:désoler|pire) ")
    -1>> =suggMasPlur(@)                                                    # Si cet adjectif se réfère au pronom « ils », l’adjectif devrait être au masculin pluriel.

TEST: Très vite, ils sont partis
TEST: Une fois terminé, ils sont revenus.
TEST: Vraiment {{soucieuse}}, ils sont.
TEST: Désolé, ils ne viendront pas.
TEST: Pire, ils piétinent parfois les droits humains.


__[i]/ppas(ppas_adj_accord_elles)__
    ^ *({w_2}[eiuétsx]),? elles  @@w
    <<- morphex(\1, ":A.*:[ms]", ":(?:G|E|M1|W|f:[pi])|>(?:désoler|pire) ")
    -1>> =suggFemPlur(@)                                                    # Si cet adjectif se réfère au pronom « elles », l’adjectif devrait être au féminin pluriel.

TEST: Absolument {{heureux}}, elles exultèrent de joie.



## se rendre compte
__[i]/ppas(ppas_être_rendu_compte)__
    ({etre})(?:-(?:ils?|elles?|on|je|tu|[ns]ous)|) +((rendue?s?) compte)  @@0,$,w
    <<- morph(\1, "V0e", False) and \3 != "rendu" -3>> rendu                # Accord erroné : dans l’expression « se rendre compte », « rendu » est invariable.
    <<- ~2>> _

TEST: Elles se sont {{rendues}} compte
TEST: La puissance publique s’en est-elle rendu compte ?


## Inversion verbe/sujet
__[i]/ppas(ppas_inversion_être_je)__
    (?:s[ou]is|étais|fus(?:sé|)|serais?)-je +({w_2})  @@$
    <<- morphex(\1, ":(?:[123][sp]|Y|[NAQ].*:p)", ":[GWsi]")
    -1>> =suggSing(@)                                                        # Accord avec le sujet « je » : « \1 » devrait être au singulier.
__[i]/ppas(ppas_inversion_être_tu)__
    (?:es|étais|fus(?:ses|)|serai?s)-tu +({w_2})  @@$
    <<- morphex(\1, ":(?:[123][sp]|Y|[NAQ].*:p)", ":[GWsi]")
    -1>> =suggSing(@)                                                        # Accord avec le sujet « tu » : « \1 » devrait être au singulier.
__[i]/ppas(ppas_inversion_être_il_ce)__
    (?:est|était|f[uû]t|sera(?:-t|it))-(il|ce) +({w_2})  @@*,$
    <<- morphex(\2, ":(?:[123][sp]|Y|[NAQ].*:[pf])", ":(?:G|W|[me]:[si])|question ") and not (\1 == "ce" and morph(\2, ":Y", False))
    -2>> =suggMasSing(@)                                                     # Accord avec le sujet « il » : « \2 » devrait être au masculin singulier.
__[i]/ppas(ppas_inversion_être_elle)__
    (?:est|était|f[uû]t|sera(?:-t|it))-elle +({w_2})  @@$
    <<- morphex(\1, ":(?:[123][sp]|Y|[NAQ].*:[pm])", ":(?:G|W|[fe]:[si])")
    -1>> =suggFemSing(@)                                                     # Accord avec le sujet « elle » : « \1 » devrait être au féminin singulier.
__[i]/ppas(ppas_inversion_être_nous)__
    (?:sommes|étions|fûmes|fussions|seri?ons)-nous +({w_2})  @@$
    <<- morphex(\1, ":(?:[123][sp]|Y|[NAQ].*:s)", ":[GWpi]")
    -1>> =suggPlur(@)                                                        # Accord avec le sujet « nous » : « \1 » devrait être au pluriel.
__[i]/ppas(ppas_inversion_être_ils)__
    (?:sont|étaient|fu(?:r|ss)ent|ser(?:o|aie)nt)-ils +({w_2})  @@$
    <<- not re.search("(?i)^légion$", \1) and (morphex(\1, ":(?:[123][sp]|Y|[NAQ].*:s)", ":[GWpi]") or morphex(\1, ":(?:[123][sp]|[AQ].*:f)", ":[GWme]"))
    -1>> =suggMasPlur(@)                                                     # Accord avec « ils » : « \1 » devrait être au masculin pluriel.
__[i]/ppas(ppas_inversion_être_elles)__
    (?:sont|étaient|fu(?:r|ss)ent|ser(?:o|aie)nt)-elles +({w_2})  @@$
    <<- not re.search("(?i)^légion$", \1) and (morphex(\1, ":(?:[123][sp]|Y|[NAQ].*:s)", ":[GWpi]") or morphex(\1, ":(?:[123][sp]|[AQ].*:m)", ":[GWfe]"))
    -1>> =suggFemPlur(@)                                                     # Accord avec « elles » : « \1 » devrait être au féminin pluriel.

TEST: serais-je {{fâchés}} contre vous ?
TEST: Est-elle {{arriver}} ?
TEST: Sont-elles {{arriver}} ?
TEST: Est-il {{arriver}} ?
TEST: Sont-ils {{arriver}} ?
TEST: Est-elle déjà {{arriver}} ?
TEST: Sont-elles tout à fait {{arriver}} ?
TEST: Est-il déjà {{arriver}} ?
TEST: Es-tu {{arriver}} ?
TEST: Sont-ils déjà {{arriver}} ?
TEST: Es-tu déjà {{arriver}} ?
TEST: Sommes-nous {{arriver}} ?
TEST: Sommes-nous déjà {{arriver}} ?
TEST: Était-elle {{fatiguer}} ?
TEST: Ne sont-elles pas {{aveugle}}
TEST: N’est-il pas {{aveugles}}
TEST: Sont-ils vraiment {{aveugle}}
TEST: Ne sommes-nous pas {{aveugle}}
TEST: Est-il question de ceci ou de cela ?
TEST: Est-ce former de futurs travailleurs ou bien des citoyens





## Accord et incohérences 
__[i]/ppas(ppas_sont)__
    sont ({w_2})  @@5
    <<- morphex(\1, ":[NAQ]", ":[QWGBMpi]") and not re.search("(?i)^(?:légion|nombre|cause)$", \1) and not before(r"(?i)\bce que?\b")
    -1>> =suggPlur(@)               # Incohérence : « \1 » est au singulier. Ou vous confondez « sont » et « son », ou l’accord en nombre est incorrect.
    <<- __else__ and morphex(\1, ":V", ":(?:N|A|Q|W|G|3p)") and not before(r"(?i)\bce que?\b")
    -1>> =suggVerbPpas(\1, ":m:p")  # Incohérence : « \1 » n’est pas un participe passé.



#### SE CROIRE/CONSIDÉRER/MONTRER/PENSER/RÉVÉLER/SAVOIR/SENTIR/VOIR/VOULOIR + PARTICIPE PASSÉ/ADJ

__[i]/ppas(ppas_je_me_verbe)__
    je +(?:ne +|)me +((?:s[eauû]|montr|pens|rév|v[oiîe])\w+) +({w_2})  @@w,$
    <<- morph(\1, ">(?:montrer|penser|révéler|savoir|sentir|voir|vouloir) ", False) and morphex(\2, ":[NAQ].*:p", ":[GWYsi]")
    -2>> =suggSing(@)                                                        # Accord avec le sujet « je » : « \2 » devrait être au singulier.

TEST: je me savais {{implacables}} avec eux


__[i]/ppas(ppas_tu_te_verbe)__
    tu +(?:ne +|)te +((?:s[eauû]|montr|pens|rév|v[oiîe])\w+) +({w_2})  @@w,$
    <<- morph(\1, ">(?:montrer|penser|révéler|savoir|sentir|voir|vouloir) ", False) and morphex(\2, ":[NAQ].*:p", ":[GWYsi]")
    -2>> =suggSing(@)                                                        # Accord avec le sujet « je » : « \2 » devrait être au singulier.

TEST: quand tu te montres {{infaillibles}}


__[i]/ppas(ppas_il_se_verbe)__
    (il|ce|ce qui|celui +qui|ça +qui|lui +qui|celui-(?:ci|là)|quiconque|lequel) +(?:ne +|)se +((?:s[eauû]|montr|pens|rév|v[oiîe])\w+) +({w_2})  @@0,w,$
    <<- morph(\2, ">(?:montrer|penser|révéler|savoir|sentir|voir|vouloir) ", False)
    and (morphex(\3, ":[NAQ].*:p", ":[GWsi]") or morphex(\3, ":[NAQ].*:f", ":[GWYme]"))
    and (not re.search("^(?:celui-(?:ci|là)|lequel)$", \1) or not morph(word(-1), ":R", False, False))
    -3>> =suggMasSing(@)                                                     # Accord avec le sujet « \1 » : « \3 » devrait être au masculin singulier.

TEST: lequel se veut {{imbattables}} ?


__[i]/ppas(ppas_elle_se_verbe)__
    (elle|celle-(?:ci|là)|laquelle) +(?:ne +|)se +((?:s[eauû]|montr|pens|rév|v[oiîe])\w+) +({w_2})  @@0,w,$
    <<- morph(\2, ">(?:montrer|penser|révéler|savoir|sentir|voir|vouloir) ", False)
    and (morphex(\3, ":[NAQ].*:p", ":[GWsi]") or morphex(\3, ":[NAQ].*:m", ":[GWYfe]"))
    and not morph(word(-1), ":R", False, False)
    -3>> =suggFemSing(@)                                                     # Accord avec le sujet « \1 » : « \3 » devrait être au féminin singulier.

TEST: Elle se sait plus {{fortes}} qu’eux tous.
TEST: elle se vit {{abandonné}}


__[i]/ppas(ppas_elle_qui_se_verbe)__
    (c?elle +qui) +(?:ne +|)se +((?:s[eauû]|montr|pens|rév|v[oiîe])\w+) +({w_2})  @@0,w,$
    <<- morph(\2, ">(?:montrer|penser|révéler|savoir|sentir|voir|vouloir) ", False)
    and (morphex(\3, ":[NAQ].*:p", ":[GWsi]") or morphex(\3, ":[NAQ].*:m", ":[GWYfe]"))
    -3>> =suggFemSing(@)                                                     # Accord avec le sujet « \1 » : « \3 » devrait être au féminin singulier.

TEST: à celle qui se révélera {{attentif}} à tous ces problèmes.


__[i]/ppas(ppas_nous_nous_verbe)__
    nous +(?:ne +|)nous +((?:s[eauû]|montr|pens|rév|v[oiîe])\w*ons) +({w_2})  @@w,$
    <<- morph(\1, ">(?:montrer|penser|révéler|savoir|sentir|voir|vouloir) ", False) and morphex(\2, ":[NAQ].*:s", ":[GWpi]")
    -2>> =suggPlur(@)                                                        # Accord avec le sujet « nous » : « \2 » devrait être au pluriel.

TEST: nous nous pensions {{invincible}} jusqu’au jour où tout a basculé.


__[i]/ppas(ppas_ils_se_verbe)__
    (ils|c?eux +qui|ceux-ci|ceux-là|lesquels) +(?:ne +|)se +((?:s[eauû]|montr|pens|rév|v[oiîe])\w+) +({w_2})  @@0,w,$
    <<- morph(\2, ">(?:montrer|penser|révéler|savoir|sentir|voir|vouloir) ", False)
    and (morphex(\3, ":[NAQ].*:s", ":[GWpi]") or morphex(\3, ":[NAQ].*:f", ":[GWYme]"))
    and (not re.search("^(?:ceux-(?:ci|là)|lesquels)$", \1) or not morph(word(-1), ":R", False, False))
    -3>> =suggMasPlur(@)                                                     # Accord avec le sujet « \1 » : « \3 » devrait être au masculin pluriel.

TEST: ils se montrent {{exigeantes}}


__[i]/ppas(ppas_elles_se_verbe)__
    (elles|c?elles +qui|celles-(?:ci|là)|lesquelles) +(?:ne +|)se +((?:s[eauû]|montr|pens|rév|v[oiîe])\w+) +({w_2})  @@0,w,$
    <<- morph(\2, ">(?:montrer|penser|révéler|savoir|sentir|voir|vouloir) ", False)
    and (morphex(\3, ":[NAQ].*:s", ":[GWpi]") or morphex(\3, ":[NAQ].*:m", ":[GWYfe]"))
    and (not re.search("^(?:elles|celles-(?:ci|là)|lesquelles)$", \1) or not morph(word(-1), ":R", False, False))
    -3>> =suggFemPlur(@)                                                     # Accord avec le sujet « \1 » : « \3 » devrait être au féminin pluriel.

TEST: elles se sentent {{perdu}}


__[i]/ppas(ppas_le_verbe)__
    le ((?:trouv|consid[éè]r|cr[ouû]|rend|voilà)\w*) +({w_2}[esx])  @@w,$
    <<- morph(\1, ">(?:trouver|considérer|croire|rendre|voilà) ", False) and morphex(\2, ":[AQ]:(?:[me]:p|f)", ":(?:G|Y|[AQ]:m:[is])")
    -2>> =suggMasSing(@)                                                     # Accord avec le COD “le” : « \2 » doit être au masculin singulier.
__[i]/ppas(ppas_la_verbe)__
    la ((?:trouv|consid[éè]r|cr[ouû]|rend|voilà)\w*) +({w_2}[uiéesx])  @@w,$
    <<- morph(\1, ">(?:trouver|considérer|croire|rendre|voilà) ", False) and morphex(\2, ":[AQ]:(?:[fe]:p|m)", ":(?:G|Y|[AQ]:f:[is])")
    -2>> =suggFemSing(@)                                                     # Accord avec le COD “la” : « \2 » doit être au féminin singulier.
__[i]/ppas(ppas_les_verbe)__
    les ((?:trouv|consid[éè]r|cr[ouû]|rend|voilà)\w*) +({w_2})  @@w,$
    <<- morph(\1, ">(?:trouver|considérer|croire|rendre|voilà) ", False) and morphex(\2, ":[AQ].*:s", ":(?:G|Y|[AQ].*:[ip])")
    -2>> =suggPlur(@)                                                        # Accord avec le COD “les” : « \2 » doit être au pluriel.
__[i]/ppas(ppas_me_te_verbe)__
    ([mt]e) ((?:trouv|consid[éè]r|cr[ouû]|rend|voilà)\w*) +({w_2}[sx])  @@0,w,$
    <<- morph(\2, ">(?:trouver|considérer|croire|rendre|voilà) ", False) and morphex(\3, ":[AQ].*:p", ":(?:G|Y|[AQ].*:[is])")
    -3>> =suggSing(@)                                                        # Accord avec le pronom “\1” : « \3 » doit être au singulier.
__[i]/ppas(ppas_se_verbe)__
    se ((?:trouv|consid[éè]r|cr[ouû]|rend)\w*) +({w_3})  @@w,$
    <<- morph(\1, ">(?:trouver|considérer|croire|rendre) .*:3s", False) and morphex(\2, ":[AQ].*:p", ":(?:G|Y|[AQ].*:[is])")
    -2>> =suggSing(@)                                                        # Accord avec le pronom “se” (le verbe étant au singulier) : « \2 » doit être au singulier.
    <<- morph(\1, ">(?:trouver|considérer|croire|rendre) .*:3p", False) and morphex(\2, ":[AQ].*:s", ":(?:G|Y|[AQ].*:[ip])")
    -2>> =suggSing(@)                                                        # Accord avec le pronom “se” (le verbe étant au pluriel) : « \2 » doit être au pluriel.
__[i]/ppas(ppas_nous_verbe)__
    nous ((?:trouv|consid[éè]r|cr[ouû]|rend|voilà)\w*) +({w_2})  @@w,$
    <<- ( morphex(\1, ">(?:trouver|considérer|croire|rendre|voilà) ", ":1p")
    or (morph(\1, ">(?:trouver|considérer|croire) .*:1p", False) and before(r"\bn(?:ous|e) +$")) )
    and morphex(\2, ":[AQ].*:s", ":(?:G|Y|[AQ].*:[ip])")
    -2>> =suggPlur(@)                                                        # Accord avec le pronom “nous” : « \2 » doit être au pluriel.
#__[i]/ppas(ppas_vous_verbe)__
#    vous ((?:trouv|consid[éè]r|cr[ouû]|rend|voilà)\w*) +({w_2})  @@w,$
#    <<- ( morphex(\1, ">(?:trouver|considérer|croire|rendre|voilà) ", ":2p")
#    or (morph(\1, ">(?:trouver|considérer|croire) .*:2p", False) and before(r"\b(?:vous|ne) +$")) )
#    and morphex(\2, ":[AQ].*:s", ":(?:G|[AQ].*:[ip])")
#    -2>> =suggPlur(@)                                                        # Accord avec le pronom “vous” : « \2 » doit être au pluriel.

TEST: ces hommes le rendent {{dingues}}
TEST: Il me considère {{stupides}}
TEST: Elle nous trouve {{stupide}}
TEST: Je les crois {{capable}} du pire
TEST: la voilà {{perdu}}
TEST: nous nous crûmes {{perdu}}
TEST: Elle me rend {{folles}}.
TEST: l’homme se considère {{instruits}} alors qu’il n’est qu’un aveugle qui tâtonne.
TEST: une chance pour elle alors qu’il n’a pas choisi
TEST: elle se révèle d’ailleurs être une alliée de taille


#### AVOIR + PARTICIPES PASSÉS

#__[i]/conj__  fait(s|e|es) ({w1}) <<- morph(\2, ":V") and not morph(\2, ":Y")
#   ->> fait \1                      # Le participe passé de faire reste au masculin singulier s’il est suivi par un verbe à l’infinitif.

__[i]__     les ({avoir}) +(fait) +(?:[mts](?:e +|’)|)({infi}) @@w,w,$ <<- morph(\1, ">avoir ", False) and morph(\3, ":Y", False) ~2>> _

__[i]/ppas(ppas_pronom_avoir)__
    (j’|je |tu |ils? |elles? |[nv]ous |on |et )(?:ne +|n’|l(?:ui|eur) +|)({avoir}) +({w_2})  @@0,w,$
    <<- not re.search("(?i)^(?:confiance|cours|envie|peine|prise|crainte|cure|affaire|hâte|force|recours)$", \3) and morph(word(-1), ">puisque? ", False, True)
    and morph(\2, ":V0a", False) and not \3.isupper() and morphex(\3, ":(?:[123][sp]|Q.*:[fp])", ":(?:G|W|Q.*:m:[si])")
    -3>> =suggMasSing(@)
    # Ce verbe devrait être un participe passé au masculin singulier.|http://fr.wikipedia.org/wiki/Accord_du_participe_pass%C3%A9_en_fran%C3%A7ais

TEST: ils leur avaient {{donnés}} du fil à retordre.


__[i]/ppas(ppas_det_nom_avoir)__
    (l(?:’|es? |a |eurs )|ce(?:s|tte|t|rtaine?s|) |des |quelques |[mts](?:es|on|a) |[nv]o(?:s|tre) ) *({w_2}) +(?:ne +|n’|l(?:ui|eur) +|)({avoir}) +({w_2})  @@0,w,w,$
    <<- not re.search("(?i)^(?:confiance|cours|envie|peine|prise|crainte|cure|affaire|hâte|force|recours)$", \4) and morph(word(-1), ">puisque? ", False, True)
    and morph(\3, ":V0a", False) and not \4.isupper() and morphex(\4, ":(?:[123][sp]|Q.*:[fp])", ":(?:G|W|Q.*:m:[si])")
    -4>> =suggMasSing(@)
    # Ce verbe devrait être un participe passé au masculin singulier.|http://fr.wikipedia.org/wiki/Accord_du_participe_pass%C3%A9_en_fran%C3%A7ais

TEST: Les femmes lui avait {{conseillées}} de se taire.
TEST: le mur avait {{était}} détruit


__[i]/ppas(ppas_les_avoir)__
    les +({avoir}) +({w_1}(?:[éiut]e?|is|se))  @@w,$
    <<- morph(\1, ":V0a", False) and morphex(\2, ":V[0-3]..t.*:Q.*:s", ":[GWpi]")
    -2>> =suggPlur(@)
    # Accord avec le COD “les” : Le participe passé « \2 » devrait être au pluriel (et accordé en genre).|http://fr.wikipedia.org/wiki/Accord_du_participe_pass%C3%A9_en_fran%C3%A7ais

TEST: je les avais {{trompé}} avec mon baratin.


__[i]/ppas(ppas_nous_avoir)__
    ({w_2}) +nous +({avoir}) +({w_1}(?:[éiut]e?|is|se)) @@0,w,$
    <<- after("^ *$") and morph(\2, ":V0a", False) and morphex(\1, ":(?:M|Os|N)", ":R") and morphex(\3, ":V[0-3]..t_.*:Q.*:s", ":[GWpi]") and not before(r"\bque +$")
    -3>> =suggPlur(@)
    # Accord avec le COD “nous” : Le participe passé « \3 » devrait être au pluriel (et accordé en genre).|http://fr.wikipedia.org/wiki/Accord_du_participe_pass%C3%A9_en_fran%C3%A7ais

TEST: Ces maisons nous avaient {{subjugué}}.
TEST: C’est mot pour mot un script qu’on nous a filé.


__[i]/ppas(ppas_l_avoir)__
    l’({avoir}) +({w_1}s)  @@2,$
    <<- morph(\1, ":V0a", False) and morphex(\2, ":V[0-3]..t.*:Q.*:p", ":[GWsi]")
    -2>> =\2[:-1]
    # Accord avec le COD « l’ » : Le participe passé « \2 » devrait être au singulier (et accordé en genre).|http://fr.wikipedia.org/wiki/Accord_du_participe_pass%C3%A9_en_fran%C3%A7ais

TEST: ils l’avaient {{retrouvés}}.


__[i]/ppas(ppas_m_t_avoir)__
    ([mt])’({avoir}) +({w_1}s)  @@0,w,$
    <<- morph(\2, ":V0a", False) and morphex(\3, ":V[0-3]..t_.*:Q.*:p", ":[GWsi]") and not before(r"\bque? ")
    -3>> =\3[:-1]
    # Accord avec « \1’ ». Le participe passé « \3 » devrait être au singulier (et accordé en genre).|http://fr.wikipedia.org/wiki/Accord_du_participe_pass%C3%A9_en_fran%C3%A7ais

TEST: ces livres m’avaient {{ennuyés}} au-delà du dicible.


__[i]/ppas(ppas_qui_avoir)__
    qui +(?:n’|l(?:ui|eur) |ne l(?:ui|eur) |ne +|)({avoir}) +({w_2}[es])  @@w,$
    <<- morph(\1, ">avoir ", False) and morphex(\2, ":Q.*:(?:f|m:p)", ":m:[si]")
    -2>> =suggMasSing(@)
    # Le participe passé devrait être au masculin singulier.|http://fr.wikipedia.org/wiki/Accord_du_participe_pass%C3%A9_en_fran%C3%A7ais

TEST: des hommes, des femmes, des enfants qui ne leur avaient {{faits}} que du bien.


__[i]/ppas(ppas_avoir)__
    avoir +({w_2})  @@$
    <<- not re.search("(?i)^(?:confiance|cours|envie|peine|prise|crainte|cure|affaire|hâte|force|recours)$", \1)
    and morphex(\1, ":Q.*:(?:f|m:p)", ":m:[si]") and before("(?i)(?:après +$|sans +$|pour +$|que? +$|quand +$|, +$|^ *$)")
    -1>> =suggMasSing(@)
    # Le participe passé devrait être au masculin singulier.|http://fr.wikipedia.org/wiki/Accord_du_participe_pass%C3%A9_en_fran%C3%A7ais

TEST: Il a {{prit}} le train.
TEST: Les élèves lui ont {{données}}.
TEST: Les élèves lui ont {{donnés}}.
TEST: Les élèves lui ont {{donnée}}.
TEST: Nous lui avons {{donnée}} un cadeau.
TEST: Vous lui avez {{donnés}} un cadeau.
TEST: Ils leur ont {{données}} un cadeau.
TEST: ils avaient, en ce temps-là, déjà {{perdus}} leurs illusions
TEST: Nous l’avons {{mangés}}.
TEST: Nous l’avons {{mangées}}.
TEST: Ils ne me l’ont pas {{donnés}}
TEST: Les élèves m’ont {{écoutés}}.
TEST: Les élèves t’ont de temps en temps {{écoutées}}.
TEST: Les élèves ne m’ont pas {{écoutés}}.
TEST: Les élèves ne m’ont pas {{écoutées}}.
TEST: Nous ne t’avons pas {{écoutés}}.
TEST: Nous ne t’avons pas {{écoutées}}.
TEST: Avoir {{instruite}} notre mère
TEST: Après avoir {{baissés}} nos tarifs
TEST: Je viendrai, après avoir vraiment {{écoutée}} le prof.
TEST: Alexandre aujourd’hui nous a {{quitté}}
TEST: Mes joueurs, je les ai fait reposer
TEST: Mes joueurs, je les ai fait se reposer
TEST: Il nous avait dit que…

TEST: Elle avait {{pose}} son tricot                                              ->> posé
TEST: Vous l’avez {{trouvez}}.                                                    ->> trouvé
TEST: Il a {{donner}} sa vie pour elle.                                           ->> donné
TEST: Le maire a {{créée}} un risque.
TEST: nous avions quelque peu {{tempérés}} leurs ardeurs


## avoir avec forme pronominale

__[i]/ppas(ppas_m_t_avoir)__
    [mt]’({avoir}) +({w_3}) @@2,$
    <<- morph(\1, ">avoir ", False) and morphex(\2, ":(?:Y|[123][sp])", ":[QGWMX]")
    -2>> =suggVerbPpas(@, ":m:s")
    # Confusion : employez un participe passé.

TEST: m’avoir {{terminer}}.
TEST: il m’a {{souffler}} la bonne réponse.
TEST: c’est vous qui m’avez {{convertit}}.


## COD avant que

__[i]/ppas(ppas_det_plur_COD_que_avoir)__
    ([ldmtsc]es) +({w_2}) +que? +(?:j’|tu |ils? |[nv]ous |elles? |on ) *(?:ne +|n’|)({avoir}) +({w_2}[éiust]e?)(?! [mts]’)  @@0,w,w,$
    <<- morph(\3, ":V0a", False)
    and not ((re.search("^(?:décidé|essayé|tenté)$", \4) and after(" +d(?:e |’)")) or (re.search("^réussi$", \4) and after(" +à")))
    and morph(\2, ":[NAQ]", False) and morphex(\4, ":V[0-3]..t.*:Q.*:s", ":[GWpi]")
    and not morph(word(1), ":(?:Y|Oo|D)", False)
    -4>> =suggPlur(@, \2)
    # Si « \1 \2… » est bien le COD du participe passé « \4 », celui-ci devrait être au pluriel (et accordé en genre).|http://fr.wikipedia.org/wiki/Accord_du_participe_pass%C3%A9_en_fran%C3%A7ais

TEST: Les documents qu’ils ont {{acheté}}.
TEST: les flacons qu’ils ont réussi à acquérir
TEST: ça faisait des années que j’avais délaissé ce lieu
TEST: Les électeurs de Donald que l’on avait rencontrés jusque-là boivent l’eau d’une seule fontaine : Fox News et les sites et radios conservateurs.


__[i]/ppas(ppas_det_mas_sing_COD_que_avoir)__
    (le |l’|cet? |[mts]on |un ) *({w_2}) +que? +(?:j’|tu |ils? |[nv]ous |elles? |on ) *(?:ne +|n’|)({avoir}) +({w_2}[es])  @@0,w,w,$
    <<- morph(\3, ":V0a", False)
    and morph(\2, ":[NAQ].*:m", False)
    and (morphex(\4, ":V[0-3]..t.*:Q.*:f", ":[GWme]") or morphex(\4, ":V[0-3]..t.*:Q.*:p", ":[GWsi]"))
    -4>> =suggMasSing(@)
    # Si « \1 \2… » est bien le COD du participe passé « \4 », celui-ci devrait être au masculin singulier.|http://fr.wikipedia.org/wiki/Accord_du_participe_pass%C3%A9_en_fran%C3%A7ais

TEST: Le document qu’ils ont de temps en temps {{achetés}}.
TEST: L’homme que j’ai {{aidée}}.
TEST: L’homme qu’ils ont beaucoup {{aidée}}.
TEST: L’homme que nous avons un peu {{aidée}}.
TEST: le flacon qu’ils ont réussi à acquérir


__[i]/ppas(ppas_det_fem_sing_COD_que_avoir)__
    (la |l’|cette |[mts]a |mon |une ) *({w_2}) +que? +(?:j’|tu |ils? |[nv]ous |elles? |on ) *(?:ne +|n’|)({avoir}) +({w_2}[éiust])(?! [mts]’)
    @@0,w,w,$
    <<- morph(\3, ":V0a", False)
    and not ((re.search("^(?:décidé|essayé|tenté)$", \4) and after(" +d(?:e |’)")) or (re.search("^réussi$", \4) and after(" +à")))
    and morph(\2, ":[NAQ].*:f", False)
    and (morphex(\4, ":V[0-3]..t.*:Q.*:m", ":[GWfe]") or morphex(\4, ":V[0-3]..t.*:Q.*:p", ":[GWsi]"))
    and not morph(word(1), ":(?:Y|Oo)|>que?", False)
    -4>> =suggFemSing(@)
    # Si « \1 \2… » est bien le COD du participe passé « \4 », celui-ci devrait être au féminin singulier.|http://fr.wikipedia.org/wiki/Accord_du_participe_pass%C3%A9_en_fran%C3%A7ais

TEST: La femme que j’ai {{aidé}}.
TEST: La femme que j’ai beaucoup {{aidé}}.
TEST: La femme que j’ai un peu {{aidé}}.
TEST: la danse qu’ils ont réussi à faire


__[i]/ppas(ppas_ce_que_pronom_avoir)__
    ce +que? +(?:j’|tu |ils? |[nv]ous |elles? |on |ça |ce(?:la|ci) ) *(?:ne +|n’|)({avoir}) +({w_2}[es])  @@w,$
    <<- morph(\1, ":V0a", False)
    and (morphex(\2, ":V[0-3]..t.*:Q.*:f", ":[GWme]") or morphex(\2, ":V[0-3]..t.*:Q.*:p", ":[GWsi]"))
    -2>> =suggMasSing(@)
    # Le participe passé devrait être au masculin singulier.|http://fr.wikipedia.org/wiki/Accord_du_participe_pass%C3%A9_en_fran%C3%A7ais

TEST: ce que ça a {{donnée}}


__[i]/ppas(ppas_avoir)__
    ({avoir}) +({w_2}e[rz])  @@0,$
    <<- not re.search("^(?:A|avions)$", \1) and morph(\1, ":V0a", False) and morph(\2, ":V.+:(?:Y|2p)", False)
    -2>> =suggVerbPpas(@, ":m:s")                                                                   # Incohérence avec « \1 » : « \2 » n’est pas un participe passé.

TEST: Avoir {{marcher}} toute la journée m’a épuisée.


## du / dû
__[i]/ppas(ppas_avoir_dû_vinfi)__
    ({avoir}) +(due?s?) +(?:[mts]’|)({w_2})  @@0,w,$
    <<- morph(\1, ":V0a", False) and (morph(\3, ":Y") or re.search("^(?:[mtsn]e|[nv]ous|leur|lui)$", \3))
    -2>> dû                                                                                         # Participe passé de devoir : « dû ».

__[i]/ppas(ppas_avoir_pronom_du_vinfi)__
    ({avoir})-(?:t-|)(?:je|tu|ils?|elles?|nous|vous) +(due?s?) +(?:[mts]’|)({w_2})  @@0,w,$
    <<- morph(\1, ":V0a", False) and (morph(\3, ":Y") or re.search("^(?:[mtsn]e|[nv]ous|leur|lui)$", \3))
    -2>> dû                                                                                         # Participe passé de devoir : « dû ».

__[i]/ppas(ppas_dû_à_au)__
    (du) +(?:à|a|aux?) @@0 <<- -1>> dû                                                              # Confusion. Ce qui est dû.
__[i]/ppas(ppas_mon_votre_notre_dû)__
    (?:mon|notre|votre) (du) @@$ <<- -1>> dû                                                        # Confusion. Ce qui est dû.
__[i]/ppas(ppas_ton_son_dû)__
    [ts]on (du) @@4 <<- not morph(word(1), ":[NAQ].*:[me]", False) -1>> dû                          # Confusion. Ce qui est dû.

__[i]/ppas(ppas_qui_être_dû)__
    qui +(?:ne +|)(?:[mt](?:’|e +)|l(?:eur|ui) +|[nv]ous +)([eésf]\w+) (du)  @@w,$
    <<- morph(\1, ":V0e", False) -2>> dû                                                            # Confusion. Ce qui est dû.

TEST: A-t-il {{du}} se résoudre à céder ?
TEST: L’échec est {{du}} à une erreur de calcul
TEST: L’échec est {{du}} en partie à un manque de préparation.
TEST: Tu as reçu ton {{du}} pour ton travail.
TEST: J’ai {{du}} lui donner.
TEST: J’ai {{du}} leur prendre.
TEST: que ça vous plaise ou non, c’est notre {{du}}.
TEST: Il a {{du}} leur prendre.
TEST: Voici ce qui t’est {{du}}.
TEST: Voici ce qui me sera {{du}}.
TEST: Voici ce qui vous est {{du}}.
TEST: Il veut qu’on lui rende son {{du}}.
TEST: Aurait-il {{du}} {{prendre}} son repas plus tôt ?
TEST: Avez-vous {{signez}} le contrat ?
TEST: Ont-ils {{signer}} le contrat ?
TEST: Ai-je déjà {{signez}} le contrat ?
TEST: A-t-il déjà {{signer}} le contrat ?


# formes interrogatives
__[i]/ppas(ppas_avoir_pronom1)__
    (?<![ltm]’)({avoir})[- ](?:je|tu|ils?|elles?|t-(?:ils?|elles?|on)|on) +({w2})  @@0,$
    <<- morph(\1, ":V0a", False) and morphex(\2, ":(?:Y|2p|Q.*:[fp])", ":m:[si]") and \2 != "prise"
    and not morph(word(-1), ">(?:les|[nv]ous|en)|:[NAQ].*:[fp]", False) and not before(r"(?i)\b(?:quel(?:le|)s?|combien) ")
    -2>> =suggMasSing(@)
    # Avec « avoir », il faut un participe passé au masculin singulier.

__[i]/ppas(ppas_avoir_pronom2)__
    (?<![ltm]’)({avoir})-(?:[nv]ous) +({w2})  @@0,$
    <<- morph(\1, ":V0a", False) and morphex(\2, ":(?:Y|2p|Q.*:[fp])", ":m:[si]") and \2 != "prise"
    and not morph(word(-1), ">(?:les|[nv]ous|en)|:[NAQ].*:[fp]", False) and not before(r"(?i)\b(?:quel(?:le|)s?|combien) ")
    -2>> =suggMasSing(@)
    # Avec « avoir », il faut un participe passé au masculin singulier.

__[i]/ppas(ppas_l_m_t_avoir_pronom)__
    ([ltm]’)({avoir})[- ](?:je|tu|ils?|elles?|t-(?:ils?|elles?|on)|[nv]ous|on) +({w2}s)  @@0,2,$
    <<- morph(\2, ":V0a", False) and morphex(\3, ":(?:Y|2p|Q.*:p)", ":[si]") 
    -3>> =suggMasSing(@)
    # Accord avec le COD « \1 » : e participe passé « \2 » devrait être au singulier (et accordé en genre).

__[i]/ppas(ppas_les_avoir_pronom)__
    les +({avoir})-(?:je|tu|ils?|elles?|t-(?:ils?|elles?|on)|[nv]ous|on) +({w_1}(?:[éiut]e?|is|se))  @@w,$
    <<- morph(\1, ":V0a", False) and morphex(\2, ":V[123]..t.*:Q.*:s", ":[GWpi]")
    -2>> =suggPlur(@)
    # Accord avec le COD “les” : le participe passé « \2 » devrait être au pluriel (et accordé en genre).

TEST: Avais-je {{laissés}} ces notes sur la table ?
TEST: l’avait-il {{regardés}} longtemps ?
TEST: les avais-tu {{acheté}} là-bas ?
TEST: {{A}} vous lire, on ne sait plus que penser de toutes ces histoires
TEST: Combien de bêtes n’as-tu pas déjà massacrées
TEST: Combien de bêtes as-tu déjà massacrées


## 1pl
__[i]/conj(conj_nous_verbe)__
    ^ *nous +({w2})  @@$
    <<- morphex(\1, ":V", ":(?:G|Y|P|1p|3[sp])") and not after("^ +(?:je|tu|ils?|elles?|on|[vn]ous) ")
    -1>> =suggVerb(@, ":1p")
    # Conjugaison erronée. Accord avec « nous ». Le verbe devrait être à la 1ʳᵉ personne du pluriel.

## 2pl
__[i]/conj(conj_vous_verbe)__
    ^ *vous +({w2})  @@$
    <<- morphex(\1, ":V", ":(?:G|Y|P|2p|3[sp])") and not after("^ +(?:je|ils?|elles?|on|[vn]ous) ")
    -1>> =suggVerb(@, ":2p")
    # Conjugaison erronée. Accord avec « vous ». Le verbe devrait être à la 2ᵉ personne du pluriel.

TEST: Et, nous laissant étonnés d’être encore là sans y avoir rien compris,
TEST: les ont-ils {{détecté}} ?
TEST: l’a-t-il {{finis}} ?
TEST: m’as-tu {{entendus}} ?


## se + incohérence
__[i]/conj(conj_se_en_y_xxxez)__
    s(?:e +(?:les? +|la +|)|’(?:en +|y +|))({w_2}ez)  @@$
    <<- morphex(\1, ":2p", ":(?:3[sp]|P)") -1>> =suggVerbInfi(@)        # Incohérence. Avec le pronom “se”, le verbe ne peut être à la deuxième personne du pluriel.

__[i]/conj(conj_se_en_y_xxxons)__
    s(?:e +(?:les? +|la +|)|’(?:en +|y +|))({w_2}ons)  @@$
    <<- morphex(\1, ":1p", ":(?:3[sp]|P)") -1>> =suggVerb(@, ":3p")     # Incohérence. Avec le pronom “se”, le verbe ne peut être à la deuxième personne du pluriel.

TEST: se {{considérez}} comme un génie…
TEST: se {{rencontrerons}} demain grands et petits.


#
# //////////////////////////////////////// PRÉPROCESSEUR ////////////////////////////////////////
#

__<i>__  n(’)importe quo?i @@1 <<- ~1>> `
__<i]__  ^ *ne l(?:es?|a) l(?:ui|eur) <<- ~>> >
__<i]__  ^ *ne (?:[mt]’|l(?:ui|eur) )en <<- ~>> >
__<i]__  ^ *ne (?:[mt]e|[nv]ous) (?:les?|la|en) <<- ~>> >
__<i]__  ^ *ne +(?:en|l(?:es?|a|’(?:en|y))|[mt](?:e|’(?:en|y))|[nv]ous) <<- ~>> >
__<i>__  ^ *n’(?:en |y |) <<- ~>> >
__<i>__  ^ *ne (?:l’|) <<- ~>> >


#
# //////////////////////////////////////// RÈGLES DE CONTRÔLE ////////////////////////////////////////
#


#### CONFUSIONS

# ou / où
__[i]/conf(conf_det_nom_où_pronom)__
    ^ *(?: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
    <<- morphex(\1, ":[NAQ]", ":G")
    -2>> où                                                                         # Confusion probable. Pour évoquer un lieu ou un moment, écrivez :|http://fr.wiktionary.org/wiki/o%C3%B9

TEST: L’hôtel {{ou}} ils sont allés l’été dernier.


#### IMPÉRATIF !

# verbes du 1er et du 3ᵉ groupe en -e
__[i]/imp(imp_vgroupe1)__
    ^ *(\w+es)(?![- ](?:je|tu|[nv]ous|ils?|elles?|t-ils?|t-elles?))  @@$
    <<- morphex(\1, ":V[13].*:Ip.*:2s", ":[GNAM]")
    -1>> =\1[:-1]                                                                   # S’il s’agit d’un impératif, pas de “s”.
__[i]/imp(imp_ne_vgroupe1)__
    ^ *> +(\w+es)(?![- ](?:je|tu|[nv]ous|ils?|elles?|t-ils?|t-elles?))  @@$
    <<- morphex(\1, ":V[13].*:Ip.*:2s", ":G")
    -1>> =\1[:-1]                                                                   # S’il s’agit d’un impératif, pas de “s”.

TEST: {{Apportes}} ton fric à cet homme.
TEST: N’{{abandonnes}} pas si vite.
TEST: Castres est une belle ville.
TEST: Limoges aussi.


__<i>/imp(imp_allez1)__
    ^ *(allés?), @@w <<- -1>> allez                                         # S’il s’agit d’un impératif, écrivez :
__<i>/imp(imp_allez2)__
    ^ *(allés?) ({w_2}) @@w,$ <<- morph(\2, ":[MYOs]") -1>> allez           # S’il s’agit d’un impératif, écrivez :

TEST: {{Allés}}, on y va !
TEST: — {{Allé}} prendre une cuite.


# verbes du 2ᵉ et du 3ᵉ groupe en -t
__[i]/imp(imp_vgroupe2_vgroupe3_t)__
    ^ *(\w+t)(?![- ](?:je|tu|[nv]ous|ils?|elles?|on|t-ils?|t-elles?))  @@$
    <<- morphex(\1, ":V[23].*:Ip.*:3s", ":[GNA]") and analyse(\1[:-1]+"s", ":E:2s", False) and not re.search("(?i)^(?:doit|suffit)$", \1)
    and not (re.search("(?i)^vient$", \1) and after(" +l[ea]"))
    -1>> =\1[:-1]+"s"                                                               # S’il s’agit d’un impératif, la terminaison est “is”, non “it”.
__[i]/imp(imp_ne_vgroupe2_vgroupe3_t)__
    ^ *> +(\w+t)(?![- ](?:je|tu|[nv]ous|ils?|elles?|on|t-ils?|t-elles?))  @@$
    <<- morphex(\1, ":V[23].*:Ip.*:3s", ":G") and analyse(\1[:-1]+"s", ":E:2s", False)
    -1>> =\1[:-1]+"s"                                                               # S’il s’agit d’un impératif, la terminaison est “is”, non “it”.

TEST: {{Finit}} ton assiette.
TEST: Ne {{pourrit}} pas l’ambiance.
TEST: Suffit de s’en servir.


# verbes du 3ᵉ groupe en -d
__[i]/imp(imp_vgroupe3_d)__
    ^ *(\w+d)(?![- ](?:je|tu|[nv]ous|ils?|elles?|on|t-ils?|t-elles?))  @@$
    <<- morphex(\1, ":V3.*:Ip.*:3s", ":[GNA]")
    -1>> \1s                                                                        # S’il s’agit d’un impératif, ajoutez un “s”.
__[i]/imp(imp_ne_vgroupe3_d)__
    ^ *> +(\w+d)(?![- ](?:je|tu|[nv]ous|ils?|elles?|on|t-ils?|t-elles?))  @@$
    <<- morphex(\1, ":V3.*:Ip.*:3s", ":G")
    -1>> \1s                                                                        # S’il s’agit d’un impératif, ajoutez un “s”.

TEST: {{Prend}} le chemin de droite.
TEST: N’{{attend}} pas qu’elle vienne.


# aller
__[i]/imp(imp_va)__
    ^[ >]*(vas)(?! (?:tu|ils?|elles?|t-ils?|t-elles?))  @@$
    <<- -1>> va                                                                     # S’il s’agit d’un impératif, pas de “s”.

TEST: {{Vas}} lui mettre une branlée.


# être
__[i]/imp(imp_sois)__
    ^ *(soit) +({w_2})  @@w,$
    <<- morphex(\2, ":A", ":G") and not after(r"\bsoit\b")
    -1>> sois                                                                       # S’il s’agit d’un impératif, écrivez « sois ».
__[i]/imp(imp_ne_sois)__
    ^ *> +(soit)  @@$
    <<- -1>> sois                                                                   # S’il s’agit d’un impératif, écrivez « sois ».

TEST: {{Soit}} cohérent avec toi-même.
TEST: Ne {{soit}} pas con.


# avoir
__[i]/imp(imp_aie)__
    ^[ >]*(ait?|aies)  @@$
    <<- -1>> aie                                                                    # S’il s’agit d’un impératif, écrivez « aie ».

TEST: {{Ait}} la foi !


# Contrôle
__[i]/imp(imp_verbe_lui_le_la_les_leur)__
    ({w2})-l(?:ui|es?|a|eur)  @@0
    <<- not morph(\1, ":E|>chez", False) and spell(\1)
    -1>> =suggVerbImpe(\1)
    # Erreur : ceci n’est pas une forme impérative.|http://fr.wikipedia.org/wiki/Imp%C3%A9ratif_%28grammaire%29

__[i]/imp(imp_verbe_moi_toi_m_t_en)__
    ({w2})-[tm](?:oi|’en)  @@0
    <<- not morph(\1, ":E|>chez", False) and spell(\1)
    -1>> =suggVerbTense(\1, ":E", ":2s")
    # Erreur : ceci n’est pas une forme impérative.|http://fr.wikipedia.org/wiki/Imp%C3%A9ratif_%28grammaire%29

TEST: {{prend}}-m’en trois, s’il te plaît.
TEST: {{Sert}}-toi d’eux autant que tu le peux, puis casse-toi.
TEST: — {{Abandonnes}}.
TEST: Ne {{donnes}} pas autant.
TEST: N’{{insistes}} pas.
TEST: Ne {{finit}} pas ce devoir.
TEST: {{Finit}} cette tarte.
TEST: Ne {{soit}} pas en retard !
TEST: Ne me {{prend}} pas pour un idiot
TEST: Ne l’{{attend}} pas
TEST: N’y {{vas}} pas
TEST: Ne m’y {{attend}} pas
TEST: Ne {{vient}} que lorsque je te le dirai.
TEST: Ne l’y {{contraint}} pas
TEST: {{Vient}}.
TEST: {{Sert}} le plat.
TEST: {{Attend}} la correction.
TEST: {{Vas}} au diable !
TEST: {{Écartes}} de moi cette coupe.


## Traits d’union manquants
__[i]/imp(imp_union_moi_toi)__
    (?<![’~])({w_2}) ([mt]oi)(?! même)  @@0,$
    <<- morphex(\1, ":E", ":[GM]")
    ->> \1-\2
    # S’il s’agit d’un impératif, mettez un trait d’union.|http://66.46.185.79/bdl/gabarit_bdl.asp?id=4206

TEST: {{Apportez moi}} ce dictionnaire


__[i]/imp(imp_union_nous_vous_lui_y)__
    (?<![’~])({w_2}) ([nv]ous|lui|y)(?! en| y| est)  @@0,$
    <<- morphex(\1, ":E", ":[GM]") and morphex(word(1), ":", ":(?:Y|3[sp])", True) and morph(word(-1), ":Cc", False, True) and not before("~ +$")
    ->> \1-\2
    # S’il s’agit d’un impératif, mettez un trait d’union.|http://66.46.185.79/bdl/gabarit_bdl.asp?id=4206

TEST: {{Donne nous}} du café.


__[i]/imp(imp_union_les)__
    (?<![’~])({w_2}) les(?! plus| moins| mieux| trop| très| en| y)  @@0
    <<- morphex(\1, ":E", ":[GM]") and morphex(word(1), ":", ":(?:N|A|Q|Y|B|3[sp])", True) and morph(word(-1), ":Cc", False, True) and not before("~ +$")
    ->> \1-les
    # S’il s’agit d’un impératif, mettez un trait d’union.|http://66.46.185.79/bdl/gabarit_bdl.asp?id=4206

TEST: {{chante les}} avec conviction


__[i]/imp(imp_union_le_la_leur)__
    (?<![’~])({w_2}) (l(?:e(?:ur|)|a))(?! plus| moins| mieux| peu| plupart| trop| très| une?)  @@0,$
    <<- morphex(\1, ":E", ":[GM]") and morphex(word(1), ":", ":(?:N|A|Q|Y|MP)", True) and morph(word(-1), ":Cc", False, True) and not before("~ +$")
    ->> \1-\2
    # S’il s’agit d’un impératif, mettez un trait d’union.|http://66.46.185.79/bdl/gabarit_bdl.asp?id=4206

TEST: {{Prends le}} avec toi.
TEST: {{Dites leur}} que nous sommes là.
TEST: un sujet si extrêmement politique et polémique lui a donné un accès
TEST: Les États d’ores et déjà très affaiblis le seraient encore plus
TEST: « C’est ainsi », résume la cyptologue (erreur orthographique délibérée sur “cyptologue” pour empêcher certains faux positifs)
TEST: Notez le peu de cas qui en est fait en général dans les médias
#TEST: Prenez les 5 ou 6 revues


__<i]/imp(imp_apostrophe_m_t_en)__
    ([ -][mt])-en @@0
    <<- not (\0.endswith("t-en") and before(r"(?i)\bva$") and morph(word(1), ">guerre ", False, False)) ->> \1’en
    # « \1e » est ici abrégé, c’est une forme élidée. Il faut mettre une apostrophe et non un trait d’union.

TEST: donne{{-m-en}} encore


__[i]/imp(imp_union_m_t_en_y)__
    ({w_2}) [mt]’(?:en|y)  @@0
    <<- morphex(\1, ":E", ":(?:G|M[12])") and morphex(word(1), ":", ":(?:Y|[123][sp])", True)
    ->> =\0.replace(" ", "-")
    # S’il s’agit d’un impératif, mettez un trait d’union.|http://66.46.185.79/bdl/gabarit_bdl.asp?id=4206

TEST: {{donne m’en}}, s’il te plaît.


__[i]/imp(imp_union_verbe_pronom_moi_toi_lui)__
    ({w_2})-(?:en|les|l[ae]) (?:[mt]oi|lui)  @@0
    <<- morph(\1, ":E", False)
    ->> =\0.replace(" ", "-")
    # S’il s’agit d’un impératif, mettez un trait d’union.|http://66.46.185.79/bdl/gabarit_bdl.asp?id=4206

TEST: les analyses, {{donne-les moi}}


__[i]/imp(imp_union_verbe_pronom_en_y_leur)__
    ({w_2})-(?:[mt]oi|[nv]ous|lui|leur|l[ae]|les) (?:en|y|leur)  @@0
    <<- morph(\1, ":E", False) and morphex(word(1), ":[RC]", ":[NAQ]", True)
    ->> =\0.replace(" ", "-")
    # S’il s’agit d’un impératif, mettez un trait d’union.|http://66.46.185.79/bdl/gabarit_bdl.asp?id=4206

TEST: {{prends-leur en}}


__[i]/imp(imp_union_verbe_pronom_nous_vous)__
    ({w_2})-l(?:es?|a) (?:[nv]ous)  @@0
    <<- morph(\1, ":E", False) and morphex(word(1), ":[RC]", ":Y", True)
    ->> =\0.replace(" ", "-")
    # S’il s’agit d’un impératif, mettez un trait d’union.|http://66.46.185.79/bdl/gabarit_bdl.asp?id=4206

TEST: {{apporte-les nous}}


__[i]/imp(imp_union_aller_y)__
    (?:v(?:iens|enez|enons)|all(?:ons|ez)) y
    <<- not morph(word(1), ":Y", False, False) ->> =\0.replace(" ", "-")                            # Il manque un trait d’union.
__[i]/imp(imp_union_vas_y)__
    vas? y
    <<- not word(-1) and not morph(word(1), ":Y", False, False) ->> vas-y                           # Il manque un trait d’union.
__[i]/imp(imp_union_convenir_en)__
    conv(?:iens|enez|enons) en(?! partie) <<- ->> =\0.replace(" ", "-")                             # Il manque un trait d’union.

TEST: {{allons y}}, ça pue.
TEST: {{vas y}}, ce n’est pas dangereux
TEST: {{convenez en}}, c’est une belle affaire malgré son prix élevé



#
# //////////////////////////////////////// PRÉPROCESSEUR ////////////////////////////////////////
# Destruction des pronoms qui précèdent un verbe et de l’adverbe de négation “ne”.
#

# Brainfuck (ici, prudence !)
__[i]__  ne +(?:l(?:ui|eur|a|es?)|[mts]e|[nv]ous) +(?:l(?:a|es?|ui|eur)|en|y) <<- ~>> >
__[i]__  ne +(?:[mts](?:e|’(?:en|y))|[nv]ous|l(?:es?|a|ui|eur|’(?:en|y))) <<- ~>> >
__[i]__  [mts]e +l(?:a|es?) <<- ~>> >
__[i]__  [nmsl]’(?:en|y) <<- ~>> >
__[i]__  l(?:a|es?) +(?:lui|en) <<- ~>> >
__[i]__  lui +(?:la|les?|en|y) <<- not morph(word(-1), ":R", False, True) ~>> >
__[i]__  leur +(?:en|y) <<- not morph(word(-1), ":R", False, False) ~>> >
__[i]__  (?:je|tu|ils?|on) ([nv]ous(?: la| les?|)|lui) @@$ <<- ~1>> >
__[i]__  (?:je|tu|ils?|on) (l(?:es?|a)) ({w_1}) @@w,$
    <<- \1 == "le" and not morph(\2, ":N.*:[me]:[si]") ~1>> >
    <<- \1 == "la" and not morph(\2, ":N.*:[fe]:[si]") ~1>> >
    <<- \1 == "les" and not morph(\2, ":N.*:.:[pi]") ~1>> >
__[i]__  (?:elles?|[nv]ous) ([nv]ous(?: la| les?|)|l(?:es?|ui|a)) @@$ <<- not morph(word(-1), ":R", False, False) ~1>> >
__[i]__  ce(?:ux|lles?|lui|la|) qui ([nv]ous(?: la| les?|)|l(?:es?|ui|a)) @@$ <<- ~1>> >
__[i]__  (?<!’)(en) ({w_2}) @@0,$ <<- morph(\2, ":[123][sp]") ~1>> >
__[i]__  (?:tu|il|on) (en) @@3 <<- not morph(word(-1), ":[123]s", False, False) ~1>> >
__[i]__  (?<!’)elle (en) @@5 <<- not morph(word(-1), ":(?:[123]s|R)", False, False) ~1>> >
__[i]__  (?<!’)elles (en) @@6 <<- not morph(word(-1), ":(?:[123]p|R)", False, False) ~1>> >
__[i]__  ils (en) @@4 <<- not morph(word(-1), ":3p", False, False) ~1>> >
__[i]__  (?<!’)(y) ({w_2}) @@0,2 <<- morph(\2, ":[123][sp]", False) ~1>> >
__[i]__  (le) ({w_2}) @@0,3 <<- morphex(\2, ":(?:[123][sp]|Y)", ":(?:[NAQ].*:m:[si]|G|M)") ~1>> >
__[i]__  (la) ({w_2}) @@0,3 <<- morphex(\2, ":(?:[123][sp]|Y)", ":(?:[NAQ].*:f:[si]|G|M)") ~1>> >
__[i]__  (l’)({w_2}) @@0,2 <<- morphex(\2, ":(?:[123][sp]|Y)", ":(?:[NAQ].*:[si]|G|M)") ~1>> >
__[i]__  (leur) ({w_2}) @@0,5 <<- morphex(\2, ":(?:[123][sp]|Y)", ":(?:[NAQ].*:[si]|G|M)") ~1>> >
__[s]__  [lL]’a <<- ~>> > a
__[i]__  (nous) ({w_2}) @@0,5 <<- morphex(\2, ":(?:[123][sp]|Y)", ":(?:A|G|M|1p)") ~1>> >
__[i]__  (vous) ({w_2}) @@0,5 <<- morphex(\2, ":(?:[123][sp]|Y)", ":(?:A|G|M|2p)") ~1>> >
__[i]__  (?:à|de) ([nv]ous|lui|les?|en)(?! qui) @@$ <<- ~1>> >
__[i]__  (s’)({w4}) @@0,2 <<- morph(\2, ":V", False) ~1>> >
__[i]__  (?:je|tu|ils?|elles?|on) (l’|l(?:es?|a|ui|eur) +|[nv]ous +){w_2} @@* <<- not word(-1) ~1>> >
__[i]__  (?:je|tu|ils?|elles?|on|[nv]ous|ce(?:ux|elles?|lui|la|) qui) (l’)({w4}) @@*,$ <<- morph(\2, ":V", False) ~1>> >
__[i]__  (t’(?:en|y)) ({w_2}) @@0,$ <<- not morph(\2, ":2s", False) or before(r"(?i)\b(?:je|tu|on|ils?|elles?|nous) +$") ~1>> >
__[i]__  (t’)({w_2}) @@0,$ <<- not morph(\2, ":2s|>(ils?|elles?|on) ", False) or before(r"(?i)\b(?:je|tu|on|ils?|elles?|nous) +$") ~1>> >
__[i>__  ne [mtsl]’ <<- ~>> >
__[i>__  [mts]e +l’ <<- ~>> >
__[i>__  [nm]’ <<- ~>> >
__[i]__  [nmts]e <<- ~>> >
__<s>__  > +> <<- ~>> >
# Fin du Brainfuck


#
# //////////////////////////////////////// RÈGLES DE CONTRÔLE ////////////////////////////////////////
#

#### CONFUSION a / à
__[i]/conf(conf_pronom_verbe_à)__
    ^ *(?:je|tu|ils?|on|elles?) +>? *({w_2}) +(a)  @@w,$
    <<- morph(\1, ":V", False) and \2 != "A"
    -2>> à                                                           # Confusion probable : “a” est une conjugaison du verbe “avoir”. Utilisez la préposition :
__[i]/conf(conf_j_verbe_à)__
    ^ *j’({w_2}) +(a)  @@w,$
    <<- morph(\1, ":V", False) and \2 != "A"
    -2>> à                                                           # Confusion probable : “a” est une conjugaison du verbe “avoir”. Utilisez la préposition :
__[i]/conf(conf_nous_vous_verbe_à)__
    ^ *[nv]ous +>? *({w_2}) +(a)  @@w,$
    <<- morphex(\1, ":V", ":Y") and \2 != "A"
    -2>> à                                                           # Confusion probable : “a” est une conjugaison du verbe “avoir”. Utilisez la préposition :

TEST: Il vient {{a}} la maison.
TEST: tu ne donnes rien {{a}} ces hommes.
TEST: Nous les donnons {{a}} ces gens.
TEST: j’arrive {{a}} la gare


#### CONFUSION fasse / face
__<i]/conf(conf_fasse)__
    > +(face)(?! à) @@$ <<- -1>> fasse                     # Confusion probable. Pour le subjonctif de “faire”, écrivez “fasse”.

TEST: j’ai peur qu’il ne leur {{face}} quelque chose de mal


#### CONFUSION ÊTRE / AVOIR
__[i]/conf(conf_ait_confiance_été_faim_tort)__
    (?<!’)(est?) +(con(?:fiance|science)|envie|été|p(?:eine|eur)|faim|h(?:âte|onte)|recours|soif|tort)  @@0,$
    <<- not before(r"(?i)\b(?:ce que?|tout) ")
    -1>> ait                                                         # Confusion probable dans l’expression « avoir \2 ». Vous utilisez ici le verbe « être ».

TEST: La révolution est crainte.
TEST: Je n’en ai cure.
TEST: Notre communauté vous est redevable.
TEST: l’humour est affaire de culture



#### INFINITIF

__[i]/infi(infi_comment_où)__
    (?:comment|où) +({w_2}(?:ée?s?|ez))  @@$
    <<- morphex(\1, ":V", ":M") and not (\1.endswith("ez") and after(" +vous"))
    -1>> =suggVerbInfi(@)                                                                           # Le verbe devrait être à l’infinitif.

TEST: Comment {{pensé}} à ces choses sans perdre l’esprit.


__[i]/infi(infi_qqch_de)__
    (?:afin|en train|avant|façons?|intentions?|manières?) de +({w_2}(?:ée?s?|ez))  @@$
    <<- morphex(\1, ":(?:Q|2p)", ":M")
    -1>> =suggVerbInfi(@)                                                                           # Le verbe devrait être à l’infinitif.

TEST: Nous étions en train de {{trouvé}} une solution à ces soucis récurrents.


__[i]/infi(infi_verbe)__
    ((?:aim|all|v|ir|désir|esp[éè]r|p(?:[eou]|réf[éè]r))\w*) +({w_2}(?:ée?s?|ez))  @@0,$
    <<- morph(\1, ">(?:aimer|aller|désirer|devoir|espérer|pouvoir|préférer|souhaiter|venir) ", False)
    and not morph(\1, ":[GN]", False) and morphex(\2, ":V", ":M")
    -2>> =suggVerbInfi(@)                                                                           # Le verbe devrait être à l’infinitif.

TEST: elle préférait {{mangée}} seule.


__[i]/infi(infi_devoir)__
    (d[eouû]\w+) +({w_2}(?:ée?s?|ez))  @@0,$
    <<- morph(\1, ">devoir ", False) and morphex(\2, ":V", ":M") and not morph(word(-1), ":D", False)
    -2>> =suggVerbInfi(@)                                                                           # Le verbe devrait être à l’infinitif.

TEST: il devait {{utilisé}} son temps à bon escient.


__[i]/infi(infi_verbe_de)__
    ((?:cess|dé[cf]|sugg[éè]r|command|essa|tent|chois|permet|interd)\w*) +(?:pas |plus |point |guère |jamais |peu |rien |) *(?:de +|d’)({w_2}(?:ée?s?|ez))  @@0,$
    <<- morph(\1, ">(?:cesser|décider|défendre|suggérer|commander|essayer|tenter|choisir|permettre|interdire) ", False) and morphex(\2, ":(?:Q|2p)", ":M")
    -2>> =suggVerbInfi(@)                                                                           # Le verbe devrait être à l’infinitif.

TEST: cessez de {{maugréé}} !


__[i]/infi(infi_divers)__
    (?:de quoi|à (?:faire|même de|quoi bon)|avec qui|avant (?:même |)de|marre de|en vue de|du mal à|intérêt à|impossible de|pourquoi|quand|faut-il) +({w_2}(?:ée?s?|ez))  @@$
    <<- morphex(\1, ":(?:Q|2p)", ":M")
    -1>> =suggVerbInfi(@)                                                                           # Le verbe devrait être à l’infinitif.

TEST: faut-il {{pensé}} à ces choses-là encore et encore ?


__[i]/infi(infi_mieux_valoir)__
    mieux (?:ne |)(va\w+) +({w_2}(?:ée?s?|ez))  @@w,$
    <<- morph(\1, ">valoir ", False) and morphex(\2, ":(?:Q|2p)", ":[GM]")
    -2>> =suggVerbInfi(@)                                                                           # Le verbe devrait être à l’infinitif.

TEST: Mieux vaut {{consacré}} son temps à des occupations utiles.


__[i]/infi(infi_à)__
    à +>? *({w_2}(?:ée?|ez))  @@$
    <<- morphex(\1, ":V1", ":[NM]") and not \1.istitle() and not before("> +$")
    -1>> =suggVerbInfi(@)                                                                           # Le verbe devrait être à l’infinitif.

TEST: elle parvenait à y {{songez}} souvent
TEST: je vais à Rodez.


__[i]/infi(infi_avoir_beau)__
    ({avoir}) beau ({w_2}(?:ée?s?|ez|ai[ts]?))  @@0,$
    <<- morph(\1, ">avoir ", False) and morphex(\2, ":V1", ":N")
    -2>> =suggVerbInfi(@)                                                                           # Le verbe devrait être à l’infinitif.|http://fr.wiktionary.org/wiki/avoir_beau

TEST: Ils ont beau {{consacré}} le plus clair de leur temps à ce projet, ça n’avance guère.


__[i]/infi(infi_par_pour_sans)__
    (?:p(?:a|ou)r|sans) +> +({w_2}(?:ée?s?|ai[st]?|ez))  @@$
    <<- morphex(\1, ":[Q123][sp]?", ":Y") -1>> =suggVerbInfi(@)                                     # Le verbe devrait être à l’infinitif.

TEST: pour s’y {{donnait}} le plus souvent.



#__[i]/infi__
#    ((all|v|ir)\w+) ({w_2}é) <<- morph(\1, ">aller ") and morph(\2, ":V", False) ->> _      # Le verbe « \1 » devrait être à l’infinitif.
#__[i]/infi__
#    {avoir} (dû|[ps]u|voulu) ({w_2}[éesz]) <<- morph(\2, ":V.*:(?:Q|2p)", False) ->> _      # Le verbe « \2 » devrait être à l’infinitif.


#### PAS D’INFINITIF

__[i]/ppas(ppas_être)__
    (?<![cC]’)({etre}) +({w_2}er)  @@0,$
    <<- morph(\1, ":V0e", False) and (morphex(\2, ":Y", ":[NAQ]") or \2 in aSHOULDBEVERB) and not re.search("(?i)^(?:soit|été)$", \1)
    and not morph(word(-1), ":Y|>ce", False, False) and not before("(?i)ce (?:>|qu|que >) $")
    and not before_chk1(r"({w_2}) +> $", ":Y") and not before_chk1(r"^ *>? *(\w[\w-]+)", ":Y")
    -2>> =suggVerbPpas(@)                                                   # Incohérence. Après « être », le verbe ne doit pas être à l’infinitif.

TEST: ils sont {{tromper}} par tous ces hypocrites.


#### CONJUGAISON

## 1sg
__[i]/conj(conj_j)__
    j’({w_1})  @@2
    <<- not morph(\1, ":1s|>(?:en|y)", False)
    -1>> =suggVerb(@, ":1s")                                 # Conjugaison erronée. Accord avec « je ». Le verbe devrait être à la 1ʳᵉ personne du singulier.
__[i]/conj(conj_je)__
    (je) +({w_1})  @@0,$
    <<- morphex(\2, ":V", ":(?:1s|G)") and not (morph(\2, ":[PQ]", False) and morph(word(-1), ":V0.*:1s", False, False))
    -2>> =suggVerb(@, ":1s")                                 # Conjugaison erronée. Accord avec « \1 ». Le verbe devrait être à la 1ʳᵉ personne du singulier.
__[i]/conj(conj_je_pronom)__
    (je) +> +({w_1})  @@0,$
    <<- morphex(\2, ":V", ":(?:1s|G|1p)")
    -2>> =suggVerb(@, ":1s")                                 # Conjugaison erronée. Accord avec « \1 ». Le verbe devrait être à la 1ʳᵉ personne du singulier.
__[i]/conj(conj_j_en_y)__
    (j’(?:y|en)) +>? *({w_1})  @@0,$
    <<- morphex(\2, ":V", ":(?:1s|G|1p)")
    -2>> =suggVerb(@, ":1s")                                 # Conjugaison erronée. Accord avec « \1 ». Le verbe devrait être à la 1ʳᵉ personne du singulier.
__[i]/conj(conj_moi_qui)__
    (moi +qui) +>? *({w_1})  @@0,$
    <<- morphex(\2, ":V", ":(?:1s|G|1p|3p!)")
    -2>> =suggVerb(@, ":1s")                                 # Conjugaison erronée. Accord avec « \1 ». Le verbe devrait être à la 1ʳᵉ personne du singulier.

TEST: Je le lui {{prend}}.
TEST: Je l’{{apprend}}.
TEST: Je les {{contre-attaques}}.
TEST: C’est moi qui {{donnes}} des maux de têtes !
TEST: Je maudis celui d’entre nous qui {{mens}}.
TEST: J’y {{vient}}.
TEST: J’en {{revient}}.
TEST: je {{donner}}.
TEST: Je ne leur en {{veut}} pas.
TEST: Je ne le lui {{achèterait}} pas.
TEST: Je ne l’y {{aie}} pas vu.
TEST: Je ne t’{{attend}} pas.
TEST: J’{{arrivait}} en retard.


## 2sg
__[i]/conj(conj_tu)__
    (tu) +({w_1})  @@0,$
    <<- morphex(\2, ":V", ":(?:G|[ISK].*:2s)") and not (morph(\2, ":[PQ]", False) and morph(word(-1), ":V0.*:2s", False, False))
    -2>> =suggVerb(@, ":2s")                                 # Conjugaison erronée. Accord avec « \1 ». Le verbe devrait être à la 2ᵉ personne du singulier.
__[i]/conj(conj_tu_pronom)__
    (tu) +> +({w_1})  @@0,$
    <<- morphex(\2, ":V", ":(?:G|[ISK].*:2s)")
    -2>> =suggVerb(@, ":2s")                                 # Conjugaison erronée. Accord avec « \1 ». Le verbe devrait être à la 2ᵉ personne du singulier.
__[i]/conj(conj_toi_qui)__
    (toi +qui) +>? *({w_1})  @@0,$
    <<- morphex(\2, ":V", ":(?:G|2p|3p!|[ISK].*:2s)")
    -2>> =suggVerb(@, ":2s")                                 # Conjugaison erronée. Accord avec « \1 ». Le verbe devrait être à la 2ᵉ personne du singulier.

TEST: Tu ne {{ment}} jamais.
TEST: Tu {{a}} mal ?
TEST: Tu ne le lui {{prend}} pas.
TEST: Tu ne m’{{attendra}} pas.
TEST: toi qui n’y {{connait}} rien, ne nous ennuie pas avec tes théories.


## 3sg
__[i]/conj(conj_il)__
    (il) +({w_1})  @@0,$
    <<- morphex(\2, ":V", ":(?:3s|P|G)") and not (morph(\2, ":[PQ]", False) and morph(word(-1), ":V0.*:3s", False, False))
    -2>> =suggVerb(@, ":3s")                                 # Conjugaison erronée. Accord avec « \1 ». Le verbe devrait être à la 3ᵉ personne du singulier.
    <<- __also__ and morph(\2, ":3p", False) -1>> ils        # Accord avec « \2 ».
__[i]/conj(conj_il_pronom)__
    (il) +> +({w_1})  @@0,$
    <<- morphex(\2, ":V", ":(?:3s|P|G)")
    -2>> =suggVerb(@, ":3s")                                 # Conjugaison erronée. Accord avec « \1 ». Le verbe devrait être à la 3ᵉ personne du singulier.
    <<- __also__ and morph(\2, ":3p", False) -1>> ils        # Accord avec « \2 ».

TEST: {{Il}} {{accusent}}.
TEST: il {{bus}} du vin.
TEST: Il {{pris}}.
TEST: Il {{rougis}}.
TEST: Il {{suivis}}.
TEST: Il {{grandis}}.
TEST: Il {{bâtis}}.
TEST: Il {{bus}}.
TEST: Il {{mues}}.
TEST: {{il}} ne {{pensent}} à rien.


__[i]/conj(conj_on)__
    (on) +({w_1})  @@0,$
    <<- morphex(\2, ":V", ":(?:3s|P|G)") and not (morph(\2, ":[PQ]", False) and morph(word(-1), ":V0.*:3s", False, False))
    -2>> =suggVerb(@, ":3s")                                 # Conjugaison erronée. Accord avec « \1 ». Le verbe devrait être à la 3ᵉ personne du singulier.
__[i]/conj(conj_on_pronom)__
    (on) +> +({w_1})  @@0,$
    <<- morphex(\2, ":V", ":(?:3s|P|G)")
    -2>> =suggVerb(@, ":3s")                                 # Conjugaison erronée. Accord avec « \1 ». Le verbe devrait être à la 3ᵉ personne du singulier.

TEST: on {{remué}} beaucoup.
TEST: on {{refuses}} tout cela
TEST: on ne se {{bougent}} pas suffisamment


__[i]/conj(conj_quiconque)__
    quiconque +({w_1})  @@$
    <<- morphex(\1, ":V", ":(?:3s|P|G|Q.*:m:[si])")
    -1>> =suggVerb(@, ":3s")                                 # Conjugaison erronée. Accord avec « quiconque ». Le verbe devrait être à la 3ᵉ personne du singulier.
__[i]/conj(conj_quiconque_pronom)__
    quiconque +> +({w_1})  @@$
    <<- morphex(\1, ":V", ":(?:3s|P|G)")
    -1>> =suggVerb(@, ":3s")                                 # Conjugaison erronée. Accord avec « quiconque ». Le verbe devrait être à la 3ᵉ personne du singulier.

TEST: Quiconque {{pensez}} s’en sortir se trompait lourdement.
TEST: Il voulut punir quiconque s’y {{adonnaient}}.
TEST: quiconque issu de la gauche n’a aucune chance.


__[i]/conj(conj_ce)__
    (ce) +>? *({w_1})  @@0,$
    <<- morphex(\2, ":V", ":(?:N|A|3s|P|Q|G|V0e.*:3p)")
    -2>> =suggVerb(@, ":3s")                                 # Conjugaison erronée. Accord avec « \1 ». Le verbe devrait être à la 3ᵉ personne du singulier.

__[i]/conj(conj_celui_celle_qui)__
    (ce(?:lui|lle|) +qui) +>? *({w_1})  @@0,$
    <<- morphex(\2, ":V", ":(?:3s|P|Q|G)")
    -2>> =suggVerb(@, ":3s")                                 # Conjugaison erronée. Accord avec « \1 ». Le verbe devrait être à la 3ᵉ personne du singulier.

TEST: Ce qui, la plupart du temps, {{donnes}} des maux de tête.
TEST: Ce qui {{fâchent}} mes amis.
TEST: celui qui {{pensent}} mal de toute chose


__[i]/conj(conj_ça)__
    (ça|chacune?|l’une?|ce(?:ci|la|lui-(?:ci|là)|lle-(?:ci|là))|n`importe quo?i|quelqu(?:’une?|e chose))(?: +qui|) +>? *({w_1})  @@0,$
    <<- morphex(\2, ":V", ":(?:3s|P|Q|G|3p!)") and not morph(word(-1), ":[VR]|>de", False, False)
    -2>> =suggVerb(@, ":3s")                                 # Conjugaison erronée. Accord avec « \1 ». Le verbe devrait être à la 3ᵉ personne du singulier.

TEST: chacun {{fais}} comme il peut
TEST: quelqu’un {{sauras}}
TEST: quelqu’une se {{montrent}} désagréable
TEST: n’importe quoi {{peux}} réussir
TEST: n’importe qui {{peux}} y arriver.
TEST: quelque chose {{sens}} mauvais ici
TEST: l’un d’eux {{viendras}}
TEST: ce {{dois}} être ennuyeux
TEST: ce {{seras}} foutu
TEST: mais ça ne vous {{aideras}} en rien
TEST: Cela ne t’{{aideras}} pas.
TEST: Cela {{dis}}, on ne sait pas comment s’en sortir.
TEST: Y avait-il seulement quelqu’un pour vouloir soumettre ses recherches ?


__[i]/conj(conj_tout)__
    tout(?: +qui|) +>? *({w_1})  @@$
    <<- morphex(\1, ":V", ":(?:3s|P|Q|G|3p!)") and not morph(word(-1), ":[VRD]|>de", False, False)
    and not( morph(\1, ":(?:Y|N.*:m:[si])", False) and not re.search(" (?:qui|>) ", \0) )
    -1>> =suggVerb(@, ":3s")                                 # Conjugaison erronée. Accord avec « tout ». Le verbe devrait être à la 3ᵉ personne du singulier.

TEST: Tout {{reviens}} à ça.
TEST: Le tout nouveau président de la fondation qui héberge Wikipédia
TEST: tout discours de sortie nourrit immanquablement la sortie


__[i]/conj(conj_lequel_laquelle)__
    (l(?:equel|aquelle))(?: +qui|) +>? *({w_1})  @@0,$
    <<- morphex(\2, ":V", ":(?:3s|P|Q|G|3p!)") and not morph(word(-1), ":[VR]|>de", False, False)
    and not( morph(\2, ":Y", False) and not re.search(" (?:qui|>) ", \0) )
    -2>> =suggVerb(@, ":3s")                                 # Conjugaison erronée. Accord avec « \1 ». Le verbe devrait être à la 3ᵉ personne du singulier.

TEST: Lequel {{viendraient}} nous donner des leçons ?
TEST: Laquelle choisir ?
TEST: Lequel manger ?


__[i]/conj(conj_c_en)__
    (c’en) ({w_2})  @@0,$
    <<- not morph(\2, ":3s", False)
    -2>> =suggVerb(@, ":3s")                                 # Conjugaison erronée. Accord avec « \1 ». Le verbe devrait être à la 3ᵉ personne du singulier.
    <<- not morph(\2, ":3s", False) or before(r"(?i)\b(?:ils?|on) +")
    -1>> s’en                                                # Confusion : « c’en » est la forme élidée de « ça en ». Pour la forme pronominale « se », écrivez :

TEST: C’en était malsain.
TEST: C’en devenait trop.
TEST: il {{c’en}} était aperçu.
TEST: on {{c’en}} aperçoit que trop tard.


__[i]/conj(conj_elle)__
    (?<![dD]’)(elle) +({w_1})  @@0,$
    <<- morphex(\2, ":V", ":(?:3s|P|G)") and not morph(word(-1), ":R|>(?:et|ou)", False, False)
    and not (morph(\2, ":[PQ]", False) and morph(word(-1), ":V0.*:3s", False, False))
    -2>> =suggVerb(@, ":3s")                                 # Conjugaison erronée. Accord avec « \1 ». Le verbe devrait être à la 3ᵉ personne du singulier.
    <<- __also__ and morph(\2, ":3p", False) -1>> elles      # Accord avec « \2 ».
__[i]/conj(conj_elle_pronom)__
    (?<![dD]’)(elle) +> +({w_1})  @@0,$
    <<- morphex(\2, ":V", ":(?:3s|P|G)") and not morph(word(-1), ":R|>(?:et|ou)", False, False)
    -2>> =suggVerb(@, ":3s")                                 # Conjugaison erronée. Accord avec « \1 ». Le verbe devrait être à la 3ᵉ personne du singulier.
    <<- __also__ and morph(\2, ":3p", False) -1>> elles      # Accord avec « \2 ».

TEST: Elle {{conquis}}.
TEST: Elle {{finis}}.
TEST: Elle {{pâlis}}.
TEST: {{Elles}} {{donne}} des leçons.
TEST: {{Elle}} ne nous {{croient}} jamais.
TEST: {{elle}} {{sont}} parties.
TEST: {{elle}} ne {{sont}}
TEST: {{elle}} {{sont}} partis.
TEST: elle {{demeures}}
TEST: elle {{mangeras}}
TEST: elle {{fus}} partie


__[i]/conj(conj_mieux_vaut)__
    mieux (va(?:ux|lais|udrais))  @@$
    <<- -1>> =\1[:-1]+"t"                                    # Conjugaison erronée. Accord avec “mieux” : utilisez la 3ᵉ personne du singulier.

TEST: Mieux {{vaux}} ne rien dire.
TEST: Mais là-bas mieux {{valais}} ouvrir sa gueule que se taire.


__[i]/conj(conj_personne_aucun_rien_nul)__
    (personne|aucun|rien|nul(?:le|)) +(?:qui +|)> +({w_1})  @@0,$
    <<- morphex(\2, ":V", ":(?:3s|P|G)") and morphex(word(-1), ":C", ":(?:Y|P|Q|[123][sp]|R)", True)
    and not( \1.endswith("ien") and before("> +$") and morph(\2, ":Y", False) )
    -2>> =suggVerb(@, ":3s")                                 # Conjugaison erronée. Accord avec « \1… ». Le verbe devrait être à la 3ᵉ personne du singulier.

TEST: Personne ne {{peux}} me le dire.
TEST: Rien ne {{sers}} de courir
TEST: Rien n’{{arrives}} sans raison
TEST: Rien, en ce qui le concernait, ne {{pouvais}} le ramener à la raison.
TEST: personne n’en {{parlent}}
TEST: aucun d’entre nous n’{{as}} donné
TEST: aucun ne {{vas}} là-bas
TEST: nul ne {{sais}} que faire
TEST: nulle n’{{iras}} là-bas
TEST: nulle femme ne {{saurais}} le faire
TEST: nul homme ne {{sauras}} s’y prendre


__[i]/conj(conj_un_une_des)__
    (une? des {w_2}) +({w_1})  @@0,$
    <<- morphex(\2, ":V", ":(?:3s|P|G|Q)") and morphex(word(-1), ":C", ":(?:Y|P|Q|[123][sp]|R)", True)
    -2>> =suggVerb(@, ":3s")                                 # Conjugaison erronée. Accord avec « \1… ». Le verbe devrait être à la 3ᵉ personne du singulier.

__[i]/conj(conj_un_une_des_pronom)__
    (une? des {w_2}) +(?:qui +>? *|> +)({w_1})  @@0,$
    <<- morphex(\2, ":V", ":(?:3s|P|G)") and morphex(word(-1), ":C", ":(?:Y|P|Q|[123][sp]|R)", True)
    -2>> =suggVerb(@, ":3s")                                 # Conjugaison erronée. Accord avec « \1… ». Le verbe devrait être à la 3ᵉ personne du singulier.

TEST: un des membres présents au conseil {{demandent}} un vote à bulletin secret
TEST: une des femmes de ce conseil ne {{céderaient}} jamais au chantage.
TEST: l’un des chants les plus diffusés pendant la Révolution culturelle


__[i]/conj(conj_infi)__
    ^ *({infi}) +>? *({w_2})  @@0,$
    <<- morph(\1, ":Y", False) and morph(\2, ":V.[a-z_!?]+(?!.*:(?:3s|P|Q|Y|3p!))") 
    -2>> =suggVerb(@, ":3s")                                 # Conjugaison erronée. Accord avec « \1… ». Le verbe devrait être à la 3ᵉ personne du singulier.

TEST: manger {{fais}} grossir.
TEST: boire immodérément {{nuis}} à la santé


__[i]/conj(conj_det_sing_nom)__
    (?<![dD]’)(l[ea] |une? |l’|[mts](?:on|a) |ce(?:tte|t|) |leur ) *({w_2}) +(?:qui +|)(?!j’|c’)({w_2})  @@0,w,$
    <<- not (re.search("(?i)^une? +(?:dizaine|douzaine|quinzaine|vingtaine|trentaine|quarantaine|cinquantaine|soixantaine|centaine|majorité|minorité|millier|poignée) ", \0) and morph(\3, ":3p", False)) and
    morphex(word(-1), ":C", ":(?:Y|P)", True) and morph(\2, ":[NAQ].*:[si]", False) and morphex(\3, ":V", ":(?:3s|P|Q|Y|3p!|G)")
    and not (before(r"(?i)\b(?:et|ou) +$") and morph(\3, ":[1-3]p", False)) and not before(r"(?i)\bni .* ni\b") and not checkAgreement(\2, \3)
    -3>> =suggVerb(@, ":3s")                            # Conjugaison erronée. Accord avec « \1 \2… ». Le verbe devrait être à la 3ᵉ personne du singulier.
__[i]/conj(conj_det_sing_nom_pronom)__
    (?<![dD]’)(l[ea] |une? |l’|[mts](?:on|a) |ce(?:tte|t|) |leur |nul(?:le|) ) *({w_2}) +(?:qui +|)> +({w_2})  @@0,w,$
    <<- not (re.search("(?i)^une? +(?:dizaine|douzaine|quinzaine|vingtaine|trentaine|quarantaine|cinquantaine|soixantaine|centaine|majorité|minorité|millier|poignée) ", \0) and morph(\3, ":3p", False)) and
    morphex(word(-1), ":C", ":(?:Y|P)", True) and morph(\2, ":[NAQ].*:[si]", False) and morphex(\3, ":V", ":(?:3s|1p|P|Q|Y|3p!|G)")
    and not (before(r"(?i)\b(?:et|ou) +$") and morph(\3, ":[123]p", False)) and not before(r"(?i)\bni .* ni\b")
    -3>> =suggVerb(@, ":3s")                            # Conjugaison erronée. Accord avec « \1 \2… ». Le verbe devrait être à la 3ᵉ personne du singulier.

TEST: La {{N.S.A.}} {{espionneras}} toujours tout le monde                                          ->> NSA|||espionnera
TEST: La suspicion envers les élus {{accroissaient}}…                                               ->> accroissait
TEST: Le chien n’{{es}} pas mort.                                                                   ->> est|||est
TEST: Ce roman-là de Jean-Paul Sartre {{es}} passionnant.
TEST: La Corée {{peux}} gagner.                                                                     ->> peut|||peut
TEST: La Corée ne {{pourras}} pas gagner.                                                           ->> pourra|||pourra
TEST: une hausse de 2 % {{satisfais}} tout le monde                                                 ->> satisfait
TEST: L’homme y {{donnes}}
TEST: Le chien y {{viens}}                                                                          ->> vient
TEST: L’homme le {{deviens}}                                                                        ->> devient
TEST: La femme la {{prends}}                                                                        ->> prend
TEST: Le feu nous {{donnes}} chaud.
TEST: tout le monde {{prends}} ses aises                                                            ->> prend
TEST: J’aimerais aussi que mon problème {{sois}} réglé.                                             ->> soit
TEST: La proscription de nager {{pourraient}} nous porter préjudice à long terme                    ->> pourrait
TEST: L’hypothétique nouveau président
TEST: une majorité de garçons voient mal comment faire


# confusions noms/adjectifs/verbes (voir règles DPP)
__[i]/conj(conj_det_nom_ambiguïté1)__
    (?<![dD]’)(une?|[mts](?:on|a)|ce(?:tte|t|)) +({w_2})~ *({w_2})  @@0,w,$
    <<- morphex(word(-1), ":C", ":(?:Y|P)", True) and isAmbiguousAndWrong(\2, \3, ":s", ":3s")
    and not (before(r"(?i)\b(?:et|ou) +$") and morph(\3, ":(?:[123]p|p)", False)) and not before(r"(?i)\bni .* ni\b")
    -3>> =suggVerb(@, ":3s", suggSing)                          # Accord avec « \1 \2… » incorrect. Conjugaison erronée ou accord nom/adjectif incorrect.

__[i]/conj(conj_det_nom_ambiguïté2)__
    (l(?:e(?:ur|) |a |’)) *({w_2})~ *({w_2})  @@0,w,$
    <<- morphex(word(-1), ":C", ":(?:Y|P)", True) and isVeryAmbiguousAndWrong(\2, \3, ":s", ":3s", not word(-1))
    and not (before(r"(?i)\b(?:et|ou) +$") and morph(\3, ":(?:[123]p|p)", False)) and not before(r"(?i)\bni .* ni\b")
    -3>> =suggVerb(@, ":3s", suggSing)                          # Accord avec « \1 \2… » incorrect. Conjugaison erronée ou accord nom/adjectif incorrect.

TEST: mon chat {{sautes}}
TEST: cette fille {{bouffes}} comme mille
TEST: cette marchande {{marchandes}}
TEST: la marchande {{marchandes}}
TEST: la chatte {{finis}}
TEST: le chat {{finis}}
TEST: une crise {{violent}}
TEST: un cri {{violes}}


## Incohérences avec formes verbales 1sg et 2sg
__[i]/conj(conj_xxxai_sans_sujet)__
    \w*ai(?! je)
    <<- ( morph(\0, ":1s") or ( before("> +$") and morph(\0, ":1s", False) ) ) and not (\0[0:1].isupper() and before0(r"\w"))
    and not before0(r"(?i)\b(?:j(?:e |[’'])|moi(?:,? qui| seul) )")
    ->> =suggVerb(@, ":3s")                                     # Incohérence. Ceci est un verbe à la 1ʳᵉ personne du singulier. Sujet (“je” ou “moi qui”) introuvable.
__[i]/conj(conj_xxxes_sans_sujet)__
    \w*es(?! tu)
    <<- morphex(\0, ":2s", ":(?:E|G|W|M|J|[13][sp]|2p)") and not \0[0:1].isupper() and not before("^ *$")
    and ( not morph(\0, ":[NAQ]", False) or before("> +$") )
    and not before0(r"(?i)\bt(?:u |[’']|oi,? qui |oi seul )")
    ->> =suggVerb(@, ":3s")                                     # Incohérence. Ceci est un verbe à la 2ᵉ personne du singulier. Sujet (“tu” ou “toi qui”) introuvable.
__[i]/conj(conj_xxxas_sans_sujet)__
    \w+as(?! tu)
    <<- morphex(\0, ":2s", ":(?:G|W|M|J|[13][sp]|2p)") and not (\0[0:1].isupper() and before0(r"\w"))
    and ( not morph(\0, ":[NAQ]", False) or before("> +$") )
    and not before0(r"(?i)\bt(?:u |[’']|oi,? qui |oi seul )")
    ->> =suggVerb(@, ":3s")                                     # Incohérence. Ceci est un verbe à la 2ᵉ personne du singulier. Sujet (“tu” ou “toi qui”) introuvable.
__[i]/conj(conj_xxxxs_sans_sujet)__
    \w+[iudnrtpcï]s(?! (?:tu|je))
    <<- morphex(\0, ":[12]s", ":(?:E|G|W|M|J|3[sp]|2p|1p)") and not (\0[0:1].isupper() and before0(r"\w"))
    and ( not morph(\0, ":[NAQ]", False) or before("> +$") or ( re.search("(?i)^étais$", \0) and not morph(word(-1), ":[DA].*:p", False, True) ) )
    and not before0(r"(?i)\b(?:j(?:e |[’'])|moi(?:,? qui| seul) |t(?:u |[’']|oi,? qui |oi seul ))")
    ->> =suggVerb(@, ":3s")                                                  # Incohérence. Le sujet de cette forme verbale est introuvable.
__[i]/conj(conj_peux_veux_sans_sujet)__
    [pv]eux(?! (?:tu|je))
    <<- not (\0[0:1].isupper() and before0(r"\w")) and not before0(r"(?i)\b(?:j(?:e |[’'])|moi(?:,? qui| seul) |t(?:u |[’']|oi,? qui |oi seul ))")
    ->> =suggVerb(@, ":3s")                                                  # Incohérence. Le sujet de cette forme verbale est introuvable.
__[i]/conj(conj_équivaux_prévaux_sans_sujet)__
    (?:équi|pré|)vaux(?! (?:tu|je))
    <<- not (\0[0:1].isupper() and before0(r"\w")) and not before0(r"(?i)\b(?:j(?:e |[’'])|moi(?:,? qui| seul) |t(?:u |[’']|oi,? qui |oi seul ))")
    ->> =suggVerb(@, ":3s")                                                  # Incohérence. Le sujet de cette forme verbale est introuvable.

TEST: Caroline, quand l’heure viendra, {{décideras}} de la conduite à tenir.
TEST: Lui, quand il y pensait, en {{arrivai}} à chaque fois à la même conclusion.
TEST: Elle, ici et dans tous les cas de figure, {{veux}} toujours en faire plus.
TEST: Le total de cette opération, contrairement à ce qu’on pense, {{équivaux}} à au moins trois d’entre eux.
TEST: {{j'}}ai signalé que {{j'}}essayais de regrouper les paragraphes. (Tests avec apostrophe droite.)


## 1pl
__[i]/conj(conj_nous_pronom)__
    ^ *nous +> +({w1})  @@$
    <<- morphex(\1, ":V", ":(?:1p|3[sp])") and not after("^ +(?:je|tu|ils?|elles?|on|[vn]ous)")
    -1>> =suggVerb(@, ":1p")                                 # Conjugaison erronée. Accord avec « nous ». Le verbe devrait être à la 1ʳᵉ personne du pluriel.
__[i]/conj(conj_nous_qui)__
    ^ *nous +qui +>? *({w1})  @@$
    <<- morphex(\1, ":V", ":1p") and not after("^ +(?:je|tu|ils?|elles?|on|[vn]ous)")
    -1>> =suggVerb(@, ":1p")                                 # Conjugaison erronée. Accord avec « nous ». Le verbe devrait être à la 1ʳᵉ personne du pluriel.
__[i]/conj(conj_nous)__
    ^ *nous +(?:qui +(?:> +|)|> +)(\w+ont)  @@$
    <<- morphex(\1, ":V", ":1p") and not after("^ +(?:ils|elles)")
    -1>> =suggVerb(@, ":1p")                                 # Conjugaison erronée. Accord avec « nous ». Le verbe devrait être à la 1ʳᵉ personne du pluriel.

TEST: nous {{donné}} trop de considération
TEST: nous vous {{donnerez}} trop de considération
TEST: nous qui {{somme}} si savants
TEST: nous qui {{mourront}} pour toi.


## 2pl
__[i]/conj(conj_vous_pronom)__
    ^ *vous +> +({w1})  @@$
    <<- morphex(\1, ":V", ":(?:2p|3[sp])") and not after("^ +(?:je|ils?|elles?|on|[vn]ous)")
    -1>> =suggVerb(@, ":2p")                                 # Conjugaison erronée. Accord avec « vous ». Le verbe devrait être à la 2ᵉ personne du pluriel.
__[i]/conj(conj_vous_qui)__
    ^ *vous +qui +>? *({w1})  @@$
    <<- morphex(\1, ":V", ":2p") and not after("^ +(?:je|ils?|elles?|on|[vn]ous)")
    -1>> =suggVerb(@, ":2p")                                 # Conjugaison erronée. Accord avec « vous ». Le verbe devrait être à la 2ᵉ personne du pluriel.

TEST: vous {{donné}} du bonheur
TEST: vous lui {{donner}} du temps
TEST: vous qui {{avançait}} dans la nuit comme des ombres furtives


## Incohérences avec formes verbales 1pl et 2pl
__[i]/conj(conj_xxxons_sans_sujet)__
    \w+ons(?! nous)
    <<- morphex(\0, ":V.*:1p", ":[EGMNAJ]") and not (\0[0:1].isupper() and before(r"\w"))
    and not before0(r"\b(?:[nN]ous(?:-mêmes?|)|[eE]t moi(?:-même|)|[nN]i (?:moi|nous)),? ")
    ->> =suggVerb(@, ":3p")                                 # Incohérence. Ceci est un verbe à la 1ʳᵉ personne du pluriel. Sujet (“nous” ou équivalent) introuvable.
__[i]/conj(conj_xxxez_sans_sujet)__
    \w+ez(?! vous)
    <<- morphex(\0, ":V.*:2p", ":[EGMNAJ]") and not (\0[0:1].isupper() and before(r"\w"))
    and not before0(r"\b(?:[vV]ous(?:-mêmes?|)|[eE]t toi(?:-même|)|[tT]oi(?:-même|) et|[nN]i (?:vous|toi)),? ")
    ->> _                                                   # Incohérence. Ceci est un verbe à la 2ᵉ personne du pluriel. Sujet (“vous” ou équivalent) introuvable.

TEST: les hommes et les femmes, qui sans un bruit, sans une parole amère, {{continuerons}} leur tâche n’en seront pas plus récompensés.
TEST: il était dit que cette femme et son frère {{promènerez}} leur chien à cette heure de la journée.
TEST: cet homme et cette femme {{pouvez}} y parvenir avec de la persévérance
TEST: Comme on lui disait que vous-même aviez déjà consulté le notaire
TEST: ce sont des terroristes et ça ne nous arrivera pas à nous, qui n’avons rien à nous reprocher
TEST: mes supérieurs et moi-même avons pris la décision de ne pas vendre
TEST: Ni lui ni moi n’avions mangé
TEST: Mon épouse et moi-même avons toujours dit


## 3pl
__[i]/conj(conj_ils)__
    (ils) +({w_2})  @@0,$
    <<- morphex(\2, ":V", ":(?:3p|P|Q|G)") and not (morph(\2, ":[PQ]", False) and morph(word(-1), ":V0.*:3p", False, False))
    -2>> =suggVerb(@, ":3p")                                # Conjugaison erronée. Accord avec « \1 ». Le verbe devrait être à la 3ᵉ personne du pluriel.
    <<- __also__ and morph(\2, ":3s", False) -1>> il        # Accord avec « \2 ».
__[i]/conj(conj_ils_pronom)__
    (ils) +> +({w_2})  @@0,$
    <<- morphex(\2, ":V", ":(?:3p|P|G)") -2>> =suggVerb(@, ":3p")   # Conjugaison erronée. Accord avec « \1 ». Le verbe devrait être à la 3ᵉ personne du pluriel.
    <<- __also__ and morph(\2, ":3s", False) -1>> il                # Accord avec « \2 ».

TEST: {{Ils}} {{vienne}} souvent.
TEST: Ils ne m’{{attends}} pas.
TEST: {{Ils}} vous le {{donne}}.


__[i]/conj(conj_ceux_celles_qui)__
    (ce(?:ux|lles) +qui) +>? *({w_1})  @@0,$
    <<- morphex(\2, ":V", ":(?:3p|P|Q|G)")
    -2>> =suggVerb(@, ":3p")                                # Conjugaison erronée. Accord avec « \1 ». Le verbe devrait être à la 3ᵉ personne du singulier.

TEST: Ceux qui {{chante}} toute la journée…
TEST: Celles qui {{pense}}.


__[i]/conj(conj_ceux_là_celles_ci_lesquels)__
    (ce(?:ux-(?:ci|là)|lles-(?:ci|là))|lesquel(?:le|)s)(?: +qui|) +>? *({w_1})  @@0,$
    <<- morphex(\2, ":V", ":(?:3p|P|Q|G)") and not morph(word(-1), ":[VR]", False, False)
    and not (morph(\2, ":Y", False) and re.search(r"(?i)lesquel", \1) and not re.search(" qui |>", \0))
    -2>> =suggVerb(@, ":3p")                                # Conjugaison erronée. Accord avec « \1 ». Le verbe devrait être à la 3ᵉ personne du singulier.

TEST: lesquels {{devienne}} des ennuyeux incomparables.
TEST: Mais parmi les millions de causes à défendre, lesquelles choisir ?


__[i]/conj(conj_elles)__
    (?<![dD]’)(elles) +({w_2})  @@0,$
    <<- morphex(\2, ":V", ":(?:3p|P|Q|G)") and not morph(word(-1), ":R", False, False) and not (morph(\2, ":[PQ]", False) and morph(word(-1), ":V0.*:3p", False, False))
    -2>> =suggVerb(@, ":3p")                                # Conjugaison erronée. Accord avec « \1 ». Le verbe devrait être à la 3ᵉ personne du pluriel.
    <<- __also__ and morph(\2, ":3s", False) -1>> elle      # Accord avec « \2 ».
__[i]/conj(conj_elles_pronom)__
    (?<![dD]’)(elles) +> +({w_2})  @@0,$
    <<- morphex(\2, ":V", ":(?:3p|P|G)") and not morph(word(-1), ":R", False, False)
    -2>> =suggVerb(@, ":3p")                                # Conjugaison erronée. Accord avec « \1 ». Le verbe devrait être à la 3ᵉ personne du pluriel.
    <<- __also__ and morph(\2, ":3s", False) -1>> elle      # Accord avec « \2 ».

TEST: {{elles}} {{avance}} rapidement sur ce projet
TEST: {{Elles}} n’y {{comprenne}} rien
TEST: L’expérience sensible qu’il nous restera bientôt d’elles est à peu près


# on / ont
__[i]/conf(conf_ont1)__
    (?:ils|c?eux +qui|c?elles +qui) +(on)  @@$
    <<- -1>> ont                                            # Incohérence : « on » est un pronom personnel, « ont » est une conjugaison du verbe avoir.

TEST: ces gens-là ils {{on}} {{raison}} plus souvent que la plupart des gens.
TEST: Ils soutiennent ceux qui {{on}} {{tant}} de raison d’être en colère.


__[i]/conf(conf_ont2)__
    (?<![dD]’)(?:elles|ceux-(?:ci|là)|celles-(?:ci|là)) +(on)  @@$
    <<- not before(r"(?i)\b(?:à|avec|sur|chez|par|dans|parmi|contre|ni|de|pour|sous) +$")
    -1>> ont                                                # Incohérence : « on » est un pronom personnel, « ont » est une conjugaison du verbe avoir.

TEST: celles-là {{on}} {{vraiment}} un problème avec la religion.
TEST: Or parmi celles-ci on trouve typiquement d’un côté les structures


# L’accord par syllepse est obligatoire après /la plupart/, ainsi qu’après /nombre/ et /quantité/ employés sans déterminant. L’accord se fait avec le « pseudo-complément ».

__[i]/conj(conj_beaucoup_d_aucuns_la_plupart)__
    (beaucoup|d’aucuns|la plupart) +>? *({w_2})  @@0,$
    <<- morphex(\2, ":V", ":(?:3p|P|Q|G)") and not morph(word(-1), ":[VR]|>de ", False, False)
    -2>> =suggVerb(@, ":3p")                                # Conjugaison erronée. Accord avec « \1 ». Le verbe devrait être à la 3ᵉ personne du pluriel.

__[i]/conj(conj_beaucoup_d_aucuns_la_plupart_qui)__
    (beaucoup|d’aucuns|la plupart) +qui +>? *({w_2})  @@0,$
    <<- morphex(\2, ":V", ":(?:3p|P|Q|G)") and not morph(word(-1), ":[VR]", False, False)
    -2>> =suggVerb(@, ":3p")                                # Conjugaison erronée. Accord avec « \1 ». Le verbe devrait être à la 3ᵉ personne du pluriel.

TEST: la plupart des hommes {{vienne}}
TEST: La plupart {{admet}}
TEST: beaucoup {{vienne}}
TEST: d’aucuns {{pense}} que c’est faux
TEST: beaucoup qui ne {{pense}} jamais à rien, mais qui ont quand même des avis sur tout.
TEST: beaucoup entre la peste et le choléra.


__[i]/conj(conj_certains_tous_plusieurs)__
    (?<!de )(certaine?s|tou(?:te|)s|plusieurs)(?: +qui|) +>? *({w_2})  @@0,$
    <<- morphex(\2, ":V", ":(?:G|N|A|3p|P|Q)") and not morph(word(-1), ":[VR]", False, False)
    -2>> =suggVerb(@, ":3p")                                # Conjugaison erronée. Accord avec « \1 ». Le verbe devrait être à la 3ᵉ personne du pluriel.

TEST: certains {{prenne}} leur temps
TEST: Plusieurs qui {{pense}} que c’est une arnaque se sont quand même trompés.


__[i]/conj(conj_det_plur_nom)__
    ([lcmts]es|[nv]os|leurs|quelques|certaine?s|plusieurs) +({w_2}) +(?:qui +|)(?!j’|c’)({w_2})  @@0,w,$
    <<- morph(\2, ":[NAQ].*:[pi]", False) and morphex(\3, ":V", ":(?:[13]p|P|Q|Y|G|A.*:e:[pi])") and morphex(word(-1), ":C", ":[YP]", True) and not checkAgreement(\2, \3)
    and not( morph(\3, ":3s", False) and before(r"(?i)\b(?:le|ce(?:tte|t|)|[mts](?:on|a)) .+ entre .+ et ") )
    -3>> =suggVerb(@, ":3p")                                # Conjugaison erronée. Accord avec « \1 \2… ». Le verbe devrait être à la 3ᵉ personne du pluriel.
__[i]/conj(conj_det_plur_nom_pronom)__
    ([lcmts]es|[nv]os|leurs|quelques|certaine?s|plusieurs) +({w_2}) +(?:qui +|)> +({w_2})  @@0,w,$
    <<- morph(\2, ":[NAQ].*:[pi]", False) and morphex(\3, ":V", ":(?:[13]p|P|Y|G)") and morphex(word(-1), ":C", ":[YP]", True)
    and not( morph(\3, ":3s", False) and before(r"(?i)\b(?:le|ce(?:tte|t|)|[mts](?:on|a)) .+ entre .+ et ") )
    -3>> =suggVerb(@, ":3p")                                # Conjugaison erronée. Accord avec « \1 \2… ». Le verbe devrait être à la 3ᵉ personne du pluriel.

TEST: Les abstentions {{est}} présumée manifester un défaut d’opinion marquée
TEST: Les cours de culture générale nous {{apporte}} de l’ouverture d’esprit.
TEST: Les hommes ne le lui {{pardonnes}} pas.
TEST: Les infirmières à mi-temps ne {{travaille}} pas dans cette aile.
TEST: les données, en quantité plus que suffisante, {{indique}} que…
TEST: Ses « chiens » {{coure}} sur ma pelouse.
TEST: Les hommes comme celui-là {{mange}} comme deux.
TEST: les récompenses distribuées à parts égales {{était}}…
TEST: Les États-Unis d’Amérique se {{compose}} de 50 états.
TEST: Les enfants en {{manges}}.
TEST: Les ombres la {{donnes}}
TEST: Les grands hommes politiques
TEST: les charmantes petites mines de toutes les jeunes filles
TEST: Les pauvres petites dames sont folles
TEST: Les entrepreneurs ont {{cherchaient}} la reconnaissance sociale
TEST: le lien entre les agences de renseignement et ces mêmes entreprises pouvait reposer sur des activités de surveillance à proprement parler.


__[i]/conj(conj_des_nom)__
    ^ *des +({w_2}) +(?:> +|)({w_2})  @@w,$
    <<- morph(\1, ":[NAQ].*:[pi]", False) and morphex(\2, ":V", ":(?:[13]p|P|G|Q)") and morph(word(1), ":(?:R|D.*:p)|>au ", False, True)
    -2>> =suggVerb(@, ":3p")                                # Conjugaison erronée. Accord avec « des \1… ». Le verbe devrait être à la 3ᵉ personne du pluriel.
__[i]/conj(conj_des_nom_qui)__
    ^ *des +({w_2}) +qui +(?:> +|)({w_2})  @@w,$
    <<- morph(\1, ":[NAQ].*:[pi]", False) and morphex(\2, ":V", ":(?:[13]p|P|G)")
    -2>> =suggVerb(@, ":3p")                                # Conjugaison erronée. Accord avec « des \1… ». Le verbe devrait être à la 3ᵉ personne du pluriel.

TEST: Des hommes {{arrive}}.
TEST: des femmes qui {{conduise}} la marche du monde.


# confusions noms/adjectifs/verbes (voir règles DPP)
__[i]/conj(conj_det_plur_nom_ambiguïté)__
    ([cmts]es|[nv]os|leurs|quelques|plusieurs) +({w_2})~ *({w_2})  @@0,w,$
    <<- morphex(word(-1), ":C", ":[YP]", True) and isAmbiguousAndWrong(\2, \3, ":p", ":3p")
    -3>> =suggVerb(@, ":3p", suggPlur)                      # Accord avec « \1 \2… » incorrect. Conjugaison erronée ou accord nom/adjectif incorrect.

TEST: mes filles {{passe}} ce matin
TEST: vos filles {{passes}} ce matin


__[i]/conj(conj_les_nom_ambiguïté)__
    les +({w_2})~ *({w_2})  @@w,$
    <<- morphex(word(-1), ":C", ":[YP]", True) and isVeryAmbiguousAndWrong(\1, \2, ":p", ":3p", not word(-1))
    -2>> =suggVerb(@, ":3p", suggPlur)                      # Accord avec « les \1… » incorrect. Conjugaison erronée ou accord nom/adjectif incorrect.

TEST: les grands {{danse}}
TEST: les filles {{passes}} ce matin
TEST: les marchands {{marche}}
TEST: les marchands {{plie}}
TEST: les marchands {{paye}}
TEST: les marchands {{marchande}}
TEST: les marchandes {{paie}}
TEST: les marchandes {{marchande}}
TEST: les chattes {{finis}}
TEST: les chattes {{manges}}
TEST: les chattes {{danse}}


__[i]/conj(conj_certains_nom_ambiguïté)__
    certains +({w_2})~ *({w_2})  @@w,$
    <<- morphex(word(-1), ":C", ":[YP]", True) and isVeryAmbiguousAndWrong(\1, \2, ":m:p", ":3p", not word(-1))
    -2>> =suggVerb(@, ":3p", suggMasPlur)                   # Accord avec « certains \1… » incorrect. Conjugaison erronée ou accord nom/adjectif incorrect.

TEST: certains hommes {{marchandes}} sans cesse


__[i]/conj(conj_certaines_nom_ambiguïté)__
    certaines +({w_2})~ *({w_2})  @@w,$
    <<- morphex(word(-1), ":C", ":[YP]", True) and isVeryAmbiguousAndWrong(\1, \2, ":f:p", ":3p", not word(-1))
    -2>> =suggVerb(@, ":3p", suggFemPlur)                   # Accord avec « certaines \1… » incorrect. Conjugaison erronée ou accord nom/adjectif incorrect.

TEST: certaines femmes {{danse}} beaucoup



## Quel(le) que soit / quel(le)s que soient

# singulier
__[i]/conj(conj_quel_quelle_que_3sg1)__
    quel(?:le|)s? que ([sf]\w+) +(?:l[ea]|ce(?:t|tte|)|[mts](?:a|on)|[nv]otre|leur)  @@w
    <<- morphex(\1, ":V0e", ":3s")
    -1>> =suggVerb(@, ":3s")                                                             # Conjugaison erronée. Mettez “être” à la 3ᵉ personne du singulier.

TEST: Quel que {{sois}} son passe-temps, il y consacre trop de temps.
TEST: Quels que {{soient}} le feu utilisé.


__[i]/conj(conj_quel_quelle_que_3sg2)__
    (quel(?:le|)s) que ([sf]\w+t) +(?:l[ea]|ce(?:t|tte|)|[mts](?:a|on)|[nv]otre|leur)  @@0,w
    <<- morphex(\2, ":V0e.*:3s", ":3p")
    -1>> =\1[:-1]                                                                        # Accord avec “\2”. Utilisez le singulier.

TEST: {{Quels}} que soit leur problème, ça n’en finit jamais.
TEST: {{Quelles}} que soit leur voiture, elle tombe constamment en panne.


# pluriel
__[i]/conj(conj_quels_quelles_que_3pl1)__
    quel(?:le|)s? que ([sf]\w+) +(?:[lscmt]es|[nv]os|leurs)  @@w
    <<- morphex(\1, ":V0e", ":3p")
    -1>> =suggVerb(@, ":3p")                                                             # Conjugaison erronée. Mettez “être” à la 3ᵉ personne du pluriel.

TEST: Quels que {{soit}} les salopards qui ont fait ça.
TEST: Quels que {{sois}} les chaussures que je mets, elles me font mal aux pieds.


__[i]/conj(conj_quels_quelles_que_3pl2)__
    (quel(?:le|)) que ([sf]\w+ent) +(?:[lscmt]es|[nv]os|leurs)  @@0,w
    <<- morphex(\2, ":V0e.*:3p", ":3s")
    -1>> \1s                                                                             # Accord avec “\2”. Utilisez le pluriel.

TEST: {{Quel}} que soient les avantages reçus, ce n’est pas assez.
TEST: {{Quelle}} que soient nos problèmes, on en parle toujours trop.



#### NOMS PROPRES

# 3sg
__[s]/conj(conj_nom_propre)__
    ([A-ZÉÈ][\w-]+) +>? *({w_1})  @@0,$
    <<- not before(r"\b(?:et |ou |[dD][eu] |ni |[dD]e l’) *$") and morph(\1, ":M", False) and morphex(\2, ":[123][sp]", ":(?:G|3s|3p!|P|M|[AQ].*:[si])")
    and not morph(word(-1), ":[VRD]", False, False) and not before(r"([A-ZÉÈ][\w-]+), +([A-ZÉÈ][\w-]+), +$")
    and not (morph(\2, ":3p", False) and word(-1))
    -2>> =suggVerb(@, ":3s")
    # Conjugaison erronée. Accord avec « \1 ». Le verbe devrait être à la 3ᵉ personne du singulier.

TEST: Marc {{arrives}} demain.
TEST: Paul ne {{viens}} pas demain.
TEST: Marc Aurèle {{étaient}} l’empereur des Romains. (Pas de trait d’union sur Marc Aurèle.)
TEST: Arthur D. parvient à…
TEST: Les fondateurs pionniers de l’Internet n’avaient pas prévu
TEST: les compteurs Geiger ne détectent pas le polonium
TEST: Des femmes de l’administration Obama y racontent qu’elles ont constaté qu’il leur arrivait régulièrement de ne pas être invitées


# 3pl
__[s]/conj(conj_nom_propre_et_nom_propre)__
    (?<!et |ou |[dD][eu] |ni )([A-ZÉÈ][\w-]+) et ([A-ZÉÈ][\w-]+) +>? *({w_1})  @@0,w,$
    <<- morph(\1, ":M", False) and morph(\2, ":M", False)
    and morphex(\3, ":[123][sp]", ":(?:G|3p|P|Q.*:[pi])") and not morph(word(-1), ":R", False, False)
    -3>> =suggVerb(@, ":3p")
    # Conjugaison erronée. Accord avec « \1 et \2 ». Le verbe devrait être à la 3ᵉ personne du pluriel.

TEST: Samantha et Eva {{viennes}} demain.
TEST: Samantha et Eva leur {{décrive}} une leçon.



#### INVERSION VERBE SUJET

__[i]/conj(conj_que_où_comment_verbe_sujet_sing)__
    (?:que?|où|comment) +({w1}) (l(?:e(?:ur | )|a |’)|[mts](?:on|a) |ce(?:t|tte|) |[nv]otre |du ) *(?!plupart|majorité)({w1})  @@w,w,$
    <<- 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) )")
    -1>> =suggVerb(@, ":3s")                                                        # Conjugaison erronée. Accord avec « \2 \3… ». Le verbe devrait être à la 3ᵉ personne du singulier.

TEST: les possibilités qu’{{offrent}} le chien
TEST: les possibilités que {{donnent}} le chien.
TEST: Où {{vas}} l’homme ?
TEST: de la même façon que survivent le swing ou le latin.
TEST: en proportion des efforts que requièrent son entretien et son exploitation
TEST: une crainte aussi que renforcent son éloignement et le protocole compliqué
TEST: à l’époque de Mansur que grandissent la place et le rôle de…
TEST: où vivent la majorité des immigrés et des enfants d’immigrés



__[i]/conj(conj_que_où_comment_verbe_sujet_pluriel)__
    (?:que?|où|comment) +({w1}) ([ldcmts]es|quelques|certaine?s|plusieurs|[nv]os|leurs) ({w1})  @@w,w,$
    <<- morphex(\1, ":[123]s", ":(?:3p|G|W)") -1>> =suggVerb(@, ":3p")              # Conjugaison erronée. Accord avec « \2 \3… ». Le verbe devrait être à la 3ᵉ personne du pluriel.

TEST: D’où {{vienne}} les hommes ?
TEST: Comment {{danse}} les femmes ?


__[i]/conj(conj_que_où_comment_verbe_sujet)__
    (?:que?|où|comment) +({w_1}[es])(?! je| tu) @@$
    <<- morphex(\1, ":[12][sp]", ":(?:G|W|3[sp]|Y|P|Q|N)") -1>> =suggVerb(@, ":3s")   # Conjugaison erronée. Ce verbe devrait être à la 3ᵉ personne.

TEST: Et que {{deviens}} le marchand ?
TEST: ces sciences, ces religions, ces philosophies ne sont que contes destinés à nous donner l’illusion de la connaissance.


__[i]/conj(conj_que_où_verbe_sujet_3sg)__
    (?:que|où) +> +({w1})(?! [jJ]e| [tT]u| [nNvV]ous| [eE]t )  @@$
    <<- morphex(\1, ":[12][sp]", ":(?:G|W|3[sp])") -1>> =suggVerb(@, ":3s")         # Conjugaison erronée. Ce verbe devrait être à la 3ᵉ personne.

TEST: Où l’{{abandonnerai}} ce salopard ?



#### INTERROGATIVES ?

__[i]/inte(inte_union_xxxe_je)__
    (?<![jJ]’)({w_2}[éèe]) je(?! +[nmts]’)  @@0
    <<- morphex(\1, ":V.*:1[sŝś]", ":[GNW]") and not before(r"(?i)\bje +>? *$") and not morph(word(1), ":(?:Oo|X|1s)", False, False)
    ->> =\1[:-1]+"é-je"                                                                             # Forme interrogative ? Mettez un trait d’union.
__[i]/inte(inte_union_xxx_je)__
    (?<![jJ]’)({w_2}[^éèe]) je(?! +[nmts]’)  @@0
    <<- morphex(\1, ":V.*:1s", ":[GNW]") and not before(r"(?i)\b(?:je|tu) +>? *$") and not morph(word(1), ":(?:Oo|X|1s)", False, False)
    ->> \1-je                                                                                       # Forme interrogative ? Mettez un trait d’union.
__[i]/inte(inte_union_tu)__
    ({w_1}s) tu  @@0
    <<- not after("^ +(?:en|y|ne|>)") and morphex(\1, ":V.*:2s", ":[GNW]") and not before(r"(?i)\b(?:je|tu) +>? *$")
    ->> \1-tu                                                                                       # Forme interrogative ? Mettez un trait d’union.
__[i]/inte(inte_union_il_on)__
    ({w_2}[td]) (?:il|on)  @@0
    <<- not after("^ +(?:en|y|ne|>)") and morphex(\1, ":V.*:3s", ":[GNW]") and not before(r"(?i)\b(?:ce|il|elle|on) +>? *$")
    ->> =\0.replace(" ", "-")                                                                       # Forme interrogative ? Mettez un trait d’union.
__[i]/inte(inte_union_elle)__
    (?<!c’)({w_2}[td]) elle  @@0
    <<- not after("^ +(?:en|y|ne|aussi|>)") and morphex(\1, ":V.*:3s", ":[GNW]") and not before(r"(?i)\b(?:ce|il|elle|on) +>? *$")
    ->> \1-elle                                                                                     # Forme interrogative ? Mettez un trait d’union.
__[i]/inte(inte_union_nous)__
    ({w_2}ons) nous  @@0
    <<- not after("^ +(?:en|y|ne|aussi|>)") and morphex(\1, ":V.*:1p", ":[GNW]")
    and not morph(word(-1), ":Os", False, False) and not morph(word(1), ":Y", False, False)
    ->> \1-nous                                                                                     # Forme interrogative ? Mettez un trait d’union.
__[i]/inte(inte_union_vous)__
    ({w_2}ez) vous  @@0
    <<- not after("^ +(?:en|y|ne|aussi|>)") and not \1.endswith("euillez") and morphex(\1, ":V.*:2p", ":[GNW]")
    and not morph(word(-1), ":Os", False, False) and not morph(word(1), ":Y", False, False)
    ->> \1-vous                                                                                     # Forme interrogative ? Mettez un trait d’union.
__[i]/inte(inte_union_ils_elles)__
    ({w_1}nt) (?:ils|elles)  @@0
    <<- not after("^ +(?:en|y|ne|aussi|>)") and morphex(\1, ":V.*:3p", ":[GNW]") and not before(r"(?i)\b(?:ce|ils|elles) +>? *$")
    ->> =\0.replace(" ", "-")                                                                       # Forme interrogative ? Mettez un trait d’union.

TEST: {{mangé je}} {{ça}} avec dégoût ?
TEST: {{viendrais je}} à la fête ?
TEST: {{Seras tu}} là ?
TEST: {{prend on}} le temps d’y réfléchir ?
TEST: {{vient elle}} souvent ?
TEST: {{viennent elles}} souvent ?
TEST: {{retrouverons nous}} enfin la tranquilité ?
TEST: Mais {{soutiendrez vous}} cette proposition ?
TEST: {{Viendront ils}} demain ?
TEST: je ne comprenais pas pourquoi c’était elle qui était punie et que personne ne parlait de celui qui avait fait ça.


__[i]/inte(inte_je)__
    ({w1})-je  @@0
    <<- morphex(\1, ":V", ":1[sśŝ]") -1>> =suggVerb(@, ":1ś")                                       # Forme interrogative : « \1 » n’est pas un verbe à la 1ʳᵉ personne du singulier.
    <<- not morph(\1, ":V", False) -1>> =suggSimil(\1, ":1[sśŝ]")                                   # Forme interrogative : « \1 » n’est pas un verbe à la 1ʳᵉ personne du singulier.

TEST: {{Vas}}-je                                            ->> Vais
TEST: {{Prit}}-je                                           ->> Pris
TEST: {{prix}}-je le temps d’y parvenir ? Oui.


__[i]/inte(inte_tu)__
    ({w1})-tu  @@0
    <<- morphex(\1, ":V", ":[ISK].*:2s") -1>> =suggVerb(@, ":2s")                                   # Forme interrogative. « \1 » n’est pas un verbe à la 2ᵉ personne du singulier.
    <<- not morph(\1, ":V", False) -1>> =suggSimil(\1, ":2s")                                       # Forme interrogative : « \1 » n’est pas un verbe à la 2ᵉ personne du singulier.

TEST: {{Peut}}-tu                                           ->> Peux
TEST: {{peu}}-tu revenir chez moi ?


__[i]/inte(inte_il_elle_on)__
    ({w1})-(?:t-|)(il|elle|on)  @@0,$
    <<- morphex(\1, ":V", ":3s") -1>> =suggVerb(@, ":3s")                                           # Forme interrogative : « \1 » n’est pas un verbe à la 3ᵉ personne du singulier.
    <<- \1 != "t" and (not \1.endswith("oilà") or \2 != "il") and morphex(\1, ":", ":V")
    -1>> =suggSimil(\1, ":3s")                                                                      # Forme interrogative : « \1 » n’est pas un verbe à la 3ᵉ personne du singulier.
    <<- not \2.endswith(("n", "N")) and morphex(\1, ":3p", ":3s") -2>> \2s                          # Forme interrogative : accordez “\2” avec le verbe à la 3ᵉ personne du pluriel.

TEST: {{Peux}}-il                                           ->> Peut
TEST: {{Attaques}}-t-on                                     ->> Attaque
TEST: {{Prends}}-elle                                       ->> Prend
TEST: {{Menthe}}-t-elle souvent ?
TEST: {{viennent}}-{{il}} demain ?
TEST: Le moteur choisi convient-il ?


__[i]/inte(inte_nous)__
    ({w1})-nous  @@0
    <<- morphex(\1, ":V", ":(?:1p|E:2[sp])") -1>> =suggVerb(@, ":1p")                               # Forme interrogative ou impérative incorrecte.
    <<- morphex(\1, ":", ":V|>chez ") -1>> =suggSimil(\1, ":1p")                                    # Forme interrogative ou impérative incorrecte.

TEST: {{Prendront}}-nous                                    ->> Prendrons
TEST: {{Attendront}}-nous le train                          ->> Attendrons


__[i]/inte(inte_vous)__
    ({w1})-vous  @@0
    <<- morphex(\1, ":V", ":2p") -1>> =suggVerb(@, ":2p")                                           # Forme interrogative ou impérative incorrecte.
    <<- not morph(\1, ":V|>chez ", False) -1>> =suggSimil(\1, ":2p")                                # Forme interrogative ou impérative incorrecte.

TEST: {{Attaquait}}-vous                                    ->> Attaquiez
TEST: Elle a de nombreux rendez-vous ce matin.
TEST: êtes-vous là ?


__[i]/inte(inte_ils_elles)__
    ({w1})-(?:ils|elles)  @@0
    <<- morphex(\1, ":V", ":3p") and spell(\1)
    -1>> =suggVerb(@, ":3p")                                                                        # Forme interrogative : « \1 » n’est pas un verbe à la 3ᵉ personne du pluriel.
    <<- \1 != "t" and not morph(\1, ":V", False) and spell(\1)
    -1>> =suggSimil(\1, ":3p")                                                                      # Forme interrogative : « \1 » n’est pas un verbe à la 3ᵉ personne du pluriel.

TEST: {{attaquant}}-ils                                     ->> attaquent
TEST: {{prendrons}}-elles un verre avec moi ?



#### VERBE AUXILIAIRE

__[i]/conf(conf_avoir_sujet_participe_passé)__
    ({avoir})-(?:je|tu|ils?|elles?|on) +({ppas})  @@0,$
    <<- 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”.
__[i]/conf(conf_sujet_avoir_participe_passé)__
    (?:j’|je |tu |ils? |elles? |on ) *>? *({avoir}) +({ppas})  @@*,$
    <<- 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”.

TEST: {{Ait}}-il arrivé à ses fins ?
TEST: je n’{{avais}} pas parti avec eux.
TEST: Avais-je partie liée avec lui ?
TEST: il {{avait}} parti.


#### CONTRÔLE DES MODES

# conditionnel / futur

__[i]/vmode(vmode_j_aimerais_vinfi)__
    j’(aimerai) +({w_1})  @@2,$
    <<- morphex(\2, ":[YX]|>y ", "R") -1>> aimerais                                                 # Si vous exprimez un souhait, utilisez le conditionnel et non le futur.
__[i>/vmode(vmode_j_aimerais_pronom)__
    j’(aimerai) +(?:que? |>)  @@2
    <<- -1>> aimerais                                                                               # Si vous exprimez un souhait, utilisez le conditionnel et non le futur.

TEST: J’{{aimerai}} savoir ce dont il retourne.
TEST: dans tous les cas j’{{aimerai}} ne rien savoir
TEST: J’aimerai ces cours-là autant que les autres.
TEST: J’aimerai la danse et la musique, puisque vous l’exigez.


__[i>/vmode(vmode_j_aurais_aimé_que_avoir_être)__
    j’(aurai) +(?:aimé|souhaité|préféré|voulu) +(?:que? |> )  @@2
    <<- -1>> aurais|eusse                           # Pour un souhait passé, utilisez le conditionnel passé et non le futur antérieur. Exemple pour le futur antérieur : « quand j’aurai fini… »
__[i]/vmode(vmode_j_aurais_aimé_que_avoir_être)__
    j’(aurai) +(?:aimé|souhaité|préféré|voulu) +({infi}|ne)  @@2,$
    <<- morph(\2, ":[YX]", False)
    -1>> aurais|eusse                               # Pour un souhait passé, utilisez le conditionnel passé et non le futur antérieur. Exemple pour le futur antérieur : « quand j’aurai fini… »

TEST: J’{{aurai}} aimé nous offrir ce magnifique cadeau.
TEST: j’{{aurai}} voulu être un artiste.
TEST: j’{{aurai}} préféré ne pas avoir à l’entendre.
TEST: Quand j’en aurai fini avec eux, vous aurez du mal à les reconnaître.
TEST: Quand j’aurai fini ce boulot, je ne sais pas ce que je ferai.
TEST: Quand j’aurai soif et faim, je m’arrêterai.


# Si suivi du conditionnel ou du subjonctif
__[i]/vmode(vmode_si_sujet1)__
    si +({w1}) +>? *({w_2})  @@w,$
    <<- morph(\1, ":(?:Os|M)", False) and morphex(\2, ":[SK]", ":(?:G|V0|I)") and not word(-1)
    -2>> _                                                                          # Ce verbe ne devrait être ni au conditionnel, ni au subjonctif.
__[i]/vmode(vmode_si_sujet2)__
    (?:si [jt]’|s’ils? )>? *({w_2})  @@$
    <<- morphex(\1, ":[SK]", ":(?:G|V0|I)") and not word(-1)
    -1>> _                                                                          # Ce verbe ne devrait être ni au conditionnel, ni au subjonctif.

TEST: Si Pierre {{avancerait}} sa voiture de quelques mètres, ça nous permettrait de passer.
TEST: s’ils ne {{mangeraient}} pas tous les jours, ils seraient moins gros.


# Dès que + indicatif
__[i]/vmode(vmode_dès_que)__
    dès +que? +({w1}) +>? *({w_2})  @@w,$
    <<- morph(\1, ":(?:Os|M)", False) and morphex(\2, ":S", ":[IG]")    -2>> =suggVerbMode(@, ":I", \1)     # Ce verbe ne devrait pas être au subjonctif.
#    <<- morph(\1, ":(?:Os|M)", False) and morph(\2, ":K", False)        -2>> =suggVerbMode(@, ":If", \1)    # Ce verbe ne devrait pas être au conditionnel.

#TEST: dès que je le {{verrais}}
TEST: dès qu’il le {{voie}}
TEST: donnant à entendre qu’il avait l’intention de violer Laura dès qu’il en aurait l’occasion


# verbe que + subjonctif
__[i]/vmode(vmode_qqch_que_subjonctif)__
    (afin|pour(?: peu|)|quoi|(?:perm|fa|v[oe]|ordonn|exig|désir|dout|suff|préf[éè]r)\w+) +que? +({w1}) +>? *({w_2})  @@0,w,$
    <<- morph(\1, ">(?:afin|pour|quoi|permettre|falloir|vouloir|ordonner|exiger|désirer|douter|préférer|suffire) ", False)
    and morph(\2, ":(?:Os|M)", False) and not morph(\3, ":[GYS]", False)
    and not (morph(\1, ">douter ", False) and morph(\3, ":(?:If|K)", False))
    -3>> =suggVerbMode(@, ":S", \2)                                                 # Ce verbe devrait être au subjonctif.

TEST: Il suffit qu’il {{court}} plus
TEST: Je veux qu’il {{finit}} son repas.
TEST: quoi qu’il en {{conclut}}
TEST: Je ne veux pas que tu {{es}} des ennuis
TEST: Nul doute qu’elle nourrira à brève échéance la haine de demain à notre égard.
TEST: Je ne doute pas qu’ils réussiront leur mission.
TEST: Je me doutais bien qu’Apple pourrait marcher
TODO: il ne fait aucun doute qu’Amazon le sait.


__[i]/vmode(vmode_à_condition_que_subjonctif)__
    à condition +que? +({w1}) +>? *({w_2})  @@w,$
    <<- morph(\1, ":(?:Os|M)", False) and not morph(\2, ":[GYS]", False) -2>> =suggVerbMode(@, ":S", \1)    # Ce verbe devrait être au subjonctif.

TEST: à condition qu’il {{est}} faim


# indicatif nécessaire
__[i]/vmode(vmode_sujet_indicatif)__
    ^ *(je|j’(?:en|y)|tu|ils?|elles?|on|nous|vous) +>? *({w_2})  @@w,$
    <<- morphex(\2, ":S", ":[GIK]") and not re.search("^e(?:usse|û[mt]es|ût)", \2) 
    -2>> =suggVerbMode(@, ":I", \1)                                                                 # Ce verbe ne devrait pas être au subjonctif.
__[i]/vmode(vmode_j_indicatif)__
    ^ *j’({w_2})  @@$
    <<- morphex(\1, ":S", ":[GIK]") and \1 != "eusse" -1>> =suggVerbMode(@, ":I", "je")             # Ce verbe ne devrait pas être au subjonctif.

TEST: Il {{ait}} parti.
TEST: Il en {{conclue}} qu’il a eu raison.
TEST: j’en {{aie}} marre
TEST: j’{{aie}} faim


# Après que + indicatif
__[i]/vmode(vmode_après_que_indicatif)__
    après que? ({w_2}) +>? *({w_2})  @@w,$
    <<- morph(\1, ":(?:Os|M)", False) and (morph(\2, ":V.*:S") or morph(\2, ":V0e.*:S", False))
    -2>> =suggVerbMode(@, ":I", \1)
    # Après « après que », le verbe s’emploie pas au subjonctif mais à l’indicatif, si l’action s’est déroulée de façon certaine.

TEST: Après qu’il {{ait}} allé
TEST: Après que Paul {{ait}} mangé son repas.
TEST: Après qu’il {{soit}} parti, il plut.



#######################################################################################################################
#### FAUX POSITIFS POTENTIELS #########################################################################################
#######################################################################################################################

## Indécidable
TEST: Du sable fin grippe les rouages (accord avec ce qui précède).
TEST: Du monde noir sortent les envahisseurs (accord avec ce qui suit).

## Autres tests
TEST: Ça a l’air de t’aller.
TEST: Et je m’en sors.
TEST: C’est à chacun d’entre nous de suivre le modèle d’Amos.
TEST: C’est toi qui voulais y aller.
TEST: je ne suis qu’une joueuse en robe de soirée.
TEST: Tu ne fais qu’aggraver les choses.
TEST: Que veut-il ? Vous parler du boulot.
TEST: La question, c’est qui est au courant.
TEST: Ce pourrait être la fin.
TEST: Tu t’en es tiré.
TEST: à l’annonce d’un nouvel impôt – très souvent prétexte à…
TEST: la voix mystérieuse de l’eau qui court et chuchote le long du bateau.
TEST: Nous agissons au jugé.
TEST: les fêtes battent leur plein.
TEST: Pourquoi tu me dis tout cela ?
TEST: La prochaine fois sera la bonne.
TEST: Ainsi soit-il.
TEST: Allez le lui dire.
TEST: Il y a un siècle, les nouveaux riches étaient décriés par ceux qui avaient hérité leur argent.
TEST: Les entrepreneurs ont cherché la reconnaissance sociale en se faisant passer pour des rentiers.
TEST: Aujourd’hui, la relation a été inversée : les rentiers et les héritiers se présentent comme entrepreneurs. 
TEST: Ils prétendent avoir gagné leur revenu qui n’est que prélevé.
TEST: Ils s’en sont aperçu.
TEST: Elles s’en sont donné les moyens.
TEST: T’en fais par pour ça.
TEST: T’es à ça de te faire virer.
TEST: On s’en fout de qui c’est.
TEST: que c’en était assez, en somme.
TEST: Ce à quoi nous avons assité, c’est un déluge de sornettes.

## Version 0.5.14
TEST: par le léger tissu de rayonne qui les protégeait en ce moment.

## Version 0.5.11
TEST: Un moteur à cylindrée fixe

## Version 0.5.8
TEST: Dans la poussière et les plâtras,

## version 0.5.2
TEST: se produire sur scène le 29 mai prochain
TEST: ces avantages ne sont somme toute pas assez importants
TEST: les différents partis politiques
TEST: Certains ont encore du mal à y croire.
TEST: Élus, chefs d’entreprise, professionnels de l’éducation, représentants des institutions, nous avons besoin de vous.
#TEST: Les côtes sont dans leur ensemble extrêmement découpées.

## version 0.5.0
TEST: J’ai cours à présent.
TEST: Les mois d’après avaient été calmes.
TEST: Quelque temps après eut lieu la séance de réception
TEST: c’est-à-dire aux peuples dispersés suite à la guerre
TEST: la violence du coup porté
TEST: à vous qui avez faim,
TEST: Vous, qui avez faim,
TEST: Les chaudes effluves du soleil.
TEST: je reçois pour chaque botte quelques cents.
TEST: Ils vinrent un à un voter la mort.
TEST: Dans mon rêve, j’appelais ça…
TEST: J’étais dans une auberge.
TEST: les enfants de ces populations apprenaient à parler l’anglais et même à le lire.
TEST: Ils sont fous, c’est-à-dire déments
TEST: J’y viens.
TEST: J’en reviens.
TEST: d’une manière un petit peu abusive et très réductrice.
TEST: il est du devoir de la société civile d’analyser ces accords
TEST: au bas de laquelle est aménagé un imposant portail à arc brisé en pierre de taille.
TEST: Buenos Aires
TEST: Quel est l’impact de ces problèmes dans ce cas particulier
TEST: La partition « C: ».
TEST: sur les quelque trois cents naufragés
TEST: Ils eussent bien voulu pouvoir
TEST: un lot de dés qu’on peut se procurer
TEST: la sécurité au niveau de l’escalier empêche quiconque d’accéder à l’étage
TEST: elle en avait eus
TEST: Combien en as-tu eus ? (Note : les grammairiens ne s’accordent pas sur l’accord du participe passé précédé de “en”.)
TEST: Tu reviens quand à Paris ?
TEST: Tu restes jusqu’à quand à la maison ?
TEST: L’une des pires
TEST: une imprimante laser
TEST: c’est pure imagination
TEST: Bien entendu, elle a très peu de chances de le retrouver
TEST: il s’acquitte de sa part
TEST: Le cavalier, abusé par notre retraite, avait baissé sa garde
TEST: n’y en aurait-il pas plusieurs
TEST: je ne sais rien là-dessus, même pas qui s’en était occupé
TEST: ne surtout rien amener
TEST: Ce qu’ils sont influence leur regard sur moi
TEST: Une demande de leur part un minimum justifiée.
TEST: Au stator, comme le montre le profil ci-dessus, l’inducteur est tétrapolaire.
TEST: Cette hypothèse est tout à fait valable, comme le montre le graphe ci-dessous.
TEST: qu’il fut sans peine étouffé dans l’œuf
TEST: durant les tout premiers jours
TEST: un dîner aux chandelles prévu depuis longtemps
TEST: la beauté physique plus que la compétence
TEST: sans oser se l’avouer
TEST: il se l’imagine
TEST: l’encyclopédie naturelle puis la connaissance
TEST: Tout est affaire de dosage
TEST: il avait trouvé la piste d’une des deux bêtes
TEST: la basilique de la Lune débordant de lumière
TEST: Me voici.
TEST: Si je trouve.
TEST: Toi seul seras sauvé avec tout ce qui sera dans l’Arche
TEST: La portée d’une variable en JavaScript est comme l’outil
TEST: La portée d’une variable est comme l’outil
TEST: Il y a en un parmi nous autres
TEST: Il avait été juge pendant vingt ans.
TEST: Faisons-les tous périr.
TEST: épouser une fille de roi pour se faire une alliance
TEST: Éric et probablement Bénédict seraient partants.
TEST: Il doit toujours être dans les environs de son église.
TEST: c’est ce que vous en faites !
TEST: des travaux publics conçus suivant un plan
TEST: Bible : 1 Rois
TEST: Bible : 1 Corinthiens
TEST: Bible : 1 Thessaloniciens
TEST: Quelle est la chance d’y parvenir ?
TEST: Tout montre cependant que les constructions
TEST: jusqu’au ixe siècle
TEST: Quelles explications pouvez-vous donner à cela ?
TEST: jusqu’à Tarifa et Sidonia
TEST: Tout flambe à la fois.
TEST: Vivre dans la ouate.
TEST: Quel sens a cette affirmation pour nous ?
TEST: Avec quelle facilité
TEST: Une attraction au moins égale à
TEST: le fossé entre les uns et les autres n’était ni large ni profond.
TEST: Dès le ixe siècle
TEST: la formation d’une peau élastique qui se rétracte
TEST: notre père qui es aux cieux
TEST: Où que tu sois je te retrouverai
TEST: L’équitation de travail est une technique de monte traditionnelle…
TEST: Ils ont forme humaine
TEST: une altitude de 1000 m environ
TEST: le nombre d’or
TEST: nous ne nous étions jamais fait prendre
TEST: Elle comprend la couche se trouvant sur le plateau.
TEST: Je m’imagine que les quelque cinq cents personnes qui…
TEST: parmi les quelque 3 millions de personnes

## version 0.4.10
TEST: Ceux parvenus là
TEST: Des termes peu amènes.
TEST: Toute l’équipe d’audit peut consulter la fiche.
TEST: Beaucoup a été accompli
TEST: Ces données sont soit fournies par…, soit par…
TEST: Y a-t-il une question que tu aurais souhaité qu’on te pose ?
TEST: Lire, ce n’est pas épeler.
TEST: Ce n’est pas manger qui fait grossir.
TEST: Je sais ce qu’est aimer.
TEST: Je sais ce que n’est pas aimer.
TEST: Qu’ont fait les chercheurs ?
TEST: Ce travail est colossal, il ne doit jamais être tenu pour achevé.
TEST: la succession des événements telle qu’on se la rappelle

## version 0.4.9
TEST: Quelles que soient les femmes
TEST: Quels que soient les hommes
TEST: Quel que soit ce chien
TEST: Quelle que soit cette garce
TEST: Vous tous qui portez des charges.

## version 0.4.8
TEST: et que la toucher portait chance…
TEST: On y supplée par un tableau.
TEST: que le Verbe de Dieu peut seul conférer
TEST: Ça ne vaut pas le coup de rester enfermés.
TEST: Ce qui faisait de quelqu’un un homme.
TEST: Le secret, mon ami, est de savoir écouter.
TEST: Ces substances ont été, du moins amollies au point de conserver l’empreinte.
TEST: Cette irrationalité n’est pas si dramatique que semblent le penser les plus rationalistes.
TEST: 4 SIEMENS
TEST: Me Assis n’est pas ici.
TEST: Quelle merde … puante.
TEST: Pour savoir qui a tort, qui a raison.
TEST: Ce matin, j’ai ES et c’est tout.
TEST: Les étais posés au sol.
TEST: Mais ces petits étais ne suffisaient pas.
TEST: Celui qu’il brûle de détruire une bonne fois pour toutes.
TEST: Hélas, vous vous en doutez maintenant.
TEST: Il n’aurait de cesse de la renverser ou de la contourner.
TEST: Sourde à toute parole y compris de la part de ceux qu’elle privilégiait
TEST: Pareille solution ne pouvait hélas être réitérée.
TEST: Je crois que t’aimeras ça.
TEST: Je mangeais.
TEST: et encore ça j’ai un peu tendance
TEST: Le CE semble cependant prendre…
TEST: Je suis déçue de ne pas avoir les moyens de régler ça seule.
TEST: Dents de requin…
TEST: Les personnes qui sont avec lui voient.
TEST: Beaucoup de monde se rassemble.
TEST: Comment il l’a appris.
TEST: Comment voulez-vous qu’à vingt-deux heures trente un cadavre
TEST: Le porteur de la télécommande pas plus que la créatrice ne sont revenus nous donner des ordres.
TEST: j’espère que vous aurez le temps de tout lire
TEST: Nous avons partie gagnée.
TEST: de a à z
TEST: de A à Z
TEST: Le point S′ est sur la droite. (Il s’agit ici du caractère “prime”.)
TEST: le ou les élément(s).

## version 0.4.7
TEST: rien de dérangé
TEST: Au début on le traite de dérangé
TEST: il vient… puis repart
TEST: une photo noir et blanc
TEST: pour ce faire, il faut partir
TEST: une canadienne fourrée de poils de mouton
TEST: ils sont en bonne santé physique
TEST: elles sont en bonne santé mentale
TEST: dans tout ce putain d’univers
TEST: la leur n’est pas correcte
TEST: qui doivent leur être livrés.
TEST: en tout et pour tout ces trois-là
TEST: De temps en temps
TEST: De loin en loin
TEST: allez au 10 avenue Constantin
TEST: Ils avancent côte à côte
TEST: Un type a l’air de beaucoup apprécier.
TEST: Pour le soldat, dépouiller le paysan ou le colonel n’est pas voler.
TEST: sous forme de chaleur
TEST: avant sa dépose, il sera possible de faire les relevés nécessaires

## version 0.4.6
TEST: monarchie de Juillet
TEST: révolution d’Octobre
TEST: des cheveux blond platine
TEST: L’homme qui se tenait devant lui lui présenta une bouteille.
TEST: Était-ce cela d’avaler de l’huile ?
TEST: Il y avait quelque chose fiché dans la prise.
TEST: jusqu’à chez nous
TEST: de chez eux à chez moi
TEST: Les histoires de chacun apparaissent au fil des conversations.
TEST: et bien des hommes y ont succombé
TEST: La sortie était droit devant lui.
TEST: avec lesquels j’arrive à vaincre
TEST: L’erreur fut pour moi seul.
TEST: les valeurs limites ne peuvent pas être réglées dans une plage négative.
TEST: la pensée que j’ai décidé d’expliquer
TEST: les objets que j’ai essayé de faire
TEST: la phrase que j’ai essayé de lire

## version 0.4.5
TEST: après c’était la restauration…
TEST: l’une saisissant la main d’albâtre rigide
TEST: certaines saisissant la main d’albâtre rigide
TEST: si on descendait on inscrivait sur le carton
TEST: Erika est prise par surprise
TEST: les lettres que j’ai voulu envoyer
TEST: les lettres que j’ai voulu me donner
TEST: les lettres que j’ai voulu t’envoyer
TEST: si on l’empêchait il devenait
TEST: Sa petite amie et lui, tous deux ivres, se sont révélés incapables d’écrire.

## version 0.4.4.1
TEST: m’oblige à toujours vendre
TEST: m’oblige à souvent perdre

## version 0.4.4
TEST: il croyait qu’elle seule pouvait réussir
TEST: un coefficient (C) de révision donné par la formule.
TEST: Il eut ordre de s’emparer de tous les insurgés
TEST: Annie, qui, entre deux danses, buvait beaucoup
TEST: Il ne pouvait s’empêcher, entre deux jurons envers sa sœur
TEST: Il devenait nerveux au fur et à mesure qu’il cherchait
TEST: Il résista à l’envie qu’il avait de…
TEST: elles sont bleu saphir
TEST: elles sont gris anthracite
TEST: ses plumes noir de jais
TEST: La pierre utilisée était gris perle
TEST: Une odeur de grillé réveilla la jeune femme
TEST: Sous peine de voir l’allégeance de certains changer, il devait
TEST: Elle espéra vainement ne rien s’être cassé.
TEST: Les ayant vus entrer
TEST: sans parti pris
TEST: Fiona ou Deirdre parviendront à en apprendre plus
TEST: les flots noir d’encre
TEST: ses yeux châtaigne
TEST: Ils avaient tous deux entendu son cri.
TEST: Si Pierre et elle étaient déjà fiancés, ils devraient
TEST: Les gens dépourvus de pigmentation étaient
TEST: Je n’ai pas très envie de m’étendre sur le sujet
TEST: Elle reconnut la peste qui tentait elle ne savait trop quoi.
TEST: Un tentacule plus court que les autres l’agrippa.
TEST: Il avait de toutes ses forces tenté de la faire échapper au danger.
TEST: Il convient
TEST: Conf. Alchimie, op. cit.
TEST: et tout expliquer
TEST: L’or a besoin tout d’abord d’être préparé
TEST: ces ombres sont quant à elles habitées.
TEST: les sept figures

## version 0.4.3
TEST: 01 64 21 39

## version 0.4.2
TEST: Quelques kilomètres plus à l’ouest.
TEST: Nous n’avons plus cours.
TEST: Sa manière aigre-douce.
TEST: Une interprétation et une application conformes aux exigences du droit communautaire.
TEST: Ils font tous deux partie.
TEST: Tu travailles pas mal.
TEST: Je me savais pas assez malin.
TEST: J’étais quelqu’un d’intelligent et de cultivé.

## version 0.4.1
TEST: Elle se livre à des interprétations tantôt extensives, tantôt restrictives, de la loi.
TEST: Il faudrait encore déterminer le contenu du droit qu’une telle analyse lui confère.
TEST: Une telle analyse m’en confère.
TEST: Quant à présent…
TEST: pour la manger
TEST: sans les lire
TEST: excepté les manger
TEST: vendredi 13 juin 2014
TEST: mardi 13 juin 2014 avant J.-C.
TEST: mardi 13 juin 2014 av. J.-C.
TEST: Quelles garanties leur avez-vous offertes ?
TEST: pour les toucher
TEST: Le législateur, adoptant malgré tout les dispositions envisagées,
TEST: Entendue matériellement, la soustraction ne peut porter que sur un objet mobilier.

## version 0.4.0.1
TEST: 500 m en 2 h (option : lettres isolées).
TEST: ces créatures hybrides
TEST: sur la nécessité d’explorer
TEST: en les accompagnant avec des percussions

## version 0.4
TEST: La première équipe les prévint par radio.
TEST: L’une d’entre elle saute haut.
TEST: Le désir ardent du pouvoir.
TEST: Ni les Anciens ni les Modernes Philosophes n’ont jamais fait autre chose.
TEST: Les méchantes Philosophes n’ont jamais fait autre chose.
TEST: Les mises perdues d’avance.
TEST: Écouter n’est pas opiner.
TEST: Je n’ai jamais rien mangé de souillé ni d’impur.
TEST: Elles portent toutes des chapeaux.
TEST: Un fusil longue portée.
TEST: Certaines choses devraient changer.
TEST: C’est peine perdue.
TEST: Je le quitte énervée par son hypocrisie.
TEST: Les manger sera mon bon plaisir.
TEST: Mais elle les fait plus petites.
TEST: Vient le temps de partir.
TEST: C’est ce monsieur qui…
TEST: Antonio Banderas.
TEST: Les 4 juillet.
TEST: Elles se révèlent de feu une fois brisées les barrières.
TEST: Une assistance s’est assise par terre, certains restant debout.
TEST: Serrer la main de John et de Barbara qui furent étonnés qu’ils se mirent à pleurer.
TEST: L’échec est dû à une erreur de calcul.
TEST: L’armée est sur le point de partir.
TEST: Une partie est due à une erreur de calcul.
TEST: La frustre temporalité que connaissent la plupart de mes frères et sœurs.

## version 0.3.9
TEST: Mise à jour gratuite.
TEST: Les lettres que tu m’as envoyées.
TEST: Je n’ai cure de ce que les gens pensent.
TEST: Marie est mal à l’aise.
TEST: Il vit que le secours inespéré.
TEST: En tous sens.
TEST: Savez-vous ce qu’auraient pensé vos parents ?
TEST: Les pierres sont marron et grises.
TEST: 4.2.3 Écriture des nombres complexes.
TEST: Hilda est comme elle est…
TEST: La première fois que j’ai tenté l’expérience.
TEST: Glacier du Trient et glacier des Bossons.
TEST: Cf. rapport, cf. rapport.
TEST: Chap. douze, chap. douze.

## version 0.3.8.3
TEST: J’ai l’impression que tu as compris.
TEST: Sa spécificité se situera plutôt dans la façon qu’elle a d’approcher la matière.

## version 0.3.8.2
TEST: La pommade qu’elle a voulu me passer.
TEST: Des gens qui ont réservé leur place ne se présenteront pas au jour et à l’heure dits.
TEST: La procession reprit sa marche sans qu’il y eût rien de changé dans son cérémonial.

## version 0.3.8
TEST: Celui de textes dont nous ne percevons pas la beauté est douloureux…
TEST: Elle souriait, comme si le vent et elle se comprenaient fort bien.
TEST: Les étagères qui équipent ces chariots sont trop petites pour recevoir certains formats.
TEST: Les voyageurs qui attendaient la correspondance furent réunis à une table ronde.

## version 0.3.7
TEST: Ce sont Tesla et Westinghouse qui emportent le contrat du gouvernement américain.
TEST: Il fait presque nuit.
TEST: J’ai fait le boulot tout seul et après j’ai eu la paix pour écrire tout ça.
TEST: Le directeur et toute sa bande installés à la tribune d’honneur.
TEST: Le paysage dans toutes les directions est somptueux.
TEST: Les hommes accompagnant les tentes sont peu nombreux.
TEST: Bravo pour l’évadé, bravo aussi pour ceux qui l’escortaient.
TEST: On vit mieux son visage : autour de la bouche, quelque chose de crispé.
TEST: Les contours de toutes nos vertus sont tracés par l’adversité.
TEST: Trop couvrir la tête est mauvais.
TEST: Gravir cette montagne est dangereux.
TEST: L’agréable fièvre qui l’avait un moment habitée était tombée.
TEST: Nous sommes frère et sœur.
TEST: Il s’est interrompu et nous avons tous les deux regardé l’homme aux cheveux gris.
TEST: Les jeunes officiels formant l’institut allemand de Paris professaient.
TEST: De le faire disparaître dans des sacs-poubelle (dictionnaire 5.0.2).
TEST: Pierre, Auguste, Cyprien étaient affalés.
TEST: Ces lettres-là, Pierre et elle les lisaient ensemble.
TEST: Laisser courir, seul dans la nature, l’un de ses jeunes prisonniers nouvellement arrivé.
TEST: Le directeur et toute sa bande installés à la tribune d’honneur.
TEST: La réminiscence d’une position de privilégié semblable à.
TEST: Elle n’a guère affaire avec l’ascèse.
TEST: Elle a déclaré cela excellent.
TEST: Si faute il y a, ils ont le droit…
TEST: Elle signale la fin du vers ou de la strophe.
TEST: Alors, il chargea le marin tête baissée.
TEST: Certes, mais entre-temps, des gens de toutes les races sont venus chez nous.
TEST: Ni l’air ni l’eau ne sortent d’une amphore scellée.
TEST: Ni lui ni son mouvement n’avaient d’argent.
TEST: La rime et, en général, la règle acquièrent donc aussi cette fonction.
TEST: Ce furent les seules nouvelles de moi qui parvinrent.
TEST: Par petits groupes, qui ne ralliaient pas toujours le camp mais s’agrégeaient en bandes indépendantes.
TEST: Nous avons rencontré une terre plus grande que l’Europe et l’Afrique réunies.
TEST: Poétiser est innover, et on n’enseigne pas à innover.
TEST: En voyant celui-ci serrer soigneusement le paquet …
TEST: Les aérothermes ont une prise d’air neuf réglable.
TEST: Où sont Papa et Maman ?
TEST: Couper en tout petits morceaux.
TEST: Celle ayant le masque le plus long est sélectionnée.

## version 0.3.6.1
TEST: Il cherchait à m’écarter de la scène, quel qu’en soit le moyen.

## version 0.3.6
TEST: Une police supportant tous ces caractères n’existe pas.
TEST: Un lis blanc. (Dictionnaire 5.0).
TEST: De la seizième à la vingt-troisième année, à la vingt-cinquième (Dictionnaire 5.0).
TEST: Quoi qu’il en soit.
TEST: Ses longues boucles noires comme la nuit sautillaient de droit à gauche.
TEST: Une de ces cocottes plus arriviste que les autres me poursuivit un certain temps.
TEST: Mlle Agathe et M. Sénèque entrent dans la chambre.
TEST: C’est une petite brune, un soupçon replète.

## version 0.3.5
TEST: J’hésite un moment, pèse le pour et le contre de chaque option.
TEST: S’ils eussent été des diplomates, les négociateurs français se fussent moins étonnés…
TEST: Allongé sur le lit funèbre à pieds de lion ou de chacal.
TEST: Des collines entières sont couvertes d’anémones d’un rouge ou d’un blanc éclatants.
TEST: Ils complétaient cet ameublement d’une simplicité et d’une grâce champêtres.
TEST: Il était tout en noir, vêtu, comme tous les jours ou presque, d’une chemise et d’un pantalon noirs.
TEST: Il faisait l’objet d’une affection et d’une fierté particulières.
TEST: Lorsque je me suis tu, le grand type s’est mis à parler.
TEST: Par un de leurs sondages pratiqué sur un autre point de la montagne.
TEST: Les périodes diurne et nocturne.

## version 0.3.4
TEST: La pile électrique de Volta.
TEST: Vous allez y résister.
TEST: Les hommes qui attachaient leurs chevaux près des baraquements de la Marine avaient ramené leurs montures.
TEST: Vues de près, les huttes…
TEST: Vue depuis la jetée et la route du bord de mer, la mosquée…

## version 0.3.3
TEST: J’aurais bien envie de vous écrire.
TEST: Ce sont mille piliers bleus qui l’entourent désormais, comme une cage mystérieuse.
TEST: Pour cet exercice, on utilisera la convention récepteur du dipôle R…
TEST: Déjà la seizième année ne nous paraît pas tellement différente de l’enfance.
TEST: Marie, poussant le landau, fermait la marche à grands pas précipités.
TEST: Une vive couleur rose avait envahi ses joues tout à l’heure si pâles.
TEST: Il incarne bien le « Mac » écossais de son nom.
TEST: Les camionneurs d’Amérique centrale…
TEST: Étranger dans ma société, qui ce soir-là était peu nombreuse.
TEST: Tous les hommes étaient aux champs, sauf un qui nous parut peu disert.
TEST: L’énergie hydraulique, le solaire, l’éolien, la biomasse sont des énergies renouvelables.
TEST: L’amour, l’amitié, la vie sont là.
TEST: Ce soir-là se présentèrent deux Tadjiks.
TEST: Pour serrer la main de John et de Barbara qui furent si étonnés qu’ils se mirent à pleurer.
TEST: Le réverbère et le vélocipède et le télégraphe Morse n’auront plus de mystère.
TEST: Mlle Agathe et M. Sénèque entrèrent dans la chambre.

## version 0.3.2
TEST: Ce n’est maintenant un secret pour personne que nombre des textes de la Bible.

## version 0.3.1
TEST: Croire qu’il n’eût fallu que vous tromper pour obtenir plus d’indulgence ?
TEST: Oui, ma chère belle, Dieu qui ne voulait que vous éprouver.
TEST: Tout à coup, son air et son ton changèrent sensiblement.
TEST: Je vous en conjure, mon indulgente amie, écrivez-moi, vous-même, aussitôt que vous le pourrez.
TEST: Je vous prie de croire que tous mes soins vous seront acquis, aussitôt que vous le désirerez.
TEST: Mais à présent qu’elle est à Paris, qu’elle se porte bien, et surtout que vous la voyez quelquefois.
TEST: Ses parents, tout hérissés d’honneur.
TEST: Que pour le moment, je suis on ne peut pas moins disposée à vous accorder vos demandes.
TEST: Mais de si grands intérêts méritent bien, ce me semble, d’être avant tout discutés et éclaircis.

## version 0.3
TEST: Et comment l’ont-ils attrapée ?
TEST: les écailles du Poisson scintillaient comme des astres d’or.
TEST: Jane ni Michael ne le surent jamais au juste.
TEST: Les mains de Michael se refermaient sur le vide.
TEST: Mme Holmes et le docteur Simpson sortirent.

## version 0.2.8
TEST: Avez-vous honte ? N’avez-vous pas honte ?
TEST: Avez-vous un certificat de vaccination ?
TEST: Avez-vous des nouvelles ?
TEST: N’y aurait-il pas un moyen de lever la consigne ? (1)
TEST: N’y aurait-il pas une erreur ?
TEST: Par où aurait-elle passé.
TEST: Ils sont bien sûr ressortis indemnes de la tragédie.
TEST: Dans un anglais impeccable.
TEST: Le rendez-vous que nous nous sommes donné.
TEST: Le contact avec la structure (cloisons…) doit être évité.
TEST: Crier comme un perdu.
TEST: Je ne pouvais simplement pas laisser ça arriver.
TEST: La DG emploie 295 personnes dont 27 français.
TEST: Les as-tu enfermés ?
TEST: Il lui dit d’un ton radouci
TEST: 1/2 journée.
TEST: La viande de bœuf saumurée.
TEST: Une nouvelle approche des candidatures suivantes qui se veut « basée sur les preuves ».
TEST: Des interfaces homme/machine.
TEST: L’application de ces modèles illustre…
TEST: Une allée sablée.
TEST: Vinaigre le plus noblement distillé.
TEST: Un homme plus grand que les autres m’a offert…
TEST: Une de ces cocottes plus arriviste que les autres me poursuivit un certain temps.

## version 0.2.7
TEST: La vérité des faits énoncés…
TEST: Voir la déclaration sur l’honneur ci-jointe.
TEST: Avec Christine et moi qui tenions nos quarts…
TEST: Les observateurs de l’ONU normalement présents…
TEST: Il s’est rendu chez l’homme qui devait le payer, pour voir celui-ci s’enfuir par la fenêtre.
TEST: Tous les conducteurs d’une voie sont mis en série par leurs connexions aux lames du collecteur.
TEST: Les traîtres eaux de la Patagonie australe (dictionnaire 4.10).
TEST: Il part reconquérir le cœur de sa bien aimée.

## version 0.2.6
TEST: Il lança la pierre droit au but.
TEST: Et tout à coup je m’apparais (dictionnaire 4.10).
TEST: Des visages couleur caramel.

## version 0.2.5
TEST: Tu te crées, Il se crée.
TEST: Ils sont un brin surexcités.
TEST: Des voyages en car.
TEST: Des travailleurs à temps partiel.
TEST: Ces don Juan plus rapides que l’éclair.
TEST: Des bananes plantain.
TEST: Les faits exprimés ci-dessus.
TEST: Rien ne se perd, rien ne se crée.
TEST: Attendez, fit obligeamment René Char, je vais le calmer.
TEST: Ses productions, quelque imparfaites qu’elles puissent être.
TEST: La partie nord de la région. (Dictionnaire 4.9)
TEST: La partie ouest de la région. (Dictionnaire 4.9)
TEST: La partie sud de la région. (Dictionnaire 4.9)
TEST: La partie non-fumeur. (Dictionnaire 4.9)
TEST: L’empreinte carbone.
TEST: De beaux vitraux dont l’un fait allusion à une prophétie.
TEST: Écoutez-le !
TEST: Écoutez-moi. Oubliez-moi, épargnez-moi. Épargnez-moi.
TEST: Ânonnez-la.
TEST: Venez le plus tôt possible.
TEST: Toutes les grandeurs électriques d’un circuit sont à la même fréquence.
TEST: Deux côtés consécutifs d’un carré sont perpendiculaires.
TEST: Je le sais, fit simplement René.
TEST: Force nous est de constater…
TEST: L’un de ceux-là donne aux pauvres.
TEST: Ceux-ci retenus par …
TEST: Les vélos avec moteur électrique.
TEST: Elles sont de la première et de la deuxième générations.
TEST: Des protections antigel.

## version 0.2.4
TEST: Attendre longtemps exaspère la plupart des gens.
TEST: L’histoire commence il y a longtemps.
TEST: Celui-ci étant mort en 1861…
TEST: A priori, ces…
TEST: Il n’aurait rien tant voulu que de réaliser par son art une émotion aussi poignante…
TEST: À Vienne il vit Brahms.
TEST: Son aura brillait de tout son être.
TEST: Si tu t’es un jour penchée
TEST: Elles seraient un jour délaissées : Accord de genre erroné entre jour et délaissées
TEST: Dans les bars des marinas (dictionnaire 4.8).
TEST: Ils s’en donnent à cœur joie.
TEST: Il était encore à moitié endormi.
TEST: Les côtes sont dans leur ensemble découpées.
TEST: La plus grosse erreur de mes parents aura été de croire
TEST: Les licences « Créative Commons »…
TEST: Un aspect féodal tempéré par le luxe et le confort modernes.
TEST: Ils donnent une somme à un candidat ou une cause particuliers.

## version 0.2.3
TEST: Il parle de son « inquiétude passionnée » et de son ‘inspiration tragique ’ (mais son “inspiration”).
TEST: Le nez de Cléopâtre, s’il eût été plus court…
TEST: Vous avez l’air resplendissantes.
TEST: Il s’inquiète pour leur santé.
TEST: De quand à quand travailles-tu ?
TEST: Écrivent-ils une lettre ? (contournement du bug de Python)
TEST: Quelqu’un joue du piano.
TEST: Son manque d’expertise lui interdit toute promotion.
TEST: Je comptais le lire.
TEST: Tous sauf un acceptèrent son plan.
TEST: Ils sont légion.
TEST: Si vous fussiez venu hier, vous auriez pu le voir.
TEST: Des cheveux châtain clair.
TEST: Je ne peux pas la manger.
TEST: Le canal de Suez. (Dictionnaire 4.7)
TEST: Laissez cette boîte là où elle est.
TEST: Une chambre avec air conditionné.
TEST: Mais, échappa-t-elle… Échappa-t-elle ?
TEST: Un rendu 3D. (Dictionnaire 4.7)

## version 0.2
TEST: Les questions sont centralisées puis relayées…
TEST: Le désappointement du devoir contrarié.
TEST: Ne voilà-t-il pas ce qu’on appelle un signe des temps ? — (Guy de Maupassant, En rôdant, 1883)
TEST: Mes membres se sont déraidis.
TEST: Pour qu’ils soient de nouveau complets.
TEST: Pourquoi vous eussé-je questionné sans motif ? (Dictionnaire 4.5)
TEST: Un débarras (Dictionnaire 4.6)
TEST: Je l’ai tout à fait oublié.
TEST: La quasi-totalité.
TEST: À la diable (sauf si en début de phrase : bug de Python)
TEST: À la papa (sauf si en début de phrase : bug de Python)
TEST: Les polluants comme celui-ci viennent principalement de la combustion de l’essence.
TEST: Évite-nous le problème (contournement du bug Python)
TEST: Ces ressources, une fois brûlées, ne seront plus jamais disponibles à l’échelle des temps humains.
TEST: Une exposition plein sud du bâtiment.
TEST: À la longue qualifié…
TEST: Les enfants peuvent être à la fois jeunes et vieux.
TEST: Ses yeux bleu clair et protubérants…
TEST: J’attendais je ne sais quel miracle.
TEST: Elle seule aurait pu le constater puisqu’elle seule en avait le pouvoir.
TEST: Un bâtiment basse consommation.
TEST: Le gentil monsieur, qui est grand et beau, peut être un parfait imbécile !
TEST: L’armée est en ce moment victorieuse.
TEST: Une petite réserve, mise à l’abri, peut être décisive.
TEST: Ses père et mère.
TEST: Indiquez vos nom et prénom.

## version 0.1.2
TEST: Êtes-vous pour ou contre ceci ? (Bug de Python, semble-t-il)
TEST: Calculer l’allocation logement.
TEST: Petit souvenir pour René Machin.
TEST: Au demeurant, ces messieurs … (dictionnaire 4.4)
TEST: Se servant très habilement des menées royalistes (dictionnaire 4.4)
TEST: Ils sont autre chose que des sauvages incultes. (dictionnaire 4.4)
TEST: Les hors-la-loi. (dictionnaire 4.4)
TEST: Ils sont face à face. (dictionnaire 4.4)
TEST: Ils sont emplis d’orgueil. (dictionnaire 4.4)
TEST: Au levant, un jardin… (dictionnaire 4.4)
TEST: Ils se saisissent de lui avant de le frapper.
TEST: Ils n’utilisent pas du tout les pieds.
TEST: Ils ne le lui permettront pas.
TEST: Il sort de la salle située à l’extrémité sud.
TEST: Est terminé. Samedi prochain, nous recommencerons.
TEST: L’est est de ce côté.
TEST: C’est raisonner en chef… (ENFIN !!!).
TEST: Lancez-nous dans la bataille.
TEST: C’était il y a bien longtemps.
TEST: Le IIe siècle.
TEST: C’est elle qui me l’a dit.
TEST: Quelqu’un peut me le dire ?
TEST: C’est elle qui …
TEST: Ce sont elles qui …
TEST: Le nord est de ce côté, le sud est de ce côté.
TEST: Les cours particuliers.
TEST: Elle portait plusieurs bagues à ses fins doigts.
TEST: Il passe en cour martiale.
TEST: Dans vingt et un jours.
TEST: Le mille marin est une mesure de longueur …
TEST: Il regagna sa chambre seul.
TEST: Il prenait ses repas seul.
TEST: « Venez vous asseoir, Pierre », dit Patrick.
TEST: J’ai été camper dans les Alpes.
TEST: C’eût été manquer de réalisme que de penser que…
TEST: Écrit dans un anglais facile.

## version 0.1
TEST: L’eau et le feu suffisent pour l’œuvre entière.
TEST: Imitez donc la ruse qu’employèrent les Grecs.
TEST: Je suis boulanger.
TEST: Je ne lui adresse plus la parole.
TEST: Il est plus accroché à elle qu’elle à lui.
TEST: Vous pouvez vous fier à ce dictionnaire.
TEST: Le grec et le latin sont des langues utiles.
TEST: L’Europe et le Japon instaurèrent.
TEST: Faudrait-il se demander.
TEST: Au maintien d’une industrie.
TEST: Il est à la fois grand et intelligent.
TEST: Une fois retrouvé, on le soumit à la question.
TEST: Au revoir mes amis. Au revoir !
TEST: Toutes choses égales par ailleurs.
TEST: Elles sont toutes blanches.
TEST: Le ou les cas que vous aurez à traiter.
TEST: Pierre nous a procuré un argument de poids.
TEST: Du 1er mars 2010 relative au respect des droits.
TEST: Le 2 mars 2010 relative au respect des droits.
TEST: Ce serait attaquer les droits de l’homme que de ne pas…
TEST: Ce serait ignorer.
TEST: Autour d’elle se sont réunis tous les désirs ignobles.

## version 0.0.12
TEST: Le déclin suite à la guerre…
TEST: Malgré qu’il en ait.
TEST: Les robots sentinelles.
TEST: Fermer les yeux arrête le phénomène.
TEST: En elle est contenu le feu.
TEST: Après les avoir peintes…
TEST: Je t’assure qu’à cette date j’aurai l’argent.
TEST: L’horloge indique 16:44.
TEST: http://www.site.fr
TEST: Il joue un rôle clé.
TEST: Au-delà d’une concentration seuil…
TEST: Les messages vidéo.
TEST: Que nous y allions ou pas dépend du temps.
TEST: Ce matin j’ai raté le train.
TEST: Le quatre juillet.
TEST: Elle a l’air malheureuse.
TEST: Selon le bulletin météo, il fera beau.
TEST: Les avions volèrent.

## version 0.0.11
TEST: Les grêles tilleuls de la place.
TEST: Je n’arrive pas à mettre la main dessus.
TEST: Passés de mains en mains, les poissons étaient jetés sur la table.
TEST: À qui mieux mieux…
TEST: Nul et non avenu.
TEST: Il est leste pour son âge.
TEST: Des maxima, des minima.
TEST: Vous ferez la visite de la maison jeudi à onze heures.

## version 0.0.10
TEST: Le 18 février, le 12 brumaire.
TEST: Elle prononça le nom de son auguste protectrice : l’impératrice.
TEST: Il était habitué à suivre ses propres pensées.
TEST: Recevez mes plus amicales pensées.
TEST: Il en était fier !
TEST: Rien n’indiquait si elle l’avait écouté, ou si elle ne songeait à rien.
TEST: Je me lève vers les sept heures du matin.
TEST: Les canons ne sortaient pas de leur sinistre immobilité.
TEST: Si Dieu l’avait voulu, je serais fils de roi.
TEST: Je soussigné X déclare que…
TEST: Ses propres convictions.
TEST: Autres CONTRÔLES
TEST: Quant à eux, je les épargne.
TEST: Oh çà ! Ah çà ! Çà et là…
TEST: À qui mieux mieux…
TEST: Il a l’avenir devant lui…
TEST: Le son du canon.
TEST: Il chante a cappella.
TEST: Les décrets ont force de loi.
TEST: Les enfants ont recours au suicide.
TEST: Ils ont hâte de vous voir.
TEST: Il lui a adressé des compliments.
TEST: Boîte aux lettres intérieure
TEST: Le cinéma tire à hue et à dia (dictionnaire 5.1)
TEST: Il a sauté à pieds joints.
TEST: Des yeux vert olive.
TEST: Nous convenons en particulier ce qui suit.
TEST: La bataille de Monte Cassino (dictionnaire 5.1).
TEST: Un trois-quarts de rugby.
TEST: Les trois-quarts de l’équipe de rugby.
TEST: Je me sens chez moi dans ton chez-toi.
TEST: Les ayants droit.
TEST: Il sera élu en 2010 maire de la ville.
TEST: Il nous a montré le chemin.
TEST: Il nous a donné du pain.
TEST: Napoléon est né en Corse.
TEST: L’Écosse peut être très chaude.
TEST: Il s’est exprimé dans un français approximatif.
TEST: J’ai mille cent timbres.
TEST: Soit idiot, soit débile.
TEST: Son adorable sœur aînée.
TEST: Ce putain de train.
TEST: Écouter est opiner.
TEST: Elle se rappelle de moi.
TEST: Il se rappelle de me parler.
TEST: Je me rappelle de moins en moins mon enfance.
TEST: La création de nouvelles infractions illustre une prise en charge du sujet par le politique.
TEST: Certains y voient la preuve qu’il a finalement été lâché par son soutien.
TEST: Te voilà paré.
TEST: une des neuf provinces.
TEST: une intoxication en cours peut être diagnostiquée
TEST: Les bonnes gens
TEST: Il est conseiller municipal.
TEST: C’est dans la soirée que ces poursuites avaient été entamées.
TEST: Pour faire savoir que cette arrestation a été décidée.
TEST: Il remit soigneusement le carreau en place…
TEST: La galerie s’ouvrit tout à coup sur une caverne…
TEST: Il tomba sur une autre patrouille et assassina le mage en premier…
TEST: La voix agaçante de la gamine était revenue la hanter…
TEST: Allons y jeter un œil.
TEST: On a tous des qualités.
TEST: Les femmes portent toutes des noms à consonance étrangère.
TEST: Une taille 38 imposée aux mannequins.
TEST: Ce putain de temps.
TEST: Il a fait la une des journaux.
TEST: Le numéro un des ventes de Noël.
TEST: Le patron du numéro deux allemand a démissionné.
TEST: Je soussigné Pierre Dupont déclare avoir pris connaissance des conditions de ce contrat.
TEST: J’ai mille cent timbres.
TEST: À qui mieux mieux, à qui mieux mieux
TEST: L’est est loin, la gare de l’est aussi.


## EXEMPLES REPRIS DE LANGUAGETOOL
## NOTE : ces textes contiennent parfois des erreurs (corrigées quand repérées par le correcteur)
TEST: Au voisinage du zéro absolu de température.
TEST: La couronne périphérique alterne falaises abruptes et plages.
TEST: Henri VIII rencontre François Ier.
TEST: à ce jour.
TEST: avoir un bel avenir
TEST: faire un dessin
TEST: par exemple
TEST: Une dune.
TEST: Une dune de sable blanc.
TEST: remède universel
TEST: Il regarde l’heure tout le temps.
TEST: dépenses excessives
TEST: tremblement de terre
TEST: On ne veut pas voir la même chose.
TEST: Je voudrais ajouter quelque chose de particulièrement important.
TEST: La gent féminine.
TEST: Il est prêt à tout.
TEST: L’étoile se trouve à peu près à 50 années-lumière.
TEST: Il s’intéresse de près à l’environnement.
TEST: Nous sommes près d’arriver.
TEST: Nous ne sommes pas près d’arriver.
TEST: J’ai obtenu un prêt de la banque.
TEST: vivre l’un près de l’autre.
TEST: Tu ne trouves pas ça bizarre.
TEST: Ça chauffe
TEST: Pourriez-vous répéter ça s’il vous plaît ?
TEST: Il mange ça froid.
TEST: Il a promis de garder ça secret.
TEST: Ça montre que tu n’as pas compris.
TEST: Ça c’est un couteau.
TEST: Ça n’a pas de sens.
TEST: Mais ça oui.
TEST: Sa voiture est en panne.
TEST: C’est sa préférée.
TEST: Il trouva de la nourriture çà et là.
TEST: Quant à ma commande, elle n’est pas arrivée.
TEST: De quand à quand tu travailles ?
TEST: Tu reviens quand à Paris ?
TEST: Tu restes jusqu’à quand à la maison ?
TEST: Le Notre Père est une prière chrétienne.
TEST: Si vous souhaitez en savoir davantage, veuillez me contacter.
TEST: Cette offre est accompagnée d’avantages.
TEST: Il part bientôt pour Venise.
TEST: Il peut être têtu.
TEST: Il partira peut-être demain.
TEST: Cela peut être vrai.
TEST: L’Écosse peut être très chaude.
TEST: L’alcool au volant peut être dangereux.
TEST: Une intoxication en cours peut être diagnostiquée.
TEST: Elle peut être ennuyeuse.
TEST: La lettre est à elle peut-être.
TEST: C’est elle peut-être.
TEST: Peut-être viendra-t-il ?
TEST: Est-ce que quelqu’un peut m’aider ?
TEST: Je veux m’éloigner autant que faire se peut d’ici.
TEST: On peut d’ailleurs le vérifier.
TEST: La pale de l’hélice est cassée.
TEST: Je joue au golf depuis un an.
TEST: Je joue souvent au golf le dimanche.
TEST: C’est un bon joueur de golf.
TEST: Le golfe Persique est presque une mer fermée.
TEST: Le golfe d’Aden est la baie située entre la corne de l’Afrique et la péninsule Arabique.
TEST: Le golfe du Lion est une partie de la mer Méditerranée.
TEST: Le repaire des pirates.
TEST: Ce ris de veau est succulent.
TEST: Ce ris d’agneau est succulent.
TEST: Le forcement d’un coffre.
TEST: Vous avez forcément raison.
TEST: Vous n’avez pas forcément raison.
TEST: S’exprimer sans forcément parler.
TEST: Un gâteau aux amandes.
TEST: Face aux amendes à payer
TEST: En amende honorable
TEST: J’ai été condamné à une forte amende.
TEST: J’ai été mis à l’amende.
TEST: Un enfant de chœur.
TEST: Le chœur philharmonique.
TEST: Il a confessé tous ses péchés.
TEST: Les péchés capitaux
TEST: Manger est mon péché mignon.
TEST: Péchés de jeunesse
TEST: C’est un des leurs.
TEST: Les dés les plus courants.
TEST: Dès à présent
TEST: J’ai acheté des dés à jouer.
TEST: Dès à présent
TEST: Plusieurs des caractéristiques.
TEST: Dès 1980, le pays était en crise.
TEST: Des 2000 participants, seuls 1000 sont venus.
TEST: Des 2000 invités, seuls 1000 sont venus.
TEST: Dès dix-huit ans.
TEST: L’anniversaire des 30 ans de la libération.
TEST: Le cap des 35 ans.
TEST: Elle approche des cinquante ans.
TEST: À l’occasion des vingt ans du groupe.
TEST: Le congrès des 20 ans de l’association.
TEST: A priori, il devrait arriver à l’heure.
TEST: Je ne pouvais pas le croire a priori.
TEST: La grève généralisée a paralysé tout le pays.
TEST: Fumer a nui à sa santé.
TEST: Ce que tu dis a l’air correct.
TEST: Puis a jailli un jeune homme.
TEST: Il chante a cappella.
TEST: Il est pris à partie.
TEST: Le nettoyage à sec.
TEST: Il a quel âge ?
TEST: Prendre quelqu’un à partie.
TEST: Lorsqu’il y a proximité d’un restaurant universitaire.
TEST: Il a lui aussi décidé de partir.
TEST: Tout à fait !
TEST: Il est tombé tout à coup.
TEST: Je parlais tout à l’heure avec ma femme.
TEST: Il y en a qui dorment.
TEST: Fais-moi savoir s’il y a quoi que ce soit que je puisse faire.
TEST: Nous étions face à un danger.
TEST: Le coiffeur en face a mis la clé sous la porte.
TEST: Grâce à toi, j’ai gagné.
TEST: Elles sont prêtes à t’écouter.
TEST: Le prêt a été refusé.
TEST: Tout à coup, j’entendis une explosion.
TEST: Il est facile de décider a posteriori.
TEST: Il a été aux États-Unis.
TEST: Je suis tout à fait d’accord.
TEST: Un crayon à pointe fine.
TEST: Les familles à revenus modestes
TEST: Il n’a pas manqué l’occasion de prendre à partie son prédécesseur.
TEST: Une tapette à tapis.
TEST: Une maladie à issue fatale.
TEST: Où sont mes affaires ?
TEST: Manger ou être mangé, c’est la loi de la nature.
TEST: Ils ont été ou sont pour l’implantation de la centrale nucléaire.
TEST: J’en suis sûr.
TEST: Sûr et certain.
TEST: Nous nous sentions toujours sûrs de nous.
TEST: Tout repose sur de vagues accusations.
TEST: Il compte sur d’autres personnes.
TEST: Des relations bâties sur l’argent.
TEST: Il compte sur d’autres personnes.
TEST: Un moratoire a été établi sur de telles pratiques.
TEST: Il réussira à coup sûr son examen.
TEST: Ce programme se base sur la participation des femmes.
TEST: Tout ce que je sais.
TEST: Ce sont des histoires.
TEST: Ce sont de grands enfants.
TEST: Ils se sont tous inscrits.
TEST: Ils se sont aimés.
TEST: Ils se sont d’ailleurs doté d’un nouvel ordinateur.
TEST: Ce sera une fille.
TEST: Il se sera d’abord lavé.
TEST: Ce sera bien.
TEST: Ce phénomène se transforme en phénomène de société.
TEST: Ce peuple
TEST: Ce faisant, il se rapprochait.
TEST: Pour ce faire, vous disposez d’un délai d’une semaine.
TEST: C’est ma voiture.
TEST: C’est ma préférée.
TEST: Le problème c’est qu’apparemment elle n’a pas son mot de passe…
TEST: Les Chinoises sont celles qui se marient le plus avec les Sud-Coréens.
TEST: Le son dans l’informatique
TEST: Son indigne frère
TEST: Au son de la voix
TEST: Même son de cloche
TEST: Eh bien, soit !
TEST: Et bien sûr, il n’est pas venu.
TEST: Et bien qu’il commençât en retard, il termina en avance.
TEST: Et bien souvent, ça dégénère.
TEST: Eh bien, soit !
TEST: Je travaille tard.
TEST: Nous n’affirmons rien.
TEST: Je compte sur vous mercredi.
TEST: Nous non plus
TEST: Où vous rendez-vous habituellement ?
TEST: La zone géographique dans laquelle je vis
TEST: C’est une belle maison.
TEST: Cette école est réputée.
TEST: C’est dommage de partir si tôt.
TEST: Vouloir c’est pouvoir.
TEST: C’est non seulement pour lui, mais aussi pour elle.
TEST: C’est dimanche qu’il arrive.
TEST: Comme c’est romantique.
TEST: C’est la fin.
TEST: C’est suite à cette victoire qu’il fut élu.
TEST: C’est incognito qu’il reporta le prix.
TEST: C’est face à la montée en puissance.
TEST: Il est interrogé en tant que témoin.
TEST: Il faut se rappeler de temps en temps que rien n’est immortel.
TEST: On a fini.
TEST: Ceux qui ont envie de voir le film
TEST: Les décrets ont force de loi.
TEST: Les enfants ont recours au suicide.
TEST: Les méthodes qui ont cours.
TEST: Ils ont hâte de vous voir.
TEST: Ils comprennent qu’ils ont affaire à un épisode tragique.
TEST: Je suis sceptique.
TEST: Une fosse septique.
TEST: Je reste sceptique.
TEST: En termes de rémunération
TEST: L’azurage du linge se fait avec du bleu d’outremer.
TEST: Étiez-vous en train de travailler ?
TEST: Le voleur fit irruption pendant la nuit.
TEST: L’éruption du volcan fut violente.
TEST: Il y a une vacance dans notre équipe au travail.
TEST: J’ai repris ce fonds de commerce
TEST: Un fonds monétaire
TEST: Une affaire en cours.
TEST: Il fut traduit en cour martiale.
TEST: Donner libre cours à l’imagination
TEST: En fin de compte.
TEST: En ligne de comte.
TEST: Tout comte fait.
TEST: Elle aime les contes de fées.
TEST: Elle aime les contes d’horreur.
TEST: Elle aime les contes fantastiques.
TEST: Les contes et légendes de Bretagne.
TEST: Elle va au marché.
TEST: Son visage était décrépit.
TEST: Elle semblait décrépite par les années.
TEST: Il doit bien être quelque part.
TEST: Tu viendras quand même.
TEST: Tu viendras quand même ?
TEST: Comme même ses meilleurs amis n’étaient pas venus, il était triste.
TEST: Mon nom est Robert de Puis.
TEST: L’arrivée est imminente.
TEST: Des paléontologues éminents.
TEST: Une encre sur soie.
TEST: Un drap en soie.
TEST: Il n’est pas mauvais en soi.
TEST: Quoi qu’il en soit.
TEST: Un ver à soie.
TEST: Parlez à voix basse.
TEST: Cette décision ouvre la voie à des élections.
TEST: Il y avait une émotion dans sa voix.
TEST: Combien y a-t-il d’étoiles dans la Voie Lactée ?
TEST: Dans leurs voies respiratoires.
TEST: La voie piétonne est fermée.
TEST: Par voie de conséquence
TEST: Un animal en voie d’extinction.
TEST: Les pays en voie de développement
TEST: Il a ouvert la voie à la construction de l’Europe.
TEST: La tradition ascétique de l’Église.
TEST: Cancer dur côlon.
TEST: Ils ne sont pas si différents.
TEST: Tâche de ne pas faire trop de bruit.
TEST: Il a accompli la tâche facilement.
TEST: Rome importait de Gaule essentiellement du sel.
TEST: Darth Vader est un personnage de Star Wars.
TEST: Dark Vador est un personnage de Star Wars.
TEST: Darth Vader est un personnage de Star Wars.
TEST: Dark Vador est un personnage de Star Wars.
TEST: Mariah Carey
TEST: Tu es du Morbihan.
TEST: Il faut maintenir le statu quo.
TEST: Un réveillon avec foie gras et champagne.
TEST: Il est venu contre son gré.
TEST: Tu peux se déplacer à ton gré.
TEST: Une renommée qu’elle doit à la particularité de son grès.
TEST: Il viendra bon gré ou mal gré.
TEST: Errer au gré des vents.
TEST: Errer au gré du vent.
TEST: Il acceptera de gré ou de force.
TEST: Je vous sais gré d’être là.
TEST: Il faut prendre en gré les afflictions que Dieu nous envoie.
TEST: Un champignon vénéneux.
TEST: Un cobra très venimeux.
TEST: Un seau d’eau.
TEST: Ton seau est percé.
TEST: Le sceau du secret.
TEST: Elles sont contre cette idée.
TEST: Dans la ville de Contres.
TEST: Tu contres son coup de poing.
TEST: Quel est votre diagnostic ?
TEST: On le diagnostique tôt.
TEST: L’équipe m’a demandé mon pronostic pour le match de demain.
TEST: Le diagnostic prénatal.
TEST: On le diagnostique facilement.
TEST: Méthode pour le diagnostic.
TEST: Le pronostic du match.
TEST: Tu les diagnostiques facilement.
TEST: Il débouchera la bouteille.
TEST: Ils sont très avares.
TEST: L’avar est une langue caucasienne.
TEST: Ils sont avares de bonnes paroles.
TEST: Un avare amasse de l’argent non pas parce qu’il est prudent mais parce qu’il est avide.
TEST: L’avar est une langue caucasienne.
TEST: Le CO2 est un gaz à effet de serre.
TEST: Son arrivée m’a fait plaisir.
TEST: Leurs arrivées m’ont fait plaisir.
TEST: L’arrivée du tour de France.
TEST: J’ai fait un emprunt à la banque.
TEST: Mon empreinte carbone.
TEST: Les emprunts à la banque.
TEST: Tu auras affaire à moi.
TEST: J’ai des courses à faire à cinq heures.
TEST: Tu auras affaire à la police.
TEST: J’ai des courses à faire à la boutique.
TEST: Il a été construit à des fins militaires.
TEST: Il rôde sans but.
TEST: Les malfaiteurs rôdent autour de la maison.
TEST: Ils rôdent en quête de bagarre.
TEST: Il faut roder le moteur.
TEST: Tristan et Iseult tombèrent amoureux en buvant un philtre.
TEST: Il prépara un philtre d’amour.
TEST: Il prépara un philtre aphrodisiaque.
TEST: Ça sans dire !
TEST: Sa chemise à carreaux détonne avec son pantalon rayé.
TEST: Une maison de plain-pied.
TEST: Les grenouilles coassent.
TEST: Les grenouilles mâles coassent.
TEST: Les coassements inquiétants des crapauds.
TEST: Les corbeaux croassent.
TEST: Les croassements inquiétants des corbeaux.
TEST: J’étais à mille lieues d’imaginer que c’était lui.
TEST: As-tu lu 20 000 lieues sous les mers ?
TEST: Les lieus mordent à notre leurre.
TEST: Techniques de traîne pour les lieus jaunes.
TEST: Ils pêchent des lieus.
TEST: Faire un état des lieux.
TEST: Les lieux de prière.
TEST: Les lieux historiques.
TEST: J’étais quelques fois absent.
TEST: Les quelques fois où je l’ai croisé.
TEST: Les quelques fois que nous nous sommes rencontrés.
TEST: C’est quelquefois pénible de surveiller les enfants.
TEST: C’est quelquefois assez pénible de surveiller les enfants.
TEST: Noir comme jais.
TEST: Le cri du geai.
TEST: Il m’a donné un coup de poing.
TEST: Les poings serrés.
TEST: Il a été libéré sans contrepartie.
TEST: Il a été libéré sans contre-partie.
TEST: Quelles sont les contreparties ?
TEST: Il ne me reste que huit centimes.
TEST: Un procès à huis clos.
TEST: Elle est enceinte de trois mois.
TEST: Elle est enceinte de 3 mois.
TEST: Le mois de mai a été froid.
TEST: Le mois d’avril a été froid.
TEST: Quel âge as-tu ?
TEST: Une femme d’âge mûr.
TEST: Des acides aminés.
TEST: Un acide aminé.
TEST: Des dessins animés.
TEST: Un dessin animé.
TEST: Des jeunes filles.
TEST: Il n’est plus très jeune.
TEST: L’amanite tue-mouches est toxique.
TEST: Les communes de la Haute-Cornouaille.
TEST: Le Festival de Cornouaille est un festival annuel se déroulant dans la ville de Quimper.
TEST: Tourisme en Cornouaille bretonne.
TEST: Tourisme en Cornouailles britannique.
TEST: Quelqu’un leur a déjà dit.
TEST: Ceci dit.
TEST: Ceci dit.
TEST: Il s’est confié à la compagne du roi.
TEST: Une presqu’île
TEST: La réponse est presque exacte.
TEST: L’île est encore loin.
TEST: Il connait l’histoire de A à Z.
TEST: Il a appris ça en un jour.
TEST: Il semble que oui.
TEST: Le oui l’a emporté.
TEST: J’ai suivi la A40.
TEST: À la une de la presse.
TEST: Là où ça ne va plus.
TEST: Le IIe siècle.
TEST: Dépose-le au courrier.
TEST: Dépose-la au courrier.
TEST: Je pense qu’il va bientôt arriver.
TEST: Dès le Ier siècle
TEST: Les habitants de Ouagadougou.
TEST: S’il pleut, je reste ici.
TEST: Voilà ce qu’il a dit.
TEST: Vous voilà arrivé.
TEST: Et voilà ce qu’il a dit.
TEST: Elle voila son visage.
TEST: Il a soixante et un ans.
TEST: J’ai trois cent cinquante timbres.
TEST: Deux cent mille étoiles.
TEST: J’ai cinq cent soixante-et-un euros.
TEST: J’ai mille cent timbres.
TEST: J’ai trois cents timbres.
TEST: Deux cents milliards d’étoiles.
TEST: Nous avons parcouru 10 milles marins.
TEST: Convertir des milles aux kilomètres.
TEST: Carl Milles était un sculpteur suédois.
TEST: Un voyage de mille milles.
TEST: Il reste seulement dix milles jusqu’à l’arrivée.
TEST: Trois-mille euros.
TEST: J’ai 1 enfant.
TEST: Cela coûte 2,1 euros.
TEST: 1 fois.
TEST: J’ai quatre enfants.
TEST: Il est né le quatre janvier.
TEST: On estimait à seize mille les fusils de son armée.
TEST: Le patron du numéro deux allemand a démissionné.
TEST: Une Peugeot 208 fabriquée en France.
TEST: Ils ont tous les trois été tués par balle.
TEST: Les trois kanji.
TEST: L’intensité des rayons X ayant frappé la pellicule.
TEST: J’ai 4 enfants.
TEST: Il est né le 4 janvier.
TEST: Son adresse est 4 rue de la gare.
TEST: Cela coûte 1,25 euro.
TEST: Il sera élu en 2010 maire de la ville.
TEST: Le pays est découpé en 4 parties.
TEST: Une taille 38 imposée aux mannequins.
TEST: Il a battu le record avec un temps de 3 min 18 s.
TEST: L’année 800 fut considérée comme une renaissance de l’Empire romain d’Occident.
TEST: un canard
TEST: des oies dodues
TEST: au cours de l’année
TEST: Les taux d’intérêt domestiques.
TEST: Un atlas cher.
TEST: Un camion très lourd.
TEST: Vous êtes bon fils.
TEST: On voyait ses joues devenir rouges.
TEST: Des filles un peu pâles.
TEST: Même vainqueurs ils sont mécontents.
TEST: Une vache laitière
TEST: Les premier et deuxième trimestres.
TEST: Les montagnes ont l’air belles.
TEST: Les pâtes ne sont pas bonnes car trop cuites.
TEST: Il est parti aux États-Unis pour étudier.
TEST: Une faute.
TEST: Ils sont en général jeunes.
TEST: Les lois antitrust américaines.
TEST: Des roquettes sont même retombées.
TEST: Ils sont juste amis.
TEST: Parmi les mieux cotés.
TEST: Ils sont à la fois grands et minces.
TEST: En 1779 débute la première des neuf guerres.
TEST: Des erreurs même très graves.
TEST: J’ai au moins quelques dollars.
TEST: Certaines grenouilles peuvent même être mortelles.
TEST: un canard gras
TEST: des oies
TEST: Des poulets fermiers
TEST: Les hérétiques ayant reconnu la foi catholique.
TEST: Les voitures verte et rouge.
TEST: Des livres audio
TEST: L’institut de recherches britannique
TEST: Les camions très lourds.
TEST: Les atlas chers.
TEST: Fils naturel de Richard
TEST: Faites attention.
TEST: Les préoccupations des travailleurs face à la crise.
TEST: Plus de crédits bancaires grâce à des taux d’intérêts bas.
TEST: Je suis né le huit janvier.
TEST: Deux immeubles juste en face de toi.
TEST: Les communications Internet.
TEST: Un catalogue des animaux commode à consulter
TEST: J’aime jouer aux cartes.
TEST: Pauvres du monde
TEST: Quarante pour cent des femmes
TEST: Vos nom et prénom, s’il vous plaît.
TEST: Des fautes.
TEST: Les ayants droit.
TEST: Nous aurons les résultats dans 4 heures maximum.
TEST: Critique des cent jours du président.
TEST: Un dispositif moins ambitieux mais applicable.
TEST: Ces analyses bidon.
TEST: Ces don Juan.
TEST: En 1779 débute la première des neuf guerres.
TEST: Les véhicules.
TEST: Les ondes radio.
TEST: Des événements différents ayant lieu en même temps.
TEST: Une jolie femme.
TEST: Une très jolie femme.
TEST: Le français concurrence le latin.
TEST: Le rock a donné naissance à des groupes légendaires.
TEST: Une répartition des revenus judicieuse.
TEST: Ses premiers malaises.
TEST: Un geste circulaire.
TEST: Force tranquille de la nature
TEST: Une bouche un peu grande.
TEST: La mort subite
TEST: Confus face aux remarques obscures
TEST: Un bel homme.
TEST: Confus face aux remarques obscures
TEST: Elle est tout sauf courtoise.
TEST: Il a eu le poste grâce à son anglais.
TEST: La Guyane française.
TEST: Quelqu’un paye la facture.
TEST: Tes menaces ne me font pas du tout peur.
TEST: Elle est à nouveau amoureuse.
TEST: Le numéro un des ventes de Noël.
TEST: Ce putain de temps.
TEST: J’ai grand faim.
TEST: Il sait au moins lire.
TEST: Les neuf circonscriptions des Alpes-Maritimes.
TEST: Un souvenir du passé.
TEST: Tom surpris Marie.
TEST: Je ne peux pas le lire.
TEST: Je n’ai pas du tout peur des serpents.
TEST: Nous faisons tous partie de la même équipe.
TEST: La variété du catalan parlée en Andorre.
TEST: Un climat tropical.
TEST: Un climat très tropical.
TEST: Le papier continue d’être employé.
TEST: L’équipe de football anglaise
TEST: Les cours impériales
TEST: Les dossiers triés par ordre alphabétique.
TEST: Les soldats abasourdis par le chaos.
TEST: Une bouteille fut apportée.
TEST: L’homme présente une amie.
TEST: Une réduction des coûts comprise entre 10 et 20 euros.
#TEST: Une omelette au jambon relevée d’oseille.
TEST: Des bouteilles non vidées
TEST: La détention provisoire illimitée
TEST: Une maquette d’avion jolie
TEST: Elle a l’air jolie.
TEST: Les pâtes ne sont pas bonnes car trop cuites.
TEST: Une peine pas si lourde.
TEST: Une infime minorité.
TEST: L’Inde indépendante.
TEST: Voir la déclaration sur l’honneur ci-jointe.
TEST: Une mise à jour gratuite.
TEST: Une mise à niveau couteuse.
TEST: Elle est un petit peu chiante.
TEST: <!-- L’étoile à neutrons peut même être remplacée par un trou noir. -->
TEST: Une fleur.
TEST: Un très grand chien.
TEST: Une géologue intelligente.
TEST: Un très grand chien.
TEST: Elle est grasse, car elle mange beaucoup.
TEST: Il faudra que je vive seul.
TEST: Sa large et bonne figure.
TEST: La porte d’entrée.
TEST: Son amie l’abandonne.
TEST: Le Cameroun
TEST: Toutes nos félicitations.
TEST: La justice est une si belle chose.
TEST: Telle est la question.
TEST: La plus forte progression.
TEST: C’est une sale affaire.
TEST: Il est torse nu.
TEST: La plus grande fait dix centimètres.
TEST: Les équations différentielles non linéaires.
TEST: Une des multiples affaires.
TEST: C’est la fin.
TEST: Il a fait la une des journaux.
TEST: Le mustang est un cheval sauvage.
TEST: Le jaguar est un mammifère.
TEST: La Jaguar est une voiture.
TEST: L’histoire d’une enfant pas si sage.
TEST: La partie ouest de la ville.
TEST: L’une des sept unités de base.
TEST: une des neuf provinces.
TEST: Les bonnes gens.
TEST: J’habite 10 avenue Constantin Arnaud.
TEST: L’une des pires.
TEST: Une forêt tropicale.
TEST: Une forêt très grande.
TEST: Cette définition reste valable.
TEST: Le système de retraites français.
TEST: Les cours magistraux
TEST: Les lettres triées par ordre alphabétique.
TEST: Il aura capté sa confiance.
TEST: Il a une force exceptionnelle.
TEST: Un centre logistique dédié.
TEST: Une fois effectués les changements.
TEST: Le carton est à moitié plein.
TEST: Un indicateur d’inégalité utilisé par les Nations Unies.
TEST: Des documents ou informations tirés de la commission
TEST: Une large majorité.
TEST: Une étrange expérience.
TEST: Les cours étaient en réalité destinés à préparer les élèves.
TEST: Une fut soumise anonymement.
TEST: Son metteur en scène préféré.
TEST: Une mise à jour gratuite.
TEST: Les sols en permanence gelés.
TEST: Une centaine de personnes est venue.
TEST: Il faut beaucoup de sucre.
TEST: Le nombre de masse est un terme employé en chimie.
TEST: Ils sont au nombre de neuf.
TEST: Une centaine d’anarchistes est venue.
TEST: Il faut beaucoup d’eau.
TEST: Le nombre d’oxydation.
TEST: Des créatures marines.
TEST: Des yeux vert clair.
TEST: Des yeux vert olive.
TEST: Ses cheveux étaient noir de jais.
TEST: Des yeux vert clair.
TEST: Une jupe bleu foncé.
TEST: La femme avec laquelle tu parles
TEST: La faux avec laquelle on fauche.
TEST: Une distance au-delà de laquelle il devient difficile de voir.
TEST: Les femmes auxquelles tu parles
TEST: Un dans chaque bras.
TEST: La femme à laquelle tu parles
TEST: L’homme auquel tu parles
TEST: L’homme avec lequel tu parles
TEST: Les hommes avec lesquels tu parles
TEST: Les hommes auxquels tu parles
TEST: Les hommes avec lesquels tu parles
TEST: Les hommes auxquels tu parles
TEST: Ça te gêne si je fume ?
TEST: Mon chien
TEST: Ton histoire
TEST: Mon œuvre
TEST: Son ère
TEST: Son malaise
TEST: Pour ne plus travailler.
TEST: J’aimerais changer de travail.
TEST: Je l’ai tout à fait oublié.
TEST: Puis assigné à résidence.
TEST: Je me suis en fait amusé.
TEST: Il a refusé de manger avec nous.
TEST: Il a refusé d’arriver plus tôt.
TEST: Il a décidé de ne plus manger avec nous.
TEST: Pour débuter, il faut acheter une grammaire.
TEST: J’ai de la peine pour René.
TEST: Comment bien étudier
TEST: Il m’a sans cesse répété de me taire.
TEST: Il est sans doute arrivé.
TEST: Je veux te préparer
TEST: Luc est quant à lui condamné.
TEST: J’étudie des parties d’échecs afin de gagner.
TEST: Je luis en parle avant d’annuler le voyage.
TEST: Tu sors ce soir.
TEST: Je soussigné Pierre Dupont déclare avoir pris connaissance des conditions de ce contrat.
TEST: Il ou elle se trouve là.
TEST: Il dit la vérité.
TEST: Tu ne sors pas ce soir.
TEST: Je ne donne rien.
TEST: Je ne dis rien.
TEST: Il me causa un grand tord.
TEST: Tu ne la sors pas ce soir.
TEST: On ne la paie pas.
TEST: Je ne l’abandonne pas.
TEST: Il ne l’est que durant l’élection.
TEST: Je suis en retard parce que j’ai raté mon bus.
TEST: Le chef du restaurant.
TEST: Partir aux USA.
TEST: Les montagnes du Jura.
TEST: Mes démêlés avec X.
TEST: Le son a interféré avec l’image.
TEST: Une irradiation avec soit de la lumière ultraviolette, soit des protons.
TEST: Le glacier du Trient.
TEST: Le glacier des Bossons.
TEST: Ils ont des a priori sur nous.
TEST: Je vais au marché.
TEST: Au sortir de la guerre.
TEST: Un orage est annoncé.
TEST: Antoine est marié.
TEST: Ils sont même restés ici.
TEST: Celui-ci est resté.
TEST: Il est torse nu.
TEST: On est fatigués.
TEST: Antoine est peut-être fatigué.
TEST: Dominique est peut-être fatiguée.
TEST: Dominique est peut-être fatigué.
TEST: Ils sont très avares.
TEST: Un orage a été annoncé.
TEST: Les camions ont été inventés.
TEST: Antoine n’est pas marié.
TEST: Antoine n’est pas très fatigué.
TEST: Mon oncle n’est pas avare de son argent.
TEST: Une averse est annoncée.
TEST: Martine est mariée.
TEST: Gravir cette montagne est dangereux
TEST: Martine est très jolie.
TEST: L’Autriche est pendant tout le Moyen Âge une des nombreuses principautés.
TEST: Cette voiture était suffisamment bon marché.
TEST: Cette caméra est dernier cri.
TEST: La sortie est droit devant.
TEST: Une averse avait été annoncée.
TEST: Martine aurait été contente.
TEST: Martine aurait été très contente.
TEST: Les voitures ont été inventées.
TEST: Martine n’est pas mariée.
TEST: Martine n’est pas très jolie.
TEST: Un orage fut annoncé.
TEST: Elle sera contente.
TEST: Martine était ennuyeuse.
TEST: Lui et son équipage furent perdus en mer.
TEST: Tu étais jeune.
TEST: Celle-là est folle.
TEST: Il est casse-couilles.
TEST: On est fatigués.
TEST: Tu étais très jeune.
TEST: On était tellement fatigués.
TEST: Un orage avait été annoncé.
TEST: Tu avais été dénoncé.
TEST: Tu avais été immédiatement dénoncé.
TEST: J’avais été content.
TEST: Elle ne sera pas contente.
TEST: Martine n’était guère ennuyeuse.
TEST: Elle est casse-couilles.
TEST: Tu n’étais pas très jeune.
TEST: On n’est pas couchés.
TEST: Des orages sont annoncés.
TEST: Elles sont absentes.
TEST: Vous êtes certain.
TEST: Le vernis à ongles est inutile.
TEST: Courir les magasins est devenu une corvée.
TEST: Nous étions fatigués.
TEST: Ils sont même allés faire la guerre.
TEST: Celles-là sont folles.
TEST: Une des réponses est correcte.
TEST: Ils sont juste arrivés.
TEST: Nous étions trop fatigués.
TEST: Ils sont bien sûr ressortis indemnes.
TEST: Nous sommes quelque peu occupés.
TEST: Ces ordinateurs sont meilleur marché que ceux-là.
TEST: Ces ordinateurs sont dernier cri.
TEST: Des orages avaient été annoncés.
TEST: Ils avaient été dénoncés.
TEST: Nous aurions été dénoncés.
TEST: Vous auriez été dénoncés.
TEST: Vous auriez été dénoncé.
TEST: Elles avaient été immédiatement dénoncées.
TEST: Elles ne sont pas absentes.
TEST: Les mathématiques ne sont pas juste de la mémorisation de formules.
TEST: Nous n’étions pas trop fatigués.
TEST: Nous ne sommes pas trop fatigués.
TEST: Est-elle arrivée ?
TEST: Est-elle souriante ?
TEST: Est-elle aveugle ?
TEST: Sont-elles arrivées ?
TEST: Sont-elles souriantes ?
TEST: Sont-elles aveugles ?
TEST: Est-il arrivé ?
TEST: Est-il souriant ?
TEST: Est-il aveugle ?
TEST: Sont-ils arrivés ?
TEST: Sont-ils souriants ?
TEST: Sont-ils aveugles ?
TEST: Est-elle déjà arrivée ?
TEST: Est-elle déjà souriante ?
TEST: Est-elle encore aveugle ?
TEST: Sont-elles déjà arrivées ?
TEST: Sont-elles déjà souriantes ?
TEST: Ne sont-elles pas aveugles ?
TEST: Est-il déjà arrivé ?
TEST: Est-il déjà souriant ?
TEST: N’est-il pas aveugle ?
TEST: Sont-ils déjà arrivés ?
TEST: Sont-ils déjà souriants ?
TEST: Ne sont-ils pas aveugles ?
TEST: Es-tu arrivée ?
TEST: Es-tu arrivé ?
TEST: Es-tu aveugle ?
TEST: Es-tu déjà arrivée ?
TEST: Es-tu déjà arrivé ?
TEST: Es-tu presque aveugle ?
TEST: Sommes-nous arrivés ?
TEST: Sommes-nous arrivées ?
TEST: Étions-nous aveugles ?
TEST: Sommes-nous déjà arrivés ?
TEST: Sommes-nous déjà arrivées ?
TEST: Ne sommes-nous pas aveugles ?
TEST: Il nous a informés.
TEST: Il nous a informées.
TEST: Il vous a informé.
TEST: Il vous a informés.
TEST: Dominique les a renseignés.
TEST: Dominique les a renseignées.
TEST: Il nous a montré le chemin.
TEST: Il nous a donné du pain.
TEST: Je suis sûr de l’avoir vu, de mes yeux vu.
TEST: Je suis sûr de l’avoir vue, de mes yeux vue.
TEST: Je suis sûr de les avoir vus, de mes yeux vus.
TEST: Je suis sûr de les avoir vus de mes yeux vus.
TEST: Un orage peut être observé.
TEST: Il peut être observé.
TEST: La peine de mort devrait être abolie.
TEST: Toute objection de ce type doit être déférée au président.
TEST: Antoine peut être amusant.
TEST: Une corrélation peut être observée.
TEST: Martine peut être amusante.
TEST: Les composants électroniques peuvent être nettoyés.
TEST: Un orage peut être observé.
TEST: Elle peut être observée.
TEST: Martine peut être ennuyeuse.
TEST: Lui et son équipage sont perdus en mer.
TEST: Des orages peuvent être observés.
TEST: Elles peuvent être observées.
TEST: Vous pouvez être triste.
TEST: Il est arrivé
TEST: Il est parti tôt.
TEST: L’été est chaud.
TEST: L’objectif est de réussir
TEST: Partir, c’est mourir un peu.
TEST: Il faut être aveugle pour ne pas voir ça.
TEST: Il était officier.
TEST: Crois-tu que je sois aveugle ?
TEST: Les Allemandes sont toutes des délurées.
TEST: Tu as été prendre du bois.
TEST: La fille là-bas est Marie.
TEST: Ce serait attaquer les droits de l’homme.
TEST: Il faut soit partir, soit attendre.
TEST: Il a signé le contrat
TEST: Il a reçu ta lettre
TEST: Il a dû manger.
TEST: Tu as beau pleurer.
TEST: L’unique prix que tu as à payer est de laisser ce monde derrière.
TEST: J’ai été chercher du pain.
TEST: Avoir hâte d’être dehors.
TEST: J’ai toutes ces pommes à porter.
TEST: J’ai cela en tête.
TEST: Nous avons compris ce qui se passe.
TEST: J’ai mangé de la soupe.
TEST: L’exposition au bisphénol A entraine des malformations.
TEST: Les gros avions causent une forte pollution sonore.
TEST: J’ai bien mangé.
TEST: Je n’ai pas encore mangé.
TEST: Avez-vous signé le contrat ?
TEST: Avez-vous déjà signé le contrat ?
TEST: Ils avaient voulu cela.
TEST: Il est en train de jouer.
TEST: Je viendrai demain.
TEST: Je viendrai dans trois jours.
TEST: Je peux
TEST: J’arrive
TEST: Je ne travaille pas
TEST: J’en ai
TEST: Je t’attends
TEST: Je ne te veux pas.
TEST: Je te le répète.
TEST: Je le lui donne.
TEST: Je lui en veux.
TEST: Je ne t’attends pas.
TEST: Je n’y crois pas
TEST: Je t’en parle
TEST: Je ne vous en parle pas.
TEST: Je ne leur en veux pas.
TEST: Je ne le lui achète pas.
TEST: Je te l’avais donné.
TEST: Je ne m’en souviens pas.
TEST: Je ne l’y ai pas vu.
TEST: Tu travaillais
TEST: Si tu suis le sentier.
TEST: Tu ne travaillais pas.
TEST: Tu m’attendras
TEST: Tu ne me rappelles pas
TEST: Tu nous le prouves.
TEST: Tu lui en parles.
TEST: Tu ne m’attendras
TEST: Tu t’en souviens
TEST: Tu n’y vas pas
TEST: Tu ne me le prends pas.
TEST: Tu me l’as offert.
TEST: Tu ne m’en parles pas
TEST: Il travaille
TEST: Ce sont des histoires.
TEST: Celle adressée à mon ami
TEST: À elle reviennent toutes les maisons.
TEST: Des polluants comme celui-ci viennent de la combustion.
TEST: Je trouve cela passionnant.
TEST: Je pensais que vous trouveriez ça intéressant.
TEST: Pierre et elle étaient fiancés.
TEST: Ça fonctionne.
TEST: Et ça fonctionne.
TEST: Je ne trouve pas ça intéressant.
TEST: Il ne travaille pas
TEST: Ça ne fonctionne pas.
TEST: Ce ne sont pas des histoires.
TEST: Elle se demande.
TEST: Il a converti cela en médailles.
TEST: Dominique et elle les attendent.
TEST: Ça ne fonctionne pas.
TEST: Personne ne peut me le dire.
TEST: Il ne me veut pas.
TEST: Pour cela nous en parlons à notre mère.
TEST: Comme il n’avait plus de voiture, il prenait le bus.
TEST: Ça t’irait bien.
TEST: Ne laisse pas ça t’arrêter.
TEST: Cela ne t’aidera pas.
TEST: Elle m’en parle
TEST: Elle me l’avait donné.
TEST: Ça ne t’intéresse pas.
TEST: Ceci ne s’étant pas révélé suffisant, il recommença.
TEST: Elle ne s’en souvient pas.
TEST: Nous perdons
TEST: Nous nous sommes perdus.
TEST: Nous ne perdons pas.
TEST: Nous ne sommes pas perdus.
TEST: Nous vous attendons
TEST: Nous ne vous attendons pas.
TEST: Vous travaillez
TEST: Est-ce que ça vous dérange si je fume ?
TEST: Vous ne travaillez pas.
TEST: Vous nous attendez
TEST: Vous ne nous attendez pas.
TEST: Ils travaillent.
TEST: Ceux-ci fonctionnent.
TEST: Ceux enseignés dans cette école
TEST: À elles revient la maison.
TEST: L’une d’elles est inutile.
TEST: Ils ne travaillent pas.
TEST: Ceux-ci ne fonctionnent pas.
TEST: Ils vous étonneront par leur efficacité.
TEST: Ceux-ci ayant été approuvés.
TEST: Ils ne nous attendent pas
TEST: Ceux-ci l’aident.
TEST: Ceux-ci n’ayant pas été approuvés.
TEST: Ils ne m’attendent pas.
TEST: Ils me l’avaient donné.
TEST: Ils ne s’en souviennent pas.
TEST: Ne sois pas en retard !
TEST: Ne va plus là !
TEST: Ne sachant pas quoi faire
TEST: Ne me prends pas pour un idiot
TEST: Ne me présentant pas comme maire
TEST: N’apporte pas de cadeaux.
TEST: Ne l’attends pas
TEST: Ne l’ayant pas trouvé
TEST: N’y va pas
TEST: Ne m’y attends pas
TEST: Ne m’y étant pas rendu compte
TEST: Laisse-nous ici.
TEST: Veuillez nous réveiller à sept heures.
TEST: Dis-lui bonjour.
TEST: Veuillez lui dire d’attendre.
TEST: Veuillez vous en aller.
TEST: Veuillez nous y conduire.
TEST: Force nous est de constater…
TEST: Donne-m’en un peu.
TEST: Trouve-t’en toi-même !
TEST: Veuillez m’en montrer un autre.
TEST: Donne-la à ton frère.
TEST: Donne la pomme à ton frère.
TEST: Veuillez le noter.
TEST: Regarde la belle fille.
TEST: Regarde-la.
TEST: Regarde-la bien.
TEST: Allez le voir.
TEST: Lis le plus vite possible.
TEST: Montez le son.
TEST: Monte le son.
TEST: Coupez les autres légumes.
TEST: Coupez les 3 feuilles.
TEST: Coupez les trois feuilles.
TEST: Donne-le-moi plus tard.
TEST: Donne-en-lui.
TEST: Offre-leur-en.
TEST: Appuyez-vous-y.
TEST: Souvenez-vous-en.
TEST: Croyez-vous en Dieu ?
TEST: Envoie-les en vacances.
TEST: Offre-lui-en.
TEST: Prends-moi-en quand tu seras là.
TEST: Laisse-moi en dehors de cette affaire.
TEST: Envoie-la-nous.
TEST: Voulez-vous vous en aller ?
TEST: Nous convenons en particulier ce qui suit.
TEST: C’est moi qui dis ça.
TEST: C’est moi qui te dis ça.
TEST: C’est l’animal en moi qui le veut.
TEST: C’est moi qui suis allé là-bas.
TEST: C’est moi qui dis ça.
TEST: Et moi qui pensais qu’il m’aimait.
TEST: Il n’y avait qu’elle et moi qui savions.
TEST: C’est toi qui penses à ça.
TEST: C’est toi qui me prends
TEST: C’est l’animal en toi qui le veut.
TEST: Était-ce toi qui as laissé la porte ouverte ?
TEST: Celles qui travaillent ici
TEST: Les gens qui discutent là
TEST: C’est le seul de mes amis qui a du talent.
TEST: Un drapeau en lambeaux qui continue à flotter au vent.
TEST: J’ai un fils qui est en secondaire.
TEST: Le grand Tours qui disparaît.
TEST: Vous tous qui venez ici.
TEST: Celles qui me dérangent
TEST: Les gens qui nous dérangent
TEST: C’est vous qui vous trompez.
TEST: Celle qui travaille ici
TEST: La femme qui vient ici
TEST: Eux qui jouent ici
TEST: Quelques jeux vidéo qui ont marqué les années 80.
TEST: Six médecins et un infirmier qui travaillaient à l’hôpital.
TEST: Celle qui me dérange
TEST: Nous qui travaillons ici
TEST: C’est l’enfant en nous qui parle.
TEST: Des copains plus vieux que nous qui fumaient.
TEST: Nous qui vous aimons
TEST: Des copains plus vieux que nous qui me dérangeaient.
TEST: Vous qui travaillez ici
TEST: Y a-t-il quelqu’un parmi vous qui a un briquet ?
TEST: Des copains plus vieux que vous qui fumaient.
TEST: Vous qui me dérangez
TEST: Des copains plus vieux que vous qui me dérangeaient.
TEST: Nous avons mangé des huitres.
TEST: Elle est allée en Bretagne et elle a mangé des huitres.
TEST: Isabelle a mangé des huitres.
TEST: Nous l’avons mangé.
TEST: Nous l’avons mangée.
TEST: Nous les avons mangés.
TEST: Nous les avons mangées.
TEST: Il les a pris en train de voler.
TEST: Il les a prises en train de voler.
TEST: Nous lui avons donné un cadeau.
TEST: Nous n’avons pas mangé des huitres.
TEST: Isabelle n’a jamais mangé des huitres.
TEST: Nous ne t’avons pas écouté.
TEST: Nous ne t’avons pas écoutée.
TEST: Nous ne les avons pas écoutés.
TEST: Nous ne les avons pas écoutées.
TEST: Nous ne lui avons rien donné.
TEST: J’ai mangé des huitres.
TEST: Je suis allée en Bretagne et j’ai mangé des huitres.
TEST: Les élèves ont terminé leurs devoirs.
TEST: Les élèves t’ont écouté.
TEST: Les élèves t’ont écoutée.
TEST: Les élèves les ont écoutés.
TEST: Les élèves les ont écoutées.
TEST: Les élèves lui ont donné.
TEST: Les élèves n’ont pas terminé leurs devoirs.
TEST: Les élèves ne m’ont pas écouté.
TEST: Les élèves ne m’ont pas écoutée.
TEST: Les élèves ne les ont pas écoutés.
TEST: Les élèves ne les ont pas écoutées.
TEST: Les élèves ne lui ont pas écouté.
TEST: As-tu eu peur ?
TEST: Pourquoi as-tu eu peur ?
TEST: En aviez-vous mangés ?
TEST: Les documents qu’ils ont achetés.
TEST: Les parties de poker qu’il a jouées.
TEST: Le sac à main que j’ai acheté.
TEST: Une fois que vous avez goûté au plaisir des jeux d’argent.
TEST: Les lettres que j’ai voulu envoyer.
TEST: Les lettres que j’ai voulu t’envoyer.
TEST: Les images qu’elle a envoyées ont montré une structure inattendue.
TEST: Les récompenses qu’elle a eues.
TEST: Le document qu’ils ont acheté.
TEST: Tout cela pour dire qu’on a longtemps été confrontés à ce problème.
TEST: C’est dans la soirée que ces poursuites avaient été entamées.
TEST: La femme que j’ai aidée.
TEST: La femme que j’ai beaucoup aidée.
TEST: La femme que j’ai un peu aidée.
TEST: J’ai l’impression que tu as compris.
TEST: Une fois que tu as goûté au plaisir.
TEST: Une meilleure situation que quand il a pris ses fonctions.
TEST: L’expert estime que les climatosceptiques ont fait pression.
TEST: De la même nature que celles qui ont été saisies.
TEST: La lettre que j’ai voulu envoyer.
TEST: Certains y voient la preuve qu’il a finalement été lâché par son soutien.
TEST: Cette finale qu’il a dominée.
TEST: La pommade qu’il a voulu me passer.
TEST: La pommade qu’il a voulu m’apporter.
TEST: Ne dis à personne que nous avons fait cela.
TEST: L’homme que j’ai aidé.
TEST: L’homme que j’ai beaucoup aidé.
TEST: L’homme que j’ai un peu aidé.
TEST: Pour faire savoir que cette arrestation a été décidée.
TEST: Cet homme qui est venu.
TEST: Cette femme qui est jolie.
TEST: Cet homme qui est grand.
TEST: Ces femmes qui sont charmantes.
TEST: Puis-je rester ?
TEST: Que pouvais-je faire ?
TEST: Que manges-tu ?
TEST: Pourrait-il venir ?
TEST: Que mange-t-elle ?
TEST: Entre-t-il ?
TEST: Quand partirons-nous ?
TEST: Attrapez-nous ?
TEST: Attrape-nous ?
TEST: Que mangez-vous ?
TEST: Que pouvaient-ils faire ?
TEST: L’enfant lui dit merci.
TEST: L’enfant dit merci.
TEST: Le père et l’enfant lui disent merci.
TEST: Les parents de l’enfant lui disent merci.
TEST: Dominique peut venir.
TEST: Antonio Banderas est un acteur espagnol.
TEST: Mon enfant joue en bas.
TEST: Le contexte troublé.
TEST: Ma mère étant malade n’est pas venue.
TEST: Un bruit sifflant de vapeur.
TEST: Un souffle ardent
TEST: Au diable toutes ces histoires
TEST: Le verbe aimer est facile à conjuguer.
TEST: Comment se fait-il que le réveil ait sonné.
TEST: Les boissons et la nourriture étaient servis à volonté.
TEST: Quel âge ont vos enfants ?
TEST: Ni la Terre, ni son orbite ne sont parfaitement circulaires.
TEST: Un petit sourire.
TEST: Un seul être vous manque.
TEST: La Corée peut gagner.
TEST: Mon enfant ne peut pas aller à l’école.
TEST: Ce matin nous avons froid.
TEST: Cette chaise en bois est lourde.
TEST: La Corée ne peut pas gagner.
TEST: Mon enfant l’étudie.
TEST: Le passé n’éclairant pas l’avenir.
TEST: Comment se fait-il que le réveil n’ait pas sonné.
TEST: les employés et la direction n’aboutirent à aucun résultat.
TEST: Ce fut l’entreprise de marketing de la décennie.
TEST: Mon enfant ne l’étudie.
TEST: Mon enfant ne m’en veut pas.
TEST: Les enfants jouent en bas.
TEST: Les régions situées au sud sont chaudes.
TEST: Ces rues désertes
TEST: Nos bagages étant enregistrés
TEST: Tout Paris est à la fête.
TEST: L’eau des lacs et des rivières est douce.
TEST: Lequel des élèves est sorti ?
TEST: Les quartiers conquis par l’armée.
TEST: Des petites bites.
TEST: Des petites zones favorables à la biodiversité.
TEST: Du tronc poussent les branches.
TEST: Quels changements attendre de la réalité augmentée ?
TEST: Les enfants en mangent.
TEST: Mon fils ne passera pas.
TEST: Les États-Unis se composent de 50 états.
TEST: Les camions n’arrivent pas.
TEST: Les cuillères en bois commencent à moisir.
TEST: Ces choses nous les partageons.
TEST: Mon fils n’arrive pas à faire les additions.
TEST: Les enfants ne l’attendent pas.
TEST: Mes enfants ne m’en veulent pas.
TEST: La plupart des femmes rêvent d’un mariage en grande noce.
TEST: La plupart des femmes ne rêvent pas d’un mariage en grande noce.
TEST: La plupart des autres chaînes.
TEST: La plupart des grandes entreprises.
TEST: La plupart des spécialistes s’entendent sur ce point.
TEST: La plupart des spécialistes ne s’entendent sur ce point.
TEST: La plupart du monde parle anglais.
TEST: La plupart du monde ne parle pas anglais.
TEST: La plupart du monde s’aventure ici.
TEST: La plupart du monde ne s’aventure pas ici.
TEST: Les guerres sont chères.
TEST: L’avion volait à basse altitude.
TEST: Quel que soit le problème
TEST: Quelle que soit la difficulté
TEST: Quelles que soient vos raisons
TEST: Quelle que puisse être sa raison
TEST: Quelles que puissent être vos raisons
TEST: Il est trois heures et demie.
TEST: L’entretien dure environ une demi-heure.
TEST: La plupart du temps
TEST: Il n’a nulle part où aller.
TEST: J’ai trop de travail.
TEST: Est-ce que tu viens ?
TEST: Est-ce qu’ils viennent ?
TEST: C’est ce que je dis.
TEST: Il est ce que j’appelle un champion.
TEST: Discuter est ce qu’elle fait le mieux.
TEST: Il vient, n’est-ce pas ?
TEST: Puis-je déposer mes affaires ?
TEST: Sans doute je ne vais pas.
TEST: Si d’aventure on en a.
TEST: Tant que je vivrai je n’oublierai pas.
TEST: Puis j’ai acheté cela.
TEST: Puis je vais t’aider.
TEST: Quel genre de musique j’écoute
TEST: Que manges-tu ?
TEST: Que prend-il ?
TEST: Notre point de départ on pouvait le voir d’ici.
TEST: Ce prédateur réintroduit il y a 30 ans.
TEST: L’auditoire était on ne peut plus ravi.
TEST: Que prend-elle ?
TEST: C’est elle qui vient.
TEST: Anne menait elle aussi sa petite existence.
TEST: Que mange-t-il ?
TEST: Où va-t-il ?
TEST: Quel âge a-t-elle ?
TEST: Comme cela elle n’a pas à cuisiner.
TEST: Les jours de fête on ne travaille pas.
TEST: L’histoire commence il y a longtemps.
TEST: La chanteuse a elle aussi annulé son concert.
TEST: À Vienne il acheta du chocolat.
TEST: Que mangeons-nous ?
TEST: Allons nous asseoir ici.
TEST: Que mangez-vous ?
TEST: Veuillez vous rendre à l’accueil.
TEST: Sachez vous éloigner.
TEST: Vous pouvez vous asseoir.
TEST: Que mangent-ils ?
TEST: Ce sont elles qui parlent.
TEST: Vont-elles participer ?
TEST: Les femmes vont elles aussi participer.
TEST: Va-t’en !
TEST: C’est un va-t-en-guerre.
TEST: Donne-m’en un peu.
TEST: Que faut-il faire ?
TEST: Quand arrivera-t-il ?
TEST: Quand arrive-t-il ?
TEST: Vous convainc-t-il par ses arguments ?
TEST: Ne voilà-t-il pas ce qu’on appelle un signe des temps ?
TEST: Quand arriveras-tu ?
TEST: Quand arriveras-tu ?
TEST: Il a écrit l’article à la une aujourd’hui.
TEST: Les pays de la CE.
TEST: La quarante-quatrième.
TEST: Il faisait froid cet hiver-là.
TEST: Veux-tu aller là ?
TEST: Tout est là.
TEST: Ils ne s’en tinrent pas là.
TEST: Il sera là l’année prochaine.
TEST: Voici mon amie.
TEST: C’est sa onzième fille.
TEST: Mon vieil ami.
TEST: Ils sont comme de vieux ours.
TEST: Il marche tous les matins.
TEST: Corrige avant tout les erreurs.
TEST: Tous les cours d’eau.
TEST: Il ignore tout des oiseaux.
TEST: Ce qui fait en tout deux personnes.
TEST: Ils n’utilisent pas du tout les pieds.
TEST: Merci à tous ceux qui sont venus.
TEST: Je remercie avant tout ceux qui sont venus.
TEST: Toutes ces erreurs qu’il fait
TEST: Toute la saison
TEST: Ils aiment tous la géographie.
TEST: Il sera connu de tous un jour.
TEST: C’est pour nous tous une mauvaise nouvelle.
TEST: Je souhaite à tous une bonne année.
TEST: Ils n’apprécient pas tous la nourriture.
TEST: Ils sont tous au travail.
TEST: Toutes les années
TEST: Elle donne à tous des bouteilles.
TEST: Mes amis n’apprécient pas tous la musique.
TEST: On a tous des qualités.
TEST: Je peux tous les lire.
TEST: Ils ont tous une moto.
TEST: C’est pour nous tous une mauvaise nouvelle.
TEST: Toute la saison
TEST: Après tout ma douleur n’est pas si forte.
TEST: Je n’aime pas du tout la télévision.
TEST: Tout le Canada.
TEST: Ce qui fait en tout deux personnes.
TEST: Tout cet équipement
TEST: Toutes les cours de récréation
TEST: Les femmes portent toutes des noms à consonance étrangère.
TEST: Elles font toutes du business avec eux.
TEST: En tout cas, je vous donnerai des nouvelles.
TEST: Et si tu avais gagné
TEST: Si tu mourais
TEST: Si j’avais gagné
TEST: S’ils avaient gagné
TEST: Je veux que tu sois prudent.
TEST: Je souhaitais que tu fusses présent.
TEST: Je souhaite qu’il apprenne le français.
TEST: Je ne permets pas que tu sois imprudent.
TEST: Je n’exige pas que vous soyez ponctuels.
TEST: C’est le seul ami qui me comprenne.
TEST: À condition que tu réussisses.
TEST: À condition que tu me prennes.
TEST: Pourvu que tu réussisses
TEST: Il est arrivé après que je fus parti.
TEST: Je vous appelle pour que vous me donniez des renseignements.
TEST: Bien que tu aies passé l’examen
TEST: Je sais bien que tu reviendras.
TEST: Je travaille de façon que nous puissions vivre.
TEST: Je travaille de façon qu’il puisse vivre.
TEST: En admettant qu’il soit allé
TEST: Demander jusqu’à ce qu’il réponde.
TEST: Demander jusqu’à ce qu’il me réponde.
TEST: J’irai si tant est que je puisse.
TEST: J’irai si tant est que je le puisse.
TEST: Quoique je dise.
TEST: Quoique je te dise.
TEST: Elle est certaine que vous êtes un espion.
TEST: Je n’ai pas compris.
TEST: Tu n’as pas compris.
TEST: Ne t’inquiète pas.
TEST: On n’a pas compris.
TEST: Il y a pas mal de choses à faire.
TEST: Il a pas moins de 10 voitures.
TEST: On ne part pas encore.
TEST: On ne vous a pas compris.
TEST: Il n’y a pas d’eau.
TEST: Il en profita.
TEST: C’est tout à fait correct.
TEST: Elles sont quasiment à portée de main.
TEST: Les filles sont de sortie.
TEST: Le voisin d’à côté est pénible.
TEST: Le gouvernement a depuis ordonné aux soldats de quitter le pays.
TEST: Le canal de Suez.
TEST: La pile de Volta.
TEST: Ils sont par contre restés à la maison.
TEST: Le cinéma tire à hue et à dia.
TEST: L’autour attrapa une souris.
TEST: Voici venu le temps des vacances.
TEST: Le participe passé a tout de suite été vu.
TEST: Il est né à Cabana.
TEST: Il n’y a personne pour m’aider.
TEST: Plusieurs de ces langues vont disparaitre.
TEST: J’ai quelques ennuis.
TEST: Passé les premières années à l’école, il s’assagit.
TEST: Les années sont passées vite.
TEST: Le serveur a été mis à jour.
TEST: Le serveur a été mis en place.
TEST: Les températures sont plus froides que prévu.
TEST: La facture est plus élevée que prévu.
TEST: Elles y arrivent elles-mêmes.
TEST: Vous y arriverez vous-mêmes.
TEST: Monsieur, vous y arriverez vous-même.
TEST: L’accident a fait au moins trois morts.
TEST: Je reçois des mises à jour régulièrement.
TEST: C’est très important.
TEST: J’ai très faim.
TEST: Il est très à l’aise.
TEST: Je suis très en retard.
TEST: Très, très loin.
TEST: Tu aimes beaucoup ? Très !
TEST: Je me sentirais très seul si tu venais à disparaître.
TEST: le vieux quartier Très Cloîttres à Grenoble.
TEST: Il fait faire très attention.
TEST: Il les a fait fuir.
TEST: Vous l’avez fait souffrir.
TEST: Il ne les a pas fait fuir.
TEST: Vous l’avez encore fait souffrir.
TEST: Les voitures dernier cri.
TEST: Ses derniers cris.
TEST: Des points de vue.
TEST: crier comme un putois
TEST: faire un plongeon
TEST: à midi
TEST: tuyau d’arrosage
TEST: fabrique de chaloupes
TEST: sauce froide
TEST: fabricant de chaloupes
TEST: sauver par le gong
TEST: stade de hockey
TEST: bois dur
TEST: flottage de bois
TEST: flotteur de bois
TEST: grenouille-taureau
TEST: saumon d’eau douce
TEST: où l’on peut faire du kayak
TEST: sandwich long
TEST: chute de neige abondante
TEST: ruban à mesurer
TEST: pot-au-feu
TEST: billet à gratter
TEST: marcher sur les pieds
TEST: marcher sur
TEST: défilé de mode
TEST: à part ça
TEST: en tout et pour tout
TEST: tablette de chocolat
TEST: machine à coudre
TEST: maison jumelée
TEST: intéressé par
TEST: poser une question
TEST: donner des cours
TEST: au dos
TEST: construction de logements
TEST: quartier résidentiel
TEST: motard criminel
TEST: pom-pom girl
TEST: aide sociale
TEST: permis de construire
TEST: quelques jours
TEST: avis d’imposition
TEST: clause dérogative
TEST: faire semblant
TEST: au-dessous de zéro
TEST: ramasser de l’argent
TEST: pouvoir gagner
TEST: conter fleurette
TEST: boîte postale
TEST: de part en part
TEST: l’aider
TEST: les aider
TEST: avoir besoin
TEST: ce dont j’ai besoin
TEST: beau-parleur
TEST: ce matin
TEST: bleu marine
TEST: de prime abord
TEST: vidange moteur
TEST: ce soir
TEST: poseur de briques
TEST: tour de bureaux
TEST: condition féminine
TEST: benne à ordures
TEST: sac-poubelle
TEST: taxe d’ordures ménagères
TEST: quelque part
TEST: lutte contre
TEST: successeur de
TEST: harelde du Nord
TEST: lagopède blanc
TEST: gélinotte huppée
TEST: semi-remorque
TEST: nid de moustique
TEST: chaque jour
TEST: perche soleil
TEST: pelle à poussière
TEST: à portée de la main
TEST: Une loquette d’Amérique
TEST: lampe à huile
TEST: peinture fraîche
TEST: bois tendre
TEST: flaque d’eau
TEST: apporter des changements
TEST: collecte de données
TEST: collecte des ordures ménagères
TEST: jaseur d’Amérique
TEST: taux de succès scolaire
TEST: bonnet de bain
TEST: à carreaux
TEST: dégât des eaux
TEST: omble des fontaines
TEST: ruban adhésif
TEST: omble chevalier
TEST: truite de mer
TEST: être bon tireur
TEST: bébé phoque
TEST: chambre d’hôte
TEST: réserve de faune
TEST: pas de porte
TEST: sumac vénéneux
TEST: taille-crayon
TEST: laisse de mer
TEST: se fier à
TEST: se vendre au prix de détail
TEST: prêter attention à
TEST: pommes de terre en purée
TEST: tas de neige
TEST: bonnet de laine
TEST: perche noire
TEST: carré-éponge
TEST: avoir le sens de l’humour
TEST: bâtir des châteaux en Espagne
TEST: faire un bras de fer
TEST: bras de fer
TEST: faire un geste
TEST: battre fort
TEST: paille de fer
TEST: corde à sauter
TEST: taille-crayon
TEST: tailler un crayon
TEST: Le steward de Charlevoix a son charme.
TEST: Une répression tous azimuts
TEST: De tout temps
TEST: À tout prix
TEST: De toute façon
TEST: de l’après-midi
TEST: stylo plume
TEST: maïs soufflé
TEST: rôti de bœuf
TEST: groupe de discussion
TEST: prise de courant
TEST: il faut dire que
TEST: l’échapper belle
TEST: s’opposer à
TEST: sans objet
TEST: grande caravane
TEST: en stock
TEST: du jeu
TEST: livraison par exprès
TEST: payable à la livraison
TEST: registre des procès-verbaux
TEST: attentat à la pudeur
TEST: il faut dire que
TEST: il faut dire que
TEST: manomètre à air
TEST: filet d’aiglefin
TEST: prendre le parti de
TEST: déclinez votre identité
TEST: proposer des correctifs
TEST: ouvrir la voie
TEST: directeur de banque
TEST: familier à
TEST: de la première à la dernière page
TEST: incendie circonscrit
TEST: date d’échéance
TEST: lait concentré
TEST: entrée de service
TEST: conduire une machine
TEST: publier un communiqué
TEST: délivrer un reçu
TEST: occasion d’affaires
TEST: crayon graphite
TEST: appuyer une décision
TEST: défrayer [quelqu’un] de ses dépenses
TEST: suivre un cours
TEST: J’ai pris des passagers en cours de route.
TEST: J’ai pris part à ce cours d’informatique.
TEST: avoir la situation en mains
TEST: abolir des postes
TEST: premier conférencier
TEST: quart de jour
TEST: chiffre prudent
TEST: jusqu’à présent
TEST: image de marque
TEST: entreprise citoyenne
TEST: comité mixte
TEST: consultations externes
TEST: quart de nuit
TEST: quart de soir
TEST: collecte de sang
TEST: compressions budgétaires
TEST: au petit matin
TEST: suppressions de postes
TEST: chef cuisinier
TEST: chef de direction
TEST: secrétaire de direction
TEST: vice-président et directeur exécutif
TEST: coupon de réduction
TEST: faute d’inattention
TEST: parler avec un accent
TEST: proposer une candidature
TEST: proposition comme candidat
TEST: câble de démarrage
TEST: Il commença à discuter avec moi.
TEST: d’ici [x] minutes
TEST: avec lequel je joue
TEST: affecter à une tâche
TEST: énergie nouvelle
TEST: entrée interdite
TEST: traiter un problème
TEST: Il lui a adressé des compliments.
TEST: Il est tiré d’affaire.
TEST: Il est sorti d’affaire.
TEST: traiter un sujet
TEST: se heurter à un obstacle
TEST: contrefaire une signature
TEST: année scolaire
TEST: salaire de base
TEST: à l’avance
TEST: Passer du temps.
TEST: mes sans préjudice de
TEST: s’introduire dans un marché
TEST: être fourbu
TEST: toucher un chèque
TEST: s’adapter à la situation
TEST: club de forme
TEST: ballon sonde
TEST: sous aucun prétexte
TEST: inspecteur d’assurances
TEST: séance de formation
TEST: de séance
TEST: répondre à des besoins
TEST: Je veux la rencontrer et au besoin, lui parler.
TEST: répondre à des exigences
TEST: boîte à gants
TEST: coffre bancaire
TEST: enceinte acoustique
TEST: droits des personnes
TEST: dans la mesure où
TEST: en ce qui me concerne
TEST: ayant autorité
TEST: responsable de la communication
TEST: traiter une commande
TEST: exécuter une ordonnance
TEST: avoir un souvenir tout frais
TEST: exécuter une ordonnance
TEST: pourvoir un poste
TEST: mal juger son coup
TEST: prétendre que
TEST: chargeuse-pelleteuse
TEST: numéro gratuit
TEST: revêtement de sol
TEST: femme active
TEST: vidange moteur
TEST: voiture gratuite
TEST: billet de faveur
TEST: rémunération du capital
TEST: assurance contre l’incendie
TEST: porte-fenêtre
TEST: c’est le moins qu’on puisse dire
TEST: monde des affaires
TEST: simple détention
TEST: piste de vitesse
TEST: leçon particulière
TEST: porter ses fruits
TEST: cuir verni
TEST: jardinerie [raison sociale]
TEST: poste de vigie
TEST: concentré de tomate
TEST: palais des foires
TEST: centre de découverte
TEST: renseignement exclusif
TEST: ensemble de jardin
TEST: meuble de jardin
TEST: piquet de grève
TEST: file d’attente
TEST: agression à domicile
TEST: salle à manger
TEST: au minimum
TEST: Les femmes participent activement à ce processus.
TEST: être en droit de
TEST: blessure bénigne
TEST: agglomération de Montréal
TEST: agglomération de Québec
TEST: exclusivité de
TEST: Une interview exclusive donnée à la presse.
TEST: cuillère à soupe
TEST: cuillère à café
TEST: baguette de pain
TEST: pain complet
TEST: panne de courant
TEST: insister pour que
TEST: atteindre le seuil de rentabilité
TEST: invoquer le règlement
TEST: arts plastiques
TEST: voulant que
TEST: c’est la raison pour laquelle
TEST: se sentir visé
TEST: sûreté supplémentaire
TEST: comptoir à salades
TEST: combat décisif
TEST: pourvoir à un poste
TEST: dîner officiel
TEST: assiette de viandes froides
TEST: jeu de construction
TEST: petit boulot
TEST: mettre à profit
TEST: libre-service de demi-gros
TEST: additionnal premium
TEST: Ils hésitent face aux montants de la dette.
TEST: prime temporaire
TEST: mettre en état d’arrestation.
TEST: en service.
TEST: sous-entrepreneur.
TEST: champion en titre.
TEST: cas de force majeure.
TEST: acte de naissance.
TEST: affronter la tempête.
TEST: interjeter appel.
TEST: se rendre aux urnes.
TEST: être diffusé.
TEST: organiser un référendum.
TEST: en service.
TEST: outrage ou tribunal
TEST: clauses d’un contrat
TEST: circulation dense
TEST: abus de confiance.
TEST: avis de sinistre
TEST: pour autant que je sache
TEST: chaîne de montage
TEST: chaîne d’assemblage
TEST: carnet de banque
TEST: client habituel
TEST: prix réduit
TEST: prix d’entrée
TEST: prix courant
TEST: descente aux enfers
TEST: la cambrure du pied
TEST: budget d’exploitation
TEST: en retard.
TEST: faire une promenade
TEST: nuire à un résultat.
TEST: entrer en vigueur
TEST: prendre de force
TEST: déclencher une discussion
TEST: prendre part aux discussions
TEST: créer une entreprise
TEST: Il est parti de cette entreprise.
TEST: faire courir une rumeur
TEST: être touché par un témoignage
TEST: toute l’année
TEST: toute la journée
TEST: à longueur de semaine.
TEST: immeuble résidentiel
TEST: conférences téléphoniques
TEST: registered mail.
TEST: braderie.
TEST: soldes après incendie.
TEST: pour seulement
TEST: collectes de fonds
TEST: pendant la saison
TEST: siège-social
TEST: Ça s’annonce mal.
TEST: trous de mémoire
TEST: indemnité de congé payé
TEST: compte en banque
TEST: facture d’électricité
TEST: facture de téléphone
TEST: billet gratuit
TEST: être nerveux
TEST: chaîne stéréo
TEST: pince étau
TEST: déposer une plainte
TEST: faire un appel téléphonique
TEST: voter une loi
TEST: faire un appel
TEST: avoir hâte de
TEST: laisser découvrir la vérité
TEST: pulvériser un record
TEST: pour comble d’insulte
TEST: aime que
TEST: Ils m’apprécient en tant que collègue.
TEST: être au sommet de ma forme
TEST: être persuadé que
TEST: avoir besoin de
TEST: être au bout du rouleau
TEST: faire des affaires
TEST: être chargé
TEST: Ils sont pris en charge.
TEST: être dans le pétrin
TEST: être dans la même situation
TEST: laisser fuir de l’information
TEST: situation imprévue
TEST: pour information
TEST: pain de savon
TEST: inciter les gens à voter
TEST: l’emporter sur
TEST: applaudir chaleureusement
TEST: broyer du noir
TEST: tenir la gauche
TEST: tenir la droite
TEST: avoir à l’œil
TEST: En deux mots
TEST: nappe de pétrole
TEST: jouer un rôle de second plan
TEST: mettre l’accent sur
TEST: Un récipient rempli entièrement.
TEST: Le moteur fonctionne à 100 % de sa capacité.
TEST: Il a la capacité de le faire.
TEST: On les juge à leur capacité de résoudre les problèmes.
TEST: mettre la main à la pâte
TEST: tenter sa chance
TEST: détails techniques
TEST: avoir de sens
TEST: parcs récréatifs
TEST: hors d’usage
TEST: accord global
TEST: lit grand format
TEST: lit très grand format
TEST: bureau de vote
TEST: hors champ
TEST: tuyau d’échappement
TEST: sans objet
TEST: Le Nil est un fleuve d’Afrique.
TEST: soins infirmiers
TEST: parc de stationnement
TEST: en direct
TEST: monte-charge
TEST: prêt-à-monter
TEST: esprit d’entreprise
TEST: témoin informatique
TEST: stratégie de marque
TEST: bon marché
TEST: homme de main
TEST: séance d’informations
TEST: Le monospace.
TEST: les coulisses
TEST: Les dépassés.
TEST: les media de masse
TEST: les fauteuils de repos
TEST: les hayons
TEST: les privilégiés
TEST: haute technologie
TEST: à plein régime
TEST: rouleau impérial
TEST: chaudrée de palourdes
TEST: nuque longue
TEST: pièce à conviction
TEST: d’office
TEST: chambre d’hôte
TEST: fenêtre arquée
TEST: fichier de sauvegarde
TEST: grand écart
TEST: tant pis !
TEST: par tête
TEST: prise de courant
TEST: allocation journalière
TEST: coup de départ
TEST: maison sur deux niveaux
TEST: obligation spéculative
TEST: Steve Jobs, le pionnier de l’ordinateur conçu comme une prison cool, mise au point pour supprimer leur liberté aux idiots, est mort.
TEST: manque de crédibilité
TEST: film de route
TEST: à touches
TEST: prix de couvert
TEST: café express
TEST: rencontre arrangée
TEST: cabaret clandestin
TEST: mes jalousies
TEST: cornichon mariné
TEST: en tout cas
TEST: abri voiture
TEST: sans escale
TEST: chaîner stéréo
TEST: complexe multisalle
TEST: argent comptant
TEST: papier-cache adhésif
TEST: juste-à-temps
TEST: c’est bien dommage
TEST: vol nolisé
TEST: jeu de guerre
TEST: surf des neiges
TEST: très sec
TEST: planche à roulette
TEST: commerce interentreprises
TEST: régler la note
TEST: poste à poste
TEST: golf miniature
TEST: capitaux flottants
TEST: retour en vogue
TEST: concepteur de jeux
TEST: société de participation
TEST: manche à balai
TEST: entreprise conjointe
TEST: gaffe de tournage
TEST: piratage téléphonique
TEST: Le cinéma à domicile est un phénomène nouveau.
TEST: Les livres électroniques sont difficiles à lire.
TEST: Il fait une séance de rencontres éclair.
TEST: Il fait un logiciel gratuit.
TEST: Il fait un logiciel publicitaire.
TEST: Il fait du référencement abusif.
TEST: Il fait du hameçonnage.
TEST: Il fait du pollupostage.
TEST: plutôt mourir
TEST: logiciel malveillant
TEST: logiciel harcelant
TEST: commerce électronique
TEST: bailleur de fonds
TEST: dernière commande
TEST: en attente.
TEST: assurance inconditionnelle.
TEST: acier inoxydable.
TEST: fermeture à glissière.
TEST: briseur de grève.
TEST: grand format.
TEST: en mer
TEST: Usain Bolt est un athlète jamaïcain.
TEST: spectacle fastueux.
TEST: Il parle de rythme.
TEST: Il parle des soldes d’après Noël.
TEST: liste de contrôle
TEST: p. ex.
TEST: vente forcée
TEST: voitures de location
TEST: location de voitures
TEST: en souffrance.
TEST: combinaison isolante.
TEST: tourniquet d’arrosage.
TEST: simple député
TEST: sac à restes
TEST: tondeuse à cheveux.
TEST: bilan de santé
TEST: retour en arrière
TEST: emballage de six
TEST: Le capitaine Haddock est l’ami de Tintin.
TEST: dans ce cas, il est certain
TEST: et ce,
TEST: Par-ci par-là.
TEST: eh,
TEST: eh bien,
TEST: Je l’ai vu ici même hier.
TEST: Des impressions recto verso.
TEST: La bouteille est aux deux tiers pleine.
TEST: Un trois-quarts de rugby.
TEST: Les trois-quarts de l’équipe de rugby.
TEST: La bouteille est aux trois quarts pleine.
TEST: Un trois-quarts de rugby.
TEST: S’il te plaît, dessine-moi un mouton.
TEST: Il y a un va-et-vient dans cette maison.
TEST: Les états-majors ont décidé.
TEST: Avez-vous le tout-à-l’égout ?
TEST: C’est un va-nu-pieds.
TEST: Elle est la vice-présidente.
TEST: J’habite au rez-de-chaussée.
TEST: Je m’appelle Jean-Marc.
TEST: Je m’appelle Pierre-Yves.
TEST: Je m’appelle Charles-Édouard.
TEST: Je m’appelle Marie-Laure.
TEST: Je m’appelle Anne-Sophie.
TEST: Mon grand-père a 100 ans.
TEST: J’ai ouï-dire qu’il ne viendra pas.
TEST: C’est un chef-d’œuvre.
TEST: Il habite en Franche-Comté.
TEST: Il habite à Clermont-Ferrand.
TEST: Le massif du Mont-Blanc.
TEST: Le mont Blanc est le point culminant des Alpes.
TEST: Un trait d’union.
TEST: J’ai la quasi-certitude qu’il ne viendra pas.
TEST: Je suis quasi certain qu’il ne viendra pas.
TEST: Une fin de non-recevoir.
TEST: Non merci.
TEST: Je me demande s’il avait ou non conscience que son arme était chargée.
TEST: etc.
TEST: Un écrivain du XIXe siècle
TEST: La 2e à droite
TEST: Les 2es.
TEST: Les 2des.
TEST: Le 2d.
TEST: Je me sens chez moi dans ton chez-toi.
TEST: Mon ex-femme habite près de chez moi.
TEST: La procédure est semi-automatique.
TEST: Je pense qu’il ment.
TEST: Je m’étais perdu.
TEST: La lettre l est mal écrite.
TEST: La variable x est constante.
TEST: Moody’s a abaissé la note de la dette du Japon.
TEST: Le vainqueur du 100 m aurait triché.
TEST: Ces deux interactions, respectivement 10-15 m et 10-18 m expliquent les difficultés expérimentales rencontrées.
TEST: Il n’arrive jamais à l’heure.
TEST: L’histoire.
TEST: Un livre d’histoire et géographie.
TEST: La vitamine D ou la vitamine C.
TEST: Ils ont beaucoup d’enfants.
TEST: Un chef-d’œuvre
TEST: Va-t’en d’ici.
TEST: Ils ont beaucoup d’enfants.
TEST: Pressez la touche “c” pour continuer.
TEST: J’ai reçu des fleurs pour la Saint-Valentin.
TEST: J’ai un chien, un chat, un lapin, etc.
TEST: parce que
TEST: redoubler une année
TEST: Je me rappelle ce moment.
TEST: J’ai reçu le rappel de la facture.
TEST: Je me rappelle de quelle manière il a dit cela.
TEST: Il faut lui rappeler de refaire tout cela.
TEST: Il faut lui rappeler de me téléphoner.
TEST: Tu te rappelles de moi ?
TEST: Elle me rappelle de me rendre à la banque.
TEST: Cela me rappelle de loin mon enfance.
TEST: Je me rappelle de moins en mois mon enfance.
TEST: Je me rappelle de temps en temps mon enfance.
TEST: Je vais te rappeler de suite.
TEST: Rappelé de Paris auprès de son père.
TEST: Je me rappelle Anne.
TEST: Je me souviens d’Anne.
TEST: Il faut lui rappeler d’envoyer la lettre.
TEST: Tu te rappelles d’eux ?
TEST: Il rappelle d’ailleurs que ce lieu peut être légendaire.
TEST: Je ne me rappelle pas ce moment.
TEST: Je me rappelle de quelle manière il a dit cela.
TEST: Je dois me rappelle de tout ranger.
TEST: Ils se rappellent bien de moi.
TEST: Je me rappelle bien Anne.
TEST: Je me rappelle toujours d’allumer la lumière.
TEST: Ils se rappellent bien d’elle.
TEST: T’es-tu décidé ou non ?
TEST: T’es-tu décidé ou non ?
TEST: Il va chez le coiffeur tous les mois.
TEST: Il est arrivé à pied.
TEST: Il a sauté à pieds joints.
TEST: Il a pied dans ce bassin.
TEST: Je n’ai pas pied dans ce bassin.
TEST: L’entreprise l’a mis à pied.
TEST: Le projet que j’ai mis sur pied est en bonne voie.
TEST: Il s’est habillé de pied en cap comme un militaire.
TEST: Je l’attends de pied ferme.
TEST: Il travaille d’arrache-pied sur ce projet.
TEST: Le chiffre d’affaires de l’entreprise.
TEST: La défaite s’ensuivit.
TEST: la damer
TEST: loin de là
TEST: favoriser une candidature
TEST: aussi mauvais
TEST: savoir gré
TEST: Le contrat est négocié de gré à gré.
TEST: accaparer quelque chose
TEST: assieds-toi.
TEST: asseyez-vous.
TEST: n’être pas sans savoir.
TEST: Je ne suis pas sans savoir
TEST: J’ai de la fièvre ?
TEST: J’ai la fièvre ?
TEST: As-tu la fièvre ?
TEST: As-tu de la fièvre ?
TEST: L’échappée belle d’un coureur cycliste.
TEST: à motocyclette.
TEST: asseoir.
TEST: ne me contredisez pas.
TEST: effectif scolaire.
TEST: effectif étudiant.
TEST: moins mauvais.
TEST: à Lac-Beauport.
TEST: bran de scie.
TEST: à Cap-de-la-Madeleine.
TEST: lire dans le journal.
TEST: rue passante.
TEST: artère passante.
TEST: avenue passante.
TEST: boulevard passant.
TEST: L’ère glaciaire.
TEST: tâcher que
TEST: À l’aimable attention de
TEST: Un cadeau à l’intention de ma femme.
TEST: c’est de lui que je parle
TEST: Les métaux précieux et l’or en particulier restent des investissements sûrs.
TEST: par acquit de conscience.
TEST: faire partie de
TEST: tirer parti
TEST: prendre parti
TEST: J’ai pris une partie de l’argent.
TEST: Le site a été en partie traduit.
TEST: Il s’est transformé en parti politique.
TEST: Il arrive en général assez tard.
TEST: faire affaire avec
TEST: tenir pour acquis
TEST: Il est en pleine campagne électorale.
TEST: Tant pis si je perds.
TEST: Les choses vont de mal en pis.
TEST: Finalement, il a gagné.
TEST: Au final de cette sonate.
TEST: Il a pulvérisé le record.
TEST: Ils ont fait exploser le pont.
TEST: papillon adhésif
TEST: mouchoir de papier
TEST: Mars était le dieu de la guerre.
TEST: Février est le mois le plus froid.
TEST: La monarchie de Juillet.
TEST: Cette année, juin a été chaud.
TEST: Juin est le sixième mois.
TEST: Je suis né le 30 mars 1960.
TEST: La planète Mars est rouge.
TEST: Dans la mythologie romaine, Mars est le dieu de la guerre.
TEST: Je viendrai lundi.
TEST: Lundi est le premier jour de la semaine.
TEST: Je parle anglais, mais je ne suis pas Anglais.
TEST: Il est surpris d’apprendre que le Japonais est incapable de le comprendre.
TEST: Les Bretons parlent aux Français.
TEST: Napoléon est né en Corse.
TEST: Je travaille en anglais avec des Anglais.
TEST: Je travaille en anglais avec des Anglaises.
TEST: Même les Français ont un français qui est loin d’être parfait.
TEST: Écrit dans un anglais facile
TEST: Le numéro un français a gagné à Roland-Garros aujourd’hui.
TEST: Il s’est exprimé dans un français approximatif.
TEST: Une leçon de français.
TEST: J’ai appris un peu de français ici et là.
TEST: Une invasion de troupes soviétiques.
TEST: Le clocher de l’église
TEST: En fonction de l’état quantique de l’électron.
TEST: Oui…
TEST: Vous vous parlez.
TEST: Il est capable de te faire faire des choses surprenantes.
TEST: En en demandant deux
TEST: C’est donnant donnant
TEST: L’est est de ce côté.
TEST: Les poules du couvent couvent.
TEST: Un film un peu olé olé.
TEST: Je suis allé à Bora Bora.
TEST: Les chiens aboient à qui mieux mieux.
TEST: De l’orge perlé.
TEST: De l’orge mondé.
TEST: Il vous faut un laissez-passer.
TEST: Le courant est d’un demi-nœud.
TEST: Un signal de 3,5 Hz.
TEST: L’appareil a consommé 5 kW·h.
TEST: L’appareil a consommé 5 kWh.
TEST: Une température de 3 kelvins.
TEST: Un courant de 10 ampères.
TEST: Un courant de dix ampères.
TEST: Il a remporté la médaille Fields.
TEST: Jeudi 28 août 2014.
TEST: Dimanche 14 septembre 2014.
TEST: Le dimanche 19 juil 2015.
TEST: Le dimanche 19 juillet 2015.
TEST: Jeudi 28/08/2014.
TEST: Jeudi 2014/08/28.
TEST: Jeudi 28-08-2014.
TEST: Il est né le 31 octobre.
TEST: Il est né le 30 septembre.
TEST: Il est né le 31/10/1969.
TEST: Il est né le 31-8-69.
TEST: Il est né le 31-aout-1969.
TEST: Il est né le 28 février.
TEST: Il est né le 28-02-1969.
TEST: Le 29 février 2000.
TEST: Le 29/février/2000.
TEST: Le 29/02/2000.
TEST: Le 29/2/2000.
TEST: Le 29 février 2004.
TEST: Le 29 février 2008.
TEST: Le 29 février 2012.
TEST: Le 29 février 2016.
TEST: Le 29 février 2020.
TEST: Le 29-février-2004
