Grammalecte  Check-in [7e911db906]

Overview
Comment:[fr] utilisation des nouvelles commandes isStart(), isEnd(), etc.
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk | fr
Files: files | file ages | folders
SHA3-256: 7e911db906e631da4cd1afbfdfebd46e78bfb34c7dfcd216adbe14a79973d8aa
User & Date: olr on 2017-06-02 04:51:29
Other Links: manifest | tags
Context
2017-06-02
05:13
[fr] utilisation de isRealEnd check-in: 83235f841a user: olr tags: fr, trunk
04:51
[fr] utilisation des nouvelles commandes isStart(), isEnd(), etc. check-in: 7e911db906 user: olr tags: fr, trunk
04:30
[build] new commands: isStart, isEnd, isRealStart, isRealEnd... check-in: 5bbe6273f4 user: olr tags: build, new_feature, trunk
Changes

Modified gc_lang/fr/rules.grx from [f8227a5444] to [a000778ab7].

1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
....
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
....
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
....
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
....
2743
2744
2745
2746
2747
2748
2749
2750
2751
2752
2753
2754
2755
2756
2757
....
2944
2945
2946
2947
2948
2949
2950
2951
2952
2953
2954
2955
2956
2957
2958
....
3122
3123
3124
3125
3126
3127
3128
3129
3130
3131
3132
3133
3134
3135
3136
....
3261
3262
3263
3264
3265
3266
3267
3268
3269
3270
3271
3272
3273
3274
3275
....
3336
3337
3338
3339
3340
3341
3342
3343
3344
3345
3346
3347
3348
3349
3350
....
3618
3619
3620
3621
3622
3623
3624
3625
3626
3627
3628
3629
3630
3631
3632
3633
3634
3635
....
3836
3837
3838
3839
3840
3841
3842
3843
3844
3845
3846
3847
3848
3849
3850
....
3929
3930
3931
3932
3933
3934
3935
3936
3937
3938
3939
3940
3941
3942
3943
....
4239
4240
4241
4242
4243
4244
4245
4246
4247
4248
4249
4250
4251
4252
4253
....
4751
4752
4753
4754
4755
4756
4757
4758
4759
4760
4761
4762
4763
4764
4765
....
4867
4868
4869
4870
4871
4872
4873
4874
4875
4876
4877
4878
4879
4880
4881
....
5950
5951
5952
5953
5954
5955
5956
5957
5958
5959
5960
5961
5962
5963
5964
5965
5966
5967
5968
....
6315
6316
6317
6318
6319
6320
6321
6322
6323
6324
6325
6326
6327
6328
6329
....
7069
7070
7071
7072
7073
7074
7075
7076
7077
7078
7079
7080
7081
7082
7083
....
7092
7093
7094
7095
7096
7097
7098
7099
7100
7101
7102
7103
7104
7105
7106
....
7328
7329
7330
7331
7332
7333
7334
7335
7336
7337
7338
7339
7340
7341
7342
....
7447
7448
7449
7450
7451
7452
7453
7454
7455
7456
7457
7458
7459
7460
7461
7462
7463
7464
....
8018
8019
8020
8021
8022
8023
8024
8025
8026
8027
8028
8029
8030
8031
8032
....
8128
8129
8130
8131
8132
8133
8134
8135
8136
8137
8138
8139
8140
8141
8142
....
9256
9257
9258
9259
9260
9261
9262
9263
9264
9265
9266
9267
9268
9269
9270
....
9312
9313
9314
9315
9316
9317
9318
9319
9320
9321
9322
9323
9324
9325
9326
....
9538
9539
9540
9541
9542
9543
9544
9545
9546
9547
9548
9549
9550
9551
9552
....
9583
9584
9585
9586
9587
9588
9589
9590
9591
9592
9593
9594
9595
9596
9597
.....
10058
10059
10060
10061
10062
10063
10064
10065
10066
10067
10068
10069
10070
10071
10072
.....
10262
10263
10264
10265
10266
10267
10268
10269
10270
10271
10272
10273
10274
10275
10276
.....
10280
10281
10282
10283
10284
10285
10286
10287
10288
10289
10290
10291
10292
10293
10294
10295
10296
10297
10298
10299
10300
10301
10302
.....
10412
10413
10414
10415
10416
10417
10418
10419
10420
10421
10422
10423
10424
10425
10426
.....
10587
10588
10589
10590
10591
10592
10593
10594
10595
10596
10597
10598
10599
10600
10601
10602
10603
10604
10605
TEST: Nous préparons une {{contre–attaque}}.


### ce / cet / cette / ces + nom + là
__[i]/tu(tu_ce_cette_ces_nom_là1)__
    c(?:e[st]?|ette) (({w_2}) là)(?! où)  @@$,w <<- morph(\2, ":[NB]", False) -1>> \2-là            # Il manque probablement un trait d’union.
__[i]/tu(tu_ce_cette_ces_nom_là2)__
    c(?:e[st]?|ette) (({w_2}) la)  @@$,w <<- morph(\2, ":[NB]", False) and not word(1) -1>> \2-là   # Il manque probablement un trait d’union.

TEST: Ces {{trois là}} sont incollables.
TEST: Je connais bien cette {{sensation là}}.
TEST: Laisse ce chiot là où il est !


### Préfixes
................................................................................
__[i]/tu(tu_grand_chose)__              grand chose <<- ->> grand-chose                             # Il manque un trait d’union.
__[i]/tu(tu_grand_père_mère)__          grands? (?:père|mère)s? <<- ->> =\0.replace(" ", "-")       # Il manque un trait d’union.
__[i]/tu(tu_ici_bas)__                  ici bas <<- ->> ici-bas                                     # Il manque un trait d’union.
__[i]/tu(tu_jusque_là)__                jusque là <<- ->> jusque-là                                 # Il manque un trait d’union.
__[i]/tu(tu_là_adverbe)__       là (bas|haut|desso?us|dedans|devant|derrière) @@3 <<- ->> là-\1     # Il manque un trait d’union.
__[i]/tu(tu_n_est_ce_pas)__             n’est(?: ce[ -]pas|-ce-pas) <<- ->> n’est-ce pas            # Un trait d’union.
__[i]/tu(tu_nord_sud_ouest)__           (nord|sud) ouest @@0 <<- ->> \1-ouest                       # Il manque un trait d’union.
__[i]/tu(tu_nord_sud_est)__             (nord|sud) est @@0 <<- not word(1) ->> \1-est               # Il manque un trait d’union.
__[i]/tu(tu_outre_mer)__                outre mer <<- ->> outre-mer                                 # Il manque un trait d’union.
__[i]/tu(tu_ouï_dire)__                 ou[iï] dire <<- morph(word(-1), ":G") ->> ouï-dire          # Il manque un trait d’union.
__[i]/tu(tu_par_préposition)__
    par (desso?us|devant|delà|derrière|dehors|dedans|devers)  @@$ 
    <<- ->> par-\1                                                                                  # Il manque un trait d’union.
__[i]/tu(tu_par_ci_par_là)__            par ci,? par là <<- ->> par-ci par-là|par-ci, par-là        # Trait(s) d’union manquant(s).
__[i]/tu(tu_prêt_à_porter)__
................................................................................
TEST: Elle y arriva {{lors qu}}’elle trouva l’astuce permettant l’ouverture de la porte.
TEST: Dès lors qu’on sait comment s’y prendre, aucune raison de faillir.


# Dialogues
__[u]/virg(virgule_dialogue_après_nom_propre)__
    ([A-ZÉÈ][\w-]+) (\w+-(?:moi|toi|l(?:ui|a|e(?:ur|s|))|nous|vous|je|tu|ils|elles))  @@0,$
    <<- morphex(\1, ":M", ":G") and not morph(\2, ":N", False) and not word(-1)
    -1>> \1,                                                                        # Dialogue ? Ajoutez une virgule pour mettre en incise la personne à qui s’adresse la réplique.

TEST: {{Maria}} donnez-vous du temps ?
TEST: {{Marion}} passe-moi le sel.
TEST: {{Paul}} prends-lui la main.
TEST: Alexandre tient-il ses généraux ?
TEST: Alexandra vient-elle ?
................................................................................
__[i]/ocr(ocr_fut)__        rut <<- ->> fut                                                         # Erreur de numérisation ?

TEST: __ocr__ ce petit {{rut}} traité comme un chien

# il / n
__[s]/ocr(ocr_il)__
    (n )([bcdfghjklmnpqrstvwxz][\w-]+)  @@0,$
    <<- not word(-1) and morph(\2, ":(?:O[on]|3s)", False) -1>> "il "                               # Erreur de numérisation ?

TEST: __ocr__ {{n }}contient trop de soufre.


# il / ils / U / Us
__[s]/ocr(ocr_il_ils2)__
    Us?
................................................................................

TEST: mon {{rackette}} n’a pas porté les fruits espérés.
TEST: Belle qui tient mon vit captif entre tes doigts.


