Grammalecte  Check-in [718821a6cb]

Overview
Comment:[fr] conversion: regex rules -> graph rules
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | fr | rg
Files: files | file ages | folders
SHA3-256: 718821a6cb041a75a15ae005ac7694a27ce9491e0caab4ebd369f3928fdaadd5
User & Date: olr on 2018-08-12 22:26:16
Other Links: branch diff | manifest | tags
Context
2018-08-13
09:20
[core] debug mode: label for immunity check-in: 7fe296fd4f user: olr tags: core, rg
2018-08-12
22:26
[fr] conversion: regex rules -> graph rules check-in: 718821a6cb user: olr tags: fr, rg
13:05
[fr] conversion: regex rules -> graph rules check-in: 2aac4a327c user: olr tags: fr, rg
Changes

Modified gc_lang/fr/rules.grx from [6b36274a23] to [1e20318a6d].

4635
4636
4637
4638
4639
4640
4641
4642
4643
4644
4645
4646
4647
4648
4649
....
4838
4839
4840
4841
4842
4843
4844
4845
4846
4847
4848
4849
4850
4851
4852
....
4890
4891
4892
4893
4894
4895
4896
4897
4898
4899
4900
4901
4902
4903
4904
.....
12896
12897
12898
12899
12900
12901
12902











12903
12904
12905
12906
12907
12908
12909
.....
13832
13833
13834
13835
13836
13837
13838
13839
13840
13841
13842
13843
13844
13845
13846
13847
13848
13849
13850
13851
13852
13853
13854
13855
13856
13857
13858
13859
13860
13861
13862
13863
13864
13865
13866
13867
13868
13869
13870
13871
13872
13873
13874
13875
13876
13877
13878
13879
13880
13881
13882
13883
13884
13885
13886
13887

13888
13889
13890









13891
13892
13893
13894
13895
13896
13897
13898
13899









13900
13901
13902
13903
13904
13905
13906
13907
13908
13909
13910
13911

13912
13913
13914
13915
13916
13917



13918
13919
13920
13921
13922
13923
13924
13925
13926
13927
13928
13929
13930
13931
13932
13933
13934
13935
13936
13937
13938
13939
13940
13941
13942
13943
13944
13945
13946
13947
13948
13949
13950
13951
13952
13953
13954
13955
13956
13957
13958
13959
13960
13961
13962
13963
13964
13965
13966
13967
13968
13969
13970
13971
13972
13973
13974
13975
13976
13977
13978
13979
13980
13981
13982





13983
13984
13985
13986
13987
13988
13989
.....
14001
14002
14003
14004
14005
14006
14007
14008
14009
14010
14011
14012
14013
14014
14015
14016
14017
14018
14019
14020
14021
14022
14023
14024
14025
14026
14027
14028
14029
14030






14031
14032
14033
14034

14035
14036

14037
14038
14039
14040
14041
14042



14043
14044
14045
14046
14047
14048
14049

14050
14051
14052
14053
14054
14055
14056




14057
14058
14059
14060
14061
14062
14063
14064
14065
14066



14067
14068
14069
14070
14071


14072
14073
14074
14075

14076





14077
14078
14079
14080
14081
14082


14083
14084
14085




14086
14087
14088
14089
14090
14091


14092
14093
14094
14095
14096
14097
14098
14099
14100
14101
14102
14103
14104
14105
14106
14107
14108
14109
14110
14111
14112
14113
14114
14115
14116
14117
14118
14119
14120
14121
14122
14123
14124
14125
14126
14127
14128
14129














14130
14131
14132
14133
14134
14135
14136
14137
14138
14139
14140
14141
14142
14143
14144
14145
14146
14147
14148



14149
14150
14151
14152
14153
14154
14155


14156
14157











14158
14159
14160
14161
14162
14163
14164
.....
15098
15099
15100
15101
15102
15103
15104
15105
15106










15107
15108
15109
15110
15111
15112
15113
TEST: Amenez-moi du papier {{a}} lettres.
TEST: Va acheter du papier {{a}} musique.
TEST: Elle mit du rouge {{a}} lèvres.
TEST: on a besoin d’une remise {{a}} plat.
TEST: passe-moi mon sac {{a}} dos.
TEST: dans le silo {{a}} grain.
TEST: sa chambre, c’est une vraie soue {{a}} cochons.
TEST: Un tueur {{a}} gages ne s’y prendrait jamais comme ça.
TEST: Ventes {{a}} domicile insatisfaisantes
TEST: Ce n’est que du vernis {{a}} ongles.
TEST: le vol {{a}} l’étalage est un fléau.
TEST: Il nous faut une {{voix}} de recours.
TEST: c’est une putain d’usine {{a}} gaz.
TEST: ce produit est notre vache {{a}} lait
TEST: ils vont et viennent, toujours {{cotes a cotes}}…
................................................................................
        <<- /conf/ -1>> =\1.replace("ane", "anne")      # Confusion : la cane est la femelle du canard.|https://fr.wiktionary.org/wiki/canne

TEST: Voici ma {{cane}} à pêche.


# ce / se / ceux
__conf_ce_ceux_se!6__
    ce  @:V[123].*:(?:Y|[123][sp])¬:[NAGM]|>(?:devoir|pouvoir|sembler)/
        <<- /conf/ not \1.isupper() and \2.islower() and not value(\2, "|faire|")
        -1>> se                                         # Confusion : « \2 » est un verbe. Exemples : ce bâtiment, se perdre.

    ce  [/-il|/-ils|/-elle|/-elles|/-on]
        <<- /conf/ not \1.isupper() and \2.islower()
        -1>> se                                         # Confusion : « \2 » est un verbe. Exemples : ce bâtiment, se perdre.

................................................................................
TEST: {{Se}} sera une fille.
TEST: {{ceux}} seraient des jours heureux
TEST: Pour {{se}} faire, ils sont prêts à tout.
TEST: {{se}} ne peut être ainsi.
TEST: C’est tout {{se}} qu’il y a
TEST: Tout {{se}} que je fais
TEST: tout {{se}} qu’il entend
TEST: {{Ce}} {{promener}} est relaxant.
TEST: Il {{ce}} {{sent}} seul
TEST: {{se}} {{train}} est en retard
TEST: {{ceux}} train arrive trop vite.
TEST: {{ceux}} ne doit pas nous faire oublier ce désastre
TEST: qui {{ce}} donne en spectacle.
TEST: {{ce}} prennent-ils pour des experts ?
TEST: les expatriés éloignés ou ceux habitant ici
................................................................................

    >aller de soit
        <<- /conf/ not after(" soit ") -3>> soi             # Confusion.|https://fr.wiktionary.org/wiki/aller_de_soi

TEST: cela ne va pas de {{soit}}.














!!!! Adverbes après verbe                                                                         !!

# fort
__sgpl_verbe_fort__
    forts
        <<- morph(<1, ":V", ":[AN].*:[me]:[pi]|>(?:être|sembler|devenir|re(?:ster|devenir)|para[îi]tre|appara[îi]tre)/.*:(?:[123]p|P|Q)|>(?:affirmer|trouver|croire|désirer|estime|préférer|penser|imaginer|voir|vouloir|aimer|adorer|souhaiter)/")
................................................................................
TEST: Est-il souvent {{arrivait}} de se tromper ?
TEST: Ne sommes-nous pas {{aveugle}}
TEST: Que se sont-ils dit ?
TEST: Ton rendez-vous arrive bientôt.
TEST: Est-il question de ceci ou de cela ?
TEST: Est-ce former de futurs travailleurs ou bien des citoyens


@@@@
@@@@
@@@@
@@@@
@@@@END_GRAPH                                                                                      _
@@@@
@@@@
@@@@
@@@@

## Accord et incohérences
__[i]/ppas(ppas_sont)__
    sont ({w_2})  @@5
    <<- morphex(\1, ":[NAQ]", ":[QWGBMpi]") and not re.search("(?i)^(?:légion|nombre|cause)$", \1) and not before(r"(?i)\bce que?\b")
    -1>> =suggPlur(@)               # Incohérence : « \1 » est au singulier. Ou vous confondez « sont » et « son », ou l’accord en nombre est incorrect.
    <<- __else__ and morphex(\1, ":V", ":(?:N|A|Q|W|G|3p)") and not before(r"(?i)\bce que?\b")
    -1>> =suggVerbPpas(\1, ":m:p")  # Incohérence : « \1 » n’est pas un participe passé.

