Grammalecte  Diff

Differences From Artifact [c40affd524]:

To Artifact [1293ea0eda]:


2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205




2206
2207
2208
2209
2210
2211
2212
2195
2196
2197
2198
2199
2200
2201




2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212







-
-
-
-
+
+
+
+







    [le|du|au] groupe    ?nominal¿  «          $:D  @:[NA]  ?@:[NA]¿  ?@:[NA]¿  »
    [le|du|au] groupe    ?nominal¿  [‘|'|’|`]  $:D  @:[NA]  ?@:[NA]¿  ?@:[NA]¿  [‘|'|’|`]
    [le|du|au] groupe    ?nominal¿  ‹          $:D  @:[NA]  ?@:[NA]¿  ?@:[NA]¿  ›
    [le|du|au] syntagme  ?nominal¿  [“|”|"]    [*WORD|*WORDELD]  *WORD  ?*WORD¿  ?*WORD¿  [“|”|"]
    [le|du|au] syntagme  ?nominal¿  «          [*WORD|*WORDELD]  *WORD  ?*WORD¿  ?*WORD¿  »
    [le|du|au] syntagme  ?nominal¿  [‘|'|’|`]  [*WORD|*WORDELD]  *WORD  ?*WORD¿  ?*WORD¿  [‘|'|’|`]
    [le|du|au] syntagme  ?nominal¿  ‹          [*WORD|*WORDELD]  *WORD  ?*WORD¿  ?*WORD¿  ›
    la proposition                  [“|”|"]    [*WORD|*WORDELD]  [*WORD|*WORDELD]  ?[*WORD|*WORDELD]¿  ?[*WORD|*WORDELD]¿  ?[*WORD|*WORDELD]¿  [“|”|"]
    la proposition                  «          [*WORD|*WORDELD]  [*WORD|*WORDELD]  ?[*WORD|*WORDELD]¿  ?[*WORD|*WORDELD]¿  ?[*WORD|*WORDELD]¿  »
    la proposition                  [‘|'|’|`]  [*WORD|*WORDELD]  [*WORD|*WORDELD]  ?[*WORD|*WORDELD]¿  ?[*WORD|*WORDELD]¿  ?[*WORD|*WORDELD]¿  [‘|'|’|`]
    la proposition                  ‹          [*WORD|*WORDELD]  [*WORD|*WORDELD]  ?[*WORD|*WORDELD]¿  ?[*WORD|*WORDELD]¿  ?[*WORD|*WORDELD]¿  ›
    la proposition                  [“|”|"]    [*WORD|*WORDELD]  [*WORD|*WORDELD]  ?[*WORD|*WORDELD]¿  ?[*WORD|*WORDELD]¿  ?*WORD¿  [“|”|"]
    la proposition                  «          [*WORD|*WORDELD]  [*WORD|*WORDELD]  ?[*WORD|*WORDELD]¿  ?[*WORD|*WORDELD]¿  ?*WORD¿  »
    la proposition                  [‘|'|’|`]  [*WORD|*WORDELD]  [*WORD|*WORDELD]  ?[*WORD|*WORDELD]¿  ?[*WORD|*WORDELD]¿  ?*WORD¿  [‘|'|’|`]
    la proposition                  ‹          [*WORD|*WORDELD]  [*WORD|*WORDELD]  ?[*WORD|*WORDELD]¿  ?[*WORD|*WORDELD]¿  ?*WORD¿  ›
    [<start>|la] locution  ?[nominale|adjectivale|adverbiale|verbale|pronominale]¿  [“|”|"]    [*WORD|*WORDELD] ?,¿ [*WORD|*WORDELD]  ?[*WORD|*WORDELD]¿  ?[*WORD|*WORDELD]¿  ?[*WORD|*WORDELD]¿ ?*WORD¿  [“|”|"]
    [<start>|la] locution  ?[nominale|adjectivale|adverbiale|verbale|pronominale]¿  «          [*WORD|*WORDELD] ?,¿ [*WORD|*WORDELD]  ?[*WORD|*WORDELD]¿  ?[*WORD|*WORDELD]¿  ?[*WORD|*WORDELD]¿ ?*WORD¿  »
    [<start>|la] locution  ?[nominale|adjectivale|adverbiale|verbale|pronominale]¿  [‘|'|’|`]  [*WORD|*WORDELD] ?,¿ [*WORD|*WORDELD]  ?[*WORD|*WORDELD]¿  ?[*WORD|*WORDELD]¿  ?[*WORD|*WORDELD]¿ ?*WORD¿  [‘|'|’|`]
    [<start>|la] locution  ?[nominale|adjectivale|adverbiale|verbale|pronominale]¿  ‹          [*WORD|*WORDELD] ?,¿ [*WORD|*WORDELD]  ?[*WORD|*WORDELD]¿  ?[*WORD|*WORDELD]¿  ?[*WORD|*WORDELD]¿ ?*WORD¿  ›
        <<- ~3:0>> *

    [<start>|l’] ancienne locution  ?[nominale|adjectivale|adverbiale|verbale|pronominale]¿
2286
2287
2288
2289
2290
2291
2292
2293

2294
2295
2296
2297
2298
2299
2300
2286
2287
2288
2289
2290
2291
2292

2293
2294
2295
2296
2297
2298
2299
2300







-
+







    [<start>|,]  [“|”|"]    *WORD       [“|”|"]    est féminin
    [<start>|,]  «          *WORD       »          est féminin
    [<start>|,]  [‘|'|’|`]  *WORD       [‘|'|’|`]  est féminin
    [<start>|,]  ‹          *WORD       ›          est féminin
    [<start>|,]  [“|”|"]    *WORD       [“|”|"]    est masculin
    [<start>|,]  «          *WORD       »          est masculin
    [<start>|,]  [‘|'|’|`]  *WORD       [‘|'|’|`]  est masculin
    [<start>|,]  ‹          $:N         ›          est masculin
    [<start>|,]  ‹          *WORD       ›          est masculin
    [<start>|,]  [“|”|"]    $:Y         [“|”|"]    est [un|le]     verbe
    [<start>|,]  «          $:Y         »          est [un|le]     verbe
    [<start>|,]  [‘|'|’|`]  $:Y         [‘|'|’|`]  est [un|le]     verbe
    [<start>|,]  ‹          $:Y         ›          est [un|le]     verbe
    [<start>|,]  [“|”|"]    $:Q         [“|”|"]    est [un|le]     participe passé
    [<start>|,]  «          $:Q         »          est [un|le]     participe passé
    [<start>|,]  [‘|'|’|`]  $:Q         [‘|'|’|`]  est [un|le]     participe passé
3064
3065
3066
3067
3068
3069
3070




3071
3072
3073
3074
3075
3076
3077
3064
3065
3066
3067
3068
3069
3070
3071
3072
3073
3074
3075
3076
3077
3078
3079
3080
3081







+
+
+
+







    [ne|n’] point
        <<- =>> select(\-1, "", ":N")

__da_nos__
    nos $¬:B
        <<- =>> select(\1, ":D")

__da_parler__
    [>aller|>entendre|>falloir|>faire|>pouvoir|>savoir|>vouloir] parler
        <<- =>> select(\-1, ":Y")

__da_parmi__
    parmi *WORD
        <<- =>> select(\1, ":R")

__da_pas__
    pas
        <<- morph(<1, ":[VWX]") =>> select(\1, "", ":N")
9536
9537
9538
9539
9540
9541
9542













9543
9544
9545
9546
9547
9548
9549
9540
9541
9542
9543
9544
9545
9546
9547
9548
9549
9550
9551
9552
9553
9554
9555
9556
9557
9558
9559
9560
9561
9562
9563
9564
9565
9566







+
+
+
+
+
+
+
+
+
+
+
+
+







    !! à en juger par ¡¡
    [à|a] [en|>an] [juger|jugé+ses|jugeait|jugeais] [par|pare+s|>part]
        <<- /loc/ ->> à en juger par                                                                && Confusion : “à en juger par” c’est-à-dire “selon le jugement qu’on se fait avec”.

TEST: {{a en jugé part}} cet article, c’est bientôt la fin.                 ->> à en juger par
TEST: ils sont à en juger par leurs résultats les prochains champions.


__conf_à_l_emporte_pièce__
    !! à l’ emporte-pièce ¡¡
    [à|a] l’ [emporte+s] [>pièce|>pisse]
    [à|a] l’ [en|>an|>hanse] >porte [>pièce|>pisse]
    [à|a] >lent >porte [>pièce|>pisse]
    [à|a] l’ [emporte-pièce|emportes-pièce|emporte-pièces|emportes-pièces]
        <<- /conf/ ->> à l’emporte-pièce                                                && Locution “à l’emporte-pièce”.|https://fr.wiktionary.org/wiki/%C3%A0_l%E2%80%99emporte-pi%C3%A8ce
        <<- !3>>

TEST: agir {{à l’emporte pièce}}                                    ->> à l’emporte-pièce
TEST: réagir à l’emporte-pièce


__conf_à_risques_et_périls__
    !! à [mes|tes|ses|nos|vos|leurs] risques et périls ¡¡
    [a|à] [mes|tes|ses|nos|vos|leur|leurs] [risque+s] [et|est|é|eh|hé|ai|aie+s|ait] [péril+s|>pérille]
        <<- /loc/ ->> à \2 risques et périls                                            && Confusion. Locution “à ses risques et périls”.|https://fr.wiktionary.org/wiki/%C3%A0_ses_risques_et_p%C3%A9rils

TEST: {{à leurs risques et périlles}}                               ->> à leurs risques et périls
11239
11240
11241
11242
11243
11244
11245
11246

11247
11248
11249

11250
11251

11252
11253
11254
11255
11256
11257
11258
11256
11257
11258
11259
11260
11261
11262

11263
11264
11265

11266
11267

11268
11269
11270
11271
11272
11273
11274
11275







-
+


-
+

-
+







    [fausse+s] des îles [aléoutiennes|caïmans|Kouriles|Tonga]
    [fausse+s] du [Chili|Japon|Pérou|Pérou-Chili]
    [fausse+s] d’ [aisance|orchestre|Amérique|Atacama|Izu-Bonin|Izu-Ogasawara]
    [fausse+s] de l’ orchestre
    [fausse+s] à [>compost|>déchet|>lisier|>fumier|>plongeon|>plongée|>purin|>merde|>ordure]
    [fausse+s] [au|aux|des] [>caïman|>crocodile|>charognard|>lion|>loup|>louve|ours|>serpent|>cobra|>diable]
    [fausse+s] [>abyssal|>canin|>béant|>commun|>océanique|sous-marine+s|>septique|>immense|>profond|>nasal|>iliaque|>temporal]
        <<- /conf/ -1>> =\1.replace("au", "o").replace("AU", "O")           && Confusion probable : le mot “fausse” est l’adjectif féminin de “faux”. Pour évoquer une profondeur, écrivez “fosse”.
        <<- /conf/ -1>> =\1.replace("au", "o").replace("AU", "O")  && Confusion probable : le mot “fausse” est l’adjectif féminin de “faux”. Pour évoquer une pression ou une cavité dans le sol, écrivez “fosse”.

    au bord de la fausse
        <<- /conf/ --1>> fosse                                              && Confusion probable : le mot “fausse” est l’adjectif féminin de “faux”. Pour évoquer une profondeur, écrivez “fosse”.
        <<- /conf/ --1>> fosse                                     && Confusion probable : le mot “fausse” est l’adjectif féminin de “faux”. Pour évoquer une pression ou une cavité dans le sol, écrivez “fosse”.

    >fosse [>alerte|>déclaration]
    >fosse [>alerte|>déclaration|>réponse]
        <<- /conf/ -1>> =\1.replace("o", "au").replace("O", "AU")
        && Confusion probable : une fosse est une dépression ou une cavité dans le sol. Pour évoquer une falsification ou une erreur, écrivez “fausse”.|https://fr.wiktionary.org/wiki/fausse

TEST: la {{fausse}} Calypso.                                            ->> fosse
TEST: La {{fausse}} des Mariannes.                                      ->> fosse
TEST: La {{fausse}} d’aisance.                                          ->> fosse
TEST: La {{fausse}} à lisier.                                           ->> fosse
17009
17010
17011
17012
17013
17014
17015

17016
17017
17018
17019
17020
17021
17022
17026
17027
17028
17029
17030
17031
17032
17033
17034
17035
17036
17037
17038
17039
17040







+







    en rangs d’ oignons ?serrés¿
    en rase campagne
    en rase-mottes
    en règle générale
    en roue libre
    en second lieu
    en sens inverse
    en simultané
    en situation [irrégulière|régulière]
    en sous-main
    en sous-nombre ?[évident|flagrant]¿
    en sous nombre ?[évident|flagrant]¿
    en tant [que|qu’] >tel
    en tête à tête
    en tête-à-tête
18112
18113
18114
18115
18116
18117
18118

18119
18120
18121
18122
18123
18124
18125
18130
18131
18132
18133
18134
18135
18136
18137
18138
18139
18140
18141
18142
18143
18144







+







    >billet [de|d’] [*NUM|@:B:.:p] [euros|dollars|centimes|cents|livres|shillings]
    >bisphénol A
    [>boîte|>boite] [aux|à] lettres
    [>boîte|>boite] à [bijoux|gants|outils|sardines]
    [>boîte|>boite] [de|d’] nuit
    >bombe à [eau|fission|fusion|fragmentation|hydrogène|neutrons|retardement|sous-munitions]
    >bombe à rayonnement renforcé
    >bonimenteur [de|d’] foire
    >bonnet [de|d’] nuit
    [bonne+s|>bonniche] à tout faire
    >bordereau d’ expédition
    >boucle d’ >oreille
    >bouée [de|d’] sauvetage
    >bouffée d’ air [frais|pur]
    >bout [de|d’] gras
21943
21944
21945
21946
21947
21948
21949
21950

21951




21952


21953
21954
21955
21956
21957
21958
21959
21962
21963
21964
21965
21966
21967
21968

21969
21970
21971
21972
21973
21974
21975
21976
21977
21978
21979
21980
21981
21982
21983
21984







-
+

+
+
+
+

+
+







TEST: faire faux bond


# fausse / fosse
__conf_fausse_fosse__
    >faire une fosse couche
    combien de >fosse [couche+s]
        <<- /conf/ -3>> =\3.replace("o", "au").replace("O", "AU")           && Confusion. Une “fausse couche”.
        <<- /conf/ -3>> =\3.replace("o", "au").replace("O", "AU")   && Confusion. Une “fausse couche”.

    [>être|>demeurer|>paraître|>paraitre|>sembler|>rester|>apparaître|>apparaitre] >fosse
        <<- /conf/ not morph(>1, ">septique/")
        --1>> =\-1.replace("o", "au").replace("O", "AU")            && Confusion probable : une fosse est une profondeur, pour l’adjectif féminin de “faux” est “fausse”.|https://fr.wiktionary.org/wiki/fausse

TEST: elle a fait une {{fosse}} couche.                                     ->> fausse
TEST: cette réponse est {{fosse}}                                           ->> fausse
TEST: la réponse à votre question, c’est fosse septique


# filtre / philtre
__conf_filtre_philtre2__
    >boire $:D >filtre
        <<- /conf/ -3>> philtre|philtres
        && Confusion probable. Un filtre est un instrument de filtrage, un philtre est une boisson (magique) procurant des effets sur le buveur.|https://fr.wiktionary.org/wiki/philtre
23653
23654
23655
23656
23657
23658
23659

23660
23661
23662
23663
23664
23665
23666

23667
23668
23669
23670
23671
23672
23673
23674


23675
23676
23677
23678
23679
23680
23681
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







+







+








+
+









__gn_le_2m__
    le  *WORD  *WORD
        <<- /gn/ morph(\1, ":D") and not value(<1, "|et|ou|de|") 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/ __also__ and morph(\2, ":A.*:e:[si]") -1>> la                                      && Accord de genre erroné : « \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]  le  *WORD  *WORD
        <<- /gn/ morph(\2, ":D") and not morph(<1, ":[NA]") 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/ __also__ and morph(\3, ":A.*:e:[si]") -2>> la                                      && Accord de genre erroné : « \4 » est féminin.
        <<- /gn/ morph(\3, ":[NA].*:[si]", ":G") and morph(\4, ":[NA].*:p", ":[GWsi]") and not apposition(\4, \4)
        -4>> =suggMasSing(\4)                                                                       && Accord de nombre erroné avec « \2 \3 » : « \4 » devrait être au singulier.

TEST: le test très {{cons}} qu’on a passé hier.                                         ->> con
TEST: c’était le chien {{perdue}} des voisins.                                          ->> perdu
TEST: viens vite ou le pari {{imperdables}} sera moins facile…                          ->> imperdable
TEST: connaître et le grand {{perdante}}                                                ->> perdant
TEST: Le bruit {{perçus}} par les voisins.                                              ->> perçu
TEST: {{le}} gigantesque {{explosion}}                                                  ->> la|||
TEST: je ne sais jamais quoi faire et {{le}} gigantesque {{explosion}} n’a rien arrangé ->> la|||
TEST: si le premier film est un triomphe, le deuxième est un demi-succès, et le troisième une déception.
TEST: Cela aboutira sur une contractualisation coûteuse pour organiser cette divergence d’intérêts, et le gestionnaire aura le dernier mot.


__gn_le_2m_virg__
    <start>  le  *WORD  ,  $:A¬:G
        <<- /gn/ morph(\3, ":[NA].*:[me]:[si]", ":3[sp]") and not agreement(\3, \5)
23758
23759
23760
23761
23762
23763
23764
23765


23766
23767

23768








23769

23770
23771
23772


23773
23774

23775
23776

23777
23778
23779




23780
23781
23782
23783
23784
23785
23786
23787
23788
23789
23790
23791
23792
23793

23794
23795
23796

23797
23798
23799
23800
23801
23802
23803
23804
23805
23806

23807
23808
23809

23810
23811
23812

23813
23814
23815
23816
23817
23818
23819
23820
23821
23822
23823
23824
23825
23826
23827
23828
23829
23830







-
+
+

-
+

+
+
+
+
+
+
+
+
-
+


-
+
+

-
+


+



+
+
+
+







TEST: Je la levai, la brandis et frappai de taille.


__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.
        -3>> =suggFemSing(\3, True)                                                                 && Accord de genre erroné : le syntagme « \1 \2 » est féminin, « \3 » est masculin.
        <<- /gn/ __also__ and morph(\2, ":A.*:e:[si]") and not value(<1, "|à|") -1>> le             && Accord de genre erroné : « \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.
        -3>> =suggFemSing(\3)                                                                       && Accord de nombre erroné avec « \1 \2 » : « \3 » devrait être au singulier.

    [et|ou]  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/ __also__ and morph(\3, ":A.*:e:[si]") -2>> le                                      && Accord de genre erroné : « \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.

    [et|ou|de|d’]  la  *WORD  *WORD
    [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.
        -4>> =suggFemSing(\4, True)                                                                 && Accord de genre erroné : le syntagme « \2 \3 » est féminin, « \4 » est masculin.
        <<- /gn/ __also__ and morph(\3, ":A.*:e:[si]") and not hasFemForm(\4) -1:2>> du             && Accord de genre erroné : « \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.
        -4>> =suggFemSing(\4)                                                                       && Accord de nombre erroné avec « \2 \3 » : « \4 » devrait être au singulier.

TEST: La plus grande {{cinglé}}.                                                ->> cinglée
TEST: {{la}} gigantesque {{monument}}                                           ->> le|||
TEST: il imaginait de la pluie {{noir}} tombant sur une terre dévastée.         ->> noire
TEST: la place {{balayées}} par le vent                                         ->> balayée
TEST: je voyais de la pluie {{noires}}                                          ->> noire
TEST: je le sus et {{la}} légitimiste {{intellect}}                             ->> le|||
TEST: il en avait entendu parler et la belle {{explications}} ne tenait plus    ->> explication
TEST: {{de la}} légitimiste {{intellectualisme}}                                ->> du|||
TEST: de la légitimiste {{intellectuel}}                                        ->> intellectuelle
TEST: Il faut donc examiner ensemble le panneau et la paroi latérale.
TEST: Il faut donc examiner ensemble le panneau et la paroi latéraux.
TEST: Il faut donc examiner ensemble les panneaux et la paroi latéraux.
TEST: Il faut donc examiner ensemble les panneaux et la paroi latérale.


__gn_la_2m_virg__
24047
24048
24049
24050
24051
24052
24053

24054
24055
24056
24057
24058
24059
24060

24061
24062
24063
24064
24065
24066

24067
24068

24069
24070
24071
24072
24073
24074
24075
24076
24077
24078
24079
24080
24081
24082
24083
24084

24085
24086
24087
24088
24089
24090
24091

24092
24093
24094
24095
24096
24097
24098
24099
24100


24101
24102
24103
24104
24105
24106
24107
24091
24092
24093
24094
24095
24096
24097
24098
24099
24100
24101
24102
24103
24104
24105
24106
24107
24108
24109
24110
24111
24112
24113
24114
24115
24116
24117
24118
24119
24120
24121
24122
24123
24124
24125
24126
24127
24128
24129
24130
24131
24132
24133
24134
24135
24136
24137
24138
24139
24140
24141
24142
24143
24144
24145
24146
24147
24148
24149
24150
24151
24152
24153
24154
24155
24156
24157
24158
24159







+







+






+


+
















+







+









+
+








## 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/ __also__ and morph(\2, ":A.*:e:[si]") -1>> une                                     && Accord de genre erroné : « \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/ __also__ and morph(\3, ":A.*:e:[si]") -2>> une                                     && Accord de genre erroné : « \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: {{un}} gigantesque {{explosion}}                                                      ->> une|||
TEST: que sais-tu d’un homme {{grande}} comme un arbre                                      ->> grand
TEST: je me souviens d’un homme {{arrogants}}                                               ->> arrogant
TEST: trois d’{{un}} quelconque {{élégance}}                                                ->> une|||
TEST: C’est pas les quelques vues sur Linux qui vont rattraper un scénario {{bancale}}.     ->> bancal


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

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


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

TEST: Une femme {{laconiques}}.                                                 ->> laconique
TEST: Une grande {{homme}}.                                                     ->>
TEST: une géologue {{intelligents}}                                             ->> intelligente
TEST: Et une femme {{déterminées}}                                              ->> déterminée
TEST: on parle là d’une femme {{inconnu}}                                       ->> inconnue
TEST: on parle d’une Église {{brûlées}}                                         ->> brûlée
TEST: {{une}} gigantesque {{porte-avions}}                                      ->> un|||
TEST: d’{{une}} titanesque {{opportunisme}}                                     ->> un|||
TEST: L’or allume le feu d’une cupidité d’une couleur et d’une sorte différentes.


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

24848
24849
24850
24851
24852
24853
24854
24893
24894
24895
24896
24897
24898
24899
24900
24901
24902
24903
24904
24905
24906
24907







+







        <<- /gn/ __also__ and hasFemForm(\2) -2>> =switchGender(\2, True)                           && Accord de genre erroné avec « \3 ».
        <<- /gn/ morph(\2, ":[NA].*:[pi]", ":(?:B|G|V0)") and morph(\3, ":[NA].*:s", "*") and not apposition(\2, \3) and not (value(>1, "|et|,|") and morph(>2, ":A"))
        -3>> =suggPlur(\3)                                                                          && Accord de nombre erroné avec « \1 \2 » : « \3 » devrait être au pluriel.

TEST: deux sombres {{idiot}}                                                                ->> idiots
TEST: sept valeurs {{aléatoire}}                                                            ->> aléatoires
TEST: huit {{grandes}} {{claviers}}                                                         ->> grands|||
TEST: soixante-et-une femmes {{récompensée}}                                                ->> récompensées
TEST: X a perdu mon estime et ma considération.
TEST: vivre une situation hors du commun à deux a aussi pesé dans la balance.
TEST: deux jours minimum
TEST: ils disent finalement tous les deux la même chose


__gn_nombre_2m_virg__
25347
25348
25349
25350
25351
25352
25353
25354

25355
25356
25357
25358
25359














25360
25361
25362
25363
25364
25365
25366
25367
25368
25369
25370
25371
25372
25373
25374
25375
25376




25377
25378
25379
25380
25381
25382
25383
25400
25401
25402
25403
25404
25405
25406

25407
25408
25409
25410
25411
25412
25413
25414
25415
25416
25417
25418
25419
25420
25421
25422
25423
25424
25425
25426
25427
25428
25429
25430
25431
25432
25433
25434
25435
25436
25437
25438
25439
25440
25441
25442
25443
25444
25445
25446
25447
25448
25449
25450
25451
25452
25453
25454







-
+





+
+
+
+
+
+
+
+
+
+
+
+
+
+

















+
+
+
+









## Nombres
__gn_nombre_lettres_1m__
    [cent|mille]  ~[iI][èÈ][mM][eE]$  @:[NA].*:[si]
        <<- !2>>

    @:B:.:p  *WORD
    $:B:e:p  *WORD
        <<- /gn/ not value(\1, "|neuf|mille|") and morph(\2, ":[NA].*:s", "*") and not morph(<1, ":D.*:s")
            and not value(\2, "|maximum|minimum|multiplié|divisé|janvier|février|mars|avril|mai|juin|juillet|août|aout|septembre|octobre|novembre|décembre|rue|route|ruelle|place|boulevard|avenue|allée|chemin|sentier|square|impasse|cour|quai|chaussée|côte|vendémiaire|brumaire|frimaire|nivôse|pluviôse|ventôse|germinal|floréal|prairial|messidor|thermidor|fructidor|")
            and not re.search("^[IVXLDM]+$", \1)
        -2>> =suggPlur(\2)                                                                  && Accord de nombre erroné avec « \1 » : « \2 » devrait être au pluriel.

    [vingt-et-un|trente-et-un|quarante-et-un|cinquante-et-un|soixante-et-un|septante-et-un|octante-et-un|huitante-et-un|nonante-et-un]  *WORD
        <<- /gn/ morph(\2, ":[NA].*:[fs]", "*") and not morph(<1, ":D.*:s")
            and not value(\2, "|maximum|minimum|multiplié|divisé|janvier|février|mars|avril|mai|juin|juillet|août|aout|septembre|octobre|novembre|décembre|rue|route|ruelle|place|boulevard|avenue|allée|chemin|sentier|square|impasse|cour|quai|chaussée|côte|vendémiaire|brumaire|frimaire|nivôse|pluviôse|ventôse|germinal|floréal|prairial|messidor|thermidor|fructidor|")
            and not re.search("^[IVXLDM]+$", \1)
        -2>> =suggMasPlur(\2)                                                              && Accord de nombre erroné avec « \1 » : « \2 » devrait être au pluriel.
        <<- /gn/ __also__ and morph(\2, ":[NA].*:f", ":[me]") -1>> \1e                     && Accord de genre erroné : « \2 » est féminin.

    [vingt-et-une|trente-et-une|quarante-et-une|cinquante-et-une|soixante-et-une|septante-et-une|octante-et-une|huitante-et-une|nonante-et-une]  *WORD
        <<- /gn/ morph(\2, ":[NA].*:[ms]", "*") and not morph(<1, ":D.*:s")
            and not value(\2, "|maximum|minimum|multiplié|divisé|janvier|février|mars|avril|mai|juin|juillet|août|aout|septembre|octobre|novembre|décembre|rue|route|ruelle|place|boulevard|avenue|allée|chemin|sentier|square|impasse|cour|quai|chaussée|côte|vendémiaire|brumaire|frimaire|nivôse|pluviôse|ventôse|germinal|floréal|prairial|messidor|thermidor|fructidor|")
            and not re.search("^[IVXLDM]+$", \1)
        -2>> =suggFemPlur(\2)                                                               && Accord de nombre erroné avec « \1 » : « \2 » devrait être au pluriel.
        <<- /gn/ __also__ and morph(\2, ":[NA].*:m", ":[fe]") -1>> =\1[:-1]                 && Accord de genre erroné : « \2 » est masculin.

    neuf  *WORD
        <<- /gn/ morph(\2, ":[NA].*:s", "*") and not morph(<1, ":N.*:m:[is]") and not morph(<1, ":D.*:s")
            and not value(\2, "|maximum|minimum|multiplié|divisé|janvier|février|mars|avril|mai|juin|juillet|août|aout|septembre|octobre|novembre|décembre|rue|route|ruelle|place|boulevard|avenue|allée|chemin|sentier|square|impasse|cour|quai|chaussée|côte|vendémiaire|brumaire|frimaire|nivôse|pluviôse|ventôse|germinal|floréal|prairial|messidor|thermidor|fructidor|")
        -2>> =suggPlur(\2)                                                                  && Accord de nombre erroné avec « \1 » : « \2 » devrait être au pluriel.

    mille  *WORD
        <<- /gn/ not value(\2, "|maximum|minimum|multiplié|divisé|") and morph(\2, ":[NA].*:s", "*") and not morph(<1, ":D.*:s")
        -2>> =suggPlur(\2)                                                                  && Accord de nombre erroné avec « \1 » : « \2 » devrait être au pluriel.

TEST: ce sont trois {{idiot}} pas foutus de trouver leur chemin avec un GPS.        ->> idiots
TEST: Il a abandonné neuf {{enfant}}.                                               ->> enfants
TEST: On peut trouver mille {{travailleur}} d’un claquement de doigts.              ->> travailleurs
TEST: Il y a quatre cents {{mot}} dans la phrase.                                   ->> mots
TEST: cent {{mot}}                                                                  ->> mots
TEST: cinquante {{mot}}                                                             ->> mots
TEST: mille cinquante {{mot}}                                                       ->> mots
TEST: deux {{tête}}                                                                 ->> têtes
TEST: soixante-et-une {{femme}}                                                     ->> femmes
TEST: {{soixante-et-une}} {{hommes}}                                                ->> soixante-et-un|||
TEST: soixante-et-un {{homme}}                                                      ->> hommes
TEST: {{soixante-et-un}} {{femmes}}                                                 ->> soixante-et-une|||
TEST: un logement neuf bâti par des professionnels.
TEST: un mille marin.
TEST: L’article VII mentionné dans la revue
TEST: Le produit de cinq multiplié par trois.
TEST: deux divisé par douze
TEST: il en faut trois minimum, cinq maximum
TEST: il vit dans un vingt-quatre mètre carré.
25744
25745
25746
25747
25748
25749
25750
25751
25752
25753
25754





25755
25756
25757
25758
25759



25760
25761
25762
25763












25764




25765
25766
25767



25768
25769

25770
25771
25772


25773
25774

25775
25776
25777
25778


25779
25780

25781
25782
25783
25784



25785
25786











































25787
25788






































25789
25790
25791
25792
25793
25794
25795
25815
25816
25817
25818
25819
25820
25821




25822
25823
25824
25825
25826
25827




25828
25829
25830
25831



25832
25833
25834
25835
25836
25837
25838
25839
25840
25841
25842
25843
25844
25845
25846
25847
25848



25849
25850
25851


25852
25853


25854
25855


25856
25857



25858
25859


25860
25861

25862
25863
25864
25865
25866
25867
25868
25869
25870
25871
25872
25873
25874
25875
25876
25877
25878
25879
25880
25881
25882
25883
25884
25885
25886
25887
25888
25889
25890
25891
25892
25893
25894
25895
25896
25897
25898
25899
25900
25901
25902
25903
25904
25905
25906
25907
25908
25909
25910
25911


25912
25913
25914
25915
25916
25917
25918
25919
25920
25921
25922
25923
25924
25925
25926
25927
25928
25929
25930
25931
25932
25933
25934
25935
25936
25937
25938
25939
25940
25941
25942
25943
25944
25945
25946
25947
25948
25949
25950
25951
25952
25953
25954
25955
25956







-
-
-
-
+
+
+
+
+

-
-
-
-
+
+
+

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

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

-
-
+
+
-
-
+

-
-
-
+
+
-
-
+

-


+
+
+


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








!!
!!
!!!! Groupe nominal: Accords avec de / des / du                                                   !!
!!
!!

__gn_det_nom_de_det_nom_adj__
    [la|ma|ta|sa|une|cette]  *WORD  [de|d’]  [la|ma|ta|sa|cette|une]  *WORD  *WORD
        <<- /gn/ morph(\6, ":[NA].*:(?:m|f:p)", ":(?:G|P|[fe]:[is]|V0|3[sp])") and morph(\5, ":[NA].*:[fe]") and not apposition(\5, \6)
        -6>> =suggFemSing(\6, True)                                                         && Accord erroné : « \6 » devrait être au féminin singulier.
__gn_det_nom_de_det_nom_adj_mas_sing__
    [le|un|ce|cet]  *WORD  [de|d’]  [ce|cet|un]         *WORD  @:[NA].*:(?:f|[me]:p)¬:(?:G|P|[me]:[is]|V0|3[sp])
    [le|un|ce|cet]  *WORD  du                           *WORD  @:[NA].*:(?:f|[me]:p)¬:(?:G|P|[me]:[is]|V0|3[sp])
        <<- /gn/ morph(\-2, ":[NA].*:[me]") and not apposition(\-2, \-1)
        --1>> =suggMasSing(\-1, True)                                                               && Accord erroné : \-1” devrait être au masculin singulier.

    [le|un|ce|cet]  *WORD  [de|d’]  [ce|cet|un]  *WORD  *WORD
    [le|un|ce|cet]  *WORD  du  *WORD  *WORD
        <<- /gn/ morph(\-1, ":[NA].*:(?:f|m:p)", ":(?:G|P|[me]:[is]|V0|3[sp])") and morph(\-2, ":[NA].*:[me]") and not apposition(\-2, \-1)
        --1>> =suggMasSing(\-1, True)                                                       && Accord erroné : « \-1 » devrait être au masculin singulier.
    [le|un|ce|cet]  *WORD  de  [mon|ton|son]            *WORD  @:[NA].*:(?:f|[me]:p)¬:(?:G|P|[me]:[is]|V0|3[sp])
        <<- /gn/ morph(\-2, "[NA].*:[me]", ":[NA].*:f|>[eéèêiîoôuh].*:e") and not apposition(\-2, \-1)
        --1>> =suggMasSing(\-1, True)                                                               && Accord erroné : \-1 devrait être au masculin singulier.

    [le|un|ce|cet]  *WORD  de  [mon|ton|son]  *WORD  *WORD
        <<- /gn/ morph(\5, ":", ":[NA].*:f|>[aâeéèêiîou].*:e") and morph(\6, ":[NA].*:(?:f|m:p)", ":(?:G|P|m:[is]|V0|3[sp])") and not apposition(\5, \6)
        -6>> =suggMasSing(\6, True)                                                         && Accord erroné : « \6 » devrait être au masculin singulier.
    [le|un|ce|cet]  *WORD  de  [l’|notre|votre|leur]    *WORD  @:[NA].*:(?:f|[me]:p)¬:(?:G|P|[me]:[is]|V0|3[sp])
        <<- /gn/ morph(\-2, "[NA].*:m:[si]", ":[NA].*:[fe]") and not apposition(\-2, \-1)
        --1>> =suggMasSing(\-1, True)                                                               && Accord erroné : “\-1” devrait être au masculin singulier.

    [mon|ton|son]  *WORD  [de|d’]  [ce|cet|un]          *WORD  @:[NA].*:(?:f|[me]:p)¬:(?:G|P|[me]:[is]|V0|3[sp])
    [mon|ton|son]  *WORD  du                            *WORD  @:[NA].*:(?:f|[me]:p)¬:(?:G|P|[me]:[is]|V0|3[sp])
        <<- /gn/ morph(\2, ":[NA].*:[me]:[si]", ":G|>[aâeéèêiîoôuh].*:[ef]") and not apposition(\-2, \-1)
        --1>> =suggMasSing(\-1, True)                                                               && Accord erroné : \-1” devrait être au masculin singulier.

    [mon|ton|son]  *WORD  de [mon|ton|son]              *WORD  @:[NA].*:(?:f|[me]:p)¬:(?:G|P|[me]:[is]|V0|3[sp])
        <<- /gn/ morph(\2, ":[NA].*:[me]:[si]", ":G|>[aâeéèêiîoôuh].*:[ef]") and morph(\-2, ":[NA].*:[me]:[si]", ":[NA].*:f|>[aâeéèêiîoôuh].*:e") and not apposition(\-2, \-1)
        --1>> =suggMasSing(\-1, True)                                                               && Accord erroné : “\-1” devrait être au masculin singulier.

    [mon|ton|son]  *WORD  de [l’|notre|votre|leur]      *WORD  @:[NA].*:(?:f|[me]:p)¬:(?:G|P|[me]:[is]|V0|3[sp])
        <<- /gn/ morph(\2, ":[NA].*:[me]:[si]", ":G|>[aâeéèêiîoôuh].*:[ef]") and morph(\-2, ":[NA].*:m:[si]", ":[NA].*:[fe]:[si]") and not apposition(\-2, \-1)
        --1>> =suggMasSing(\-1, True)                                                               && Accord erroné : “\-1” devrait être au masculin singulier.

    [mon|ton|son]  *WORD  [de|d’]  [ce|cet|un]  *WORD  *WORD
    [mon|ton|son]  *WORD  du  *WORD  *WORD
        <<- /gn/ morph(\2, ":[NA].*:m", ":G|>[aâeéèêiîou].*:[ef]")
    [l’|notre|votre|leur]  *WORD  [de|d’]  [ce|cet|un]  *WORD  @:[NA].*:(?:f|[me]:p)¬:(?:G|P|[me]:[is]|V0|3[sp])
    [l’|notre|votre|leur]  *WORD  du                    *WORD  @:[NA].*:(?:f|[me]:p)¬:(?:G|P|[me]:[is]|V0|3[sp])
        <<- /gn/ morph(\2, ":[NA].*:m", ":[fe]") and morph(\-2, ":[NA].*:[me]") and not apposition(\-2, \-1)
            and morph(\-1, ":[NA].*:(?:f|m:p)", ":(?:G|P|[me]:[is]|V0|3[sp])") and not apposition(\-2, \-1)
        --1>> =suggMasSing(\-1, True)                                                       && Accord erroné : « \-1 » devrait être au masculin singulier.
        --1>> =suggMasSing(\-1, True)                                                               && Accord erroné : \-1 devrait être au masculin singulier.

    [mon|ton|son]  *WORD  de [mon|ton|son]  *WORD  *WORD
        <<- /gn/ morph(\2, ":[NA].*:m", ":G|>[aâeéèêiîou].*:[ef]")
    [l’|notre|votre|leur]  *WORD  de  [mon|ton|son]     *WORD  @:[NA].*:(?:f|[me]:p)¬:(?:G|P|[me]:[is]|V0|3[sp])
        <<- /gn/ morph(\2, ":[NA].*:m", ":[fe]") and morph(\-2, ":[NA].*:m:[si]", ":[NA].*:f|>[aâeéèêiîoôuh].*:e") and not apposition(\-2, \-1)
            and not morph(\-2, ":[NA].*:f|>[aâeéèêiîou].*:e") and morph(\-1, ":[NA].*:(?:f|m:p)", ":(?:G|P|[me]:[is]|V0|3[sp])") and not apposition(\-2, \-1)
        --1>> =suggMasSing(\-1, True)                                                       && Accord erroné : « \-1 » devrait être au masculin singulier.
        --1>> =suggMasSing(\-1, True)                                                               && Accord erroné : \-1 devrait être au masculin singulier.

    [les|ces|mes|tes|ses|nos|vos|leurs|quelques]  *WORD  de [ces|mes|tes|ses|nos|vos|leurs]  *WORD  *WORD
    [les|ces|mes|tes|ses|nos|vos|leurs|quelques]  *WORD  des  *WORD  *WORD
        <<- /gn/ morph(\-1, ":[NA].*:s", ":(?:G|P|[me]:[ip]|V0|3[sp])") and morph(\-2, ":[NA].*:[pi]") and not apposition(\-2, \-1)
    [l|notre|votre|leur]  *WORD  de  [l’|notre|votre|leur]  *WORD  @:[NA].*:(?:f|[me]:p)¬:(?:G|P|[me]:[is]|V0|3[sp])
        <<- /gn/ morph(\2, ":[NA].*:m", ":[fe]") and morph(\-2, "[NA].*:m:[si]", ":[NA].*:[fe]:[si]") and not apposition(\-2, \-1)
            and not (value(>1, "|et|ou|") and morph(>2, ":A.*:[si]"))
        --1>> =suggPlur(\-1)                                                                && Accord erroné : « \-1 » devrait être au pluriel.
        --1>> =suggMasSing(\-1, True)                                                               && Accord erroné : \-1 devrait être au masculin singulier.

TEST: La fille de cette belle {{inconnu}}                       ->> inconnue
TEST: Le chien du voisin {{mourante}}                           ->> mourant
TEST: Un chien de ce voisin {{amicale}}                         ->> amical
TEST: le chien de son voisin {{tuée}}                           ->> tué
TEST: le chien de leur patron {{malades}}                       ->> malade
TEST: Cet homme de mon groupe {{oubliés}}                       ->> oublié
TEST: mon amour du chocolat {{immodérée}}                       ->> immodéré
TEST: ton amour de son verbe {{enthousiasmante}}                ->> enthousiasmant
TEST: son amour de notre travail {{ardus}}                      ->> ardu
TEST: notre programme du mois {{disparus}}                      ->> disparu
TEST: l’homme de mon parti {{oubliée}}                          ->> oublié
TEST: l’ignorant de leur groupe {{rejetés}} par tous            ->> rejeté


__gn_det_nom_de_det_nom_adj_fem_sing__
    [la|ma|ta|sa|une|cette]  *WORD  [de|d’]  [la|ma|ta|sa|cette|une]    *WORD  @:[NA].*:(?:m|[fe]:p)¬:(?:G|P|[fe]:[is]|V0|3[sp])
        <<- /gn/ morph(\-2, ":[NA].*:[fe]") and not apposition(\-2, \-1)
        --1>> =suggFemSing(\-1, True)                                                               && Accord erroné : “\-1” devrait être au féminin singulier.

    [la|ma|ta|sa|une|cette]  *WORD  [de|d’]  [mon|ton|son]              *WORD  @:[NA].*:(?:m|[fe]:p)¬:(?:G|P|[fe]:[is]|V0|3[sp])
        <<- /gn/ morph(\-2, ">[aâeéèêiîoôuh].*:[NA].*:f:[si]", ":[me]") and not apposition(\-2, \-1)
        --1>> =suggFemSing(\-1, True)                                                               && Accord erroné : “\-1” devrait être au féminin singulier.

    [la|ma|ta|sa|une|cette]  *WORD  [de|d’]  [l’|notre|votre|leur]      *WORD  @:[NA].*:(?:m|[fe]:p)¬:(?:G|P|[fe]:[is]|V0|3[sp])
        <<- /gn/ morph(\-2, ":[NA].*:f:[si]", ":[me]") and not apposition(\-2, \-1)
        --1>> =suggFemSing(\-1, True)                                                               && Accord erroné : “\-1” devrait être au féminin singulier.

    [mon|ton|son]  *WORD  [de|d’]  [la|ma|ta|sa|cette|une]              *WORD  @:[NA].*:(?:m|[fe]:p)¬:(?:G|P|[fe]:[is]|V0|3[sp])
        <<- /gn/ morph(\2, ">[aâeéèêiîoôuh].*:[NA].*:f:[si]", ":[me]") and morph(\-2, ":[NA].*:[fe]") and not apposition(\-2, \-1)
        --1>> =suggFemSing(\-1, True)                                                               && Accord erroné : “\-1” devrait être au féminin singulier.

    [mon|ton|son]  *WORD  [de|d’]  [mon|ton|son]                        *WORD  @:[NA].*:(?:m|[fe]:p)¬:(?:G|P|[fe]:[is]|V0|3[sp])
        <<- /gn/ morph(\2, ">[aâeéèêiîoôuh].*:[NA].*:f:[si]", ":[me]") and morph(\-2, ">[aâeéèêiîoôuh].*:[NA].*:f:[si]", ":[me]") and not apposition(\-2, \-1)
        --1>> =suggFemSing(\-1, True)                                                               && Accord erroné : “\-1” devrait être au féminin singulier.

    [mon|ton|son]  *WORD  [de|d’]  [l’|notre|votre|leur]                *WORD  @:[NA].*:(?:m|[fe]:p)¬:(?:G|P|[fe]:[is]|V0|3[sp])
        <<- /gn/ morph(\2, ">[aâeéèêiîoôuh].*:[NA].*:f:[si]", ":[me]") and morph(\-2, ":[NA].*:f:[si]", ":[me]") and not apposition(\-2, \-1)
        --1>> =suggFemSing(\-1, True)                                                               && Accord erroné : “\-1” devrait être au féminin singulier.

    [l’|notre|votre|leur]  *WORD  [de|d’]  [la|ma|ta|sa|cette|une]      *WORD  @:[NA].*:(?:m|[fe]:p)¬:(?:G|P|[fe]:[is]|V0|3[sp])
        <<- /gn/ morph(\2, ":[NA].*:f:[si]", ":[me]") and morph(\-2, ":[NA].*:[fe]") and not apposition(\-2, \-1)
        --1>> =suggFemSing(\-1, True)                                                               && Accord erroné : “\-1” devrait être au féminin singulier.

    [l’|notre|votre|leur]  *WORD  [de|d’]  [mon|ton|son]                *WORD  @:[NA].*:(?:m|[fe]:p)¬:(?:G|P|[fe]:[is]|V0|3[sp])
        <<- /gn/ morph(\2, ":[NA].*:f:[si]", ":[me]") and morph(\-2, ">[aâeéèêiîoôuh].*:[NA].*:f:[si]", ":[me]") and not apposition(\-2, \-1)
        --1>> =suggFemSing(\-1, True)                                                               && Accord erroné : “\-1” devrait être au féminin singulier.

    [l’|notre|votre|leur]  *WORD  [de|d’]  [l’|notre|votre|leur]        *WORD  @:[NA].*:(?:m|[fe]:p)¬:(?:G|P|[fe]:[is]|V0|3[sp])
        <<- /gn/ morph(\2, ":[NA].*:f:[si]", ":[me]") and morph(\-2, ":[NA].*:f:[si]", ":[me]") and not apposition(\-2, \-1)
        --1>> =suggFemSing(\-1, True)                                                               && Accord erroné : “\-1” devrait être au féminin singulier.

TEST: Cet homme de mon groupe {{oubliés}}                       ->> oublié
TEST: Les hommes des mines {{voisin}}                           ->> voisins
TEST: La fille de cette belle {{inconnu}}                       ->> inconnue
TEST: la fille de notre directrice {{enlevé}}                   ->> enlevée
TEST: cette femme de mon école {{renvoyé}}                      ->> renvoyée
TEST: mon école de ma ville {{rasé}}                            ->> rasée
TEST: ton entreprise de ton institutrice {{racheté}}            ->> rachetée
TEST: son entreprise de leur poche {{racheté}}                  ->> rachetée
TEST: l’école de ma psychiatre {{brûlé}}                        ->> brûlée
TEST: l’école de mon entreprise {{pillé}}                       ->> pillée
TEST: l’école de notre cité {{reconstruites}}                   ->> reconstruite
TEST: l’existence de la foi {{rejeté}}                          ->> rejetée
TEST: son homologue de la ville écarté de l’ordre


__gn_det_nom_de_det_nom_adj_sing!3__
    [le|la|l’|un|une|ce|cet|cette|mon|ton|son|ma|ta|sa|notre|votre|leur]  *WORD  [de|d’]  [la|l’|un|une|ce|cet|cette|mon|ton|son|ma|ta|sa|notre|votre|leur]  *WORD  @:[NA].*:p¬:(?:G|P|[me]:[is]|V0|3[sp])
    [le|la|l’|un|une|ce|cet|cette|mon|ton|son|ma|ta|sa|notre|votre|leur]  *WORD  du                                                                          *WORD  @:[NA].*:p¬:(?:G|P|[me]:[is]|V0|3[sp])
        <<- /gn/ morph(\-2, ":[NA].*:[me]") and not apposition(\-2, \-1)
        --1>> =suggSing(\-1, True)                                                                  && Accord erroné : “\-1” devrait être au masculin singulier.

TEST: la femme de notre homme {{expulsés}}                      ->> expulsé


__gn_det_nom_de_det_nom_adj_plur__
    [les|ces|mes|tes|ses|nos|vos|leurs|quelques]  *WORD  de [ces|mes|tes|ses|nos|vos|leurs|quelques]  *WORD  @:[NA].*:[pi]¬:(?:G|P|s|V0|3[sp])
    [les|ces|mes|tes|ses|nos|vos|leurs|quelques]  *WORD  des                                          *WORD  @:[NA].*:[pi]¬:(?:G|P|s|V0|3[sp])
        <<- /gn/ morph(\2, ":[NA].*:[pi]", ":s") and morph(\-2, ":[NA].*:[pi]") and not apposition(\-2, \-1)
                and not agreement(\-2, \-1) and not agreement(\2, \-1)
        --1>> =suggAgree(\-1, \-2)                                                                  && Accord erroné : “\-1” devrait être accordé avec “\2” ou “\-2”.

    [les|ces|mes|tes|ses|nos|vos|leurs|quelques]  *WORD  de [ces|mes|tes|ses|nos|vos|leurs|quelques]  *WORD  @:[NA].*:s¬:(?:G|P|i|p|V0|3[sp])
    [les|ces|mes|tes|ses|nos|vos|leurs|quelques]  *WORD  des                                          *WORD  @:[NA].*:s¬:(?:G|P|i|p|V0|3[sp])
        <<- /gn/ morph(\2, ":[NA].*:[pi]", ":s") and morph(\-2, ":[NA].*:[pi]") and not apposition(\-2, \-1) and not (value(>1, "|et|ou|") and morph(>2, ":A.*:[si]"))
        --1>> =suggPlur(\-1)                                                                        && Accord erroné : “\-1” devrait être au pluriel.

TEST: ces femmes des mines {{voisins}}                              ->> voisines
TEST: Les hommes des mines {{voisin}}                               ->> voisins
TEST: Les psychologues des mines payés à coup de lance-pierre
TEST: les hommes des mines voisines
TEST: Lutter contre le chômage de masse avec les armes des travailleurs reste pour nous une priorité.
TEST: le meurtre de son ex-petite amie
TEST: à cette envie de la voir sourire tout le temps
TEST: sur les raisons de la chute d’un des hommes populaires du pays.
TEST: sur les raisons de la chute d’une des stars populaires du pays.
TEST: Les bombardements des aviations syrienne et américaine

34555
34556
34557
34558
34559
34560
34561

34562
34563
34564
34565
34566
34567
34568
34716
34717
34718
34719
34720
34721
34722
34723
34724
34725
34726
34727
34728
34729
34730







+







TODO: Les côtes sont dans leur ensemble extrêmement découpées.

!!! Indécidable                                                                                   !!
TEST: Du sable fin grippe les rouages (accord avec ce qui précède).
TEST: Du monde noir sortent les envahisseurs (accord avec ce qui suit).

!!! Autres tests                                                                                  !!
TEST: Le président d’audience à un prévenu de cambriolage : « Vous aviez un papier avec des suites de quatre chiffres, on sait que ce sont des codes pour des clés. »
TEST: l’une dit combien elle en a marre
TEST: à travers le temps passent les existences oubliées
TEST: autour de la parole s’adonnent à d’étonnantes pratiques les hommes perdus
TEST: le Onze de France, je compte de un à trois, numéro gagnant : le huit
TEST: Échappe à la cage qu’est ta vie
TEST: Mon père est contre et ma mère se dit pour mais a un discours très hypocrite quand on aborde le sujet.
TEST: l’ambulance censée amener Cédric n’est jamais arrivée