Grammalecte  Diff

Differences From Artifact [6feac788e5]:

To Artifact [f8fdf0f604]:


22978
22979
22980
22981
22982
22983
22984
22985

22986
22987
22988
22989
22990
22991
22992
22978
22979
22980
22981
22982
22983
22984

22985
22986
22987
22988
22989
22990
22991
22992







-
+







    des  *WORD  *WORD
        <<- /gn/ (morph(<1, ":(?:[VRBXÉ]|Cs)|>comme/|<start>|>,", "*") or morph(\3, ":N", ":[AQ]")) and not morph(\3, ">(?:seul|minimum|maximum)/") >>>
        <<- /gn/ ( (morph(\2, ":[NA].*:m", ":[fe]") and morph(\3, ":[NA].*:f", "*")) or (morph(\2, ":[NA].*:f", ":[me]") and morph(\3, ":[NA].*:m", "*")) ) and not apposition(\2, \3)
        -3>> =switchGender(\3, True)                                                                && Accord de genre erroné avec « \2 ».
        <<- /gn/ __also__ and hasFemForm(\2) -2>> =switchGender(\2)                                 && Accord de genre erroné avec « \3 ».
        <<- /gn/ morph(\2, ":[NA].*:[pi]", ":G") 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.
        <<- not morph(\3, ":G|>a/") and checkAgreement(\2, \3) =>> =exclude(\3, ":V")
        <<- not morph(\3, ":G|>a/") and agreement(\2, \3) =>> =exclude(\3, ":V")

TEST: faire table rase des passions {{inutile}}               ->> inutiles
TEST: à bonne distance des {{chiens}} {{méchante}}
TEST: des hommes {{attaquée}}
TEST: des femmes {{agressé}}
TEST: des hommes très mal {{renseigné}}                       ->> renseignés
TEST: des dépenses non {{nécessaire}}                         ->> nécessaires
27876
27877
27878
27879
27880
27881
27882
27883

27884
27885
27886
27887
27888
27889
27890
27891
27892
27893
27894

27895
27896
27897
27898
27899
27900
27901
27876
27877
27878
27879
27880
27881
27882

27883
27884
27885
27886
27887
27888
27889
27890
27891
27892
27893

27894
27895
27896
27897
27898
27899
27900
27901







-
+










-
+







        || [être|devenir|redevenir|rester|paraître|paraitre|sembler]                                *WORD
    *WORD  [que|qu’]  [un|le|ce|cet|une|la|ma|ta|sa|cette|l’|mon|ton|son|notre|votre|leur|les|ces|mes|tes|ses|nos|vos|leurs|quelques|plusieurs|$:B]  *WORD  ?[ne|n’]¿  ?[en|y]¿
        || ([>affirmer|>croire|>déclarer|>désirer|>détester|>dire|>estimer|>imaginer|>penser|>préférer|>savoir|>souhaiter|>vouloir])
        || être [devenu+e|redevenu+e|resté+e|demeuré+e]                                             *WORD
    *WORD  [que|qu’]  [un|le|ce|cet|une|la|ma|ta|sa|cette|l’|mon|ton|son|notre|votre|leur|les|ces|mes|tes|ses|nos|vos|leurs|quelques|plusieurs|$:B]  *WORD  ?[ne|n’]¿  ?[en|y]¿
        || ([>affirmer|>croire|>déclarer|>désirer|>détester|>dire|>estimer|>imaginer|>penser|>préférer|>savoir|>souhaiter|>vouloir])
        || avoir [été|semblé|paru]                                                                  *WORD
        <<- /ppas/ checkAgreement(\1, \-1) !-1>>
        <<- /ppas/ agreement(\1, \-1) !-1>>

    *WORD  [que|qu’]  $:M  ?[ne|n’]¿
        || ([>affirmer|>croire|>déclarer|>désirer|>détester|>dire|>estimer|>imaginer|>penser|>préférer|>savoir|>souhaiter|>vouloir])
        || [être|devenir|redevenir|rester|paraître|paraitre|sembler]                                *WORD
    *WORD  [que|qu’]  $:M  ?[ne|n’]¿
        || ([>affirmer|>croire|>déclarer|>désirer|>détester|>dire|>estimer|>imaginer|>penser|>préférer|>savoir|>souhaiter|>vouloir])
        || être [devenu+e|redevenu+e|resté+e|demeuré+e]                                             *WORD
    *WORD  [que|qu’]  $:M  ?[ne|n’]¿
        || ([>affirmer|>croire|>déclarer|>désirer|>détester|>dire|>estimer|>imaginer|>penser|>préférer|>savoir|>souhaiter|>vouloir])
        || avoir [été|semblé|paru]                                                                  *WORD
        <<- /ppas/ checkAgreement(\1, \-1) !-1>>
        <<- /ppas/ agreement(\1, \-1) !-1>>