TEST: après avoir mis à jour sont {{profile}}.



!!
!!
!!!! Se croire/considérer/montrer/penser/révéler/savoir/sentir/voir/vouloir + participe passé/adj !!
!!
!!

__[i]/ppas(ppas_je_me_verbe)__
    je +(?:ne +|)me +((?:s[eauû]|montr|pens|rév|v[oiîe])\w+) +({w_2})  @@w,$
    <<- morph(\1, ">(?:montrer|penser|révéler|savoir|sentir|voir|vouloir)/", False) and morphex(\2, ":[NAQ].*:p", ":[GWYsi]")
    -2>> =suggSing(@)                                                        # Accord avec le sujet « je » : « \2 » devrait être au singulier.

TEST: je me savais {{implacables}} avec eux


__[i]/ppas(ppas_tu_te_verbe)__
    tu +(?:ne +|)te +((?:s[eauû]|montr|pens|rév|v[oiîe])\w+) +({w_2})  @@w,$
    <<- morph(\1, ">(?:montrer|penser|révéler|savoir|sentir|voir|vouloir)/", False) and morphex(\2, ":[NAQ].*:p", ":[GWYsi]")
    -2>> =suggSing(@)                                                        # Accord avec le sujet « je » : « \2 » devrait être au singulier.

TEST: quand tu te montres {{infaillibles}}


__[i]/ppas(ppas_il_se_verbe)__
    (il|ce|ce qui|celui +qui|ça +qui|lui +qui|celui-(?:ci|là)|quiconque|lequel) +(?:ne +|)se +((?:s[eauû]|montr|pens|rév|v[oiîe])\w+) +({w_2})  @@0,w,$
    <<- morph(\2, ">(?:montrer|penser|révéler|savoir|sentir|voir|vouloir)/", False)
        and (morphex(\3, ":[NAQ].*:p", ":[GWsi]") or morphex(\3, ":[NAQ].*:f", ":[GWYme]"))

        and (not re.search("^(?:celui-(?:ci|là)|lequel)$", \1) or not morph(word(-1), ":R", False, False))
    -3>> =suggMasSing(@)                                                     # Accord avec le sujet « \1 » : « \3 » devrait être au masculin singulier.










TEST: lequel se veut {{imbattables}} ?


__[i]/ppas(ppas_elle_se_verbe)__
    (elle|celle-(?:ci|là)|laquelle) +(?:ne +|)se +((?:s[eauû]|montr|pens|rév|v[oiîe])\w+) +({w_2})  @@0,w,$
    <<- morph(\2, ">(?:montrer|penser|révéler|savoir|sentir|voir|vouloir)/", False)
        and (morphex(\3, ":[NAQ].*:p", ":[GWsi]") or morphex(\3, ":[NAQ].*:m", ":[GWYfe]"))
        and not morph(word(-1), ":R", False, False)
    -3>> =suggFemSing(@)                                                     # Accord avec le sujet « \1 » : « \3 » devrait être au féminin singulier.










TEST: Elle se sait plus {{fortes}} qu’eux tous.
TEST: elle se vit {{abandonné}}


__[i]/ppas(ppas_elle_qui_se_verbe)__
    (c?elle +qui) +(?:ne +|)se +((?:s[eauû]|montr|pens|rév|v[oiîe])\w+) +({w_2})  @@0,w,$
    <<- morph(\2, ">(?:montrer|penser|révéler|savoir|sentir|voir|vouloir)/", False)
        and (morphex(\3, ":[NAQ].*:p", ":[GWsi]") or morphex(\3, ":[NAQ].*:m", ":[GWYfe]"))
    -3>> =suggFemSing(@)                                                     # Accord avec le sujet « \1 » : « \3 » devrait être au féminin singulier.

TEST: à celle qui se révélera {{attentif}} à tous ces problèmes.



__[i]/ppas(ppas_nous_nous_verbe)__
    nous +(?:ne +|)nous +((?:s[eauû]|montr|pens|rév|v[oiîe])\w*ons) +({w_2})  @@w,$
    <<- morph(\1, ">(?:montrer|penser|révéler|savoir|sentir|voir|vouloir)/", False) and morphex(\2, ":[NAQ].*:s", ":[GWpi]")
    -2>> =suggPlur(@)                                                        # Accord avec le sujet « nous » : « \2 » devrait être au pluriel.




TEST: nous nous pensions {{invincible}} jusqu’au jour où tout a basculé.


__[i]/ppas(ppas_ils_se_verbe)__
    (ils|c?eux +qui|ceux-ci|ceux-là|lesquels) +(?:ne +|)se +((?:s[eauû]|montr|pens|rév|v[oiîe])\w+) +({w_2})  @@0,w,$
    <<- morph(\2, ">(?:montrer|penser|révéler|savoir|sentir|voir|vouloir)/", False)
        and (morphex(\3, ":[NAQ].*:s", ":[GWpi]") or morphex(\3, ":[NAQ].*:f", ":[GWYme]"))
        and (not re.search("^(?:ceux-(?:ci|là)|lesquels)$", \1) or not morph(word(-1), ":R", False, False))
    -3>> =suggMasPlur(@)                                                     # Accord avec le sujet « \1 » : « \3 » devrait être au masculin pluriel.

TEST: ils se montrent {{exigeantes}}


__[i]/ppas(ppas_elles_se_verbe)__
    (elles|c?elles +qui|celles-(?:ci|là)|lesquelles) +(?:ne +|)se +((?:s[eauû]|montr|pens|rév|v[oiîe])\w+) +({w_2})  @@0,w,$
    <<- morph(\2, ">(?:montrer|penser|révéler|savoir|sentir|voir|vouloir)/", False)
        and (morphex(\3, ":[NAQ].*:s", ":[GWpi]") or morphex(\3, ":[NAQ].*:m", ":[GWYfe]"))
        and (not re.search("^(?:elles|celles-(?:ci|là)|lesquelles)$", \1) or not morph(word(-1), ":R", False, False))
    -3>> =suggFemPlur(@)                                                     # Accord avec le sujet « \1 » : « \3 » devrait être au féminin pluriel.

TEST: elles se sentent {{perdu}}


__[i]/ppas(ppas_le_verbe_pensée)__
    le ((?:trouv|consid[éè]r|cr[ouû]|rend|voilà)\w*) +({w_2}[esx])  @@w,$
    <<- morph(\1, ">(?:trouver|considérer|croire|rendre|voilà)/", False) and morphex(\2, ":[AQ].*:(?:[me]:p|f)", ":(?:G|Y|[AQ].*:m:[is])")
        and not (morph(\1, ":Y", False) and morph(\2, ":3s", False))
    -2>> =suggMasSing(@)                                                     # Accord avec le COD “le” : « \2 » doit être au masculin singulier.
__[i]/ppas(ppas_la_verbe_pensée)__
    la ((?:trouv|consid[éè]r|cr[ouû]|rend|voilà)\w*) +({w_2}[uiéesx])  @@w,$
    <<- morph(\1, ">(?:trouver|considérer|croire|rendre|voilà)/", False) and morphex(\2, ":[AQ].*:(?:[fe]:p|m)", ":(?:G|Y|[AQ]:f:[is])")
        and not (morph(\1, ":Y", False) and morph(\2, ":3s", False))
    -2>> =suggFemSing(@)                                                     # Accord avec le COD “la” : « \2 » doit être au féminin singulier.
__[i]/ppas(ppas_les_verbe_pensée)__
    les ((?:trouv|consid[éè]r|cr[ouû]|rend|voilà)\w*) +({w_2})  @@w,$
    <<- morph(\1, ">(?:trouver|considérer|croire|rendre|voilà)/", False) and morphex(\2, ":[AQ].*:s", ":(?:G|Y|[AQ].*:[ip])")
        and not (morph(\1, ":Y", False) and morph(\2, ":3s", False))
    -2>> =suggPlur(@)                                                        # Accord avec le COD “les” : « \2 » doit être au pluriel.
