Grammalecte  Diff

Differences From Artifact [72b9f391a3]:

To Artifact [7056f0f808]:


3827
3828
3829
3830
3831
3832
3833
3834
3835
3836
3837
3838
3839
3840
3841
.....
12691
12692
12693
12694
12695
12696
12697
12698
12699
12700
12701
12702
12703
12704
12705
12706
12707
12708
12709
12710
12711
12712
.....
21431
21432
21433
21434
21435
21436
21437
21438
21439
21440
21441
21442
21443
21444
21445
.....
21482
21483
21484
21485
21486
21487
21488
21489
21490
21491
21492
21493
21494
21495
21496
21497
21498
21499
21500
21501
21502
21503
.....
21536
21537
21538
21539
21540
21541
21542
21543
21544
21545
21546
21547
21548
21549
21550
.....
21588
21589
21590
21591
21592
21593
21594
21595
21596
21597
21598
21599
21600
21601
21602
21603
21604
21605
21606
.....
21897
21898
21899
21900
21901
21902
21903
21904
21905
21906
21907
21908
21909
21910
21911
21912
21913
21914
21915
21916
21917
21918
21919
21920
21921
21922
21923
21924
21925
21926
21927
21928
21929
21930
21931
21932
21933
21934
21935
21936
21937
21938
21939
21940
21941
21942
21943
21944
21945
21946
21947
21948
21949
21950
21951
21952
21953
21954
21955
21956
21957
21958
21959
21960
21961
21962
21963
21964


__eleu_élisions_superflues__
    l’  @>[aâeéèêiîoôuûyœæh].*;é
        <<- /eleu/ morph(\2, ":(?:[123][sp]|[NA].*:e)") -1>> le|la          && Pas d’élision.
        <<- /eleu/ __else__ and morph(\2, ":[NA].*:m") -1>> le              && Pas d’élision.
        <<- /eleu/ __else__ and morph(\2, ":[NA].*:f") -1>> la              && Pas d’élision.
        <<- /eleu/ __else__ -1>> le|la                                      && Pas d’élision.

    [d’|qu’|j’|n’|m’|t’|s’]  @>[aâeéèêiîoôuûyœæh].*;é
        <<- /eleu/ -1>> =\1[0:-1]+"e"                                       && Pas d’élision.

TEST: {{l’}}haricot                                                         ->> le
TEST: {{l’}}ouistiti                                                        ->> le
TEST: {{j’}}hâble                                                           ->> je
................................................................................
TEST: C’est une prérogative de l’{{état-nation}}                        ->> État-nation


