Grammalecte  Check-in [efbaeb6ce7]

Overview
Comment:[fr] ajustements
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk | fr
Files: files | file ages | folders
SHA3-256: efbaeb6ce7f572adc335af2789b785c7664400866efa581f6ca258ed2f08de8b
User & Date: olr on 2020-12-30 13:46:14
Other Links: manifest | tags
Context
2020-12-31
09:46
[server] fix header for Linux check-in: 10b0ef82fa user: olr tags: server, trunk
2020-12-30
13:46
[fr] ajustements check-in: efbaeb6ce7 user: olr tags: fr, trunk
2020-12-29
12:27
[fr] ajustements (tests) check-in: e7b22fd393 user: olr tags: fr, trunk
Changes

Modified gc_lang/fr/rules.grx from [752247ebb4] to [81b061fa47].

15881
15882
15883
15884
15885
15886
15887
15888
15889
15890
15891
15892
15893
15894
15895
15896
15897
15898
15899
.....
23072
23073
23074
23075
23076
23077
23078
23079
23080
23081
23082
23083
23084
23085
23086
23087
23088
23089
23090
23091
23092
23093
23094
23095
23096
23097
23098
23099
23100
.....
23107
23108
23109
23110
23111
23112
23113
23114
23115
23116
23117
23118
23119
23120
23121
23122
23123
.....
23143
23144
23145
23146
23147
23148
23149
23150
23151
23152
23153
23154
23155
23156
23157
23158
23159
23160
.....
23170
23171
23172
23173
23174
23175
23176
23177
23178
23179
23180
23181
23182
23183
23184
23185
23186
23187
23188
23189
23190
23191
.....
23202
23203
23204
23205
23206
23207
23208
23209
23210
23211
23212
23213
23214
23215
23216
23217
23218
23219
23220
23221
23222
23223
23224
23225
23226
23227
23228
23229
23230
23231
23232
23233
23234
23235
23236
23237
23238
23239
23240
23241
23242
23243
23244
23245
23246
23247
23248
23249
23250
23251
23252
23253
23254
23255
23256
23257
23258
23259
23260
23261
23262
23263
23264
23265
23266
23267
23268
23269
23270
23271
23272
23273
.....
23285
23286
23287
23288
23289
23290
23291
23292
23293
23294
23295
23296
23297
23298
23299
23300
23301
23302
23303
23304
23305
23306
23307
23308


23309
23310
23311
23312
23313
23314
23315
.....
23322
23323
23324
23325
23326
23327
23328
23329
23330
23331
23332
23333
23334
23335
23336
23337
23338
23339
23340
23341
.....
23345
23346
23347
23348
23349
23350
23351
23352
23353
23354
23355
23356
23357
23358
23359
23360
23361
23362
23363
23364
.....
23366
23367
23368
23369
23370
23371
23372
23373
23374
23375
23376
23377
23378
23379
23380
23381
23382
23383
23384
23385
23386
23387
23388
23389
23390
23391
23392
23393
23394
23395
23396
23397
23398
23399
23400
23401
23402
23403
23404
23405
23406
23407
23408
23409
23410
23411
23412
23413
23414
23415
23416
23417
23418
23419
23420
23421
23422
23423
23424
23425
23426
23427
23428
23429
23430
.....
23436
23437
23438
23439
23440
23441
23442
23443
23444
23445
23446
23447
23448
23449
23450
23451
23452
23453
23454
23455
23456
23457
23458
23459
23460
23461
23462
23463
23464
23465
23466
23467
23468
23469
23470
23471
23472
23473
23474
23475
23476
23477
23478
23479
23480
23481
23482
23483
23484
23485
23486
23487
23488
23489
23490
23491
23492
23493
23494
23495
23496
23497
23498
23499
23500
23501
23502
.....
23519
23520
23521
23522
23523
23524
23525
23526
23527
23528
23529
23530
23531
23532
23533
23534
23535
.....
23541
23542
23543
23544
23545
23546
23547
23548
23549
23550
23551
23552
23553
23554
23555
23556
23557
23558
23559
23560
23561
23562
23563
23564
23565
23566
23567
23568
23569
23570
23571
23572
23573
23574
23575
23576
23577
23578
23579
23580
23581
23582
.....
23590
23591
23592
23593
23594
23595
23596
23597
23598
23599
23600
23601
23602
23603
23604
23605
23606
23607
23608
23609
.....
23632
23633
23634
23635
23636
23637
23638
23639
23640
23641
23642
23643
23644
23645
23646
23647
23648
23649
23650
23651
23652
.....
23662
23663
23664
23665
23666
23667
23668
23669
23670
23671
23672
23673
23674
23675
23676
23677
23678
23679
23680
23681
23682
.....
23684
23685
23686
23687
23688
23689
23690
23691
23692
23693
23694
23695
23696
23697
23698
23699
23700
23701
23702
23703
23704
23705
23706
23707
23708
23709
23710
23711
23712
23713
23714
23715
23716
23717
23718
23719
23720
23721
23722
23723
23724
23725
23726
23727
23728
23729
23730
.....
23739
23740
23741
23742
23743
23744
23745
23746
23747
23748
23749
23750
23751
23752
23753
23754
23755
23756
.....
32548
32549
32550
32551
32552
32553
32554
32555
32556
32557
32558
32559
32560
32561
32562
    à [de|d’] nombreux [de|d’] [nanomètres|millimètres|centimètres|décamètres|pas|mètres|kilomètres|parsecs] à la ronde
    à [de|d’] nombreux [de|d’] [nanomètres|millimètres|centimètres|décamètres|pas|mètres|kilomètres|parsecs] aux alentours
    à [de|d’] nombreuses [lieues|verstes|UA|années-lumière] [de|d’] [distance|ici]
    à [de|d’] nombreuses [lieues|verstes|UA|années-lumière] en [amont|aval]
    à [de|d’] nombreuses [lieues|verstes|UA|années-lumière] plus loin
    à [de|d’] nombreuses [lieues|verstes|UA|années-lumière] à la ronde
    à [de|d’] nombreuses [lieues|verstes|UA|années-lumière] aux alentours
    à des [dizaines|douzaines|centaines|milliers|milliards] [de|d’] [nanomètres|millimètres|centimètres|décamètres|pas|mètres|kilomètres|verstes|lieues|UA|parsecs|années-lumière] [de|d’] [distance|ici]
    à des [dizaines|douzaines|centaines|milliers|milliards] [de|d’] [nanomètres|millimètres|centimètres|décamètres|pas|mètres|kilomètres|verstes|lieues|UA|parsecs|années-lumière] en [amont|aval]
    à des [dizaines|douzaines|centaines|milliers|milliards] [de|d’] [nanomètres|millimètres|centimètres|décamètres|pas|mètres|kilomètres|verstes|lieues|UA|parsecs|années-lumière] plus loin
    à des [dizaines|douzaines|centaines|milliers|milliards] [de|d’] [nanomètres|millimètres|centimètres|décamètres|pas|mètres|kilomètres|verstes|lieues|UA|parsecs|années-lumière] à la ronde
    à des [dizaines|douzaines|centaines|milliers|milliards] [de|d’] [nanomètres|millimètres|centimètres|décamètres|pas|mètres|kilomètres|verstes|lieues|UA|parsecs|années-lumière] aux alentours
    à un jet [de|d’] pierre [de|d’] [distance|ici]
    à un jet [de|d’] pierre en [amont|aval]
    à un jet [de|d’] pierre plus loin
    à un jet [de|d’] pierre à la ronde
    à un jet [de|d’] pierre aux alentours
        <<- ~>> *

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

    <start>  la  *WORD
        <<- /gn/ morph(\3, ":[NA].*:m", ":[efPGWMY]") -2>> le                               && Accord de genre erroné : « \3 » est masculin.
        <<- /gn/ __also__ and hasFemForm(\3) -3>> =suggFemSing(\3, True)                    && Accord de genre erroné : « \2 » est un déterminant féminin.
        <<- /gn/ __else__ and morph(\3, ":[NA].*:p", ":[siGW]") -3>> =suggFemSing(\3)       && Accord de nombre erroné : « \3 » devrait être au singulier.

TEST: c’est ennuyeux, la {{parties}} deux est ratée.
TEST: j’en sais rien, {{la}} {{parti}} est foutu
TEST: {{La}} Cameroun                                         ->> Le
TEST: {{La}} mustang est un cheval sauvage.                   ->> Le
TEST: {{La}} tableau.                                         ->> Le
TEST: dans la {{parties}}                                     ->> partie
TEST: je connais {{la}} {{parti}}
TEST: la {{vilénies}} des mensonges                           ->> vilénie
TEST: de {{la}} vin                                           ->> le
TEST: {{la}} {{véhicule}}
TEST: {{La}} {{pris}}
TEST: {{Le}} {{commandeuse}}
TEST: {{Le}} {{commanderesse}}
TEST: {{le}} {{doctoresse}} est là.
TEST: la force de la {{formes}} parfaite
TEST: à la Richard Nixon Foundation
TEST: à ne plus se laisser faire la fois d’après
TEST: il pense à la fois où nous avons eu cet accident idiot.


__gn_la_2m__
    la  *WORD  *WORD
................................................................................
    [et|ou|de|d’]  la  *WORD  *WORD
        <<- /gn/ morph(\2, ":D") and not morph(<1, ":[NA]|>(?:et|ou)/") and not morph(\4, ">seul/") >>>
        <<- /gn/ morph(\3, ":[NA].*:[fe]", ":(?:B|G|V0|m)") and morph(\4, ":[NA].*:m", "*") and not apposition(\3, \4)
        -4>> =suggFemSing(\4, True)                                                         && Accord de genre erroné : le syntagme « \2 \3 » est féminin, « \4 » est masculin.
        <<- /gn/ morph(\3, ":[NA].*:[si]", ":G") and morph(\4, ":[NA].*:p", ":[GWsi]") and not apposition(\3, \4)
        -4>> =suggFemSing(\4)                                                               && Accord de nombre erroné avec « \2 \3 » : « \4 » devrait être au singulier.