__[i]/ppas(ppas_me_te_verbe_pensée)__
    ([mt]e) ((?:trouv|consid[éè]r|cr[ouû]|rend|voilà)\w*) +({w_2}[sx])  @@0,w,$
    <<- morph(\2, ">(?:trouver|considérer|croire|rendre|voilà)/", False) and morphex(\3, ":[AQ].*:p", ":(?:G|Y|[AQ].*:[is])")
        and not (morph(\1, ":Y", False) and morph(\2, ":3s", False))
    -3>> =suggSing(@)                                                        # Accord avec le pronom “\1” : « \3 » doit être au singulier.
__[i]/ppas(ppas_se_verbe_pensée)__
    se ((?:trouv|consid[éè]r|cr[ouû]|rend)\w*) +({w_3})  @@w,$
    <<- morph(\1, ">(?:trouver|considérer|croire|rendre)/.*:3s", False) and morphex(\2, ":[AQ].*:p", ":(?:G|Y|[AQ].*:[is])")
        and not (morph(\1, ":Y", False) and morph(\2, ":3s", False))
    -2>> =suggSing(@)                                                        # Accord avec le pronom “se” (le verbe étant au singulier) : « \2 » doit être au singulier.
    <<- __else__ and morph(\1, ">(?:trouver|considérer|croire|rendre)/.*:3p", False) and morphex(\2, ":[AQ].*:s", ":(?:G|Y|[AQ].*:[ip])")
        and not (morph(\1, ":Y", False) and morph(\2, ":3s", False))
    -2>> =suggPlur(@)                                                        # Accord avec le pronom “se” (le verbe étant au pluriel) : « \2 » doit être au pluriel.
__[i]/ppas(ppas_nous_verbe_pensée)__
    nous ((?:trouv|consid[éè]r|cr[ouû]|rend|voilà)\w*) +({w_2})  @@w,$
    <<- ( morphex(\1, ">(?:trouver|considérer|croire|rendre|voilà)/", ":1p")
        or (morph(\1, ">(?:trouver|considérer|croire)/.*:1p", False) and before(r"\bn(?:ous|e) +$")) )
        and morphex(\2, ":[AQ].*:s", ":(?:G|Y|[AQ].*:[ip])")
        and not (morph(\1, ":Y", False) and morph(\2, ":3s", False))
    -2>> =suggPlur(@)                                                        # Accord avec le pronom “nous” : « \2 » doit être au pluriel.
#__[i]/ppas(ppas_vous_verbe)__
#    vous ((?:trouv|consid[éè]r|cr[ouû]|rend|voilà)\w*) +({w_2})  @@w,$
#    <<- ( morphex(\1, ">(?:trouver|considérer|croire|rendre|voilà)/", ":2p")
#    or (morph(\1, ">(?:trouver|considérer|croire)/.*:2p", False) and before(r"\b(?:vous|ne) +$")) )
#    and morphex(\2, ":[AQ].*:s", ":(?:G|[AQ].*:[ip])")
#    -2>> =suggPlur(@)                                                        # Accord avec le pronom “vous” : « \2 » doit être au pluriel.






TEST: ces hommes le rendent {{dingues}}
TEST: Il me considère {{stupides}}
TEST: Elle nous trouve {{stupide}}
TEST: Je les crois {{capable}} du pire
TEST: la voilà {{perdu}}
TEST: la voilà {{forcé}} à abandonner
................................................................................
TEST: mais les considérer uniquement ainsi fait perdre la signification politique de leur geste.
TEST: nous considérer ainsi fait le lit de la haine…



!!
!!
!!!! Avoir + participes passés                                                                    !!
!!
!!

#__[i]/conj__  fait(s|e|es) ({w1}) <<- morph(\2, ":V") and not morph(\2, ":Y")
#   ->> fait \1                      # Le participe passé de faire reste au masculin singulier s’il est suivi par un verbe à l’infinitif.

__[i](p_les_avoir_fait_vinfi)__
    les ({avoir}) +(fait) +(?:[mts](?:e +|’)|)({infi}) @@w,w,$ <<- morph(\1, ">avoir/", False) and morph(\3, ":Y", False) ~2>> _

__[i]/ppas(ppas_pronom_avoir)__
    (?:j’|je |tu |ils? |elles? |on |et )(?:ne +|n’|l(?:ui|eur) +|)({avoir}) +({w_2})  @@w,$
    <<- not re.search("(?i)^(?:barre|confiance|cours|envie|peine|prise|crainte|cure|affaire|hâte|force|recours)$", \2) and morph(word(-1), ">(?:comme|et|lorsque?|mais|o[uù]|puisque?|qu(?:oique?|i|and)|si(?:non|))/", False, True)
        and morph(\1, ":V0a", False) and not \2.isupper() and morphex(\2, ":(?:[123][sp]|Q.*:[fp])", ":(?:G|W|Q.*:m:[si])")
    -2>> =suggMasSing(@)
    # Ce verbe devrait être un participe passé au masculin singulier.|http://fr.wikipedia.org/wiki/Accord_du_participe_pass%C3%A9_en_fran%C3%A7ais

TEST: ils leur avaient {{donnés}} du fil à retordre.
TEST: il a {{affronte}} une bande de voleurs de bétail
TEST: J’ai {{mettrai}} du sel.                                                    ->> mis
TEST: J’ai {{lut}} son journal.                                                   ->> lu
TEST: Ils avaient barre sur lui.
TEST: Si j’avais {{sut}}.








__[i]/ppas(ppas_nous_vous_avoir)__
    ([nv]ous) +(?:ne +|n’|l(?:ui|eur) +|)({avoir}) +({w_2})  @@0,w,$

    <<- morph(\1, ":Os", False)
        and not re.search("(?i)^(?:barre|confiance|cours|envie|peine|prise|crainte|cure|affaire|hâte|force|recours)$", \3) and morph(word(-1), ">(?:comme|et|lorsque?|mais|o[uù]|puisque?|qu(?:oique?|i|and)|si(?:non|))/", False, True)

        and morph(\2, ":V0a", False) and not \3.isupper() and morphex(\3, ":(?:[123][sp]|Q.*:[fp])", ":(?:G|W|Q.*:m:[si])")
    -3>> =suggMasSing(@)
    # Ce verbe devrait être un participe passé au masculin singulier.|http://fr.wikipedia.org/wiki/Accord_du_participe_pass%C3%A9_en_fran%C3%A7ais

TEST: Nous avons {{donne}} tout notre potentiel.
TEST: mais nous avons {{était}} surpris par cette annonce.



TEST: D’un côté, le modèle occidental, […], nous a libérés de […]


__[i]/ppas(ppas_det_nom_avoir)__
    (l(?:’|es? |a |eurs )|ce(?:s|tte|t|rtaine?s|) |des |quelques |[mts](?:es|on|a) |[nv]o(?:s|tre) ) *({w_2}) +(?:ne +|n’|l(?:ui|eur) +|)({avoir}) +({w_2})  @@0,w,w,$
    <<- not re.search("(?i)^(?:barre|confiance|cours|envie|peine|prise|crainte|cure|affaire|hâte|force|recours)$", \4) and morph(word(-1), ">(?:comme|et|lorsque?|mais|o[uù]|puisque?|qu(?:oique?|i|and)|si(?:non|))/", False, True)
        and not morph(\2, ":G", False) and morph(\3, ":V0a", False) and not \4.isupper() and morphex(\4, ":(?:[123][sp]|Q.*:[fp])", ":(?:G|W|Q.*:m:[si])")

        and not (\3 == "avions" and morph(\4, ":3[sp]", False))
    -4>> =suggMasSing(@)
    # Ce verbe devrait être un participe passé au masculin singulier.|http://fr.wikipedia.org/wiki/Accord_du_participe_pass%C3%A9_en_fran%C3%A7ais

TEST: Les femmes lui avait {{conseillées}} de se taire.
TEST: le mur avait {{était}} détruit
TEST: Lorsque les femmes ont {{apprit}} la nouvelle…




TEST: Certains les ont d’abord jugés trop lents.


__[i]/ppas(ppas_les_avoir)__
    les +({avoir}) +({w_1}(?:[éiut]e?|is|se))  @@w,$
    <<- morph(\1, ":V0a", False) and morphex(\2, ":V[0-3]..t.*:Q.*:s", ":[GWpi]")
    -2>> =suggPlur(@)
    # Accord avec le COD “les” : Le participe passé « \2 » devrait être au pluriel (et accordé en genre).|http://fr.wikipedia.org/wiki/Accord_du_participe_pass%C3%A9_en_fran%C3%A7ais

