Grammalecte  Diff

Differences From Artifact [72b9f391a3]:

To Artifact [7056f0f808]:


3827
3828
3829
3830
3831
3832
3833
3834
3835
3836
3837
3838
3839
3840
3841
3827
3828
3829
3830
3831
3832
3833

3834
3835
3836
3837
3838
3839
3840







-









__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
12691
12692
12693
12694
12695
12696
12697
12698
12699
12700
12701
12702
12703
12704
12705

12706
12707
12708
12709
12710
12711
12712
12690
12691
12692
12693
12694
12695
12696


12697
12698
12699
12700
12701

12702
12703
12704
12705
12706
12707
12708
12709







-
-





-
+







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
        <<- /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
21431
21432
21433
21434
21435
21436
21437
21438

21439
21440
21441
21442
21443
21444
21445
21428
21429
21430
21431
21432
21433
21434

21435
21436
21437
21438
21439
21440
21441
21442







-
+







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()
        <<- /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

21482
21483
21484
21485
21486
21487
21488
21489

21490
21491
21492

21493
21494
21495
21496

21497
21498
21499
21500
21501
21502
21503
21479
21480
21481
21482
21483
21484
21485

21486
21487
21488

21489
21490
21491
21492

21493
21494
21495
21496
21497
21498
21499
21500







-
+


-
+



-
+







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]", "*")
        <<- /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)") and morph(\4, ":[NAQ].*:[pf]", "*")
        <<- /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)") and morph(\4, ":[NAQ].*:p", "*")
        <<- /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é

21536
21537
21538
21539
21540
21541
21542
21543

21544
21545
21546
21547
21548
21549
21550
21533
21534
21535
21536
21537
21538
21539

21540
21541
21542
21543
21544
21545
21546
21547







-
+







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()
        <<- /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
21588
21589
21590
21591
21592
21593
21594
21595

21596
21597

21598
21599

21600
21601
21602
21603
21604
21605
21606
21585
21586
21587
21588
21589
21590
21591

21592
21593

21594
21595

21596
21597
21598
21599
21600
21601
21602
21603







-
+

-
+

-
+







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", "*")
        <<- /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)") and morph(\4, ":[NA].*:m", "*")
        <<- /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)") and morph(\4, ":[NA].*:p", "*")
        <<- /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


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







-
+

-
+

-
+










-
+

-
+

-
+










-
+









-
+








-
+

-
+

-
+







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", "*")
        <<- /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)") and morph(\4, ":[NAQ].*:m", "*")
        <<- /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)") and morph(\4, ":[NAQ].*:s", "*")
        <<- /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)") and morph(\4, ":[NAQ].*:f", "*")
        <<- /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)") and morph(\4, ":[NAQ].*:m", "*")
        <<- /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)") and morph(\4, ":[NAQ].*:s", "*")
        <<- /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)") and morph(\4, ":[NAQ].*:[fs]", "*")
            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)") and morph(\4, ":[NAQ].*:[ms]", "*")
            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)") and morph(\4, ":[NAQ].*:f", "*")
        <<- /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)") and morph(\4, ":[NAQ].*:m", "*")
        <<- /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)") and morph(\4, ":[NAQ].*:s", "*")
        <<- /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