TEST: La plus grande {{cinglé}}.
TEST: il imaginait de la pluie {{noir}} tombant sur une terre dévastée.
TEST: je voyais de la pluie {{noires}}
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__
................................................................................
        -2>> leurs                                                                          && Accord de nombre erroné avec « \3 ».
        <<- /gn/ __also__ -3>> =suggSing(\3)                                                && Accord de nombre erroné : « \3 » devrait être au singulier.

    <start>  leur  *WORD
        <<- /gn/ morph(\3, ":[NA].*:p", ":[siGW]") -2>> leurs                               && Accord de nombre erroné avec « \3 ».
        <<- /gn/ __also__ -3>> =suggSing(\3)                                                && Accord de nombre erroné : « \3 » devrait être au singulier.

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


__gn_leur_2m__
    leur  *WORD  *WORD
        <<- /gn/ morph(\1, ":D") and not value(<1, "|et|ou|de|d’|") and not morph(\3, ">seul/") >>>
        <<- /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)
................................................................................
            and not apposition(\3, \4)
        -4>> =switchGender(\4, False)                                                       && Accord de genre erroné entre « \3 » et « \4 ».
        <<- /gn/ __also__ and hasFemForm(\3) -3>> =switchGender(\3, False)                  && Accord de genre erroné avec « \4 ».
        <<- /gn/ morph(\3, ":[NA].*:[si]", ":(?:G|V0)") and morph(\4, ":[NA].*:p", ":[GWsi]") and not apposition(\3, \4)
        -4>> =suggSing(\4)                                                                  && Accord de nombre erroné avec « \2 \3 » : « \4 » devrait être au singulier.
        <<- /gn/ __also__ and morph(\3, ":[NA].*:i") -2>> leurs                             && Accord de nombre erroné avec « \3 \4 ».

TEST: leur puissance {{perdues}}
TEST: leur arbre {{élaguée}}
TEST: leur {{petit}} {{grosse}}
TEST: elle se souvenait de leur {{grande}} {{sot}}
TEST: je me souviens de leur verve {{décalé}}
TEST: ils arrivent et leur arrogance {{insupportables}} nous fatigue tous.
TEST: {{leur}} gros {{grains}}
TEST: Que ferons-nous de {{leur}} gros {{grains}}
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", "*")
................................................................................

__gn_ledit_1m__
    ledit  *WORD
        <<- /gn/ morph(\2, ":[NA].*:f", ":[GWme]") -1>> ladite                              && 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.

TEST: {{ledit}} femme ne sut comment nous éclairer
TEST: {{ledit}} {{boulangère}} nous enseigna sa méthode
TEST: ledit {{accords}} ne vaut rien.


__gn_ladite_1m__
    ladite  *WORD
        <<- /gn/ morph(\2, ":[NA].*:m", ":[efGW]") -1>> ledit                               && Accord de genre erroné : « \2 » est masculin.
        <<- /gn/ __also__ and hasFemForm(\2) -2>> =suggFemSing(\2, True)                    && Accord de genre erroné : « \1 » est un déterminant féminin.
        <<- /gn/ morph(\2, ":[NA].*:p", ":[siGW]") -2>> =suggFemSing(\2)                    && Accord de nombre erroné : « \2 » devrait être au singulier.

TEST: {{ladite}} vélo était en panne
TEST: {{ladite}} {{professeur}} était intarissable
TEST: ladite {{passions}} l’avait conduit à sa perte.


__gn_aucun_1m__
    aucun  *WORD
        <<- /gn/ morph(\2, ":[NA].*:f", ":[GWme]") -1>> aucune                              && 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.

TEST: {{aucun}} femme ne réagirait si bêtement
TEST: {{aucun}} {{animale}}
TEST: aucun {{accords}} n’y changera rien.


__gn_aucune_1m__
    aucune  *WORD
        <<- /gn/ morph(\2, ":[NA].*:m", ":[efGW]") -1>> aucun                               && Accord de genre erroné : « \2 » est masculin.
        <<- /gn/ __also__ and hasFemForm(\2) -2>> =suggFemSing(\2, True)                    && Accord de genre erroné : « \1 » est un déterminant féminin.
        <<- /gn/ morph(\2, ":[NA].*:p", ":[siGW]") -2>> =suggFemSing(\2)                    && Accord de nombre erroné : « \2 » devrait être au singulier.

TEST: {{aucune}} homme ne comprendrait ça
TEST: {{aucune}} {{conseiller}} ne vint nous aider
TEST: aucune {{passions}} n’est digne qu’on meurt pour elle.


__gn_nul_1m__
    nul  *WORD
        <<- /gn/ morph(\2, ":[NA].*:f", ":[GWme]") -1>> nulle                               && 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.

TEST: nul {{accords}} n’y changera rien.
TEST: {{nul}} femme ne réagirait si bêtement
TEST: {{nul}} {{ratée}} ne survint


__gn_nulle_1m__
    nulle  *WORD
        <<- /gn/ morph(\2, ":[NA].*:m", ":[efGW]") -1>> nul                                 && Accord de genre erroné : « \2 » est masculin.
        <<- /gn/ __also__ and hasFemForm(\2) -2>> =suggFemSing(\2, True)                    && Accord de genre erroné : « \1 » est un déterminant féminin.
        <<- /gn/ morph(\2, ":[NA].*:p", ":[siGW]") -2>> =suggFemSing(\2)                    && Accord de nombre erroné : « \2 » devrait être au singulier.

TEST: nulle {{passions}} n’est digne qu’on meurt pour elle.
TEST: {{nulle}} homme ne comprendrait ça
TEST: {{nulle}} {{damné}} à sauver


__gn_un_1m__
    un  *WORD
        <<- /gn/ morph(\2, ":[NA].*:f", ":(?:e|m|G|W|V0|3s|Y)") -1>> une                    && 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.
................................................................................
        <<- /gn/ morph(\2, ":[NA].*:p", ":[siGW]") -2>> =suggFemSing(\2)                    && Accord de nombre erroné : « \2 » devrait être au singulier.

__gn_une_des_1m__
    une  des  *WORD
        <<- /gn/ morph(\3, ":[NA].*:m", ":(?:e|f|G|W|V0|3s)") -1>> un                       && Accord de genre erroné : « \3 » est masculin.
        <<- /gn/ __also__ and hasFemForm(\3) -3>> =suggFemPlur(\3, True)                    && Accord de genre erroné : « \1 » est un déterminant féminin.

TEST: {{Un}} {{amie}}
TEST: {{un}} des {{chattes}}
TEST: {{une}} des {{chats}}
TEST: Trente et un hommes sur le pont.
TEST: Ces enfants n’ont jamais vu quelqu’un lire.
TEST: un {{slashs}}                                           ->> slash
TEST: un {{fromages}}.                                        ->> fromage
TEST: Un {{ballons}}                                          ->> ballon
TEST: Une {{cinglées}}                                        ->> cinglée
TEST: {{une}} des {{chats}}
TEST: {{une}} kyste                                           ->> un
TEST: {{une}} {{chien}}                                       ->> un|||chienne
TEST: {{une}} des {{joueurs}}
TEST: un {{cailloux}}                                         ->> caillou
TEST: {{un}} {{petite}} animal                                ->> une|||petit
TEST: une {{femmes}}                                          ->> femme
TEST: {{une}} {{petit}}                                       ->> un|||petite


TEST: mille et une merveilles
TEST: Quatorze heures découpées en quatre parties, une sortant en salles chaque semaine


## un / une
__gn_un_2m__
    un  *WORD  *WORD
................................................................................
    [et|ou|d’]  un  *WORD  *WORD
        <<- /gn/ not morph(<1, ":[NA]|>(?:et|ou)/") and not morph(\4, ">seul/") >>>
        <<- /gn/ morph(\3, ":[NA].*:[me]", ":(?:B|G|V0|f)") and morph(\4, ":[NA].*:f", "*") and not apposition(\3, \4)
        -4>> =suggMasSing(\4, True)                                                                 && Accord de genre erroné : le syntagme « \2 \3 » est masculin, « \4 » est féminin.
        <<- /gn/ morph(\3, ":[NA].*:[si]", ":G") and morph(\4, ":[NA].*:p", "*") and not apposition(\3, \4)
        -4>> =suggMasSing(\4)                                                                       && Accord de nombre erroné avec « \2 \3 » : « \4 » devrait être au singulier.

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
TEST: je me souviens d’un homme {{arrogants}}
TEST: C’est pas les quelques vues sur Linux qui vont rattraper un scénario {{bancale}}.


__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.
................................................................................
    [et|ou|d’]  une  *WORD  *WORD
        <<- /gn/ not morph(<1, ":[NA]|>(?:et|ou)/") and not morph(\4, ">seul/") >>>
        <<- /gn/ morph(\3, ":[NA].*:[fe]", ":(?:B|G|V0|m)") and morph(\4, ":[NA].*:m", "*") and not apposition(\3, \4)
        -4>> =suggFemSing(\4, True)                                                                 && Accord de genre erroné : le syntagme « \2 \3 » est féminin, « \4 » est masculin.
        <<- /gn/ \3 != "fois" and morph(\3, ":[NA].*:[si]", ":G") and morph(\4, ":[NA].*:p", "*") and not apposition(\3, \4)
        -4>> =suggFemSing(\4)                                                                       && Accord de nombre erroné avec « \2 \3 » : « \4 » devrait être au singulier.

TEST: Une femme {{laconiques}}.                               ->> laconique
TEST: Une grande {{homme}}.
TEST: une géologue {{intelligents}}
TEST: Et une femme {{déterminées}}
TEST: on parle là d’une femme {{inconnu}}
TEST: on parle d’une Église {{brûlées}}
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_dudit_1m__
    dudit  *WORD
        <<- /gn/ morph(\2, ":[NA].*:f", ":[GWme]") -1>> de ladite                           && 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.

TEST: cette bouffe, c’est du {{chiens}}
TEST: cette bouffe, c’est {{du}} {{chienne}}
TEST: les consignes dudit {{présidents}} étaient contratritoires.
TEST: les consignes {{dudit}} {{présidente}} étaient contratritoires.


