Grammalecte  Check-in [e431c33d87]

Overview
Comment:[fr] nr: det subst , adj
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk | fr
Files: files | file ages | folders
SHA3-256: e431c33d87a5a160db63d301457adc31df02d6883c7a9ba6e8a04c8ad7978fb6
User & Date: olr on 2021-01-25 14:05:35
Other Links: manifest | tags
Context
2021-01-25
15:12
[fr] suggestions: verbe-nous -> interrogatif + impératif check-in: 623e5fc83d user: olr tags: fr, trunk
14:05
[fr] nr: det subst , adj check-in: e431c33d87 user: olr tags: fr, trunk
11:12
[fr] phonet_simil: furette furète check-in: 97f3720b42 user: olr tags: fr, trunk
Changes

Modified gc_lang/fr/rules.grx from [1e387fc832] to [c6ca445e39].

2901
2902
2903
2904
2905
2906
2907
2908
2909
2910
2911
2912
2913
2914
2915
....
6007
6008
6009
6010
6011
6012
6013
6014
6015
6016
6017
6018
6019
6020
6021
....
6885
6886
6887
6888
6889
6890
6891



6892
6893
6894
6895
6896
6897
6898
....
6912
6913
6914
6915
6916
6917
6918
6919
6920
6921
6922
6923
6924
6925
6926
6927
6928
....
6953
6954
6955
6956
6957
6958
6959


6960
6961
6962
6963
6964
6965
6966
....
6989
6990
6991
6992
6993
6994
6995

6996
6997
6998
6999
7000
7001
7002
.....
23277
23278
23279
23280
23281
23282
23283








23284
23285
23286
23287
23288
23289
23290
.....
23394
23395
23396
23397
23398
23399
23400








23401
23402
23403
23404
23405
23406
23407
.....
23492
23493
23494
23495
23496
23497
23498








23499
23500
23501
23502
23503
23504
23505
.....
23575
23576
23577
23578
23579
23580
23581








23582
23583
23584
23585
23586
23587
23588
.....
23762
23763
23764
23765
23766
23767
23768








23769
23770
23771
23772
23773
23774
23775
.....
23786
23787
23788
23789
23790
23791
23792








23793
23794
23795
23796
23797
23798
23799
.....
23875
23876
23877
23878
23879
23880
23881








23882
23883
23884
23885
23886
23887
23888
.....
23944
23945
23946
23947
23948
23949
23950











23951
23952
23953
23954
23955
23956
23957
.....
24038
24039
24040
24041
24042
24043
24044








24045
24046
24047
24048
24049
24050
24051
.....
24107
24108
24109
24110
24111
24112
24113









24114
24115
24116
24117
24118
24119
24120
.....
24223
24224
24225
24226
24227
24228
24229









24230
24231
24232
24233
24234
24235
24236
.....
24374
24375
24376
24377
24378
24379
24380









24381
24382
24383
24384
24385
24386
24387
.....
24398
24399
24400
24401
24402
24403
24404








24405
24406
24407
24408
24409
24410
24411
.....
24421
24422
24423
24424
24425
24426
24427








24428
24429
24430
24431
24432
24433
24434
.....
24440
24441
24442
24443
24444
24445
24446









24447
24448
24449
24450
24451
24452
24453
.....
24463
24464
24465
24466
24467
24468
24469









24470
24471
24472
24473
24474
24475
24476
.....
31973
31974
31975
31976
31977
31978
31979
31980
31981
31982
31983
31984
31985
31986
31987

31988
31989
31990
31991
31992
31993
31994

__da_contre__
    contre [moi|toi|soi|lui|elle|iel|nous|vous|eux|elles|iels]
        <<- =>> select(\1, ":R")

    [la|les|des|une|cette|ma|ta|sa|notre|votre|leur+s] >lutte       ?$:A¬:G¿  contre
    [>accusation|>action|>assaut|>attentat|>croisade|>guerre]       ?$:A¬:G¿  contre
    [>guerre|>jihad|>offensive|>ratonnade|>sortilège|>violence]     ?$:A¬:G¿  contre
    [>antidote|>crime|>philtre|>remède|>sérum|>vaccin|>solution]    ?$:A¬:G¿  contre
        <<- =>> select(\-1, ":R")

    contre
        <<- not morph(<1, ":[DA].*:[me]:[si]") =>> select(\1, "", ":N")

__da_dans__
................................................................................
TEST: {{quelques un}} seront blâmés, les autres pardonnés                       ->> quelques-uns
TEST: des {{rendez vous}}                                                       ->> rendez-vous
TEST: un Mars par {{rendez vous}}                                               ->> rendez-vous
TEST: Habiter au {{rez de chaussée}}, quelle horreur.                           ->> rez-de-chaussée
TEST: encore un {{rond point}}                                                  ->> rond-point|ronds-points
TEST: J’en ai ma claque de ces {{ronds de cuir}}                                ->> ronds-de-cuir
TEST: agis toujours avec {{sang froid}}                                         ->> sang-froid
TEST: le {{sauve qui peut}} qui s’ensuivit                                      ->> sauve-qui-peut
TEST: C’est de la {{science fiction}}.                                          ->> science-fiction
TEST: des {{stock options}}                                                     ->> stock-options
TEST: Tout ce {{soi disant}} esprit religieux                                   ->> soi-disant
TEST: implications {{sous jacentes}}                                            ->> sous-jacentes
TEST: c’est du {{sur mesure}}                                                   ->> sur-mesures
TEST: leur {{terre plein}}                                                      ->> terre-plein
TEST: C’est un peu trop {{tape à l’œil}} comme couleur, tu ne trouves pas ?     ->> tape-à-l’œil
................................................................................
TEST: {{mais pourtant}}                                         ->> mais|cependant|pourtant|toutefois
TEST: {{car en effet}}                                          ->> car|en effet
TEST: délirant {{et voire}} ridicule                            ->> voire|et|et voir
TEST: {{voire même}}                                            ->> voire|même


__pleo_substantifs__



    >archipel d’ [iles|îles]
        <<- /pleo/ not morph(>1, ":(?:A.*:[fe]:[pi]|W)") ->> archipel                       && Pléonasme.

    avenir devant [moi|toi|soi|lui|elle|nous|vous|eux|elles]
        <<- /pleo/ morph(<1, ":A.*:[me]:[si]") ->> avenir                                   && Pléonasme.

    >coup de foudre [immédiat+s|instantané+ses|soudain]
................................................................................
        <<- /pleo/ ->> \1                                                                   && Pléonasme.

    taux d’ >alcoolémie
        <<- /pleo/ ->> taux d’alcool|alcoolémie                                             && Pléonasme. L’alcoolémie est le taux d’alcool dans le sang.

    >apanage >exclusif
    >applaudissement des deux mains
    >apparence >extérieure
    >bénévole >volontaire
    [bonne+s] >aubaine
    >bourrasque de vent
    >cirrhose du foie
    conjoncture actuelle
    consensus [commun+s]
    >entraide >mutuel
    >erreur >involontaire
    >étape [>intermédiaire|successive+s]
................................................................................
    [petite+s|légère+s] >collation
    [petite+s] [>camionnette|>fillette|>maisonnette]
    [premier+s] >balbutiement
    [première+s] >priorité
    vieilles hardes
        <<- /pleo/ ->> \2                                           && Pléonasme.



TEST: avoir un grand {{avenir devant soi}}                      ->> avenir
TEST: cet {{archipel d’îles}} m’ennuyait                        ->> archipel
TEST: prenons une {{légère collation}}                          ->> collation
TEST: un {{coup de foudre soudain}}                             ->> coup de foudre
TEST: rien ne vaut l’{{entraide mutuelle}}                      ->> entraide
TEST: {{médias d’informations}}                                 ->> médias
TEST: {{cirrhose du foie}}                                      ->> cirrhose
................................................................................
TEST: {{solidaires les uns des autres}}                         ->> solidaires
TEST: ce {{taux d’alcoolémie}} est très élevé                   ->> taux d’alcool|alcoolémie
TEST: {{tunnels souterrains}}                                   ->> tunnels
TEST: {{vieilles hardes}}                                       ->> hardes
TEST: un archipel d’îles déchiquetées
TEST: Très rares en France, les « orages sans pluie » ou « heat burst » sont des orages secs qui provoquent une montée de température
TEST: des hommes généralement quelconques