# gentilés / ethnonymes
__maj_gentilés__
    océan Indien
    [îles|iles] Britanniques
    [le|ce|un|de|mon|ton|son|notre|votre|leur|quel] malaise
    [de|des|ces|mes|tes|ses|nos|vos|leurs|quels|quelques|plusieurs|certains] malaises
    à [la|l’] [afghane|albanaise|algérienne|allemande|américaine|andorrane|anglaise|angolaise|arabe|argentine|arménienne|australienne|autrichienne|asiatique|azerbaïdjanaise|bahamienne|bangladaise|bengladeshie|barbadienne|basque|belge|bélizienne|béninoise|bretonne|bhoutanaise|biélorusse|birmane|bolivienne|bosnienne|botswanaiso|brésilienne|britannique|brunéiene|bulgare|burkinabé|burundaise|cambodgienne|camerounaise|canadienne|capverdienne|centrafricaine|chilienne|chinoise|chypriote|colombienne|comorienne|congolaise|nord-coréenne|corse|costaricienne|croate|cubaine|danoise|djiboutienne|dominicaine|égyptienne|émiratie|équatorienne|érythréenne|estonienne|espagnole|étatsunienne|états-unienne|étasunienne|éthiopienne|fidjienne|finlandaise|formosane|française|gabonaise|gambienne|géorgienne|ghanéenne|grecque|grenadienne|guadeloupéenne|guatémaltèque|guinéenne|équato-guinéenne|guyanienne|haïtienne|honduriene|hollandaise|hongroise|indienne|indochinoise|indonésienne|irakienne|italienne|iranienne|irlandaise|islandaise|israélienne|ivoirienne|jamaïcaine|japonaise|jordanienne|kazakhe|kényane|kosovare|koweïtienne|laotienne|lapone|lettone|libanaise|libérienne|libyenne|liechtensteinoise|lituanienne|luxembourgeois|macédonienne|maghrébine|malgache|malaisienne|malawite|maldivienne|malienne|maltaise|maorie|marocaine|martienne|mauricienne|mauritanienne|mexicaine|micronésienne|moldave|monégasque|monténégrine|mongole|mozambicaine|namibiene|népalaise|nicaraguayenne|nigérienne|nigériane|néerlandaise|norvégienne|néo-zélandaise|ougandaise|ouzbèke|pakistanaise|palestinienne|panaméenne|paraguayenne|perse|péruvienne|philippine|polonaise|polynésienne|portugaise|québécoise|qatarie|roumaine|russe|rwandaise|saoudienne|scandinave|salvadorienne|sénégalaise|serbe|singapourienne|slovaque|slovène|somalienne|soudanaise|soviétique|srilankaise|suédoise|suisse|surinamaise|syrienne|sud-africaine|sud-coréenne|américaine|tadjike|tanzanienne|tchadienne|tchèque|thaïlandaise|togolaise|tahitienne|tunisiene|turkmène|turque|taïwanaise|ukrainienne|uruguayenne|vénézuélienne|vietnamienne|yéménite|yougoslave|zaïroise|zambienne|zimbabwéenne]
        <<- !-1>>

    $;G
        <<- /maj/ \1.istitle() and morph(<1, ":N", ":(?:A|V0e|D|R|B|X)") -1:>> =\1.lower()          && S’il s’agit d’un adjectif, ne mettez pas de majuscule.
        <<- /maj/ \1.islower() and not \1.startswith("canadienne") and
            ( value(<1, "|certains|certaines|maints|maintes|ce|cet|cette|ces|des|les|nos|vos|leurs|quelques|plusieurs|chaque|une|aux|la|ma|ta|sa|quel|quelle|quels|quelles|")
            or ( value(<1, "|le|") and morph(\1, ":N.*:[me]:[si]", ";L") )
            or ( value(<1, "|l’|") and morph(\1, ":N.*:[si]", ";L") )
            or ( value(<1, "|de|d’|") and morph(<2, ">(?:beaucoup|énormément|multitude|tant|tellement|poignée|groupe|car|bus|équipe|plus|moins|pas|trop|majorité|millier|million|centaine|dizaine|douzaine|combien|photo|complot|enlèvement|témoignage|viol|meurtre|assassinat|duel|tiers|quart|pourcentage|proportion|génération|portrait|rencontre|reportage|parole|communauté|vie|rassemblement|bataillon|armée|émigration|immigration|invasion|trio|couple|famille|descendante|action|attente|désir|souhait|vote|volonté)/") )
            or ( value(<1, "|un|") and not value(<2, "|dans|numéro|") and not after("(?:approximatif|argotique|correct|courant|parfait|facile|haché|aisé|impeccable|incompréhensible|prononcé|baragouiné)") )
            or ( morph(<1, ":B:e:p") and not morph(<2, ">numéro/") ) )
        -1>> =\1.capitalize()                                                                       && S’il s’agit d’un gentilé, mettez une majuscule.|https://fr.wiktionary.org/wiki/gentil%C3%A9
................................................................................
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)") 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

................................................................................
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)") and morph(\4, ":[NAQ].*:[pf]", "*")
        -4>> =suggMasSing(\4)                                                               && Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au masculin singulier.
        <<- /gn/ re.search("^[aâeéèêiîoôuûyœæ]", \2) >>>
        <<- /gn/ morph(\2, ":[NA].*:m:[si]", ":[fe]") and morph(\3, ":[NA].*:[me]:[si]", ":(?:[123][sp]|G|P|B)") and morph(\4, ":[NAQ].*:[pf]", "*")
        -4>> =suggMasSing(\4)                                                               && Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au masculin singulier.
        <<- /gn/ __else__ and morph(\2, ":[NA].*:f:[si]", ":[me]") and morph(\3, ":[NA].*:[fe]:[si]", ":(?:[123][sp]|G|P|B)") and morph(\4, ":[NAQ].*:[pm]", "*")
        -4>> =suggFemSing(\4)                                                               && Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au féminin singulier.
        <<- /gn/ __else__ and morph(\2, ":[NA].*:[si]") and morph(\3, ":[NA].*:[si]", ":(?:[123][sp]|G|P|B)") and morph(\4, ":[NAQ].*:p", "*")
        -4>> =suggSing(\4)                                                                  && Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au singulier.