__gn_ce_1m__
    ce  *WORD
        <<- /gn/ morph(\2, ":[NA].*:f", ":(?:3s|[GWme])") -1>> cette                        && 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].*:f", ":[GWme]") and morph(\2, ":3s") -1>> cette|se       && Accord de genre erroné : « \2 » est féminin. Ou bien vous confondez le déterminant “ce” avec le pronom “se”.
        <<- /gn/ morph(\2, ":[NA].*:p", ":[siGW]") -2>> =suggMasSing(\2)                    && Accord de nombre erroné : « \2 » devrait être au singulier.

TEST: {{Ce}} animal.                                          ->> Cet
TEST: {{ce}} {{folle}} espoir qui ne la quitte pas
TEST: ce {{claviers}}
TEST: {{ce}} donne


__gn_cet_1m__
    cet  *WORD
        <<- /gn/ morph(\2, ":[NA].*:f", ":[GWme]") -1>> cette                               && 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, ">[bcçdfgjklmnpqrstvwxz].+:[NA].*:m", ":[efGW]") -1>> ce         && Accord de genre correct, mais euphonie non respectée.|http://fr.wikipedia.org/wiki/Euphonie
        <<- /gn/ morph(\2, ":[NA].*:p", ":[siGW]") -2>> =suggMasSing(\2)                    && Accord de nombre erroné : « \2 » devrait être au singulier.

TEST: {{Cet}} {{idiote}}.
TEST: {{cet}} ballon.                                         ->> ce
TEST: cet {{oliviers}}


__gn_cette_1m__
    cette  *WORD
        <<- /gn/ morph(\2, ":[NA].*:m", ":[efGW]") -1>> =suggCeOrCet(\2)                    && Accord de genre erroné : « \2 » est masculin.
        <<- /gn/ __also__ and hasFemForm(\2) -2>> =suggFemSing(\2, True)                    && Accord de genre erroné : « \1 » est un déterminant féminin.
        <<- /gn/ morph(\2, ":[NA].*:p", ":[siGW]") -2>> =suggFemSing(\2)                    && Accord de nombre erroné : « \2 » devrait être au singulier.

TEST: {{Cette}} {{animal}} mort.
TEST: cette {{illusions}} que nous voyons plus clair que quiconque


__gn_au_1m__
    au  *WORD
        <<- /gn/ morph(\2, ":[NA].*:f:s", ":[GWme]") -1>> à 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.
        <<- /gn/ __also__ -1>> aux                                                          && Accord de nombre erroné : « \2 » est au pluriel.

TEST: {{au}} {{États-Unis}}
TEST: Téléphone {{au}} personne qui ont donné leur accord.
TEST: téléphone {{au}} {{boulangère}}
TEST: au chien, au chat, au poulet
TEST: à partir de pièces détachées, au départ entièrement venues de l’étranger puis en partie fabriquées sur place


__gn_det_mas_sing_2m__
    [ce|cet|quel|au|ledit|dudit|audit|aucun|nul]  *WORD  *WORD
        <<- /gn/ not value(<1, "|et|ou|de|d’|") and not morph(\3, ">seul/") >>>
................................................................................
    [et|ou|de|d’]  [ce|cet|quel|au|ledit|dudit|audit|aucun|nul]  *WORD  *WORD
        <<- /gn/ not morph(<1, ":[NA]|>(?:et|ou)/") and not morph(\4, ">seul/") >>>
        <<- /gn/ morph(\3, ":[NA].*:[me]", ":(?:B|G|V0|f)") and morph(\4, ":[NA].*:f", "*") and not apposition(\3, \4)
        -4>> =suggMasSing(\4, True)                                                         && Accord de genre erroné : « \3 » est masculin, « \4 » est féminin.
        <<- /gn/ morph(\3, ":[NA].*:[si]", ":G") and morph(\4, ":[NA].*:p", ":[GWsi]") and not apposition(\3, \4)
        -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
TEST: J’aimerais connaître de quel parti {{gauchistes}} on parle.
TEST: au petit {{publique}}
TEST: Ils jugeront en toute impartialité de ce cas {{délirante}}.


__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: un gros connard {{pathétiques}}                                           ->> pathétique
TEST: servi pas un style et une exigence historique remarquables
TEST: ils eurent besoins d’au minimum cent ans pour s’en remettre


__gn_mon_ton_son_1m__
    [mon|ton|son]  *WORD
        <<- /gn/ morph(\1, ":D") >>>
        <<- /gn/ morph(\2, ">[bcçdfgjklmnpqrstvwxz].*:[NA].*:f", ":[GWme]") -1>> =\1.replace("on", "a").replace("ON", "A")     && 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.

TEST: mon {{excellentes}} mémoire
TEST: {{ton}} {{belle}} mémoire
TEST: {{mon}} {{chienne}}


__gn_mon_ton_son_2m__
    [mon|ton|son]  *WORD  *WORD
        <<- /gn/ not value(<1, "|et|ou|de|d’|") and not morph(\3, ">seul/") >>>
        <<- /gn/ morph(\2, ":[NA].*:m", ":(?:B|G|e|V0|f)") and morph(\3, ":[NAQ].*:f", "*") and not apposition(\2, \3)
        -3>> =suggMasSing(\3, True)                                                         && Accord de genre erroné : « \2 » est masculin, « \3 » est féminin.
        <<- /gn/ morph(\2, ">[aâeéèêiîoôuûyœæ].*:[NAQ].*:f", ":(?:B|G|e|V0|m)") and morph(\3, ":[NAQ].*:m", "*") and not apposition(\2, \3)
        -3>> =suggFemSing(\3, True)                                                         && Accord de genre erroné : « \2 » est féminin, « \3 » est masculin.
        <<- /gn/ morph(\2, ":[NA].*:[si]", ":G") and morph(\3, ":[NAQ].*:p", ":[GWsi]") and not apposition(\2, \3)
        -3>> =suggMasSing(\3)                                                               && Accord de nombre erroné avec « \1 \2 » : « \3 » devrait être au singulier.

    [et|ou|de|d’]  [mon|ton|son]  *WORD  *WORD
        <<- /gn/ not morph(<1, ":[NA]|>(?:et|ou)/") and not morph(\4, ">seul/") >>>
        <<- /gn/ morph(\3, ":[NA].*:m", ":(?:B|G|e|V0|f)") and morph(\4, ":[NAQ].*:f", "*") and not apposition(\3, \4)
        -4>> =suggMasSing(\4, True)                                                         && Accord de genre erroné : « \3 » est masculin, « \4 » est féminin.
        <<- /gn/ morph(\3, ">[aâeéèêiîoôuûyœæ].*:[NA].*:f", ":(?:B|G|e|V0|m)") and morph(\4, ":[NAQ].*:m", "*") and not apposition(\3, \4)
        -4>> =suggFemSing(\4, True)                                                         && Accord de genre erroné : « \3 » est féminin, « \4 » est masculin.
        <<- /gn/ morph(\3, ":[NA].*:[si]", ":G") and morph(\4, ":[NAQ].*:p", ":[GWsi]") and not apposition(\3, \4)
        -4>> =suggMasSing(\4)                                                               && Accord de nombre erroné avec « \2 \3 » : « \4 » devrait être au singulier.

TEST: il brandissait avec fougue son drapeau {{déchirés}}
TEST: comment osez-vous médire de mon héritage {{glorieuse}}
TEST: on parlait de son escapade {{éperdu}} au milieu de la nuit.
TEST: ton étonnante {{secret}} ne sera pas au programme.
TEST: elle s’étonnait de ton opposition {{grandissantes}}
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]", "*")
................................................................................
    [ma|ta|sa]  *WORD
        <<- not (tag(\1, "_CAP_") and morph(\1, ":N")) and not (tag(\1, "eg1mot") and morph(\2, ":V.[ea].:3[sp]")) >>>
        <<- /gn/ morph(\2, ":[NA].*:m", ":[efGW]") -1>> =\1[:-1]+"on"                       && Accord de genre erroné : « \2 » est masculin.
        <<- /gn/ __also__ and not re.search("(?i)^[aâeéèêiîoôuûyœæ]", \2) and hasFemForm(\2)
        -2>> =suggFemSing(\2, True)                                                         && Accord de genre erroné : « \1 » est un déterminant féminin.
        <<- /gn/ morph(\2, ":[NA].*:p", ":[siGW]") -2>> =suggFemSing(\2)                    && Accord de nombre erroné : « \2 » devrait être au singulier.

TEST: {{ma}} {{parti}}
TEST: {{ma}} amour                                            ->> mon
TEST: ma {{carlingues}}
TEST: Après cet épisode, la SA a joué un rôle marginal dans l’histoire du Troisième Reich
TEST: “ma” est un déterminant féminin


__gn_det_fem_sing_2m__
    [ma|ta|sa|cette|quelle|ladite|aucune|nulle]  *WORD  *WORD
        <<- /gn/ not value(<1, "|et|ou|de|d’|") and not morph(\3, ">seul/") >>>
................................................................................
    [et|ou|de|d’]  [ma|ta|sa|cette|quelle|ladite|aucune|nulle]  *WORD  *WORD
        <<- /gn/ not morph(<1, ":[NAQ]|>(?:et|ou)/") and not morph(\4, ">seul/") >>>
        <<- /gn/ morph(\3, ":[NAQ].*:[fe]", ":(?:B|G|V0|m)") and morph(\4, ":[NAQ].*:m", "*") and not apposition(\3, \4)
        -4>> =suggFemSing(\4, True)                                                         && Accord de genre erroné : « \3 » est féminin, « \4 » est masculin.
        <<- /gn/ morph(\3, ":[NAQ].*:[si]", ":G") and morph(\4, ":[NAQ].*:p", ":[GWsi]") and not apposition(\3, \4)
        -4>> =suggFemSing(\4)                                                               && Accord de nombre erroné avec « \2 \3 » : « \4 » devrait être au singulier.