TEST: je les avais {{trompé}} avec mon baratin.





__[i]/ppas(ppas_nous_avoir)__
    nous +({avoir}) +({w_1}(?:[éiut]e?|se)) @@w,$
    <<- isRealEnd() and morph(\1, ":V0a", False) and morphex(\2, ":V[0-3]..t_.*:Q.*:s", ":[GWpi]") and morphex(word(-1), ":(?:M|Os|N)", ":R") and not before(r"\bque? +\w[\w-]+ +$")


    -2>> =suggPlur(@)
    # Accord avec le COD “nous” : Le participe passé « \2 » devrait être au pluriel (et accordé en genre).|http://fr.wikipedia.org/wiki/Accord_du_participe_pass%C3%A9_en_fran%C3%A7ais

TEST: Ces maisons nous avaient {{subjugué}}.

TEST: C’est mot pour mot un script qu’on nous a filé.







__[i]/ppas(ppas_l_avoir)__
    l’({avoir}) +({w_1}s)  @@2,$
    <<- morph(\1, ":V0a", False) and morphex(\2, ":V[0-3]..t.*:Q.*:p", ":[GWsi]")
    -2>> =\2[:-1]


    # Accord avec le COD « l’ » : Le participe passé « \2 » devrait être au singulier (et accordé en genre).|http://fr.wikipedia.org/wiki/Accord_du_participe_pass%C3%A9_en_fran%C3%A7ais

TEST: ils l’avaient {{retrouvés}}.






__[i]/ppas(ppas_m_t_avoir)__
    ([mt])’({avoir}) +({w_1}s)  @@0,w,$
    <<- morph(\2, ":V0a", False) and morphex(\3, ":V[0-3]..t_.*:Q.*:p", ":[GWsi]") and not before(r"\bque? ")
    -3>> =\3[:-1]


    # Accord avec « \1’ ». Le participe passé « \3 » devrait être au singulier (et accordé en genre).|http://fr.wikipedia.org/wiki/Accord_du_participe_pass%C3%A9_en_fran%C3%A7ais

TEST: ces livres m’avaient {{ennuyés}} au-delà du dicible.


__[i]/ppas(ppas_qui_avoir)__
    qui +(?:n’|l(?:ui|eur) |ne l(?:ui|eur) |ne +|)({avoir}) +({w_2}[es])  @@w,$
    <<- morph(\1, ">avoir/", False) and morphex(\2, ":Q.*:(?:f|m:p)", ":m:[si]")
    -2>> =suggMasSing(@)
    # Le participe passé devrait être au masculin singulier.|http://fr.wikipedia.org/wiki/Accord_du_participe_pass%C3%A9_en_fran%C3%A7ais

TEST: des hommes, des femmes, des enfants qui ne leur avaient {{faits}} que du bien.


__[i]/ppas(ppas_avoir_ppas_mas_sing)__
    avoir +({w_2})  @@$
    <<- not re.search("(?i)^(?:confiance|cours|envie|peine|prise|crainte|cure|affaire|hâte|force|recours)$", \1)
        and morphex(\1, ":Q.*:(?:f|m:p)", ":m:[si]") and before("(?i)(?:après +$|sans +$|pour +$|que? +$|quand +$|, +$|^ *$)")
    -1>> =suggMasSing(@)
    # Le participe passé devrait être au masculin singulier.|http://fr.wikipedia.org/wiki/Accord_du_participe_pass%C3%A9_en_fran%C3%A7ais

TEST: Il a {{prit}} le train.
TEST: Les élèves lui ont {{données}}.
TEST: Les élèves lui ont {{donnés}}.
TEST: Les élèves lui ont {{donnée}}.
TEST: Nous lui avons {{donnée}} un cadeau.
TEST: Vous lui avez {{donnés}} un cadeau.
TEST: Ils leur ont {{données}} un cadeau.
TEST: ils avaient, en ce temps-là, déjà {{perdus}} leurs illusions
TEST: Nous l’avons {{mangés}}.
TEST: Nous l’avons {{mangées}}.
TEST: Ils ne me l’ont pas {{donnés}}
TEST: Les élèves m’ont {{écoutés}}.
TEST: Les élèves t’ont de temps en temps {{écoutées}}.
TEST: Les élèves ne m’ont pas {{écoutés}}.
TEST: Les élèves ne m’ont pas {{écoutées}}.
TEST: Nous ne t’avons pas {{écoutés}}.
TEST: Nous ne t’avons pas {{écoutées}}.














TEST: Avoir {{instruite}} notre mère
TEST: Après avoir {{baissés}} nos tarifs
TEST: Je viendrai, après avoir vraiment {{écoutée}} le prof.
TEST: Alexandre aujourd’hui nous a {{quitté}}
TEST: Mes joueurs, je les ai fait reposer
TEST: Mes joueurs, je les ai fait se reposer
TEST: Il nous avait dit que…
TEST: Elle avait {{pose}} son tricot                                              ->> posé
TEST: Vous l’avez {{trouvez}}.                                                    ->> trouvé
TEST: Il a {{donner}} sa vie pour elle.                                           ->> donné
TEST: Le maire a {{créée}} un risque.
TEST: nous avions quelque peu {{tempérés}} leurs ardeurs


## avoir avec participe passé
__[i]/ppas(ppas_m_t_l_avoir)__
    [lmt]’(?:en +|y +|)({avoir}) +({w_3}) @@2,$
    <<- morph(\1, ">avoir/", False) and morphex(\2, ":(?:Y|[123][sp])", ":[QGWMX]")
        and not re.search(r"(?i)^t’as +envie", \0)



    -2>> =suggVerbPpas(@, ":m:s")                                                                   # Confusion : employez un participe passé.

TEST: m’avoir {{terminer}}.
TEST: il m’a {{souffler}} la bonne réponse.
TEST: elle t’en a {{parle}}.
TEST: c’est vous qui m’avez {{convertit}}.
TEST: parce que t’as envie que je le fasse
















!!
!!
!!!! COD précédant que                                                                            !!
!!
!!

................................................................................
TEST: Quiconque {{pensez}} s’en sortir se trompait lourdement.
TEST: Il voulut punir quiconque s’y {{adonnaient}}.
TEST: quiconque issu de la gauche n’a aucune chance.


__[i]/conj(conj_ce)__
    (ce) +({w_1})  @@0,$
    <<- morphex(\2, ":V", ":(?:N|A|3s|P|Q|G|V0e.*:3p)")
    -2>> =suggVerb(@, ":3s")                                 # Conjugaison erronée. Accord avec « \1 ». Le verbe devrait être à la 3ᵉ personne du singulier.











__[i]/conj(conj_celui_celle_qui)__
    (ce(?:lui|lle|) +qui) +({w_1})  @@0,$
    <<- morphex(\2, ":V", ":(?:3s|P|Q|G)")
    -2>> =suggVerb(@, ":3s")                                 # Conjugaison erronée. Accord avec « \1 ». Le verbe devrait être à la 3ᵉ personne du singulier.

TEST: Ce qui, la plupart du temps, {{donnes}} des maux de tête.







|







 







|







 







|







 







>
>
>
>
>
>
>
>
>
>
>







 







<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<







|
|
|
<




|
|
|
<




|
|
|
<
>
|
|

>
>
>
>
>
>
>
>
>



<
<
<
<
<
<
>
>
>
>
>
>
>
>
>



<
<
<
<
<
<
<
<

>


<
<
<
<
>
>
>




|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>
>
>
>
>







 







|



|
|
|
|
|
|
|
|
|
|
|






<

>
>
>
>
>
>


|
<
>
|
|
>
|
|




>
>
>



|
|
|
|
>
|
|





>
>
>
>



|
|
<
|
|


>
>
>


|
<
<
>
>
|
|


>

>
>
>
>
>


|
<
<
<
>
>
|


>
>
>
>


|
<
<
<
>
>
|


<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<






>
>
>
>
>
>
>
>
>
>
>
>
>
>



<
<
<
<
<
<
<
<
<



|
|
|
<
>
>
>
|