TEST: mon petit ami {{décédée}}                                                 ->> décédé
TEST: mon ami proche {{décédée}}                                                ->> décédé
TEST: mon amie proche {{décédé}}                                                ->> décédée
TEST: son addictologue ridicule {{financés}} par l’État                         ->> financé

................................................................................
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)") 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
................................................................................
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)") and morph(\4, ":[NA].*:f", "*")
        -4>> =suggMasSing(\4)                                                               && Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au masculin singulier.
        <<- /gn/ __else__ and morph(\2, ":[NA].*:f:[si]", ":[me]") and morph(\3, ":[NA].*:[fe]:[si]", ":(?:[123][sp]|G|P|B)") and morph(\4, ":[NA].*:m", "*")
        -4>> =suggFemSing(\4)                                                               && Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au féminin singulier.
        <<- /gn/ __else__ and morph(\2, ":[NA].*:[si]", ":[fe]") and morph(\3, ":[NA].*:[me]:[si]", ":(?:[123][sp]|G|P|B)") and morph(\4, ":[NA].*:p", "*")
        -4>> =suggSing(\4)                                                                  && Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au singulier.

TEST: notre grande armée {{fabuleux}}                                           ->> fabuleuse
TEST: notre supérieur hiérarchique {{ignorante}} des pratiques                  ->> ignorant
TEST: votre petit test {{minables}}                                             ->> minable


................................................................................
TEST: Un problème rapporté par maints est l’incapacité à trouver un partenaire


## 3m
__gn_det_les_3m__
    les  *WORD  *WORD  *WORD
        <<- /gn/ morph(<1, "<start>|:V", "*") and not morph(\2, ":[123][sp]") and \4.islower() and not morph(\4, ">seul/") >>>
        <<- /gn/ morph(\2, ":[NA].*:m:[pi]", ":[fe]") and morph(\3, ":[NA].*:[me]:[pi]", ":(?:[123][sp]|G|P|B)") and morph(\4, ":[NAQ].*:f", "*")
        -4>> =suggMasPlur(\4)                                                               && Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au masculin pluriel.
        <<- /gn/ __else__ and morph(\2, ":[NA].*:f:[pi]", ":[me]") and morph(\3, ":[NA].*:[fe]:[pi]", ":(?:[123][sp]|G|P|B)") and morph(\4, ":[NAQ].*:m", "*")
        -4>> =suggFemPlur(\4)                                                               && Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au féminin pluriel.
        <<- /gn/ __else__ and morph(\2, ":[NA].*:[pi]") and morph(\3, ":[NA].*:[me]:[pi]", ":(?:[123][sp]|G|P|B)") and morph(\4, ":[NAQ].*:s", "*")
        -4>> =suggPlur(\4)                                                                  && Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au pluriel.

TEST: les heureux imbéciles {{payée}} au lance-pierre.                      ->> payés
TEST: les petites gens {{oubliés}}                                          ->> oubliées
TEST: les psychologues hypocrites {{ébranlé}} par la crise                  ->> ébranlés


