Grammalecte  Changes On Branch 19d5e77970299b32

Changes In Branch fr_killtricks Through [19d5e77970] Excluding Merge-Ins

This is equivalent to a diff from b542d84d98 to 19d5e77970

2017-09-12
08:54
merge trunk check-in: c51ddd5524 user: olr tags: fr_killtricks
08:41
[fx] WebExt: mode debug for simple test check-in: 3ac8707213 user: olr tags: trunk, fx
01:59
merge trunk check-in: 19d5e77970 user: olr tags: fr_killtricks
01:20
[fr] phonet_simil: 3 entrées check-in: b542d84d98 user: olr tags: trunk, fr
2017-09-11
13:01
[fx] WebExt: text formatter: change color of icons “selected” check-in: 334205392d user: olr tags: trunk, fx
2017-06-20
18:41
[fr] màj: conjugaisons, suppression des pronoms et de “ne” (2) check-in: 7c28c4de28 user: olr tags: fr, fr_killtricks

Modified gc_lang/fr/rules.grx from [56614b8022] to [ac186d9af6].

3998
3999
4000
4001
4002
4003
4004
4005
4006
4007





4008
4009
4010
4011
4012
4013

4014
4015
4016
4017
4018
4019
4020
4021
4022
4023

4024
4025
4026
4027
4028
4029
4030
3998
3999
4000
4001
4002
4003
4004



4005
4006
4007
4008
4009
4010
4011
4012
4013
4014

4015
4016
4017
4018
4019
4020
4021
4022
4023
4024

4025
4026
4027
4028
4029
4030
4031
4032







-
-
-
+
+
+
+
+





-
+









-
+







TEST: Quelle chance tu as eue de voir ruiné ce connard.
TEST: l’immobilier a été ces dernières années l’investissement le plus rentable (voir graphique ci-dessous)
TEST: elles sont pas mal ainsi, voire élégantes pourrait-on dire.
TEST: il y en a peu, voire très peu.
TEST: car elles pénètrent dans les poumons voire le système sanguin.
TEST: des enfants malades, qui préfèrent souvent voir Dark Vador que des vieux clowns un peu flippants.



#### Pronoms
!!
!!
!!!! Pronoms + incohérences                                                                         
!!
!!
__[i](p_m_enfin)__      m’enfin <<- ~>> *

__[i]/conf(conf_j_y_en_qqch)__
    (j’(?:en +|y +|))({w_1})  @@0,$
    <<- morphex(\2, ":", ":(?:[123][sp]|O[onw])")
    -2>> =suggSimil(\2, ":1s")                                                               # Incohérence avec « \1 » : « \2 » devrait être un verbe.
    -2>> =suggSimil(\2, ":1s")                                                                      # Incohérence avec « \1 » : « \2 » devrait être un verbe.
__[i]/conf(conf_ne_qqch)__
    (n(?:e +|’))({w_1})  @@0,$
    <<- morphex(\2, ":", ":(?:[123][sp]|Y|P|O[onw]|X)|>(?:[lmtsn]|surtout|guère|presque|même|tout|parfois|vraiment|réellement) ") and not re.search("(?i)-(?:ils?|elles?|[nv]ous|je|tu|on|ce)$", \2)
    -2>> =suggSimil(\2, ":(?:[123][sp]|Oo|Y)")                                                      # Incohérence avec « \1 » : « \2 » devrait être un verbe ou un pronom personnel objet.
__[i]/conf(conf_n_y_en_qqch)__
    (n’(?:en|y)) ({w_1})  @@0,$
    <<- morphex(\2, ":", ":(?:[123][sp]|Y|P|O[onw]|X)") and not re.search("(?i)-(?:ils?|elles?|[nv]ous|je|tu|on|ce)$", \2)
    -2>> =suggSimil(\2, ":(?:[123][sp]|Y)")                                                         # Incohérence avec « \1 » : « \2 » devrait être un verbe.
__[i]/conf(conf_ne_pronom_qqch)__
    (ne l(?:es? +|a +|’))({w_1})  @@0,$
    (ne (?:l(?:es? +|eur +|a +|’)|[nv]ous))({w_1})  @@0,$
    <<- morphex(\2, ":", ":(?:[123][sp]|Y|P|O[onw]|X)") and not re.search("(?i)-(?:ils?|elles?|[nv]ous|je|tu|on|ce)$", \2)
    -2>> =suggSimil(\2, ":(?:[123][sp]|Y)")                                                         # Incohérence avec « \1 » : « \2 » devrait être un verbe.
__[i]/conf(conf_me_te_se_qqch)__
    ([mts]e +(?:les? |la |l’|))(?!voi(?:là|ci))({w_1})  @@0,$
    <<- not re.search("(?i)^se que?", \0)
    and morphex(\2, ":", ":(?:[123][sp]|Y|P|Oo)|>[lmts] ") and not re.search("(?i)-(?:ils?|elles?|[nv]ous|je|tu|on|ce)$", \2)
    -2>> =suggSimil(\2, ":(?:[123][sp]|Oo|Y)")                                                      # Incohérence avec « \1 » : « \2 » devrait être un verbe ou un pronom personnel objet.
4065
4066
4067
4068
4069
4070
4071

4072
4073
4074
4075
4076
4077
4078
4067
4068
4069
4070
4071
4072
4073
4074
4075
4076
4077
4078
4079
4080
4081







+







TEST: je t’en {{parlé}}
TEST: M’enfin, c’est absurde
TEST: il est normal de ne presque pas payer des gens qui effectuent un travail
TEST: j’ai l’impression de ne même pas savoir ce qu’est un « juif français ».
TEST: C’que j’comprends, c’est qu’il y a des limites à ce qu’on peut supporter.
TEST: la tentation pour certains médias de ne tout simplement pas rémunérer notre travail si celui-ci n’est finalement pas publié.
TEST: Ne parfois pas être celui qui sabote l’ambiance.


!!
!!
!!!! Formes verbales sans sujet                                                                     
!!
!!

4945
4946
4947
4948
4949
4950
4951




4952
4953
4954
4955
4956
4957
4958
4948
4949
4950
4951
4952
4953
4954
4955
4956
4957
4958
4959
4960
4961
4962
4963
4964
4965







+
+
+
+







    <<- not morph(\2, ":A", False) ~1>> *
__[i](p_verbe_pronom_être)__
    (d[eouû]\w+|cr[ouû]\w+|pens\w+|imagin\w+|estim\w+) (l(?:eur|ui)|nous|vous) être @@0,w
    <<- morph(\1, ">(?:croire|devoir|estimer|imaginer|penser) ") ~2>> *
__[i](p_en_partie)__
    (en partie) ({w_2}) @@0,$
    <<- morph(\1, ":(?:R|D|[123]s|X)", False) ~1>> *
__[i](p_en_plus)__
    en plus
    <<- morph(word(1), ":A", False, True) ~>> en
    <<- __else__ ~>> *
__[i](p_en_quelques_tps1)__
    (en quelques (?:années|décennies|semaines|heures|minutes)) +({w_2}) @@0,$
    <<- not morph(\2, ":[AQ]:[ef]:[si]", False) ~1>> *
__[i](p_en_quelques_tps2)__
    (en quelques (?:jours|mois|trimestres|semestres|siècles|millénaires)) +({w_2}) @@0,$
    <<- not morph(\2, ":[AQ]:[em]:[si]", False) ~1>> *
__[i](p_entre_pronom_et_pronom)__
9917
9918
9919
9920
9921
9922
9923


9924
9925
9926
9927
9928
9929
























9930
9931
9932
9933
9934
9935
9936
9924
9925
9926
9927
9928
9929
9930
9931
9932






9933
9934
9935
9936
9937
9938
9939
9940
9941
9942
9943
9944
9945
9946
9947
9948
9949
9950
9951
9952
9953
9954
9955
9956
9957
9958
9959
9960
9961
9962
9963







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







!!!
!!!
!!! Processeur avant impératif                                                                      
!!!
!!!

