Grammalecte  Check-in [63e9ff5982]

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:[fr] faux positifs et ajustements
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk | fr
Files: files | file ages | folders
SHA3-256:63e9ff5982c02268ea04c667f58dd9ed9ce4147d50dba7029f15616fb5b42e27
User & Date: olr 2019-08-31 13:50:17
Context
2019-08-31
13:50
[fr] phonet_simil: taf / taffe check-in: b02e18192d user: olr tags: fr, trunk
13:50
[fr] faux positifs et ajustements check-in: 63e9ff5982 user: olr tags: fr, trunk
2019-08-30
09:45
[graphspell] tokenizer: consider presqu’ and quelqu’ as separate words check-in: 0f0bc77645 user: olr tags: graphspell, trunk
Changes

Changes to gc_lang/fr/rules.grx.

1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
....
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
....
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
....
2120
2121
2122
2123
2124
2125
2126




2127
2128
2129
2130
2131
2132
2133
....
2140
2141
2142
2143
2144
2145
2146




2147
2148
2149
2150
2151
2152
2153
....
2227
2228
2229
2230
2231
2232
2233






















2234
2235
2236
2237
2238
2239
2240
....
3679
3680
3681
3682
3683
3684
3685
3686
3687
3688
3689
3690
3691
3692
3693
....
3694
3695
3696
3697
3698
3699
3700

3701
3702
3703
3704
3705
3706
3707
....
9181
9182
9183
9184
9185
9186
9187
9188
9189
9190
9191
9192
9193
9194
9195
....
9196
9197
9198
9199
9200
9201
9202
9203
9204
9205
9206
9207
9208
9209
9210
.....
10838
10839
10840
10841
10842
10843
10844

10845
10846
10847
10848
10849
10850
10851
.....
11104
11105
11106
11107
11108
11109
11110

11111
11112
11113
11114
11115
11116
11117
.....
12401
12402
12403
12404
12405
12406
12407

12408
12409
12410
12411
12412
12413
12414
.....
12707
12708
12709
12710
12711
12712
12713
12714
12715
12716
12717
12718
12719
12720
12721
.....
13397
13398
13399
13400
13401
13402
13403

13404
13405
13406
13407
13408
13409
13410
.....
13434
13435
13436
13437
13438
13439
13440

13441
13442
13443
13444
13445
13446
13447
.....
13702
13703
13704
13705
13706
13707
13708

13709
13710
13711
13712
13713
13714
13715
.....
14637
14638
14639
14640
14641
14642
14643
14644
14645
14646
14647
14648
14649
14650
14651
.....
14831
14832
14833
14834
14835
14836
14837
14838
14839
14840
14841
14842
14843
14844
14845
14846
14847
14848
14849
14850
14851
14852
14853
14854
14855
14856
14857
14858
14859
14860
14861

14862
14863
14864
14865
14866
14867
14868
.....
17928
17929
17930
17931
17932
17933
17934

17935
17936
17937
17938
17939
17940
17941
.....
18956
18957
18958
18959
18960
18961
18962
18963
18964
18965
18966
18967
18968
18969
18970
.....
18977
18978
18979
18980
18981
18982
18983

18984
18985
18986
18987
18988
18989
18990
.....
19604
19605
19606
19607
19608
19609
19610
19611
19612
19613
19614
19615
19616
19617
19618
.....
19619
19620
19621
19622
19623
19624
19625
19626
19627
19628
19629
19630
19631
19632
19633
.....
19634
19635
19636
19637
19638
19639
19640
19641
19642
19643
19644
19645
19646
19647
19648
.....
19650
19651
19652
19653
19654
19655
19656
19657
19658
19659
19660
19661
19662
19663
19664
.....
19684
19685
19686
19687
19688
19689
19690

19691
19692
19693
19694
19695
19696
19697
.....
23408
23409
23410
23411
23412
23413
23414

23415
23416
23417
23418
23419
23420
23421
TEST: Assis, gronde{{-t -}}elle                         ->> -t-
TEST: vient-il demain ?
TEST: prend-elle l’avantage ?
TEST: saura-t-on jamais la vérité ?
TEST: arrive-t-elle ce matin ?
TEST: y aura-t-il du poulet au dîner ?


!!!! Élisions                                                                                     !!

