Grammalecte  Check-in [c5c2354079]

Overview
Comment:[core] replace hyphens (U+2010) [fr] nr: confusions nez/né, +ajustements
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk | fr | core
Files: files | file ages | folders
SHA3-256: c5c235407974f09cd2565b3d35d1e6c383c61f17e82d2f54866437d0306cd997
User & Date: olr on 2020-08-03 17:01:22
Original Comment: [fr] nr: confusions nez/né, +ajustements
Other Links: manifest | tags
Context
2020-08-03
18:35
[fr] ajustements et faux positif check-in: d41dd98935 user: olr tags: fr, trunk
17:01
[core] replace hyphens (U+2010) [fr] nr: confusions nez/né, +ajustements check-in: c5c2354079 user: olr tags: core, fr, trunk
13:56
[fr] ajustements check-in: 03f4dfd374 user: olr tags: fr, trunk
Changes

Modified gc_core/js/lang_core/gc_engine.js from [950bb85046] to [a3d26012fc].

264
265
266
267
268
269
270



271
272
273
274
275
276
277
278
279
        }
        if (sText.includes(" ")) {
            sText = sText.replace(/ /g, ' '); // snbsp
        }
        if (sText.includes("'")) {
            sText = sText.replace(/'/g, "’");
        }



        if (sText.includes("‑")) {
            sText = sText.replace(/‑/g, "-"); // nobreakdash
        }
        if (sText.includes("@@")) {
            sText = sText.replace(/@@+/g, "");
        }
        return sText;
    }








>
>
>

|







264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
        }
        if (sText.includes(" ")) {
            sText = sText.replace(/ /g, ' '); // snbsp
        }
        if (sText.includes("'")) {
            sText = sText.replace(/'/g, "’");
        }
        if (sText.includes("‐")) {
            sText = sText.replace(/‐/g, "-"); // Hyphen (U+2010)
        }
        if (sText.includes("‑")) {
            sText = sText.replace(/‑/g, "-"); // Non-Breaking Hyphen (U+2011)
        }
        if (sText.includes("@@")) {
            sText = sText.replace(/@@+/g, "");
        }
        return sText;
    }

Modified gc_core/py/lang_core/gc_engine.py from [c3ca9ed5e0] to [d52fc21265].

309
310
311
312
313
314
315


316
317
318
319
320
321
322
323
324
        sText = self.sText
        if " " in sText:
            sText = sText.replace(" ", ' ') # nbsp
        if " " in sText:
            sText = sText.replace(" ", ' ') # nnbsp
        if "'" in sText:
            sText = sText.replace("'", "’")


        if "‑" in sText:
            sText = sText.replace("‑", "-") # nobreakdash
        if "@@" in sText:
            sText = re.sub("@@+", "", sText)
        return sText

    def parseText (self, sText, sText0, bParagraph, nOffset, sCountry, dOptions, bShowRuleId, bDebug, bContext):
        "parse the text with rules"
        bChange = False







>
>

|







309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
        sText = self.sText
        if " " in sText:
            sText = sText.replace(" ", ' ') # nbsp
        if " " in sText:
            sText = sText.replace(" ", ' ') # nnbsp
        if "'" in sText:
            sText = sText.replace("'", "’")
        if "‐" in sText:
            sText = sText.replace("‐", "-") # Hyphen (U+2010)
        if "‑" in sText:
            sText = sText.replace("‑", "-") # Non-Breaking Hyphen (U+2011)
        if "@@" in sText:
            sText = re.sub("@@+", "", sText)
        return sText

    def parseText (self, sText, sText0, bParagraph, nOffset, sCountry, dOptions, bShowRuleId, bDebug, bContext):
        "parse the text with rules"
        bChange = False

Modified gc_lang/fr/rules.grx from [d003bdd71e] to [8addacbb08].

4129
4130
4131
4132
4133
4134
4135




4136
4137
4138
4139
4140
4141
4142
....
8559
8560
8561
8562
8563
8564
8565









8566
8567
8568
8569
8570
8571
8572
....
9845
9846
9847
9848
9849
9850
9851
9852
9853
9854
9855
9856
9857
9858
9859
....
9921
9922
9923
9924
9925
9926
9927






































9928
9929
9930
9931
9932
9933
9934
.....
10551
10552
10553
10554
10555
10556
10557

10558
10559
10560
10561
10562
10563
10564
.....
14575
14576
14577
14578
14579
14580
14581

14582
14583
14584
14585
14586
14587
14588
.....
15564
15565
15566
15567
15568
15569
15570
15571
15572
15573
15574
15575
15576
15577
15578
.....
15912
15913
15914
15915
15916
15917
15918

15919
15920
15921
15922
15923
15924
15925
.....
16530
16531
16532
16533
16534
16535
16536
16537
16538



16539
16540
16541
16542
16543
16544
16545
.....
16921
16922
16923
16924
16925
16926
16927


16928
16929
16930
16931
16932
16933
16934
.....
17374
17375
17376
17377
17378
17379
17380

17381
17382
17383
17384
17385
17386
17387
.....
23824
23825
23826
23827
23828
23829
23830
23831
23832
23833
23834
23835
23836
23837
23838
23839
23840
23841
23842
23843
23844
23845
23846
23847
23848
23849
23850
.....
26119
26120
26121
26122
26123
26124
26125












26126
26127
26128
26129
26130
26131
26132
.....
26735
26736
26737
26738
26739
26740
26741