__gn_det_leurs_3m__
    leurs  *WORD  *WORD  *WORD
        <<- /gn/ morph(<1, "<start>|:V", "*") and not morph(\2, ":[123][sp]") and \4.islower() and not morph(\4, ">seul/") and not before("(?i)\\bune? de +$") >>>
        <<- /gn/ morph(\2, ":[NA].*:m:[pi]", ":[fe]") and morph(\3, ":[NA].*:[me]:[pi]", ":(?:[123][sp]|G|P|B)") and morph(\4, ":[NAQ].*:f", "*")
        -4>> =suggMasPlur(\4)                                                               && Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au masculin pluriel.
        <<- /gn/ __else__ and morph(\2, ":[NA].*:f:[pi]", ":[me]") and morph(\3, ":[NA].*:[fe]:[pi]", ":(?:[123][sp]|G|P|B)") and morph(\4, ":[NAQ].*:m", "*")
        -4>> =suggFemPlur(\4)                                                               && Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au féminin pluriel.
        <<- /gn/ __else__ and morph(\2, ":[NA].*:[pi]") and morph(\3, ":[NA].*:[me]:[pi]", ":(?:[123][sp]|G|P|B)") and morph(\4, ":[NAQ].*:s", "*")
        -4>> =suggPlur(\4)                                                                  && Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au pluriel.

TEST: Leurs grands plans {{dépassées}} par les évènements                   ->> dépassés
TEST: leurs grandes peurs {{refoulés}}                                      ->> refoulées
TEST: leurs psychologues hypocrites {{condamné}}                            ->> condamnés


__gn_det_mas_plur_3m__
    [quels|certains|maints|lesdits|desdits|auxdits]  *WORD  *WORD  *WORD
        <<- /gn/ morph(<1, "<start>|:V", "*") and \4.islower() and not morph(\4, ">seul/") and not before("(?i)\\bune? de +$")
            and morph(\2, ":[NA].*:[me]:[pi]") and morph(\3, ":[NA].*:[me]:[pi]", ":(?:[123][sp]|G|P|B)") and morph(\4, ":[NAQ].*:[fs]", "*")
        -4>> =suggMasPlur(\4)                                                               && Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au masculin pluriel.

TEST: lesdits dentistes ruinés {{oublié}}                                   ->> oubliés
TEST: Prendre goût aux heures passées seul à marcher


__gn_det_fem_plur_3m__
    [quelles|certaines|maintes|lesdites|desdites|auxdites]  *WORD  *WORD  *WORD
        <<- /gn/ morph(<1, "<start>|:V", "*") and \4.islower() and not morph(\4, ">seul/") and not before("(?i)\\bune? de +$")
            and morph(\2, ":[NA].*:[fe]:[pi]") and morph(\3, ":[NA].*:[fe]:[pi]", ":(?:[123][sp]|G|P|B)") and morph(\4, ":[NAQ].*:[ms]", "*")
        -4>> =suggFemPlur(\4)                                                               && Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au féminin pluriel.

TEST: quelles belles nuits {{inoubliable}}                                  ->> inoubliables


__gn_det_epi_plur_3m__
    [ces|mes|tes|ses|nos|vos|aux|plusieurs|quelques|moult]  *WORD  *WORD  *WORD
        <<- /gn/ morph(<1, "<start>|:V", "*") and \4.islower() and not morph(\4, ">seul/") and not before("(?i)\\bune? de +$") >>>
        <<- /gn/ morph(\2, ":[NA].*:m:[pi]", ":[fe]") and morph(\3, ":[NA].*:[me]:[pi]", ":(?:[123][sp]|G|P|B)") and morph(\4, ":[NAQ].*:f", "*")
        -4>> =suggMasPlur(\4)                                                               && Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au masculin pluriel.
        <<- /gn/ __else__ and morph(\2, ":[NA].*:f:[pi]", ":[me]") and morph(\3, ":[NA].*:[fe]:[pi]", ":(?:[123][sp]|G|P|B)") and morph(\4, ":[NAQ].*:m", "*")
        -4>> =suggFemPlur(\4)                                                               && Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au féminin pluriel.
        <<- /gn/ __else__ and morph(\2, ":[NA].*:[pi]") and morph(\3, ":[NA].*:[me]:[pi]", ":(?:[123][sp]|G|P|B)") and morph(\4, ":[NAQ].*:s", "*")
        -4>> =suggPlur(\4)                                                                  && Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au pluriel.

TEST: ces petites sottes {{venus}} foutre la merde                          ->> venues
TEST: mes beaux chevaux {{oubliées}}                                        ->> oubliés
TEST: vos dentistes ridicules {{perdu}} dans la forêt                       ->> perdus
TEST: Prendre goût aux heures passées seul à marcher