__pleo_verbes__
    >abolir [absolument|entièrement|complétement|complètement|totalement]
    >acculer [au|aux] >pied du mur
    >achever [absolument|entièrement|complétement|complètement|totalement]
    [>ajouter|>rajouter] [de|en] plus
................................................................................
TEST: L’{{amande}} {{amer}}                                                         ->> |||amère
TEST: l’{{amicale}} {{animal}}                                                      ->> amical|||animale
TEST: l’amour {{immortels}}                                                         ->> immortel
TEST: du chien et de l’{{excellente}} {{collier}} qu’il avait autour du cou.        ->> excellent|||
TEST: du chien et de l’étonnant {{colliers}} qu’il avait autour du cou.             ->> collier
TEST: elle prendra l’{{avions}} dès que possible                                    ->> avion










__gn_l_3m__
    l’  *WORD  *WORD  *WORD
        <<- /gn/ morph(\1, ":D") and morph(<1, "<start>|:V", "*") and \4.islower() >>>
        <<- /gn/ morph(\2, ":[NA].*:m:[si]", "*") and morph(\3, ":[NA].*:[me]:[si]", ":(?:[123][sp]|G|P|B)|;C") and morph(\4, ":[NA].*:f", "*")
        -4>> =suggMasSing(\4)                                                               && Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au masculin singulier.
        <<- /gn/ __else__ and morph(\2, ":[NA].*:f:[si]", "*") and morph(\3, ":[NA].*:[fe]:[si]", ":(?:[123][sp]|G|P|B)|;C") and morph(\4, ":[NA].*:m", "*")
................................................................................
TEST: c’était le chien {{perdue}} des voisins.                                          ->> perdu
TEST: viens vite ou le pari {{imperdables}} sera moins facile…                          ->> imperdable
TEST: connaître et le grand {{perdante}}                                                ->> perdant
TEST: Le bruit {{perçus}} par les voisins.                                              ->> perçu
TEST: si le premier film est un triomphe, le deuxième est un demi-succès, et le troisième une déception.
TEST: Cela aboutira sur une contractualisation coûteuse pour organiser cette divergence d’intérêts, et le gestionnaire aura le dernier mot.










__gn_le_3m__
    le  *WORD  *WORD  *WORD
        <<- /gn/ not value(<1, "|et|ou|") and morph(\1, ":D")
            and morph(\2, ":[NA].*:[me]:[si]", ":(?:[123][sp]|G)") and morph(\3, ":[NA].*:[me]:[si]", ":(?:[123][sp]|G|P)") and morph(\4, ":[NA].*:[fp]", "*") and \4.islower()
        -4>> =suggMasSing(\4)                                                               && Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au masculin singulier.

................................................................................
TEST: il imaginait de la pluie {{noir}} tombant sur une terre dévastée.         ->> noire
TEST: je voyais de la pluie {{noires}}                                          ->> noire
TEST: Il faut donc examiner ensemble le panneau et la paroi latérale.
TEST: Il faut donc examiner ensemble le panneau et la paroi latéraux.
TEST: Il faut donc examiner ensemble les panneaux et la paroi latéraux.
TEST: Il faut donc examiner ensemble les panneaux et la paroi latérale.










__gn_la_3m__
    la  *WORD  *WORD  *WORD
        <<- /gn/ not value(<1, "|et|ou|") and morph(\1, ":D")
            and morph(\2, ":[NA].*:[fe]:[si]", ":(?:[123][sp]|G)") and morph(\3, ":[NA].*:[fe]:[si]", ":(?:[123][sp]|G|P)|;C") and morph(\4, ":[NA].*:[mp]", "*") and \4.islower()
        -4>> =suggFemSing(\4)                                                               && Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au féminin singulier.

................................................................................
TEST: elle se souvenait de leur {{grande}} {{sot}}                              ->> grand|||sotte
TEST: je me souviens de leur verve {{décalé}}                                   ->> décalée
TEST: ils arrivent et leur arrogance {{insupportables}} nous fatigue tous.      ->> insupportable
TEST: {{leur}} gros {{grains}}                                                  ->> leurs|||grain
TEST: Que ferons-nous de {{leur}} gros {{grains}}                               ->> leurs|||grain
TEST: 3 milliards d’euros que depuis 2012 l’État leur a volés










__gn_leur_3m__
    leur  *WORD  *WORD  *WORD
        <<- /gn/ morph(\1, ":D") and morph(<1, "<start>|:V", "*") and \4.islower() >>>
        <<- /gn/ morph(\2, ":[NA].*:m:[si]", "*") and morph(\3, ":[NA].*:[me]:[si]", ":(?:[123][sp]|G|P|B)|;C") and morph(\4, ":[NA].*:f", "*")
        -4>> =suggMasSing(\4)                                                               && Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au masculin singulier.
        <<- /gn/ __else__ and morph(\2, ":[NA].*:f:[si]", "*") and morph(\3, ":[NA].*:[fe]:[si]", ":(?:[123][sp]|G|P|B)|;C") and morph(\4, ":[NA].*:m", "*")
................................................................................
TEST: un exercice pas très {{utiles}}.                                                      ->> utile
TEST: un homme {{grands}}                                                                   ->> grand
TEST: un homme {{futiles}}                                                                  ->> futile
TEST: que sais-tu d’un homme {{grande}} comme un arbre                                      ->> grand
TEST: je me souviens d’un homme {{arrogants}}                                               ->> arrogant
TEST: C’est pas les quelques vues sur Linux qui vont rattraper un scénario {{bancale}}.     ->> bancal










__gn_une_2m__
    une  *WORD  *WORD
        <<- /gn/ not value(<1, "|et|ou|d’|") and not morph(\3, ">seul/") >>>
        <<- /gn/ morph(\2, ":[NA].*:[fe]", ":(?:B|G|V0)") and morph(\3, ":[NA].*:m", "*") and not apposition(\2, \3)
        -3>> =suggFemSing(\3, True)                                                                 && Accord de genre erroné : le syntagme « \1 \2 » est féminin, « \3 » est masculin.
        <<- /gn/ \2 != "fois" and morph(\2, ":[NA].*:[si]", ":G") and morph(\3, ":[NA].*:p", "*") and not apposition(\2, \3)
................................................................................
TEST: Une grande {{homme}}.                                                     ->>
TEST: une géologue {{intelligents}}                                             ->> intelligente
TEST: Et une femme {{déterminées}}                                              ->> déterminée
TEST: on parle là d’une femme {{inconnu}}                                       ->> inconnue
TEST: on parle d’une Église {{brûlées}}                                         ->> brûlée
TEST: L’or allume le feu d’une cupidité d’une couleur et d’une sorte différentes.










__gn_du_1m__
    du  *WORD
        <<- /gn/ morph(\2, ":[NA].*:f", ":[GWme]") -1>> de la                               && Accord de genre erroné : « \2 » est féminin.
        <<- /gn/ __also__ and hasMasForm(\2) -2>> =suggMasSing(\2, True)                    && Accord de genre erroné : « \1 » est un déterminant masculin.
        <<- /gn/ morph(\2, ":[NA].*:p", ":[siGW]") -2>> =suggMasSing(\2)                    && Accord de nombre erroné : « \2 » devrait être au singulier.

................................................................................
        -4>> =suggMasSing(\4)                                                               && Accord de nombre erroné avec « \2 \3 » : « \4 » devrait être au singulier.

TEST: cet outil {{terribles}} qu’il a dans les mains                            ->> terrible
TEST: J’aimerais connaître de quel parti {{gauchistes}} on parle.               ->> gauchiste
TEST: au petit {{publique}}                                                     ->> public
TEST: Ils jugeront en toute impartialité de ce cas {{délirante}}.               ->> délirant










__gn_det_mas_sing_3m__
    [ledit|un|ce|cet|au|quel|audit|dudit|aucun|nul]  *WORD  *WORD  *WORD
        <<- /gn/ morph(<1, "<start>|:V", "*") and morph(\2, ":[NA].*:[me]:[si]") and morph(\3, ":[NA].*:[me]:[si]", ":(?:[123][sp]|G|P|B)|;C") and morph(\4, ":[NA].*:[pf]", "*") and \4.islower()
        -4>> =suggMasSing(\4)                                                               && Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au masculin singulier.