26742
26743
26744
26745
26746
26747
26748
.....
27958
27959
27960
27961
27962
27963
27964
27965
27966
27967
27968
27969
27970
27971
27972
.....
28737
28738
28739
28740
28741
28742
28743
28744
28745


28746
28747
28748
28749
28750
28751
28752


!!
!!
!!!! Traits d’union                                                                               !!
!!
!!





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

    [ce|cet|cette|ces] *WORD ci
................................................................................
__conf_content_comptant_contant__
    [<start>|,|(] non [>comptant|contant] [de|d’|du|des]
        <<- /conf/ --2>> content                                                        && Confusion. Locution prépositive “non content de…”.|https://fr.wiktionary.org/wiki/non_content_de

TEST: elle avait tout son {{contant}} de problèmes.
TEST: non {{comptant}} de s’en prendre à eux, il s’attaqua aussi à elles











# corps / cor
__conf_corps_cor__
    !! à bras-le-corps ¡¡
    [à|a] [bras-le-corps|bras-le-cor]
    [à|a] [bra|bras] [le|les] [>cor|corps|>core|corre]
        <<- /conf/ ->> à bras-le-corps              && Locution “à bras-le-corps”.|https://fr.wiktionary.org/wiki/%C3%A0_bras-le-corps
................................................................................

    ma  @:(?:Q.*:e:i|V1.*:Y)¬:f:s
        <<- /conf/ -1>> m’a                         && Confusion probable : “\-2“ est un participe passé. Vous confondez probablement “ma” et “m’a” (contraction de “me” suivi du verbe avoir “a”).

TEST: tu {{ma}} prise par surprise                          ->> m’as
TEST: il {{ma}} tuée                                        ->> m’a
TEST: cette femme ne {{ma}} prise que deux fois             ->> m’a
TEST: {{on}} {{ma}} dézinguée                               ->> m’a|||ont
TEST: ça {{ma}} {{foutu}} en l’air
TEST: cet homme {{ma}} succédé à ce poste                   ->> m’a
TEST: {{ma}} {{donner}} la nausée, ce con
TEST: c’est ça qui {{ma}} forcée à poursuivre               ->> m’a
TEST: ça ma grande, c’est mon secret


................................................................................
__conf_n_est_ce_pas__
    n’ [es|ai|aie|aies|et|ait|aient|hé|eh|e|é] [ce|se] pas
    n’ [es-ce|ai-ce|aie-ce|aies-ce|et-ce|ait-ce|aient-ce|hé-ce|eh-ce|e-ce|é-ce] pas
        <<- /conf/ ->> n’est-ce pas                         && Confusion. N’est-ce pas.|https://fr.wiktionary.org/wiki/n%E2%80%99est-ce_pas

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).
__conf_nôtre_notre__
    [le|la|les|du|des|au|aux] notre
        <<- /conf/ not value(>1, "|père|") -2>> nôtre                       && Confusion : « notre possession », « la nôtre ».

................................................................................
    >accoster ?@:[WX]¿ à ce ?petit¿ [>pore|>porc]
        <<- /conf/ --1>> port                                               && Confusion. Pour évoquer un havre côtier où les bâteaux accostent, écrivez “port”.|https://fr.wiktionary.org/wiki/port

    [>pore|>porc] [usb|RJ45|DVI|HDMI|Ethernet|DisplayPort]
        <<- /conf/ -1>> port|ports                                          && Confusion. Pour évoquer les connecteurs, écrivez “port”.|https://fr.wiktionary.org/wiki/port

    [pore|porc] de l’ [écharpe|étoile|épée]

        <<- /conf/ -1>> port                                                && Confusion. Pour évoquer les objects que l’on porte, écrivez “port”.|https://fr.wiktionary.org/wiki/port

TEST: les {{ports}} de la peau
TEST: du {{port}} au caramel
TEST: elle prépare un rôti de {{port}}
TEST: j’en ai marre de bouffer du {{port}}
TEST: le {{pore}} de l’étoile jaune
................................................................................
    ?[de|d’]¿ là non plus
    ¿[de|d’]¿ la fleur au fusil
    ¿[de|d’]¿ la main dans la main
    ¿[de|d’]¿ la mort dans l’ âme
    ¿[de|d’]¿ la queue entre les jambes
    ¿[de|d’]¿ la peur au ventre
    l’ air [de|d’] rien

    la tête entre [mes|tes|ses|nos|vos|leurs] mains
    ?le¿ dos au mur
    le cas échéant
    le cœur battant la chamade
    le cœur [gros|serré]
    le moins du monde
    le moment venu
................................................................................
    [composante+s] alpha
    >compte à rebours
    >compte offshore
    concours [de|d’] beauté
    >conférence [de|d’] presse
    >congé [maternité|paternité]
    >conseiller d’ orientation [scolaire|professionnelle]
    >connexion à Internet
    >conte [de|d’] fées
    >contrôle [de|d’] routine
    >convention [récepteur|générateur]
    >coque [de|d’] noix
    >corbeille à >pain
    >correspondant [de|d’] guerre
    >coup [de|d’] [avance|balai|barre|bâton|bec|bélier|bite|blues|bol|botte|boule|boutoir|cœur|chaud|coude|couteau|dé|dent|déprime|éclat|épaule|éponge|épée|estoc|État|foudre|fil|filet|force|froid|genou|grâce|>griffe|grisou|gueule|hache|hanche|jarnac|jeune|jus|klaxon|main|maître|maitre|marteau|massue|nostalgie|œil|patte|pied|poignard|poing|poker|pouce|pute|queue|rabot|rein|sabre|sabot|sang|savate|semonce|sifflet|soleil|surin|>tatane|tête|théâtre|tonnerre|trique|torchon|vent|vieux]
