Grammalecte  Diff

Differences From Artifact [752247ebb4]:

To Artifact [81b061fa47]:


15881
15882
15883
15884
15885
15886
15887
15888
15889
15890
15891
15892





15893
15894
15895
15896
15897
15898
15899
15881
15882
15883
15884
15885
15886
15887





15888
15889
15890
15891
15892
15893
15894
15895
15896
15897
15898
15899







-
-
-
-
-
+
+
+
+
+







    à [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
    à 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
        <<- ~>> *

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
23101
23102
23103
23104
23105
23106
23107
23108
23109
23110
23111
23112
23113
23114
23115
23116



23117
23118
23119
23120
23121
23122
23123
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
23101
23102
23103
23104
23105
23106
23107
23108
23109
23110
23111
23112
23113



23114
23115
23116
23117
23118
23119
23120
23121
23122
23123







-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+




















-
-
-
+
+
+







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

    [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: 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__
23143
23144
23145
23146
23147
23148
23149
23150
23151
23152
23153




23154
23155
23156
23157
23158
23159
23160
23143
23144
23145
23146
23147
23148
23149




23150
23151
23152
23153
23154
23155
23156
23157
23158
23159
23160







-
-
-
-
+
+
+
+







        -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}}
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)
23170
23171
23172
23173
23174
23175
23176
23177
23178
23179
23180
23181
23182
23183
23184








23185
23186
23187
23188
23189
23190
23191
23170
23171
23172
23173
23174
23175
23176








23177
23178
23179
23180
23181
23182
23183
23184
23185
23186
23187
23188
23189
23190
23191







-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+







            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: 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", "*")
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
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







-
-
-
+
+
+








-
-
-
+
+
+








-
-
-
+
+
+








-
-
-
+
+
+








-
-
-
+
+
+








-
-
-
+
+
+








__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.
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
TEST: {{ladite}} {{professeur}} était intarissable
TEST: ladite {{passions}} l’avait conduit à sa perte.
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
TEST: {{aucun}} {{animale}}
TEST: aucun {{accords}} n’y changera rien.
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
TEST: {{aucune}} {{conseiller}} ne vint nous aider
TEST: aucune {{passions}} n’est digne qu’on meurt pour elle.
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.
TEST: {{nul}} femme ne réagirait si bêtement
TEST: {{nul}} {{ratée}} ne survint
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.
TEST: {{nulle}} homme ne comprendrait ça
TEST: {{nulle}} {{damné}} à sauver
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.
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
23316
23317
23318
23319
23320
23321
23322
23323
23324
23325
23326
23327
23328
23329
23330
23331
23332
23333
23334






23335
23336
23337
23338
23339
23340
23341
23342
23343
23344
23345
23346
23347
23348
23349
23350
23351
23352
23353
23354
23355
23356
23357






23358
23359
23360
23361
23362
23363
23364
23365
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
23431
23432
23433
23434
23435
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
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
23316
23317
23318
23319
23320
23321
23322
23323
23324
23325
23326
23327
23328






23329
23330
23331
23332
23333
23334
23335
23336
23337
23338
23339
23340
23341
23342
23343
23344
23345
23346
23347
23348
23349
23350
23351






23352
23353
23354
23355
23356
23357
23358
23359
23360
23361
23362
23363
23364
23365
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
23431
23432
23433
23434
23435
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







-
-
-
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+




















-
-
-
-
-
-
+
+
+
+
+
+

















-
-
-
-
-
-
+
+
+
+
+
+















-
-
-
-
+
+
+
+









-
-
-
-
+
+
+
+









-
-
-
+
+
+








-
-
+
+









-
-
-
+
+
+



















-
-
-
-
+
+
+
+







-
+












-
-
-
+
+
+










-
+








-
+

-
-
-
-
-
+
+
+
+
+







        <<- /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: {{Un}} {{amie}}                                           ->> Une|||ami
TEST: {{un}} des {{chattes}}                                    ->> une|||chats
TEST: {{une}} des {{chats}}                                     ->> un|||chattes
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: 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
        <<- /gn/ not value(<1, "|et|ou|d’|") and not morph(\3, ">seul/") >>>
        <<- /gn/ morph(\2, ":[NA].*:[me]", ":(?:B|G|V0)") and morph(\3, ":[NA].*:f", "*") and not apposition(\2, \3)
        -3>> =suggMasSing(\3, True)                                                                 && Accord de genre erroné : le syntagme « \1 \2 » est masculin, « \3 » est féminin.
        <<- /gn/ morph(\2, ":[NA].*:[si]", ":G") and morph(\3, ":[NA].*:p", "*") and not apposition(\2, \3)
        -3>> =suggMasSing(\3)                                                                       && Accord de nombre erroné avec « \2 » : « \3 » devrait être au singulier.

    [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}}.