TEST: ledit martyr oublié {{réhabilitée}}                                       ->> réhabilité
................................................................................
TEST: mon héritage {{perdue}}                                                   ->> perdu
TEST: comment osez-vous médire de mon héritage {{glorieuse}}                    ->> glorieux
TEST: on parlait de son escapade {{éperdu}} au milieu de la nuit.               ->> éperdue
TEST: ton étonnante {{secret}} ne sera pas au programme.                        ->> secrète
TEST: elle s’étonnait de ton opposition {{grandissantes}}                       ->> grandissante
TEST: le ton monte.













__gn_det_mon_ton_son_3m__
    [mon|ton|son]  *WORD  *WORD  *WORD
        <<- /gn/ morph(<1, "<start>|:V", "*") and \4.islower() >>>
        <<- /gn/ morph(\2, ">[bcçdfgjklmnpqrstvwxz].*:[NA].*:[me]:[si]") and morph(\3, ":[NA].*:[me]:[si]", ":(?:[123][sp]|G|P|B)|;C") and morph(\4, ":[NAQ].*:[pf]", "*")
        -4>> =suggMasSing(\4)                                                               && Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au masculin singulier.
        <<- /gn/ re.search("^[aâeéèêiîoôuûyœæ]", \2) >>>
................................................................................

TEST: quelle belle {{étourdi}}, cette gamine                                    ->> étourdie
TEST: j’en ai assez de cette ville {{stressées}} en permanence.                 ->> stressée
TEST: Peut-on imaginer de plus {{beaux}} {{enfant}} ?                           ->> beau|||enfants
TEST: de ma grande {{ami}}                                                      ->> amie
TEST: il fut cette fois ulcéré de voir son entreprise une fois de plus ruinée par la malchance.










__gn_det_fem_sing_3m__
    [ladite|une|cette|ma|ta|sa|quelle|aucune|nulle]  *WORD  *WORD  *WORD
        <<- /gn/ morph(<1, "<start>|:V", "*") and morph(\2, ":[NA].*:[fe]:[si]") and morph(\3, ":[NA].*:[fe]:[si]", ":(?:[123][sp]|G|P|B)|;C") and morph(\4, ":[NA].*:[pm]", "*") and \4.islower()
        -4>> =suggFemSing(\4)                                                               && Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au féminin singulier.

TEST: une amie prodigieuse {{récompensé}}                                       ->> récompensée
................................................................................
TEST: notre {{belle}} {{avenu}}                                                 ->> beau|||avenue
TEST: ils viennent de chaque coin {{ignorée}} du pays.                          ->> ignoré
TEST: que faire de votre {{ennuyeuse}} {{avocat}}                               ->> ennuyeux|||avocate
TEST: de quelque cartable {{vides}}                                             ->> vide
TEST: de notre petit {{amis}}                                                   ->> ami
TEST: Quelque chose tombé dans le puits a souillé l’eau.











__gn_det_epi_sing_3m__
    [chaque|quelque|notre|votre]  *WORD  *WORD  *WORD
        <<- /gn/ morph(<1, "<start>|:V", "*") and \4.islower() >>>
        <<- /gn/ morph(\2, ":[NA].*:m:[si]", ":[fe]") and morph(\3, ":[NA].*:[me]:[si]", ":(?:[123][sp]|G|P|B)|;C") and morph(\4, ":[NA].*:f", "*")
        -4>> =suggMasSing(\4)                                                               && Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au masculin singulier.
        <<- /gn/ __else__ and morph(\2, ":[NA].*:f:[si]", ":[me]") and morph(\3, ":[NA].*:[fe]:[si]", ":(?:[123][sp]|G|P|B)|;C") and morph(\4, ":[NA].*:m", "*")
................................................................................
TEST: Les besoins minimums en matière de sommeil sont-ils les mêmes d’un individu à l’autre ?
TEST: cette attention de tous les instants portée à la boussole.
TEST: les agrandissements photo
TEST: Il faut donc examiner ensemble les panneaux et les parois latéraux.
TEST: Il faut donc examiner ensemble les panneaux et les parois latérales.
TEST: l’homme les a volés











__gn_leurs_1m__
    leurs  *WORD
        <<- /gn/ morph(\2, ":[NA].*:s", ":(?:[ipGW]|[123][sp])") and not (value(>1, "|et|ou|") and morph(>2, ":[NA]"))
        -2>> =suggPlur(\2)                                                                  && Accord de nombre erroné avec « \1 » : « \2 » devrait être au pluriel.
        <<- /gn/ __also__ -1>> leur                                                         && Accord de nombre erroné avec « \2 ».

................................................................................
TEST: ces militant·e·s {{acharné}}.                                             ->> acharnés
TEST: Les éléments caractéristiques liés à ses valeurs historique et architecturale
TEST: Une des pierres veinée de rouge…
TEST: Pour maintenir le potentiel de membrane qui lui permet de communiquer avec ses voisins sous forme d’influx nerveux, un neurone a besoin d’énergie.
TEST: ces religieux inflexibles envers les femmes mais compatissants envers les tyrans qui soutiennent leur religion.
TEST: le bruit de nos pas étouffé par l’épais tapis.











__gn_det_mas_plur_2m__
    [certains|maints|quels|lesdits|desdits|auxdits]  *WORD  *WORD
        <<- /gn/ not value(<1, "|et|ou|de|d’|") and not morph(\3, ">seul/") >>>
        <<- /gn/ morph(\2, ":[NA].*:[me]", ":(?:B|G|V0)") and morph(\3, ":[NA].*:f", "*") and not apposition(\2, \3)
        -3>> =suggMasPlur(\3, True)                                                         && Accord de genre erroné : « \2 » est masculin, « \3 » est féminin.
        <<- /gn/ morph(\2, ":[NA].*:[pi]", ":G") and morph(\3, ":[NA].*:s", "*") and not apposition(\2, \3) and not (value(>1, "|et|,|") and morph(>2, ":A"))
................................................................................
TEST: certains hommes {{petite}}                                                            ->> petits
TEST: auxdits hommes {{connu}}                                                              ->> connus
TEST: quels hommes {{grandes}}                                                              ->> grands
TEST: elle se rappelle de quels rapports {{désastreuses}} il s’agit.                        ->> désastreux
TEST: de quels grands {{fou}} s’agit-il ?                                                   ->> fous
TEST: chez certains la revue Limite provoque des crises d’hystérie.










__gn_det_fem_plur_2m__
    [certaines|maintes|quelles|lesdites|desdites|auxdites]  *WORD  *WORD
        <<- /gn/ not value(<1, "|et|ou|de|d’|") and not morph(\3, ">seul/") >>>
        <<- /gn/ morph(\2, ":[NA].*:[fe]", ":(?:B|G|V0)") and morph(\3, ":[NA].*:m", "*") and not apposition(\2, \3)
        -3>> =suggFemPlur(\3, True)                                                         && Accord de genre erroné : « \2 » est féminin, « \3 » est masculin.
        <<- /gn/ morph(\2, ":[NA].*:[pi]") and morph(\3, ":[NA].*:s", "*") and not apposition(\2, \3) and not (value(>1, "|et|,|") and morph(>2, ":A"))
................................................................................

TEST: certaines idioties {{stupide}}                                                        ->> stupides
TEST: quelles grandes {{idiots}}                                                            ->> idiotes
TEST: je ne sais guère de quelles âneries {{proférés}} on parle.                            ->> proférées
TEST: quelles étonnantes {{petits}}                                                         ->> petites
TEST: ici ou auxdites lointaines {{contrée}}                                                ->> contrées










__gn_nombre_plur_2m__
    $:B:e:p  *WORD  *WORD
        <<- /gn/ not morph(<1, ">(?:et|ou)/|:R") and not morph(\3, ">(?:seul|minimum|maximum)/") >>>
        <<- /gn/ ((morph(\2, ":[NA].*:m", ":(?:B|e|G|V0|f)") and morph(\3, ":[NA].*:f", "*")) or (morph(\2, ":[NA].*:f", ":(?:B|e|G|V0|m)") and morph(\3, ":[NA].*:m", "*")))
            and not apposition(\2, \3)
        -3>> =switchGender(\3, True)                                                                && Accord de genre erroné entre « \2 » et « \3 ».
................................................................................
TEST: sept valeurs {{aléatoire}}                                                            ->> aléatoires
TEST: huit {{grandes}} {{claviers}}                                                         ->> grands|||
TEST: X a perdu mon estime et ma considération.
TEST: vivre une situation hors du commun à deux a aussi pesé dans la balance.
TEST: deux jours minimum
TEST: ils disent finalement tous les deux la même chose