TEST: quelle belle {{étourdi}}, cette gamine
TEST: j’en ai assez de cette ville {{stressées}} en permanence.
TEST: Peut-on imaginer de plus {{beaux}} {{enfant}} ?
TEST: de ma grande {{ami}}
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


__gn_notre_votre_chaque_1m__
    [notre|votre|chaque]  *WORD
        <<- /gn/ morph(\2, ":[NA].*:p", ":[siGW]") -2>> =suggSing(\2)                       && Accord de nombre erroné : « \2 » devrait être au singulier.

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


__gn_quelque_1m__
    quelque  *WORD
        <<- /gn/ morph(\2, ":[NA].*:p", ":[siG]") and not value(>1, "|que|qu’|")
        -1>> quelques                                                                       && Il manque un “s” à « quelque » ou « \2 » doit être au singulier.

TEST: {{Quelque}} amis                                              ->> Quelques


__gn_det_epi_sing_2m__
    [chaque|quelque|notre|votre]  *WORD  *WORD
        <<- /gn/ not value(<1, "|et|ou|de|d’|") and not morph(\3, ">seul/") >>>
        <<- /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)
................................................................................
        <<- /gn/ ((morph(\3, ":[NA].*:m", ":(?:B|e|G|V0|f)") and morph(\4, ":[NA].*:f", "*")) or (morph(\3, ":[NA].*:f", ":(?:B|e|G|V0|m)") and morph(\4, ":[NA].*:m", "*")))
            and not apposition(\3, \4)
        -4>> =switchGender(\4, False)                                                       && Accord de genre erroné entre « \3 » et « \4 ».
        <<- /gn/ __also__ and hasFemForm(\3) -3>> =switchGender(\3, False)                  && Accord de genre erroné avec « \4 ».
        <<- /gn/ morph(\3, ":[NA].*:[si]", ":G") and morph(\4, ":[NA].*:p", ":[GWsi]") and not apposition(\3, \4)
        -4>> =suggSing(\4)                                                                  && Accord de nombre erroné avec « \2 \3 » : « \4 » devrait être au singulier.

TEST: chaque élément {{terrestres}}
TEST: notre {{belle}} {{avenu}}
TEST: ils viennent de chaque coin {{ignorée}} du pays.
TEST: que faire de votre {{ennuyeuse}} {{avocat}}
TEST: de quelque cartable {{vides}}
TEST: de notre petit {{amis}}
TEST: Quelque chose tombé dans le puits a souillé l’eau.


__gn_det_notre_votre_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", "*")
................................................................................
            and not (value(\1, "|que|") and morph(<1, ">tel/") and morph(\3, ":3[sp]"))
        -3>> =suggPlur(\3)                                                                  && Accord de nombre erroné : « \3 » devrait être au pluriel.

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

TEST: ils viennent, les {{petit}}
TEST: Les {{tiret}}                                           ->> tirets
TEST: Les plus {{grand}} hommes.                              ->> grands
TEST: les {{véhicule}}                                        ->> véhicules
TEST: Les {{démoralisation}}.                                 ->> démoralisations
TEST: dans les {{usine}}                                      ->> usines
TEST: les {{abricot}}                                         ->> abricots
TEST: tels que les décrit Macron
TEST: J’en ramasse quelques-unes, puis les glisse dans l’une de mes poches, ça me fera un souvenir.


__gn_les_2m__
    les  *WORD  *WORD
        <<- /gn/ morph(\1, ":D") and not value(<1, "|et|ou|de|d’|") and not morph(\3, ">seul/") >>>
................................................................................
        <<- /gn/ ((morph(\3, ":[NA].*:m", ":(?:B|e|G|V0|f)") and morph(\4, ":[NA].*:f", "*")) or (morph(\3, ":[NA].*:f", ":(?:B|e|G|V0|m)") and morph(\4, ":[NA].*:m", "*")))
            and not apposition(\3, \4)
        -4>> =switchGender(\4, True)                                                                && Accord de genre erroné entre « \3 » et « \4 ».
        <<- /gn/ __also__ and hasFemForm(\3) -3>> =switchGender(\3, True)                           && Accord de genre erroné avec « \4 ».
        <<- /gn/ morph(\3, ":[NA].*:[pi]") and morph(\4, ":[NA].*:s", "*") and not apposition(\3, \4) and not (value(>1, "|et|,|") and morph(>2, ":A"))
        -4>> =suggPlur(\4)                                                                          && Accord de nombre erroné avec « \2 \3 » : « \4 » devrait être au pluriel.

TEST: les pitres {{imbécile}}
TEST: il faut en convenir et les femmes {{oubliés}} seront satisfaites.
TEST: les {{petites}} {{oubliés}}
TEST: c’est ça, et les femmes {{retrouvés}} seront emmenées à l’hôpital.
TEST: fais ce que tu peux, ou les {{petites}} {{perdus}} le seront à jamais
TEST: ça ou les éternels {{imbécile}} du coin
TEST: les {{éventuels}} {{fiches}}
TEST: les moins éloignées possible
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: {{leurs}} {{action}}
TEST: {{leur}} {{données}}
TEST: {{leurs}} {{abricot}}


__gn_det_pluriel_1m__
    [des|mes|tes|ses|nos|vos|quelques|lesdits|lesdites|desdits|desdites|auxdits|auxdites|moult]  *WORD
        <<- /gn/ morph(\2, ":[NA].*:s", ":[ipGW]") and not (value(>1, "|et|ou|") and morph(>2, ":[NA]"))
        -2>> =suggPlur(\2)                                                                  && Accord de nombre erroné : « \2 » devrait être au pluriel.

TEST: des {{pain}}                                              ->> pains
TEST: Quelques {{homme}}.                                       ->> hommes
TEST: plusieurs {{femme}} sont venues.                          ->> femmes
TEST: des {{abricot}}                                           ->> abricots
TEST: des {{son}} que nous entendons jour et nuit.              ->> sons
TEST: une personne ou plusieurs ayant décidé de façon déterminée et coordonnée de faire cuire la grenouille


__gn_ces_aux_pluriel_1m__
    [ces|aux]  *WORD
        <<- /gn/ morph(\2, ":[NA].*:s", ":[ipGW]") and not (value(>1, "|et|ou|") and morph(>2, ":[NA]"))
        -2>> =suggPlur(\2)                                                                  && Accord de nombre erroné : « \2 » devrait être au pluriel.
        <<- /gn/ __also__ and morph(\2, ">[bcçdfglklmnpqrstvwxz].*:m", ":f") >>>
        <<- /gn/ \1.endswith("x") or \1.endswith("X") -1>> au                               && Accord de nombre erroné : « \2 » est au singulier.
        <<- /gn/ __else__ -1>> ce                                                           && Accord de nombre erroné : « \2 » est au singulier.

TEST: {{ces}} {{détournement}} de fonds et ces vols             ->> ce|||détournements
TEST: ces {{étudiant}} sont légion.                             ->> étudiants
TEST: je vais {{aux}} {{cinéma}}                                ->> au|||cinémas
TEST: il l’a donné aux {{étudiant}}                             ->> étudiants
TEST: aux {{personne}}                                          ->> personnes
TEST: j’entends ces {{même}} âneries tous les jours             ->> mêmes
TEST: clafoutis aux {{abricot}}                                 ->> abricots


__gn_det_epi_plur_2m__
    [ces|mes|tes|ses|nos|vos|leurs|quelques|plusieurs|aux|moult]  *WORD  *WORD
        <<- /gn/ not value(<1, "|et|ou|de|d’|au|aux|") and not morph(\3, ">seul/") >>>
        <<- /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)
................................................................................
            and not apposition(\3, \4)
        -4>> =switchGender(\4, True)                                                                && Accord de genre erroné entre « \3 » et « \4 ».
        <<- /gn/ __also__ and hasFemForm(\3) -3>> =switchGender(\3, True)                           && Accord de genre erroné avec « \4 ».
        <<- /gn/ morph(\3, ":[NA].*:[pi]") and morph(\4, ":[NA].*:s", "*") and not apposition(\3, \4) and not (value(>1, "|et|,|") and morph(>2, ":A"))
            and not (value(\1, "|de|d’|") and value(<1, "|un|une|"))
        -4>> =suggPlur(\4)                                                                          && Accord de nombre erroné avec « \2 \3 » : « \4 » devrait être au pluriel.

TEST: ces {{beaux}} {{institutions}}
TEST: nos petites {{fille}}
TEST: de plusieurs {{grands}} {{avocates}}
TEST: de vos défauts {{terrible}}, je connais presque tout.
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.


................................................................................
!!
!!
!!!! Verbes sans sujets                                                                           !!
!!
!!

__conj_que_où_comment_verbe_sans_sujet!3__
    [que|qu’|où|comment|combien|dont|quand|pourquoi|puisque|puisqu’|lorsque|lorqu’|auquel|auxquels|auxquelles|duquel|desquels|desquelles|lequel|laquelle|lesquels|lesquelles|si]  @:[12][sp]¬:(?:G|W|3[sp]|Y|P|Q|N|A|M|VC)
        <<- /conj/ morph(\2, ":[12]s") and not value(>1, "|je|tu|") -2>> =suggVerb(\2, ":3s")                           && Conjugaison erronée. Ce verbe devrait être à la 3ᵉ personne.
        <<- /conj/ __else__ and morph(\2, ":[12]p") and not value(>1, "|nous|vous|") -2>> =suggVerb(\2, ":3p")          && Conjugaison erronée. Ce verbe devrait être à la 3ᵉ personne.

TEST: Qu’est-ce que tu crois que {{deviens}} réellement, immanquablement et subitement cet homme après une telle dérouillée ?
TEST: peu importe ce que tu crois du lieu où l’{{abandonnerais}} ce salopard…
TEST: nous savons comment {{arriverons}} ces problèmes…
TEST: nous le pensons puisque {{paraitrons}} folles ces augmentations







|
|
|
|
|







 







|
|
|
|
|
|
|
|
|
|
|
|
|
|
|







 







|
|
|







 







|
|
|
|







 







|
|
|
|
|
|
|
|







 







|
|
|








|
|
|








|
|
|








|
|
|








|
|
|








|
|
|







 