<







 







<
<





|







 







|







 







|


|



|







 







|







 







|

|

|







 







|

|

|










|

|

|










|









|








|

|

|







3827
3828
3829
3830
3831
3832
3833

3834
3835
3836
3837
3838
3839
3840
.....
12690
12691
12692
12693
12694
12695
12696


12697
12698
12699
12700
12701
12702
12703
12704
12705
12706
12707
12708
12709
.....
21428
21429
21430
21431
21432
21433
21434
21435
21436
21437
21438
21439
21440
21441
21442
.....
21479
21480
21481
21482
21483
21484
21485
21486
21487
21488
21489
21490
21491
21492
21493
21494
21495
21496
21497
21498
21499
21500
.....
21533
21534
21535
21536
21537
21538
21539
21540
21541
21542
21543
21544
21545
21546
21547
.....
21585
21586
21587
21588
21589
21590
21591
21592
21593
21594
21595
21596
21597
21598
21599
21600
21601
21602
21603
.....
21894
21895
21896
21897
21898
21899
21900
21901
21902
21903
21904
21905
21906
21907
21908
21909
21910
21911
21912
21913
21914
21915
21916
21917
21918
21919
21920
21921
21922
21923
21924
21925
21926
21927
21928
21929
21930
21931
21932
21933
21934
21935
21936
21937
21938
21939
21940
21941
21942
21943
21944
21945
21946
21947
21948
21949
21950
21951
21952
21953
21954
21955
21956
21957
21958
21959
21960
21961


__eleu_élisions_superflues__
    l’  @>[aâeéèêiîoôuûyœæh].*;é
        <<- /eleu/ morph(\2, ":(?:[123][sp]|[NA].*:e)") -1>> le|la          && Pas d’élision.
        <<- /eleu/ __else__ and morph(\2, ":[NA].*:m") -1>> le              && Pas d’élision.
        <<- /eleu/ __else__ and morph(\2, ":[NA].*:f") -1>> la              && Pas d’élision.


    [d’|qu’|j’|n’|m’|t’|s’]  @>[aâeéèêiîoôuûyœæh].*;é
        <<- /eleu/ -1>> =\1[0:-1]+"e"                                       && Pas d’élision.

TEST: {{l’}}haricot                                                         ->> le
TEST: {{l’}}ouistiti                                                        ->> le
TEST: {{j’}}hâble                                                           ->> je
................................................................................
TEST: C’est une prérogative de l’{{état-nation}}                        ->> État-nation