__gn_des_2m__
    des  *WORD  *WORD
        <<- /gn/ (morph(<1, ":(?:[VRBXÉ]|Cs)|>comme/|<start>|>,", "*") or morph(\3, ":N", ":[AQ]")) and not morph(\3, ">(?:seul|minimum|maximum)/") >>>
        <<- /gn/ ( (morph(\2, ":[NA].*:m", ":[fe]") and morph(\3, ":[NA].*:f", "*")) or (morph(\2, ":[NA].*:f", ":[me]") and morph(\3, ":[NA].*:m", "*")) ) and not apposition(\2, \3)
        -3>> =switchGender(\3, True)                                                                && Accord de genre erroné avec « \2 ».
        <<- /gn/ __also__ and hasFemForm(\2) -2>> =switchGender(\2)                                 && Accord de genre erroné avec « \3 ».
................................................................................
TEST: des dépenses non {{nécessaire}}                                                       ->> nécessaires
TEST: Des règles pas du tout {{claire}}.                                                    ->> claires
TEST: Des peines à peine {{croyable}}.                                                      ->> croyables
TEST: Des {{chambres}} plus ou moins fortement {{éclairé}}.                                 ->> chambrés|||éclairées
TEST: Les couleurs rouge, jaune et verte ne doivent pas être utilisées
TEST: des passeports américain, canadien, néerlandais, allemand et britannique.











__gn_plusieurs_1m__
    plusieurs  *WORD
        <<- /gn/ morph(\2, ":[NA].*:s", ":[ipGWP]") and not (value(>1, "|et|ou|") and morph(>2, ":[NA]"))
        -2>> =suggPlur(\2)                                                                  && Accord de nombre erroné : « \2 » devrait être au pluriel.

TEST: plusieurs {{femme}}                                       ->> femmes
................................................................................
__conf_ait_confiance_été_faim_tort!3__
    [es|est] [confiance|conscience|envie|été|peur|faim|hâte|honte|recours|soif|tort]
    [es|est] peine [à|a]
        <<- /conf/ not tagbefore(\1, "_ceque_") and not value(<1, "|tout|d’|l’|") >>>
        <<- /conf/ not tagbefore(\1, "_1s_") -1>> ait               && Confusion probable dans l’expression “avoir \2”. Vous utilisez ici le verbe “être”.
        <<- /conf/ __else__ -1>> ait|aie                            && Confusion probable dans l’expression “avoir \2”. Vous utilisez ici le verbe “être”.

TEST: il est posssible qu’il {{est}} confiance en toi                                       ->> ait
TEST: Je crains qu’il {{est}} peine à trouver le bonheur.                                   ->> ait|aie
TEST: La révolution est crainte.
TEST: Je n’en ai cure.
TEST: Notre communauté vous est redevable.
TEST: l’humour est affaire de culture
TEST: Aller chercher l’air pur à la campagne est peine perdue.
TEST: tout est peine perdue.



#### et / est
__conf_et_est2__
    <start>  [un|une|des|le|la|l’|les|ce|cet|cette|ces|mon|ton|son|ma|ta|sa|mes|tes|ses|notre|votre|nos|vos|leur|leurs|quel|quelle|quels|quelles|quelques|certains|certaines|maints|mainets|plusieurs]  *WORD  est
        ||   [un|une|des|le|la|l’|les|ce|cet|cette|ces|mon|ton|son|ma|ta|sa|mes|tes|ses|notre|votre|nos|vos|leur|leurs|quel|quelle|quels|quelles|quelques|certains|certaines|maints|mainets|plusieurs]  *WORD  @:3p¬:G
        <<- /conf/ -4>> et







|







 







|







 







>
>
>







 







<

|







 







>
>







 







>







 







>
>
>
>
>
>
>
>







 







>
>
>
>
>
>
>
>







 







>
>
>
>
>
>
>
>







 







>
>
>
>
>
>
>
>







 







>
>
>
>
>
>
>
>







 







>
>
>
>
>
>
>
>







 







>
>
>
>
>
>
>
>







 







>
>
>
>
>
>
>
>
>
>
>







 







>
>
>
>
>
>
>
>







 







>
>
>
>
>
>
>
>
>







 







>
>
>
>
>
>
>
>
>







 







>
>
>
>
>
>
>
>
>







 







>
>
>
>
>
>
>
>







 







>
>
>
>
>
>
>
>







 







>
>
>
>
>
>
>
>
>







 







>
>
>
>
>
>
>
>
>







 







|
|






>







2901
2902
2903
2904
2905
2906
2907
2908
2909
2910
2911
2912
2913
2914
2915
....
6007
6008
6009
6010
6011
6012
6013
6014
6015
6016
6017
6018
6019
6020
6021
....
6885
6886
6887
6888
6889
6890
6891
6892
6893
6894
6895
6896
6897
6898
6899
6900
6901
....
6915
6916
6917
6918
6919
6920
6921

6922
6923
6924
6925
6926
6927
6928
6929
6930
....
6955
6956
6957
6958
6959
6960
6961
6962
6963
6964
6965
6966
6967
6968
6969
6970
....
6993
6994
6995
6996
6997
6998
6999
7000
7001
7002
7003
7004
7005
7006
7007
.....
23282
23283
23284
23285
23286
23287
23288
23289
23290
23291
23292
23293
23294
23295
23296
23297
23298
23299
23300
23301
23302
23303
.....
23407
23408
23409
23410
23411
23412
23413
23414
23415
23416
23417
23418
23419
23420
23421
23422
23423
23424
23425
23426
23427
23428
.....
23513
23514
23515
23516
23517
23518
23519
23520
23521
23522
23523
23524
23525
23526
23527
23528
23529
23530
23531
23532
23533
23534
.....
23604
23605
23606
23607
23608
23609
23610
23611
23612
23613
23614
23615
23616
23617
23618
23619
23620
23621
23622
23623
23624
23625
.....
23799
23800
23801
23802
23803
23804
23805
23806
23807
23808
23809
23810
23811
23812
23813
23814
23815
23816
23817
23818
23819
23820
.....
23831
23832
23833
23834
23835
23836
23837
23838
23839
23840
23841
23842
23843
23844
23845
23846
23847
23848
23849
23850
23851
23852
.....
23928
23929
23930
23931
23932
23933
23934
23935
23936
23937
23938
23939
23940
23941
23942
23943
23944
23945
23946
23947
23948
23949
.....
24005
24006
24007
24008
24009
24010
24011
24012
24013
24014
24015
24016
24017
24018
24019
24020
24021
24022
24023
24024
24025
24026
24027
24028
24029
.....
24110
24111
24112
24113
24114
24115
24116
24117
24118
24119
24120
24121
24122
24123
24124
24125
24126
24127
24128
24129
24130
24131
.....
24187
24188
24189
24190
24191
24192
24193
24194
24195
24196
24197
24198
24199
24200
24201
24202
24203
24204
24205
24206
24207
24208
24209
.....
24312
24313
24314
24315
24316
24317
24318
24319
24320
24321
24322
24323
24324
24325
24326
24327
24328
24329
24330
24331
24332
24333
24334
.....
24472
24473
24474
24475
24476
24477
24478
24479
24480
24481
24482
24483
24484
24485
24486
24487
24488
24489
24490
24491
24492
24493
24494
.....
24505
24506
24507
24508
24509
24510
24511
24512
24513
24514
24515
24516
24517
24518
24519
24520
24521
24522
24523
24524
24525
24526
.....
24536
24537
24538
24539
24540
24541
24542
24543
24544
24545
24546
24547
24548
24549
24550
24551
24552
24553
24554
24555
24556
24557
.....
24563
24564
24565
24566
24567
24568
24569
24570
24571
24572
24573
24574
24575
24576
24577
24578
24579
24580
24581
24582
24583
24584
24585
.....
24595
24596
24597
24598
24599
24600
24601
24602
24603
24604
24605
24606
24607
24608
24609
24610
24611
24612
24613
24614
24615
24616
24617
.....
32114
32115
32116
32117
32118
32119
32120
32121
32122
32123
32124
32125
32126
32127
32128
32129
32130
32131
32132
32133
32134
32135
32136