|
|
|
<
<
|
|
|
|
|
|
|
|
|
|
|
|
>
>







 







|
|
|
|
|
|







 







|
|
|
|
|
|







 







|
|
|
|









|
|
|
|









|
|
|








|
|









|
|
|







 







|
|
|
|







|












|
|
|










|








|

|
|
|
|
|







 







|
|
|







 







|
|
|
|








|






|







|







 







|
|
|
|
|
|







 







|
|
|
|
|
|
|







 







|
|
|
|
|
|
|







 







|
|
|







|
|
|
|
|











|
|
|
|
|
|
|







 







|
|
|
|







 







|







15881
15882
15883
15884
15885
15886
15887
15888
15889
15890
15891
15892
15893
15894
15895
15896
15897
15898
15899
.....
23072
23073
23074
23075
23076
23077
23078
23079
23080
23081
23082
23083
23084
23085
23086
23087
23088
23089
23090
23091
23092
23093
23094
23095
23096
23097
23098
23099
23100
.....
23107
23108
23109
23110
23111
23112
23113
23114
23115
23116
23117
23118
23119
23120
23121
23122
23123
.....
23143
23144
23145
23146
23147
23148
23149
23150
23151
23152
23153
23154
23155
23156
23157
23158
23159
23160
.....
23170
23171
23172
23173
23174
23175
23176
23177
23178
23179
23180
23181
23182
23183
23184
23185
23186
23187
23188
23189
23190
23191
.....
23202
23203
23204
23205
23206
23207
23208
23209
23210
23211
23212
23213
23214
23215
23216
23217
23218
23219
23220
23221
23222
23223
23224
23225
23226
23227
23228
23229
23230
23231
23232
23233
23234
23235
23236
23237
23238
23239
23240
23241
23242
23243
23244
23245
23246
23247
23248
23249
23250
23251
23252
23253
23254
23255
23256
23257
23258
23259
23260
23261
23262
23263
23264
23265
23266
23267
23268
23269
23270
23271
23272
23273
.....
23285
23286
23287
23288
23289
23290
23291
23292
23293
23294


23295
23296
23297
23298
23299
23300
23301
23302
23303
23304
23305
23306
23307
23308
23309
23310
23311
23312
23313
23314
23315
.....
23322
23323
23324
23325
23326
23327
23328
23329
23330
23331
23332
23333
23334
23335
23336
23337
23338
23339
23340
23341
.....
23345
23346
23347
23348
23349
23350
23351
23352
23353
23354
23355
23356
23357
23358
23359
23360
23361
23362
23363
23364
.....
23366
23367
23368
23369
23370
23371
23372
23373
23374
23375
23376
23377
23378
23379
23380
23381
23382
23383
23384
23385
23386
23387
23388
23389
23390
23391
23392
23393
23394
23395
23396
23397
23398
23399
23400
23401
23402
23403
23404
23405
23406
23407
23408
23409
23410
23411
23412
23413
23414
23415
23416
23417
23418
23419
23420
23421
23422
23423
23424
23425
23426
23427
23428
23429
23430
.....
23436
23437
23438
23439
23440
23441
23442
23443
23444
23445
23446
23447
23448
23449
23450
23451
23452
23453
23454
23455
23456
23457
23458
23459
23460
23461
23462
23463
23464
23465
23466
23467
23468
23469
23470
23471
23472
23473
23474
23475
23476
23477
23478
23479
23480
23481
23482
23483
23484
23485
23486
23487
23488
23489
23490
23491
23492
23493
23494
23495
23496
23497
23498
23499
23500
23501
23502
.....
23519
23520
23521
23522
23523
23524
23525
23526
23527
23528
23529
23530
23531
23532
23533
23534
23535
.....
23541
23542
23543
23544
23545
23546
23547
23548
23549
23550
23551
23552
23553
23554
23555
23556
23557
23558
23559
23560
23561
23562
23563
23564
23565
23566
23567
23568
23569
23570
23571
23572
23573
23574
23575
23576
23577
23578
23579
23580
23581
23582
.....
23590
23591
23592
23593
23594
23595
23596
23597
23598
23599
23600
23601
23602
23603
23604
23605
23606
23607
23608
23609
.....
23632
23633
23634
23635
23636
23637
23638
23639
23640
23641
23642
23643
23644
23645
23646
23647
23648
23649
23650
23651
23652
.....
23662
23663
23664
23665
23666
23667
23668
23669
23670
23671
23672
23673
23674
23675
23676
23677
23678
23679
23680
23681
23682
.....
23684
23685
23686
23687
23688
23689
23690
23691
23692
23693
23694
23695
23696
23697
23698
23699
23700
23701
23702
23703
23704
23705
23706
23707
23708
23709
23710
23711
23712
23713
23714
23715
23716
23717
23718
23719
23720
23721
23722
23723
23724
23725
23726
23727
23728
23729
23730
.....
23739
23740
23741
23742
23743
23744
23745
23746
23747
23748
23749
23750
23751
23752
23753
23754
23755
23756
.....
32548
32549
32550
32551
32552
32553
32554
32555
32556
32557
32558
32559
32560
32561
32562
    à [de|d’] nombreux [de|d’] [nanomètres|millimètres|centimètres|décamètres|pas|mètres|kilomètres|parsecs] à la ronde
    à [de|d’] nombreux [de|d’] [nanomètres|millimètres|centimètres|décamètres|pas|mètres|kilomètres|parsecs] aux alentours
    à [de|d’] nombreuses [lieues|verstes|UA|années-lumière] [de|d’] [distance|ici]
    à [de|d’] nombreuses [lieues|verstes|UA|années-lumière] en [amont|aval]
    à [de|d’] nombreuses [lieues|verstes|UA|années-lumière] plus loin
    à [de|d’] nombreuses [lieues|verstes|UA|années-lumière] à la ronde
    à [de|d’] nombreuses [lieues|verstes|UA|années-lumière] aux alentours
    à des [dizaines|douzaines|centaines|milliers|millions|milliards] [de|d’] [nanomètres|millimètres|centimètres|décamètres|pas|mètres|kilomètres|verstes|lieues|UA|parsecs|années-lumière] [de|d’] [distance|ici]
    à des [dizaines|douzaines|centaines|milliers|millions|milliards] [de|d’] [nanomètres|millimètres|centimètres|décamètres|pas|mètres|kilomètres|verstes|lieues|UA|parsecs|années-lumière] en [amont|aval]
    à des [dizaines|douzaines|centaines|milliers|millions|milliards] [de|d’] [nanomètres|millimètres|centimètres|décamètres|pas|mètres|kilomètres|verstes|lieues|UA|parsecs|années-lumière] plus loin
    à des [dizaines|douzaines|centaines|milliers|millions|milliards] [de|d’] [nanomètres|millimètres|centimètres|décamètres|pas|mètres|kilomètres|verstes|lieues|UA|parsecs|années-lumière] à la ronde
    à des [dizaines|douzaines|centaines|milliers|millions|milliards] [de|d’] [nanomètres|millimètres|centimètres|décamètres|pas|mètres|kilomètres|verstes|lieues|UA|parsecs|années-lumière] aux alentours
    à un jet [de|d’] pierre [de|d’] [distance|ici]
    à un jet [de|d’] pierre en [amont|aval]
    à un jet [de|d’] pierre plus loin
    à un jet [de|d’] pierre à la ronde
    à un jet [de|d’] pierre aux alentours
        <<- ~>> *

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

    <start>  la  *WORD
        <<- /gn/ morph(\3, ":[NA].*:m", ":[efPGWMY]") -2>> le                               && Accord de genre erroné : « \3 » est masculin.
        <<- /gn/ __also__ and hasFemForm(\3) -3>> =suggFemSing(\3, True)                    && Accord de genre erroné : « \2 » est un déterminant féminin.
        <<- /gn/ __else__ and morph(\3, ":[NA].*:p", ":[siGW]") -3>> =suggFemSing(\3)       && Accord de nombre erroné : « \3 » devrait être au singulier.

TEST: c’est ennuyeux, la {{parties}} deux est ratée.            ->> partie
TEST: j’en sais rien, {{la}} {{parti}} est foutu                ->> le|||partie
TEST: {{La}} Cameroun                                           ->> Le
TEST: {{La}} mustang est un cheval sauvage.                     ->> Le
TEST: {{La}} tableau.                                           ->> Le
TEST: dans la {{parties}}                                       ->> partie
TEST: je connais {{la}} {{parti}}                               ->> le|||partie
TEST: la {{vilénies}} des mensonges                             ->> vilénie
TEST: de {{la}} vin                                             ->> le
TEST: {{la}} {{véhicule}}                                       ->> le|||véhiculée
TEST: {{La}} {{pris}}                                           ->> Le|||prise
TEST: {{Le}} {{commandeuse}}                                    ->> La|||commandeur
TEST: {{Le}} {{commanderesse}}                                  ->> La|||commandeur
TEST: {{le}} {{doctoresse}} est là.                             ->> la|||docteur
TEST: la force de la {{formes}} parfaite                        ->> forme
TEST: à la Richard Nixon Foundation
TEST: à ne plus se laisser faire la fois d’après
TEST: il pense à la fois où nous avons eu cet accident idiot.


__gn_la_2m__
    la  *WORD  *WORD
................................................................................
    [et|ou|de|d’]  la  *WORD  *WORD
        <<- /gn/ morph(\2, ":D") and not morph(<1, ":[NA]|>(?:et|ou)/") and not morph(\4, ">seul/") >>>
        <<- /gn/ morph(\3, ":[NA].*:[fe]", ":(?:B|G|V0|m)") and morph(\4, ":[NA].*:m", "*") and not apposition(\3, \4)
        -4>> =suggFemSing(\4, True)                                                         && Accord de genre erroné : le syntagme « \2 \3 » est féminin, « \4 » est masculin.
        <<- /gn/ morph(\3, ":[NA].*:[si]", ":G") and morph(\4, ":[NA].*:p", ":[GWsi]") and not apposition(\3, \4)
        -4>> =suggFemSing(\4)                                                               && Accord de nombre erroné avec « \2 \3 » : « \4 » devrait être au singulier.