__[i]/conf(conf_ton_son_verbe)__
    [st]on ({w_2})  @@4
    <<- morph(\1, ":V.*:(?:Y|[123][sp])") and \1[0].islower() and not word(-1)
    -1>> =suggSimil(\1, ":[NA]:[me]:[si]")                                                          # Incohérence : « \1 » est un verbe.

TEST: ton {{recèle}} a été dévoilé


__[i]/conf(conf_det_plur_verbe)__
    ([dcmts]es|quelques|aux|[nv]os) +({w_2})  @@0,$
................................................................................
TEST: il faut de plus en plus aider ces gens.


# a / à
__[i]/conf(conf_a_à_tout_à_fait)__  tout (a) fait @@5                                               <<- -1>> à          # Confusion.
__[i]/conf(conf_a_à_jusqu_à)__      jusqu (a) @@6                                                   <<- -1>> à          # Confusion.
__[i]/conf(conf_a_à_grâce_à)__      grâce (a) @@6             <<- morph(word(-1), ":[VN]", False, True) -1>> à          # Confusion probable.
__[i]/conf(conf_a_à_moins_que)__    (a) moins que? @@0                                 <<- not word(-1) -1>> à          # Confusion probable : « à moins que » pour dire « sauf si ».
__[i]/conf(conf_a_à_tout_à_coup)__  tout h?ah? co[uû][pt]?                                          <<- ->> tout à coup # Confusion.
__[i]/conf(conf_a_à_coup_sûr)__     a coup s[uû]r                                                   <<- ->> à coup sûr  # Confusion.
__[i]/conf(conf_a_à_face_à)__       face (a) @@5    <<- not before(r"(?i)\b(?:[lmts]a|leur|une|en) +$") -1>> à          # Confusion.
__[i]/conf(conf_a_à_pas_à_pas)__    pas (a) pas @@4                                                 <<- -1>> à          # Confusion.
__[i]/conf(conf_a_à_par_rapport)__  par rapport (a) ({w_2}) @@12,$  <<- morph(\2, ":(?:D|Oo|M)", False) -1>> à          # Confusion.
__[i]/conf(conf_a_à_être_à)__
    ({etre}) (a)(?! priori| posteriori| fortiori)  @@0,$
................................................................................

TEST: Ce sont des clichés {{au}} {{dépend}} d’un grand chef. Tout ça pour faire du buzz et exister médiatiquement.


# au temps / autant
__[i]/conf(conf_au_temps_pour_moi)__
    (au ?tant?) pour moi @@0
    <<- not word(-1) -1>> au temps                                          # Pour reconnaître son erreur, « au temps pour moi » est l’expression recommandée par l’Académie française.
__[i]/conf(conf_autant_que_faire_se_peut)__
    au t(?:emps|ant?) que f(?:aire|erre|ers?) [sc]e peu[xt]?
    <<- ->> autant que faire se peut                                        # Locution adverbiale : « autant que faire se peut ».|https://fr.wiktionary.org/wiki/autant_que_faire_se_peut

TEST: Je me suis trompé. {{Autant}} pour moi.
TEST: on va y arriver, {{au temps que faire se peut}}…

................................................................................
TEST: Elles étaient à cette date cultivées à l’air libre.
TEST: De fraîche date…


# d’en / dans
__[i]/conf(conf_dans1)__
    (d’en|dan) (?:l(?:es?|a)|une?|d(?:es?|u)|[mts](?:on|a|es)|[nv]o(?:tre|s)|ce(?:tte|t|s|))  @@0
    <<- \1.endswith("en") or before("^ *$") -1>> dans                               # Confusion. Utilisez “dans” pour dire “à l’intérieur de quelque chose”.
__[i]/conf(conf_dans2)__
    ^ *(dents?) (?:l(?:es?|a)|une?|[mts](?:on|a|es)|[nv]o(?:tre|s)|ce(?:tte|t|s|))  @@*
    <<- -1>> dans                                                                   # Confusion. Utilisez “dans” pour dire “à l’intérieur de quelque chose”.

TEST: {{dan}} la voiture
TEST: ils sont partis {{d’en}} une direction différente
TEST: {{dents}} les montagnes au loin.
................................................................................
TEST: dans ses différents ouvrages
TEST: dans ses différents postes gouvernementaux


# eh bien, hé bien / et bien
__[i]/conf(conf_eh_bien)__
    et bien(?! que?| sûr| d’autres| entendu| avant| souvent| longtemps| des| moins| plus| au-delà)
    <<- not word(-1) and not morph(word(1), ":[WAY]", False, False)
    ->> eh bien|hé bien                                     # Confusion probable.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?T1=h%C3%A9&T3.x=0&T3.y=0
__[i]/conf(conf_eh_ben)__
    et (ben)  @@3
    <<- not \1.startswith("B")
    ->> eh ben|hé ben                                       # Confusion probable.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?T1=h%C3%A9&T3.x=0&T3.y=0

TEST: {{et bien}} il y aura des pertes
................................................................................
    -2>> savoir     # Confusion : vous écrivez l’inverse de ce que vous voulez dire.|http://fr.wiktionary.org/wiki/vous_n%E2%80%99%C3%AAtes_pas_sans_savoir

TEST: Vous n’êtes pas sans {{ignorer}} que…


## s’en / sens / sans / cent / cens
__[i]/conf(conf_il_on_s_en)__  (?:ils?|on) (san[sg]|cen[st]|c’en) ({w_2})  @@w,$
    <<- not word(-1) and morph(\2, ":V", False)
    -1>> s’en                                                                                       # Confusion probable.
__[i]/conf(conf_elle_s_en)__  elles? (san[sg]|cen[st]|c’en) ({w_2})  @@w,$
    <<- not word(-1) and morph(\2, ":V", False) and not ( \1 == "sans" and morph(\2, ":[NY]", False) )
    -1>> s’en                                                                                       # Confusion probable.

TEST: il {{c’en}} est vite lassé.
TEST: {{S’en}} était vraiment trop !
TEST: Car {{s’en}} était vraiment fini !
TEST: elle {{sang}} était voulu

................................................................................
__[i]/conj(conj_xxxai_sans_sujet)!3__
    \w*ai(?! je)
    <<- ( morph(\0, ":1s") or ( before("> +$") and morph(\0, ":1s", False) ) ) and not (\0[0:1].isupper() and before0(r"\w"))
    and not before(r"(?i)\b(?:j(?:e |[’'])|moi(?:,? qui| seul) )")
    ->> =suggVerb(@, ":3s")                                     # Incohérence. Ceci est un verbe à la 1ʳᵉ personne du singulier. Sujet (“je” ou “moi qui”) introuvable.
__[i]/conj(conj_xxxes_sans_sujet)!3__
    \w*es(?! tu)
    <<- morphex(\0, ":2s", ":(?:E|G|W|M|J|[13][sp]|2p)") and not \0[0:1].isupper() and not before("^ *$")
    and ( not morph(\0, ":[NAQ]", False) or before("> +$") )
    and not before(r"(?i)\bt(?:u |[’']|oi,? qui |oi seul )")
    ->> =suggVerb(@, ":3s")                                     # Incohérence. Ceci est un verbe à la 2ᵉ personne du singulier. Sujet (“tu” ou “toi qui”) introuvable.
__[i]/conj(conj_xxxas_sans_sujet)!3__
    \w+as(?! tu)
    <<- morphex(\0, ":2s", ":(?:G|W|M|J|[13][sp]|2p)") and not (\0[0:1].isupper() and before0(r"\w"))
    and ( not morph(\0, ":[NAQ]", False) or before("> +$") )
................................................................................
    (tout) (?:débuts|petits) @@0 <<- before(r"\b(aux|[ldmtsc]es|[nv]os|leurs) +$") ~1>> *
__[i](p_les_tout_xxx)__
    (?:[ldmtsc]es|[nv]os|leurs|aux) (tout) ({w_2})  @@w,$
    <<- morph(\2, ":[AQ].*:[pi]", False) ~1>> *


__[i]/gn(gn_tous_deux)__
    (tout) deux  @@0 <<- not word(-1) -1>> tous                                                     # Locution pronominale : « tous deux ».|https://fr.wiktionary.org/wiki/tous_deux

TEST: {{Tout}} deux sont partis les premiers.


__[i]/gn(gn_tous_déterminant_pluriel)__
    tout(?= [cmts]es\b)
    <<- not before(r"(?i)\b(?:d[eu]|avant|après|sur|malgré) +$") ->> tous                           # Erreur d’accord probable.