>
>


>
>
>
>
>
>
>
>
>
>
>







 







|

>
>
>
>
>
>
>
>
>
>







4635
4636
4637
4638
4639
4640
4641
4642
4643
4644
4645
4646
4647
4648
4649
....
4838
4839
4840
4841
4842
4843
4844
4845
4846
4847
4848
4849
4850
4851
4852
....
4890
4891
4892
4893
4894
4895
4896
4897
4898
4899
4900
4901
4902
4903
4904
.....
12896
12897
12898
12899
12900
12901
12902
12903
12904
12905
12906
12907
12908
12909
12910
12911
12912
12913
12914
12915
12916
12917
12918
12919
12920
.....
13843
13844
13845
13846
13847
13848
13849






















13850
13851
13852
13853
13854
13855
13856
13857
13858
13859

13860
13861
13862
13863
13864
13865
13866

13867
13868
13869
13870
13871
13872
13873

13874
13875
13876
13877
13878
13879
13880
13881
13882
13883
13884
13885
13886
13887
13888
13889






13890
13891
13892
13893
13894
13895
13896
13897
13898
13899
13900
13901








13902
13903
13904
13905




13906
13907
13908
13909
13910
13911
13912
13913
13914
13915
13916
13917
13918
13919
13920
13921
13922
13923
13924
13925
13926
13927
13928
13929
13930
13931
13932
13933
13934
13935
13936
13937
13938
13939
13940
13941
13942
13943
13944
13945
13946
13947
13948
13949
13950
13951
13952
13953
13954
13955
13956
13957
13958
13959
13960
13961
13962
13963
13964
13965
13966
13967
13968
13969
13970
13971
13972
13973
13974
13975
13976
13977
13978
13979
13980
13981
13982
13983
13984
13985
.....
13997
13998
13999
14000
14001
14002
14003
14004
14005
14006
14007
14008
14009
14010
14011
14012
14013
14014
14015
14016
14017
14018
14019
14020
14021
14022
14023
14024

14025
14026
14027
14028
14029
14030
14031
14032
14033
14034

14035
14036
14037
14038
14039
14040
14041
14042
14043
14044
14045
14046
14047
14048
14049
14050
14051
14052
14053
14054
14055
14056
14057
14058
14059
14060
14061
14062
14063
14064
14065
14066
14067
14068
14069
14070
14071

14072
14073
14074
14075
14076
14077
14078
14079
14080
14081


14082
14083
14084
14085
14086
14087
14088
14089
14090
14091
14092
14093
14094
14095
14096
14097



14098
14099
14100
14101
14102
14103
14104
14105
14106
14107
14108
14109



14110
14111
14112
14113
14114





























14115
14116
14117
14118
14119
14120
14121
14122
14123
14124
14125
14126
14127
14128
14129
14130
14131
14132
14133
14134
14135
14136
14137









14138
14139
14140
14141
14142
14143

14144
14145
14146
14147
14148
14149
14150
14151
14152
14153
14154
14155
14156
14157
14158
14159
14160
14161
14162
14163
14164
14165
14166
14167
14168
14169
14170
14171
14172
14173
14174
14175
.....
15109
15110
15111
15112
15113
15114
15115
15116
15117
15118
15119
15120
15121
15122
15123
15124
15125
15126
15127
15128
15129
15130
15131
15132
15133
15134
TEST: Amenez-moi du papier {{a}} lettres.
TEST: Va acheter du papier {{a}} musique.
TEST: Elle mit du rouge {{a}} lèvres.
TEST: on a besoin d’une remise {{a}} plat.
TEST: passe-moi mon sac {{a}} dos.
TEST: dans le silo {{a}} grain.
TEST: sa chambre, c’est une vraie soue {{a}} cochons.
TEST: Un tueur {{a}} {{gages}} ne s’y prendrait jamais comme ça.
TEST: Ventes {{a}} domicile insatisfaisantes
TEST: Ce n’est que du vernis {{a}} ongles.
TEST: le vol {{a}} l’étalage est un fléau.
TEST: Il nous faut une {{voix}} de recours.
TEST: c’est une putain d’usine {{a}} gaz.
TEST: ce produit est notre vache {{a}} lait
TEST: ils vont et viennent, toujours {{cotes a cotes}}…
................................................................................
        <<- /conf/ -1>> =\1.replace("ane", "anne")      # Confusion : la cane est la femelle du canard.|https://fr.wiktionary.org/wiki/canne

TEST: Voici ma {{cane}} à pêche.


# ce / se / ceux
__conf_ce_ceux_se!6__
    ce  @:V[123].*:(?:Y|[123][sp])¬:[NAGM]|>(?:devoir|pouvoir|sembler|vouloir)/
        <<- /conf/ not \1.isupper() and \2.islower() and not value(\2, "|faire|")
        -1>> se                                         # Confusion : « \2 » est un verbe. Exemples : ce bâtiment, se perdre.

    ce  [/-il|/-ils|/-elle|/-elles|/-on]
        <<- /conf/ not \1.isupper() and \2.islower()
        -1>> se                                         # Confusion : « \2 » est un verbe. Exemples : ce bâtiment, se perdre.

................................................................................
TEST: {{Se}} sera une fille.
TEST: {{ceux}} seraient des jours heureux
TEST: Pour {{se}} faire, ils sont prêts à tout.
TEST: {{se}} ne peut être ainsi.
TEST: C’est tout {{se}} qu’il y a
TEST: Tout {{se}} que je fais
TEST: tout {{se}} qu’il entend
TEST: {{Ce}} promener est relaxant.
TEST: Il {{ce}} {{sent}} seul
TEST: {{se}} {{train}} est en retard
TEST: {{ceux}} train arrive trop vite.
TEST: {{ceux}} ne doit pas nous faire oublier ce désastre
TEST: qui {{ce}} donne en spectacle.
TEST: {{ce}} prennent-ils pour des experts ?
TEST: les expatriés éloignés ou ceux habitant ici
................................................................................

    >aller de soit
        <<- /conf/ not after(" soit ") -3>> soi             # Confusion.|https://fr.wiktionary.org/wiki/aller_de_soi

TEST: cela ne va pas de {{soit}}.


## Accord et incohérences
__ppas_sont_adj__
    sont  *WORD
        <<- /ppas/ morph(\2, ":[NA]", ":[QWGBMpi]|>(?:légion|nombre|cause)/") and not tag_before(\1, "ce_que")
        -2>> =suggPlur(\2)                                  # Incohérence : “\2” est au singulier. Ou vous confondez « sont » et « son », ou l’accord en nombre est incorrect.
        <<- /ppas/ __else__ and morph(\2, ":V", ":(?:N|A|Q|W|G|3p)") and not tag_before(\1, "ce_que")
        -2>> =suggVerbPpas(\2, ":m:p")                      # Incohérence : “\2” n’est pas un participe passé.

TEST: après avoir mis à jour sont {{profile}}.



!!!! Adverbes après verbe                                                                         !!

# fort
__sgpl_verbe_fort__
    forts
        <<- morph(<1, ":V", ":[AN].*:[me]:[pi]|>(?:être|sembler|devenir|re(?:ster|devenir)|para[îi]tre|appara[îi]tre)/.*:(?:[123]p|P|Q)|>(?:affirmer|trouver|croire|désirer|estime|préférer|penser|imaginer|voir|vouloir|aimer|adorer|souhaiter)/")
................................................................................
TEST: Est-il souvent {{arrivait}} de se tromper ?
TEST: Ne sommes-nous pas {{aveugle}}
TEST: Que se sont-ils dit ?
TEST: Ton rendez-vous arrive bientôt.
TEST: Est-il question de ceci ou de cela ?
TEST: Est-ce former de futurs travailleurs ou bien des citoyens
























!!
!!
!!!! Se croire/considérer/montrer/penser/révéler/savoir/sentir/voir/vouloir + participe passé/adj !!
!!
!!

__ppas_je_me_verbe__
    [je|j’]  ?[ne|n’]¿  [me|m’]  ?[en|y]¿  [>montrer|>penser|>révéler|>savoir|>sentir|>voir|>vouloir]  @:[NA].*:p¬:(?:[GWYsi]|V0)
        <<- /ppas/ --1>> =suggSing(\-1)                                 # Accord avec le sujet “\1” : “\-1” devrait être au singulier.