TEST: La plus grande {{cinglé}}.                                                ->> cinglée
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__
................................................................................
        -2>> leurs                                                                          && Accord de nombre erroné avec « \3 ».
        <<- /gn/ __also__ -3>> =suggSing(\3)                                                && Accord de nombre erroné : « \3 » devrait être au singulier.

    <start>  leur  *WORD
        <<- /gn/ morph(\3, ":[NA].*:p", ":[siGW]") -2>> leurs                               && Accord de nombre erroné avec « \3 ».
        <<- /gn/ __also__ -3>> =suggSing(\3)                                                && Accord de nombre erroné : « \3 » devrait être au singulier.

TEST: Tu sais, {{leur}} {{impatiences}} est notoire.                            ->> leurs|||impatience
TEST: J’en ai assez de {{leur}} {{délires}}                                     ->> leurs|||délire
TEST: {{Leur}} {{perceptions}} des choses m’exaspère.                           ->> Leurs|||perception
TEST: dans {{leur}} {{usines}}                                                  ->> leurs|||usine


__gn_leur_2m__
    leur  *WORD  *WORD
        <<- /gn/ morph(\1, ":D") and not value(<1, "|et|ou|de|d’|") and not morph(\3, ">seul/") >>>
        <<- /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)
................................................................................
            and not apposition(\3, \4)
        -4>> =switchGender(\4, False)                                                       && Accord de genre erroné entre « \3 » et « \4 ».
        <<- /gn/ __also__ and hasFemForm(\3) -3>> =switchGender(\3, False)                  && Accord de genre erroné avec « \4 ».
        <<- /gn/ morph(\3, ":[NA].*:[si]", ":(?:G|V0)") and morph(\4, ":[NA].*:p", ":[GWsi]") and not apposition(\3, \4)
        -4>> =suggSing(\4)                                                                  && Accord de nombre erroné avec « \2 \3 » : « \4 » devrait être au singulier.
        <<- /gn/ __also__ and morph(\3, ":[NA].*:i") -2>> leurs                             && Accord de nombre erroné avec « \3 \4 ».

TEST: leur puissance {{perdues}}                                                ->> perdue
TEST: leur arbre {{élaguée}}                                                    ->> élagué
TEST: leur {{petit}} {{grosse}}                                                 ->> petite|||gros
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", "*")
................................................................................

__gn_ledit_1m__
    ledit  *WORD
        <<- /gn/ morph(\2, ":[NA].*:f", ":[GWme]") -1>> ladite                              && 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.

TEST: {{ledit}} femme ne sut comment nous éclairer                                  ->> ladite
TEST: {{ledit}} {{boulangère}} nous enseigna sa méthode                             ->> ladite|||boulanger
TEST: ledit {{accords}} ne vaut rien.                                               ->> accord


__gn_ladite_1m__
    ladite  *WORD
        <<- /gn/ morph(\2, ":[NA].*:m", ":[efGW]") -1>> ledit                               && Accord de genre erroné : « \2 » est masculin.
        <<- /gn/ __also__ and hasFemForm(\2) -2>> =suggFemSing(\2, True)                    && Accord de genre erroné : « \1 » est un déterminant féminin.
        <<- /gn/ morph(\2, ":[NA].*:p", ":[siGW]") -2>> =suggFemSing(\2)                    && Accord de nombre erroné : « \2 » devrait être au singulier.

TEST: {{ladite}} vélo était en panne                                                ->> ledit
TEST: {{ladite}} {{professeur}} était intarissable                                  ->> ledit|||professeure
TEST: ladite {{passions}} l’avait conduit à sa perte.                               ->> passion|passée


__gn_aucun_1m__
    aucun  *WORD
        <<- /gn/ morph(\2, ":[NA].*:f", ":[GWme]") -1>> aucune                              && 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.

TEST: {{aucun}} femme ne réagirait si bêtement                                      ->> aucune
TEST: {{aucun}} {{animale}}                                                         ->> aucune|||animal
TEST: aucun {{accords}} n’y changera rien.                                          ->> accord


__gn_aucune_1m__
    aucune  *WORD
        <<- /gn/ morph(\2, ":[NA].*:m", ":[efGW]") -1>> aucun                               && Accord de genre erroné : « \2 » est masculin.
        <<- /gn/ __also__ and hasFemForm(\2) -2>> =suggFemSing(\2, True)                    && Accord de genre erroné : « \1 » est un déterminant féminin.
        <<- /gn/ morph(\2, ":[NA].*:p", ":[siGW]") -2>> =suggFemSing(\2)                    && Accord de nombre erroné : « \2 » devrait être au singulier.

TEST: {{aucune}} homme ne comprendrait ça                                           ->> aucun
TEST: {{aucune}} {{conseiller}} ne vint nous aider                                  ->> aucun|||conseillère|conseillée
TEST: aucune {{passions}} n’est digne qu’on meurt pour elle.                        ->> passion|passée


__gn_nul_1m__
    nul  *WORD
        <<- /gn/ morph(\2, ":[NA].*:f", ":[GWme]") -1>> nulle                               && 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.

TEST: nul {{accords}} n’y changera rien.                                            ->> accord
TEST: {{nul}} femme ne réagirait si bêtement                                        ->> nulle
TEST: {{nul}} {{ratée}} ne survint                                                  ->> nulle|||raté


__gn_nulle_1m__
    nulle  *WORD
        <<- /gn/ morph(\2, ":[NA].*:m", ":[efGW]") -1>> nul                                 && Accord de genre erroné : « \2 » est masculin.
        <<- /gn/ __also__ and hasFemForm(\2) -2>> =suggFemSing(\2, True)                    && Accord de genre erroné : « \1 » est un déterminant féminin.
        <<- /gn/ morph(\2, ":[NA].*:p", ":[siGW]") -2>> =suggFemSing(\2)                    && Accord de nombre erroné : « \2 » devrait être au singulier.

TEST: nulle {{passions}} n’est digne qu’on meurt pour elle.                         ->> passion|passée
TEST: {{nulle}} homme ne comprendrait ça                                            ->> nul
TEST: {{nulle}} {{damné}} à sauver                                                  ->> nul|||damnée


__gn_un_1m__
    un  *WORD
        <<- /gn/ morph(\2, ":[NA].*:f", ":(?:e|m|G|W|V0|3s|Y)") -1>> une                    && 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.
................................................................................
        <<- /gn/ morph(\2, ":[NA].*:p", ":[siGW]") -2>> =suggFemSing(\2)                    && Accord de nombre erroné : « \2 » devrait être au singulier.

__gn_une_des_1m__
    une  des  *WORD
        <<- /gn/ morph(\3, ":[NA].*:m", ":(?:e|f|G|W|V0|3s)") -1>> un                       && Accord de genre erroné : « \3 » est masculin.
        <<- /gn/ __also__ and hasFemForm(\3) -3>> =suggFemPlur(\3, True)                    && Accord de genre erroné : « \1 » est un déterminant féminin.

TEST: {{Un}} {{amie}}                                           ->> Une|||ami
TEST: {{un}} des {{chattes}}                                    ->> une|||chats
TEST: {{une}} des {{chats}}                                     ->> un|||chattes


TEST: un {{slashs}}                                             ->> slash
TEST: un {{fromages}}.                                          ->> fromage
TEST: Un {{ballons}}                                            ->> ballon
TEST: Une {{cinglées}}                                          ->> cinglée
TEST: {{une}} des {{chats}}                                     ->> un|||chattes
TEST: {{une}} kyste                                             ->> un
TEST: {{une}} {{chien}}                                         ->> un|||chienne
TEST: {{une}} des {{joueurs}}                                   ->> un|||joueuses
TEST: un {{cailloux}}                                           ->> caillou
TEST: {{un}} {{petite}} animal                                  ->> une|||petit
TEST: une {{femmes}}                                            ->> femme
TEST: {{une}} {{petit}}                                         ->> un|||petite
TEST: Trente et un hommes sur le pont.
TEST: Ces enfants n’ont jamais vu quelqu’un lire.
TEST: mille et une merveilles
TEST: Quatorze heures découpées en quatre parties, une sortant en salles chaque semaine


## un / une
__gn_un_2m__
    un  *WORD  *WORD
................................................................................
    [et|ou|d’]  un  *WORD  *WORD
        <<- /gn/ not morph(<1, ":[NA]|>(?:et|ou)/") and not morph(\4, ">seul/") >>>
        <<- /gn/ morph(\3, ":[NA].*:[me]", ":(?:B|G|V0|f)") and morph(\4, ":[NA].*:f", "*") and not apposition(\3, \4)
        -4>> =suggMasSing(\4, True)                                                                 && Accord de genre erroné : le syntagme « \2 \3 » est masculin, « \4 » est féminin.
        <<- /gn/ morph(\3, ":[NA].*:[si]", ":G") and morph(\4, ":[NA].*:p", "*") and not apposition(\3, \4)
        -4>> =suggMasSing(\4)                                                                       && Accord de nombre erroné avec « \2 \3 » : « \4 » devrait être au singulier.

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.
................................................................................
    [et|ou|d’]  une  *WORD  *WORD
        <<- /gn/ not morph(<1, ":[NA]|>(?:et|ou)/") and not morph(\4, ">seul/") >>>
        <<- /gn/ morph(\3, ":[NA].*:[fe]", ":(?:B|G|V0|m)") and morph(\4, ":[NA].*:m", "*") and not apposition(\3, \4)
        -4>> =suggFemSing(\4, True)                                                                 && Accord de genre erroné : le syntagme « \2 \3 » est féminin, « \4 » est masculin.
        <<- /gn/ \3 != "fois" and morph(\3, ":[NA].*:[si]", ":G") and morph(\4, ":[NA].*:p", "*") and not apposition(\3, \4)
        -4>> =suggFemSing(\4)                                                                       && Accord de nombre erroné avec « \2 \3 » : « \4 » devrait être au singulier.

TEST: Une femme {{laconiques}}.                                                 ->> laconique
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_dudit_1m__
    dudit  *WORD
        <<- /gn/ morph(\2, ":[NA].*:f", ":[GWme]") -1>> de ladite                           && 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.