# gentilés / ethnonymes
__maj_gentilés__
    océan Indien
    [îles|iles] Britanniques


    à [la|l’] [afghane|albanaise|algérienne|allemande|américaine|andorrane|anglaise|angolaise|arabe|argentine|arménienne|australienne|autrichienne|asiatique|azerbaïdjanaise|bahamienne|bangladaise|bengladeshie|barbadienne|basque|belge|bélizienne|béninoise|bretonne|bhoutanaise|biélorusse|birmane|bolivienne|bosnienne|botswanaiso|brésilienne|britannique|brunéiene|bulgare|burkinabé|burundaise|cambodgienne|camerounaise|canadienne|capverdienne|centrafricaine|chilienne|chinoise|chypriote|colombienne|comorienne|congolaise|nord-coréenne|corse|costaricienne|croate|cubaine|danoise|djiboutienne|dominicaine|égyptienne|émiratie|équatorienne|érythréenne|estonienne|espagnole|étatsunienne|états-unienne|étasunienne|éthiopienne|fidjienne|finlandaise|formosane|française|gabonaise|gambienne|géorgienne|ghanéenne|grecque|grenadienne|guadeloupéenne|guatémaltèque|guinéenne|équato-guinéenne|guyanienne|haïtienne|honduriene|hollandaise|hongroise|indienne|indochinoise|indonésienne|irakienne|italienne|iranienne|irlandaise|islandaise|israélienne|ivoirienne|jamaïcaine|japonaise|jordanienne|kazakhe|kényane|kosovare|koweïtienne|laotienne|lapone|lettone|libanaise|libérienne|libyenne|liechtensteinoise|lituanienne|luxembourgeois|macédonienne|maghrébine|malgache|malaisienne|malawite|maldivienne|malienne|maltaise|maorie|marocaine|martienne|mauricienne|mauritanienne|mexicaine|micronésienne|moldave|monégasque|monténégrine|mongole|mozambicaine|namibiene|népalaise|nicaraguayenne|nigérienne|nigériane|néerlandaise|norvégienne|néo-zélandaise|ougandaise|ouzbèke|pakistanaise|palestinienne|panaméenne|paraguayenne|perse|péruvienne|philippine|polonaise|polynésienne|portugaise|québécoise|qatarie|roumaine|russe|rwandaise|saoudienne|scandinave|salvadorienne|sénégalaise|serbe|singapourienne|slovaque|slovène|somalienne|soudanaise|soviétique|srilankaise|suédoise|suisse|surinamaise|syrienne|sud-africaine|sud-coréenne|américaine|tadjike|tanzanienne|tchadienne|tchèque|thaïlandaise|togolaise|tahitienne|tunisiene|turkmène|turque|taïwanaise|ukrainienne|uruguayenne|vénézuélienne|vietnamienne|yéménite|yougoslave|zaïroise|zambienne|zimbabwéenne]
        <<- !-1>>

    $;G
        <<- /maj/ \1.istitle() and morph(<1, ":N", ":(?:A|V0e|D|R|B|X)") -1:>> =\1.lower()          && S’il s’agit d’un adjectif, ne mettez pas de majuscule.
        <<- /maj/ \1.islower() and not value(\1, "|canadienne|canadiennes|malaise|malaises|avare|avares|") and
            ( value(<1, "|certains|certaines|maints|maintes|ce|cet|cette|ces|des|les|nos|vos|leurs|quelques|plusieurs|chaque|une|aux|la|ma|ta|sa|quel|quelle|quels|quelles|")
            or ( value(<1, "|le|") and morph(\1, ":N.*:[me]:[si]", ";L") )
            or ( value(<1, "|l’|") and morph(\1, ":N.*:[si]", ";L") )
            or ( value(<1, "|de|d’|") and morph(<2, ">(?:beaucoup|énormément|multitude|tant|tellement|poignée|groupe|car|bus|équipe|plus|moins|pas|trop|majorité|millier|million|centaine|dizaine|douzaine|combien|photo|complot|enlèvement|témoignage|viol|meurtre|assassinat|duel|tiers|quart|pourcentage|proportion|génération|portrait|rencontre|reportage|parole|communauté|vie|rassemblement|bataillon|armée|émigration|immigration|invasion|trio|couple|famille|descendante|action|attente|désir|souhait|vote|volonté)/") )
            or ( value(<1, "|un|") and not value(<2, "|dans|numéro|") and not after("(?:approximatif|argotique|correct|courant|parfait|facile|haché|aisé|impeccable|incompréhensible|prononcé|baragouiné)") )
            or ( morph(<1, ":B:e:p") and not morph(<2, ">numéro/") ) )
        -1>> =\1.capitalize()                                                                       && S’il s’agit d’un gentilé, mettez une majuscule.|https://fr.wiktionary.org/wiki/gentil%C3%A9
................................................................................
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

................................................................................
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]", "*")
        -4>> =suggMasSing(\4)                                                               && Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au masculin singulier.
        <<- /gn/ re.search("^[aâeéèêiîoôuûyœæ]", \2) >>>
        <<- /gn/ morph(\2, ":[NA].*:m:[si]", ":[fe]") and morph(\3, ":[NA].*:[me]:[si]", ":(?:[123][sp]|G|P|B)|;C") and morph(\4, ":[NAQ].*:[pf]", "*")
        -4>> =suggMasSing(\4)                                                               && Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au masculin singulier.
        <<- /gn/ __else__ and morph(\2, ":[NA].*:f:[si]", ":[me]") and morph(\3, ":[NA].*:[fe]:[si]", ":(?:[123][sp]|G|P|B)") and morph(\4, ":[NAQ].*:[pm]", "*")
        -4>> =suggFemSing(\4)                                                               && Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au féminin singulier.
        <<- /gn/ __else__ and morph(\2, ":[NA].*:[si]") and morph(\3, ":[NA].*:[si]", ":(?:[123][sp]|G|P|B)|;C") and morph(\4, ":[NAQ].*:p", "*")
        -4>> =suggSing(\4)                                                                  && Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au singulier.