__da_contre__
    contre [moi|toi|soi|lui|elle|iel|nous|vous|eux|elles|iels]
        <<- =>> select(\1, ":R")

    [la|les|des|une|cette|ma|ta|sa|notre|votre|leur+s] >lutte       ?$:A¬:G¿  contre
    [>accusation|>action|>assaut|>attentat|>croisade|>guerre]       ?$:A¬:G¿  contre
    [>guerre|>jihad|offensive+s|>ratonnade|>sortilège|>violence]    ?$:A¬:G¿  contre
    [>antidote|>crime|>philtre|>remède|>sérum|>vaccin|>solution]    ?$:A¬:G¿  contre
        <<- =>> select(\-1, ":R")

    contre
        <<- not morph(<1, ":[DA].*:[me]:[si]") =>> select(\1, "", ":N")

__da_dans__
................................................................................
TEST: {{quelques un}} seront blâmés, les autres pardonnés                       ->> quelques-uns
TEST: des {{rendez vous}}                                                       ->> rendez-vous
TEST: un Mars par {{rendez vous}}                                               ->> rendez-vous
TEST: Habiter au {{rez de chaussée}}, quelle horreur.                           ->> rez-de-chaussée
TEST: encore un {{rond point}}                                                  ->> rond-point|ronds-points
TEST: J’en ai ma claque de ces {{ronds de cuir}}                                ->> ronds-de-cuir
TEST: agis toujours avec {{sang froid}}                                         ->> sang-froid
TEST: {{le}} {{sauve qui peut}} qui s’ensuivit                                  ->> la|||sauve-qui-peut
TEST: C’est de la {{science fiction}}.                                          ->> science-fiction
TEST: des {{stock options}}                                                     ->> stock-options
TEST: Tout ce {{soi disant}} esprit religieux                                   ->> soi-disant
TEST: implications {{sous jacentes}}                                            ->> sous-jacentes
TEST: c’est du {{sur mesure}}                                                   ->> sur-mesures
TEST: leur {{terre plein}}                                                      ->> terre-plein
TEST: C’est un peu trop {{tape à l’œil}} comme couleur, tu ne trouves pas ?     ->> tape-à-l’œil
................................................................................
TEST: {{mais pourtant}}                                         ->> mais|cependant|pourtant|toutefois
TEST: {{car en effet}}                                          ->> car|en effet
TEST: délirant {{et voire}} ridicule                            ->> voire|et|et voir
TEST: {{voire même}}                                            ->> voire|même


__pleo_substantifs__
    >apparence [extérieure+s]
        <<- /pleo/ not value(<1, "|en|") ->> \1                                             && Pléonasme.

    >archipel d’ [iles|îles]
        <<- /pleo/ not morph(>1, ":(?:A.*:[fe]:[pi]|W)") ->> archipel                       && Pléonasme.

    avenir devant [moi|toi|soi|lui|elle|nous|vous|eux|elles]
        <<- /pleo/ morph(<1, ":A.*:[me]:[si]") ->> avenir                                   && Pléonasme.

    >coup de foudre [immédiat+s|instantané+ses|soudain]
................................................................................
        <<- /pleo/ ->> \1                                                                   && Pléonasme.

    taux d’ >alcoolémie
        <<- /pleo/ ->> taux d’alcool|alcoolémie                                             && Pléonasme. L’alcoolémie est le taux d’alcool dans le sang.

    >apanage >exclusif
    >applaudissement des deux mains

    >bénévole >volontaire
    [bonne+s] [aubaine+s]
    >bourrasque de vent
    >cirrhose du foie
    conjoncture actuelle
    consensus [commun+s]
    >entraide >mutuel
    >erreur >involontaire
    >étape [>intermédiaire|successive+s]
................................................................................
    [petite+s|légère+s] >collation
    [petite+s] [>camionnette|>fillette|>maisonnette]
    [premier+s] >balbutiement
    [première+s] >priorité
    vieilles hardes
        <<- /pleo/ ->> \2                                           && Pléonasme.

TEST: son {{apparence extérieure}} trahissait                   ->> apparence
TEST: cette erreur en apparence extérieure à notre service
TEST: avoir un grand {{avenir devant soi}}                      ->> avenir
TEST: cet {{archipel d’îles}} m’ennuyait                        ->> archipel
TEST: prenons une {{légère collation}}                          ->> collation
TEST: un {{coup de foudre soudain}}                             ->> coup de foudre
TEST: rien ne vaut l’{{entraide mutuelle}}                      ->> entraide
TEST: {{médias d’informations}}                                 ->> médias
TEST: {{cirrhose du foie}}                                      ->> cirrhose
................................................................................
TEST: {{solidaires les uns des autres}}                         ->> solidaires
TEST: ce {{taux d’alcoolémie}} est très élevé                   ->> taux d’alcool|alcoolémie
TEST: {{tunnels souterrains}}                                   ->> tunnels
TEST: {{vieilles hardes}}                                       ->> hardes
TEST: un archipel d’îles déchiquetées
TEST: Très rares en France, les « orages sans pluie » ou « heat burst » sont des orages secs qui provoquent une montée de température
TEST: des hommes généralement quelconques



__pleo_verbes__
    >abolir [absolument|entièrement|complétement|complètement|totalement]
    >acculer [au|aux] >pied du mur
    >achever [absolument|entièrement|complétement|complètement|totalement]
    [>ajouter|>rajouter] [de|en] plus
................................................................................
TEST: L’{{amande}} {{amer}}                                                         ->> |||amère
TEST: l’{{amicale}} {{animal}}                                                      ->> amical|||animale
TEST: l’amour {{immortels}}                                                         ->> immortel
TEST: du chien et de l’{{excellente}} {{collier}} qu’il avait autour du cou.        ->> excellent|||
TEST: du chien et de l’étonnant {{colliers}} qu’il avait autour du cou.             ->> collier
TEST: elle prendra l’{{avions}} dès que possible                                    ->> avion


__gn_l_2m_virg__
    <start>  l’  *WORD  ,  $:A¬:G
        <<- /gn/ morph(\3, ":[NA].*:[si]", ":3[sp]") and not agreement(\3, \5)
        --1>> =suggAgree(\5, \3)                                                                    && Cet adjectif n’est pas accordé avec “\2 \3”.

TEST: L’homme, {{blessés}} par deux fois                                            ->> blessé


__gn_l_3m__
    l’  *WORD  *WORD  *WORD
        <<- /gn/ morph(\1, ":D") and morph(<1, "<start>|:V", "*") and \4.islower() >>>
        <<- /gn/ morph(\2, ":[NA].*:m:[si]", "*") and morph(\3, ":[NA].*:[me]:[si]", ":(?:[123][sp]|G|P|B)|;C") and morph(\4, ":[NA].*:f", "*")
        -4>> =suggMasSing(\4)                                                               && Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au masculin singulier.
        <<- /gn/ __else__ and morph(\2, ":[NA].*:f:[si]", "*") and morph(\3, ":[NA].*:[fe]:[si]", ":(?:[123][sp]|G|P|B)|;C") and morph(\4, ":[NA].*:m", "*")
................................................................................
TEST: c’était le chien {{perdue}} des voisins.                                          ->> perdu
TEST: viens vite ou le pari {{imperdables}} sera moins facile…                          ->> imperdable
TEST: connaître et le grand {{perdante}}                                                ->> perdant
TEST: Le bruit {{perçus}} par les voisins.                                              ->> perçu
TEST: si le premier film est un triomphe, le deuxième est un demi-succès, et le troisième une déception.
TEST: Cela aboutira sur une contractualisation coûteuse pour organiser cette divergence d’intérêts, et le gestionnaire aura le dernier mot.


__gn_le_2m_virg__
    <start>  le  *WORD  ,  $:A¬:G
        <<- /gn/ morph(\3, ":[NA].*:[me]:[si]", ":3[sp]") and not agreement(\3, \5)
        --1>> =suggMasSing(\-1)                                                                     && Cet adjectif n’est pas accordé avec “\2 \3”.

TEST: Le tyran, {{blessée}} par deux fois                                               ->> blessé


__gn_le_3m__
    le  *WORD  *WORD  *WORD
        <<- /gn/ not value(<1, "|et|ou|") and morph(\1, ":D")
            and morph(\2, ":[NA].*:[me]:[si]", ":(?:[123][sp]|G)") and morph(\3, ":[NA].*:[me]:[si]", ":(?:[123][sp]|G|P)") and morph(\4, ":[NA].*:[fp]", "*") and \4.islower()
        -4>> =suggMasSing(\4)                                                               && Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au masculin singulier.