# presque : élision
__[i>/typo(typo_presque)__
    (presqu[’'])(?![îi]le)  @@0
        <<- -1>> "presque "                                             # Pas d’élision autorisée sur “presque”, sauf avec “presqu’île”.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=1745

TEST: {{Presqu’}}exclusivement bâtie en pierre.
TEST: C’est une presqu’île.
TEST: Cette presqu’ile est particulièrement venteuse.


# quelque : élision
__[i>/typo(typo_quelque)__
    (quelqu[’'])(?!une?)  @@0
        <<- -1>> "quelque "                                             # Pas d’élision autorisée sur “quelque”, sauf avec “quelqu’un” ou “quelqu’une”.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=1745

TEST: {{Quelqu’}}absurde que ce soit, il faut y céder.
TEST: quelqu’un vient.
TEST: elle s’en est allée avec quelqu’une…



@@@@
@@@@
@@@@
@@@@
@@@@GRAPH: purge_tag_disambiguate                                                                  _
................................................................................

    <start>  $:M  @:(?:[123]s|Ov)¬:A
        <<- =>> =select(\2, ":M")

    [que|qu’|combien|pourquoi|qui|quand|où]  ?[en|y]¿  *WORD
        <<- =>> exclude(\-1, ":E")

    [<start>|,]  quelqu’un  *WORD
        <<- =>> exclude(\3, ":N")

    >falloir [>pouvoir|>savoir|>vouloir|>manger|>conseiller]
        <<- =>> exclude(\2, ":N")


__da_été__
    >avoir été
................................................................................
    l’ [un|une]  *WORD
        <<- not value(\3, "|plus|") =>> select(\3, ":[123][sp]")

    [des|chaque|quelque|quelques|cet|cette|ces|mon|ma|ta|sa|mes|tes|ses|au|aux|notre|votre|nos|vos|leurs|aucun|aucune]  *WORD
        <<- =>> exclude(\2, ":V")

    [un|une]  *WORD
        <<- not value(<1, "|l’|") and not value(\2, "|a|fut|fût|est|") and not morph(\2, ":P") =>> exclude(\2, ":V")

    [une|le|la|les|des|chaque|quelque|quelques|cet|cette|ces|ma|ta|sa|mes|tes|ses|au|aux|notre|votre|nos|vos|leurs] personne
        <<- =>> select(\-1, ":N")

    de  [la|l’]  $:¬:Y
        <<- not value(<1, "|semblant|") =>> exclude(\3, ":V")

................................................................................
        <<- morph(\-1, ":[NA]") ~1:3>> ␣

    alors    [que|qu’]
    dès lors [que|qu’]
        <<- ~>> ␣
        <<- =>> define(\1, [":Cs"])






__fusions_noms_communs__
    au revoir
        <<- ~>> ␣
        <<- =>> define(\1, [":N:m:i"])

    n’ importe [qui|quoi|quel|quelle|quels|quelles|où]
................................................................................
    black [>bloc|>block]
    machine [learning+s]
    nec plus ultra
    standing >ovation
    star [system+s]
        <<- ~>> ␣





    *NUM : *NUM
        <<- space_after(\1, 0, 0) and space_after(\1, 0, 0) ~>> ␣

    *NUM  ~^h[0-9][0-9]$
        <<- space_after(\1, 0, 0) ~>> ␣


................................................................................
!!!! Noms composés                                                                                !!

__tag_noms__
    ~\w-là$
        <<- />> -là
        <<- =>> =define_from(\1, 0, -3)

























!!
!!
!!!! Verbes composés                                                                              !!
!!
!!
................................................................................
!!!! Traits d’union                                                                               !!
!!
!!

### ce / cet / cette / ces + nom + là
__tu_ce_cette_ces_nom_là_ci__
    [ce|cet|cette|ces] *WORD [là|ci]
        <<- /tu/ morph(\2, ":[NB]") and not value(>1, "|où|") -2:3>> \2-là      # Il manque probablement un trait d’union.

    [ce|cet|cette|ces] *WORD la [<end>|,]
        <<- /tu/ morph(\2, ":[NB]") -2:3>> \2-là                                # Il manque probablement un trait d’union.

    [ce|cet|cette|ces] *WORD si [<end>|,]
        <<- /tu/ morph(\2, ":[NB]") -2:3>> \2-ci                                # Il manque probablement un trait d’union.

................................................................................
TEST: à ce {{moment là}}                                                        ->> moment-là
TEST: Il faisait froid cet {{hiver la}}.                                        ->> hiver-là
TEST: Ces {{trois là}} sont incollables.
TEST: Je connais bien cette {{sensation là}}.
TEST: Cette {{voiture si}}, c’est celle-là que je veux.
TEST: ce que je veux c’est ce {{véhicule ci}}
TEST: Laisse ce chiot là où il est !



### Préfixes
__tu_préfixe_ex__
    ex  $:N¬*
        <<- /tu/ not value(\2, "|aequo|nihilo|cathedra|absurdo|abrupto|")
        ->> ex-\2                                                           # S’il s’agit d’un seul mot, il manque un trait d’union.
................................................................................
TEST: Qu’elle avait été accueillie avec joie.


__conf_quelle_qu_elle__
    quelle  [ne|n’|me|m’|te|t’|se|s’|nous|vous|le|la|l’|les|lui|leur|en|y]
        <<- /conf/ not (value(\2, "|en|ne|")  and morph(>1, ":V0e")) -1>> qu’elle                   # Confusion. Le sujet “elle” doit être séparée de la conjonction “que”.

    quelle  @:V¬:[NA].*:[fe]|>(?:être|plus)/
        <<- /conf/ \2.islower() and not (morph(\2, ">(?:pouvoir|devoir|aller)/") and (morph(>1, ":V0e") or morph(>2, ":V0e"))) and not (morph(\2, ":V0a") and value(>1, "|été|"))
        -1>> qu’elle                                                                                # Confusion. Le sujet “elle” doit être séparée de la conjonction “que”.

TEST: {{Quelle}} y vienne, on verra ce qu’elle vaut.
TEST: {{Quelle}} a du répondant, cette gamine !
TEST: {{Quelle}} partit prendre son repas à la cantine, je n’en avais cure.
TEST: Il se plaint {{quelle}} ne nous dit rien.
................................................................................
TEST: {{Quelle}} l’apprenne un jour, on n’y peut rien.
TEST: Je crois {{quelle}} n’en sait pas assez pour nous nuire.


    quelles [ne|n’|me|m’|te|t’|se|s’|nous|vous|le|la|l’|les|lui|leur|en|y]
        <<- /conf/ not (value(\2, "|en|ne|") and morph(>1, ":V0e")) -1>> qu’elles                   # Confusion. Le sujet “elles” doit être séparée de la conjonction “que”.

    quelles @:V¬:[NA].*:[fe]|>(?:être|plus)/
        <<- /conf/ \2.islower() and not (morph(\2, ">(?:pouvoir|devoir|aller)/") and (morph(>1, ":V0e") or morph(>2, ":V0e"))) and not (morph(\2, ":V0a") and value(>1, "|été|"))
        -1>> qu’elles                                                                               # Confusion. Le sujet “elles” doit être séparée de la conjonction “que”.

TEST: Je veux {{quelles}} s’efforcent à y parvenir.
TEST: {{Quelles}} t’arrivent seulement à la cheville, voilà qui serait étonnant.
TEST: {{Quelles}} m’engueulent encore une seule fois et elles vont le regretter.
TEST: {{Quelles}} viennent et qu’on en finisse.
................................................................................
    à l’ occasion
    à l’ ordre du jour
    à l’ un d’ entre eux
    à l’ unanimité
    à l’ unisson
    à l’ une d’ entre elles
    à l’ échelle [nationale|mondiale|régionale|départementale|cantonale|locale|galactique|universelle]

    à l’ évidence
    à l’ œil nu
    à l’ [un|une] des leurs
    à la [bourre|con|coule|dérobée|diable|fois|leur|manque|mords-moi-le-nœud|papa|ramasse|renverse|redresse|rescousse|sauvette|volée]
    à la bonne franquette
    à la limite du supportable
    à la lumière de tout [ceci|cela|ça]
................................................................................
    comme bon [me|te|lui|leur|nous|vous] semble
    comme au bon vieux temps
    comme cul et chemise
    comme [frappé|frappée|frappés|frappées] par la foudre
    comme n’ importe où ?ailleurs¿
    comme par [enchantement|magie]
    comme par un fait exprès

    comme peau de chagrin
    comme promis
    comme qui dirait
    comme si [de|d’] rien n’ était
    contrairement aux apparences
    contre mauvaise fortune ?,¿ bon cœur
    contre nature
................................................................................
    >chasse à l’ homme
    >chasse d’ eau
    >chasseuse [de|d’] primes
    >chemin [de|d’] [traverse|fer]
    >chemise sans >manche
    >chèque sans provision
    >chili con carne

    >claire comme [de|d’] l’ eau [de|d’] [boudin|roche|source]
    >claire comme du cristal
    >claire comme jus [de|d’] [boudin|>chaussette|chique]
    [>clé|>clef] à molette
    >clin d’ œil
    >code [de|d’] bonne conduite
    >commise d’ office
................................................................................
    blond   [argenté|platine]
    gris    [acier|anthracite|argenté|fer|perle|souris]
    jaune   [canari|citron|doré|maïs|paille|sable]
    noir    [de|d’] [encre|jais]
    noir    et blanc
    noir    sur blanc
    rose    [bonbon|chair|corail]
    rouge   [anglais|brique|cardinal|carmin|cerise|coquelicot|écarlate|feu|fraise|grenat|groseille|incarnat|indien|rubis|sang|sanguin|tomate|vermeille|vermillon]
    vert    [bouteille|céladon|émeraude|épinard|impérial|lichen|olive|perroquet|pistache|poireau|pomme|prairie|printemps|sapin|sauge|tilleul]
    couleur sable
        <<- morph(<1, ":[NA]", ":D") ~>> *
        <<- __else__ and morph(<1, ":D|>(?:être|devenir|redevenir|rester|sembler|demeurer|para[îi]tre)") ~>> ␣
        <<- __also__ =>> define(\1, [":A:e:i"])


................................................................................
    >faire amende honorable
    >faire bande à part
    >faire bon accueil
    >faire bonne figure
    >faire chou blanc
    >faire copain copain
    >faire de [mon|ton|son|notre|votre|leur] mieux

    >faire front commun
    >faire grise mine
    >faire grand [bruit|cas]
    >faire ?[bonne|excellente|grande|mauvaise]¿ impression
    >faire long feu
    >faire [machine|marche] arrière
    >faire main basse
................................................................................
    [>mettre|>remettre] l’ [écart|épreuve]
    [>mettre|>remettre] au [point|pas]
    [>mettre|>remettre] en [avant|branle|bouche|demeure|garde|jeu|lumière|mouvement|œuvre|place|scène|terre]
    [>mettre|>remettre] de côté
    >mourir jeune
    [>naître|>naitre] de la dernière pluie
    [>naître|>naitre] sous x

    >partir en vrille
    >percer à jour
    >perdre [connaissance|conscience|patience|raison]
    >perdre d’ avance
    >piquer au vif
    >porter [assistance|atteinte|bonheur|caution|chance|malheur|plainte|préjudice|secours]
    >poser problème
................................................................................
TEST: l’accusation de lynchage médiatique proférée par François de Clermont à l’encontre de “Marianne” ne tient pas.
TEST: La poïesis, en grec, est ce qui permet de faire passer n’importe quoi du non-être à l’être
TEST: un moteur nouvelle génération
TEST: La première est la critique dite artiste
TEST: la critique conduit nombre de protestataires à se replier sur des modalités de défense efficaces dans le passé mais désormais largement inadaptées
TEST: Tu crois que Microsoft peut contraindre les projets libres à quoi que ce soit ?
TEST: « L’école produit la norme en matière de langage »




@@@@
@@@@
@@@@
@@@@
................................................................................
        <<- /gn/ __also__ and hasFemForm(\2)                                    -2>> =suggFemSing(\2, True)     # Accord de genre erroné : « \1 » est féminin.

TEST: {{Quelle}} homme.                                       ->> Quel
TEST: {{Quelle}} {{folles}}
TEST: {{Quelle}} {{chien}}
TEST: {{Quelle}} {{chats}}
TEST: Quelle sale journée…


__gn_quelles_1m!8__
    quelles  *WORD
        <<- /gn/ morph(\2, ":[NA].*:m:s", ":(?:V0|Oo|[NA].*:[fe]:[pi])")        -1>> quel                       # Accord de genre et de nombre erroné. « \2 » est masculin et au singulier.
        <<- /gn/ __also__ and hasFemForm(\2)                                    -2>> =suggFemPlur(\2, True)     # Accord de genre et de nombre erroné : « \1 » est féminin et au pluriel.
        <<- /gn/ morph(\2, ":[NA].*:f:s", ":(?:V0|Oo|[NA].*:[fe]:[pi])")        -1>> quelle                     # Accord de nombre erroné : « \2 » est au singulier.
        <<- /gn/ __also__                                                       -2>> =suggPlur(\2)              # Accord de nombre erroné : « \1 » est au pluriel.
................................................................................
TEST: les quelque 2,5 millions d’habitants
TEST: les quelque 12 000 stations-service


## Nombres
__gn_nombre_lettres_1m__
    $:B:e:p  *WORD
        <<- /gn/ not value(\1, "|neuf|mille|") and ( (morph(\2, ":[NA].*:s", "*") and not value(\2, "|janvier|février|mars|avril|mai|juin|juillet|août|aout|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|") )
            or \2 in aREGULARPLURAL) and not re.search("^[IVXLDM]+$", \1)
        -2>> =suggPlur(\2)                                                                  # Accord de nombre erroné avec « \1 » : « \2 » devrait être au pluriel.

    neuf  *WORD
        <<- /gn/ ( morph(\2, ":[NA].*:s", "*") and not morph(<1, ":N.*:m:[is]") and not value(\2, "|janvier|février|mars|avril|mai|juin|juillet|août|aout|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|") )
            or \2 in aREGULARPLURAL
        -2>> =suggPlur(\2)                                                                  # Accord de nombre erroné avec « \1 » : « \2 » devrait être au pluriel.

    mille  *WORD
        <<- /gn/ (morph(\2, ":[NA].*:s", "*") or \1 in aREGULARPLURAL) and not value(<1, "|le|un|ce|du|")
        -2>> =suggPlur(\2)                                                                  # 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.        ->> idiots
TEST: Il a abandonné neuf {{enfant}}.                                               ->> enfants
TEST: On peut trouver mille {{travailleur}} d’un claquement de doigts.              ->> travailleurs
TEST: Il y a quatre cents {{mot}} dans la phrase.                                   ->> mots
TEST: cent {{mot}}                                                                  ->> mots
TEST: cinquante {{mot}}                                                             ->> mots
TEST: mille cinquante {{mot}}                                                       ->> mots
TEST: deux {{tête}}                                                                 ->> têtes
TEST: un logement neuf bâti par des professionnels.
TEST: un mille marin.
TEST: L’article VII mentionné dans la revue



__gn_nombre_chiffres_1m__
    [0|1|01]  @:[NAQ].*:p¬*
        <<- /gn/ space_after(\1, 1, 1) and not value(\2, "|Rois|Corinthiens|Thessaloniciens|")
        -2>> =suggSing(\2)                                                                  # Accord de nombre erroné : « \1 » devrait être au singulier.

................................................................................
TEST: l’idée consiste à la lui donner sans contrepartie et voir ce qu’il en fera.
TEST: à leur plus grand fils, ils ont offert une voiture.
TEST: ça va d’autonome à hautement dépendant
TEST: à lui donner trop d’importance, on façonne notre ennemi
TEST: la pression entre les membres à un moment devient trop importante
TEST: Macron saisit la discorde avec le Brésil pour s’opposer à l’embarrassant accord
TEST: Je vous renvoie pour cela à l’excellent documentaire



__infi_loc_à_verbe__
    de manière à            ~..(?:ée?s?|ez)$
    du mal à                ~..(?:ée?s?|ez)$
    intérêt à               ~..(?:ée?s?|ez)$
        <<- /infi/ morph(\-1, ":V", ":M") and not (\-1.endswith("ez") and value(>1, "|vous|"))
................................................................................
TEST: elles ne s’y étaient pas {{donnée}}.
TEST: sans fin elles se sont succédé


__ppas_se_être__
    [me|m’|te|se|s’]  ?[y|en]¿  >être  *WORD
        <<- /ppas/ morph(\-1, ":(?:Y|[123][sp])", ":[QA]") --1>> =suggVerbPpas(\-1)                 # Incohérence. Après « s’être », le verbe doit être un participe passé.
        <<- /ppas/ __else__ and morph(\-2, ":[123]s") and morph(\-1, ":Q.*:p") and not before("(?i)\\bqu[e’][, ]|\\bon (?:ne |)$")
        --1>> =suggSing(\-1)                                                                        # Le participe passé devrait être au singulier.

    tu  t’  ?[y|en]¿  [es|étais|seras|serais|fus|fusses]  *WORD
        <<- /ppas/ morph(\-1, ":(?:Y|[123][sp])", ":[QA]") --1>> =suggVerbPpas(\-1)                 # Incohérence. Après « s’être », le verbe doit être un participe passé.

TEST: s’être toujours {{donner}} le mot.
TEST: je suis venu et me suis totalement {{donnés}} à cette œuvre
................................................................................
TEST: tu t’en es {{foutait}} autant que possible.
TEST: elles se sont dit : « Allons-y ».
TEST: On s’est rencontrées lorsqu’on travaillait là-bas.
TEST: des soins que je m’étais donnés.
TEST: Si t’es pas contente, t’achètes pas.
TEST: t’étais vraiment cinglé à cette époque.
TEST: il m’était évident que cette mission était à durée déterminée



## se rendre compte
__ppas_s_être_rendu_compte__
    >être  rendu  compte
        <<- !2:3>>
        <<- ~2:3>> _
................................................................................
        || [être|devenir|redevenir|rester|paraître|paraitre|sembler]                                                    *WORD
    [<start>|,|$:Cs]  [un|le|ce|cet]                    (*WORD)  ?qui¿  ?[ne|n’]¿
        || ([>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir])
        || être [devenu+e|redevenu+e|resté+e|demeuré+e]                                                                 *WORD
    [<start>|,|$:Cs]  [un|le|ce|cet]                    (*WORD)  ?qui¿  ?[ne|n’]¿
        || ([>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir])
        || avoir [été|semblé|paru]                                                                                      *WORD
        <<- /ppas/ morph(\1, ":[NA].*:[me]", ":[GWf]") and morph(\-1, ":A.*:f", ":[GWme]") and (morph(\2, ":[123]s") or (not tag(\1, "enum") and morph(\2, ":P")))
        --1>> =switchGender(\-1)                                                                    # Accord erroné : “\1” et “\-1” ne sont pas accordés en genre.

    [<start>|,|$:Cs]  [une|la|ma|ta|sa|cette]           (*WORD)  ?qui¿  ?[ne|n’]¿  ([>être|>sembler|>devenir|>rester|>demeurer|>redevenir|>paraître|>paraitre])             *WORD
    [<start>|,|$:Cs]  [une|la|ma|ta|sa|cette]           (*WORD)  ?qui¿  ?[ne|n’]¿  (>avoir) [été|semblé|paru]                                                               *WORD
    [<start>|,|$:Cs]  [une|la|ma|ta|sa|cette]           (*WORD)  ?qui¿  ?[ne|n’]¿  ([>être|>sembler])  [devenu+e|redevenu+e|resté+e|demeuré+e]                              *WORD
    [<start>|,|$:Cs]  [une|la|ma|ta|sa|cette]           (*WORD)  ?qui¿  ?[ne|n’]¿
        || ([>aller|>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir])
................................................................................
        || [être|devenir|redevenir|rester|paraître|paraitre|sembler]                                                    *WORD
    [<start>|,|$:Cs]  [une|la|ma|ta|sa|cette]           (*WORD)  ?qui¿  ?[ne|n’]¿
        || ([>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir])
        || être [devenu+e|redevenu+e|resté+e|demeuré+e]                                                                 *WORD
    [<start>|,|$:Cs]  [une|la|ma|ta|sa|cette]           (*WORD)  ?qui¿  ?[ne|n’]¿
        || ([>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir])
        || avoir [été|semblé|paru]                                                                                      *WORD
        <<- /ppas/ morph(\1, ":[NA].*:[fe]", ":[GWm]") and morph(\-1, ":A.*:m", ":[GWfe]") and (morph(\2, ":[123]s") or (not tag(\1, "enum") and morph(\2, ":P")))
        --1>> =switchGender(\-1)                                                                    # Accord erroné : “\1” et “\-1” ne sont pas accordés en genre.

    [<start>|,|$:Cs]  [l’|mon|ton|son|notre|votre|leur] (*WORD)  ?qui¿  ?[ne|n’]¿  ([>être|>sembler|>devenir|>rester|>demeurer|>redevenir|>paraître|>paraitre])             *WORD
    [<start>|,|$:Cs]  [l’|mon|ton|son|notre|votre|leur] (*WORD)  ?qui¿  ?[ne|n’]¿  (>avoir) [été|semblé|paru]                                                               *WORD
    [<start>|,|$:Cs]  [l’|mon|ton|son|notre|votre|leur] (*WORD)  ?qui¿  ?[ne|n’]¿  ([>être|>sembler])  [devenu+e|redevenu+e|resté+e|demeuré+e]                              *WORD
    [<start>|,|$:Cs]  [l’|mon|ton|son|notre|votre|leur] (*WORD)  ?qui¿  ?[ne|n’]¿
        || ([>aller|>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir])
................................................................................
        || [être|devenir|redevenir|rester|paraître|paraitre|sembler]                                                    *WORD
    [<start>|,|$:Cs]  [l’|mon|ton|son|notre|votre|leur] (*WORD)  ?qui¿  ?[ne|n’]¿
        || ([>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir])
        || être [devenu+e|redevenu+e|resté+e|demeuré+e]                                                                 *WORD
    [<start>|,|$:Cs]  [l’|mon|ton|son|notre|votre|leur] (*WORD)  ?qui¿  ?[ne|n’]¿
        || ([>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir])
        || avoir [été|semblé|paru]                                                                                      *WORD
        <<- /ppas/ ((morph(\1, ":[NA].*:f", ":[GWme]") and morph(\-1, ":A.*:m", ":[GWfe]")) or (morph(\1, ":[NA].*:m", ":[GWfe]") and morph(\-1, ":A.*:f", ":[GWme]")))
            and (morph(\2, ":[123]s") or (not tag(\1, "enum") and morph(\2, ":P")))
        --1>> =switchGender(\-1)                                                                    # Accord erroné : “\1” et “\-1” ne sont pas accordés en genre.

    [<start>|,|$:Cs]  [les|ces|mes|tes|ses|nos|vos|leurs|quelques|plusieurs]  (*WORD)  ?qui¿  ?[ne|n’]¿  ([>être|>sembler|>devenir|>rester|>demeurer|>redevenir|>paraître|>paraitre])                   *WORD
    [<start>|,|$:Cs]  [les|ces|mes|tes|ses|nos|vos|leurs|quelques|plusieurs]  (*WORD)  ?qui¿  ?[ne|n’]¿  (>avoir) [été|semblé|paru]                                                                     *WORD
    [<start>|,|$:Cs]  [les|ces|mes|tes|ses|nos|vos|leurs|quelques|plusieurs]  (*WORD)  ?qui¿  ?[ne|n’]¿  ([>être|>sembler])  [devenus|redevenus|restés|demeurés|devenues|redevenues|restées|demeurées]  *WORD
    [<start>|,|$:Cs]  [les|ces|mes|tes|ses|nos|vos|leurs|quelques|plusieurs]  (*WORD)  ?qui¿  ?[ne|n’]¿
................................................................................
        || [être|devenir|redevenir|rester|paraître|paraitre|sembler]                                                    *WORD
    [<start>|,|$:Cs]  [les|ces|mes|tes|ses|nos|vos|leurs|quelques|plusieurs]  (*WORD)  ?qui¿  ?[ne|n’]¿
        || ([>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir])
        || être [devenus|redevenus|restés|demeurés|devenues|redevenues|restées|demeurées]                               *WORD
    [<start>|,|$:Cs]  [les|ces|mes|tes|ses|nos|vos|leurs|quelques|plusieurs]  (*WORD)  ?qui¿  ?[ne|n’]¿
        || ([>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir])
        || avoir [été|semblé|paru]                                                                                      *WORD
        <<- /ppas/ ((morph(\1, ":[NA].*:f", ":[GWme]") and morph(\-1, ":A.*:m", ":[GWfe]")) or (morph(\1, ":[NA].*:m", ":[GWfe]") and morph(\-1, ":A.*:f", ":[GWme]"))) and morph(\2, ":(?:[123]p|P)")
        --1>> =switchGender(\-1)                                                                    # Accord erroné : “\1” et “\-1” ne sont pas accordés en genre.

    *WORD  [que|qu’]  [un|le|ce|cet|une|la|ma|ta|sa|cette|l’|mon|ton|son|notre|votre|leur|les|ces|mes|tes|ses|nos|vos|leurs|quelques|plusieurs]  *WORD  ?[ne|n’]¿
        || ([>affirmer|>croire|>déclarer|>désirer|>détester|>dire|>estimer|>imaginer|>penser|>préférer|>savoir|>souhaiter|>vouloir])
        || [être|devenir|redevenir|rester|paraître|paraitre|sembler]                                *WORD
    *WORD  [que|qu’]  [un|le|ce|cet|une|la|ma|ta|sa|cette|l’|mon|ton|son|notre|votre|leur|les|ces|mes|tes|ses|nos|vos|leurs|quelques|plusieurs]  *WORD  ?[ne|n’]¿
        || ([>affirmer|>croire|>déclarer|>désirer|>détester|>dire|>estimer|>imaginer|>penser|>préférer|>savoir|>souhaiter|>vouloir])
................................................................................
TEST: l’écolier qui ne croyait pas avoir été {{brillante}}
TEST: les femmes sont vraiment {{partis}}                                         ->> parties
TEST: les hommes ne sont pas tout à fait {{fâchées}}                              ->> fâchés
TEST: plusieurs invités qui ne sont pas {{contentes}}
TEST: les réunions sans cesse reportées qui sont {{annulés}}
TEST: les hommes croyant être {{instruites}}
TEST: Les tortures que ce journaliste pense être “normales”.



__ppas_nom_propre_être_accord_genre__
    [<start>|,|$:Cs]  ($:M)  ?qui¿  ?[ne|n’]¿  ([>être|>sembler|>devenir|>rester|>demeurer|>redevenir|>paraître|>paraitre])          *WORD
    [<start>|,|$:Cs]  ($:M)  ?qui¿  ?[ne|n’]¿  (>avoir) [été|semblé|paru]                                                            *WORD
    [<start>|,|$:Cs]  ($:M)  ?qui¿  ?[ne|n’]¿  ([>être|>sembler])  [devenu+e|redevenu+e|resté+e|demeuré+e]                           *WORD
    [<start>|,|$:Cs]  ($:M)  ?qui¿  ?[ne|n’]¿
................................................................................
TEST: Quel est le problème ? Je ne fais que ramener Paul à la raison.
TEST: La voir se fêler ainsi lui noua la gorge.
TEST: Quoi de neuf, mec ?
TEST: T’as enfin trouvé des gens avec qui t’entendre ?
TEST: ça fait du bien de se l’entendre dire
TEST: Laisse tomber, mec ! Pour qui tu te prends ?
TEST: il y avait souvent foule




!!! Tests historiques                                                                             !!

## Version 0.5.14
TEST: par le léger tissu de rayonne qui les protégeait en ce moment.







<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<







 







|
|







 







|







 







>
>
>
>







 







>
>
>
>







 







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







 







|







 







>







 







|







 







|







 







>







 







>







 







>







 







|







 







>







 







>







 







>







 







|







 







|




|




|













>







 







>







 







|







 







>







 







|







 







|







 







|







 







|







 







>







 







>







1699
1700
1701
1702
1703
1704
1705






















1706
1707
1708
1709
1710
1711
1712
....
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
....
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
....
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
....
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
....
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
....
3687
3688
3689
3690
3691
3692
3693
3694
3695
3696
3697
3698
3699
3700
3701
....
3702
3703
3704
3705
3706
3707
3708
3709
3710
3711
3712
3713
3714
3715
3716
....
9190
9191
9192
9193
9194
9195
9196
9197
9198
9199
9200
9201
9202
9203
9204
....
9205
9206
9207
9208
9209
9210
9211
9212
9213
9214
9215
9216
9217
9218
9219
.....
10847
10848
10849
10850
10851
10852
10853
10854
10855
10856
10857
10858
10859
10860
10861
.....
11114
11115
11116
11117
11118
11119
11120
11121
11122
11123
11124
11125
11126
11127
11128
.....
12412
12413
12414
12415
12416
12417
12418
12419
12420
12421
12422
12423
12424
12425
12426
.....
12719
12720
12721
12722
12723
12724
12725
12726
12727
12728
12729
12730
12731
12732
12733
.....
13409
13410
13411
13412
13413
13414
13415
13416
13417
13418
13419
13420
13421
13422
13423
.....
13447
13448
13449
13450
13451
13452
13453
13454
13455
13456
13457
13458
13459
13460
13461
.....
13716
13717
13718
13719
13720
13721
13722
13723
13724
13725
13726
13727
13728
13729
13730
.....
14652
14653
14654
14655
14656
14657
14658
14659
14660
14661
14662
14663
14664
14665
14666
.....
14846
14847
14848
14849
14850
14851
14852
14853
14854
14855
14856
14857
14858
14859
14860
14861
14862
14863
14864
14865
14866
14867
14868
14869
14870
14871
14872
14873
14874
14875
14876
14877
14878
14879
14880
14881
14882
14883
14884
.....
17944
17945
17946
17947
17948
17949
17950
17951
17952
17953
17954
17955
17956
17957
17958
.....
18973
18974
18975
18976
18977
18978
18979
18980
18981
18982
18983
18984
18985
18986
18987
.....
18994
18995
18996
18997
18998
18999
19000
19001
19002
19003
19004
19005
19006
19007
19008
.....
19622
19623
19624
19625
19626
19627
19628
19629
19630
19631
19632
19633
19634
19635
19636
.....
19637
19638
19639
19640
19641
19642
19643
19644
19645
19646
19647
19648
19649
19650
19651
.....
19652
19653
19654
19655
19656
19657
19658
19659
19660
19661
19662
19663
19664
19665
19666
.....
19668
19669
19670
19671
19672
19673
19674
19675
19676
19677
19678
19679
19680
19681
19682
.....
19702
19703
19704
19705
19706
19707
19708
19709
19710
19711
19712
19713
19714
19715
19716
.....
23427
23428
23429
23430
23431
23432
23433
23434
23435
23436
23437
23438
23439
23440
23441
TEST: Assis, gronde{{-t -}}elle                         ->> -t-
TEST: vient-il demain ?
TEST: prend-elle l’avantage ?
TEST: saura-t-on jamais la vérité ?
TEST: arrive-t-elle ce matin ?
TEST: y aura-t-il du poulet au dîner ?

























@@@@
@@@@
@@@@
@@@@
@@@@GRAPH: purge_tag_disambiguate                                                                  _
................................................................................

    <start>  $:M  @:(?:[123]s|Ov)¬:A
        <<- =>> =select(\2, ":M")

    [que|qu’|combien|pourquoi|qui|quand|où]  ?[en|y]¿  *WORD
        <<- =>> exclude(\-1, ":E")

    [<start>|,]  quelqu’ un  *WORD
        <<- =>> exclude(\4, ":N")

    >falloir [>pouvoir|>savoir|>vouloir|>manger|>conseiller]
        <<- =>> exclude(\2, ":N")


__da_été__
    >avoir été
................................................................................
    l’ [un|une]  *WORD
        <<- not value(\3, "|plus|") =>> select(\3, ":[123][sp]")

    [des|chaque|quelque|quelques|cet|cette|ces|mon|ma|ta|sa|mes|tes|ses|au|aux|notre|votre|nos|vos|leurs|aucun|aucune]  *WORD
        <<- =>> exclude(\2, ":V")

    [un|une]  *WORD
        <<- not value(<1, "|l’|quelqu’|quelqu|") and not value(\2, "|a|fut|fût|est|") and not morph(\2, ":P") =>> exclude(\2, ":V")

    [une|le|la|les|des|chaque|quelque|quelques|cet|cette|ces|ma|ta|sa|mes|tes|ses|au|aux|notre|votre|nos|vos|leurs] personne
        <<- =>> select(\-1, ":N")

    de  [la|l’]  $:¬:Y
        <<- not value(<1, "|semblant|") =>> exclude(\3, ":V")

................................................................................
        <<- morph(\-1, ":[NA]") ~1:3>> ␣

    alors    [que|qu’]
    dès lors [que|qu’]
        <<- ~>> ␣
        <<- =>> define(\1, [":Cs"])

    quelqu’ [un|une]
        <<- ~>> ␣
        <<- =>> change_meta(\1, "WORD")


__fusions_noms_communs__
    au revoir
        <<- ~>> ␣
        <<- =>> define(\1, [":N:m:i"])

    n’ importe [qui|quoi|quel|quelle|quels|quelles|où]
................................................................................
    black [>bloc|>block]
    machine [learning+s]
    nec plus ultra
    standing >ovation
    star [system+s]
        <<- ~>> ␣

    presqu’ [>ile|>île]
        <<- ~>> ␣
        <<- =>> change_meta(\1, "WORD")

    *NUM : *NUM
        <<- space_after(\1, 0, 0) and space_after(\1, 0, 0) ~>> ␣

    *NUM  ~^h[0-9][0-9]$
        <<- space_after(\1, 0, 0) ~>> ␣


................................................................................
!!!! Noms composés                                                                                !!

__tag_noms__
    ~\w-là$
        <<- />> -là
        <<- =>> =define_from(\1, 0, -3)


!!!! Élisions                                                                                     !!

# presque : élision
__typo_presque__
    presqu’  *WORD
        <<- /typo/ not morph(\2, ">[iî]le/") -1>> "presque "            # Pas d’élision autorisée sur “presque”, sauf avec “presqu’île”.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=1745

TEST: {{Presqu’}}exclusivement bâtie en pierre.
TEST: C’est une presqu’île.
TEST: Cette presqu’ile est particulièrement venteuse.


# quelque : élision
__typo_quelque__
    quelqu’  *WORD
        <<- /typo/ not value(\2, "|un|une|") -1>> "quelque "            # Pas d’élision autorisée sur “quelque”, sauf avec “quelqu’un” ou “quelqu’une”.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=1745

TEST: {{Quelqu’}}absurde que ce soit, il faut y céder.
TEST: quelqu’un vient.
TEST: elle s’en est allée avec quelqu’une…



!!
!!
!!!! Verbes composés                                                                              !!
!!
!!
................................................................................
!!!! Traits d’union                                                                               !!
!!
!!

### ce / cet / cette / ces + nom + là
__tu_ce_cette_ces_nom_là_ci__
    [ce|cet|cette|ces] *WORD [là|ci]
        <<- /tu/ morph(\2, ":[NB]", ":V0e") and not value(>1, "|où|") -2:3>> \2-là      # Il manque probablement un trait d’union.

    [ce|cet|cette|ces] *WORD la [<end>|,]
        <<- /tu/ morph(\2, ":[NB]") -2:3>> \2-là                                # Il manque probablement un trait d’union.

    [ce|cet|cette|ces] *WORD si [<end>|,]
        <<- /tu/ morph(\2, ":[NB]") -2:3>> \2-ci                                # Il manque probablement un trait d’union.

................................................................................
TEST: à ce {{moment là}}                                                        ->> moment-là
TEST: Il faisait froid cet {{hiver la}}.                                        ->> hiver-là
TEST: Ces {{trois là}} sont incollables.
TEST: Je connais bien cette {{sensation là}}.
TEST: Cette {{voiture si}}, c’est celle-là que je veux.
TEST: ce que je veux c’est ce {{véhicule ci}}
TEST: Laisse ce chiot là où il est !
TEST: Ce fut là en fait une appellation fautive


### Préfixes
__tu_préfixe_ex__
    ex  $:N¬*
        <<- /tu/ not value(\2, "|aequo|nihilo|cathedra|absurdo|abrupto|")
        ->> ex-\2                                                           # S’il s’agit d’un seul mot, il manque un trait d’union.
................................................................................
TEST: Qu’elle avait été accueillie avec joie.


__conf_quelle_qu_elle__
    quelle  [ne|n’|me|m’|te|t’|se|s’|nous|vous|le|la|l’|les|lui|leur|en|y]
        <<- /conf/ not (value(\2, "|en|ne|")  and morph(>1, ":V0e")) -1>> qu’elle                   # Confusion. Le sujet “elle” doit être séparée de la conjonction “que”.

    quelle  @:V¬:[NA].*:[fe]|>(?:être|plus|point)/
        <<- /conf/ \2.islower() and not (morph(\2, ">(?:pouvoir|devoir|aller)/") and (morph(>1, ":V0e") or morph(>2, ":V0e"))) and not (morph(\2, ":V0a") and value(>1, "|été|"))
        -1>> qu’elle                                                                                # Confusion. Le sujet “elle” doit être séparée de la conjonction “que”.

TEST: {{Quelle}} y vienne, on verra ce qu’elle vaut.
TEST: {{Quelle}} a du répondant, cette gamine !
TEST: {{Quelle}} partit prendre son repas à la cantine, je n’en avais cure.
TEST: Il se plaint {{quelle}} ne nous dit rien.
................................................................................
TEST: {{Quelle}} l’apprenne un jour, on n’y peut rien.
TEST: Je crois {{quelle}} n’en sait pas assez pour nous nuire.


    quelles [ne|n’|me|m’|te|t’|se|s’|nous|vous|le|la|l’|les|lui|leur|en|y]
        <<- /conf/ not (value(\2, "|en|ne|") and morph(>1, ":V0e")) -1>> qu’elles                   # Confusion. Le sujet “elles” doit être séparée de la conjonction “que”.

    quelles @:V¬:[NA].*:[fe]|>(?:être|plus|point)/
        <<- /conf/ \2.islower() and not (morph(\2, ">(?:pouvoir|devoir|aller)/") and (morph(>1, ":V0e") or morph(>2, ":V0e"))) and not (morph(\2, ":V0a") and value(>1, "|été|"))
        -1>> qu’elles                                                                               # Confusion. Le sujet “elles” doit être séparée de la conjonction “que”.

TEST: Je veux {{quelles}} s’efforcent à y parvenir.
TEST: {{Quelles}} t’arrivent seulement à la cheville, voilà qui serait étonnant.
TEST: {{Quelles}} m’engueulent encore une seule fois et elles vont le regretter.
TEST: {{Quelles}} viennent et qu’on en finisse.
................................................................................
    à l’ occasion
    à l’ ordre du jour
    à l’ un d’ entre eux
    à l’ unanimité
    à l’ unisson
    à l’ une d’ entre elles
    à l’ échelle [nationale|mondiale|régionale|départementale|cantonale|locale|galactique|universelle]
    à l’ étouffée
    à l’ évidence
    à l’ œil nu
    à l’ [un|une] des leurs
    à la [bourre|con|coule|dérobée|diable|fois|leur|manque|mords-moi-le-nœud|papa|ramasse|renverse|redresse|rescousse|sauvette|volée]
    à la bonne franquette
    à la limite du supportable
    à la lumière de tout [ceci|cela|ça]
................................................................................
    comme bon [me|te|lui|leur|nous|vous] semble
    comme au bon vieux temps
    comme cul et chemise
    comme [frappé|frappée|frappés|frappées] par la foudre
    comme n’ importe où ?ailleurs¿
    comme par [enchantement|magie]
    comme par un fait exprès
    comme pas deux
    comme peau de chagrin
    comme promis
    comme qui dirait
    comme si [de|d’] rien n’ était
    contrairement aux apparences
    contre mauvaise fortune ?,¿ bon cœur
    contre nature
................................................................................
    >chasse à l’ homme
    >chasse d’ eau
    >chasseuse [de|d’] primes
    >chemin [de|d’] [traverse|fer]
    >chemise sans >manche
    >chèque sans provision
    >chili con carne
    >chou à la crème ?[fouettée|diplomate|mousseline|patissière|pralinée]¿
    >claire comme [de|d’] l’ eau [de|d’] [boudin|roche|source]
    >claire comme du cristal
    >claire comme jus [de|d’] [boudin|>chaussette|chique]
    [>clé|>clef] à molette
    >clin d’ œil
    >code [de|d’] bonne conduite
    >commise d’ office
................................................................................
    blond   [argenté|platine]
    gris    [acier|anthracite|argenté|fer|perle|souris]
    jaune   [canari|citron|doré|maïs|paille|sable]
    noir    [de|d’] [encre|jais]
    noir    et blanc
    noir    sur blanc
    rose    [bonbon|chair|corail]
    rouge   [anglais|brique|cardinal|carmin|cerise|cochenille|coquelicot|écarlate|feu|fraise|grenat|groseille|incarnat|indien|rubis|sang|sanguin|tomate|vermeille|vermillon]
    vert    [bouteille|céladon|émeraude|épinard|impérial|lichen|olive|perroquet|pistache|poireau|pomme|prairie|printemps|sapin|sauge|tilleul]
    couleur sable
        <<- morph(<1, ":[NA]", ":D") ~>> *
        <<- __else__ and morph(<1, ":D|>(?:être|devenir|redevenir|rester|sembler|demeurer|para[îi]tre)") ~>> ␣
        <<- __also__ =>> define(\1, [":A:e:i"])


................................................................................
    >faire amende honorable
    >faire bande à part
    >faire bon accueil
    >faire bonne figure
    >faire chou blanc
    >faire copain copain
    >faire de [mon|ton|son|notre|votre|leur] mieux
    >faire figure d’ exception
    >faire front commun
    >faire grise mine
    >faire grand [bruit|cas]
    >faire ?[bonne|excellente|grande|mauvaise]¿ impression
    >faire long feu
    >faire [machine|marche] arrière
    >faire main basse
................................................................................
    [>mettre|>remettre] l’ [écart|épreuve]
    [>mettre|>remettre] au [point|pas]
    [>mettre|>remettre] en [avant|branle|bouche|demeure|garde|jeu|lumière|mouvement|œuvre|place|scène|terre]
    [>mettre|>remettre] de côté
    >mourir jeune
    [>naître|>naitre] de la dernière pluie
    [>naître|>naitre] sous x
    >parler affaires
    >partir en vrille
    >percer à jour
    >perdre [connaissance|conscience|patience|raison]
    >perdre d’ avance
    >piquer au vif
    >porter [assistance|atteinte|bonheur|caution|chance|malheur|plainte|préjudice|secours]
    >poser problème
................................................................................
TEST: l’accusation de lynchage médiatique proférée par François de Clermont à l’encontre de “Marianne” ne tient pas.
TEST: La poïesis, en grec, est ce qui permet de faire passer n’importe quoi du non-être à l’être
TEST: un moteur nouvelle génération
TEST: La première est la critique dite artiste
TEST: la critique conduit nombre de protestataires à se replier sur des modalités de défense efficaces dans le passé mais désormais largement inadaptées
TEST: Tu crois que Microsoft peut contraindre les projets libres à quoi que ce soit ?
TEST: « L’école produit la norme en matière de langage »
TEST: Parler affaires.



@@@@
@@@@
@@@@
@@@@
................................................................................
        <<- /gn/ __also__ and hasFemForm(\2)                                    -2>> =suggFemSing(\2, True)     # Accord de genre erroné : « \1 » est féminin.

TEST: {{Quelle}} homme.                                       ->> Quel
TEST: {{Quelle}} {{folles}}
TEST: {{Quelle}} {{chien}}
TEST: {{Quelle}} {{chats}}
TEST: Quelle sale journée…
TEST: On pourrait également rappeler à quel point l’Église catholique fut hostile à la laïcité et la combattit violemment.

__gn_quelles_1m!8__
    quelles  *WORD
        <<- /gn/ morph(\2, ":[NA].*:m:s", ":(?:V0|Oo|[NA].*:[fe]:[pi])")        -1>> quel                       # Accord de genre et de nombre erroné. « \2 » est masculin et au singulier.
        <<- /gn/ __also__ and hasFemForm(\2)                                    -2>> =suggFemPlur(\2, True)     # Accord de genre et de nombre erroné : « \1 » est féminin et au pluriel.
        <<- /gn/ morph(\2, ":[NA].*:f:s", ":(?:V0|Oo|[NA].*:[fe]:[pi])")        -1>> quelle                     # Accord de nombre erroné : « \2 » est au singulier.
        <<- /gn/ __also__                                                       -2>> =suggPlur(\2)              # Accord de nombre erroné : « \1 » est au pluriel.
................................................................................
TEST: les quelque 2,5 millions d’habitants
TEST: les quelque 12 000 stations-service


## Nombres
__gn_nombre_lettres_1m__
    $:B:e:p  *WORD
        <<- /gn/ not value(\1, "|neuf|mille|") and ( (morph(\2, ":[NA].*:s", "*") and not value(\2, "|multiplié|divisé|janvier|février|mars|avril|mai|juin|juillet|août|aout|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|") )
            or \2 in aREGULARPLURAL) and not re.search("^[IVXLDM]+$", \1)
        -2>> =suggPlur(\2)                                                                  # Accord de nombre erroné avec « \1 » : « \2 » devrait être au pluriel.

    neuf  *WORD
        <<- /gn/ ( morph(\2, ":[NA].*:s", "*") and not morph(<1, ":N.*:m:[is]") and not value(\2, "|multiplié|divisé|janvier|février|mars|avril|mai|juin|juillet|août|aout|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|") )
            or \2 in aREGULARPLURAL
        -2>> =suggPlur(\2)                                                                  # Accord de nombre erroné avec « \1 » : « \2 » devrait être au pluriel.

    mille  *WORD
        <<- /gn/ not value (\2, "|multiplié|divisé|") and (morph(\2, ":[NA].*:s", "*") or \1 in aREGULARPLURAL) and not value(<1, "|le|un|ce|du|")
        -2>> =suggPlur(\2)                                                                  # 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.        ->> idiots
TEST: Il a abandonné neuf {{enfant}}.                                               ->> enfants
TEST: On peut trouver mille {{travailleur}} d’un claquement de doigts.              ->> travailleurs
TEST: Il y a quatre cents {{mot}} dans la phrase.                                   ->> mots
TEST: cent {{mot}}                                                                  ->> mots
TEST: cinquante {{mot}}                                                             ->> mots
TEST: mille cinquante {{mot}}                                                       ->> mots
TEST: deux {{tête}}                                                                 ->> têtes
TEST: un logement neuf bâti par des professionnels.
TEST: un mille marin.
TEST: L’article VII mentionné dans la revue
TEST: Le produit de cinq multiplié par trois.


__gn_nombre_chiffres_1m__
    [0|1|01]  @:[NAQ].*:p¬*
        <<- /gn/ space_after(\1, 1, 1) and not value(\2, "|Rois|Corinthiens|Thessaloniciens|")
        -2>> =suggSing(\2)                                                                  # Accord de nombre erroné : « \1 » devrait être au singulier.

................................................................................
TEST: l’idée consiste à la lui donner sans contrepartie et voir ce qu’il en fera.
TEST: à leur plus grand fils, ils ont offert une voiture.
TEST: ça va d’autonome à hautement dépendant
TEST: à lui donner trop d’importance, on façonne notre ennemi
TEST: la pression entre les membres à un moment devient trop importante
TEST: Macron saisit la discorde avec le Brésil pour s’opposer à l’embarrassant accord
TEST: Je vous renvoie pour cela à l’excellent documentaire
TEST: cuisiner à l’étouffée


__infi_loc_à_verbe__
    de manière à            ~..(?:ée?s?|ez)$
    du mal à                ~..(?:ée?s?|ez)$
    intérêt à               ~..(?:ée?s?|ez)$
        <<- /infi/ morph(\-1, ":V", ":M") and not (\-1.endswith("ez") and value(>1, "|vous|"))
................................................................................
TEST: elles ne s’y étaient pas {{donnée}}.
TEST: sans fin elles se sont succédé


__ppas_se_être__
    [me|m’|te|se|s’]  ?[y|en]¿  >être  *WORD
        <<- /ppas/ morph(\-1, ":(?:Y|[123][sp])", ":[QA]") --1>> =suggVerbPpas(\-1)                 # Incohérence. Après « s’être », le verbe doit être un participe passé.
        <<- /ppas/ __else__ and morph(\-2, ":[123]s") and morph(\-1, ":Q.*:p") and not tag_before(\1, "que") and not before("(?i)\\bon (?:ne |)$")
        --1>> =suggSing(\-1)                                                                        # Le participe passé devrait être au singulier.

    tu  t’  ?[y|en]¿  [es|étais|seras|serais|fus|fusses]  *WORD
        <<- /ppas/ morph(\-1, ":(?:Y|[123][sp])", ":[QA]") --1>> =suggVerbPpas(\-1)                 # Incohérence. Après « s’être », le verbe doit être un participe passé.

TEST: s’être toujours {{donner}} le mot.
TEST: je suis venu et me suis totalement {{donnés}} à cette œuvre
................................................................................
TEST: tu t’en es {{foutait}} autant que possible.
TEST: elles se sont dit : « Allons-y ».
TEST: On s’est rencontrées lorsqu’on travaillait là-bas.
TEST: des soins que je m’étais donnés.
TEST: Si t’es pas contente, t’achètes pas.
TEST: t’étais vraiment cinglé à cette époque.
TEST: il m’était évident que cette mission était à durée déterminée
TEST: Cela fait un petit temps qu’on ne s’est plus vus.


## se rendre compte
__ppas_s_être_rendu_compte__
    >être  rendu  compte
        <<- !2:3>>
        <<- ~2:3>> _
................................................................................
        || [être|devenir|redevenir|rester|paraître|paraitre|sembler]                                                    *WORD
    [<start>|,|$:Cs]  [un|le|ce|cet]                    (*WORD)  ?qui¿  ?[ne|n’]¿
        || ([>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir])
        || être [devenu+e|redevenu+e|resté+e|demeuré+e]                                                                 *WORD
    [<start>|,|$:Cs]  [un|le|ce|cet]                    (*WORD)  ?qui¿  ?[ne|n’]¿
        || ([>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir])
        || avoir [été|semblé|paru]                                                                                      *WORD
        <<- /ppas/ morph(\1, ":[NA].*:[me]", ":[GWf]") and morph(\-1, ":A.*:f", ":[GWMme]") and (morph(\2, ":[123]s") or (not tag(\1, "enum") and morph(\2, ":P")))
        --1>> =switchGender(\-1)                                                                    # Accord erroné : “\1” et “\-1” ne sont pas accordés en genre.

    [<start>|,|$:Cs]  [une|la|ma|ta|sa|cette]           (*WORD)  ?qui¿  ?[ne|n’]¿  ([>être|>sembler|>devenir|>rester|>demeurer|>redevenir|>paraître|>paraitre])             *WORD
    [<start>|,|$:Cs]  [une|la|ma|ta|sa|cette]           (*WORD)  ?qui¿  ?[ne|n’]¿  (>avoir) [été|semblé|paru]                                                               *WORD
    [<start>|,|$:Cs]  [une|la|ma|ta|sa|cette]           (*WORD)  ?qui¿  ?[ne|n’]¿  ([>être|>sembler])  [devenu+e|redevenu+e|resté+e|demeuré+e]                              *WORD
    [<start>|,|$:Cs]  [une|la|ma|ta|sa|cette]           (*WORD)  ?qui¿  ?[ne|n’]¿
        || ([>aller|>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir])
................................................................................
        || [être|devenir|redevenir|rester|paraître|paraitre|sembler]                                                    *WORD
    [<start>|,|$:Cs]  [une|la|ma|ta|sa|cette]           (*WORD)  ?qui¿  ?[ne|n’]¿
        || ([>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir])
        || être [devenu+e|redevenu+e|resté+e|demeuré+e]                                                                 *WORD
    [<start>|,|$:Cs]  [une|la|ma|ta|sa|cette]           (*WORD)  ?qui¿  ?[ne|n’]¿
        || ([>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir])
        || avoir [été|semblé|paru]                                                                                      *WORD
        <<- /ppas/ morph(\1, ":[NA].*:[fe]", ":[GWm]") and morph(\-1, ":A.*:m", ":[GWMfe]") and (morph(\2, ":[123]s") or (not tag(\1, "enum") and morph(\2, ":P")))
        --1>> =switchGender(\-1)                                                                    # Accord erroné : “\1” et “\-1” ne sont pas accordés en genre.

    [<start>|,|$:Cs]  [l’|mon|ton|son|notre|votre|leur] (*WORD)  ?qui¿  ?[ne|n’]¿  ([>être|>sembler|>devenir|>rester|>demeurer|>redevenir|>paraître|>paraitre])             *WORD
    [<start>|,|$:Cs]  [l’|mon|ton|son|notre|votre|leur] (*WORD)  ?qui¿  ?[ne|n’]¿  (>avoir) [été|semblé|paru]                                                               *WORD
    [<start>|,|$:Cs]  [l’|mon|ton|son|notre|votre|leur] (*WORD)  ?qui¿  ?[ne|n’]¿  ([>être|>sembler])  [devenu+e|redevenu+e|resté+e|demeuré+e]                              *WORD
    [<start>|,|$:Cs]  [l’|mon|ton|son|notre|votre|leur] (*WORD)  ?qui¿  ?[ne|n’]¿
        || ([>aller|>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir])
................................................................................
        || [être|devenir|redevenir|rester|paraître|paraitre|sembler]                                                    *WORD
    [<start>|,|$:Cs]  [l’|mon|ton|son|notre|votre|leur] (*WORD)  ?qui¿  ?[ne|n’]¿
        || ([>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir])
        || être [devenu+e|redevenu+e|resté+e|demeuré+e]                                                                 *WORD
    [<start>|,|$:Cs]  [l’|mon|ton|son|notre|votre|leur] (*WORD)  ?qui¿  ?[ne|n’]¿
        || ([>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir])
        || avoir [été|semblé|paru]                                                                                      *WORD
        <<- /ppas/ ((morph(\1, ":[NA].*:f", ":[GWme]") and morph(\-1, ":A.*:m", ":[GWMfe]")) or (morph(\1, ":[NA].*:m", ":[GWfe]") and morph(\-1, ":A.*:f", ":[GWme]")))
            and (morph(\2, ":[123]s") or (not tag(\1, "enum") and morph(\2, ":P")))
        --1>> =switchGender(\-1)                                                                    # Accord erroné : “\1” et “\-1” ne sont pas accordés en genre.

    [<start>|,|$:Cs]  [les|ces|mes|tes|ses|nos|vos|leurs|quelques|plusieurs]  (*WORD)  ?qui¿  ?[ne|n’]¿  ([>être|>sembler|>devenir|>rester|>demeurer|>redevenir|>paraître|>paraitre])                   *WORD
    [<start>|,|$:Cs]  [les|ces|mes|tes|ses|nos|vos|leurs|quelques|plusieurs]  (*WORD)  ?qui¿  ?[ne|n’]¿  (>avoir) [été|semblé|paru]                                                                     *WORD
    [<start>|,|$:Cs]  [les|ces|mes|tes|ses|nos|vos|leurs|quelques|plusieurs]  (*WORD)  ?qui¿  ?[ne|n’]¿  ([>être|>sembler])  [devenus|redevenus|restés|demeurés|devenues|redevenues|restées|demeurées]  *WORD
    [<start>|,|$:Cs]  [les|ces|mes|tes|ses|nos|vos|leurs|quelques|plusieurs]  (*WORD)  ?qui¿  ?[ne|n’]¿
................................................................................
        || [être|devenir|redevenir|rester|paraître|paraitre|sembler]                                                    *WORD
    [<start>|,|$:Cs]  [les|ces|mes|tes|ses|nos|vos|leurs|quelques|plusieurs]  (*WORD)  ?qui¿  ?[ne|n’]¿
        || ([>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir])
        || être [devenus|redevenus|restés|demeurés|devenues|redevenues|restées|demeurées]                               *WORD
    [<start>|,|$:Cs]  [les|ces|mes|tes|ses|nos|vos|leurs|quelques|plusieurs]  (*WORD)  ?qui¿  ?[ne|n’]¿
        || ([>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir])
        || avoir [été|semblé|paru]                                                                                      *WORD
        <<- /ppas/ ((morph(\1, ":[NA].*:f", ":[GWme]") and morph(\-1, ":A.*:m", ":[GWMfe]")) or (morph(\1, ":[NA].*:m", ":[GWfe]") and morph(\-1, ":A.*:f", ":[GWme]"))) and morph(\2, ":(?:[123]p|P)")
        --1>> =switchGender(\-1)                                                                    # Accord erroné : “\1” et “\-1” ne sont pas accordés en genre.

    *WORD  [que|qu’]  [un|le|ce|cet|une|la|ma|ta|sa|cette|l’|mon|ton|son|notre|votre|leur|les|ces|mes|tes|ses|nos|vos|leurs|quelques|plusieurs]  *WORD  ?[ne|n’]¿
        || ([>affirmer|>croire|>déclarer|>désirer|>détester|>dire|>estimer|>imaginer|>penser|>préférer|>savoir|>souhaiter|>vouloir])
        || [être|devenir|redevenir|rester|paraître|paraitre|sembler]                                *WORD
    *WORD  [que|qu’]  [un|le|ce|cet|une|la|ma|ta|sa|cette|l’|mon|ton|son|notre|votre|leur|les|ces|mes|tes|ses|nos|vos|leurs|quelques|plusieurs]  *WORD  ?[ne|n’]¿
        || ([>affirmer|>croire|>déclarer|>désirer|>détester|>dire|>estimer|>imaginer|>penser|>préférer|>savoir|>souhaiter|>vouloir])
................................................................................
TEST: l’écolier qui ne croyait pas avoir été {{brillante}}
TEST: les femmes sont vraiment {{partis}}                                         ->> parties
TEST: les hommes ne sont pas tout à fait {{fâchées}}                              ->> fâchés
TEST: plusieurs invités qui ne sont pas {{contentes}}
TEST: les réunions sans cesse reportées qui sont {{annulés}}
TEST: les hommes croyant être {{instruites}}
TEST: Les tortures que ce journaliste pense être “normales”.
TEST: La première était René, le parfumeur, qui s’approcha de Catherine


__ppas_nom_propre_être_accord_genre__
    [<start>|,|$:Cs]  ($:M)  ?qui¿  ?[ne|n’]¿  ([>être|>sembler|>devenir|>rester|>demeurer|>redevenir|>paraître|>paraitre])          *WORD
    [<start>|,|$:Cs]  ($:M)  ?qui¿  ?[ne|n’]¿  (>avoir) [été|semblé|paru]                                                            *WORD
    [<start>|,|$:Cs]  ($:M)  ?qui¿  ?[ne|n’]¿  ([>être|>sembler])  [devenu+e|redevenu+e|resté+e|demeuré+e]                           *WORD
    [<start>|,|$:Cs]  ($:M)  ?qui¿  ?[ne|n’]¿
................................................................................
TEST: Quel est le problème ? Je ne fais que ramener Paul à la raison.
TEST: La voir se fêler ainsi lui noua la gorge.
TEST: Quoi de neuf, mec ?
TEST: T’as enfin trouvé des gens avec qui t’entendre ?
TEST: ça fait du bien de se l’entendre dire
TEST: Laisse tomber, mec ! Pour qui tu te prends ?
TEST: il y avait souvent foule
TEST: Cette fille a plus d’un tour dans son sac.



!!! Tests historiques                                                                             !!

## Version 0.5.14
TEST: par le léger tissu de rayonne qui les protégeait en ce moment.