TEST: cette bouffe, c’est du {{chiens}}                                         ->> chien
TEST: cette bouffe, c’est {{du}} {{chienne}}                                    ->> de la|||chien
TEST: les consignes dudit {{présidents}} étaient contratritoires.               ->> président
TEST: les consignes {{dudit}} {{présidente}} étaient contratritoires.           ->> de ladite|||président


__gn_ce_1m__
    ce  *WORD
        <<- /gn/ morph(\2, ":[NA].*:f", ":(?:3s|[GWme])") -1>> cette                        && 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].*:f", ":[GWme]") and morph(\2, ":3s") -1>> cette|se       && Accord de genre erroné : « \2 » est féminin. Ou bien vous confondez le déterminant “ce” avec le pronom “se”.
        <<- /gn/ morph(\2, ":[NA].*:p", ":[siGW]") -2>> =suggMasSing(\2)                    && Accord de nombre erroné : « \2 » devrait être au singulier.

TEST: {{Ce}} animal.                                                            ->> Cet
TEST: {{ce}} {{folle}} espoir qui ne la quitte pas                              ->> cette|||fou
TEST: ce {{claviers}}                                                           ->> clavier
TEST: {{ce}} donne avec passion                                                 ->> cette|se


__gn_cet_1m__
    cet  *WORD
        <<- /gn/ morph(\2, ":[NA].*:f", ":[GWme]") -1>> cette                               && 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, ">[bcçdfgjklmnpqrstvwxz].+:[NA].*:m", ":[efGW]") -1>> ce         && Accord de genre correct, mais euphonie non respectée.|http://fr.wikipedia.org/wiki/Euphonie
        <<- /gn/ morph(\2, ":[NA].*:p", ":[siGW]") -2>> =suggMasSing(\2)                    && Accord de nombre erroné : « \2 » devrait être au singulier.

TEST: {{Cet}} {{idiote}}.                                                       ->> Cette|||idiot
TEST: {{cet}} ballon.                                                           ->> ce
TEST: cet {{oliviers}}                                                          ->> olivier


__gn_cette_1m__
    cette  *WORD
        <<- /gn/ morph(\2, ":[NA].*:m", ":[efGW]") -1>> =suggCeOrCet(\2)                    && Accord de genre erroné : « \2 » est masculin.
        <<- /gn/ __also__ and hasFemForm(\2) -2>> =suggFemSing(\2, True)                    && Accord de genre erroné : « \1 » est un déterminant féminin.
        <<- /gn/ morph(\2, ":[NA].*:p", ":[siGW]") -2>> =suggFemSing(\2)                    && Accord de nombre erroné : « \2 » devrait être au singulier.

TEST: {{Cette}} {{animal}} mort.                                                ->> Cet|||animale
TEST: cette {{illusions}} que nous voyons plus clair que quiconque              ->> illusion


__gn_au_1m__
    au  *WORD
        <<- /gn/ morph(\2, ":[NA].*:f:s", ":[GWme]") -1>> à 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.
        <<- /gn/ __also__ -1>> aux                                                          && Accord de nombre erroné : « \2 » est au pluriel.

TEST: {{au}} {{États-Unis}}                                                     ->> aux|||États-Unis
TEST: Téléphone {{au}} personne qui ont donné leur accord.                      ->> à la
TEST: téléphone {{au}} {{boulangère}}                                           ->> à la|||boulanger
TEST: au chien, au chat, au poulet
TEST: à partir de pièces détachées, au départ entièrement venues de l’étranger puis en partie fabriquées sur place


__gn_det_mas_sing_2m__
    [ce|cet|quel|au|ledit|dudit|audit|aucun|nul]  *WORD  *WORD
        <<- /gn/ not value(<1, "|et|ou|de|d’|") and not morph(\3, ">seul/") >>>
................................................................................
    [et|ou|de|d’]  [ce|cet|quel|au|ledit|dudit|audit|aucun|nul]  *WORD  *WORD
        <<- /gn/ not morph(<1, ":[NA]|>(?:et|ou)/") and not morph(\4, ">seul/") >>>
        <<- /gn/ morph(\3, ":[NA].*:[me]", ":(?:B|G|V0|f)") and morph(\4, ":[NA].*:f", "*") and not apposition(\3, \4)
        -4>> =suggMasSing(\4, True)                                                         && Accord de genre erroné : « \3 » est masculin, « \4 » est féminin.
        <<- /gn/ morph(\3, ":[NA].*:[si]", ":G") and morph(\4, ":[NA].*:p", ":[GWsi]") and not apposition(\3, \4)
        -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: un gros connard {{pathétiques}}                                           ->> pathétique
TEST: servi pas un style et une exigence historique remarquables
TEST: ils eurent besoins d’au minimum cent ans pour s’en remettre


__gn_mon_ton_son_1m__
    [mon|ton|son]  *WORD
        <<- /gn/ morph(\1, ":D") >>>
        <<- /gn/ morph(\2, ">[bcçdfgjklmnpqrstvwxz].*:[NA].*:f", ":[GWme]") -1>> =\1.replace("on", "a").replace("ON", "A")     && 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.

TEST: mon {{excellentes}} mémoire                                               ->> excellente
TEST: {{ton}} {{belle}} mémoire                                                 ->> ta|||beau
TEST: {{mon}} {{chienne}}                                                       ->> ma|||chien


__gn_mon_ton_son_2m__
    [mon|ton|son]  *WORD  *WORD
        <<- /gn/ not value(<1, "|et|ou|de|d’|") and not morph(\3, ">seul/") >>>
        <<- /gn/ morph(\2, ":[NA].*:m", ":(?:B|G|e|V0|f)") and morph(\3, ":[NAQ].*:f", "*") and not apposition(\2, \3)
        -3>> =suggMasSing(\3, True)                                                         && Accord de genre erroné : « \2 » est masculin, « \3 » est féminin.
        <<- /gn/ morph(\2, ">[aâeéèêiîoôuûyœæ].*:[NAQ].*:f", ":(?:B|G|e|V0|m)") and morph(\3, ":[NAQ].*:m", "*") and not apposition(\2, \3)
        -3>> =suggFemSing(\3, True)                                                         && Accord de genre erroné : « \2 » est féminin, « \3 » est masculin.
        <<- /gn/ morph(\2, ":[NA].*:[si]", ":G") and morph(\3, ":[NAQ].*:p", ":[GWsi]") and not apposition(\2, \3)
        -3>> =suggSing(\3)                                                                  && Accord de nombre erroné avec « \1 \2 » : « \3 » devrait être au singulier.

    [et|ou|de|d’]  [mon|ton|son]  *WORD  *WORD
        <<- /gn/ not morph(<1, ":[NA]|>(?:et|ou)/") and not morph(\4, ">seul/") >>>
        <<- /gn/ morph(\3, ":[NA].*:m", ":(?:B|G|e|V0|f)") and morph(\4, ":[NAQ].*:f", "*") and not apposition(\3, \4)
        -4>> =suggMasSing(\4, True)                                                         && Accord de genre erroné : « \3 » est masculin, « \4 » est féminin.
        <<- /gn/ morph(\3, ">[aâeéèêiîoôuûyœæ].*:[NA].*:f", ":(?:B|G|e|V0|m)") and morph(\4, ":[NAQ].*:m", "*") and not apposition(\3, \4)
        -4>> =suggFemSing(\4, True)                                                         && Accord de genre erroné : « \3 » est féminin, « \4 » est masculin.
        <<- /gn/ morph(\3, ":[NA].*:[si]", ":G") and morph(\4, ":[NAQ].*:p", ":[GWsi]") and not apposition(\3, \4)
        -4>> =suggSing(\4)                                                                  && Accord de nombre erroné avec « \2 \3 » : « \4 » devrait être au singulier.

TEST: il brandissait avec fougue son drapeau {{déchirés}}                       ->> déchiré
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]", "*")
................................................................................
    [ma|ta|sa]  *WORD
        <<- not (tag(\1, "_CAP_") and morph(\1, ":N")) and not (tag(\1, "eg1mot") and morph(\2, ":V.[ea].:3[sp]")) >>>
        <<- /gn/ morph(\2, ":[NA].*:m", ":[efGW]") -1>> =\1[:-1]+"on"                       && Accord de genre erroné : « \2 » est masculin.
        <<- /gn/ __also__ and not re.search("(?i)^[aâeéèêiîoôuûyœæ]", \2) and hasFemForm(\2)
        -2>> =suggFemSing(\2, True)                                                         && Accord de genre erroné : « \1 » est un déterminant féminin.
        <<- /gn/ morph(\2, ":[NA].*:p", ":[siGW]") -2>> =suggFemSing(\2)                    && Accord de nombre erroné : « \2 » devrait être au singulier.

TEST: {{ma}} {{parti}}                                                          ->> mon|||partie
TEST: {{ma}} amour                                                              ->> mon
TEST: ma {{carlingues}}                                                         ->> carlingue
TEST: Après cet épisode, la SA a joué un rôle marginal dans l’histoire du Troisième Reich
TEST: “ma” est un déterminant féminin


__gn_det_fem_sing_2m__
    [ma|ta|sa|cette|quelle|ladite|aucune|nulle]  *WORD  *WORD
        <<- /gn/ not value(<1, "|et|ou|de|d’|") and not morph(\3, ">seul/") >>>
................................................................................
    [et|ou|de|d’]  [ma|ta|sa|cette|quelle|ladite|aucune|nulle]  *WORD  *WORD
        <<- /gn/ not morph(<1, ":[NAQ]|>(?:et|ou)/") and not morph(\4, ">seul/") >>>
        <<- /gn/ morph(\3, ":[NAQ].*:[fe]", ":(?:B|G|V0|m)") and morph(\4, ":[NAQ].*:m", "*") and not apposition(\3, \4)
        -4>> =suggFemSing(\4, True)                                                         && Accord de genre erroné : « \3 » est féminin, « \4 » est masculin.
        <<- /gn/ morph(\3, ":[NAQ].*:[si]", ":G") and morph(\4, ":[NAQ].*:p", ":[GWsi]") and not apposition(\3, \4)
        -4>> =suggFemSing(\4)                                                               && Accord de nombre erroné avec « \2 \3 » : « \4 » devrait être au singulier.

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