................................................................................
TEST: il imaginait de la pluie {{noir}} tombant sur une terre dévastée.         ->> noire
TEST: je voyais de la pluie {{noires}}                                          ->> noire
TEST: Il faut donc examiner ensemble le panneau et la paroi latérale.
TEST: Il faut donc examiner ensemble le panneau et la paroi latéraux.
TEST: Il faut donc examiner ensemble les panneaux et la paroi latéraux.
TEST: Il faut donc examiner ensemble les panneaux et la paroi latérale.


__gn_la_2m_virg__
    <start>  la  *WORD  ,  $:A¬:G
        <<- /gn/ morph(\3, ":[NA].*:[fe]:[si]", ":3[sp]") and not agreement(\3, \5)
        --1>> =suggFemSing(\-1)                                                                     && Cet adjectif n’est pas accordé avec “\2 \3”.

TEST: La femme, {{blessées}} par deux fois                                                      ->> blessée


__gn_la_3m__
    la  *WORD  *WORD  *WORD
        <<- /gn/ not value(<1, "|et|ou|") and morph(\1, ":D")
            and morph(\2, ":[NA].*:[fe]:[si]", ":(?:[123][sp]|G)") and morph(\3, ":[NA].*:[fe]:[si]", ":(?:[123][sp]|G|P)|;C") and morph(\4, ":[NA].*:[mp]", "*") and \4.islower()
        -4>> =suggFemSing(\4)                                                               && Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au féminin singulier.

................................................................................
TEST: elle se souvenait de leur {{grande}} {{sot}}                              ->> grand|||sotte
TEST: je me souviens de leur verve {{décalé}}                                   ->> décalée
TEST: ils arrivent et leur arrogance {{insupportables}} nous fatigue tous.      ->> insupportable
TEST: {{leur}} gros {{grains}}                                                  ->> leurs|||grain
TEST: Que ferons-nous de {{leur}} gros {{grains}}                               ->> leurs|||grain
TEST: 3 milliards d’euros que depuis 2012 l’État leur a volés


__gn_leur_2m_virg__
    <start>  leur  *WORD  ,  $:A¬:G
        <<- /gn/ morph(\3, ":[NA].*:[si]", ":3[sp]") and not agreement(\3, \5)
        --1>> =suggAgree(\-1, \3)                                                           && Cet adjectif n’est pas accordé avec “\2 \3”.

TEST: Leur maître, {{blessés}} par deux fois                                    ->> blessé


__gn_leur_3m__
    leur  *WORD  *WORD  *WORD
        <<- /gn/ morph(\1, ":D") and morph(<1, "<start>|:V", "*") and \4.islower() >>>
        <<- /gn/ morph(\2, ":[NA].*:m:[si]", "*") and morph(\3, ":[NA].*:[me]:[si]", ":(?:[123][sp]|G|P|B)|;C") and morph(\4, ":[NA].*:f", "*")
        -4>> =suggMasSing(\4)                                                               && Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au masculin singulier.
        <<- /gn/ __else__ and morph(\2, ":[NA].*:f:[si]", "*") and morph(\3, ":[NA].*:[fe]:[si]", ":(?:[123][sp]|G|P|B)|;C") and morph(\4, ":[NA].*:m", "*")
................................................................................
TEST: un exercice pas très {{utiles}}.                                                      ->> utile
TEST: un homme {{grands}}                                                                   ->> grand
TEST: un homme {{futiles}}                                                                  ->> futile
TEST: que sais-tu d’un homme {{grande}} comme un arbre                                      ->> grand
TEST: je me souviens d’un homme {{arrogants}}                                               ->> arrogant
TEST: C’est pas les quelques vues sur Linux qui vont rattraper un scénario {{bancale}}.     ->> bancal


__gn_un_2m_virg__
    <start>  un  *WORD  ,  $:A¬:G
        <<- /gn/ morph(\3, ":[NA].*:[me]:[si]") and not agreement(\3, \5)
        --1>> =suggMasSing(\-1)                                                                     && Cet adjectif n’est pas accordé avec “\2 \3”.

TEST: un homme, {{blessés}} par deux fois                                       ->> blessé


__gn_une_2m__
    une  *WORD  *WORD
        <<- /gn/ not value(<1, "|et|ou|d’|") and not morph(\3, ">seul/") >>>
        <<- /gn/ morph(\2, ":[NA].*:[fe]", ":(?:B|G|V0)") and morph(\3, ":[NA].*:m", "*") and not apposition(\2, \3)
        -3>> =suggFemSing(\3, True)                                                                 && Accord de genre erroné : le syntagme « \1 \2 » est féminin, « \3 » est masculin.
        <<- /gn/ \2 != "fois" and morph(\2, ":[NA].*:[si]", ":G") and morph(\3, ":[NA].*:p", "*") and not apposition(\2, \3)
................................................................................
TEST: Une grande {{homme}}.                                                     ->>
TEST: une géologue {{intelligents}}                                             ->> intelligente
TEST: Et une femme {{déterminées}}                                              ->> déterminée
TEST: on parle là d’une femme {{inconnu}}                                       ->> inconnue
TEST: on parle d’une Église {{brûlées}}                                         ->> brûlée
TEST: L’or allume le feu d’une cupidité d’une couleur et d’une sorte différentes.


__gn_une_2m_virg__
    <start>  une  *WORD  ,  $:A¬:G
        <<- /gn/ morph(\3, ":[NA].*:[fe]:[si]") and not agreement(\3, \5)
        --1>> =suggFemSing(\-1)                                                                     && Cet adjectif n’est pas accordé avec “\2 \3”.

TEST: une femme, {{blessés}} par deux fois                                      ->> blessée


__gn_du_1m__
    du  *WORD
        <<- /gn/ morph(\2, ":[NA].*:f", ":[GWme]") -1>> de la                               && Accord de genre erroné : « \2 » est féminin.
        <<- /gn/ __also__ and hasMasForm(\2) -2>> =suggMasSing(\2, True)                    && Accord de genre erroné : « \1 » est un déterminant masculin.
        <<- /gn/ morph(\2, ":[NA].*:p", ":[siGW]") -2>> =suggMasSing(\2)                    && Accord de nombre erroné : « \2 » devrait être au singulier.

................................................................................
        -4>> =suggMasSing(\4)                                                               && Accord de nombre erroné avec « \2 \3 » : « \4 » devrait être au singulier.

TEST: cet outil {{terribles}} qu’il a dans les mains                            ->> terrible
TEST: J’aimerais connaître de quel parti {{gauchistes}} on parle.               ->> gauchiste
TEST: au petit {{publique}}                                                     ->> public
TEST: Ils jugeront en toute impartialité de ce cas {{délirante}}.               ->> délirant


__gn_det_mas_sing_2m_virg__
    <start>  [ce|cet|quel|au|ledit|dudit|audit|aucun|nul]  *WORD  ,  $:A¬:G
        <<- /gn/ morph(\3, ":[NA].*:[me]:[si]") and not agreement(\3, \5)
        --1>> =suggMasSing(\-1)                                                                     && Cet adjectif n’est pas accordé avec “\2 \3”.

TEST: ce con, {{blessée}} par deux fois                                         ->> blessé


__gn_det_mas_sing_3m__
    [ledit|un|ce|cet|au|quel|audit|dudit|aucun|nul]  *WORD  *WORD  *WORD
        <<- /gn/ morph(<1, "<start>|:V", "*") and morph(\2, ":[NA].*:[me]:[si]") and morph(\3, ":[NA].*:[me]:[si]", ":(?:[123][sp]|G|P|B)|;C") and morph(\4, ":[NA].*:[pf]", "*") and \4.islower()
        -4>> =suggMasSing(\4)                                                               && Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au masculin singulier.

TEST: ledit martyr oublié {{réhabilitée}}                                       ->> réhabilité
................................................................................
TEST: mon héritage {{perdue}}                                                   ->> perdu
TEST: comment osez-vous médire de mon héritage {{glorieuse}}                    ->> glorieux
TEST: on parlait de son escapade {{éperdu}} au milieu de la nuit.               ->> éperdue
TEST: ton étonnante {{secret}} ne sera pas au programme.                        ->> secrète
TEST: elle s’étonnait de ton opposition {{grandissantes}}                       ->> grandissante
TEST: le ton monte.