TEST: je me savais {{implacables}} avec eux


__ppas_tu_te_verbe__
    tu  ?[ne|n’]¿  [te|t’]  ?[en|y]¿  [>montrer|>penser|>révéler|>savoir|>sentir|>voir|>vouloir]  @:[NA].*:p¬:(?:[GWYsi]|V0)
        <<- /ppas/ --1>> =suggSing(\-1)                                 # Accord avec le sujet “tu” : “\-1” devrait être au singulier.


TEST: quand tu te montres {{infaillibles}}


__ppas_3sg_mas_se_verbe__
    [il|quiconque]  ?[ne|n’]¿  [se|s’]  ?[en|y]¿  [>montrer|>penser|>révéler|>savoir|>sentir|>voir|>vouloir]  @:[NA].*:[pf]¬:(?:G|W|V0|:[me]:[si])
        <<- /ppas/ --1>> =suggMasSing(\-1)                              # Accord avec le sujet “\1” : “\-1” devrait être au masculin singulier.


    [lui|ça|ceci|cela|celui-ci|celui-là]  ?[ne|n’]¿  [se|s’]  ?[en|y]¿  [>montrer|>penser|>révéler|>savoir|>sentir|>voir|>vouloir]  @:[NA].*:[pf]¬:(?:G|W|V0|:[me]:[si])
        <<- /ppas/ not morph(<1, ":[RV]|>de/") --1>> =suggMasSing(\-1)  # Accord avec le sujet “\1” : “\-1” devrait être au masculin singulier.

    ([lui|ça|ceci|cela|ce|c’|ç’|celui|celui-ci|celui-là])  qui  ?[ne|n’]¿  [se|s’]  ?[en|y]¿  ([>montrer|>penser|>révéler|>savoir|>sentir|>voir|>vouloir])  @:[NA].*:[pf]¬:(?:G|W|V0|:[me]:[si])
        <<- /ppas/ morph(\2, ":[123]s") --1>> =suggMasSing(\-1)         # Accord avec le sujet “\1” : “\-1” devrait être au masculin singulier.

    lequel  ?[ne|n’]¿  [se|s’]  ?[en|y]¿  [>montrer|>penser|>révéler|>savoir|>sentir|>voir|>vouloir]  @:[NA].*:[pf]¬:(?:G|W|V0|:[me]:[si])
        <<- /ppas/ not morph(<1, ":R") --1>> =suggMasSing(\-1)          # Accord avec le sujet “\1” : “\-1” devrait être au masculin singulier.

TEST: il se révéla totalement {{incapables}} d’y parvenir.
TEST: ceci se veut {{différents}} des autres.
TEST: celui-là qui ne se montre jamais {{reconnaissants}}
TEST: lequel se veut {{imbattables}} ?








__ppas_3sg_fem_se_verbe__
    [elle|celle-ci|celle-là]  ?[ne|n’]¿  [se|s’]  ?[en|y]¿  [>montrer|>penser|>révéler|>savoir|>sentir|>voir|>vouloir]  @:[NA].*:[pm]¬:(?:G|W|V0|:[fe]:[si])
        <<- /ppas/ not morph(<1, ":[RV]|>de/") --1>> =suggFemSing(\-1)  # Accord avec le sujet “\1” : “\-1” devrait être au féminin singulier.

    ([elle|celle|celle-ci|celle-là])  qui  ?[ne|n’]¿  [se|s’]  ?[en|y]¿  ([>montrer|>penser|>révéler|>savoir|>sentir|>voir|>vouloir])  @:[NA].*:[pm]¬:(?:G|W|V0|:[fe]:[si])
        <<- /ppas/ morph(\2, ":[123]s") --1>> =suggFemSing(\-1)         # Accord avec le sujet “\1” : “\-1” devrait être au féminin singulier.

    laquelle  ?[ne|n’]¿  [se|s’]  ?[en|y]¿  [>montrer|>penser|>révéler|>savoir|>sentir|>voir|>vouloir]  @:[NA].*:[pm]¬:(?:G|W|V0|:[fe]:[si])
        <<- /ppas/ not morph(<1, ":R|>de/") --1>> =suggFemSing(\-1)     # Accord avec le sujet “\1” : “\-1” devrait être au féminin singulier.

TEST: Elle se sait plus {{fortes}} qu’eux tous.
TEST: elle se vit {{abandonné}}








TEST: à celle qui se révélera {{attentif}} à tous ces problèmes.
TEST: laquelle ne se sentit {{légitimes}} malgré ses compétences dans ce domaine.






__ppas_1pl_nous_verbe__
    nous  ?[ne|n’]¿  nous  ([>montrer|>penser|>révéler|>savoir|>sentir|>voir|>vouloir])  @:[NA].*:s¬:(?:[GWpi]|V0)
        <<- /ppas/ morph(\1, ":1p") --1>> =suggPlur(\-1)                # Accord avec le sujet “nous” : “\-1” devrait être au pluriel.

TEST: nous nous pensions {{invincible}} jusqu’au jour où tout a basculé.


__ppas_3pl_mas_se_verbe__
    ils  ?[ne|n’]¿  [se|s’]  ?[en|y]¿  [>montrer|>penser|>révéler|>savoir|>sentir|>voir|>vouloir]  @:[NA].*:[sf]¬:(?:G|W|V0|:[me]:[pi])
        <<- /ppas/ --1>> =suggMasPlur(\-1)                              # Accord avec le sujet “\1” : “\-1” devrait être au masculin singulier.

    [ceux-ci|ceux-là]  ?[ne|n’]¿  [se|s’]  ?[en|y]¿  [>montrer|>penser|>révéler|>savoir|>sentir|>voir|>vouloir]  @:[NA].*:[sf]¬:(?:G|W|V0|:[me]:[pi])
        <<- /ppas/ not morph(<1, ":[RV]|>de/") --1>> =suggMasPlur(\-1)  # Accord avec le sujet “\1” : “\-1” devrait être au masculin singulier.

    ([eux|ceux|ceux-ci|ceux-là])  qui  ?[ne|n’]¿  [se|s’]  ?[en|y]¿  ([>montrer|>penser|>révéler|>savoir|>sentir|>voir|>vouloir])  @:[NA].*:[sf]¬:(?:G|W|V0|:[me]:[pi])
        <<- /ppas/ morph(\2, ":3p") --1>> =suggMasPlur(\-1)             # Accord avec le sujet “\1” : “\-1” devrait être au masculin singulier.

    lesquels  ?[ne|n’]¿  [se|s’]  ?[en|y]¿  [>montrer|>penser|>révéler|>savoir|>sentir|>voir|>vouloir]  @:[NA].*:[sf]¬:(?:G|W|V0|:[me]:[pi])
        <<- /ppas/ not morph(<1, ":R") --1>> =suggMasPlur(\-1)          # Accord avec le sujet “\1” : “\-1” devrait être au masculin singulier.

TEST: ils se montrent {{exigeantes}}
TEST: ceux-ci se surent {{espionné}} par les agents secrets de l’ennemi.
TEST: agissons eux qui se montrent tellement {{arrogantes}} qu’ils méritent une petite leçon.
TEST: lesquels se pensent encore {{anonyme}}


__ppas_3pl_fem_se_verbe__
    [elles|celles-ci|celles-là]  ?[ne|n’]¿  [se|s’]  ?[en|y]¿  [>montrer|>penser|>révéler|>savoir|>sentir|>voir|>vouloir]  @:[NA].*:[sm]¬:(?:G|W|V0|:[fe]:[pi])
        <<- /ppas/ not morph(<1, ":[RV]|>de/") --1>> =suggFemPlur(\-1)  # Accord avec le sujet “\1” : “\-1” devrait être au féminin singulier.

    ([elles|celles|celles-ci|celles-là])  qui  ?[ne|n’]¿  [se|s’]  ?[en|y]¿  ([>montrer|>penser|>révéler|>savoir|>sentir|>voir|>vouloir])  @:[NA].*:[sm]¬:(?:G|W|V0|:[fe]:[pi])
        <<- /ppas/ morph(\2, ":3p") --1>> =suggFemPlur(\-1)             # Accord avec le sujet “\1” : “\-1” devrait être au féminin singulier.

    lesquelles  ?[ne|n’]¿  [se|s’]  ?[en|y]¿  [>montrer|>penser|>révéler|>savoir|>sentir|>voir|>vouloir]  @:[NA].*:[sm]¬:(?:G|W|V0|:[fe]:[pi])
        <<- /ppas/ not morph(<1, ":R|>de/") --1>> =suggFemPlur(\-1)     # Accord avec le sujet “\1” : “\-1” devrait être au féminin singulier.