TEST: un exercice pas très {{utiles}}.                                                      ->> utile
TEST: un homme {{grands}}                                                                   ->> grand
TEST: un homme {{futiles}}                                                                  ->> futile
TEST: que sais-tu d’un homme {{grande}} comme un arbre                                      ->> grand
TEST: je me souviens d’un homme {{arrogants}}                                               ->> arrogant
TEST: C’est pas les quelques vues sur Linux qui vont rattraper un scénario {{bancale}}.     ->> bancal


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

    [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: 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/ morph(\2, ":[NA].*:p", ":[siGW]") -2>> =suggMasSing(\2)                    && Accord de nombre erroné : « \2 » devrait être au singulier.

__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.
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
TEST: ce {{claviers}}
TEST: {{ce}} donne
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}}.
TEST: {{cet}} ballon.                                         ->> ce
TEST: cet {{oliviers}}
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.
TEST: cette {{illusions}} que nous voyons plus clair que quiconque
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}}
TEST: Téléphone {{au}} personne qui ont donné leur accord.
TEST: téléphone {{au}} {{boulangère}}
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/") >>>
        <<- /gn/ morph(\2, ":[NA].*:[me]", ":(?:B|G|V0)") and morph(\3, ":[NA].*:f", "*") and not apposition(\2, \3)
        -3>> =suggMasSing(\3, True)                                                         && Accord de genre erroné : « \2 » est masculin, « \3 » est féminin.
        <<- /gn/ morph(\2, ":[NA].*:[si]", ":G") and morph(\3, ":[NA].*: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’]  [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}}.
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: 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}}
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>> =suggMasSing(\3)                                                               && Accord de nombre erroné avec « \1 \2 » : « \3 » devrait être au singulier.
        -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>> =suggMasSing(\4)                                                               && Accord de nombre erroné avec « \2 \3 » : « \4 » devrait être au singulier.
        -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}}
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: 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]", "*")
23519
23520
23521
23522
23523
23524
23525
23526
23527
23528



23529
23530
23531
23532
23533
23534
23535
23536
23537
23538
23539
23540
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
23519
23520
23521
23522
23523
23524
23525



23526
23527
23528
23529
23530
23531
23532
23533
23534
23535
23536
23537
23538
23539
23540
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







-
-
-
+
+
+



















-
-
-
-
+
+
+
+








-
+






-
+







-
+







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

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


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

TEST: une amie prodigieuse {{récompensé}}                           ->> récompensée
TEST: 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
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
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)
23590
23591
23592
23593
23594
23595
23596
23597
23598
23599
23600
23601
23602






23603
23604
23605
23606
23607
23608
23609
23590
23591
23592
23593
23594
23595
23596






23597
23598
23599
23600
23601
23602
23603
23604
23605
23606
23607
23608
23609







-
-
-
-
-
-
+
+
+
+
+
+







        <<- /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: 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", "*")
23632
23633
23634
23635
23636
23637
23638
23639
23640
23641
23642
23643
23644
23645







23646
23647
23648
23649
23650
23651
23652
23632
23633
23634
23635
23636
23637
23638







23639
23640
23641
23642
23643
23644
23645
23646
23647
23648
23649
23650
23651
23652







-
-
-
-
-
-
-
+
+
+
+
+
+
+







            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: 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/") >>>
23662
23663
23664
23665
23666
23667
23668
23669
23670
23671
23672
23673
23674
23675







23676
23677
23678
23679
23680
23681
23682
23683
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
23662
23663
23664
23665
23666
23667
23668







23669
23670
23671
23672
23673
23674
23675
23676
23677
23678
23679
23680
23681
23682
23683
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







-
-
-
-
-
-
-
+
+
+
+
+
+
+















-
-
-
+
+
+







-
-
-
-
-
+
+
+
+
+











-
-
-
-
-
-
-
+
+
+
+
+
+
+







        <<- /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 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}}
TEST: {{leur}} {{données}}
TEST: {{leurs}} {{abricot}}
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: 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
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)
23739
23740
23741
23742
23743
23744
23745
23746
23747
23748
23749




23750
23751
23752
23753
23754
23755
23756
23739
23740
23741
23742
23743
23744
23745




23746
23747
23748
23749
23750
23751
23752
23753
23754
23755
23756







-
-
-
-
+
+
+
+







            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: 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.


32548
32549
32550
32551
32552
32553
32554
32555

32556
32557
32558
32559
32560
32561
32562
32548
32549
32550
32551
32552
32553
32554

32555
32556
32557
32558
32559
32560
32561
32562







-
+







!!
!!
!!!! 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)
    [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