__gn_mon_ton_son_2m_virg__
    <start>  [mon|ton|son]  *WORD  ,  $:A¬:G
        <<- /gn/ morph(\3, ":[NA].*:[si]") and not agreement(\3, \5) >>>
        <<- /gn/ morph(\3, ">[bcçdfgjklmnpqrstvwxz].*:[NA].*:[me]:[si]")  --1>> =suggMasSing(\-1)   && Cet adjectif n’est pas accordé avec “\2 \3”.
        <<- /gn/ morph(\3, ">[aâeéèêiîoôuûyœæh]") --1>> =suggAgree(\-1, \3)                         && Cet adjectif n’est pas accordé avec “\2 \3”.

TEST: mon mari, {{blessée}} par deux fois                                       ->> blessé
TEST: ton âme, {{ébranlé}} par ces révélations                                  ->> ébranlée
TEST: son homme, {{stupéfaite}} par ces révélations                             ->> stupéfait


__gn_det_mon_ton_son_3m__
    [mon|ton|son]  *WORD  *WORD  *WORD
        <<- /gn/ morph(<1, "<start>|:V", "*") and \4.islower() >>>
        <<- /gn/ morph(\2, ">[bcçdfgjklmnpqrstvwxz].*:[NA].*:[me]:[si]") and morph(\3, ":[NA].*:[me]:[si]", ":(?:[123][sp]|G|P|B)|;C") and morph(\4, ":[NAQ].*:[pf]", "*")
        -4>> =suggMasSing(\4)                                                               && Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au masculin singulier.
        <<- /gn/ re.search("^[aâeéèêiîoôuûyœæ]", \2) >>>
................................................................................

TEST: quelle belle {{étourdi}}, cette gamine                                    ->> étourdie
TEST: j’en ai assez de cette ville {{stressées}} en permanence.                 ->> stressée
TEST: Peut-on imaginer de plus {{beaux}} {{enfant}} ?                           ->> beau|||enfants
TEST: de ma grande {{ami}}                                                      ->> amie
TEST: il fut cette fois ulcéré de voir son entreprise une fois de plus ruinée par la malchance.


__gn_det_fem_sing_2m_virg__
    <start>  [ma|ta|sa|cette|quelle|ladite|aucune|nulle]  *WORD  ,  $:A¬:G
        <<- /gn/ morph(\3, ":[NA].*:[fe]:[si]") and not agreement(\3, \5)
        --1>> =suggFemSing(\-1)                                                                     && Cet adjectif n’est pas accordé avec “\2 \3”.

TEST: cette femme, {{blessées}} par deux fois                                   ->> blessée


__gn_det_fem_sing_3m__
    [ladite|une|cette|ma|ta|sa|quelle|aucune|nulle]  *WORD  *WORD  *WORD
        <<- /gn/ morph(<1, "<start>|:V", "*") and morph(\2, ":[NA].*:[fe]:[si]") and morph(\3, ":[NA].*:[fe]:[si]", ":(?:[123][sp]|G|P|B)|;C") and morph(\4, ":[NA].*:[pm]", "*") and \4.islower()
        -4>> =suggFemSing(\4)                                                               && Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au féminin singulier.

TEST: une amie prodigieuse {{récompensé}}                                       ->> récompensée
................................................................................
TEST: notre {{belle}} {{avenu}}                                                 ->> beau|||avenue
TEST: ils viennent de chaque coin {{ignorée}} du pays.                          ->> ignoré
TEST: que faire de votre {{ennuyeuse}} {{avocat}}                               ->> ennuyeux|||avocate
TEST: de quelque cartable {{vides}}                                             ->> vide
TEST: de notre petit {{amis}}                                                   ->> ami
TEST: Quelque chose tombé dans le puits a souillé l’eau.


__gn_det_epi_sing_2m_virg__
    <start>  [chaque|quelque|notre|votre]  *WORD  ,  $:A¬:G
        <<- /gn/ morph(\3, ":[NA].*:[si]") and not agreement(\3, \5)
        --1>> =suggAgree(\-1, \3)                                                           && Cet adjectif n’est pas accordé avec “\2 \3”.

TEST: votre femme, {{blessés}} par deux fois                                    ->> blessée
TEST: chaque homme, {{blessées}} par deux fois                                  ->> blessé


__gn_det_epi_sing_3m__
    [chaque|quelque|notre|votre]  *WORD  *WORD  *WORD
        <<- /gn/ morph(<1, "<start>|:V", "*") and \4.islower() >>>
        <<- /gn/ morph(\2, ":[NA].*:m:[si]", ":[fe]") and morph(\3, ":[NA].*:[me]:[si]", ":(?:[123][sp]|G|P|B)|;C") and morph(\4, ":[NA].*:f", "*")
        -4>> =suggMasSing(\4)                                                               && Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au masculin singulier.
        <<- /gn/ __else__ and morph(\2, ":[NA].*:f:[si]", ":[me]") and morph(\3, ":[NA].*:[fe]:[si]", ":(?:[123][sp]|G|P|B)|;C") and morph(\4, ":[NA].*:m", "*")
................................................................................
TEST: Les besoins minimums en matière de sommeil sont-ils les mêmes d’un individu à l’autre ?
TEST: cette attention de tous les instants portée à la boussole.
TEST: les agrandissements photo
TEST: Il faut donc examiner ensemble les panneaux et les parois latéraux.
TEST: Il faut donc examiner ensemble les panneaux et les parois latérales.
TEST: l’homme les a volés


__gn_les_2m_virg__
    <start>  les  *WORD  ,  $:A¬:G
        <<- /gn/ morph(\3, ":[NA].*:[pi]", ":3[sp]") and not agreement(\3, \5)
        --1>> =suggAgree(\-1, \3)                                                           && Cet adjectif n’est pas accordé avec “\2 \3”.

TEST: les femmes, {{blessé}} par deux fois                                      ->> blessées
TEST: les hommes, {{blessée}} par deux fois                                     ->> blessés


__gn_leurs_1m__
    leurs  *WORD
        <<- /gn/ morph(\2, ":[NA].*:s", ":(?:[ipGW]|[123][sp])") and not (value(>1, "|et|ou|") and morph(>2, ":[NA]"))
        -2>> =suggPlur(\2)                                                                  && Accord de nombre erroné avec « \1 » : « \2 » devrait être au pluriel.
        <<- /gn/ __also__ -1>> leur                                                         && Accord de nombre erroné avec « \2 ».

................................................................................
TEST: ces militant·e·s {{acharné}}.                                             ->> acharnés
TEST: Les éléments caractéristiques liés à ses valeurs historique et architecturale
TEST: Une des pierres veinée de rouge…
TEST: Pour maintenir le potentiel de membrane qui lui permet de communiquer avec ses voisins sous forme d’influx nerveux, un neurone a besoin d’énergie.
TEST: ces religieux inflexibles envers les femmes mais compatissants envers les tyrans qui soutiennent leur religion.
TEST: le bruit de nos pas étouffé par l’épais tapis.


__gn_det_epi_plur_2m_virg__
    <start>  [ces|mes|tes|ses|nos|vos|leurs|quelques|plusieurs|aux|moult]  *WORD  ,  $:A¬:G
        <<- /gn/ morph(\3, ":[NA].*:[pi]") and not agreement(\3, \5)
        --1>> =suggAgree(\-1, \3)                                                           && Cet adjectif n’est pas accordé avec “\2 \3”.

TEST: nos femmes, {{blessé}} par deux fois                                      ->> blessées
TEST: vos hommes, {{blessée}} par deux fois                                     ->> blessés


__gn_det_mas_plur_2m__
    [certains|maints|quels|lesdits|desdits|auxdits]  *WORD  *WORD
        <<- /gn/ not value(<1, "|et|ou|de|d’|") and not morph(\3, ">seul/") >>>
        <<- /gn/ morph(\2, ":[NA].*:[me]", ":(?:B|G|V0)") and morph(\3, ":[NA].*:f", "*") and not apposition(\2, \3)
        -3>> =suggMasPlur(\3, True)                                                         && Accord de genre erroné : « \2 » est masculin, « \3 » est féminin.
        <<- /gn/ morph(\2, ":[NA].*:[pi]", ":G") and morph(\3, ":[NA].*:s", "*") and not apposition(\2, \3) and not (value(>1, "|et|,|") and morph(>2, ":A"))