__gn_notre_votre_chaque_1m__
    [notre|votre|chaque]  *WORD
        <<- /gn/ morph(\2, ":[NA].*:p", ":[siGW]") -2>> =suggSing(\2)                       && Accord de nombre erroné : « \2 » devrait être au singulier.

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


__gn_quelque_1m__
    quelque  *WORD
        <<- /gn/ morph(\2, ":[NA].*:p", ":[siG]") and not value(>1, "|que|qu’|")
        -1>> quelques                                                                       && Il manque un “s” à « quelque » ou « \2 » doit être au singulier.

TEST: {{Quelque}} amis                                                          ->> Quelques


__gn_det_epi_sing_2m__
    [chaque|quelque|notre|votre]  *WORD  *WORD
        <<- /gn/ not value(<1, "|et|ou|de|d’|") and not morph(\3, ">seul/") >>>
        <<- /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)
................................................................................
        <<- /gn/ ((morph(\3, ":[NA].*:m", ":(?:B|e|G|V0|f)") and morph(\4, ":[NA].*:f", "*")) or (morph(\3, ":[NA].*:f", ":(?:B|e|G|V0|m)") and morph(\4, ":[NA].*:m", "*")))
            and not apposition(\3, \4)
        -4>> =switchGender(\4, False)                                                       && Accord de genre erroné entre « \3 » et « \4 ».
        <<- /gn/ __also__ and hasFemForm(\3) -3>> =switchGender(\3, False)                  && Accord de genre erroné avec « \4 ».
        <<- /gn/ morph(\3, ":[NA].*:[si]", ":G") and morph(\4, ":[NA].*:p", ":[GWsi]") and not apposition(\3, \4)
        -4>> =suggSing(\4)                                                                  && Accord de nombre erroné avec « \2 \3 » : « \4 » devrait être au singulier.

TEST: chaque élément {{terrestres}}                                             ->> terrestre
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_notre_votre_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", "*")
................................................................................
            and not (value(\1, "|que|") and morph(<1, ">tel/") and morph(\3, ":3[sp]"))
        -3>> =suggPlur(\3)                                                                  && Accord de nombre erroné : « \3 » devrait être au pluriel.

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

TEST: ils viennent, les {{petit}}                                               ->> petits
TEST: Les {{tiret}}                                                             ->> tirets
TEST: Les plus {{grand}} hommes.                                                ->> grands
TEST: les {{véhicule}}                                                          ->> véhicules
TEST: Les {{démoralisation}}.                                                   ->> démoralisations
TEST: dans les {{usine}}                                                        ->> usines
TEST: les {{abricot}}                                                           ->> abricots
TEST: tels que les décrit Macron
TEST: J’en ramasse quelques-unes, puis les glisse dans l’une de mes poches, ça me fera un souvenir.


__gn_les_2m__
    les  *WORD  *WORD
        <<- /gn/ morph(\1, ":D") and not value(<1, "|et|ou|de|d’|") and not morph(\3, ">seul/") >>>
................................................................................
        <<- /gn/ ((morph(\3, ":[NA].*:m", ":(?:B|e|G|V0|f)") and morph(\4, ":[NA].*:f", "*")) or (morph(\3, ":[NA].*:f", ":(?:B|e|G|V0|m)") and morph(\4, ":[NA].*:m", "*")))
            and not apposition(\3, \4)
        -4>> =switchGender(\4, True)                                                                && Accord de genre erroné entre « \3 » et « \4 ».
        <<- /gn/ __also__ and hasFemForm(\3) -3>> =switchGender(\3, True)                           && Accord de genre erroné avec « \4 ».
        <<- /gn/ morph(\3, ":[NA].*:[pi]") and morph(\4, ":[NA].*:s", "*") and not apposition(\3, \4) and not (value(>1, "|et|,|") and morph(>2, ":A"))
        -4>> =suggPlur(\4)                                                                          && Accord de nombre erroné avec « \2 \3 » : « \4 » devrait être au pluriel.

TEST: les pitres {{imbécile}}                                                   ->> imbéciles
TEST: il faut en convenir et les femmes {{oubliés}} seront satisfaites.         ->> oubliées
TEST: les {{petites}} {{oubliés}}                                               ->> petits|||oubliées
TEST: c’est ça, et les femmes {{retrouvés}} seront emmenées à l’hôpital.        ->> retrouvées
TEST: fais ce que tu peux, ou les {{petites}} {{perdus}} le seront à jamais     ->> petits|||perdues
TEST: ça ou les éternels {{imbécile}} du coin                                   ->> imbéciles
TEST: les {{éventuels}} {{fiches}}                                              ->> éventuelles|||fichés
TEST: les moins éloignées possible
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: {{leurs}} {{action}}                                                      ->> leur|||actions
TEST: {{leur}} {{données}}                                                      ->> leurs|||donnée
TEST: {{leurs}} {{abricot}}                                                     ->> leur|||abricots


__gn_det_pluriel_1m__
    [des|mes|tes|ses|nos|vos|quelques|lesdits|lesdites|desdits|desdites|auxdits|auxdites|moult]  *WORD
        <<- /gn/ morph(\2, ":[NA].*:s", ":[ipGW]") and not (value(>1, "|et|ou|") and morph(>2, ":[NA]"))
        -2>> =suggPlur(\2)                                                                  && Accord de nombre erroné : « \2 » devrait être au pluriel.

TEST: des {{pain}}                                                              ->> pains
TEST: Quelques {{homme}}.                                                       ->> hommes
TEST: plusieurs {{femme}} sont venues.                                          ->> femmes
TEST: des {{abricot}}                                                           ->> abricots
TEST: des {{son}} que nous entendons jour et nuit.                              ->> sons
TEST: une personne ou plusieurs ayant décidé de façon déterminée et coordonnée de faire cuire la grenouille


__gn_ces_aux_pluriel_1m__
    [ces|aux]  *WORD
        <<- /gn/ morph(\2, ":[NA].*:s", ":[ipGW]") and not (value(>1, "|et|ou|") and morph(>2, ":[NA]"))
        -2>> =suggPlur(\2)                                                                  && Accord de nombre erroné : « \2 » devrait être au pluriel.
        <<- /gn/ __also__ and morph(\2, ">[bcçdfglklmnpqrstvwxz].*:m", ":f") >>>
        <<- /gn/ \1.endswith("x") or \1.endswith("X") -1>> au                               && Accord de nombre erroné : « \2 » est au singulier.
        <<- /gn/ __else__ -1>> ce                                                           && Accord de nombre erroné : « \2 » est au singulier.

TEST: {{ces}} {{détournement}} de fonds et ces vols                             ->> ce|||détournements
TEST: ces {{étudiant}} sont légion.                                             ->> étudiants
TEST: je vais {{aux}} {{cinéma}}                                                ->> au|||cinémas
TEST: il l’a donné aux {{étudiant}}                                             ->> étudiants
TEST: aux {{personne}}                                                          ->> personnes
TEST: j’entends ces {{même}} âneries tous les jours                             ->> mêmes
TEST: clafoutis aux {{abricot}}                                                 ->> abricots


__gn_det_epi_plur_2m__
    [ces|mes|tes|ses|nos|vos|leurs|quelques|plusieurs|aux|moult]  *WORD  *WORD
        <<- /gn/ not value(<1, "|et|ou|de|d’|au|aux|") and not morph(\3, ">seul/") >>>
        <<- /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)
................................................................................
            and not apposition(\3, \4)
        -4>> =switchGender(\4, True)                                                                && Accord de genre erroné entre « \3 » et « \4 ».
        <<- /gn/ __also__ and hasFemForm(\3) -3>> =switchGender(\3, True)                           && Accord de genre erroné avec « \4 ».
        <<- /gn/ morph(\3, ":[NA].*:[pi]") and morph(\4, ":[NA].*:s", "*") and not apposition(\3, \4) and not (value(>1, "|et|,|") and morph(>2, ":A"))
            and not (value(\1, "|de|d’|") and value(<1, "|un|une|"))
        -4>> =suggPlur(\4)                                                                          && Accord de nombre erroné avec « \2 \3 » : « \4 » devrait être au pluriel.

TEST: ces {{beaux}} {{institutions}}                                            ->> belles|||
TEST: nos petites {{fille}}                                                     ->> filles
TEST: de plusieurs {{grands}} {{avocates}}                                      ->> grandes|||avocats
TEST: de vos défauts {{terrible}}, je connais presque tout.                     ->> terribles
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.


................................................................................
!!
!!
!!!! Verbes sans sujets                                                                           !!
!!
!!

__conj_que_où_comment_verbe_sans_sujet!3__
    [que|qu’|où|comment|combien|dont|quand|pourquoi|puisque|puisqu’|lorsque|lorsqu’|auquel|auxquels|auxquelles|duquel|desquels|desquelles|lequel|laquelle|lesquels|lesquelles|si]  @:[12][sp]¬:(?:G|W|3[sp]|Y|P|Q|N|A|M|VC)
        <<- /conj/ morph(\2, ":[12]s") and not value(>1, "|je|tu|") -2>> =suggVerb(\2, ":3s")                           && Conjugaison erronée. Ce verbe devrait être à la 3ᵉ personne.
        <<- /conj/ __else__ and morph(\2, ":[12]p") and not value(>1, "|nous|vous|") -2>> =suggVerb(\2, ":3p")          && Conjugaison erronée. Ce verbe devrait être à la 3ᵉ personne.

TEST: Qu’est-ce que tu crois que {{deviens}} réellement, immanquablement et subitement cet homme après une telle dérouillée ?
TEST: peu importe ce que tu crois du lieu où l’{{abandonnerais}} ce salopard…
TEST: nous savons comment {{arriverons}} ces problèmes…
TEST: nous le pensons puisque {{paraitrons}} folles ces augmentations