TEST: mon petit ami {{décédée}}                                                 ->> décédé
TEST: mon ami proche {{décédée}}                                                ->> décédé
TEST: mon amie proche {{décédé}}                                                ->> décédée
TEST: son addictologue ridicule {{financés}} par l’État                         ->> financé

................................................................................
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
................................................................................
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", "*")
        -4>> =suggMasSing(\4)                                                               && Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au masculin singulier.
        <<- /gn/ __else__ and morph(\2, ":[NA].*:f:[si]", ":[me]") and morph(\3, ":[NA].*:[fe]:[si]", ":(?:[123][sp]|G|P|B)|;C") and morph(\4, ":[NA].*:m", "*")
        -4>> =suggFemSing(\4)                                                               && Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au féminin singulier.
        <<- /gn/ __else__ and morph(\2, ":[NA].*:[si]", ":[fe]") and morph(\3, ":[NA].*:[me]:[si]", ":(?:[123][sp]|G|P|B)|;C") and morph(\4, ":[NA].*:p", "*")
        -4>> =suggSing(\4)                                                                  && Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au singulier.

TEST: notre grande armée {{fabuleux}}                                           ->> fabuleuse
TEST: notre supérieur hiérarchique {{ignorante}} des pratiques                  ->> ignorant
TEST: votre petit test {{minables}}                                             ->> minable


................................................................................
TEST: Un problème rapporté par maints est l’incapacité à trouver un partenaire


## 3m
__gn_det_les_3m__
    les  *WORD  *WORD  *WORD
        <<- /gn/ morph(<1, "<start>|:V", "*") and not morph(\2, ":[123][sp]") and \4.islower() and not morph(\4, ">seul/") >>>
        <<- /gn/ morph(\2, ":[NA].*:m:[pi]", ":[fe]") and morph(\3, ":[NA].*:[me]:[pi]", ":(?:[123][sp]|G|P|B)|;C") and morph(\4, ":[NAQ].*:f", "*")
        -4>> =suggMasPlur(\4)                                                               && Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au masculin pluriel.
        <<- /gn/ __else__ and morph(\2, ":[NA].*:f:[pi]", ":[me]") and morph(\3, ":[NA].*:[fe]:[pi]", ":(?:[123][sp]|G|P|B)|;C") and morph(\4, ":[NAQ].*:m", "*")
        -4>> =suggFemPlur(\4)                                                               && Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au féminin pluriel.
        <<- /gn/ __else__ and morph(\2, ":[NA].*:[pi]") and morph(\3, ":[NA].*:[me]:[pi]", ":(?:[123][sp]|G|P|B)|;C") and morph(\4, ":[NAQ].*:s", "*")
        -4>> =suggPlur(\4)                                                                  && Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au pluriel.

TEST: les heureux imbéciles {{payée}} au lance-pierre.                      ->> payés
TEST: les petites gens {{oubliés}}                                          ->> oubliées
TEST: les psychologues hypocrites {{ébranlé}} par la crise                  ->> ébranlés


__gn_det_leurs_3m__
    leurs  *WORD  *WORD  *WORD
        <<- /gn/ morph(<1, "<start>|:V", "*") and not morph(\2, ":[123][sp]") and \4.islower() and not morph(\4, ">seul/") and not before("(?i)\\bune? de +$") >>>
        <<- /gn/ morph(\2, ":[NA].*:m:[pi]", ":[fe]") and morph(\3, ":[NA].*:[me]:[pi]", ":(?:[123][sp]|G|P|B)|;C") and morph(\4, ":[NAQ].*:f", "*")
        -4>> =suggMasPlur(\4)                                                               && Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au masculin pluriel.
        <<- /gn/ __else__ and morph(\2, ":[NA].*:f:[pi]", ":[me]") and morph(\3, ":[NA].*:[fe]:[pi]", ":(?:[123][sp]|G|P|B)|;C") and morph(\4, ":[NAQ].*:m", "*")
        -4>> =suggFemPlur(\4)                                                               && Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au féminin pluriel.
        <<- /gn/ __else__ and morph(\2, ":[NA].*:[pi]") and morph(\3, ":[NA].*:[me]:[pi]", ":(?:[123][sp]|G|P|B)|;C") and morph(\4, ":[NAQ].*:s", "*")
        -4>> =suggPlur(\4)                                                                  && Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au pluriel.