................................................................................
TEST: certains hommes {{petite}}                                                            ->> petits
TEST: auxdits hommes {{connu}}                                                              ->> connus
TEST: quels hommes {{grandes}}                                                              ->> grands
TEST: elle se rappelle de quels rapports {{désastreuses}} il s’agit.                        ->> désastreux
TEST: de quels grands {{fou}} s’agit-il ?                                                   ->> fous
TEST: chez certains la revue Limite provoque des crises d’hystérie.


__gn_det_mas_plur_2m_virg__
    <start>  [certains|maints|quels|lesdits|desdits|auxdits]  *WORD  ,  $:A¬:G
        <<- /gn/ morph(\3, ":[NA].*:[me]:[pi]") and not agreement(\3, \5)
        --1>> =suggMasPlur(\-1)                                                             && Cet adjectif n’est pas accordé avec “\2 \3”.

TEST: maints hommes, {{blessée}} par deux fois                                              ->> blessés


__gn_det_fem_plur_2m__
    [certaines|maintes|quelles|lesdites|desdites|auxdites]  *WORD  *WORD
        <<- /gn/ not value(<1, "|et|ou|de|d’|") and not morph(\3, ">seul/") >>>
        <<- /gn/ morph(\2, ":[NA].*:[fe]", ":(?:B|G|V0)") and morph(\3, ":[NA].*:m", "*") and not apposition(\2, \3)
        -3>> =suggFemPlur(\3, True)                                                         && Accord de genre erroné : « \2 » est féminin, « \3 » est masculin.
        <<- /gn/ morph(\2, ":[NA].*:[pi]") and morph(\3, ":[NA].*:s", "*") and not apposition(\2, \3) and not (value(>1, "|et|,|") and morph(>2, ":A"))
................................................................................

TEST: certaines idioties {{stupide}}                                                        ->> stupides
TEST: quelles grandes {{idiots}}                                                            ->> idiotes
TEST: je ne sais guère de quelles âneries {{proférés}} on parle.                            ->> proférées
TEST: quelles étonnantes {{petits}}                                                         ->> petites
TEST: ici ou auxdites lointaines {{contrée}}                                                ->> contrées


__gn_det_fem_plur_2m_virg__
    <start>  [certaines|maintes|quelles|lesdites|desdites|auxdites]  *WORD  ,  $:A¬:G
        <<- /gn/ morph(\3, ":[NA].*:[fe]:[pi]") and not agreement(\3, \5)
        --1>> =suggFemPlur(\-1)                                                             && Cet adjectif n’est pas accordé avec “\2 \3”.

TEST: certaines femmes, {{blessé}} par deux fois                                            ->> blessées


__gn_nombre_plur_2m__
    $:B:e:p  *WORD  *WORD
        <<- /gn/ not morph(<1, ">(?:et|ou)/|:R") and not morph(\3, ">(?:seul|minimum|maximum)/") >>>
        <<- /gn/ ((morph(\2, ":[NA].*:m", ":(?:B|e|G|V0|f)") and morph(\3, ":[NA].*:f", "*")) or (morph(\2, ":[NA].*:f", ":(?:B|e|G|V0|m)") and morph(\3, ":[NA].*:m", "*")))
            and not apposition(\2, \3)
        -3>> =switchGender(\3, True)                                                                && Accord de genre erroné entre « \2 » et « \3 ».
................................................................................
TEST: sept valeurs {{aléatoire}}                                                            ->> aléatoires
TEST: huit {{grandes}} {{claviers}}                                                         ->> grands|||
TEST: X a perdu mon estime et ma considération.
TEST: vivre une situation hors du commun à deux a aussi pesé dans la balance.
TEST: deux jours minimum
TEST: ils disent finalement tous les deux la même chose


__gn_nombre_2m_virg__
    <start>  $:B:e:p  *WORD  ,  $:A¬:G
        <<- /gn/ morph(\3, ":[NA].*:[pi]") and not agreement(\3, \5)
        --1>> =suggAgree(\-1, \3)                                                                   && Cet adjectif n’est pas accordé avec “\2 \3”.

TEST: deux femmes, {{blessé}} par deux fois                                                 ->> blessées
TEST: trois hommes, {{blessée}} par deux fois                                               ->> blessés


__gn_des_2m__
    des  *WORD  *WORD
        <<- /gn/ (morph(<1, ":(?:[VRBXÉ]|Cs)|>comme/|<start>|>,", "*") or morph(\3, ":N", ":[AQ]")) and not morph(\3, ">(?:seul|minimum|maximum)/") >>>
        <<- /gn/ ( (morph(\2, ":[NA].*:m", ":[fe]") and morph(\3, ":[NA].*:f", "*")) or (morph(\2, ":[NA].*:f", ":[me]") and morph(\3, ":[NA].*:m", "*")) ) and not apposition(\2, \3)
        -3>> =switchGender(\3, True)                                                                && Accord de genre erroné avec « \2 ».
        <<- /gn/ __also__ and hasFemForm(\2) -2>> =switchGender(\2)                                 && Accord de genre erroné avec « \3 ».
................................................................................
TEST: des dépenses non {{nécessaire}}                                                       ->> nécessaires
TEST: Des règles pas du tout {{claire}}.                                                    ->> claires
TEST: Des peines à peine {{croyable}}.                                                      ->> croyables
TEST: Des {{chambres}} plus ou moins fortement {{éclairé}}.                                 ->> chambrés|||éclairées
TEST: Les couleurs rouge, jaune et verte ne doivent pas être utilisées
TEST: des passeports américain, canadien, néerlandais, allemand et britannique.


__gn_des_2m_virg__
    <start>  des  *WORD  ,  $:A¬:G
        <<- /gn/ morph(\3, ":[NA].*:[pi]") and not agreement(\3, \5)
        --1>> =suggAgree(\-1, \3)                                                                   && Cet adjectif n’est pas accordé avec “\2 \3”.

TEST: des femmes, {{blessé}} par deux fois                                                  ->> blessées
TEST: des hommes, {{blessée}} par deux fois                                                 ->> blessés


__gn_plusieurs_1m__
    plusieurs  *WORD
        <<- /gn/ morph(\2, ":[NA].*:s", ":[ipGWP]") and not (value(>1, "|et|ou|") and morph(>2, ":[NA]"))
        -2>> =suggPlur(\2)                                                                  && Accord de nombre erroné : « \2 » devrait être au pluriel.

TEST: plusieurs {{femme}}                                       ->> femmes
................................................................................
__conf_ait_confiance_été_faim_tort!3__
    [es|est] [confiance|conscience|envie|été|peur|faim|hâte|honte|recours|soif|tort]
    [es|est] peine [à|a]
        <<- /conf/ not tagbefore(\1, "_ceque_") and not value(<1, "|tout|d’|l’|") >>>
        <<- /conf/ not tagbefore(\1, "_1s_") -1>> ait               && Confusion probable dans l’expression “avoir \2”. Vous utilisez ici le verbe “être”.
        <<- /conf/ __else__ -1>> ait|aie                            && Confusion probable dans l’expression “avoir \2”. Vous utilisez ici le verbe “être”.

TEST: qu’il {{est}} confiance en toi, c’est possible                                        ->> ait
TEST: je sais, qu’il {{est}} peine à trouver le bonheur ça se conçoit.                      ->> ait|aie
TEST: La révolution est crainte.
TEST: Je n’en ai cure.
TEST: Notre communauté vous est redevable.
TEST: l’humour est affaire de culture
TEST: Aller chercher l’air pur à la campagne est peine perdue.
TEST: tout est peine perdue.
TEST: c’est froid ou c’est chaud ?


#### et / est
__conf_et_est2__
    <start>  [un|une|des|le|la|l’|les|ce|cet|cette|ces|mon|ton|son|ma|ta|sa|mes|tes|ses|notre|votre|nos|vos|leur|leurs|quel|quelle|quels|quelles|quelques|certains|certaines|maints|mainets|plusieurs]  *WORD  est
        ||   [un|une|des|le|la|l’|les|ce|cet|cette|ces|mon|ton|son|ma|ta|sa|mes|tes|ses|notre|votre|nos|vos|leur|leurs|quel|quelle|quels|quelles|quelques|certains|certaines|maints|mainets|plusieurs]  *WORD  @:3p¬:G
        <<- /conf/ -4>> et