................................................................................
__[i](p_épaule_contre_épaule)__ épaule contre épaule <<- ~>> *
__[i](p_été_comme_hiver)__      été comme hiver <<- ~>> *
__[i](p_oh_ah_euh_eh_bien)__    (?:oh|ah|euh|eh bien) <<- ~>> *
__[i](p_ex_loc_latine)__        ex (?:nihilo|cathedra|absurdo|abrupto) <<- ~>> *
__[i](p_face_à_face)__          face à face <<- ~>> *
__[i](p_nombre_fois_de_suite)__ (?:deux|trois|quatre|cinq|six|sept|huit|neuf|dix|onze|douze|treize|quatorze|quinze|seize|vingt|trente|quarante|cinquante|soixante|cent) fois de suite <<- ~>> *
__[i](p_grosso_modo)__          grosso modo <<- ~>> *
__[i](p_grand_bien_lui_fasse)__ grand bien lui fasse <<- not word(-1) ~>> *
__[i](p_hier)__                 (?:avant-|)hier(?: matin| soir| après-midi|) <<- ~>> *
__[i](p_hors_de_qqch)__         hors (?:de (?:contrôle|portée)|d’(?:atteinte|état de nuire)|du commun) <<- ~>> *
__[i](p_ici_qqch)__             ici(?: comme ailleurs| ou ailleurs| et (?:là|maintenant)| même|-bas) <<- ~>> *
__[i](p_id_est)__               id est <<- ~>> *
__[i](p_il_y_a_qqch)__          il y a (?:longtemps|peu de temps|très (?:longtemps|peu de temps)|(?:quelques|moins de \d+|\d+) (?:secondes|minutes|heures|jours|semaines|mois|an(?:née|)s|siècles|millénaires)|quelque temps) <<- ~>> *
__[i](p_il_n_y_a_pas_qqch)__    il n’y a pas (?:si |)longtemps <<- ~>> *
__[i](p_illico_presto)__        illico presto <<- ~>> *
................................................................................


## Seconde passe (il faut réorganiser tout le cycle de simplification)

__[i](p_à_nos_yeux)__
    (à (?:[mts]es|[nv]os|leurs) yeux) +({w_1}) @@0,$ <<- not morph(\2, ":A.*:[me]:[pi]", False) ~1>> *
__[i](p_ben_voyons)__
    ben voyons <<- not word(-1) ~>> *
__[i](p_chaque_année_semaine_journée_décennie)__
    (chaque (?:année|semaine|journée|décennie)) +({w_1}) @@0,$ <<- not morph(\2, ":(?:A.*:[fe]:[si]|Oo|[123][sp])", False) ~1>> *
__[i](p_chaque_an_jour_mois)__
    (chaque (?:an|jour|mois)) +({w_1}) @@0,$ <<- not morph(\2, ":(?:A.*:[me]:[si]|Oo|[123][sp])", False) ~1>> *
__[i](p_dans_l_ensemble)__
    (dans l’ensemble) +({w_1}) @@0,$ <<- not morph(\2, ":A.*:[me]:[si]", False) ~1>> *
__[i](p_de_ce_seul_fait)__
................................................................................
    ~2>> ~
__[i](p_astuce_désambiguïsation2)__
    (?:d(?:es? |’)|[mts](?:es|on|a) |ce(?:s|t(?:te|)|rtaine?s|) |[nv](?:otre|os) |leurs |quelques ) *({w_2})( ) *({w_2}) @@w,**,$
    <<- isAmbiguousNAV(\3) and morphex(\1, ":[NAQ]", ">telle ") and not re.search("^[dD](?:’une?|e l(?:a|eur)) ", \0)
    ~2>> ~
__[i](p_astuce_désambiguïsation3)__
    l(?:es? |a |’|eur ) *({w_2})( ) *({w_2})  @@w,**,$
    <<- isAmbiguousNAV(\3) and ( morphex(\1, ":[NAQ]", ":V0a") or (morphex(\1, ":[NAQ]", ":(?:3[sp]|V0a)") and not word(-1)) )
    ~2>> ~

TEST: comme le signe évident d’une politique volontaire
TEST: c’était le signe évident d’une politique volontaire
TEST: ce que c’est : le signe évident d’une politique volontaire


................................................................................
__<i]/sgpl(sgpl_prep_compris_det)__
    ^ *((Compris|Non[- ]compris)es?) +(?:l(?:es?|a)|ce(?:te|t|s|)|leurs?|[mts](?:on|a|es)|[nv]os)  @@*,*
    <<- -1>> \2                                                                                     # Considéré comme préposition, invariable.
__<i]/sgpl(sgpl_prep_entendu_det)__
    ^ *((Entendu|Excepté|Ôté|Supposé|Passé)(?:es?|s)) +(?:l(?:es?|a)|ce(?:te|t|s|)|leurs?|[mts](?:on|a|es)|[nv]os)  @@*,*
    <<- -1>> \2                                                                                     # Considéré comme préposition, invariable.
__[i]/sgpl(sgpl_prep_attendu_que)__
    (attendu(?:es?|s)) que? @@0                         <<- not word(-1) -1>> attendu               # Considéré comme préposition, invariable.
__[i]/sgpl(sgpl_prep_étant_donné)__
    étant donné(?:es?|s)                                <<- not word(-1) ->> étant donné            # Considéré comme préposition, invariable.
__[i]/sgpl(sgpl_prep_vu_det)__
    (vu(?:es?|s)) (?:[lc]es?|la|cette|leurs?|que?) @@0  <<- not word(-1) -1>> vu                    # Considéré comme préposition, invariable.

TEST: {{comprises}} mes prestations sur place
TEST: {{Exceptés}} les petits, tous sont tombes malades.
TEST: {{Attendues}} qu’on n’en sait rien, impossible de tirer des conclusions définitives.
TEST: Il viendra, {{étant donnée}} son addiction…
TEST: {{Vues}} les idioties qu’on entend, normal qu’on perde la tête.
TEST: {{Passées}} les premières heures du jour…
................................................................................


############################## CONFUSIONS, HOMONYMES ET FAUX-AMIS ###############################

# abuser / abusé / abusif
__[i]/conf(conf_abusif)__
    c’est +(abus(?:é|er))  @@$
    <<- not word(1) -1>> abusif                                 # Confusion. Concernant les actes, on parle de pratiques abusives. On abuse des choses ou des personnes.

TEST: C’est {{abusé}} !


# acre / âcre
__[i]/conf(conf_acre)__
    \d+ (âcres?)  @@$
................................................................................
TEST: une économie {{digitale}} ou rien
TEST: Dans l’ère du {{digital}}, tout va plus vite.