TEST: Leurs grands plans {{dépassées}} par les évènements                   ->> dépassés
TEST: leurs grandes peurs {{refoulés}}                                      ->> refoulées
TEST: leurs psychologues hypocrites {{condamné}}                            ->> condamnés


__gn_det_mas_plur_3m__
    [quels|certains|maints|lesdits|desdits|auxdits]  *WORD  *WORD  *WORD
        <<- /gn/ morph(<1, "<start>|:V", "*") and \4.islower() and not morph(\4, ">seul/") and not before("(?i)\\bune? de +$")
            and morph(\2, ":[NA].*:[me]:[pi]") and morph(\3, ":[NA].*:[me]:[pi]", ":(?:[123][sp]|G|P|B)|;C") and morph(\4, ":[NAQ].*:[fs]", "*")
        -4>> =suggMasPlur(\4)                                                               && Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au masculin pluriel.

TEST: lesdits dentistes ruinés {{oublié}}                                   ->> oubliés
TEST: Prendre goût aux heures passées seul à marcher


__gn_det_fem_plur_3m__
    [quelles|certaines|maintes|lesdites|desdites|auxdites]  *WORD  *WORD  *WORD
        <<- /gn/ morph(<1, "<start>|:V", "*") and \4.islower() and not morph(\4, ">seul/") and not before("(?i)\\bune? de +$")
            and morph(\2, ":[NA].*:[fe]:[pi]") and morph(\3, ":[NA].*:[fe]:[pi]", ":(?:[123][sp]|G|P|B)|;C") and morph(\4, ":[NAQ].*:[ms]", "*")
        -4>> =suggFemPlur(\4)                                                               && Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au féminin pluriel.

TEST: quelles belles nuits {{inoubliable}}                                  ->> inoubliables


__gn_det_epi_plur_3m__
    [ces|mes|tes|ses|nos|vos|aux|plusieurs|quelques|moult]  *WORD  *WORD  *WORD
        <<- /gn/ morph(<1, "<start>|:V", "*") and \4.islower() and not morph(\4, ">seul/") and not before("(?i)\\bune? de +$") >>>
        <<- /gn/ morph(\2, ":[NA].*:m:[pi]", ":[fe]") and morph(\3, ":[NA].*:[me]:[pi]", ":(?:[123][sp]|G|P|B)|;C") and morph(\4, ":[NAQ].*:f", "*")
        -4>> =suggMasPlur(\4)                                                               && Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au masculin pluriel.
        <<- /gn/ __else__ and morph(\2, ":[NA].*:f:[pi]", ":[me]") and morph(\3, ":[NA].*:[fe]:[pi]", ":(?:[123][sp]|G|P|B)|;C") and morph(\4, ":[NAQ].*:m", "*")
        -4>> =suggFemPlur(\4)                                                               && Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au féminin pluriel.
        <<- /gn/ __else__ and morph(\2, ":[NA].*:[pi]") and morph(\3, ":[NA].*:[me]:[pi]", ":(?:[123][sp]|G|P|B)|;C") and morph(\4, ":[NAQ].*:s", "*")
        -4>> =suggPlur(\4)                                                                  && Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au pluriel.

TEST: ces petites sottes {{venus}} foutre la merde                          ->> venues
TEST: mes beaux chevaux {{oubliées}}                                        ->> oubliés
TEST: vos dentistes ridicules {{perdu}} dans la forêt                       ->> perdus
TEST: Prendre goût aux heures passées seul à marcher