TEST: elles se sentent {{perdu}}
TEST: contre celles qui se veulent {{ignorante}} des réalités.
TEST: Lesquelles s’y montraient {{dure}}.


__ppas_le_verbe_pensée__
    le [>trouver|>considérer|>croire|>rendre|voilà]  *WORD
        <<- /ppas/ morph(\3, ":[AQ].*:(?:[me]:p|f)", ":(?:G|Y|V0|[AQ].*:m:[is])") and not (morph(\2, ":Y") and morph(\3, ":3s"))
        -3>> =suggMasSing(\3)                                                       # Accord avec le COD “le” : « \3 » doit être au masculin singulier.

__ppas_la_verbe_pensée__
    la [>trouver|>considérer|>croire|>rendre|voilà]  *WORD
        <<- /ppas/ morph(\3, ":[AQ].*:(?:[fe]:p|m)", ":(?:G|Y|V0|[AQ]:f:[is])") and not (morph(\2, ":Y") and morph(\2, ":3s"))
        -3>> =suggFemSing(\3)                                                       # Accord avec le COD “la” : « \2 » doit être au féminin singulier.

__ppas_les_verbe_pensée__
    les [>trouver|>considérer|>croire|>rendre|voilà]  *WORD
        <<- /ppas/ morph(\3, ":[AQ].*:s", ":(?:G|Y|V0|[AQ].*:[ip])") and not (morph(\2, ":Y") and morph(\3, ":3s"))
        -3>> =suggPlur(\3)                                                          # Accord avec le COD “les” : « \2 » doit être au pluriel.

__ppas_me_te_verbe_pensée__
    [me|te] [>trouver|>considérer|>croire|>rendre|voilà]  *WORD
        <<- /ppas/ morph(\3, ":[AQ].*:p", ":(?:G|Y|V0|[AQ].*:[is])") and not (morph(\2, ":Y") and morph(\3, ":3s"))
        -3>> =suggSing(\3)                                                          # Accord avec le pronom “\1” : « \3 » doit être au singulier.

__ppas_se_verbe_pensée__
    se [>trouver|>considérer|>croire|>rendre]  *WORD
        <<- /ppas/ morph(\2, ":3s") and morph(\3, ":[AQ].*:p", ":(?:G|Y|V0|[AQ].*:[is])") and not (morph(\2, ":Y") and morph(\3, ":3s"))
        -3>> =suggSing(\3)                                                          # Accord avec le pronom “se” (le verbe étant au singulier) : « \3 » doit être au singulier.
        <<- /ppas/ __else__ and morph(\2, ":3p") and morph(\3, ":[AQ].*:s", ":(?:G|Y|V0|[AQ].*:[ip])") and not (morph(\2, ":Y") and morph(\3, ":3s"))
        -3>> =suggPlur(\3)                                                          # Accord avec le pronom “se” (le verbe étant au pluriel) : « \3 » doit être au pluriel.

__ppas_nous_verbe_pensée__
    nous [>trouver|>considérer|>croire|>rendre|voilà]  *WORD
        <<- /ppas/ ( not morph(\2, ":1p") or (morph(\2, ":1p") and value(<1, "|nous|ne|")) )
            and morph(\3, ":[AQ].*:s", ":(?:G|Y|V0|[AQ].*:[ip])") and not (morph(\2, ":Y") and morph(\3, ":3s"))
        -3>> =suggPlur(\3)                                                          # Accord avec le pronom “nous” : « \3 » doit être au pluriel.

TEST: ces hommes le rendent {{dingues}}
TEST: Il me considère {{stupides}}
TEST: Elle nous trouve {{stupide}}
TEST: Je les crois {{capable}} du pire
TEST: la voilà {{perdu}}
TEST: la voilà {{forcé}} à abandonner
................................................................................
TEST: mais les considérer uniquement ainsi fait perdre la signification politique de leur geste.
TEST: nous considérer ainsi fait le lit de la haine…



!!
!!
!!!! Participes passés après “avoir”                                                              !!
!!
!!

__immu_les_avoir_fait_vinfi__
    les >avoir fait ?[me|m’|te|t’|se|s’|nous|vous|leur]¿ @:Y
        <<- %3>>


__ppas_pronom_avoir__
    [je|j’|tu|il|elle|on|ils|elles|et]  ?[ne|n’]¿  ?[lui|leur]¿  >avoir  *WORD
    <<- /ppas/ not value(\-1, "|barre|confiance|cours|envie|peine|prise|crainte|cure|affaire|hâte|force|recours|")
        and value(<1, "|<start>|,|comme|comment|et|lorsque|mais|où|ou|quand|qui|pourquoi|puisque|quoique|si|sinon|")
        and \-1.islower() and morph(\-1, ":(?:[123][sp]|Q.*:[fp])", ":(?:G|W|Q.*:m:[si])")
    --1>> =suggMasSing(\-1)
    # Ce verbe devrait être un participe passé au masculin singulier.|http://fr.wikipedia.org/wiki/Accord_du_participe_pass%C3%A9_en_fran%C3%A7ais

TEST: ils leur avaient {{donnés}} du fil à retordre.
TEST: il a {{affronte}} une bande de voleurs de bétail
TEST: J’ai {{mettrai}} du sel.                                                    ->> mis
TEST: J’ai {{lut}} son journal.                                                   ->> lu

TEST: Si j’avais {{sut}}.
TEST: Il a {{prit}} le train.
TEST: Il a {{donner}} sa vie pour elle.                                           ->> donné
TEST: Ils leur ont {{données}} un cadeau.
TEST: ils avaient, en ce temps-là, déjà {{perdus}} leurs illusions
TEST: Elle avait {{pose}} son tricot                                              ->> posé
TEST: Ils avaient barre sur lui.


__ppas_nous_vous_avoir__

    [nous|vous]  ?[ne|n’]¿  ?[lui|leur]¿  >avoir  *WORD
    <<- /ppas/ morph(\1, ":Os")
        and not value(\-1, "|barre|confiance|cours|envie|peine|prise|crainte|cure|affaire|hâte|force|recours|")
        and value(<1, "|<start>|,|comme|comment|et|lorsque|mais|où|ou|quand|qui|pourquoi|puisque|quoique|si|sinon|")
        and not \-1.isupper() and morph(\-1, ":(?:[123][sp]|Q.*:[fp])", ":(?:G|W|Q.*:m:[si])")
    --1>> =suggMasSing(\-1)
    # Ce verbe devrait être un participe passé au masculin singulier.|http://fr.wikipedia.org/wiki/Accord_du_participe_pass%C3%A9_en_fran%C3%A7ais

TEST: Nous avons {{donne}} tout notre potentiel.
TEST: mais nous avons {{était}} surpris par cette annonce.
TEST: Nous lui avons {{donnée}} un cadeau.
TEST: Vous lui avez {{donnés}} un cadeau.
TEST: nous avions quelque peu {{tempérés}} leurs ardeurs
TEST: D’un côté, le modèle occidental, […], nous a libérés de […]


__ppas_det_nom_avoir__
    [un|une|des|le|la|l’|les|ce|cet|cette|ces|mon|ton|son|ma|ta|sa|mes|tes|ses|notre|votre|nos|vos|leur|leurs|certains|certaines|quelques|plusieurs]  *WORD  ?[ne|n’]¿  ?[lui|leur]¿  >avoir  *WORD
    <<- /ppas/ not value(\-1, "|barre|confiance|cours|envie|peine|prise|crainte|cure|affaire|hâte|force|recours|")
        and value(<1, "|<start>|,|comme|comment|et|lorsque|mais|où|ou|quand|qui|pourquoi|puisque|quoique|si|sinon|")
        and morph(\2, ":[NA]", ":G") and not \-1.isupper() and morph(\-1, ":(?:[123][sp]|Q.*:[fp])", ":(?:G|W|Q.*:m:[si])")
        and not (\-2 == "avions" and morph(\-1, ":3[sp]"))
    --1>> =suggMasSing(\-1)
    # Ce verbe devrait être un participe passé au masculin singulier.|http://fr.wikipedia.org/wiki/Accord_du_participe_pass%C3%A9_en_fran%C3%A7ais