## on / ont
__[i>/conf(conf_on1)__
    (ont) [nmts]’(?!(?:ils?|elles?))  @@0
    <<- not word(-1) -1>> on                                                                        # Confusion probable : “ont” est une conjugaison du verbe avoir.

TEST: {{ont}} m’assure qu’il n’y en a pas.
TEST: {{Ont}} n’arrive pas à s’en sortir.


__[i]/conf(conf_on2)__
    (?<![nmts]’)(ont) ({w_1})  @@0,$
................................................................................
TEST: {{Ont}} ne sait pas comment faire.
TEST: qui n’ont somme toute que le désir de vivre paisiblement


__[i]/conf(conf_on3)__
    (ont) (?:l(?:ui|eur)|[nv]ous) ({w_2})  @@0,$
    <<- morphex(\2, ":V.*:(?:[1-3][sp])", ":(?:G|1p)")
    and not ( \0.find(" leur ") and morph(\2, ":[NA].*:[si]", False) ) and not word(-1)
    -1>> on                                                                                         # Confusion probable : “ont” est une conjugaison du verbe avoir.

TEST: {{Ont}} lui avait donné du temps
TEST: {{Ont}} leur prendra tout
TEST: Qu’importe, {{ont}} leur prend tout


................................................................................
    de (quoique) @@3 <<- -1>> quoi que                                                    # Confusion.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=1571

TEST: de {{quoique}} ce soit, je ne veux pas en entendre parler.


# quoiqu’il en coûte
__[i]/conf(conf_quoi_qu_il_en_coûte)__
    (quoiqu il) en (?:co[uû]te) @@0 <<- not word(1) -1>> quoi qu’il                       # Confusion probable.

TEST: Elle y parviendra, {{quoiqu’il}} en coûte.


# raisonner / résonner
__[i]/conf(conf_raisonner)__
    (?:la|les?|[mts]e|[nv]ous) (résonn\w+)  @@$
................................................................................
TEST: S’aimer {{soit-même}}, c’est le début d’une grande histoire d’amour. (Oscar Wilde)
TEST: Je regrette que l’on en soit encore à des considérations que je croyais dépassées
TEST: Quoi qu’il en soit


__[i]/conf(conf_soit1)__
    (soie?s?) ({w_2})  @@0,$
    <<- not word(-1) and morphex(\2, ":[OC]", ":R") -1>> soit                                       # Confusion probable : pour évoquer une option, écrivez “soit”.|https://fr.wiktionary.org/wiki/soit#Conjonction
__[i]/conf(conf_soit2)__
    (soie?s?) [jtcç]’ @@0
    <<- not word(-1) -1>> soit                                                                      # Confusion probable : pour évoquer une option, écrivez “soit”.|https://fr.wiktionary.org/wiki/soit#Conjonction

TEST: {{soi}} je vais au cinéma, {{soi}} je m’abstiens.
TEST: {{soie}} j’arrive avant tout le monde.


# sur / sûr
__[i]/conf(conf_sûr_que)__
................................................................................
__[i](p_lors_de_du_nom)__
    lors d(?:’|e(?:s| la|) |u ) *({w_2})  @@$
    <<- morph(\1, ":[NAQ]", False) and isEndOfNG()
    ~>> *

## doute que
__[i](p_nul_doute_que)__
    nul doute qu  <<- not word(-1) ~>> *
__[i](p_douter_que)__
    (dout\w+)( ) *que?  @@0,*  <<- morph(\1, ">douter ", False) and before(r"(?i)\b(?:[mts]e|[nv]ous) +$") ~2>> ,

## de +
__[i](p_de_nom)__
    d(?:e +|’)(?!autres)({w_2}) @@$
    <<- morphex(\1, ":N", ":[GY]") and isEndOfNG() ~>> *
................................................................................

## s’en / c’en
__[i]/conf(conf_c_en_être)__
    (s’en) (?:n’|)(?:est|seras?|étai[ts]) +({w_2})  @@0,$
    <<- re.search("(?i)^(?:fini|terminé)s?", \2) and morph(word(-1), ":C", False, True)
    -1>> c’en
    # Confusion probable. « C’en est… » équivaut à « ça, c’est… ».|http://fr.wiktionary.org/wiki/c%E2%80%99en_est_fait_de
    <<- re.search("(?i)^(?:assez|trop)$", \2) and (after("^ +d(?:e |’)") or not word(1))
    -1>> c’en
    # Confusion probable. « C’en est… » équivaut à « ça, c’est… ».|http://fr.wiktionary.org/wiki/c%E2%80%99en_est_fait_de
    <<- morphex(\2, ":A", ":[GVW]") and morph(word(-1), ":C", False, True)
    -1>> c’en
    # Confusion probable : “\2” est un adjectif. « C’en est… » équivaut à « ça, c’est… ».3|http://fr.wiktionary.org/wiki/c%E2%80%99en_est_fait_de

TEST: c’en est fini d’eux, ils sont comme morts
................................................................................
    # Conjugaison erronée. Accord avec « vous ». Le verbe devrait être à la 2ᵉ personne du pluriel.

TEST: Vous {{arrivais}} trop tard.


__[i]/conj(conj_vous_verbe2)__
    vous [nm](?:e +(?:les? |l’|la |[nv]ous |)|’)({w_3})  @@$
    <<- morphex(\1, ":V", ":2p") and not word(-1) -1>> =suggVerb(@, ":2p")      # Conjugaison erronée. Accord avec « vous ». Le verbe devrait être à la 2ᵉ personne du pluriel.

TEST: vous ne l’{{avait}} pas vu.
TEST: je crois, vous m’{{avais}} trompé… 


## se + incohérence
__[i]/conj(conj_se_incohérence)__
................................................................................

#### IMPÉRATIF !

# Confusions

__[i]/imp(imp_confusion_2e_pers_pluriel)__
    ({w_2}(?:er|ai[st]|ée?s?)) moi  @@0
    <<- morph(\1, ":V", False) and not word(-1)
    ->> =suggVerbTense(\1, ":E", ":2p") + "-moi"                                    # Confusion probable. Pour l’impératif, écrivez :

TEST: {{Donner moi}} une chance
TEST: je vous en prie, {{prenais moi}} avec vous.
TEST: {{avançait moi}} de l’argent
TEST: {{filé moi}} du fric, bon sang !

................................................................................


__[i]/imp(imp_union_aller_y)!5__
    (?:v(?:iens|enez|enons)|all(?:ons|ez)) y
    <<- not morph(word(1), ":Y", False, False) ->> =\0.replace(" ", "-")                            # Il manque un trait d’union.
__[i]/imp(imp_union_vas_y)!5__
    vas? y
    <<- not word(-1) and not morph(word(1), ":Y", False, False) ->> vas-y                           # Il manque un trait d’union.
__[i]/imp(imp_union_convenir_en)__
    conv(?:iens|enez|enons) en(?! partie) <<- ->> =\0.replace(" ", "-")                             # Il manque un trait d’union.

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

................................................................................
__[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>> >
__[i](p_pro_per_obj27)__    (?:je|tu|ils?|elles?|on) (l’|l(?:es?|a|ui|eur) +|[nv]ous +){w_2} @@* <<- not word(-1) ~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>> >
__[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]’ <<- ~>> >
__[i>(p_pro_per_obj32)__    [mts]e +l’ <<- ~>> >
__[i>(p_pro_per_obj33)__    [nm]’ <<- ~>> >
__[i](p_pro_per_obj34)__    [nmts]e <<- ~>> >
................................................................................
    (?<![dD]’)(une?|[mts](?:on|a)|ce(?:tte|t|)) +({w_2})~ *({w_2})  @@0,w,$
    <<- morphex(word(-1), ":C", ":(?:Y|P)", True) and isAmbiguousAndWrong(\2, \3, ":s", ":3s")
    and not (before(r"(?i)\b(?:et|ou) +$") and morph(\3, ":(?:[123]p|p)", False)) and not before(r"(?i)\bni .* ni\b")
    -3>> =suggVerb(@, ":3s", suggSing)                          # Accord avec « \1 \2… » incorrect. Conjugaison erronée ou accord nom/adjectif incorrect.

__[i]/conj(conj_det_nom_ambiguïté2)__
    (l(?:e(?:ur|) |a |’)) *({w_2})~ *({w_2})  @@0,w,$
    <<- morphex(word(-1), ":C", ":(?:Y|P)", True) and isVeryAmbiguousAndWrong(\2, \3, ":s", ":3s", not word(-1))
    and not (before(r"(?i)\b(?:et|ou) +$") and morph(\3, ":(?:[123]p|p)", False)) and not before(r"(?i)\bni .* ni\b")
    -3>> =suggVerb(@, ":3s", suggSing)                          # Accord avec « \1 \2… » incorrect. Conjugaison erronée ou accord nom/adjectif incorrect.

TEST: mon chat {{sautes}}
TEST: cette fille {{bouffes}} comme mille
TEST: cette marchande {{marchandes}}
TEST: la marchande {{marchandes}}
................................................................................

TEST: mes filles {{passe}} ce matin
TEST: vos filles {{passes}} ce matin


__[i]/conj(conj_les_nom_ambiguïté)__
    les +({w_2})~ *({w_2})  @@w,$
    <<- morphex(word(-1), ":C", ":[YP]", True) and isVeryAmbiguousAndWrong(\1, \2, ":p", ":3p", not word(-1))
    -2>> =suggVerb(@, ":3p", suggPlur)                      # Accord avec « les \1… » incorrect. Conjugaison erronée ou accord nom/adjectif incorrect.

TEST: les grands {{danse}}
TEST: les filles {{passes}} ce matin
TEST: les marchands {{marche}}
TEST: les marchands {{plie}}
TEST: les marchands {{paye}}
................................................................................
TEST: les chattes {{finis}}
TEST: les chattes {{manges}}
TEST: les chattes {{danse}}


__[i]/conj(conj_certains_nom_ambiguïté)__
    certains +({w_2})~ *({w_2})  @@w,$
    <<- morphex(word(-1), ":C", ":[YP]", True) and isVeryAmbiguousAndWrong(\1, \2, ":m:p", ":3p", not word(-1))
    -2>> =suggVerb(@, ":3p", suggMasPlur)                   # Accord avec « certains \1… » incorrect. Conjugaison erronée ou accord nom/adjectif incorrect.

TEST: certains hommes {{marchandes}} sans cesse


__[i]/conj(conj_certaines_nom_ambiguïté)__
    certaines +({w_2})~ *({w_2})  @@w,$
    <<- morphex(word(-1), ":C", ":[YP]", True) and isVeryAmbiguousAndWrong(\1, \2, ":f:p", ":3p", not word(-1))
    -2>> =suggVerb(@, ":3p", suggFemPlur)                   # Accord avec « certaines \1… » incorrect. Conjugaison erronée ou accord nom/adjectif incorrect.

TEST: certaines femmes {{danse}} beaucoup



## Quel(le) que soit / quel(le)s que soient
................................................................................
    <<- morphex(\1, ":[12][sp]", ":(?:G|W|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,$
    <<- not word(-1) >>>
    <<- morph(\2, ":D.*:p", False) -1>> puissent                                    # Conjugaison erronée. Ce verbe devrait s’accorder au substantif qui le suit.
    <<- __else__ and \1.endswith("s") and \2 != "tu" and not before(r"(?i)\btu ")
    -1>> puisse                                                                     # Conjugaison erronée. Sujet “tu” introuvable.

TEST: {{puisse}} les hommes enfin comprendre leurs erreurs.                         ->> puissent
TEST: {{puisses}} notre ennemi trembler de peur devant notre courage.               ->> puisse

................................................................................
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,$
    <<- morph(\1, ":(?:Os|M)", False) and morphex(\2, ":[SK]", ":(?:G|V0|I)") and not word(-1)
    -2>> _                                                                          # Ce verbe ne devrait être ni au conditionnel, ni au subjonctif.
__[i]/vmode(vmode_si_sujet2)__
    (?:si [jt]’|s’ils? )>? *({w_2})  @@$
    <<- morphex(\1, ":[SK]", ":(?:G|V0|I)") and not word(-1)
    -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







|







 







|







 







|







 







|







 







|







 







|







 







|







 







|







 







|







 







|


|







 







|







 







|







 







|







 







|







 







|







 







|

|

|







 







|







 







|







 







|







 







|







 







|


|







 







|







 







|







 







|







 







|







 







|







 







|







 







|







 







|







 







|







|







 







|







 







|



|







1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
....
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
....
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
....
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
....
2743
2744
2745
2746
2747
2748
2749
2750
2751
2752
2753
2754
2755
2756
2757
....
2944
2945
2946
2947
2948
2949
2950
2951
2952
2953
2954
2955
2956
2957
2958
....
3122
3123
3124
3125
3126
3127
3128
3129
3130
3131
3132
3133
3134
3135
3136
....
3261
3262
3263
3264
3265
3266
3267
3268
3269
3270
3271
3272
3273
3274
3275
....
3336
3337
3338
3339
3340
3341
3342
3343
3344
3345
3346
3347
3348
3349
3350
....
3618
3619
3620
3621
3622
3623
3624
3625
3626
3627
3628
3629
3630
3631
3632
3633
3634
3635
....
3836
3837
3838
3839
3840
3841
3842
3843
3844
3845
3846
3847
3848
3849
3850
....
3929
3930
3931
3932
3933
3934
3935
3936
3937
3938
3939
3940
3941
3942
3943
....
4239
4240
4241
4242
4243
4244
4245
4246
4247
4248
4249
4250
4251
4252
4253
....
4751
4752
4753
4754
4755
4756
4757
4758
4759
4760
4761
4762
4763
4764
4765
....
4867
4868
4869
4870
4871
4872
4873
4874
4875
4876
4877
4878
4879
4880
4881
....
5950
5951
5952
5953
5954
5955
5956
5957
5958
5959
5960
5961
5962
5963
5964
5965
5966
5967
5968
....
6315
6316
6317
6318
6319
6320
6321
6322
6323
6324
6325
6326
6327
6328
6329
....
7069
7070
7071
7072
7073
7074
7075
7076
7077
7078
7079
7080
7081
7082
7083
....
7092
7093
7094
7095
7096
7097
7098
7099
7100
7101
7102
7103
7104
7105
7106
....
7328
7329
7330
7331
7332
7333
7334
7335
7336
7337
7338
7339
7340
7341
7342
....
7447
7448
7449
7450
7451
7452
7453
7454
7455
7456
7457
7458
7459
7460
7461
7462
7463
7464
....
8018
8019
8020
8021
8022
8023
8024
8025
8026
8027
8028
8029
8030
8031
8032
....
8128
8129
8130
8131
8132
8133
8134
8135
8136
8137
8138
8139
8140
8141
8142
....
9256
9257
9258
9259
9260
9261
9262
9263
9264
9265
9266
9267
9268
9269
9270
....
9312
9313
9314
9315
9316
9317
9318
9319
9320
9321
9322
9323
9324
9325
9326
....
9538
9539
9540
9541
9542
9543
9544
9545
9546
9547
9548
9549
9550
9551
9552
....
9583
9584
9585
9586
9587
9588
9589
9590
9591
9592
9593
9594
9595
9596
9597
.....
10058
10059
10060
10061
10062
10063
10064
10065
10066
10067
10068
10069
10070
10071
10072
.....
10262
10263
10264
10265
10266
10267
10268
10269
10270
10271
10272
10273
10274
10275
10276
.....
10280
10281
10282
10283
10284
10285
10286
10287
10288
10289
10290
10291
10292
10293
10294
10295
10296
10297
10298
10299
10300
10301
10302
.....
10412
10413
10414
10415
10416
10417
10418
10419
10420
10421
10422
10423
10424
10425
10426
.....
10587
10588
10589
10590
10591
10592
10593
10594
10595
10596
10597
10598
10599
10600
10601
10602
10603
10604
10605
TEST: Nous préparons une {{contre–attaque}}.


### ce / cet / cette / ces + nom + là
__[i]/tu(tu_ce_cette_ces_nom_là1)__
    c(?:e[st]?|ette) (({w_2}) là)(?! où)  @@$,w <<- morph(\2, ":[NB]", False) -1>> \2-là            # Il manque probablement un trait d’union.
__[i]/tu(tu_ce_cette_ces_nom_là2)__
    c(?:e[st]?|ette) (({w_2}) la)  @@$,w <<- morph(\2, ":[NB]", False) and isEnd() -1>> \2-là       # Il manque probablement un trait d’union.

TEST: Ces {{trois là}} sont incollables.
TEST: Je connais bien cette {{sensation là}}.
TEST: Laisse ce chiot là où il est !


### Préfixes
................................................................................
__[i]/tu(tu_grand_chose)__              grand chose <<- ->> grand-chose                             # Il manque un trait d’union.
__[i]/tu(tu_grand_père_mère)__          grands? (?:père|mère)s? <<- ->> =\0.replace(" ", "-")       # Il manque un trait d’union.
__[i]/tu(tu_ici_bas)__                  ici bas <<- ->> ici-bas                                     # Il manque un trait d’union.
__[i]/tu(tu_jusque_là)__                jusque là <<- ->> jusque-là                                 # Il manque un trait d’union.
__[i]/tu(tu_là_adverbe)__       là (bas|haut|desso?us|dedans|devant|derrière) @@3 <<- ->> là-\1     # Il manque un trait d’union.
__[i]/tu(tu_n_est_ce_pas)__             n’est(?: ce[ -]pas|-ce-pas) <<- ->> n’est-ce pas            # Un trait d’union.
__[i]/tu(tu_nord_sud_ouest)__           (nord|sud) ouest @@0 <<- ->> \1-ouest                       # Il manque un trait d’union.
__[i]/tu(tu_nord_sud_est)__             (nord|sud) est @@0 <<- isEnd() ->> \1-est                   # Il manque un trait d’union.
__[i]/tu(tu_outre_mer)__                outre mer <<- ->> outre-mer                                 # Il manque un trait d’union.
__[i]/tu(tu_ouï_dire)__                 ou[iï] dire <<- morph(word(-1), ":G") ->> ouï-dire          # Il manque un trait d’union.
__[i]/tu(tu_par_préposition)__
    par (desso?us|devant|delà|derrière|dehors|dedans|devers)  @@$ 
    <<- ->> par-\1                                                                                  # Il manque un trait d’union.
__[i]/tu(tu_par_ci_par_là)__            par ci,? par là <<- ->> par-ci par-là|par-ci, par-là        # Trait(s) d’union manquant(s).
__[i]/tu(tu_prêt_à_porter)__
................................................................................
TEST: Elle y arriva {{lors qu}}’elle trouva l’astuce permettant l’ouverture de la porte.
TEST: Dès lors qu’on sait comment s’y prendre, aucune raison de faillir.


# Dialogues
__[u]/virg(virgule_dialogue_après_nom_propre)__
    ([A-ZÉÈ][\w-]+) (\w+-(?:moi|toi|l(?:ui|a|e(?:ur|s|))|nous|vous|je|tu|ils|elles))  @@0,$
    <<- morphex(\1, ":M", ":G") and not morph(\2, ":N", False) and isStart()
    -1>> \1,                                                                        # Dialogue ? Ajoutez une virgule pour mettre en incise la personne à qui s’adresse la réplique.

TEST: {{Maria}} donnez-vous du temps ?
TEST: {{Marion}} passe-moi le sel.
TEST: {{Paul}} prends-lui la main.
TEST: Alexandre tient-il ses généraux ?
TEST: Alexandra vient-elle ?
................................................................................
__[i]/ocr(ocr_fut)__        rut <<- ->> fut                                                         # Erreur de numérisation ?

TEST: __ocr__ ce petit {{rut}} traité comme un chien

# il / n
__[s]/ocr(ocr_il)__
    (n )([bcdfghjklmnpqrstvwxz][\w-]+)  @@0,$
    <<- isStart() and morph(\2, ":(?:O[on]|3s)", False) -1>> "il "                                  # Erreur de numérisation ?

TEST: __ocr__ {{n }}contient trop de soufre.


# il / ils / U / Us
__[s]/ocr(ocr_il_ils2)__
    Us?
................................................................................

TEST: mon {{rackette}} n’a pas porté les fruits espérés.
TEST: Belle qui tient mon vit captif entre tes doigts.


__[i]/conf(conf_ton_son_verbe)__
    [st]on ({w_2})  @@4
    <<- morph(\1, ":V.*:(?:Y|[123][sp])") and \1[0].islower() and isStart()
    -1>> =suggSimil(\1, ":[NA]:[me]:[si]")                                                          # Incohérence : « \1 » est un verbe.

TEST: ton {{recèle}} a été dévoilé


__[i]/conf(conf_det_plur_verbe)__
    ([dcmts]es|quelques|aux|[nv]os) +({w_2})  @@0,$
................................................................................
TEST: il faut de plus en plus aider ces gens.


# a / à
__[i]/conf(conf_a_à_tout_à_fait)__  tout (a) fait @@5                                               <<- -1>> à          # Confusion.
__[i]/conf(conf_a_à_jusqu_à)__      jusqu (a) @@6                                                   <<- -1>> à          # Confusion.
__[i]/conf(conf_a_à_grâce_à)__      grâce (a) @@6             <<- morph(word(-1), ":[VN]", False, True) -1>> à          # Confusion probable.
__[i]/conf(conf_a_à_moins_que)__    (a) moins que? @@0                                    <<- isStart() -1>> à          # Confusion probable : « à moins que » pour dire « sauf si ».
__[i]/conf(conf_a_à_tout_à_coup)__  tout h?ah? co[uû][pt]?                                          <<- ->> tout à coup # Confusion.
__[i]/conf(conf_a_à_coup_sûr)__     a coup s[uû]r                                                   <<- ->> à coup sûr  # Confusion.
__[i]/conf(conf_a_à_face_à)__       face (a) @@5    <<- not before(r"(?i)\b(?:[lmts]a|leur|une|en) +$") -1>> à          # Confusion.
__[i]/conf(conf_a_à_pas_à_pas)__    pas (a) pas @@4                                                 <<- -1>> à          # Confusion.
__[i]/conf(conf_a_à_par_rapport)__  par rapport (a) ({w_2}) @@12,$  <<- morph(\2, ":(?:D|Oo|M)", False) -1>> à          # Confusion.
__[i]/conf(conf_a_à_être_à)__
    ({etre}) (a)(?! priori| posteriori| fortiori)  @@0,$
................................................................................

TEST: Ce sont des clichés {{au}} {{dépend}} d’un grand chef. Tout ça pour faire du buzz et exister médiatiquement.


# au temps / autant
__[i]/conf(conf_au_temps_pour_moi)__
    (au ?tant?) pour moi @@0
    <<- isStart() -1>> au temps                                             # Pour reconnaître son erreur, « au temps pour moi » est l’expression recommandée par l’Académie française.
__[i]/conf(conf_autant_que_faire_se_peut)__
    au t(?:emps|ant?) que f(?:aire|erre|ers?) [sc]e peu[xt]?
    <<- ->> autant que faire se peut                                        # Locution adverbiale : « autant que faire se peut ».|https://fr.wiktionary.org/wiki/autant_que_faire_se_peut

TEST: Je me suis trompé. {{Autant}} pour moi.
TEST: on va y arriver, {{au temps que faire se peut}}…

................................................................................
TEST: Elles étaient à cette date cultivées à l’air libre.
TEST: De fraîche date…


# d’en / dans
__[i]/conf(conf_dans1)__
    (d’en|dan) (?:l(?:es?|a)|une?|d(?:es?|u)|[mts](?:on|a|es)|[nv]o(?:tre|s)|ce(?:tte|t|s|))  @@0
    <<- \1.endswith("en") or isRealStart() -1>> dans                                # Confusion. Utilisez “dans” pour dire “à l’intérieur de quelque chose”.
__[i]/conf(conf_dans2)__
    ^ *(dents?) (?:l(?:es?|a)|une?|[mts](?:on|a|es)|[nv]o(?:tre|s)|ce(?:tte|t|s|))  @@*
    <<- -1>> dans                                                                   # Confusion. Utilisez “dans” pour dire “à l’intérieur de quelque chose”.

TEST: {{dan}} la voiture
TEST: ils sont partis {{d’en}} une direction différente
TEST: {{dents}} les montagnes au loin.
................................................................................
TEST: dans ses différents ouvrages
TEST: dans ses différents postes gouvernementaux


# eh bien, hé bien / et bien
__[i]/conf(conf_eh_bien)__
    et bien(?! que?| sûr| d’autres| entendu| avant| souvent| longtemps| des| moins| plus| au-delà)
    <<- isStart() and not morph(word(1), ":[WAY]", False, False)
    ->> eh bien|hé bien                                     # Confusion probable.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?T1=h%C3%A9&T3.x=0&T3.y=0
__[i]/conf(conf_eh_ben)__
    et (ben)  @@3
    <<- not \1.startswith("B")
    ->> eh ben|hé ben                                       # Confusion probable.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?T1=h%C3%A9&T3.x=0&T3.y=0

TEST: {{et bien}} il y aura des pertes
................................................................................
    -2>> savoir     # Confusion : vous écrivez l’inverse de ce que vous voulez dire.|http://fr.wiktionary.org/wiki/vous_n%E2%80%99%C3%AAtes_pas_sans_savoir

TEST: Vous n’êtes pas sans {{ignorer}} que…


## s’en / sens / sans / cent / cens
__[i]/conf(conf_il_on_s_en)__  (?:ils?|on) (san[sg]|cen[st]|c’en) ({w_2})  @@w,$
    <<- isStart() and morph(\2, ":V", False)
    -1>> s’en                                                                                       # Confusion probable.
__[i]/conf(conf_elle_s_en)__  elles? (san[sg]|cen[st]|c’en) ({w_2})  @@w,$
    <<- isStart() and morph(\2, ":V", False) and not ( \1 == "sans" and morph(\2, ":[NY]", False) )
    -1>> s’en                                                                                       # Confusion probable.

TEST: il {{c’en}} est vite lassé.
TEST: {{S’en}} était vraiment trop !
TEST: Car {{s’en}} était vraiment fini !
TEST: elle {{sang}} était voulu

................................................................................
__[i]/conj(conj_xxxai_sans_sujet)!3__
    \w*ai(?! je)
    <<- ( morph(\0, ":1s") or ( before("> +$") and morph(\0, ":1s", False) ) ) and not (\0[0:1].isupper() and before0(r"\w"))
    and not before(r"(?i)\b(?:j(?:e |[’'])|moi(?:,? qui| seul) )")
    ->> =suggVerb(@, ":3s")                                     # Incohérence. Ceci est un verbe à la 1ʳᵉ personne du singulier. Sujet (“je” ou “moi qui”) introuvable.
__[i]/conj(conj_xxxes_sans_sujet)!3__
    \w*es(?! tu)
    <<- morphex(\0, ":2s", ":(?:E|G|W|M|J|[13][sp]|2p)") and not \0[0:1].isupper() and not isRealStart()
    and ( not morph(\0, ":[NAQ]", False) or before("> +$") )
    and not before(r"(?i)\bt(?:u |[’']|oi,? qui |oi seul )")
    ->> =suggVerb(@, ":3s")                                     # Incohérence. Ceci est un verbe à la 2ᵉ personne du singulier. Sujet (“tu” ou “toi qui”) introuvable.
__[i]/conj(conj_xxxas_sans_sujet)!3__
    \w+as(?! tu)
    <<- morphex(\0, ":2s", ":(?:G|W|M|J|[13][sp]|2p)") and not (\0[0:1].isupper() and before0(r"\w"))
    and ( not morph(\0, ":[NAQ]", False) or before("> +$") )
................................................................................
    (tout) (?:débuts|petits) @@0 <<- before(r"\b(aux|[ldmtsc]es|[nv]os|leurs) +$") ~1>> *
__[i](p_les_tout_xxx)__
    (?:[ldmtsc]es|[nv]os|leurs|aux) (tout) ({w_2})  @@w,$
    <<- morph(\2, ":[AQ].*:[pi]", False) ~1>> *


__[i]/gn(gn_tous_deux)__
    (tout) deux  @@0 <<- isStart() -1>> tous                                                        # Locution pronominale : « tous deux ».|https://fr.wiktionary.org/wiki/tous_deux

TEST: {{Tout}} deux sont partis les premiers.


__[i]/gn(gn_tous_déterminant_pluriel)__
    tout(?= [cmts]es\b)
    <<- not before(r"(?i)\b(?:d[eu]|avant|après|sur|malgré) +$") ->> tous                           # Erreur d’accord probable.
................................................................................
__[i](p_épaule_contre_épaule)__ épaule contre épaule <<- ~>> *
__[i](p_été_comme_hiver)__      été comme hiver <<- ~>> *
__[i](p_oh_ah_euh_eh_bien)__    (?:oh|ah|euh|eh bien) <<- ~>> *
__[i](p_ex_loc_latine)__        ex (?:nihilo|cathedra|absurdo|abrupto) <<- ~>> *
__[i](p_face_à_face)__          face à face <<- ~>> *
__[i](p_nombre_fois_de_suite)__ (?:deux|trois|quatre|cinq|six|sept|huit|neuf|dix|onze|douze|treize|quatorze|quinze|seize|vingt|trente|quarante|cinquante|soixante|cent) fois de suite <<- ~>> *
__[i](p_grosso_modo)__          grosso modo <<- ~>> *
__[i](p_grand_bien_lui_fasse)__ grand bien lui fasse <<- isStart() ~>> *
__[i](p_hier)__                 (?:avant-|)hier(?: matin| soir| après-midi|) <<- ~>> *
__[i](p_hors_de_qqch)__         hors (?:de (?:contrôle|portée)|d’(?:atteinte|état de nuire)|du commun) <<- ~>> *
__[i](p_ici_qqch)__             ici(?: comme ailleurs| ou ailleurs| et (?:là|maintenant)| même|-bas) <<- ~>> *
__[i](p_id_est)__               id est <<- ~>> *
__[i](p_il_y_a_qqch)__          il y a (?:longtemps|peu de temps|très (?:longtemps|peu de temps)|(?:quelques|moins de \d+|\d+) (?:secondes|minutes|heures|jours|semaines|mois|an(?:née|)s|siècles|millénaires)|quelque temps) <<- ~>> *
__[i](p_il_n_y_a_pas_qqch)__    il n’y a pas (?:si |)longtemps <<- ~>> *
__[i](p_illico_presto)__        illico presto <<- ~>> *
................................................................................


## Seconde passe (il faut réorganiser tout le cycle de simplification)

__[i](p_à_nos_yeux)__
    (à (?:[mts]es|[nv]os|leurs) yeux) +({w_1}) @@0,$ <<- not morph(\2, ":A.*:[me]:[pi]", False) ~1>> *
__[i](p_ben_voyons)__
    ben voyons <<- isStart() ~>> *
__[i](p_chaque_année_semaine_journée_décennie)__
    (chaque (?:année|semaine|journée|décennie)) +({w_1}) @@0,$ <<- not morph(\2, ":(?:A.*:[fe]:[si]|Oo|[123][sp])", False) ~1>> *
__[i](p_chaque_an_jour_mois)__
    (chaque (?:an|jour|mois)) +({w_1}) @@0,$ <<- not morph(\2, ":(?:A.*:[me]:[si]|Oo|[123][sp])", False) ~1>> *
__[i](p_dans_l_ensemble)__
    (dans l’ensemble) +({w_1}) @@0,$ <<- not morph(\2, ":A.*:[me]:[si]", False) ~1>> *
__[i](p_de_ce_seul_fait)__
................................................................................
    ~2>> ~
__[i](p_astuce_désambiguïsation2)__
    (?:d(?:es? |’)|[mts](?:es|on|a) |ce(?:s|t(?:te|)|rtaine?s|) |[nv](?:otre|os) |leurs |quelques ) *({w_2})( ) *({w_2}) @@w,**,$
    <<- isAmbiguousNAV(\3) and morphex(\1, ":[NAQ]", ">telle ") and not re.search("^[dD](?:’une?|e l(?:a|eur)) ", \0)
    ~2>> ~
__[i](p_astuce_désambiguïsation3)__
    l(?:es? |a |’|eur ) *({w_2})( ) *({w_2})  @@w,**,$
    <<- isAmbiguousNAV(\3) and ( morphex(\1, ":[NAQ]", ":V0a") or (morphex(\1, ":[NAQ]", ":(?:3[sp]|V0a)") and isStart()) )
    ~2>> ~

TEST: comme le signe évident d’une politique volontaire
TEST: c’était le signe évident d’une politique volontaire
TEST: ce que c’est : le signe évident d’une politique volontaire


................................................................................
__<i]/sgpl(sgpl_prep_compris_det)__
    ^ *((Compris|Non[- ]compris)es?) +(?:l(?:es?|a)|ce(?:te|t|s|)|leurs?|[mts](?:on|a|es)|[nv]os)  @@*,*
    <<- -1>> \2                                                                                     # Considéré comme préposition, invariable.
__<i]/sgpl(sgpl_prep_entendu_det)__
    ^ *((Entendu|Excepté|Ôté|Supposé|Passé)(?:es?|s)) +(?:l(?:es?|a)|ce(?:te|t|s|)|leurs?|[mts](?:on|a|es)|[nv]os)  @@*,*
    <<- -1>> \2                                                                                     # Considéré comme préposition, invariable.
__[i]/sgpl(sgpl_prep_attendu_que)__
    (attendu(?:es?|s)) que? @@0                         <<- isStart() -1>> attendu                  # Considéré comme préposition, invariable.
__[i]/sgpl(sgpl_prep_étant_donné)__
    étant donné(?:es?|s)                                <<- isStart() ->> étant donné               # Considéré comme préposition, invariable.
__[i]/sgpl(sgpl_prep_vu_det)__
    (vu(?:es?|s)) (?:[lc]es?|la|cette|leurs?|que?) @@0  <<- isStart() -1>> vu                       # Considéré comme préposition, invariable.

TEST: {{comprises}} mes prestations sur place
TEST: {{Exceptés}} les petits, tous sont tombes malades.
TEST: {{Attendues}} qu’on n’en sait rien, impossible de tirer des conclusions définitives.
TEST: Il viendra, {{étant donnée}} son addiction…
TEST: {{Vues}} les idioties qu’on entend, normal qu’on perde la tête.
TEST: {{Passées}} les premières heures du jour…
................................................................................


############################## CONFUSIONS, HOMONYMES ET FAUX-AMIS ###############################

# abuser / abusé / abusif
__[i]/conf(conf_abusif)__
    c’est +(abus(?:é|er))  @@$
    <<- isEnd() -1>> abusif                                         # Confusion. Concernant les actes, on parle de pratiques abusives. On abuse des choses ou des personnes.

TEST: C’est {{abusé}} !


# acre / âcre
__[i]/conf(conf_acre)__
    \d+ (âcres?)  @@$
................................................................................
TEST: une économie {{digitale}} ou rien
TEST: Dans l’ère du {{digital}}, tout va plus vite.


## on / ont
__[i>/conf(conf_on1)__
    (ont) [nmts]’(?!(?:ils?|elles?))  @@0
    <<- isStart() -1>> on                                                                           # Confusion probable : “ont” est une conjugaison du verbe avoir.

TEST: {{ont}} m’assure qu’il n’y en a pas.
TEST: {{Ont}} n’arrive pas à s’en sortir.


__[i]/conf(conf_on2)__
    (?<![nmts]’)(ont) ({w_1})  @@0,$
................................................................................
TEST: {{Ont}} ne sait pas comment faire.
TEST: qui n’ont somme toute que le désir de vivre paisiblement


__[i]/conf(conf_on3)__
    (ont) (?:l(?:ui|eur)|[nv]ous) ({w_2})  @@0,$
    <<- morphex(\2, ":V.*:(?:[1-3][sp])", ":(?:G|1p)")
    and not ( \0.find(" leur ") and morph(\2, ":[NA].*:[si]", False) ) and isStart()
    -1>> on                                                                                         # Confusion probable : “ont” est une conjugaison du verbe avoir.

TEST: {{Ont}} lui avait donné du temps
TEST: {{Ont}} leur prendra tout
TEST: Qu’importe, {{ont}} leur prend tout


................................................................................
    de (quoique) @@3 <<- -1>> quoi que                                                    # Confusion.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=1571

TEST: de {{quoique}} ce soit, je ne veux pas en entendre parler.


# quoiqu’il en coûte
__[i]/conf(conf_quoi_qu_il_en_coûte)__
    (quoiqu il) en (?:co[uû]te) @@0 <<- isEnd() -1>> quoi qu’il                           # Confusion probable.

TEST: Elle y parviendra, {{quoiqu’il}} en coûte.


# raisonner / résonner
__[i]/conf(conf_raisonner)__
    (?:la|les?|[mts]e|[nv]ous) (résonn\w+)  @@$
................................................................................
TEST: S’aimer {{soit-même}}, c’est le début d’une grande histoire d’amour. (Oscar Wilde)
TEST: Je regrette que l’on en soit encore à des considérations que je croyais dépassées
TEST: Quoi qu’il en soit


__[i]/conf(conf_soit1)__
    (soie?s?) ({w_2})  @@0,$
    <<- isStart() and morphex(\2, ":[OC]", ":R") -1>> soit                                          # Confusion probable : pour évoquer une option, écrivez “soit”.|https://fr.wiktionary.org/wiki/soit#Conjonction
__[i]/conf(conf_soit2)__
    (soie?s?) [jtcç]’ @@0
    <<- isStart() -1>> soit                                                                         # Confusion probable : pour évoquer une option, écrivez “soit”.|https://fr.wiktionary.org/wiki/soit#Conjonction

TEST: {{soi}} je vais au cinéma, {{soi}} je m’abstiens.
TEST: {{soie}} j’arrive avant tout le monde.


# sur / sûr
__[i]/conf(conf_sûr_que)__
................................................................................
__[i](p_lors_de_du_nom)__
    lors d(?:’|e(?:s| la|) |u ) *({w_2})  @@$
    <<- morph(\1, ":[NAQ]", False) and isEndOfNG()
    ~>> *

## doute que
__[i](p_nul_doute_que)__
    nul doute qu  <<- isStart() ~>> *
__[i](p_douter_que)__
    (dout\w+)( ) *que?  @@0,*  <<- morph(\1, ">douter ", False) and before(r"(?i)\b(?:[mts]e|[nv]ous) +$") ~2>> ,

## de +
__[i](p_de_nom)__
    d(?:e +|’)(?!autres)({w_2}) @@$
    <<- morphex(\1, ":N", ":[GY]") and isEndOfNG() ~>> *
................................................................................

## s’en / c’en
__[i]/conf(conf_c_en_être)__
    (s’en) (?:n’|)(?:est|seras?|étai[ts]) +({w_2})  @@0,$
    <<- re.search("(?i)^(?:fini|terminé)s?", \2) and morph(word(-1), ":C", False, True)
    -1>> c’en
    # Confusion probable. « C’en est… » équivaut à « ça, c’est… ».|http://fr.wiktionary.org/wiki/c%E2%80%99en_est_fait_de
    <<- re.search("(?i)^(?:assez|trop)$", \2) and (after("^ +d(?:e |’)") or isEnd())
    -1>> c’en
    # Confusion probable. « C’en est… » équivaut à « ça, c’est… ».|http://fr.wiktionary.org/wiki/c%E2%80%99en_est_fait_de
    <<- morphex(\2, ":A", ":[GVW]") and morph(word(-1), ":C", False, True)
    -1>> c’en
    # Confusion probable : “\2” est un adjectif. « C’en est… » équivaut à « ça, c’est… ».3|http://fr.wiktionary.org/wiki/c%E2%80%99en_est_fait_de

TEST: c’en est fini d’eux, ils sont comme morts
................................................................................
    # Conjugaison erronée. Accord avec « vous ». Le verbe devrait être à la 2ᵉ personne du pluriel.

TEST: Vous {{arrivais}} trop tard.


__[i]/conj(conj_vous_verbe2)__
    vous [nm](?:e +(?:les? |l’|la |[nv]ous |)|’)({w_3})  @@$
    <<- morphex(\1, ":V", ":2p") and isStart() -1>> =suggVerb(@, ":2p")         # Conjugaison erronée. Accord avec « vous ». Le verbe devrait être à la 2ᵉ personne du pluriel.

TEST: vous ne l’{{avait}} pas vu.
TEST: je crois, vous m’{{avais}} trompé… 


## se + incohérence
__[i]/conj(conj_se_incohérence)__
................................................................................

#### IMPÉRATIF !

# Confusions

__[i]/imp(imp_confusion_2e_pers_pluriel)__
    ({w_2}(?:er|ai[st]|ée?s?)) moi  @@0
    <<- morph(\1, ":V", False) and isStart()
    ->> =suggVerbTense(\1, ":E", ":2p") + "-moi"                                    # Confusion probable. Pour l’impératif, écrivez :

TEST: {{Donner moi}} une chance
TEST: je vous en prie, {{prenais moi}} avec vous.
TEST: {{avançait moi}} de l’argent
TEST: {{filé moi}} du fric, bon sang !

................................................................................


__[i]/imp(imp_union_aller_y)!5__
    (?:v(?:iens|enez|enons)|all(?:ons|ez)) y
    <<- not morph(word(1), ":Y", False, False) ->> =\0.replace(" ", "-")                            # Il manque un trait d’union.
__[i]/imp(imp_union_vas_y)!5__
    vas? y
    <<- isStart() and not morph(word(1), ":Y", False, False) ->> vas-y                              # Il manque un trait d’union.
__[i]/imp(imp_union_convenir_en)__
    conv(?:iens|enez|enons) en(?! partie) <<- ->> =\0.replace(" ", "-")                             # Il manque un trait d’union.

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

................................................................................
__[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>> >
__[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>> >
__[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]’ <<- ~>> >
__[i>(p_pro_per_obj32)__    [mts]e +l’ <<- ~>> >
__[i>(p_pro_per_obj33)__    [nm]’ <<- ~>> >
__[i](p_pro_per_obj34)__    [nmts]e <<- ~>> >
................................................................................
    (?<![dD]’)(une?|[mts](?:on|a)|ce(?:tte|t|)) +({w_2})~ *({w_2})  @@0,w,$
    <<- morphex(word(-1), ":C", ":(?:Y|P)", True) and isAmbiguousAndWrong(\2, \3, ":s", ":3s")
    and not (before(r"(?i)\b(?:et|ou) +$") and morph(\3, ":(?:[123]p|p)", False)) and not before(r"(?i)\bni .* ni\b")
    -3>> =suggVerb(@, ":3s", suggSing)                          # Accord avec « \1 \2… » incorrect. Conjugaison erronée ou accord nom/adjectif incorrect.

__[i]/conj(conj_det_nom_ambiguïté2)__
    (l(?:e(?:ur|) |a |’)) *({w_2})~ *({w_2})  @@0,w,$
    <<- morphex(word(-1), ":C", ":(?:Y|P)", True) and isVeryAmbiguousAndWrong(\2, \3, ":s", ":3s", isStart())
    and not (before(r"(?i)\b(?:et|ou) +$") and morph(\3, ":(?:[123]p|p)", False)) and not before(r"(?i)\bni .* ni\b")
    -3>> =suggVerb(@, ":3s", suggSing)                          # Accord avec « \1 \2… » incorrect. Conjugaison erronée ou accord nom/adjectif incorrect.

TEST: mon chat {{sautes}}
TEST: cette fille {{bouffes}} comme mille
TEST: cette marchande {{marchandes}}
TEST: la marchande {{marchandes}}
................................................................................

TEST: mes filles {{passe}} ce matin
TEST: vos filles {{passes}} ce matin


__[i]/conj(conj_les_nom_ambiguïté)__
    les +({w_2})~ *({w_2})  @@w,$
    <<- morphex(word(-1), ":C", ":[YP]", True) and isVeryAmbiguousAndWrong(\1, \2, ":p", ":3p", isStart())
    -2>> =suggVerb(@, ":3p", suggPlur)                      # Accord avec « les \1… » incorrect. Conjugaison erronée ou accord nom/adjectif incorrect.

TEST: les grands {{danse}}
TEST: les filles {{passes}} ce matin
TEST: les marchands {{marche}}
TEST: les marchands {{plie}}
TEST: les marchands {{paye}}
................................................................................
TEST: les chattes {{finis}}
TEST: les chattes {{manges}}
TEST: les chattes {{danse}}


__[i]/conj(conj_certains_nom_ambiguïté)__
    certains +({w_2})~ *({w_2})  @@w,$
    <<- morphex(word(-1), ":C", ":[YP]", True) and isVeryAmbiguousAndWrong(\1, \2, ":m:p", ":3p", isStart())
    -2>> =suggVerb(@, ":3p", suggMasPlur)                   # Accord avec « certains \1… » incorrect. Conjugaison erronée ou accord nom/adjectif incorrect.

TEST: certains hommes {{marchandes}} sans cesse


__[i]/conj(conj_certaines_nom_ambiguïté)__
    certaines +({w_2})~ *({w_2})  @@w,$
    <<- morphex(word(-1), ":C", ":[YP]", True) and isVeryAmbiguousAndWrong(\1, \2, ":f:p", ":3p", isStart())
    -2>> =suggVerb(@, ":3p", suggFemPlur)                   # Accord avec « certaines \1… » incorrect. Conjugaison erronée ou accord nom/adjectif incorrect.

TEST: certaines femmes {{danse}} beaucoup



## Quel(le) que soit / quel(le)s que soient
................................................................................
    <<- morphex(\1, ":[12][sp]", ":(?:G|W|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() >>>
    <<- morph(\2, ":D.*:p", False) -1>> puissent                                    # Conjugaison erronée. Ce verbe devrait s’accorder au substantif qui le suit.
    <<- __else__ and \1.endswith("s") and \2 != "tu" and not before(r"(?i)\btu ")
    -1>> puisse                                                                     # Conjugaison erronée. Sujet “tu” introuvable.

TEST: {{puisse}} les hommes enfin comprendre leurs erreurs.                         ->> puissent
TEST: {{puisses}} notre ennemi trembler de peur devant notre courage.               ->> puisse

................................................................................
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,$
    <<- 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})  @@$
    <<- 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