................................................................................
    >service clientèle
    >service d’ ordre
    >seuil [de|d’] tolérance
    >seuil [de|d’] tolérance à la douleur
    >silo à [>grains|blé]
    >site [de|d’] lancement
    >soldat d’ élite

    >sonnette d’ alarme
    >sortie [de|d’] secours
    >soue à >cochon
    >sourate [*NUM|$:B] ?,¿ verset [*NUM|$:B]
    >sujet [de|d’] [prédilection|préoccupation]
    >suspension [de|d’] séance
    >système d’ exploitation
................................................................................

    [bien|mal|fort] @:[AW]
        <<- not value(<1, "|un|le|ce|du|mon|ton|son|notre|votre|leur|") ~1>> *

    si  @:[AW]
        <<- not (value(\2, "|bien|") and value(>1, "|que|qu’|")) and not value(\2, "|tant|") ~1>> *

    un [brin|chouia|chouïa|rien|minimum|soupçon|tantinet]  ?[trop|plus|moins]¿
        <<- morph(>1, ":A", ":G") ~>> *




    [assez|trop]  @:[AW]¬:[123][sp]
        <<- ~1>> *

    pas [assez|trop]
        <<- not morph(<1, ":D.*:(?:m:s|[me]:p)") ~1>> *

................................................................................

    *WORD       [tous|toutes|tout_e_s]
        <<- morph(\1, ":[123]p") ~2>> *

    on  ?[ne|n’]¿  ?[le|la|l’|les|me|m’|te|t’|se|s’|nous|vous|lui|leur|y]¿  ?[le|la|l’|les|en|y|lui|leur]¿  *WORD  [tous|toutes|tout_e_s]
        <<- morph(\-2, ":[123]s") ~-1>> *





@@@@
@@@@
@@@@
@@@@
@@@@GRAPH: purge_passe3|pp3                                                                        _
................................................................................
TEST: Si vous devez partir ou rester
TEST: Si Rosanna est venue ici, elle y est venue fatiguée par la vie
TEST: ceux de modeste condition n’ont pas semblable privilège
TEST: peut-être qu’ailleurs il est des pucelles ou des demoiselles pour porter ce nom.
TEST: la qualité desdits malheureux
TEST: ç’a été dur.
TEST: dût ma vanité en souffrir, je viendrai quoi qu’il arrive



@@@@
@@@@
@@@@
@@@@
@@@@END_GRAPH                                                                                      _
................................................................................
    de  [la|l’|leur]  @:[NA]¬:Y  <end>
    de  [la|l’|leur]  @:[NA]¬:Y  ?,¿ [ne|n’|me|m’|te|t’|se|s’|nous|vous|y|c’|ça|ç’|je|j’|tu|il|elle|on|ils|elles|iel|iels|le|la|l’|les|mon|ma|ta|sa|notre|votre|leur|mes|tes|ses|nos|vos|leurs|ce|cet|cette|ces|quel|quels|quelle|quelles|est]
    de  [la|l’|leur]  @:[NA]¬:Y  @:[VR]¬:[NAP]
    de  [la|l’|leur]  @:[NA]¬:Y  , @¬:[NA]
        <<- ~1:3>> *

    $:LR [de|d’]  [la|l’|leur|un|une|ce|cet|cette|ces|mon|ton|son|ma|ta|sa|mes|tes|ses|notre|votre|nos|vos|leurs]  @:[NA]  <end>
    $:LR [de|d’]  [la|l’|leur|un|une|ce|cet|cette|ces|mon|ton|son|ma|ta|sa|mes|tes|ses|notre|votre|nos|vos|leurs]  @:[NA]  ?,¿ [ne|n’|me|m’|te|t’|se|s’|nous|vous|y|c’|ça|ç’|je|j’|tu|il|elle|on|ils|elles|iel|iels|le|la|l’|les|mon|ma|ta|sa|notre|votre|leur|mes|tes|ses|nos|vos|leurs|ce|cet|cette|ces|quel|quels|quelle|quelles]
    $:LR [de|d’]  [la|l’|leur|un|une|ce|cet|cette|ces|mon|ton|son|ma|ta|sa|mes|tes|ses|notre|votre|nos|vos|leurs]  @:[NA]  @:[VR]¬:[NAP]
    $:LR [de|d’]  [la|l’|leur|un|une|ce|cet|cette|ces|mon|ton|son|ma|ta|sa|mes|tes|ses|notre|votre|nos|vos|leurs]  @:[NA]  , @¬:[NA]
        <<- ~1:4>> *

    $:LR [des|du|de|d’] @:[NA] <end>
    $:LR [des|du|de|d’] @:[NA] ?,¿ [ne|n’|me|m’|te|t’|se|s’|nous|vous|y|c’|ça|ç’|je|j’|tu|il|elle|on|ils|elles|iel|iels|le|la|l’|les|mon|ma|ta|sa|notre|votre|leur|mes|tes|ses|nos|vos|leurs|ce|cet|cette|ces|quel|quels|quelle|quelles]
    $:LR [des|du|de|d’] @:[NA] @:[VR]¬:[NAP]
    $:LR [des|du|de|d’] @:[NA] , @¬:[NA]
        <<- ~1:3>> *

    en [plein|pleine] @:[NA]  <end>
    en [plein|pleine] @:[NA]  ?,¿ [ne|n’|me|m’|te|t’|se|s’|nous|vous|y|c’|ça|ç’|je|j’|tu|il|elle|on|ils|elles|iel|iels|le|la|l’|les|mon|ma|ta|sa|notre|votre|leur|mes|tes|ses|nos|vos|leurs|ce|cet|cette|ces|quel|quels|quelle|quelles]
    en [plein|pleine] @:[NA]  @:[VR]¬:[NAP]
    en [plein|pleine] @:[NA]  , @¬:[NA]
        <<- ~1:3>> *

    [à|avec|chez|contre|dans|envers|par|pour|selon|sous|sur|au|aux] [__URL__|__MAIL__]
        <<- ~>> *