__ppas_sujet_être_accord_singulier__
    [<start>|,|(|/_start_]  [un|le|ce|cet]  (*WORD)  ?qui¿  ?[ne|n’]¿  ?[en|y]¿          (/_VE_)                                                @:[AQ]¬:(?:[GWM]|[me]:[si])
    [<start>|,|(|/_start_]  [un|le|ce|cet]  (*WORD)  ?qui¿  ?[ne|n’]¿  ?[en|y]¿          (/_LVED_) ?/_LVE_¿ ?/_LVE_¿ ?/_LVE_¿ ?/_LVE_¿ /_LVEF_  @:[AQ]¬:(?:[GWM]|[me]:[si])
    [<start>|,|(|/_start_]  [un|le|ce|cet]  (*WORD)  ?qui¿  ?[ne|n’]¿  [se|s’] ?[en|y]¿  (/_VEP_)                                               @:[AQ]¬:(?:[GWM]|[me]:[si])
    [<start>|,|(|/_start_]  [un|le|ce|cet]  (*WORD)  ?qui¿  ?[ne|n’]¿  [se|s’] ?[en|y]¿  (/_LVEPD_) ?/_LVEP_¿ ?/_LVEP_¿ ?/_LVEP_¿ /_LVEPF_      @:[AQ]¬:(?:[GWM]|[me]:[si])
30889
30890
30891
30892
30893
30894
30895
30896

30897
30898
30899
30900
30901
30902
30903
30889
30890
30891
30892
30893
30894
30895

30896
30897
30898
30899
30900
30901
30902
30903







-
+







TEST: y être sans ma femme ni les enfants fait monter en moi une certaine nervosité.


__conj_le_la_leur_nom__
    [le|la|l’|leur]  *WORD  @:V¬:(?:3s|P|Q|Y|3p!|G|M)
        <<- /conj/ not tag(\2, "_enum_") and morph(<1, ":C|<start>|>,", ":[YP]") and morph(\2, ":[NA].*:[si]", ":G")
            and not ( (value(\2, "|dizaine|douzaine|quinzaine|vingtaine|trentaine|quarantaine|cinquantaine|soixantaine|centaine|majorité|minorité|millier|partie|poignée|tas|paquet|moitié|")
                        or tag_before(\1, "_ni_") or value(<1, "|et|ou|")) and morph(\3, ":3?p") ) and not checkAgreement(\2, \3)
                        or tag_before(\1, "_ni_") or value(<1, "|et|ou|")) and morph(\3, ":3?p") ) and not agreement(\2, \3)
            and not ( morph(\2, "(?:[123][sp]|P)") and not value(<1, "|<start>|,|") ) >>>
        <<- /conj/ not tag(\-1, "_ngn_") and morph(\3, ":A.*:p") or (morph(\3, ":N.*:p") and morph(\2, ":A"))
        -3>> =suggVerb(\3, ":3s", suggSing)                                                         && Accord avec “\1 \2…” incorrect. Conjugaison erronée ou accord nom/adjectif incorrect.
        <<- /conj/ __else__ -3>> =suggVerb(\3, ":3s")                                               && Conjugaison erronée. Accord avec “\1 \2…”. Le verbe devrait être à la 3ᵉ personne du singulier.

    [le|la|l’|leur]  *WORD  qui  @:V¬:(?:3s|P|3p!|G|M)
        <<- /conj/ not tag(\2, "_enum_") and morph(<1, ":C|<start>|>,", ":[YP]") and morph(\2, ":[NA].*:[si]", ":G")
30938
30939
30940
30941
30942
30943
30944
30945

30946
30947
30948
30949
30950
30951
30952
30953

30954
30955
30956
30957
30958
30959
30960
30938
30939
30940
30941
30942
30943
30944

30945
30946
30947
30948
30949
30950
30951
30952

30953
30954
30955
30956
30957
30958
30959
30960







-
+







-
+







TEST: un grand nombre avaient été humiliés par ces pratiques délétères


__conj_det_sing_nom__
    [un|ce|cet|mon|ton|son|notre|votre]  *WORD  @:[123][sp]¬:(?:3s|P|Y|3p!|G|M)
        <<- /conj/ not tag(\2, "_enum_") and morph(<1, ":C|<start>|>,", ":[YP]") and morph(\2, ":[NA].*:[me]:[si]", ":G")
            and not ( (value(\2, "|dizaine|douzaine|quinzaine|vingtaine|trentaine|quarantaine|cinquantaine|soixantaine|centaine|majorité|minorité|millier|partie|poignée|tas|paquet|moitié|nombre|")
                        or tag_before(\1, "_ni_") or value(<1, "|et|ou|")) and morph(\3, ":3?p") ) and not checkAgreement(\2, \3) >>>
                        or tag_before(\1, "_ni_") or value(<1, "|et|ou|")) and morph(\3, ":3?p") ) and not agreement(\2, \3) >>>
        <<- /conj/ not tag(\-1, "_ngn_") and morph(\3, ":A.*:p") or (morph(\3, ":N.*:p") and morph(\2, ":A"))
        -3>> =suggVerb(\3, ":3s", suggSing)                                                         && Accord avec “\1 \2…” incorrect. Conjugaison erronée ou accord nom/adjectif incorrect.
        <<- /conj/ __else__ -3>> =suggVerb(\3, ":3s")                                               && Conjugaison erronée. Accord avec “\1 \2…”. Le verbe devrait être à la 3ᵉ personne du singulier.

    [une|cette|mon|ton|son|ma|ta|sa|notre|votre]  *WORD  @:[123][sp]¬:(?:3s|P|Y|3p!|G|M)
        <<- /conj/ not tag(\2, "_enum_") and morph(<1, ":C|<start>|>,", ":[YP]") and morph(\2, ":[NA].*:[fe]:[si]", ":G")
            and not ( (value(\2, "|dizaine|douzaine|quinzaine|vingtaine|trentaine|quarantaine|cinquantaine|soixantaine|centaine|majorité|minorité|millier|partie|poignée|tas|paquet|moitié|")
                        or tag_before(\1, "_ni_") or value(<1, "|et|ou|")) and morph(\3, ":3?p") ) and not checkAgreement(\2, \3) >>>
                        or tag_before(\1, "_ni_") or value(<1, "|et|ou|")) and morph(\3, ":3?p") ) and not agreement(\2, \3) >>>
        <<- /conj/ not tag(\-1, "_ngn_") and morph(\3, ":A.*:p") or (morph(\3, ":N.*:p") and morph(\2, ":A"))
        -3>> =suggVerb(\3, ":3s", suggSing)                                                         && Accord avec “\1 \2…” incorrect. Conjugaison erronée ou accord nom/adjectif incorrect.
        <<- /conj/ __else__ -3>> =suggVerb(\3, ":3s")                                               && Conjugaison erronée. Accord avec “\1 \2…”. Le verbe devrait être à la 3ᵉ personne du singulier.

    [un|une|ce|cet|cette|mon|ton|son|ma|ta|sa|notre|votre]  *WORD  qui  @:V¬:(?:3s|P|3p!|G|M)
        <<- /conj/ not tag(\2, "_enum_") and morph(<1, ":C|<start>|>,", ":[YP]") and morph(\2, ":[NA].*:[si]", ":G")
            and not ( (value(\2, "|dizaine|douzaine|quinzaine|vingtaine|trentaine|quarantaine|cinquantaine|soixantaine|centaine|majorité|minorité|millier|partie|poignée|tas|paquet|moitié|")
31292
31293
31294
31295
31296
31297
31298
31299

31300
31301
31302
31303
31304
31305
31306
31292
31293
31294
31295
31296
31297
31298

31299
31300
31301
31302
31303
31304
31305
31306







-
+







TEST: Tu penses que quelqu’un qui frappe sa femme et ses enfants est un bon père ?


__conj_les_nom__
    les  @:[NA].*:[pi]¬:V0  @:V¬:(?:3p|P|Y|G|M)
        <<- /conj/ morph(<1, ":Cs|<start>|>,")
            and not ( morph(\3, ":3s") and before("(?i)\\b(?:l[ea] |l’|une? |ce(?:tte|t|) |[mts](?:on|a) |[nv]otre ).+ entre .+ et ") )
            and not checkAgreement(\2, \3)
            and not agreement(\2, \3)
            and not ( morph(\2, "(?:[123][sp]|P)") and not value(<1, "|<start>|,|") ) >>>
        <<- /conj/ not tag(\-1, "_ngn_") and morph(\3, ":A.*:s") or (morph(\3, ":N.*:s") and morph(\2, ":A"))
        -3>> =suggVerb(\3, ":3p", suggPlur)                                                         && Accord avec “\1 \2…” incorrect. Conjugaison erronée ou accord nom/adjectif incorrect.
        <<- /conj/ __else__ -3>> =suggVerb(\3, ":3p")                                               && Conjugaison erronée. Accord avec “\1 \2…”. Le verbe devrait être à la 3ᵉ personne du pluriel.

    les  @:[NA].*:[pi]  qui  @:V¬:(?:3p|P|Y|G|M)
        <<- /conj/ morph(<1, ":Cs|<start>|>,")
31346
31347
31348
31349
31350
31351
31352
31353

31354
31355
31356
31357
31358
31359
31360
31361
31362

31363
31364
31365
31366
31367
31368
31369
31370
31371

31372
31373
31374
31375
31376
31377
31378
31346
31347
31348
31349
31350
31351
31352

31353
31354
31355
31356
31357
31358
31359
31360
31361

31362
31363
31364
31365
31366
31367
31368
31369
31370

31371
31372
31373
31374
31375
31376
31377
31378







-
+








-
+








-
+







TEST: les souris enceintes


__conj_certains_certaines_plusieurs_nom__
    [certains|maints]  @:[NA].*:[pi]  @:V¬:(?:3p|P|Y|G|M)
        <<- /conj/ morph(<1, ":Cs|<start>|>,")
            and not( morph(\3, ":3s") and before("(?i)\\b(?:l[ea] |l’|une? |ce(?:tte|t|) |[mts](?:on|a) |[nv]otre ).+ entre .+ et ") )
            and not checkAgreement(\2, \3)
            and not agreement(\2, \3)
            and not ( morph(\2, "(?:[123][sp]|P)") and not value(<1, "|<start>|,|") ) >>>
        <<- /conj/ not tag(\-1, "_ngn_") and morph(\3, ":A.*:s") or (morph(\3, ":N.*:s") and morph(\2, ":A"))
        -3>> =suggVerb(\3, ":3p", suggMasPlur)                                                      && Accord avec “\1 \2…” incorrect. Conjugaison erronée ou accord nom/adjectif incorrect.
        <<- /conj/ __else__ -3>> =suggVerb(\3, ":3p")                                               && Conjugaison erronée. Accord avec “\1 \2…”. Le verbe devrait être à la 3ᵉ personne du pluriel.

    [certaines|maintes]  @:[NA].*:[pi]  @:V¬:(?:3p|P|Y|G|M)
        <<- /conj/ morph(<1, ":Cs|<start>|>,")
            and not( morph(\3, ":3s") and before("(?i)\\b(?:l[ea] |l’|une? |ce(?:tte|t|) |[mts](?:on|a) |[nv]otre ).+ entre .+ et ") )
            and not checkAgreement(\2, \3)
            and not agreement(\2, \3)
            and not ( morph(\2, "(?:[123][sp]|P)") and not value(<1, "|<start>|,|") ) >>>
        <<- /conj/ not tag(\-1, "_ngn_") and morph(\3, ":A.*:s") or (morph(\3, ":N.*:s") and morph(\2, ":A"))
        -3>> =suggVerb(\3, ":3p", suggFemPlur)                                                      && Accord avec “\1 \2…” incorrect. Conjugaison erronée ou accord nom/adjectif incorrect.
        <<- /conj/ __else__ -3>> =suggVerb(\3, ":3p")                                               && Conjugaison erronée. Accord avec “\1 \2…”. Le verbe devrait être à la 3ᵉ personne du pluriel.

    plusieurs  @:[NA].*:[pi]  @:V¬:(?:3p|P|Y|G|M)
        <<- /conj/ morph(<1, ":Cs|<start>|>,")
            and not( morph(\3, ":3s") and before("(?i)\\b(?:l[ea] |l’|une? |ce(?:tte|t|) |[mts](?:on|a) |[nv]otre ).+ entre .+ et ") )
            and not checkAgreement(\2, \3)
            and not agreement(\2, \3)
            and not ( morph(\2, "(?:[123][sp]|P)") and not value(<1, "|<start>|,|") ) >>>
        <<- /conj/ not tag(\-1, "_ngn_") and morph(\3, ":A.*:s") or (morph(\3, ":N.*:s") and morph(\2, ":A"))
        -3>> =suggVerb(\3, ":3p", suggPlur)                                                         && Accord avec “\1 \2…” incorrect. Conjugaison erronée ou accord nom/adjectif incorrect.
        <<- /conj/ __else__ -3>> =suggVerb(\3, ":3p")                                               && Conjugaison erronée. Accord avec “\1 \2…”. Le verbe devrait être à la 3ᵉ personne du pluriel.

    [certains|certaines|plusieurs|maints|maintes]  @:[NA].*:[pi]  qui  @:V¬:(?:3p|P|Y|G|M)
        <<- /conj/ morph(<1, ":Cs|<start>|>,")
31395
31396
31397
31398
31399
31400
31401
31402

31403
31404
31405
31406
31407
31408
31409
31395
31396
31397
31398
31399
31400
31401

31402
31403
31404
31405
31406
31407
31408
31409







-
+







TEST: certains imbéciles passés à l’ennemi feraient mieux de se taire.


__conj_des_nom__
    [<start>|,|(]  des  @:[NA].*:[pi]  @:V¬:(?:3p|P|G|Q|Y|A.*:[pi]|V[23].*:Y)
        <<- /conj/ morph(>1, ":(?:R|D.*:p)|>au/|<end>|>,") >>>
        <<- /conj/ not morph(\4, ":[NA]") -4>> =suggVerb(\4, ":3p")                                 && Conjugaison erronée. Accord avec “\2 \3…”. Le verbe devrait être à la 3ᵉ personne du pluriel.
        <<- /conj/ __else__ and not checkAgreement(\3, \4) -4>> =suggVerb(\4, ":3p", suggPlur)      && Conjugaison erronée. Accord avec “\2 \3…”. Le verbe devrait être à la 3ᵉ personne du pluriel.
        <<- /conj/ __else__ and not agreement(\3, \4) -4>> =suggVerb(\4, ":3p", suggPlur)           && Conjugaison erronée. Accord avec “\2 \3…”. Le verbe devrait être à la 3ᵉ personne du pluriel.

    [<start>|,|(]  des  @:[NA].*:[pi]  qui  @:V¬:(?:3p|P|G)
        <<- /conj/ -5>> =suggVerb(\5, ":3p")                                                        && Conjugaison erronée. Accord avec “\2 \3 \4…”. Le verbe devrait être à la 3ᵉ personne du pluriel.

    *WORD  des  @:[NA].*:[pi]  qui  @:V¬:(?:3p|P|G)
        <<- /conj/ morph(\1, ":[VR]", ":[NA]") --1>> =suggVerb(\-1, ":3p")                          && Conjugaison erronée. Accord avec “\2 \3 \4…”. Le verbe devrait être à la 3ᵉ personne du pluriel.