__<i>(p_n_importe_qui_quoi)__       n(’)importe quo?i @@1 <<- ~1>> `


__<i](p_premier_ne_pro_per_obj1)__  ^ *ne l(?:es?|a) l(?:ui|eur) <<- ~>> >
__<i](p_premier_ne_pro_per_obj2)__  ^ *ne (?:[mt]’|l(?:ui|eur) )en <<- ~>> >
__<i](p_premier_ne_pro_per_obj3)__  ^ *ne (?:[mt]e|[nv]ous) (?:les?|la|en) <<- ~>> >
__<i](p_premier_ne_pro_per_obj4)__  ^ *ne +(?:en|l(?:es?|a|’(?:en|y))|[mt](?:e|’(?:en|y))|[nv]ous) <<- ~>> >
__<i>(p_premier_ne_pro_per_obj5)__  ^ *n’(?:en |y |) <<- ~>> >
__<i>(p_premier_ne_pro_per_obj6)__  ^ *ne (?:l’|) <<- ~>> >
__<i](p_premier_ne_pro_per_obj1)__
    ^( *ne l(?:es?|a) l(?:ui|eur)) ({w_2})  @@0,$
    <<- morph(\2, ":(?:[123][sp]|P)", False) =>> select(\2,":(?:[123][sp]|P)")
    <<- ~1>> *
__<i](p_premier_ne_pro_per_obj2)__
    ^( *ne (?:[mt]’|l(?:ui|eur) )en) ({w_2})  @@0,$
    <<- morph(\2, ":(?:[123][sp]|P)", False) =>> select(\2,":(?:[123][sp]|P)")
    <<- ~1>> *
__<i](p_premier_ne_pro_per_obj3)__
    ^( *ne (?:[mt]e|[nv]ous) (?:les?|la|en)) ({w_2})  @@0,$
    <<- morph(\2, ":(?:[123][sp]|P)", False) =>> select(\2,":(?:[123][sp]|P)")
    <<- ~1>> *
__<i](p_premier_ne_pro_per_obj4)__
    ^( *ne +(?:en|l(?:es?|a|’(?:en|y))|[mt](?:e|’(?:en|y))|[nv]ous)) ({w_2})  @@0,$
    <<- morph(\2, ":(?:[123][sp]|P)", False) =>> select(\2,":(?:[123][sp]|P)")
    <<- ~1>> *
__<i>(p_premier_ne_pro_per_obj5)__
    ^( *n’(?:en |y |))({w_2})  @@0,$
    <<- morph(\2, ":(?:[123][sp]|P)", False) =>> select(\2,":(?:[123][sp]|P)")
    <<- ~1>> *
__<i>(p_premier_ne_pro_per_obj6)__
    ^( *ne (?:l’|))({w_2})  @@0,$
    <<- morph(\2, ":(?:[123][sp]|P)", False) =>> select(\2,":(?:[123][sp]|P)")
    <<- ~1>> *



!!
!!
!!!! Impératif !                                                                                    
!!
9949
9950
9951
9952
9953
9954
9955
9956
9957
9958
9959
9960
9961
9962

9963
9964
9965
9966
9967
9968
9969
9970
9971
9972
9973
9974
9975
9976
9977
9978
9979
9980
9981
9982
9983
9984
9985
9986
9987
9988
9989
9990
9991
9992
9993
9994
9995
9996
9997
9998
9999
10000
10001
10002
10003
10004
10005
10006
10007
10008
10009
10010
10011
10012
10013

10014
10015
10016
10017
10018
10019
10020
10021
10022

10023
10024
10025
10026
10027
10028
10029
10030
10031
10032
10033
9976
9977
9978
9979
9980
9981
9982




9983
9984
9985
9986
9987
9988
9989
9990
9991
9992
9993
9994
9995
9996
9997
9998
9999
10000
10001
10002
10003
10004
10005
10006




10007
10008
10009
10010
10011
10012
10013
10014
10015
10016
10017
10018
10019
10020




10021
10022
10023
10024
10025
10026
10027
10028

10029
10030
10031
10032
10033
10034
10035
10036
10037

10038
10039



10040
10041
10042
10043
10044
10045
10046







-
-
-
-



+




















-
-
-
-














-
-
-
-








-
+








-
+

-
-
-









# verbes du 1er et du 3ᵉ groupe en -e
__[i]/imp(imp_vgroupe1)__
    ^ *(\w+es)(?![- ](?:je|tu|[nv]ous|ils?|elles?|t-ils?|t-elles?))  @@$
    <<- morphex(\1, ":V[13].*:Ip.*:2s", ":[GNAM]")
    -1>> =\1[:-1]                                                                   # S’il s’agit d’un impératif, pas de “s”.
__[i]/imp(imp_ne_vgroupe1)__
    ^ *> +(\w+es)(?![- ](?:je|tu|[nv]ous|ils?|elles?|t-ils?|t-elles?))  @@$
    <<- morphex(\1, ":V[13].*:Ip.*:2s", ":G")
    -1>> =\1[:-1]                                                                   # S’il s’agit d’un impératif, pas de “s”.

TEST: {{Apportes}} ton fric à cet homme.
TEST: N’{{abandonnes}} pas si vite.
TEST: Ne {{demandes}} rien, tais-toi.
TEST: Castres est une belle ville.
TEST: Limoges aussi.


__<i>/imp(imp_allez1)__
    ^ *(allés?), @@* <<- -1>> allez                                         # S’il s’agit d’un impératif, écrivez :
__<i>/imp(imp_allez2)__
    ^ *(allés?) ({w_2}) @@*,$ <<- morph(\2, ":[MYOs]") -1>> allez           # S’il s’agit d’un impératif, écrivez :

TEST: {{Allés}}, on y va !
TEST: — {{Allé}} prendre une cuite.


# verbes du 2ᵉ et du 3ᵉ groupe en -t
__[i]/imp(imp_vgroupe2_vgroupe3_t)__
    ^ *(\w+t)(?![- ](?:je|tu|[nv]ous|ils?|elles?|on|t-ils?|t-elles?))  @@$
    <<- morphex(\1, ":V[23].*:Ip.*:3s", ":[GNA]|>(?:devoir|suffire)") and analyse(\1[:-1]+"s", ":E:2s", False)
    and not (re.search("(?i)^vient$", \1) and after("^ +(?:l[ea]|se |s’)"))
    and not (re.search("(?i)^dit$", \1) and after("^ +[A-ZÉÈÂÎ]"))
    -1>> =\1[:-1]+"s"                                                               # S’il s’agit d’un impératif, la terminaison est “is”, non “it”.
__[i]/imp(imp_ne_vgroupe2_vgroupe3_t)__
    ^ *> +(\w+t)(?![- ](?:je|tu|[nv]ous|ils?|elles?|on|t-ils?|t-elles?))  @@$
    <<- morphex(\1, ":V[23].*:Ip.*:3s", ":G|>(?:devoir|suffire)") and analyse(\1[:-1]+"s", ":E:2s", False)
    -1>> =\1[:-1]+"s"                                                               # S’il s’agit d’un impératif, la terminaison est “is”, non “it”.

TEST: {{Finit}} ton assiette.
TEST: Ne {{pourrit}} pas l’ambiance.
TEST: Suffit de s’en servir.
TEST: Et ne doit pas être rejeté dans les limbes.
TEST: Vient s’ajouter à ce contexte la perception, partagée par beaucoup, du caractère fortement menaçant de l’environnement économique et géopolitique.


# verbes du 3ᵉ groupe en -d
__[i]/imp(imp_vgroupe3_d)__
    ^ *(\w+d)(?![- ](?:je|tu|[nv]ous|ils?|elles?|on|t-ils?|t-elles?))  @@$
    <<- morphex(\1, ":V3.*:Ip.*:3s", ":[GNA]")
    and not (re.search("(?i)^répond$", \1) and after("^ +[A-ZÉÈÂÎ]"))
    -1>> \1s                                                                        # S’il s’agit d’un impératif, ajoutez un “s”.
__[i]/imp(imp_ne_vgroupe3_d)__
    ^ *> +(\w+d)(?![- ](?:je|tu|[nv]ous|ils?|elles?|on|t-ils?|t-elles?))  @@$
    <<- morphex(\1, ":V3.*:Ip.*:3s", ":G")
    -1>> \1s                                                                        # S’il s’agit d’un impératif, ajoutez un “s”.

TEST: {{Prend}} le chemin de droite.
TEST: N’{{attend}} pas qu’elle vienne.
TEST: — Pour ma part, répond P., je crois que tout va bien.


# aller
__[i]/imp(imp_va)__
    ^[ >]*(vas)(?! (?:tu|ils?|elles?|t-ils?|t-elles?))  @@$
    ^ *(vas)(?! (?:tu|ils?|elles?|t-ils?|t-elles?))  @@$
    <<- -1>> va                                                                     # S’il s’agit d’un impératif, pas de “s”.

TEST: {{Vas}} lui mettre une branlée.


# être
__[i]/imp(imp_sois)__
    ^ *(soit) +({w_2})  @@*,$
    <<- morphex(\2, ":A", ":G") and not after(r"\bsoit\b")
    <<- morph(\1, ":V") or (morphex(\2, ":A", ":G") and not after(r"\bsoit\b"))
    -1>> sois                                                                       # S’il s’agit d’un impératif, écrivez « sois ».
__[i]/imp(imp_ne_sois)__
    ^ *> +(soit)  @@$
    <<- -1>> sois                                                                   # S’il s’agit d’un impératif, écrivez « sois ».

TEST: {{Soit}} cohérent avec toi-même.
TEST: Ne {{soit}} pas con.


# avoir
__[i]/imp(imp_aie)__
10189
10190
10191
10192
10193
10194
10195
10196

10197
10198
10199
10200

10201
10202
10203
10204
10205
10206
10207
10208
10209
10210
10211
10212
10213
10214
10215
10216
10217
10218
10219
10220
10221
10222
10223
10224
10225
10226
10227
10228
10229





































































































10230
10231
10232


10233
10234

10235
10236
10237
10238



































10239
10240
10241
10242
10243
10244
10245
10202
10203
10204
10205
10206
10207
10208

10209
10210
10211
10212
10213
10214





























10215
10216
10217
10218
10219
10220
10221
10222
10223
10224
10225
10226
10227
10228
10229
10230
10231
10232
10233
10234
10235
10236
10237
10238
10239
10240
10241
10242
10243
10244
10245
10246
10247
10248
10249
10250
10251
10252
10253
10254
10255
10256
10257
10258
10259
10260
10261
10262
10263
10264
10265
10266
10267
10268
10269
10270
10271
10272
10273
10274
10275
10276
10277
10278
10279
10280
10281
10282
10283
10284
10285
10286
10287
10288
10289
10290
10291
10292
10293
10294
10295
10296
10297
10298
10299
10300
10301
10302
10303
10304
10305
10306
10307
10308
10309
10310
10311
10312
10313
10314
10315



10316
10317


10318




10319
10320
10321
10322
10323
10324
10325
10326
10327
10328
10329
10330
10331
10332
10333
10334
10335
10336
10337
10338
10339
10340
10341
10342
10343
10344
10345
10346
10347
10348
10349
10350
10351
10352
10353
10354
10355
10356
10357
10358
10359
10360







-
+




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







TEST: {{vas y}}, ce n’est pas dangereux
TEST: {{convenez en}}, c’est une belle affaire malgré son prix élevé



!!!
!!!
!!! Processeur: destruction des pronoms qui précèdent un verbe et de l’adverbe de négation “ne”.
!!! Processeur: destruction des pronoms qui précèdent un verbe et de l’adverbe de négation “ne”.    
!!!
!!!

# Brainfuck (ici, prudence !)
__[i](p_pro_per_obj01)__
__[i](p_pro_per_obj01)__    ne +(?:l(?:ui|eur|a|es?)|[mts]e|[nv]ous) +(?:l(?:a|es?|ui|eur)|en|y) <<- ~>> >
__[i](p_pro_per_obj02)__    ne +(?:[mts](?:e|’(?:en|y))|[nv]ous|l(?:es?|a|ui|eur|’(?:en|y))) <<- ~>> >
__[i](p_pro_per_obj03)__    [mts]e +l(?:a|es?) <<- ~>> >
__[i](p_pro_per_obj04)__    [nmsl]’(?:en|y) <<- ~>> >
__[i](p_pro_per_obj05)__    l(?:a|es?) +(?:lui|en) <<- ~>> >
__[i](p_pro_per_obj06)__    lui +(?:la|les?|en|y) <<- not morph(word(-1), ":R", False, True) ~>> >
__[i](p_pro_per_obj07)__    leur +(?:en|y) <<- not morph(word(-1), ":R", False, False) ~>> >
__[i](p_pro_per_obj08)__    (?:je|tu|ils?|on) ([nv]ous(?: la| les?|)|lui) @@$ <<- ~1>> >
__[i](p_pro_per_obj09)__    (?:je|tu|ils?|on) (l(?:es?|a)) ({w_1}) @@w,$
    <<- \1 == "le" and not morph(\2, ":N.*:[me]:[si]") ~1>> >
    <<- \1 == "la" and not morph(\2, ":N.*:[fe]:[si]") ~1>> >
    <<- \1 == "les" and not morph(\2, ":N.*:.:[pi]") ~1>> >
__[i](p_pro_per_obj10)__    (?:elles?|[nv]ous) ([nv]ous(?: la| les?|)|l(?:es?|ui|a)) @@$ <<- not morph(word(-1), ":R", False, False) ~1>> >
__[i](p_pro_per_obj11)__    ce(?:ux|lles?|lui|la|) qui ([nv]ous(?: la| les?|)|l(?:es?|ui|a)) @@$ <<- ~1>> >
__[i](p_pro_per_obj12)__    (?<!’)(en) ({w_2}) @@0,$ <<- morph(\2, ":[123][sp]") ~1>> >
__[i](p_pro_per_obj13)__    (?:tu|il|on) (en) @@3 <<- not morph(word(-1), ":[123]s", False, False) ~1>> >
__[i](p_pro_per_obj14)__    (?<!’)elle (en) @@5 <<- not morph(word(-1), ":(?:[123]s|R)", False, False) ~1>> >
__[i](p_pro_per_obj15)__    (?<!’)elles (en) @@6 <<- not morph(word(-1), ":(?:[123]p|R)", False, False) ~1>> >
__[i](p_pro_per_obj16)__    ils (en) @@4 <<- not morph(word(-1), ":3p", False, False) ~1>> >
__[i](p_pro_per_obj17)__    (?<!’)(y) ({w_2}) @@0,2 <<- morph(\2, ":[123][sp]", False) ~1>> >
__[i](p_pro_per_obj18)__    (le) ({w_2}) @@0,3 <<- morphex(\2, ":(?:[123][sp]|Y)", ":(?:[NAQ].*:[me]:[si]|G|M)") ~1>> >
__[i](p_pro_per_obj19)__    (la) ({w_2}) @@0,3 <<- morphex(\2, ":(?:[123][sp]|Y)", ":(?:[NAQ].*:[fe]:[si]|G|M)") ~1>> >
__[i](p_pro_per_obj20)__    (l’)({w_2}) @@0,2 <<- morphex(\2, ":(?:[123][sp]|Y)", ":(?:[NAQ].*:[si]|G|M)") ~1>> >
__[i](p_pro_per_obj21)__    (leur) ({w_2}) @@0,5 <<- morphex(\2, ":(?:[123][sp]|Y)", ":(?:[NAQ].*:[si]|G|M)") ~1>> >
__[s](p_pro_per_obj22)__    [lL]’a <<- ~>> > a
__[i](p_pro_per_obj23)__    (nous) ({w_2}) @@0,5 <<- morphex(\2, ":(?:[123][sp]|Y)", ":(?:A|G|M|1p)") ~1>> >
__[i](p_pro_per_obj24)__    (vous) ({w_2}) @@0,5 <<- morphex(\2, ":(?:[123][sp]|Y)", ":(?:A|G|M|2p)") ~1>> >
__[i](p_pro_per_obj25)__    (?:à|de) ([nv]ous|lui|les?|en)(?! qui) @@$ <<- ~1>> >
__[i](p_pro_per_obj26)__    (s’)({w4}) @@0,2 <<- morph(\2, ":V", False) ~1>> >
    (ne +(?:l(?:ui|eur|a|es?)|[mts]e|[nv]ous) +(?:l(?:a|es?|ui|eur)|en|y)) +({w_1})  @@0,$
    <<- morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)")
    <<- ~1>> *
__[i](p_pro_per_obj02)__
    (ne +(?:[mts](?:e|’(?:en|y))|[nv]ous|l(?:es?|a|ui|eur|’(?:en|y)))) +({w_1})  @@0,$
    <<- morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)")
    <<- ~1>> *
__[i](p_pro_per_obj03)__
    ([mts]e +l(?:a|es?)) +({w_1})  @@0,$
    <<- morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)")
    <<- ~1>> *
__[i](p_pro_per_obj04)__
    ([nmsl]’(?:en|y)) +({w_1})  @@0,$
    <<- morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)")
    <<- ~1>> *
__[i](p_pro_per_obj05)__
    (l(?:a|es?) +(?:lui|en)) +({w_1})  @@0,$
    <<- morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)")
    <<- ~1>> *
__[i](p_pro_per_obj06)__
    (lui +(?:la|les?|en|y)) +({w_1})  @@0,$
    <<- not morph(word(-1), ":R", False, True) ~1>> *
    <<- __also__ and morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)")
__[i](p_pro_per_obj07)__
    (leur +(?:en|y)) +({w_1})  @@0,$
    <<- not morph(word(-1), ":R", False, False) ~1>> *
    <<- __also__ and morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)")
__[i](p_pro_per_obj08)__
    (?:je|tu|ils?|on) ([nv]ous(?: la| les?|)|lui) +({w_1})  @@*,$
    <<- morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)")
    <<- __also__ ~1>> *
__[i](p_pro_per_obj09)__
    (?:je|tu|ils?|on) (l(?:es?|a)) ({w_1}) @@w,$
    <<- (\1 == "le" and not morph(\2, ":N.*:[me]:[si]"))
        or (\1 == "la" and not morph(\2, ":N.*:[fe]:[si]"))
        or (\1 == "les" and not morph(\2, ":N.*:.:[pi]")) ~1>> *
    <<- __also__ and morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)")
__[i](p_pro_per_obj10)__
    (?:elles?|[nv]ous) ([nv]ous(?: la| les?|)|l(?:es?|ui|a)) +({w_1})  @@*,$
    <<- not morph(word(-1), ":R", False, False) ~1>> *
    <<- __also__ and morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)")
__[i](p_pro_per_obj11)__
    ce(?:ux|lles?|lui|la|) qui ([nv]ous(?: la| les?|)|l(?:es?|ui|a)) +({w_1})  @@*,$
    <<- morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)")
    <<- __also__ ~1>> *
__[i](p_pro_per_obj12)__
    (?<!’)(en) ({w_2}) @@0,$
    <<- morph(\2, ":(?:[123][sp]|P|Y)") ~1>> *
__[i](p_pro_per_obj13)__
    (?:tu|il|on) (en) +({w_1})  @@w,$
    <<- not morph(word(-1), ":[123]s", False, False) ~1>> *
    <<- morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)")
__[i](p_pro_per_obj14)__
    (?<!’)elle (en) +({w_1})  @@w,$
    <<- not morph(word(-1), ":(?:[123]s|R)", False, False) ~1>> *
    <<- morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)")
__[i](p_pro_per_obj15)__
    (?<!’)elles (en) +({w_1})  @@w,$
    <<- not morph(word(-1), ":(?:[123]p|R)", False, False) ~1>> *
    <<- morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)")
__[i](p_pro_per_obj16)__
    ils (en) +({w_1})  @@4,$
    <<- not morph(word(-1), ":3p", False, False) ~1>> *
    <<- morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)")
__[i](p_pro_per_obj17)__
    (?<!’)(y) ({w_2}) @@0,2
    <<- morph(\2, ":(?:[123][sp]|P|Y)", False) ~1>> *
    <<- __also__ =>> select(\2, ":(?:[123][sp]|P|Y)")
__[i](p_pro_per_obj18)__
    (le) ({w_2}) @@0,3
    <<- morphex(\2, ":(?:[123][sp]|P|Y)", ":(?:[NAQ].*:[me]:[si]|G|M)") ~1>> *
    <<- __also__ =>> select(\2, ":(?:[123][sp]|P|Y)")
__[i](p_pro_per_obj19)__
    (la) ({w_2}) @@0,3
    <<- morphex(\2, ":(?:[123][sp]|P|Y)", ":(?:[NAQ].*:[fe]:[si]|G|M)") ~1>> *
    <<- __also__ =>> select(\2, ":(?:[123][sp]|P|Y)")
__[i](p_pro_per_obj20)__
    (l’)({w_2}) @@0,2
    <<- morphex(\2, ":(?:[123][sp]|P|Y)", ":(?:[NAQ].*:[si]|G|M)") ~1>> *
    <<- __also__ =>> select(\2, ":(?:[123][sp]|P|Y)")
__[i](p_pro_per_obj21)__
    (leur) ({w_2}) @@0,5
    <<- morphex(\2, ":(?:[123][sp]|P|Y)", ":(?:[NAQ].*:[si]|G|M)") ~1>> *
    <<- __also__ =>> select(\2, ":(?:[123][sp]|P|Y)")
__[s](p_pro_per_obj22)__
    [lL]’(a) @@$
    <<- =>> select(\1, ":V")
    <<- ~>> "  a"
__[i](p_pro_per_obj23)__
    (nous) ({w_2}) @@0,5
    <<- morphex(\2, ":(?:[123][sp]|P|Y)", ":(?:A|G|M|1p)") =>> select(\2, ":(?:[123][sp]|P|Y)")
    <<- __also__ ~1>> *
__[i](p_pro_per_obj24)__
    (vous) ({w_2}) @@0,5
    <<- morphex(\2, ":(?:[123][sp]|P|Y)", ":(?:A|G|M|2p)") =>> select(\2, ":(?:[123][sp]|P|Y)")
    <<- __also__ ~1>> *
__[i](p_pro_per_obj25)__
    (?:à|de) ([nv]ous|lui|les?|en) (?!qui)({w_2}) @@w,$
    <<- morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)")
    <<- ~1>> *
__[i](p_pro_per_obj26)__
__[i](p_pro_per_obj27)__    (?:je|tu|ils?|elles?|on) (l’|l(?:es?|a|ui|eur) +|[nv]ous +){w_2} @@* <<- isStart() ~1>> >
__[i](p_pro_per_obj28)__    (?:je|tu|ils?|elles?|on|[nv]ous|ce(?:ux|elles?|lui|la|) qui) (l’)({w4}) @@*,$ <<- morph(\2, ":V", False) ~1>> >
__[i](p_pro_per_obj29)__    (t’(?:en|y)) ({w_2}) @@0,$ <<- not morph(\2, ":2s", False) or before(r"(?i)\b(?:je|tu|on|ils?|elles?|nous) +$") ~1>> >
    (s’)({w4}) @@0,2
    <<- morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)")
__[i](p_pro_per_obj30)__    (t’)({w_2}) @@0,$ <<- not morph(\2, ":2s|>(ils?|elles?|on) ", False) or before(r"(?i)\b(?:je|tu|on|ils?|elles?|nous) +$") ~1>> >
__[i>(p_pro_per_obj31)__    ne [mtsl]’ <<- ~>> >
    <<- __also__ ~1>> *
__[i>(p_pro_per_obj32)__    [mts]e +l’ <<- ~>> >
__[i>(p_pro_per_obj33)__    [nm]’ <<- ~>> >
__[i](p_pro_per_obj34)__    [nmts]e <<- ~>> >
__<s>(p_pro_per_obj35)__    > +> <<- ~>> >
__[i](p_pro_per_obj27)__
    (?:je|tu|ils?|elles?|on) (l’|l(?:es?|a|ui|eur) +|[nv]ous +)({w_2}) @@*,$
    <<- morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)")
    <<- isStart() ~1>> *
__[i](p_pro_per_obj28)__
    (?:je|tu|ils?|elles?|on|[nv]ous|ce(?:ux|elles?|lui|la|) qui) (l’)({w4}) @@*,$
    <<- morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)")
    <<- __also__ ~1>> *
__[i](p_pro_per_obj29)__
    (t’(?:en|y)) ({w_2}) @@0,$
    <<- morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)")
    <<- not morph(\2, ":2s", False) or before(r"(?i)\b(?:je|tu|on|ils?|elles?|nous) +$") ~1>> *
__[i](p_pro_per_obj30)__
    (t’)({w_2}) @@0,$
    <<- morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)")
    <<- not morph(\2, ":2s|>(ils?|elles?|on) ", False) or before(r"(?i)\b(?:je|tu|on|ils?|elles?|nous) +$") ~1>> *
__[i>(p_pro_per_obj31)__
    (ne [mtsl]’)({w_1})  @@0,$
    <<- morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)")
    <<- ~1>> *
__[i>(p_pro_per_obj32)__
    ([mts]e +l’)({w_1})  @@0,$
    <<- morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)")
    <<- ~1>> *
__[i>(p_pro_per_obj33)__
    [nm]’({w_1})  @@2
    <<- morph(\1, ":(?:[123][sp]|P|Y)", False) =>> select(\1, ":(?:[123][sp]|P|Y)")
    <<- ~>> "  \1"
__[i](p_pro_per_obj34)__
    ([nmts]e +)({w_1})  @@0,$
    <<- morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)")
    <<- __also__ ~1>> *
#__<s>(p_pro_per_obj35)__
#    > +>
#    <<- ~>> >
# Fin du Brainfuck



!!
!!
!!!! Confusions                                                                                     
10263
10264
10265
10266
10267
10268
10269
10270
10271


10272
10273
10274
10275
10276
10277
10278
10378
10379
10380
10381
10382
10383
10384


10385
10386
10387
10388
10389
10390
10391
10392
10393







-
-
+
+







TEST: Il vient {{a}} la maison.
TEST: tu ne donnes rien {{a}} ces hommes.
TEST: Nous les donnons {{a}} ces gens.
TEST: j’arrive {{a}} la gare


#### CONFUSION fasse / face
__<i]/conf(conf_fasse)__
    > +(face)(?! à) @@$ <<- -1>> fasse                     # Confusion probable. Pour le subjonctif de “faire”, écrivez “fasse”.
#__<i]/conf(conf_fasse)__
#    > +(face)(?! à) @@$ <<- -1>> fasse                     # Confusion probable. Pour le subjonctif de “faire”, écrivez “fasse”.

TEST: j’ai peur qu’il ne leur {{face}} quelque chose de mal


#### CONFUSION ÊTRE / AVOIR
__[i]/conf(conf_ait_confiance_été_faim_tort)__
    (?<!’)(est?) +(con(?:fiance|science)|envie|été|p(?:eine|eur)|faim|h(?:âte|onte)|recours|soif|tort)  @@0,$
10349
10350
10351
10352
10353
10354
10355
10356
10357


10358
10359
10360
10361
10362
10363
10364
10365
10366
10367
10368
10369
10370
10371
10372
10373

10374
10375
10376
10377
10378
10379
10380
10381
10382
10383
10384
10385
10386
10387
10388
10389
10390
10391
10392


10393
10394
10395


10396
10397
10398
10399
10400
10401
10402
10403
10404
10405
10406
10407
10408
10409
10410
10411
10412
10413
10414
10415
10416




10417
10418

10419
10420
10421
10422

10423
10424
10425
10426
10427
10428
10429
10464
10465
10466
10467
10468
10469
10470


10471
10472
10473
10474
10475
10476
10477
10478
10479
10480
10481
10482
10483
10484
10485
10486
10487

10488
10489
10490
10491
10492
10493
10494
10495
10496
10497
10498
10499
10500
10501
10502
10503
10504
10505


10506
10507
10508
10509
10510
10511
10512
10513
10514
10515
10516
10517
10518
10519
10520
10521
10522
10523
10524
10525
10526
10527
10528
10529




10530
10531
10532
10533
10534

10535
10536
10537
10538

10539
10540
10541
10542
10543
10544
10545
10546







-
-
+
+















-
+

















-
-
+
+



+
+

















-
-
-
-
+
+
+
+

-
+



-
+







    <<- morph(\1, ">valoir ", False) and morphex(\2, ":(?:Q|2p)", ":[GM]")
    -2>> =suggVerbInfi(@)                                                                           # Le verbe devrait être à l’infinitif.

TEST: Mieux vaut {{consacré}} son temps à des occupations utiles.


__[i]/infi(infi_à)__
    à +> +({w_2}(?:ée?|ez))  @@$
    <<- morphex(\1, ":V1", ":[NM]") and not \1.istitle() and not before("> +$")
    à +({w_2}(?:ée?s?|ez|ai[st]?))  @@$
    <<- morphex(\1, ":V1", ":[NM]") and not \1.istitle() and not before(r"(?i)\b(?:les|en) +$")
    -1>> =suggVerbInfi(@)                                                                           # Le verbe devrait être à l’infinitif.

TEST: elle parvenait à y {{songez}} souvent
TEST: je vais à Rodez.


__[i]/infi(infi_avoir_beau)__
    ({avoir}) beau ({w_2}(?:ée?s?|ez|ai[ts]?))  @@0,$
    <<- morph(\1, ">avoir ", False) and morphex(\2, ":V1", ":N")
    -2>> =suggVerbInfi(@)                                                                           # Le verbe devrait être à l’infinitif.|http://fr.wiktionary.org/wiki/avoir_beau

TEST: Ils ont beau {{consacré}} le plus clair de leur temps à ce projet, ça n’avance guère.


__[i]/infi(infi_par_pour_sans)__
    (?:p(?:a|ou)r|sans) +> +({w_2}(?:ée?s?|ai[st]?|ez))  @@$
    (?:p(?:a|ou)r|sans) +({w_2}(?:ée?s?|ai[st]?|ez))  @@$
    <<- morphex(\1, ":[Q123][sp]?", ":Y") -1>> =suggVerbInfi(@)                                     # Le verbe devrait être à l’infinitif.

TEST: pour s’y {{donnait}} le plus souvent.



#__[i]/infi__
#    ((all|v|ir)\w+) ({w_2}é) <<- morph(\1, ">aller ") and morph(\2, ":V", False) ->> _      # Le verbe « \1 » devrait être à l’infinitif.
#__[i]/infi__
#    {avoir} (dû|[ps]u|voulu) ({w_2}[éesz]) <<- morph(\2, ":V.*:(?:Q|2p)", False) ->> _      # Le verbe « \2 » devrait être à l’infinitif.


#### PAS D’INFINITIF

__[i]/ppas(ppas_être)__
    (?<![cC]’)({etre}) +({w_2}er)  @@0,$
    <<- morph(\1, ":V0e", False) and (morphex(\2, ":Y", ":[NAQ]") or \2 in aSHOULDBEVERB) and not re.search("(?i)^(?:soit|été)$", \1)
    and not morph(word(-1), ":Y|>ce", False, False) and not before("(?i)ce (?:>|qu|que >) $")
    and not before_chk1(r"({w_2}) +> $", ":Y") and not before_chk1(r"^ *>? *(\w[\w-]+)", ":Y")
    and not morph(word(-1), ":Y|>ce", False, False) and not before("(?i)ce que? +$")
    and not morph(word(-1), ":Y", False, False) and not before_chk1(r"^ *>? *(\w[\w-]+)", ":Y")
    -2>> =suggVerbPpas(@)                                                   # Incohérence. Après « être », le verbe ne doit pas être à l’infinitif.

TEST: ils sont {{tromper}} par tous ces hypocrites.
TEST: Jeûner n’est pas seulement cesser de manger.
TEST: Ne pas aimer n’est pas oublier l’autre.


!!
!!
!!!! Conjugaison                                                                                    
!!
!!

## 1sg
__[i]/conj(conj_j)__
    j’({w_1})  @@2
    <<- morphex(\1, ":V", ":1s|>(?:en|y)")
    -1>> =suggVerb(@, ":1s")                                 # Conjugaison erronée. Accord avec « je ». Le verbe devrait être à la 1ʳᵉ personne du singulier.
__[i]/conj(conj_je)__
    (je) +({w_1})  @@0,$
    <<- morphex(\2, ":V", ":(?:1s|G)") and not (morph(\2, ":[PQ]", False) and morph(word(-1), ":V0.*:1s", False, False))
    -2>> =suggVerb(@, ":1s")                                 # Conjugaison erronée. Accord avec « \1 ». Le verbe devrait être à la 1ʳᵉ personne du singulier.
__[i]/conj(conj_je_pronom)__
    (je) +> +({w_1})  @@0,$
    <<- morphex(\2, ":V", ":(?:1s|G|1p)")
    -2>> =suggVerb(@, ":1s")                                 # Conjugaison erronée. Accord avec « \1 ». Le verbe devrait être à la 1ʳᵉ personne du singulier.
#__[i]/conj(conj_je_pronom)__
#    (je) +> +({w_1})  @@0,$
#    <<- morphex(\2, ":V", ":(?:1s|G|1p)")
#    -2>> =suggVerb(@, ":1s")                                 # Conjugaison erronée. Accord avec « \1 ». Le verbe devrait être à la 1ʳᵉ personne du singulier.
__[i]/conj(conj_j_en_y)__
    (j’(?:y|en)) +>? *({w_1})  @@0,$
    (j’(?:y|en)) +({w_1})  @@0,$
    <<- morphex(\2, ":V", ":(?:1s|G|1p)")
    -2>> =suggVerb(@, ":1s")                                 # Conjugaison erronée. Accord avec « \1 ». Le verbe devrait être à la 1ʳᵉ personne du singulier.
__[i]/conj(conj_moi_qui)__
    (moi +qui) +>? *({w_1})  @@0,$
    (moi +qui) +({w_1})  @@0,$
    <<- morphex(\2, ":V", ":(?:1s|G|1p|3p!)")
    -2>> =suggVerb(@, ":1s")                                 # Conjugaison erronée. Accord avec « \1 ». Le verbe devrait être à la 1ʳᵉ personne du singulier.

TEST: je {{donnerait}} tout pour y parvenir.
TEST: Je le lui {{prend}}.
TEST: Je l’{{apprend}}.
TEST: Je les {{contre-attaques}}.
10440
10441
10442
10443
10444
10445
10446
10447
10448
10449
10450




10451
10452

10453
10454
10455
10456
10457
10458
10459
10460
10461
10462
10463
10464
10465

10466
10467
10468
10469
10470
10471
10472
10473





10474
10475
10476
10477
10478
10479
10480
10481
10482
10483
10484
10485
10486
10487
10488
10489
10490
10491
10492
10493
10494
10495




10496
10497
10498
10499
10500
10501
10502
10503
10504
10505
10506
10507
10508
10509




10510
10511
10512
10513
10514
10515
10516
10517

10518
10519
10520
10521
10522

10523
10524
10525
10526
10527
10528
10529
10530
10531
10532
10533


10534
10535
10536
10537
10538
10539
10540
10541
10542
10543
10544
10545
10546
10547
10548
10549
10550
10551
10552

10553
10554
10555
10556
10557
10558

10559
10560
10561
10562
10563
10564
10565
10566
10567
10568
10569
10570
10571
10572

10573
10574
10575
10576
10577
10578
10579
10557
10558
10559
10560
10561
10562
10563




10564
10565
10566
10567
10568

10569
10570
10571
10572
10573
10574
10575
10576
10577
10578
10579
10580
10581

10582
10583
10584
10585





10586
10587
10588
10589
10590
10591
10592
10593
10594
10595
10596
10597
10598
10599
10600
10601
10602
10603
10604
10605
10606
10607
10608




10609
10610
10611
10612
10613
10614
10615
10616
10617
10618
10619
10620
10621
10622




10623
10624
10625
10626
10627
10628
10629
10630
10631
10632
10633

10634
10635
10636
10637
10638

10639
10640
10641
10642
10643
10644
10645
10646
10647
10648


10649
10650
10651
10652
10653
10654
10655
10656
10657
10658
10659
10660
10661
10662
10663
10664
10665
10666
10667
10668

10669
10670
10671
10672
10673
10674

10675
10676
10677
10678
10679
10680
10681
10682
10683
10684
10685
10686
10687
10688

10689
10690
10691
10692
10693
10694
10695
10696







-
-
-
-
+
+
+
+

-
+












-
+



-
-
-
-
-
+
+
+
+
+


















-
-
-
-
+
+
+
+










-
-
-
-
+
+
+
+







-
+




-
+









-
-
+
+


















-
+





-
+













-
+









## 2sg
__[i]/conj(conj_tu)__
    (tu) +({w_1})  @@0,$
    <<- morphex(\2, ":V", ":(?:G|[ISK].*:2s)") and not (morph(\2, ":[PQ]", False) and morph(word(-1), ":V0.*:2s", False, False))
    -2>> =suggVerb(@, ":2s")                                 # Conjugaison erronée. Accord avec « \1 ». Le verbe devrait être à la 2ᵉ personne du singulier.
__[i]/conj(conj_tu_pronom)__
    (tu) +> +({w_1})  @@0,$
    <<- morphex(\2, ":V", ":(?:G|[ISK].*:2s)")
    -2>> =suggVerb(@, ":2s")                                 # Conjugaison erronée. Accord avec « \1 ». Le verbe devrait être à la 2ᵉ personne du singulier.
#__[i]/conj(conj_tu_pronom)__
#    (tu) +> +({w_1})  @@0,$
#    <<- morphex(\2, ":V", ":(?:G|[ISK].*:2s)")
#    -2>> =suggVerb(@, ":2s")                                 # Conjugaison erronée. Accord avec « \1 ». Le verbe devrait être à la 2ᵉ personne du singulier.
__[i]/conj(conj_toi_qui)__
    (toi +qui) +>? *({w_1})  @@0,$
    (toi +qui) +({w_1})  @@0,$
    <<- morphex(\2, ":V", ":(?:G|2p|3p!|[ISK].*:2s)")
    -2>> =suggVerb(@, ":2s")                                 # Conjugaison erronée. Accord avec « \1 ». Le verbe devrait être à la 2ᵉ personne du singulier.

TEST: Tu ne {{ment}} jamais.
TEST: Tu {{a}} mal ?
TEST: Tu ne le lui {{prend}} pas.
TEST: Tu ne m’{{attendra}} pas.
TEST: toi qui n’y {{connait}} rien, ne nous ennuie pas avec tes théories.


## 3sg
__[i]/conj(conj_il)__
    (il) +({w_1})  @@0,$
    (?<!t’)(il) +({w_1})  @@0,$
    <<- morphex(\2, ":V", ":(?:3s|P|G)") and not (morph(\2, ":[PQ]", False) and morph(word(-1), ":V0.*:3s", False, False))
    -2>> =suggVerb(@, ":3s")                                 # Conjugaison erronée. Accord avec « \1 ». Le verbe devrait être à la 3ᵉ personne du singulier.
    <<- __also__ and morph(\2, ":3p", False) -1>> ils        # Accord avec « \2 ».
__[i]/conj(conj_il_pronom)__
    (il) +> +({w_1})  @@0,$
    <<- morphex(\2, ":V", ":(?:3s|P|G)")
    -2>> =suggVerb(@, ":3s")                                 # Conjugaison erronée. Accord avec « \1 ». Le verbe devrait être à la 3ᵉ personne du singulier.
    <<- __also__ and morph(\2, ":3p", False) -1>> ils        # Accord avec « \2 ».
#__[i]/conj(conj_il_pronom)__
#    (il) +> +({w_1})  @@0,$
#    <<- morphex(\2, ":V", ":(?:3s|P|G)")
#    -2>> =suggVerb(@, ":3s")                                 # Conjugaison erronée. Accord avec « \1 ». Le verbe devrait être à la 3ᵉ personne du singulier.
#    <<- __also__ and morph(\2, ":3p", False) -1>> ils        # Accord avec « \2 ».

TEST: {{Il}} {{accusent}}.
TEST: il {{bus}} du vin.
TEST: Il {{pris}}.
TEST: Il {{rougis}}.
TEST: Il {{suivis}}.
TEST: Il {{grandis}}.
TEST: Il {{bâtis}}.
TEST: Il {{bus}}.
TEST: Il {{mues}}.
TEST: {{il}} ne {{pensent}} à rien.
TEST: il n’y {{aurais}} plus rien à attendre de la religion et de la politique.


__[i]/conj(conj_on)__
    (on) +({w_1})  @@0,$
    <<- morphex(\2, ":V", ":(?:3s|P|G)") and not (morph(\2, ":[PQ]", False) and morph(word(-1), ":V0.*:3s", False, False))
    -2>> =suggVerb(@, ":3s")                                 # Conjugaison erronée. Accord avec « \1 ». Le verbe devrait être à la 3ᵉ personne du singulier.
__[i]/conj(conj_on_pronom)__
    (on) +> +({w_1})  @@0,$
    <<- morphex(\2, ":V", ":(?:3s|P|G)")
    -2>> =suggVerb(@, ":3s")                                 # Conjugaison erronée. Accord avec « \1 ». Le verbe devrait être à la 3ᵉ personne du singulier.
#__[i]/conj(conj_on_pronom)__
#    (on) +> +({w_1})  @@0,$
#    <<- morphex(\2, ":V", ":(?:3s|P|G)")
#    -2>> =suggVerb(@, ":3s")                                 # Conjugaison erronée. Accord avec « \1 ». Le verbe devrait être à la 3ᵉ personne du singulier.

TEST: on {{remué}} beaucoup.
TEST: on {{refuses}} tout cela
TEST: on ne se {{bougent}} pas suffisamment


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

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,$
    (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,$
    (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.
TEST: Ce qui {{fâchent}} mes amis.
TEST: celui qui {{pensent}} mal de toute chose


__[i]/conj(conj_ça)__
    (ça|chacune?|l’une?|ce(?:ci|la|lui-(?:ci|là)|lle-(?:ci|là))|n`importe quo?i|quelqu(?:’une?|e chose))(?: +qui|) +>? *({w_1})  @@0,$
    <<- morphex(\2, ":V", ":(?:3s|P|Q|G|3p!)") and not morph(word(-1), ":[VR]|>de", False, False)
    (ça|chacune?|l’une?|ce(?:ci|la|lui-(?:ci|là)|lle-(?:ci|là))|n`importe quo?i|quelqu(?:’une?|e chose)) +(?:qui +|)({w_1})  @@0,$
    <<- morphex(\2, ":V", ":(?:3s|P|Q|G|3p!)") and not morph(word(-1), ":[VR]|>de ", False, False)
    -2>> =suggVerb(@, ":3s")                                 # Conjugaison erronée. Accord avec « \1 ». Le verbe devrait être à la 3ᵉ personne du singulier.

TEST: chacun {{fais}} comme il peut
TEST: quelqu’un {{sauras}}
TEST: quelqu’une se {{montrent}} désagréable
TEST: n’importe quoi {{peux}} réussir
TEST: n’importe qui {{peux}} y arriver.
TEST: quelque chose {{sens}} mauvais ici
TEST: l’un d’eux {{viendras}}
TEST: ce {{dois}} être ennuyeux
TEST: ce {{seras}} foutu
TEST: mais ça ne vous {{aideras}} en rien
TEST: Cela ne t’{{aideras}} pas.
TEST: Cela {{dis}}, on ne sait pas comment s’en sortir.
TEST: Y avait-il seulement quelqu’un pour vouloir soumettre ses recherches ?


__[i]/conj(conj_tout)__
    tout +>? *({w_1})  @@$
    tout +({w_1})  @@$
    <<- morphex(\1, ":V", ":(?:3s|P|Q|Y|G|3p!)") and not morph(word(-1), ":[VRD]|>de", False, False)
    and not( morph(\1, ":(?:Y|N.*:m:[si])", False) and not re.search(" (?:qui|>) ", \0) )
    -1>> =suggVerb(@, ":3s")                                 # Conjugaison erronée. Accord avec « tout ». Le verbe devrait être à la 3ᵉ personne du singulier.

__[i]/conj(conj_tout_qui)__
    tout +qui +>? *({w_1})  @@$
    tout +qui +({w_1})  @@$
    <<- morphex(\1, ":V", ":(?:3s|P|Q|G|3p!)") and not morph(word(-1), ":[VRD]|>de", False, False)
    and not( morph(\1, ":(?:Y|N.*:m:[si])", False) and not re.search(" (?:qui|>) ", \0) )
    -1>> =suggVerb(@, ":3s")                                 # Conjugaison erronée. Accord avec « tout ». Le verbe devrait être à la 3ᵉ personne du singulier.

TEST: Tout {{reviens}} à ça.
TEST: Tout qui {{deviens}} fou.
TEST: Le tout nouveau président de la fondation qui héberge Wikipédia
TEST: tout discours de sortie nourrit immanquablement la sortie
TEST: Tout vous expliquer est difficile.
TEST: J’essaie de bien tout vous expliquer.


__[i]/conj(conj_lequel_laquelle)__
    (l(?:equel|aquelle))(?: +qui|) +>? *({w_1})  @@0,$
    (l(?:equel|aquelle)) +(?:qui +|)({w_1})  @@0,$
    <<- morphex(\2, ":V", ":(?:3s|P|Q|G|3p!)") and not morph(word(-1), ":[VR]|>de", False, False)
    and not( morph(\2, ":Y", False) and not re.search(" (?:qui|>) ", \0) )
    -2>> =suggVerb(@, ":3s")                                 # Conjugaison erronée. Accord avec « \1 ». Le verbe devrait être à la 3ᵉ personne du singulier.

TEST: Lequel {{viendraient}} nous donner des leçons ?
TEST: Laquelle choisir ?
TEST: Lequel manger ?
10594
10595
10596
10597
10598
10599
10600
10601
10602
10603
10604
10605





10606
10607
10608
10609
10610
10611
10612
10711
10712
10713
10714
10715
10716
10717





10718
10719
10720
10721
10722
10723
10724
10725
10726
10727
10728
10729







-
-
-
-
-
+
+
+
+
+








__[i]/conj(conj_elle)__
    (?<![dD]’)(elle) +({w_1})  @@0,$
    <<- morphex(\2, ":V", ":(?:3s|P|G)") and not morph(word(-1), ":R|>(?:et|ou)", False, False)
    and not (morph(\2, ":[PQ]", False) and morph(word(-1), ":V0.*:3s", False, False))
    -2>> =suggVerb(@, ":3s")                                 # Conjugaison erronée. Accord avec « \1 ». Le verbe devrait être à la 3ᵉ personne du singulier.
    <<- __also__ and morph(\2, ":3p", False) -1>> elles      # Accord avec « \2 ».
__[i]/conj(conj_elle_pronom)__
    (?<![dD]’)(elle) +> +({w_1})  @@0,$
    <<- morphex(\2, ":V", ":(?:3s|P|G)") and not morph(word(-1), ":R|>(?:et|ou)", False, False)
    -2>> =suggVerb(@, ":3s")                                 # Conjugaison erronée. Accord avec « \1 ». Le verbe devrait être à la 3ᵉ personne du singulier.
    <<- __also__ and morph(\2, ":3p", False) -1>> elles      # Accord avec « \2 ».
#__[i]/conj(conj_elle_pronom)__
#    (?<![dD]’)(elle) +> +({w_1})  @@0,$
#    <<- morphex(\2, ":V", ":(?:3s|P|G)") and not morph(word(-1), ":R|>(?:et|ou)", False, False)
#    -2>> =suggVerb(@, ":3s")                                 # Conjugaison erronée. Accord avec « \1 ». Le verbe devrait être à la 3ᵉ personne du singulier.
#    <<- __also__ and morph(\2, ":3p", False) -1>> elles      # Accord avec « \2 ».

TEST: Elle {{conquis}}.
TEST: Elle {{finis}}.
TEST: Elle {{pâlis}}.
TEST: {{Elles}} {{donne}} des leçons.
TEST: {{Elle}} ne nous {{croient}} jamais.
TEST: {{elle}} {{sont}} parties.
10622
10623
10624
10625
10626
10627
10628
10629

10630
10631
10632
10633
10634
10635
10636
10739
10740
10741
10742
10743
10744
10745

10746
10747
10748
10749
10750
10751
10752
10753







-
+







    <<- -1>> =\1[:-1]+"t"                                    # Conjugaison erronée. Accord avec “mieux” : utilisez la 3ᵉ personne du singulier.

TEST: avec toi qui ne sais rien de rien, mieux {{vaux}} ne rien dire.
TEST: Mais là-bas mieux {{valais}} ouvrir sa gueule que se taire.


__[i]/conj(conj_personne_aucun_rien_nul)__
    (personne|aucun|rien|nul(?:le|)) +(?:qui +|)> +({w_1})  @@0,$
    (personne|aucun|rien|nul(?:le|)) +(?:qui +|)({w_1})  @@0,$
    <<- morphex(\2, ":V", ":(?:3s|P|G)") and morphex(word(-1), ":C", ":(?:Y|P|Q|[123][sp]|R)", True)
    and not( \1.endswith("ien") and before("> +$") and morph(\2, ":Y", False) )
    -2>> =suggVerb(@, ":3s")                                 # Conjugaison erronée. Accord avec « \1… ». Le verbe devrait être à la 3ᵉ personne du singulier.

TEST: Personne ne {{peux}} me le dire.
TEST: Rien ne {{sers}} de courir
TEST: Rien n’{{arrives}} sans raison
10646
10647
10648
10649
10650
10651
10652


10653
10654
10655
10656
10657
10658



10659
10660

10661
10662


10663
10664
10665
10666
10667

10668
10669
10670
10671
10672
10673
10674
10763
10764
10765
10766
10767
10768
10769
10770
10771
10772
10773
10774



10775
10776
10777
10778
10779
10780


10781
10782
10783
10784
10785
10786

10787
10788
10789
10790
10791
10792
10793
10794







+
+



-
-
-
+
+
+


+
-
-
+
+




-
+








__[i]/conj(conj_un_une_des)__
    (une? des {w_2}) +({w_1})  @@0,$
    <<- morphex(\2, ":V", ":(?:3s|P|G|Q)") and morphex(word(-1), ":C", ":(?:Y|P|Q|[123][sp]|R)", True) and not morph(\2, ":[NA].*:[pi]", False)
    -2>> =suggVerb(@, ":3s")                                # Conjugaison erronée. Accord avec « \1… ». Le verbe devrait être à la 3ᵉ personne du singulier.

TEST: un des ingénieurs {{vinrent}} nous dire quoi faire.
TEST: un des membres présents au conseil {{demandent}} un vote à bulletin secret
TEST: une des femmes de ce conseil ne {{céderaient}} jamais au chantage.
TEST: une des femmes présente ses résultats.


__[i]/conj(conj_un_une_des_pronom)__
    (une? des {w_2}) +(?:qui +>? *|> +)({w_1})  @@0,$
    <<- morphex(\2, ":V", ":(?:3s|P|G)") and morphex(word(-1), ":C", ":(?:Y|P|Q|[123][sp]|R)", True)
__[i]/conj(conj_un_une_des_qui)__
    (une? des {w_2}) +qui +({w_1})  @@0,$
    <<- morphex(\2, ":V", ":(?:3[sp]|P|G)") and morphex(word(-1), ":C", ":(?:Y|P|Q|[123][sp]|R)", True)
    -2>> =suggVerb(@, ":3s")                                 # Conjugaison erronée. Accord avec « \1… ». Le verbe devrait être à la 3ᵉ personne du singulier.

TEST: un des chats qui {{venez}} nous ennuyer tous les jours.
TEST: un des membres présents au conseil {{demandent}} un vote à bulletin secret
TEST: une des femmes de ce conseil ne {{céderaient}} jamais au chantage.
TEST: un des hommes qui vient.
TEST: une des dames qui se sentent mal à l’aise dans cet avion est venue nous trouver.
TEST: l’un des chants les plus diffusés pendant la Révolution culturelle


__[i]/conj(conj_infi)__
    ^ *({infi}) +>? *({w_2})  @@*,$
    ^ *({infi}) +({w_2})  @@*,$
    <<- morph(\1, ":Y", False) and morph(\2, ":V.[a-z_!?]+(?!.*:(?:3s|P|Q|Y|3p!))") 
    -2>> =suggVerb(@, ":3s")                                 # Conjugaison erronée. Accord avec « \1… ». Le verbe devrait être à la 3ᵉ personne du singulier.

TEST: manger {{fais}} grossir.
TEST: boire immodérément {{nuis}} à la santé


10693
10694
10695
10696
10697
10698
10699
10700
10701
10702
10703
10704
10705
10706







10707
10708
10709
10710
10711
10712
10713
10813
10814
10815
10816
10817
10818
10819







10820
10821
10822
10823
10824
10825
10826
10827
10828
10829
10830
10831
10832
10833







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







__[i]/conj(conj_det_sing_nom_qui)__
    (?<![dD]’)(l[ea] |une? |l’|[mts](?:on|a) |ce(?:tte|t|) |leur ) *({w_2}) +qui +({w_2})  @@0,w,$
    <<- not ( re.search("(?i)^(?:une? +(?:dizaine|douzaine|quinzaine|vingtaine|trentaine|quarantaine|cinquantaine|soixantaine|centaine|majorité|minorité|millier|partie|poignée|tas|paquet) |la +moitié) ", \0)
    and morph(\3, ":3p", False) )
    and morphex(\2, ":[NAQ].*:[si]", ":G") and morphex(\3, ":V", ":(?:3s|P|Q|Y|3p!|G)") and morphex(word(-1), ":C", ":(?:Y|P)", True)
    and not (before(r"(?i)\b(?:et|ou) +$") and morph(\3, ":[123]p", False)) and not before(r"(?i)\bni .* ni ")
    -3>> =suggVerb(@, ":3s")                            # Conjugaison erronée. Accord avec « \1 \2… ». Le verbe devrait être à la 3ᵉ personne du singulier.
__[i]/conj(conj_det_sing_nom_pronom)__
    (?<![dD]’)(l[ea] |une? |l’|[mts](?:on|a) |ce(?:tte|t|) |leur |nul(?:le|) ) *({w_2}) +(?:qui +|)> +({w_2})  @@0,w,$
    <<- not ( re.search("(?i)^(?:une? +(?:dizaine|douzaine|quinzaine|vingtaine|trentaine|quarantaine|cinquantaine|soixantaine|centaine|majorité|minorité|millier|partie|poignée|tas|paquet) |la +moitié) ", \0)
    and morph(\3, ":3p", False) )
    and morphex(\2, ":[NAQ].*:[si]", ":G") and morphex(\3, ":V", ":(?:3s|1p|P|Q|Y|3p!|G)") and morphex(word(-1), ":C", ":(?:Y|P)", True)
    and not (before(r"(?i)\b(?:et|ou) +$") and morph(\3, ":[123]p", False)) and not before(r"(?i)\bni .* ni ")
    -3>> =suggVerb(@, ":3s")                            # Conjugaison erronée. Accord avec « \1 \2… ». Le verbe devrait être à la 3ᵉ personne du singulier.
#__[i]/conj(conj_det_sing_nom_pronom)__
#    (?<![dD]’)(l[ea] |une? |l’|[mts](?:on|a) |ce(?:tte|t|) |leur |nul(?:le|) ) *({w_2}) +(?:qui +|)> +({w_2})  @@0,w,$
#    <<- not ( re.search("(?i)^(?:une? +(?:dizaine|douzaine|quinzaine|vingtaine|trentaine|quarantaine|cinquantaine|soixantaine|centaine|majorité|minorité|millier|partie|poignée|tas|paquet) |la +moitié) ", \0)
#    and morph(\3, ":3p", False) )
#    and morphex(\2, ":[NAQ].*:[si]", ":G") and morphex(\3, ":V", ":(?:3s|1p|P|Q|Y|3p!|G)") and morphex(word(-1), ":C", ":(?:Y|P)", True)
#    and not (before(r"(?i)\b(?:et|ou) +$") and morph(\3, ":[123]p", False)) and not before(r"(?i)\bni .* ni ")
#    -3>> =suggVerb(@, ":3s")                            # Conjugaison erronée. Accord avec « \1 \2… ». Le verbe devrait être à la 3ᵉ personne du singulier.

TEST: La {{N.S.A.}} {{espionneras}} toujours tout le monde
TEST: La suspicion envers les élus {{accroissaient}}…                                               ->> accroissait
TEST: Le chien n’{{es}} pas mort.
TEST: Ce roman-là de Jean-Paul Sartre {{es}} passionnant.
TEST: Cette confusion qui {{donnent}} le tournis.
TEST: La Corée {{peux}} gagner.
10736
10737
10738
10739
10740
10741
10742
10743

10744
10745
10746
10747

10748
10749
10750
10751

10752
10753
10754
10755
10756
10757
10758
10759
10760
10761
10762
10763

10764
10765
10766
10767

10768
10769
10770
10771
10772
10773
10774
10775
10776
10777
10778
10779
10780
10781
10782
10783
10784
10785
10786




10787
10788
10789
10790
10791
10792
10793
10794

10795
10796
10797
10798
10799
10800
10801
10802
10803

10804
10805
10806
10807
10808
10809
10810
10811
10812
10813
10814
10815
10816
10817
10818
10819
10820
10821





10822
10823
10824
10825
10826
10827
10828
10856
10857
10858
10859
10860
10861
10862

10863
10864
10865
10866

10867
10868
10869
10870

10871
10872
10873
10874
10875
10876
10877
10878
10879
10880
10881
10882

10883
10884
10885
10886

10887
10888
10889
10890
10891
10892
10893
10894
10895
10896
10897
10898
10899
10900
10901
10902




10903
10904
10905
10906
10907
10908
10909
10910
10911
10912
10913

10914
10915
10916
10917
10918
10919
10920
10921
10922

10923
10924
10925
10926
10927
10928
10929
10930
10931
10932
10933
10934
10935
10936





10937
10938
10939
10940
10941
10942
10943
10944
10945
10946
10947
10948







-
+



-
+



-
+











-
+



-
+















-
-
-
-
+
+
+
+







-
+








-
+













-
-
-
-
-
+
+
+
+
+







TEST: La moitié d’entre elles voient leurs loyers diminuer depuis le début de l’année
TEST: Une partie de ces propositions étaient naïves
TEST: tu n’acceptais jamais de danser avec quelqu’un si tu avais refusé à quelqu’un d’autre au début


## 1pl
__[i]/conj(conj_nous_pronom)__
    ^ *nous +> +({w1})  @@$
    ^ *nous +({w1})  @@$
    <<- morphex(\1, ":V", ":(?:1p|3[sp])") and not after("^ +(?:je|tu|ils?|elles?|on|[vn]ous)")
    -1>> =suggVerb(@, ":1p")                                 # Conjugaison erronée. Accord avec « nous ». Le verbe devrait être à la 1ʳᵉ personne du pluriel.
__[i]/conj(conj_nous_qui)__
    ^ *nous +qui +>? *({w1})  @@$
    ^ *nous +qui +({w1})  @@$
    <<- morphex(\1, ":V", ":[13]p") and not after("^ +(?:je|tu|il|elle|on|[vn]ous)")
    -1>> =suggVerb(@, ":1p")                                 # Conjugaison erronée. Accord avec « nous ». Le verbe devrait être à la 1ʳᵉ personne du pluriel.
__[i]/conj(conj_nous)__
    ^ *nous +(?:qui +(?:> +|)|> +)(\w+ont)  @@$
    ^ *nous +(?:qui +|)(\w+ont)  @@$
    <<- morphex(\1, ":V", ":1p") and not after("^ +(?:ils|elles)")
    -1>> =suggVerb(@, ":1p")                                 # Conjugaison erronée. Accord avec « nous ». Le verbe devrait être à la 1ʳᵉ personne du pluriel.

TEST: nous {{donné}} trop de considération
TEST: nous vous {{donnerez}} trop de considération
TEST: nous qui {{somme}} si savants
TEST: nous qui {{mourront}} pour toi.


## 2pl
__[i]/conj(conj_vous_pronom)__
    ^ *vous +> +({w1})  @@$
    ^ *vous +({w1})  @@$
    <<- morphex(\1, ":V", ":(?:2p|3[sp])") and not after("^ +(?:je|ils?|elles?|on|[vn]ous)")
    -1>> =suggVerb(@, ":2p")                                 # Conjugaison erronée. Accord avec « vous ». Le verbe devrait être à la 2ᵉ personne du pluriel.
__[i]/conj(conj_vous_qui)__
    ^ *vous +qui +>? *({w1})  @@$
    ^ *vous +qui +({w1})  @@$
    <<- morphex(\1, ":V", ":2p") and not after("^ +(?:je|ils?|elles?|on|[vn]ous)")
    -1>> =suggVerb(@, ":2p")                                 # Conjugaison erronée. Accord avec « vous ». Le verbe devrait être à la 2ᵉ personne du pluriel.

TEST: vous {{donné}} du bonheur
TEST: vous lui {{donner}} du temps
TEST: vous qui {{avançait}} dans la nuit comme des ombres furtives



## 3pl
__[i]/conj(conj_ils)__
    (ils) +({w_2})  @@0,$
    <<- morphex(\2, ":V", ":(?:3p|P|Q|G)") and not (morph(\2, ":[PQ]", False) and morph(word(-1), ":V0.*:3p", False, False))
    -2>> =suggVerb(@, ":3p")                                # Conjugaison erronée. Accord avec « \1 ». Le verbe devrait être à la 3ᵉ personne du pluriel.
    <<- __also__ and morph(\2, ":3s", False) -1>> il        # Accord avec « \2 ».
__[i]/conj(conj_ils_pronom)__
    (ils) +> +({w_2})  @@0,$
    <<- morphex(\2, ":V", ":(?:3p|P|G)") -2>> =suggVerb(@, ":3p")   # Conjugaison erronée. Accord avec « \1 ». Le verbe devrait être à la 3ᵉ personne du pluriel.
    <<- __also__ and morph(\2, ":3s", False) -1>> il                # Accord avec « \2 ».
#__[i]/conj(conj_ils_pronom)__
#    (ils) +> +({w_2})  @@0,$
#    <<- morphex(\2, ":V", ":(?:3p|P|G)") -2>> =suggVerb(@, ":3p")   # Conjugaison erronée. Accord avec « \1 ». Le verbe devrait être à la 3ᵉ personne du pluriel.
#    <<- __also__ and morph(\2, ":3s", False) -1>> il                # Accord avec « \2 ».

TEST: {{Ils}} {{vienne}} souvent.
TEST: Ils ne m’{{attends}} pas.
TEST: {{Ils}} vous le {{donne}}.


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

TEST: Ceux qui {{chante}} toute la journée…
TEST: Celles qui {{pense}}.


__[i]/conj(conj_ceux_là_celles_ci_lesquels)__
    (ce(?:ux-(?:ci|là)|lles-(?:ci|là))|lesquel(?:le|)s)(?: +qui|) +>? *({w_1})  @@0,$
    (ce(?:ux-(?:ci|là)|lles-(?:ci|là))|lesquel(?:le|)s) +(?:qui +|)({w_1})  @@0,$
    <<- morphex(\2, ":V", ":(?:3p|P|Q|G)") and not morph(word(-1), ":[VR]", False, False)
    and not (morph(\2, ":Y", False) and re.search(r"(?i)lesquel", \1) and not re.search(" qui |>", \0))
    -2>> =suggVerb(@, ":3p")                                # Conjugaison erronée. Accord avec « \1 ». Le verbe devrait être à la 3ᵉ personne du singulier.

TEST: lesquels {{devienne}} des ennuyeux incomparables.
TEST: Mais parmi les millions de causes à défendre, lesquelles choisir ?


__[i]/conj(conj_elles)__
    (?<![dD]’)(elles) +({w_2})  @@0,$
    <<- morphex(\2, ":V", ":(?:3p|P|Q|G)") and not morph(word(-1), ":R", False, False) and not (morph(\2, ":[PQ]", False) and morph(word(-1), ":V0.*:3p", False, False))
    -2>> =suggVerb(@, ":3p")                                # Conjugaison erronée. Accord avec « \1 ». Le verbe devrait être à la 3ᵉ personne du pluriel.
    <<- __also__ and morph(\2, ":3s", False) -1>> elle      # Accord avec « \2 ».
__[i]/conj(conj_elles_pronom)__
    (?<![dD]’)(elles) +> +({w_2})  @@0,$
    <<- morphex(\2, ":V", ":(?:3p|P|G)") and not morph(word(-1), ":R", False, False)
    -2>> =suggVerb(@, ":3p")                                # Conjugaison erronée. Accord avec « \1 ». Le verbe devrait être à la 3ᵉ personne du pluriel.
    <<- __also__ and morph(\2, ":3s", False) -1>> elle      # Accord avec « \2 ».
#__[i]/conj(conj_elles_pronom)__
#    (?<![dD]’)(elles) +> +({w_2})  @@0,$
#    <<- morphex(\2, ":V", ":(?:3p|P|G)") and not morph(word(-1), ":R", False, False)
#    -2>> =suggVerb(@, ":3p")                                # Conjugaison erronée. Accord avec « \1 ». Le verbe devrait être à la 3ᵉ personne du pluriel.
#    <<- __also__ and morph(\2, ":3s", False) -1>> elle      # Accord avec « \2 ».

TEST: {{elles}} {{avance}} rapidement sur ce projet
TEST: {{Elles}} n’y {{comprenne}} rien
TEST: L’expérience sensible qu’il nous restera bientôt d’elles est à peu près


# on / ont
10843
10844
10845
10846
10847
10848
10849
10850

10851
10852
10853
10854
10855

10856
10857
10858
10859
10860
10861
10862
10863
10864
10865
10866
10867
10868

10869
10870
10871
10872
10873
10874
10875
10876
10877
10878
10879
10880
10881
10882
10883
10884
10885
10886
10887
10888
10889
10890
10891
10892
10893





10894
10895
10896
10897
10898
10899
10900
10963
10964
10965
10966
10967
10968
10969

10970
10971
10972
10973
10974

10975
10976
10977
10978
10979
10980
10981
10982
10983
10984
10985
10986
10987

10988
10989
10990
10991
10992
10993
10994
10995
10996
10997
10998
10999
11000
11001
11002
11003
11004
11005
11006
11007
11008





11009
11010
11011
11012
11013
11014
11015
11016
11017
11018
11019
11020







-
+




-
+












-
+




















-
-
-
-
-
+
+
+
+
+







TEST: j’ai, tu as, ils ont, elles {{on}}
TEST: Or parmi celles-ci on trouve typiquement d’un côté les structures


# L’accord par syllepse est obligatoire après /la plupart/, ainsi qu’après /nombre/ et /quantité/ employés sans déterminant. L’accord se fait avec le « pseudo-complément ».

__[i]/conj(conj_beaucoup_d_aucuns_la_plupart)__
    (beaucoup|d’aucuns|la plupart) +>? *({w_2})  @@0,$
    (beaucoup|d’aucuns|la plupart) +({w_2})  @@0,$
    <<- morphex(\2, ":V", ":(?:3p|P|Q|G)") and not morph(word(-1), ":[VR]|>de ", False, False)
    -2>> =suggVerb(@, ":3p")                                # Conjugaison erronée. Accord avec « \1 ». Le verbe devrait être à la 3ᵉ personne du pluriel.

__[i]/conj(conj_beaucoup_d_aucuns_la_plupart_qui)__
    (beaucoup|d’aucuns|la plupart) +qui +>? *({w_2})  @@0,$
    (beaucoup|d’aucuns|la plupart) +qui +({w_2})  @@0,$
    <<- morphex(\2, ":V", ":(?:3p|P|Q|G)") and not morph(word(-1), ":[VR]", False, False)
    -2>> =suggVerb(@, ":3p")                                # Conjugaison erronée. Accord avec « \1 ». Le verbe devrait être à la 3ᵉ personne du pluriel.

TEST: la plupart des hommes {{vienne}}
TEST: La plupart {{admet}}
TEST: beaucoup {{vienne}}
TEST: d’aucuns {{pense}} que c’est faux
TEST: beaucoup qui ne {{pense}} jamais à rien, mais qui ont quand même des avis sur tout.
TEST: beaucoup entre la peste et le choléra.


__[i]/conj(conj_certains_tous_plusieurs)__
    (?<!de )(certaine?s|tou(?:te|)s|plusieurs)(?: +qui|) +>? *({w_2})  @@0,$
    (?<!de )(certaine?s|tou(?:te|)s|plusieurs) +(?:qui +|)({w_2})  @@0,$
    <<- morphex(\2, ":V", ":(?:G|N|A|3p|P|Q)") and not morph(word(-1), ":[VR]", False, False)
    -2>> =suggVerb(@, ":3p")                                # Conjugaison erronée. Accord avec « \1 ». Le verbe devrait être à la 3ᵉ personne du pluriel.

TEST: certains {{prenne}} leur temps
TEST: Plusieurs qui {{pense}} que c’est une arnaque se sont quand même trompés.


__[i]/conj(conj_det_plur_nom)__
    ([cmts]es|[nv]os|leurs|quelques) +({w_2}) +({w_2})  @@0,w,$
    <<- morph(\2, ":[NAQ].*:[pi]", False) and morphex(\3, ":V", ":(?:[13]p|P|Y|G|A.*:e:[pi])") and morphex(word(-1), ":C", ":[YP]", True)
    and not( morph(\3, ":3s", False) and before(r"(?i)\b(?:l[ea] |l’|une? |ce(?:tte|t|) |[mts](?:on|a) |[nv]otre ).+ entre .+ et ") ) >>>
    <<- not checkAgreement(\2, \3)
    -3>> =suggVerb(@, ":3p")                                # Conjugaison erronée. Accord avec « \1 \2… ». Le verbe devrait être à la 3ᵉ personne du pluriel.
    <<- __else__ and isAmbiguousAndWrong(\2, \3, ":p", ":3p")
    -3>> =suggVerb(@, ":3p", suggPlur)                      # Accord avec « \1 \2… » incorrect. Conjugaison erronée ou accord nom/adjectif incorrect.
__[i]/conj(conj_det_plur_nom_qui)__
    ([cmts]es|[nv]os|leurs|quelques) +({w_2}) +qui +({w_2})  @@0,w,$
    <<- morph(\2, ":[NAQ].*:[pi]", False) and morphex(\3, ":V", ":(?:[13]p|P|Y|G|A.*:e:[pi])") and morphex(word(-1), ":C", ":[YP]", True)
    and not( morph(\3, ":3s", False) and before(r"(?i)\b(?:l[ea] |l’|une? |ce(?:tte|t|) |[mts](?:on|a) |[nv]otre ).+ entre .+ et ") )
    -3>> =suggVerb(@, ":3p")                                # Conjugaison erronée. Accord avec « \1 \2… ». Le verbe devrait être à la 3ᵉ personne du pluriel.
__[i]/conj(conj_det_plur_nom_pronom)__
    ([cmts]es|[nv]os|leurs|quelques) +({w_2}) +(?:qui +|)> +({w_2})  @@0,w,$
    <<- morph(\2, ":[NAQ].*:[pi]", False) and morphex(\3, ":V", ":(?:[13]p|P|Y|G)") and morphex(word(-1), ":C", ":[YP]", True)
    and not( morph(\3, ":3s", False) and before(r"(?i)\b(?:l[ea] |l’|une? |ce(?:tte|t|) |[mts](?:on|a) |[nv]otre ).+ entre .+ et ") )
    -3>> =suggVerb(@, ":3p")                                # Conjugaison erronée. Accord avec « \1 \2… ». Le verbe devrait être à la 3ᵉ personne du pluriel.
#__[i]/conj(conj_det_plur_nom_pronom)__
#    ([cmts]es|[nv]os|leurs|quelques) +({w_2}) +(?:qui +|)> +({w_2})  @@0,w,$
#    <<- morph(\2, ":[NAQ].*:[pi]", False) and morphex(\3, ":V", ":(?:[13]p|P|Y|G)") and morphex(word(-1), ":C", ":[YP]", True)
#    and not( morph(\3, ":3s", False) and before(r"(?i)\b(?:l[ea] |l’|une? |ce(?:tte|t|) |[mts](?:on|a) |[nv]otre ).+ entre .+ et ") )
#    -3>> =suggVerb(@, ":3p")                                # Conjugaison erronée. Accord avec « \1 \2… ». Le verbe devrait être à la 3ᵉ personne du pluriel.

TEST: Ses « chiens » {{coure}} sur ma pelouse.
TEST: mes filles {{passe}} ce matin
TEST: vos filles {{passes}} ce matin
TEST: ces travaux qui {{demande}} tant d’efforts.
TEST: vos questions ne {{réclame}} aucune réflexion.
TEST: le lien entre les agences de renseignement et ces mêmes entreprises pouvait reposer sur des activités de surveillance à proprement parler.
10913
10914
10915
10916
10917
10918
10919
10920
10921
10922
10923
10924





10925
10926
10927
10928
10929
10930
10931
11033
11034
11035
11036
11037
11038
11039





11040
11041
11042
11043
11044
11045
11046
11047
11048
11049
11050
11051







-
-
-
-
-
+
+
+
+
+







    <<- __else__ and (\1 == "certaines" or \1 == "Certaines") and isVeryAmbiguousAndWrong(\2, \3, ":f:p", ":3p", isStart())
    -3>> =suggVerb(@, ":3p", suggFemPlur)                   # Accord avec « certaines \2… » incorrect. Conjugaison erronée ou accord nom/adjectif incorrect.
__[i]/conj(conj_det_plur_nom_qui_confusion)__
    (les|certaine?s|plusieurs) +({w_2}) +qui +({w_2})  @@0,w,$
    <<- morph(\2, ":[NAQ].*:[pi]", False) and morphex(\3, ":V", ":(?:[13]p|P|Q|Y|G|A.*:e:[pi])") and morphex(word(-1), ":C", ":[YP]", True)
    and not( morph(\3, ":3s", False) and before(r"(?i)\b(?:l[ea] |l’|une? |ce(?:tte|t|) |[mts](?:on|a) |[nv]otre ).+ entre .+ et ") )
    -3>> =suggVerb(@, ":3p")                                # Conjugaison erronée. Accord avec « \1 \2… ». Le verbe devrait être à la 3ᵉ personne du pluriel.
__[i]/conj(conj_det_plur_nom_pronom_confusion)__
    (les|certaine?s|plusieurs) +({w_2}) +(?:qui +|)> +({w_2})  @@0,w,$
    <<- morph(\2, ":[NAQ].*:[pi]", False) and morphex(\3, ":V", ":(?:[13]p|P|Y|G)") and morphex(word(-1), ":C", ":[YP]", True)
    and not( morph(\3, ":3s", False) and before(r"(?i)\b(?:l[ea] |l’|une? |ce(?:tte|t|) |[mts](?:on|a) |[nv]otre ).+ entre .+ et ") )
    -3>> =suggVerb(@, ":3p")                                # Conjugaison erronée. Accord avec « \1 \2… ». Le verbe devrait être à la 3ᵉ personne du pluriel.
#__[i]/conj(conj_det_plur_nom_pronom_confusion)__
#    (les|certaine?s|plusieurs) +({w_2}) +(?:qui +|)> +({w_2})  @@0,w,$
#    <<- morph(\2, ":[NAQ].*:[pi]", False) and morphex(\3, ":V", ":(?:[13]p|P|Y|G)") and morphex(word(-1), ":C", ":[YP]", True)
#    and not( morph(\3, ":3s", False) and before(r"(?i)\b(?:l[ea] |l’|une? |ce(?:tte|t|) |[mts](?:on|a) |[nv]otre ).+ entre .+ et ") )
#    -3>> =suggVerb(@, ":3p")                                # Conjugaison erronée. Accord avec « \1 \2… ». Le verbe devrait être à la 3ᵉ personne du pluriel.

TEST: Les abstentions {{est}} présumée manifester un défaut d’opinion marquée
TEST: Les cours de culture générale nous {{apporte}} de l’ouverture d’esprit.
TEST: Les hommes ne le lui {{pardonnes}} pas.
TEST: Les infirmières à mi-temps ne {{travaille}} pas dans cette aile.
TEST: les données, en quantité plus que suffisante, {{indique}} que…
TEST: Les hommes comme celui-là {{mange}} comme deux.
10958
10959
10960
10961
10962
10963
10964
10965
10966
10967
10968




10969
10970

10971
10972
10973
10974
10975
10976
10977
11078
11079
11080
11081
11082
11083
11084




11085
11086
11087
11088
11089

11090
11091
11092
11093
11094
11095
11096
11097







-
-
-
-
+
+
+
+

-
+









__[i]/conj(conj_des_nom1)__
    ^ *des +({w_2}) +({w_2})  @@w,$
    <<- morph(\1, ":[NAQ].*:[pi]", False) and morphex(\2, ":V", ":(?:[13]p|P|G|Q|A.*:[pi])") and morph(word(1), ":(?:R|D.*:p)|>au ", False, True) >>>
    <<- not morph(\2, ":[NA]", False) -2>> =suggVerb(@, ":3p")                          # Conjugaison erronée. Accord avec « des \1… ». Le verbe devrait être à la 3ᵉ personne du pluriel.
    <<- __else__ and not checkAgreement(\1, \2) -2>> =suggVerb(@, ":3p", suggPlur)      # Conjugaison erronée. Accord avec « des \1… ». Le verbe devrait être à la 3ᵉ personne du pluriel.
__[i]/conj(conj_des_nom2)__
    ^ *des +({w_2}) +> +({w_2})  @@w,$
    <<- morph(\1, ":[NAQ].*:[pi]", False) and morphex(\2, ":V", ":(?:[13]p|P|G|Q)") and morph(word(1), ":(?:R|D.*:p)|>au ", False, True)
    -2>> =suggVerb(@, ":3p")                                # Conjugaison erronée. Accord avec « des \1… ». Le verbe devrait être à la 3ᵉ personne du pluriel.
#__[i]/conj(conj_des_nom2)__
#    ^ *des +({w_2}) +> +({w_2})  @@w,$
#    <<- morph(\1, ":[NAQ].*:[pi]", False) and morphex(\2, ":V", ":(?:[13]p|P|G|Q)") and morph(word(1), ":(?:R|D.*:p)|>au ", False, True)
#    -2>> =suggVerb(@, ":3p")                                # Conjugaison erronée. Accord avec « des \1… ». Le verbe devrait être à la 3ᵉ personne du pluriel.
__[i]/conj(conj_des_nom_qui)__
    ^ *des +({w_2}) +qui +(?:> +|)({w_2})  @@w,$
    ^ *des +({w_2}) +qui +({w_2})  @@w,$
    <<- morph(\1, ":[NAQ].*:[pi]", False) and morphex(\2, ":V", ":(?:[13]p|P|G)")
    -2>> =suggVerb(@, ":3p")                                # Conjugaison erronée. Accord avec « des \1… ». Le verbe devrait être à la 3ᵉ personne du pluriel.

TEST: Des hommes {{arrive}}.
TEST: Des femmes ne {{demande}} rien.
TEST: des femmes qui {{conduise}} la marche du monde.

11017
11018
11019
11020
11021
11022
11023
11024

11025
11026
11027
11028
11029
11030
11031
11032
11033
11034
11035
11036
11037
11038
11039
11040
11041
11042

11043
11044
11045
11046
11047
11048
11049
11137
11138
11139
11140
11141
11142
11143

11144
11145
11146
11147
11148
11149
11150
11151
11152
11153
11154
11155
11156
11157
11158
11159
11160
11161

11162
11163
11164
11165
11166
11167
11168
11169







-
+

















-
+










#### NOMS PROPRES

# 3sg
__[s]/conj(conj_nom_propre)__
    ([A-ZÉÈ][\w-]+) +>? *({w_1})  @@0,$
    ([A-ZÉÈ][\w-]+) +({w_1})  @@0,$
    <<- not before(r"\b(?:et |ou |[dD][eu] |ni |[dD]e l’) *$") and morph(\1, ":M", False) and morphex(\2, ":[123][sp]", ":(?:G|3s|3p!|P|M|[AQ].*:[si])")
    and not morph(word(-1), ":[VRD]", False, False) and not before(r"([A-ZÉÈ][\w-]+), +([A-ZÉÈ][\w-]+), +$")
    and not (morph(\2, ":3p", False) and word(-1))
    -2>> =suggVerb(@, ":3s")
    # Conjugaison erronée. Accord avec « \1 ». Le verbe devrait être à la 3ᵉ personne du singulier.

TEST: Marc {{arrives}} demain.
TEST: Paul ne {{viens}} pas demain.
TEST: Marc Aurèle {{étaient}} l’empereur des Romains. (Pas de trait d’union sur Marc Aurèle.)
TEST: Arthur D. parvient à…
TEST: Les fondateurs pionniers de l’Internet n’avaient pas prévu
TEST: les compteurs Geiger ne détectent pas le polonium
TEST: Des femmes de l’administration Obama y racontent qu’elles ont constaté qu’il leur arrivait régulièrement de ne pas être invitées


# 3pl
__[s]/conj(conj_nom_propre_et_nom_propre)__
    (?<!et |ou |[dD][eu] |ni )([A-ZÉÈ][\w-]+) et ([A-ZÉÈ][\w-]+) +>? *({w_1})  @@0,w,$
    (?<!et |ou |[dD][eu] |ni )([A-ZÉÈ][\w-]+) et ([A-ZÉÈ][\w-]+) +({w_1})  @@0,w,$
    <<- morph(\1, ":M", False) and morph(\2, ":M", False)
    and morphex(\3, ":[123][sp]", ":(?:G|3p|P|Q.*:[pi])") and not morph(word(-1), ":R", False, False)
    -3>> =suggVerb(@, ":3p")
    # Conjugaison erronée. Accord avec « \1 et \2 ». Le verbe devrait être à la 3ᵉ personne du pluriel.

TEST: Samantha et Eva {{viennes}} demain.
TEST: Samantha et Eva leur {{décrive}} une leçon.
11087
11088
11089
11090
11091
11092
11093
11094
11095
11096



11097
11098
11099
11100
11101
11102
11103
11207
11208
11209
11210
11211
11212
11213



11214
11215
11216
11217
11218
11219
11220
11221
11222
11223







-
-
-
+
+
+







    (?:que?|où|comment|combien|dont|quand|pourquoi|l[ea]s?quel(?:le|)s?) +({w_1}[es])(?! je| tu) @@$
    <<- morphex(\1, ":[12][sp]", ":(?:G|W|3[sp]|Y|P|Q|N)") -1>> =suggVerb(@, ":3s")     # Conjugaison erronée. Ce verbe devrait être à la 3ᵉ personne.

TEST: Qu’est-ce que tu crois que {{deviens}} réellement, immanquablement et subitement cet homme après une telle dérouillée ?
TEST: ces sciences, ces religions, ces philosophies ne sont que contes destinés à nous donner l’illusion de la connaissance.


__[i]/conj(conj_que_où_verbe_sujet_3sg)__
    (?:que?|où|comment|combien|dont|quand|pourquoi|l[ea]s?quel(?:le|)s?) +> +({w_1})(?! [jJ]e| [tT]u| [nNvV]ous| [eE]t )  @@$
    <<- morphex(\1, ":[12][sp]", ":(?:G|W|3[sp])") -1>> =suggVerb(@, ":3s")         # Conjugaison erronée. Ce verbe devrait être à la 3ᵉ personne.
#__[i]/conj(conj_que_où_verbe_sujet_3sg)__
#    (?:que?|où|comment|combien|dont|quand|pourquoi|l[ea]s?quel(?:le|)s?) +({w_1})(?! [jJ]e| [tT]u| [nNvV]ous| [eE]t )  @@$
#    <<- morphex(\1, ":[12][sp]", ":(?:G|W|N|3[sp])") -1>> =suggVerb(@, ":3s")         # Conjugaison erronée. Ce verbe devrait être à la 3ᵉ personne.

TEST: peu importe ce que tu crois du lieu où l’{{abandonnerais}} ce salopard…


__[i]/conj(conj_puisse)__
    (puisses?) ({w_2})  @@0,$
    <<- isStart() >>>
11113
11114
11115
11116
11117
11118
11119
11120
11121


11122
11123
11124
11125


11126
11127
11128
11129

11130
11131
11132
11133

11134
11135
11136
11137

11138
11139
11140
11141
11142

11143
11144
11145
11146
11147

11148
11149
11150
11151

11152
11153
11154
11155
11156
11157
11158
11159
11160
11161
11162
11163

11164
11165
11166
11167
11168
11169
11170
11233
11234
11235
11236
11237
11238
11239


11240
11241
11242
11243


11244
11245
11246
11247
11248

11249
11250
11251
11252

11253
11254
11255
11256

11257
11258
11259
11260


11261
11262
11263
11264


11265
11266
11267
11268

11269
11270
11271
11272
11273
11274
11275
11276
11277
11278
11279
11280
11281
11282
11283
11284
11285
11286
11287
11288
11289







-
-
+
+


-
-
+
+



-
+



-
+



-
+



-
-
+



-
-
+



-
+












+







!!
!!
!!!! Formes interrogatives ?                                                                        
!!
!!

__[i]/inte(inte_union_xxxe_je)__
    (?<![jJ]’)({w_2}[éèe]) je(?! +[nmts]’)  @@0
    <<- morphex(\1, ":V.*:1[sŝś]", ":[GNW]") and not before(r"(?i)\bje +>? *$") and not morph(word(1), ":(?:Oo|X|1s)", False, False)
    (?<![jJ]’)({w_2}[éèe]) je  @@0
    <<- morphex(\1, ":V.*:1[sŝś]", ":[GNW]") and not before(r"(?i)\bje +$") and morphex(word(1), ":", ":(?:Oo|X|1s)", True)
    ->> =\1[:-1]+"é-je"                                                                             # Forme interrogative ? Mettez un trait d’union.
__[i]/inte(inte_union_xxx_je)__
    (?<![jJ]’)({w_2}[is]) je(?! +[nmts]’)  @@0
    <<- morphex(\1, ":V.*:1s", ":[GNW]") and not before(r"(?i)\b(?:je|tu) +>? *$") and not morph(word(1), ":(?:Oo|X|1s)", False, False)
    (?<![jJ]’)({w_2}[is]) je  @@0
    <<- morphex(\1, ":V.*:1s", ":[GNW]") and not before(r"(?i)\b(?:je|tu) +$") and morphex(word(1), ":", ":(?:Oo|X|1s)", True)
    ->> \1-je                                                                                       # Forme interrogative ? Mettez un trait d’union.
__[i]/inte(inte_union_tu)__
    ({w_1}s) tu  @@0
    <<- not after("^ +(?:en|y|ne|>)") and morphex(\1, ":V.*:2s", ":[GNW]") and not before(r"(?i)\b(?:je|tu) +>? *$")
    <<- morphex(\1, ":V.*:2s", ":[GNW]") and not before(r"(?i)\b(?:je|tu) +$") and morphex(word(1), ":", ":2s", True)
    ->> \1-tu                                                                                       # Forme interrogative ? Mettez un trait d’union.
__[i]/inte(inte_union_il_on)__
    ({w_2}[td]) (?:il|on)  @@0
    <<- not after("^ +(?:en|y|ne|>)") and morphex(\1, ":V.*:3s", ":[GNW]") and not before(r"(?i)\b(?:ce|il|elle|on) +>? *$")
    <<- morphex(\1, ":V.*:3s", ":[GNW]") and not before(r"(?i)\b(?:ce|il|elle|on) +$") and morphex(word(1), ":", ":3s|>y ", True)
    ->> =\0.replace(" ", "-")                                                                       # Forme interrogative ? Mettez un trait d’union.
__[i]/inte(inte_union_elle)__
    (?<![cC]’)({w_2}[td]) elle  @@0
    <<- not after("^ +(?:en|y|ne|aussi|>)") and morphex(\1, ":V.*:3s", ":[GNW]") and not before(r"(?i)\b(?:ce|il|elle|on) +>? *$")
    <<- morphex(\1, ":V.*:3s", ":[GNW]") and not before(r"(?i)\b(?:ce|il|elle|on) +$") and morphex(word(1), ":", ":3s", True)
    ->> \1-elle                                                                                     # Forme interrogative ? Mettez un trait d’union.
__[i]/inte(inte_union_nous)__
    ({w_2}ons) nous  @@0
    <<- not after("^ +(?:en|y|ne|aussi|>)") and morphex(\1, ":V.*:1p", ":[GNW]")
    and not morph(word(-1), ":Os", False, False) and not morph(word(1), ":Y", False, False)
    <<- morphex(\1, ":V.*:1p", ":[GNW]") and not morph(word(-1), ":Os", False, False) and morphex(word(1), ":", ":(?:Y|1p)", True)
    ->> \1-nous                                                                                     # Forme interrogative ? Mettez un trait d’union.
__[i]/inte(inte_union_vous)__
    ({w_2}ez) vous  @@0
    <<- not after("^ +(?:en|y|ne|aussi|>)") and not \1.endswith("euillez") and morphex(\1, ":V.*:2p", ":[GNW]")
    and not morph(word(-1), ":Os", False, False) and not morph(word(1), ":Y", False, False)
    <<- morphex(\1, ":V.*:2p", ":[GNW]|>vouloir .*:E:2p") and not morph(word(-1), ":Os", False, False) and morphex(word(1), ":", ":(?:Y|2p)", True)
    ->> \1-vous                                                                                     # Forme interrogative ? Mettez un trait d’union.
__[i]/inte(inte_union_ils_elles)__
    (?<![cC]’)({w_1}nt) (?:ils|elles)  @@0
    <<- not after("^ +(?:en|y|ne|aussi|>)") and morphex(\1, ":V.*:3p", ":[GNW]") and not before(r"(?i)\b(?:ce|ils|elles) +>? *$")
    <<- morphex(\1, ":V.*:3p", ":[GNW]") and not before(r"(?i)\b(?:ce|ils|elles) +$") and morphex(word(1), ":", ":3p", True)
    ->> =\0.replace(" ", "-")                                                                       # Forme interrogative ? Mettez un trait d’union.

TEST: {{mangé je}} {{ça}} avec dégoût ?
TEST: {{viendrais je}} à la fête ?
TEST: {{Seras tu}} là ?
TEST: {{prend on}} le temps d’y réfléchir ?
TEST: {{vient elle}} souvent ?
TEST: {{viennent elles}} souvent ?
TEST: {{retrouverons nous}} enfin la tranquilité ?
TEST: Mais {{soutiendrez vous}} cette proposition ?
TEST: {{Viendront ils}} demain ?
TEST: je ne comprenais pas pourquoi c’était elle qui était punie et que personne ne parlait de celui qui avait fait ça.
TEST: Veuillez vous instruire avant de contester ces mesures.
TEST: C’était elle qui avait pris le contrôle.


__[i]/inte(inte_je)__
    ({w1})-je  @@0
    <<- morphex(\1, ":V", ":1[sśŝ]") -1>> =suggVerb(@, ":1ś")                                       # Forme interrogative : « \1 » n’est pas un verbe à la 1ʳᵉ personne du singulier.
    <<- not morph(\1, ":V", False) -1>> =suggSimil(\1, ":1[sśŝ]")                                   # Forme interrogative : « \1 » n’est pas un verbe à la 1ʳᵉ personne du singulier.
11243
11244
11245
11246
11247
11248
11249
11250

11251
11252
11253
11254
11255
11256
11257
11258
11259
11260
11261
11262
11263
11264
11265
11266
11267
11268
11269
11270

11271
11272
11273
11274
11275
11276
11277
11278
11279
11280
11281
11282
11283
11284
11285
11286
11287
11288



11289
11290
11291
11292
11293


11294
11295
11296
11297
11298
11299
11300
11301

11302
11303
11304
11305

11306
11307
11308
11309
11310
11311
11312
11313
11314
11315

11316
11317
11318
11319
11320
11321
11322
11323
11324
11325
11326

11327
11328
11329
11330
11331
11332
11333
11362
11363
11364
11365
11366
11367
11368

11369
11370
11371
11372
11373
11374
11375
11376
11377
11378
11379
11380
11381
11382
11383
11384
11385
11386
11387
11388

11389



11390
11391
11392
11393
11394
11395
11396
11397
11398






11399
11400
11401
11402
11403
11404
11405
11406
11407
11408
11409
11410
11411
11412
11413
11414
11415

11416
11417
11418
11419

11420
11421
11422
11423
11424
11425
11426
11427
11428
11429

11430
11431
11432
11433
11434
11435
11436
11437
11438
11439
11440

11441
11442
11443
11444
11445
11446
11447
11448







-
+



















-
+
-
-
-









-
-
-
-
-
-
+
+
+





+
+







-
+



-
+









-
+










-
+








!!!! Verbe auxiliaire                                                                               

__[i]/conf(conf_avoir_sujet_participe_passé)__
    ({avoir})-(?:je|tu|ils?|elles?|on) +({ppas})  @@0,$
    <<- morph(\1, ">avoir ", False) and morph(\2, ":V.......e_.*:Q", False) -1>> _  # Incohérence. La forme verbale “\2” ne peut pas être utilisé avec l’auxiliaire “avoir”, seulement avec l’auxiliaire “être”.
__[i]/conf(conf_sujet_avoir_participe_passé)__
    (?:j’|je |tu |ils? |elles? |on ) *>? *({avoir}) +({ppas})  @@*,$
    (?:j’|je |tu |ils? |elles? |on ) *({avoir}) +({ppas})  @@*,$
    <<- morph(\1, ">avoir ", False) and morph(\2, ":V.......e_.*:Q", False) -1>> _  # Incohérence. La forme verbale “\2” ne peut pas être utilisé avec l’auxiliaire “avoir”, seulement avec l’auxiliaire “être”.

TEST: {{Ait}}-il arrivé à ses fins ?
TEST: je n’{{avais}} pas parti avec eux.
TEST: Avais-je partie liée avec lui ?
TEST: il {{avait}} parti.



!!
!!
!!!! Modes verbaux                                                                                  
!!
!!

# conditionnel / futur

__[i]/vmode(vmode_j_aimerais_vinfi)__
    j(?:e +|’)(aimerai|préf[éè]rerai|apprécierai|voudrai|souhaiterai|désirerai|adorerai) +({w_1})  @@w,$
    <<- morphex(\2, ":[YX]|>y ", "R") and isStart() -1>> \1s        # Si vous exprimez un souhait, utilisez le conditionnel et non le futur.
    <<- morphex(\2, ":[YX]|>(?:y|ne|que?) ", ":R") and isStart() -1>> \1s                           # Si vous exprimez un souhait, utilisez le conditionnel et non le futur.
__[i>/vmode(vmode_j_aimerais_pronom)__
    j(?:e +|’)(aimerai|préf[éè]rerai|apprécierai|voudrai|souhaiterai|désirerai|adorerai) +(?:que? |>)  @@w
    <<- isStart() -1>> \1s                                          # Si vous exprimez un souhait, utilisez le conditionnel et non le futur.

TEST: J’{{aimerai}} savoir ce dont il retourne.
TEST: dans tous les cas j’{{aimerai}} ne rien savoir
TEST: Je {{voudrai}} qu’il soit déjà là.
TEST: J’aimerai ces cours-là autant que les autres.
TEST: J’aimerai la danse et la musique, puisque vous l’exigez.
TEST: Je sais que j’aimerai ça, tout comme lui.


__[i>/vmode(vmode_j_aurais_aimé_que_avoir_être1)__
    j’(aurai) +(?:aimé|souhaité|préféré|voulu|apprécié|désiré) +(?:que? |ne |> )  @@2
    <<- -1>> aurais|eusse                           # Pour un souhait passé, utilisez le conditionnel passé et non le futur antérieur. Exemple pour le futur antérieur : « quand j’aurai fini… »
__[i]/vmode(vmode_j_aurais_aimé_que_avoir_être2)__
    j’(aurai) +(?:aimé|souhaité|préféré|voulu|apprécié|désiré) +(?:[nmtsl]’|)({infi})  @@2,$
    <<- morph(\2, ":Y", False)
__[i]/vmode(vmode_j_aurais_aimé_que_avoir_être)__
    j’(aurai) +(?:aimé|souhaité|préféré|voulu|apprécié|désiré|adoré) +(que?|ne|{infi})  @@2,$
    <<- morph(\2, ":Y|>(?:ne|que?) ", False)
    -1>> aurais|eusse                               # Pour un souhait passé, utilisez le conditionnel passé et non le futur antérieur. Exemple pour le futur antérieur : « quand j’aurai fini… »

TEST: J’{{aurai}} aimé nous offrir ce magnifique cadeau.
TEST: j’{{aurai}} voulu être un artiste.
TEST: j’{{aurai}} préféré ne pas avoir à l’entendre.
TEST: j’{{aurai}} préféré l’entendre un autre jour.
TEST: j’{{aurai}} aimé que vous m’en parliez.
TEST: Quand j’en aurai fini avec eux, vous aurez du mal à les reconnaître.
TEST: Quand j’aurai fini ce boulot, je ne sais pas ce que je ferai.
TEST: Quand j’aurai soif et faim, je m’arrêterai.


# Si suivi du conditionnel ou du subjonctif
__[i]/vmode(vmode_si_sujet1)__
    si +({w1}) +>? *({w_2})  @@w,$
    si +({w1}) +({w_2})  @@w,$
    <<- morph(\1, ":(?:Os|M)", False) and morphex(\2, ":[SK]", ":(?:G|V0|I)") and isStart()
    -2>> _                                                                          # Ce verbe ne devrait être ni au conditionnel, ni au subjonctif.
__[i]/vmode(vmode_si_sujet2)__
    (?:si [jt]’|s’ils? )>? *({w_2})  @@$
    (?:si [jt]’|s’ils? +)({w_2})  @@$
    <<- morphex(\1, ":[SK]", ":(?:G|V0|I)") and isStart()
    -1>> _                                                                          # Ce verbe ne devrait être ni au conditionnel, ni au subjonctif.

TEST: Si Pierre {{avancerait}} sa voiture de quelques mètres, ça nous permettrait de passer.
TEST: s’ils ne {{mangeraient}} pas tous les jours, ils seraient moins gros.


# Dès que + indicatif
__[i]/vmode(vmode_dès_que)__
    dès +que? +({w_2}) +>? *({w_2})  @@w,$
    dès +que? +({w_2}) +({w_2})  @@w,$
    <<- morph(\1, ":(?:Os|M)", False) and morphex(\2, ":S", ":[IG]")    -2>> =suggVerbMode(@, ":I", \1)     # Ce verbe ne devrait pas être au subjonctif.
#    <<- morph(\1, ":(?:Os|M)", False) and morph(\2, ":K", False)        -2>> =suggVerbMode(@, ":If", \1)    # Ce verbe ne devrait pas être au conditionnel.

#TEST: dès que je le {{verrais}}
TEST: dès qu’il le {{voie}}
TEST: donnant à entendre qu’il avait l’intention de violer Laura dès qu’il en aurait l’occasion


# verbe que + subjonctif
__[i]/vmode(vmode_qqch_que_subjonctif1)__
    (afin|avant|pour|quoi|(?:perm|fa|v[oe]|ordonn|exig|désir|dout|suff|préf[éè]r)\w+) +que? +({w_2}) +>? *({w_2})  @@0,w,$
    (afin|avant|pour|quoi|(?:perm|fa|v[oe]|ordonn|exig|désir|dout|suff|préf[éè]r)\w+) +que? +({w_2}) +({w_2})  @@0,w,$
    <<- morph(\1, ">(?:afin|avant|pour|quoi|permettre|falloir|vouloir|ordonner|exiger|désirer|douter|préférer|suffire) ", False)
    and morph(\2, ":(?:Os|M)", False) and morphex(\3, ":I", ":[GYS]")
    and not (morph(\1, ">douter ", False) and morph(\3, ":(?:If|K)", False))
    -3>> =suggVerbMode(@, ":S", \2)                                                 # Après « \1 que », ce verbe devrait être au subjonctif.

TEST: Il suffit qu’il {{court}} plus
TEST: Je veux qu’il {{finit}} son repas.
11355
11356
11357
11358
11359
11360
11361
11362

11363
11364
11365
11366
11367
11368
11369
11370
11371
11372

11373
11374
11375
11376
11377
11378
11379
11380
11381
11382
11383
11384
11385
11386
11387

11388
11389
11390
11391
11392
11393
11394
11470
11471
11472
11473
11474
11475
11476

11477
11478
11479
11480
11481
11482
11483
11484
11485
11486

11487
11488
11489
11490
11491
11492
11493
11494
11495
11496
11497
11498
11499
11500
11501

11502
11503
11504
11505
11506
11507
11508
11509







-
+









-
+














-
+









# Malgré que + subjonctif
# «Malgré que» peut être utilisé délibérément pour un parler populaire qui ignore le subjonctif.
# --> pas de règle de contrôle sur ce point.

__[i]/vmode(vmode_qqch_que_subjonctif2)__
    (?:à condition|pour peu|il >  peut) +que? +({w1}) +>? *({w_2})  @@w,$
    (?:à condition|pour peu|il +peut) +que? +({w1}) +({w_2})  @@w,$
    <<- morph(\1, ":(?:Os|M)", False) and morphex(\2, ":", ":[GYS]") -2>> =suggVerbMode(@, ":S", \1)    # Ce verbe devrait être au subjonctif.

TEST: à condition qu’il {{finit}} son boulot.
TEST: pour peu qu’il {{prend}} son devoir sérieux… 
TEST: il se peut que nous {{avons}} tort.


# indicatif nécessaire
__[i]/vmode(vmode_sujet_indicatif)__
    ^ *(je|j’(?:en|y)|tu|ils?|elles?|on|nous|vous) +>? *({w_2})  @@*,$
    ^ *(je|j’(?:en|y)|tu|ils?|elles?|on|nous|vous) +({w_2})  @@*,$
    <<- morphex(\2, ":S", ":[GIK]") and not re.search("^e(?:usse|û[mt]es|ût)", \2) 
    -2>> =suggVerbMode(@, ":I", \1)                                                                 # Ce verbe ne devrait pas être au subjonctif.
__[i]/vmode(vmode_j_indicatif)__
    ^ *j’({w_2})  @@$
    <<- morphex(\1, ":S", ":[GIK]") and \1 != "eusse" -1>> =suggVerbMode(@, ":I", "je")             # Ce verbe ne devrait pas être au subjonctif.

TEST: Il {{ait}} parti.
TEST: Il en {{conclue}} qu’il a eu raison.
TEST: j’en {{aie}} marre
TEST: j’{{aie}} faim


# Après que + indicatif
__[i]/vmode(vmode_après_que_indicatif)__
    après que? ({w_2}) +>? *({w_2})  @@w,$
    après que? ({w_2}) +({w_2})  @@w,$
    <<- morph(\1, ":(?:Os|M)", False) and (morphex(\2, ":V.*:S", ":[GI]") or morph(\2, ":V0e.*:S", False))
    -2>> =suggVerbMode(@, ":I", \1)
    # Après « après que », le verbe ne s’emploie pas au subjonctif mais à l’indicatif, si l’action s’est déroulée de façon certaine.

TEST: Après qu’il {{ait}} allé
TEST: Après que Paul {{ait}} mangé son repas.
TEST: Après qu’il {{soit}} parti, il plut.