................................................................................
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: comme ces informations m’avaient {{manquées}}
TEST: les notes que tu m’as données sont mal écrites.
TEST: Garde précieusement les secrets que je t’ai confiés.
TEST: je ne manquai pas de travailler aux choses qu’il m’avait prescrites














__ppas_qui_avoir__
    qui  ?[ne|n’]¿  ?[lui|leur]¿  >avoir  @:Q.*:(?:f|m:p)¬:m:[si]
        <<- /ppas/ --1>> =suggVerbPpas(\-1, ":m:s")         && 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.
................................................................................
__imp_laisser_le_la_les_infi__
    [laisse|laissons|laissez]  [le|la|les]  *WORD
        <<- /imp/ space_after(\1, 1, 1) and morph(\3, ":(?:Y|Ov)", ":[NAB]") and not morph(<1, ":O[sv]")
        -1:2>> \1-\2                                    && S’il s’agit d’un impératif, mettez un trait d’union.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=4206

TEST: {{Laisse les}} entrer…
TEST: {{Laissez la}} venir…

TEST: Laisse les chiens tranquilles
TEST: Laissez la peste leur pourrir la vie encore quelque temps.
TEST: le coût humain de la guerre qu’il a laissé les submerger.
TEST: je vous laisse les consulter
TEST: Je les laisse la découvrir !


................................................................................
        <<- /inte/ space_after(\2, 1, 1) and morph(\2, ":V.*:3s", ":[GNW]") and not value(\1, "|ce|il|elle|on|")
        -2:3>> \2-\3                                                                                && Forme interrogative ? Mettez un trait d’union.

TEST: {{prend on}} le temps d’y réfléchir ?
TEST: De quel droit {{vient il}} m’{{ennuyer}} ?
TEST: comment {{était il}}
TEST: Pourquoi le message de Jean {{était il}} très radical pour son époque ?
TEST: Pourquoi le message de Jean {{était‐il}} très radical pour son époque ?