TEST: Les femmes lui avait {{conseillées}} de se taire.
TEST: le mur avait {{était}} détruit
TEST: Lorsque les femmes ont {{apprit}} la nouvelle…
TEST: Les élèves lui ont {{données}}.
TEST: Les élèves lui ont {{donnés}} une réponse.
TEST: Les élèves leur ont {{donnée}} ça.
TEST: Le maire a {{créée}} un risque.
TEST: Certains les ont d’abord jugés trop lents.


__ppas_les_avoir__
    les  >avoir  @:V[0-3]..t.*:Q.*:s¬:[GWpi]

        <<- /ppas/ morph(\2, ":V0a") -3>> =suggPlur(\3)
        # Accord avec le COD “les” : Le participe passé “\2” devrait être au pluriel (et accordé en genre).|http://fr.wikipedia.org/wiki/Accord_du_participe_pass%C3%A9_en_fran%C3%A7ais

TEST: je les avais {{trompé}} avec mon baratin.
TEST: les avoirs reçus ne couvrent pas toutes les dépenses.
TEST: Mes joueurs, je les ai fait reposer
TEST: Mes joueurs, je les ai fait se reposer


__ppas_nous_avoir__


    nous  >avoir  *WORD  <end>
        <<- /ppas/ morph(\2, ":V0a", ":1p") and morph(\3, ":V[0-3]..t_.*:Q.*:s", ":[GWpi]") and morph(<1, ":(?:M|Os|N)", ":R") and not value(<2, "|que|qu’|qu|")
        -3>> =suggPlur(\3)
        # Accord avec le COD “nous” : Le participe passé “\3” devrait être au pluriel (et accordé en genre).|http://fr.wikipedia.org/wiki/Accord_du_participe_pass%C3%A9_en_fran%C3%A7ais

TEST: Ces maisons nous avaient {{subjugué}}.
TEST: Alexandre aujourd’hui nous a {{quitté}}
TEST: C’est mot pour mot un script qu’on nous a filé.
TEST: Nous avons donné.
TEST: ces cons nous ont donnés.
TEST: ils nous ont vendus.
TEST: elles nous ont dit : “c’est la fin”.
TEST: Il nous avait dit que…


__ppas_l_avoir__



    l’ >avoir @:V[0-3]..t.*:Q.*:p¬:[GWsi]
        <<- /ppas/ -3>> =suggSing(\3)
        # Accord avec “l’” : le participe passé “\3” devrait être au singulier (et accordé en genre).|http://fr.wikipedia.org/wiki/Accord_du_participe_pass%C3%A9_en_fran%C3%A7ais

TEST: ils l’avaient {{retrouvés}}.
TEST: Vous l’avez {{trouvez}}.                                                    ->> trouvé
TEST: Nous l’avons {{mangés}}.
TEST: Nous l’avons {{mangées}}.
TEST: Ils ne me l’ont pas {{donnés}}


__ppas_m_t_avoir__



    [m’|t’] >avoir @:V[0-3]..t_.*:Q.*:p¬:[GWsi]
        <<- /ppas/ not before(r"\bque? ") -3>> =suggSing(\3)
        # Accord avec “\1”. S’il s’agit d’un COD, le participe passé “\3” devrait être au singulier (et accordé en genre).|http://fr.wikipedia.org/wiki/Accord_du_participe_pass%C3%A9_en_fran%C3%A7ais

TEST: ces livres m’avaient {{ennuyés}} au-delà du dicible.





























TEST: Les élèves m’ont {{écoutés}}.
TEST: Les élèves t’ont de temps en temps {{écoutées}}.
TEST: Les élèves ne m’ont pas {{écoutés}}.
TEST: Les élèves ne m’ont pas {{écoutées}}.
TEST: Nous ne t’avons pas {{écoutés}}.
TEST: Nous ne t’avons pas {{écoutées}}.


__ppas_qui_avoir__
    qui  ?[ne|n’]¿  ?[lui|leur]¿  >avoir  @:Q.*:(?:f|m:p)¬:m:[si]
        <<- /ppas/ --1>> =suggMasSing(\-1)                  # Le participe passé devrait être au masculin singulier.|http://fr.wikipedia.org/wiki/Accord_du_participe_pass%C3%A9_en_fran%C3%A7ais

TEST: des hommes, des femmes, des enfants qui ne leur avaient {{faits}} que du bien.


__ppas_avoir_ppas_mas_sing__
    [<start>|,|après|pour|pourquoi|quand|que|qu’|qu|sans]  avoir  @:Q.*:[fp]¬:m:[si]
        <<- /ppas/ not value(\3, "|confiance|cours|envie|peine|prise|crainte|cure|affaire|hâte|force|recours|")
        -3>> =suggMasSing(\3)                               # Le participe passé devrait être au masculin singulier.|http://fr.wikipedia.org/wiki/Accord_du_participe_pass%C3%A9_en_fran%C3%A7ais

TEST: Avoir {{instruite}} notre mère
TEST: Après avoir {{baissés}} nos tarifs
TEST: Je viendrai, après avoir vraiment {{écoutée}} le prof.











## avoir avec participe passé
__ppas_m_t_l_avoir__
    [l’|m’]  ?[en|y]¿  >avoir  @:(?:Y|[123][sp])¬:[QGWMX]
        <<- /ppas/ --1>> =suggVerbPpas(\-1, ":m:s")         # Confusion : employez un participe passé.


    t’  ?[en|y]¿  >avoir  @:(?:Y|[123][sp])¬:[QGWMX]
        <<- /ppas/ not value(\-1, "|confiance|cours|envie|peine|prise|crainte|cure|affaire|hâte|force|recours|")
        --1>> =suggVerbPpas(\-1, ":m:s")                    # Confusion : employez un participe passé.

TEST: m’avoir {{terminer}}.
TEST: il m’a {{souffler}} la bonne réponse.
TEST: elle t’en a {{parle}}.
TEST: c’est vous qui m’avez {{convertit}}.
TEST: parce que t’as envie que je le fasse
TEST: t’avais confiance
TEST: t’en as envie ?



@@@@
@@@@
@@@@
@@@@
@@@@END_GRAPH                                                                                      _
@@@@
@@@@
@@@@
@@@@


!!
!!
!!!! COD précédant que                                                                            !!
!!
!!

................................................................................
TEST: Quiconque {{pensez}} s’en sortir se trompait lourdement.
TEST: Il voulut punir quiconque s’y {{adonnaient}}.
TEST: quiconque issu de la gauche n’a aucune chance.


__[i]/conj(conj_ce)__
    (ce) +({w_1})  @@0,$
    <<- morphex(\2, ">(?:devoir|pouvoir|vouloir|savoir|être)/:V", ":(?:N|A|3s|P|Q|G|V0e.*:3p)")
    -2>> =suggVerb(@, ":3s")                                 # Conjugaison erronée. Accord avec « \1 ». Le verbe devrait être à la 3ᵉ personne du singulier.

TEST: Ce peut être un chien ou un chat.
TEST: ce ne peut être aussi stupide.
TEST: ce dut être un cauchemar.
TEST: ce devra être un véritable expert pour accomplir une tâche aussi difficile.
TEST: ce voudrait être le plus grand bal de tous les temps.
TEST: ce ne pourrait être une chose aussi banale.
TEST: ce serait une honte d’échouer une fois de plus à un test aussi élémentaire.
TEST: ce ne saurait être cet homme…


__[i]/conj(conj_celui_celle_qui)__
    (ce(?:lui|lle|) +qui) +({w_1})  @@0,$
    <<- morphex(\2, ":V", ":(?:3s|P|Q|G)")
    -2>> =suggVerb(@, ":3s")                                 # Conjugaison erronée. Accord avec « \1 ». Le verbe devrait être à la 3ᵉ personne du singulier.

TEST: Ce qui, la plupart du temps, {{donnes}} des maux de tête.