__inte_union_ce!7__
    [<start>|,|(] [est|était|étaient] ce ?pas¿ [le|la|les|l’|un|une|de|des|d’|ce|cet|cette|ces|quelques|plusieurs|mon|ma|ta|sa|notre|votre|leur|mes|tes|ses|nos|vos|leurs]
    [<start>|,|(] [est|était|étaient] ce ?pas¿ @:G¬:[NA].*:[me]:[si]|>(?:qu[ei’]|pourquoi|dont)/
    [<start>|,|(] [est|était|étaient] ce [ton|son] @:N¬:A.*:[me]:[si]
        <<- /inte/ space_after(\2, 1, 1) -2:3>> \2-\3                                               && Forme interrogative ? Mettez un trait d’union.
................................................................................

__conj_tous_toutes__
    [tous|toutes]  @:V¬:(?:G|N|A|3p|P|Q|V[23].*:Y)
    [tous|toutes]  qui  @:V¬:(?:G|3p|P)
        <<- /conj/ not morph(<1, ":[VR]|>(?:et|ou)/")
        --1>> =suggVerb(\-1, ":3p")                                     && Conjugaison erronée. Accord avec “\1”. Le verbe devrait être à la 3ᵉ personne du pluriel.

TEST: Tous {{venait}} à la fête.
TEST: Toutes {{ignorait}} ce qu’ils avaient fait.


TEST: Il faut mettre un coup de grâce et tous monter sur Paris par tous les moyens possibles
TEST: Pourrons-nous tous vaincre.
TEST: Vous pouvez tous triompher de votre adversaire avec de la ruse.
TEST: tous prendre une bonne cuite, voilà ce que nous allons faire.
TEST: on va tous manger au resto.
TEST: elles vont toutes aller faire un tour








>
>
>
>







 







>
>
>
>
>
>
>
>
>







 







|







 







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







 







>







 







>







 







|







 







>







 







|

>
>
>







 







>
>







 







>







 







|





|





|







 







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







 







>







 







|







 







|
|
>
>







4129
4130
4131
4132
4133
4134
4135
4136
4137
4138
4139
4140
4141
4142
4143
4144
4145
4146
....
8563
8564
8565
8566
8567
8568
8569
8570
8571
8572
8573
8574
8575
8576
8577
8578
8579
8580
8581
8582
8583
8584
8585
....
9858
9859
9860
9861
9862
9863
9864
9865
9866
9867
9868
9869
9870
9871
9872
....
9934
9935
9936
9937
9938
9939
9940
9941
9942
9943
9944
9945
9946
9947
9948
9949
9950
9951
9952
9953
9954
9955
9956
9957
9958
9959
9960
9961
9962
9963
9964
9965
9966
9967
9968
9969
9970
9971
9972
9973
9974
9975
9976
9977
9978
9979
9980
9981
9982
9983
9984
9985
.....
10602
10603
10604
10605
10606
10607
10608
10609
10610
10611
10612
10613
10614
10615
10616
.....
14627
14628
14629
14630
14631
14632
14633
14634
14635
14636
14637
14638
14639
14640
14641
.....
15617
15618
15619
15620
15621
15622
15623
15624
15625
15626
15627
15628
15629
15630
15631
.....
15965
15966
15967
15968
15969
15970
15971
15972
15973
15974
15975
15976
15977
15978
15979
.....
16584
16585
16586
16587
16588
16589
16590
16591
16592
16593
16594
16595
16596
16597
16598
16599
16600
16601
16602
.....
16978
16979
16980
16981
16982
16983
16984
16985
16986
16987
16988
16989
16990
16991
16992
16993
.....
17433
17434
17435
17436
17437
17438
17439
17440
17441
17442
17443
17444
17445
17446
17447
.....
23884
23885
23886
23887
23888
23889
23890
23891
23892
23893
23894
23895
23896
23897
23898
23899
23900
23901
23902
23903
23904
23905
23906
23907
23908
23909
23910
.....
26179
26180
26181
26182
26183
26184
26185
26186
26187
26188
26189
26190
26191
26192
26193
26194
26195
26196
26197
26198
26199
26200
26201
26202
26203
26204
.....
26807
26808
26809
26810
26811
26812
26813
26814
26815
26816
26817
26818
26819
26820
26821
.....
28031
28032
28033
28034
28035
28036
28037
28038
28039
28040
28041
28042
28043
28044
28045
.....
28810
28811
28812
28813
28814
28815
28816
28817
28818
28819
28820
28821
28822
28823
28824
28825
28826
28827


!!
!!
!!!! Traits d’union                                                                               !!
!!
!!


TEST: pourquoi habite‐t‐on loin de son activité (traits d’union U+2010)


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

    [ce|cet|cette|ces] *WORD ci
................................................................................
__conf_content_comptant_contant__
    [<start>|,|(] non [>comptant|contant] [de|d’|du|des]
        <<- /conf/ --2>> content                                                        && Confusion. Locution prépositive “non content de…”.|https://fr.wiktionary.org/wiki/non_content_de

TEST: elle avait tout son {{contant}} de problèmes.
TEST: non {{comptant}} de s’en prendre à eux, il s’attaqua aussi à elles


# contre partie
__conf_en_contrepartie__
    [en|sans] >contre >parti
        <<- /conf/ -2:3>> contrepartie              && Confusion. Locution “\1 contrepartie”.

TEST: en {{contre parti}}                           ->> contrepartie
TEST: sans {{contres partis}}                       ->> contrepartie


# corps / cor
__conf_corps_cor__
    !! à bras-le-corps ¡¡
    [à|a] [bras-le-corps|bras-le-cor]
    [à|a] [bra|bras] [le|les] [>cor|corps|>core|corre]
        <<- /conf/ ->> à bras-le-corps              && Locution “à bras-le-corps”.|https://fr.wiktionary.org/wiki/%C3%A0_bras-le-corps
................................................................................

    ma  @:(?:Q.*:e:i|V1.*:Y)¬:f:s
        <<- /conf/ -1>> m’a                         && Confusion probable : “\-2“ est un participe passé. Vous confondez probablement “ma” et “m’a” (contraction de “me” suivi du verbe avoir “a”).

TEST: tu {{ma}} prise par surprise                          ->> m’as
TEST: il {{ma}} tuée                                        ->> m’a
TEST: cette femme ne {{ma}} prise que deux fois             ->> m’a
TEST: {{on}} {{ma}} dézinguée                               ->> ont|||m’a
TEST: ça {{ma}} {{foutu}} en l’air
TEST: cet homme {{ma}} succédé à ce poste                   ->> m’a
TEST: {{ma}} {{donner}} la nausée, ce con
TEST: c’est ça qui {{ma}} forcée à poursuivre               ->> m’a
TEST: ça ma grande, c’est mon secret


................................................................................
__conf_n_est_ce_pas__
    n’ [es|ai|aie|aies|et|ait|aient|hé|eh|e|é] [ce|se] pas
    n’ [es-ce|ai-ce|aie-ce|aies-ce|et-ce|ait-ce|aient-ce|hé-ce|eh-ce|e-ce|é-ce] pas
        <<- /conf/ ->> n’est-ce pas                         && Confusion. N’est-ce pas.|https://fr.wiktionary.org/wiki/n%E2%80%99est-ce_pas

TEST: on en a plus qu’assez, {{n’ait-ce pas}} ?


# nez / né
__conf_nez_né__
    !! à plein nez ¡¡
    [à|a] [plain+s|plein+s] [né+ses|nez]
        <<- /conf/ ->> à plein nez                          && Confusion. Locution “à plein nez”.|https://fr.wiktionary.org/wiki/%C3%A0_plein_nez

    !! à vue [de|d’] nez ¡¡
    [à|a] [vu+ses|vut] [de|d’] [né+ses|nais|nait|nez]
        <<- /conf/ ->> à vue de nez                         && Confusion. Locution “à vue de nez”.|https://fr.wiktionary.org/wiki/%C3%A0_vue_de_nez

    !! nez à nez ¡¡
    [né+ses|ne|nez|nait|nais] [à|a] [né+ses|ne|nez|nait|nais]
        <<- /conf/ ->> nez à nez                            && Confusion. Locution “nez à nez”.|https://fr.wiktionary.org/wiki/nez_%C3%A0_nez

    [à|a] [mon|ton|son|notre|votre|leur] né
    au [né+ses]
    [dans|sur|sous] le [né+ses]
    >crotte [de|d’] [né+ses]
    [>mettre|>fourrer] ?@:[WX]¿ [le|mon|ton|son|notre|votre|leur] [né+ses]
    >voir ?@:[WX]¿ plus loin [que|qu’] [le|mon|ton|son|notre|votre|leur] [né+ses]
    >voir ?@:[WX]¿ plus loin [que|qu’] le bout [de|d’] [mon|ton|son|notre|votre|leur] [né+ses]
    >avoir du [né+ses]
        <<- /conf/ --1>> nez                                && Confusion. Pour l’organe olfactif, écrivez “nez”.|https://fr.wiktionary.org/wiki/nez

    [né+ses] au vent
        <<- /conf/ -1>> nez                                 && Confusion. Pour l’organe olfactif, écrivez “nez”.|https://fr.wiktionary.org/wiki/nez

TEST: dans le {{né}}                                                    ->> nez
TEST: {{a plain né}}                                                    ->> à plein nez
TEST: {{a vu de nez}}                                                   ->> à vue de nez
TEST: elles se retrouvent {{né à né}}                                   ->> nez à nez
TEST: je ne puis tolérer qu’il me raccroche au {{né}}                   ->> nez
TEST: avancer {{né}} au vent                                            ->> nez
TEST: ne fourre pas ton {{né}} n’importe où                             ->> nez
TEST: ça sent le gaz à plein nez
TEST: à vue de nez, ça pue bien fort


# notre / nôtre -- votre / vôtre
# Hunspell corrige déjà les formes au pluriel (les nôtres).
__conf_nôtre_notre__
    [le|la|les|du|des|au|aux] notre
        <<- /conf/ not value(>1, "|père|") -2>> nôtre                       && Confusion : « notre possession », « la nôtre ».

................................................................................
    >accoster ?@:[WX]¿ à ce ?petit¿ [>pore|>porc]
        <<- /conf/ --1>> port                                               && Confusion. Pour évoquer un havre côtier où les bâteaux accostent, écrivez “port”.|https://fr.wiktionary.org/wiki/port

    [>pore|>porc] [usb|RJ45|DVI|HDMI|Ethernet|DisplayPort]
        <<- /conf/ -1>> port|ports                                          && Confusion. Pour évoquer les connecteurs, écrivez “port”.|https://fr.wiktionary.org/wiki/port

    [pore|porc] de l’ [écharpe|étoile|épée]
    [pore|porc] du masque
        <<- /conf/ -1>> port                                                && Confusion. Pour évoquer les objects que l’on porte, écrivez “port”.|https://fr.wiktionary.org/wiki/port

TEST: les {{ports}} de la peau
TEST: du {{port}} au caramel
TEST: elle prépare un rôti de {{port}}
TEST: j’en ai marre de bouffer du {{port}}
TEST: le {{pore}} de l’étoile jaune
................................................................................
    ?[de|d’]¿ là non plus
    ¿[de|d’]¿ la fleur au fusil
    ¿[de|d’]¿ la main dans la main
    ¿[de|d’]¿ la mort dans l’ âme
    ¿[de|d’]¿ la queue entre les jambes
    ¿[de|d’]¿ la peur au ventre
    l’ air [de|d’] rien
    la gorge [nouée|serrée]
    la tête entre [mes|tes|ses|nos|vos|leurs] mains
    ?le¿ dos au mur
    le cas échéant
    le cœur battant la chamade
    le cœur [gros|serré]
    le moins du monde
    le moment venu
................................................................................
    [composante+s] alpha
    >compte à rebours
    >compte offshore
    concours [de|d’] beauté
    >conférence [de|d’] presse
    >congé [maternité|paternité]
    >conseiller d’ orientation [scolaire|professionnelle]
    >connexion ?à¿ Internet
    >conte [de|d’] fées
    >contrôle [de|d’] routine
    >convention [récepteur|générateur]
    >coque [de|d’] noix
    >corbeille à >pain
    >correspondant [de|d’] guerre
    >coup [de|d’] [avance|balai|barre|bâton|bec|bélier|bite|blues|bol|botte|boule|boutoir|cœur|chaud|coude|couteau|dé|dent|déprime|éclat|épaule|éponge|épée|estoc|État|foudre|fil|filet|force|froid|genou|grâce|>griffe|grisou|gueule|hache|hanche|jarnac|jeune|jus|klaxon|main|maître|maitre|marteau|massue|nostalgie|œil|patte|pied|poignard|poing|poker|pouce|pute|queue|rabot|rein|sabre|sabot|sang|savate|semonce|sifflet|soleil|surin|>tatane|tête|théâtre|tonnerre|trique|torchon|vent|vieux]
................................................................................
    >service clientèle
    >service d’ ordre
    >seuil [de|d’] tolérance
    >seuil [de|d’] tolérance à la douleur
    >silo à [>grains|blé]
    >site [de|d’] lancement
    >soldat d’ élite
    >solution [de|d’] [rechange|repli]
    >sonnette d’ alarme
    >sortie [de|d’] secours
    >soue à >cochon
    >sourate [*NUM|$:B] ?,¿ verset [*NUM|$:B]
    >sujet [de|d’] [prédilection|préoccupation]
    >suspension [de|d’] séance
    >système d’ exploitation
................................................................................

    [bien|mal|fort] @:[AW]
        <<- not value(<1, "|un|le|ce|du|mon|ton|son|notre|votre|leur|") ~1>> *

    si  @:[AW]
        <<- not (value(\2, "|bien|") and value(>1, "|que|qu’|")) and not value(\2, "|tant|") ~1>> *

    un [chouia|chouïa|rien|tantinet]  ?[trop|plus|moins]¿
        <<- morph(>1, ":A", ":G") ~>> *

    un [brin|minimum|poil|soupçon]  ?[trop|plus|moins]¿
        <<- morph(>1, ":A", ":(?:A.*:[me]:[si]|G)") ~>> *

    [assez|trop]  @:[AW]¬:[123][sp]
        <<- ~1>> *

    pas [assez|trop]
        <<- not morph(<1, ":D.*:(?:m:s|[me]:p)") ~1>> *

................................................................................

    *WORD       [tous|toutes|tout_e_s]
        <<- morph(\1, ":[123]p") ~2>> *

    on  ?[ne|n’]¿  ?[le|la|l’|les|me|m’|te|t’|se|s’|nous|vous|lui|leur|y]¿  ?[le|la|l’|les|en|y|lui|leur]¿  *WORD  [tous|toutes|tout_e_s]
        <<- morph(\-2, ":[123]s") ~-1>> *

    [tous|toutes] , sans >exception ,
        <<- ~2:0>> *


@@@@
@@@@
@@@@
@@@@
@@@@GRAPH: purge_passe3|pp3                                                                        _
................................................................................
TEST: Si vous devez partir ou rester
TEST: Si Rosanna est venue ici, elle y est venue fatiguée par la vie
TEST: ceux de modeste condition n’ont pas semblable privilège
TEST: peut-être qu’ailleurs il est des pucelles ou des demoiselles pour porter ce nom.
TEST: la qualité desdits malheureux
TEST: ç’a été dur.
TEST: dût ma vanité en souffrir, je viendrai quoi qu’il arrive
TEST: certaines régions sont un poil plus compliquées


@@@@
@@@@
@@@@
@@@@
@@@@END_GRAPH                                                                                      _
................................................................................
    de  [la|l’|leur]  @:[NA]¬:Y  <end>
    de  [la|l’|leur]  @:[NA]¬:Y  ?,¿ [ne|n’|me|m’|te|t’|se|s’|nous|vous|y|c’|ça|ç’|je|j’|tu|il|elle|on|ils|elles|iel|iels|le|la|l’|les|mon|ma|ta|sa|notre|votre|leur|mes|tes|ses|nos|vos|leurs|ce|cet|cette|ces|quel|quels|quelle|quelles|est]
    de  [la|l’|leur]  @:[NA]¬:Y  @:[VR]¬:[NAP]
    de  [la|l’|leur]  @:[NA]¬:Y  , @¬:[NA]
        <<- ~1:3>> *

    $:LR [de|d’]  [la|l’|leur|un|une|ce|cet|cette|ces|mon|ton|son|ma|ta|sa|mes|tes|ses|notre|votre|nos|vos|leurs]  @:[NA]  <end>
    $:LR [de|d’]  [la|l’|leur|un|une|ce|cet|cette|ces|mon|ton|son|ma|ta|sa|mes|tes|ses|notre|votre|nos|vos|leurs]  @:[NA]  ?,¿ [ne|n’|me|m’|te|t’|se|s’|nous|vous|y|c’|ça|ç’|je|j’|tu|il|elle|on|ils|elles|iel|iels|le|la|l’|les|mon|ma|ta|sa|notre|votre|leur|mes|tes|ses|nos|vos|leurs|ce|cet|cette|ces|quel|quels|quelle|quelles|est]
    $:LR [de|d’]  [la|l’|leur|un|une|ce|cet|cette|ces|mon|ton|son|ma|ta|sa|mes|tes|ses|notre|votre|nos|vos|leurs]  @:[NA]  @:[VR]¬:[NAP]
    $:LR [de|d’]  [la|l’|leur|un|une|ce|cet|cette|ces|mon|ton|son|ma|ta|sa|mes|tes|ses|notre|votre|nos|vos|leurs]  @:[NA]  , @¬:[NA]
        <<- ~1:4>> *

    $:LR [des|du|de|d’] @:[NA] <end>
    $:LR [des|du|de|d’] @:[NA] ?,¿ [ne|n’|me|m’|te|t’|se|s’|nous|vous|y|c’|ça|ç’|je|j’|tu|il|elle|on|ils|elles|iel|iels|le|la|l’|les|mon|ma|ta|sa|notre|votre|leur|mes|tes|ses|nos|vos|leurs|ce|cet|cette|ces|quel|quels|quelle|quelles|est]
    $:LR [des|du|de|d’] @:[NA] @:[VR]¬:[NAP]
    $:LR [des|du|de|d’] @:[NA] , @¬:[NA]
        <<- ~1:3>> *

    en [plein|pleine] @:[NA]  <end>
    en [plein|pleine] @:[NA]  ?,¿ [ne|n’|me|m’|te|t’|se|s’|nous|vous|y|c’|ça|ç’|je|j’|tu|il|elle|on|ils|elles|iel|iels|le|la|l’|les|mon|ma|ta|sa|notre|votre|leur|mes|tes|ses|nos|vos|leurs|ce|cet|cette|ces|quel|quels|quelle|quelles|est]
    en [plein|pleine] @:[NA]  @:[VR]¬:[NAP]
    en [plein|pleine] @:[NA]  , @¬:[NA]
        <<- ~1:3>> *

    [à|avec|chez|contre|dans|envers|par|pour|selon|sous|sur|au|aux] [__URL__|__MAIL__]
        <<- ~>> *

................................................................................
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: comme ces informations m’avaient {{manquées}}
TEST: les notes que tu m’as données sont mal écrites.
TEST: Garde précieusement les secrets que je t’ai confiés.
TEST: je ne manquai pas de travailler aux choses qu’il m’avait prescrites
TEST: Quelle mouche l’a piqué ?
TEST: Quelle mouche l’a piquée ?
#TEST: Quelle mouche nous a piqué ?
#TEST: Quelle mouche nous a piquée ?
TEST: Quelle mouche nous a piqués ?
TEST: Quelle mouche nous a piquées ?
TEST: Quelle mouche vous a piqué ?
TEST: Quelle mouche vous a piquée ?
TEST: Quelle mouche vous a piqués ?
TEST: Quelle mouche vous a piquées ?
TEST: Quelle mouche les a piqués ?
TEST: Quelle mouche les a piquées ?


__ppas_qui_avoir__
    qui  ?[ne|n’]¿  ?[lui|leur]¿  >avoir  @:Q.*:(?:f|m:p)¬:m:[si]
        <<- /ppas/ --1>> =suggVerbPpas(\-1, ":m:s")         && 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.
................................................................................
__imp_laisser_le_la_les_infi__
    [laisse|laissons|laissez]  [le|la|les]  *WORD
        <<- /imp/ space_after(\1, 1, 1) and morph(\3, ":(?:Y|Ov)", ":[NAB]") and not morph(<1, ":O[sv]")
        -1:2>> \1-\2                                    && S’il s’agit d’un impératif, mettez un trait d’union.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=4206

TEST: {{Laisse les}} entrer…
TEST: {{Laissez la}} venir…
TEST: {{laisse le}} faire
TEST: Laisse les chiens tranquilles
TEST: Laissez la peste leur pourrir la vie encore quelque temps.
TEST: le coût humain de la guerre qu’il a laissé les submerger.
TEST: je vous laisse les consulter
TEST: Je les laisse la découvrir !


................................................................................
        <<- /inte/ space_after(\2, 1, 1) and morph(\2, ":V.*:3s", ":[GNW]") and not value(\1, "|ce|il|elle|on|")
        -2:3>> \2-\3                                                                                && Forme interrogative ? Mettez un trait d’union.

TEST: {{prend on}} le temps d’y réfléchir ?
TEST: De quel droit {{vient il}} m’{{ennuyer}} ?
TEST: comment {{était il}}
TEST: Pourquoi le message de Jean {{était il}} très radical pour son époque ?
TEST: Pourquoi le message de Jean était‐il très radical pour son époque ? (Hyphen U+2010)


__inte_union_ce!7__
    [<start>|,|(] [est|était|étaient] ce ?pas¿ [le|la|les|l’|un|une|de|des|d’|ce|cet|cette|ces|quelques|plusieurs|mon|ma|ta|sa|notre|votre|leur|mes|tes|ses|nos|vos|leurs]
    [<start>|,|(] [est|était|étaient] ce ?pas¿ @:G¬:[NA].*:[me]:[si]|>(?:qu[ei’]|pourquoi|dont)/
    [<start>|,|(] [est|était|étaient] ce [ton|son] @:N¬:A.*:[me]:[si]
        <<- /inte/ space_after(\2, 1, 1) -2:3>> \2-\3                                               && Forme interrogative ? Mettez un trait d’union.
................................................................................

__conj_tous_toutes__
    [tous|toutes]  @:V¬:(?:G|N|A|3p|P|Q|V[23].*:Y)
    [tous|toutes]  qui  @:V¬:(?:G|3p|P)
        <<- /conj/ not morph(<1, ":[VR]|>(?:et|ou)/")
        --1>> =suggVerb(\-1, ":3p")                                     && Conjugaison erronée. Accord avec “\1”. Le verbe devrait être à la 3ᵉ personne du pluriel.

TEST: Tous {{venait}} à la fête.                                        ->> venaient
TEST: Toutes {{ignorait}} ce qu’ils avaient fait.                       ->> ignoraient
TEST: tous, sans exception, {{devine}} le fond du problème              ->> devinent
TEST: toutes, sans exception, {{irons}} à l’Université                  ->> iront
TEST: Il faut mettre un coup de grâce et tous monter sur Paris par tous les moyens possibles
TEST: Pourrons-nous tous vaincre.
TEST: Vous pouvez tous triompher de votre adversaire avec de la ruse.
TEST: tous prendre une bonne cuite, voilà ce que nous allons faire.
TEST: on va tous manger au resto.
TEST: elles vont toutes aller faire un tour