Grammalecte  Check-in [085668b0ea]

Overview
Comment:[fr] conversion: regex rules -> graph rules
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | fr | rg
Files: files | file ages | folders
SHA3-256: 085668b0eaad2ae12c2827e153a83833c5d5be0153f2362d13b57a5a6040b8ac
User & Date: olr on 2018-07-29 18:17:07
Other Links: branch diff | manifest | tags
Context
2018-07-29
22:38
[fr] conversion: regex rules -> graph rules check-in: 7c8fbbb9ed user: olr tags: fr, rg
18:17
[fr] conversion: regex rules -> graph rules check-in: 085668b0ea user: olr tags: fr, rg
2018-07-28
21:25
[fr] conversion: regex rules -> graph rules check-in: f52272c3d4 user: olr tags: fr, rg
Changes

Modified gc_lang/fr/rules.grx from [79a1ddf8cc] to [ce3e4e0861].

4304
4305
4306
4307
4308
4309
4310




















4311
4312
4313
4314
4315
4316
4317
....
4826
4827
4828
4829
4830
4831
4832










4833
4834
4835
4836
4837
4838
4839
....
8669
8670
8671
8672
8673
8674
8675
8676
8677
8678
8679
8680
8681
8682
8683
....
8707
8708
8709
8710
8711
8712
8713
8714
8715
8716
8717
8718
8719
8720
8721
....
8866
8867
8868
8869
8870
8871
8872
8873
8874
8875
8876
8877
8878
8879
8880
....
9915
9916
9917
9918
9919
9920
9921
9922
9923
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
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
10034
10035





















10036
10037
10038
10039
10040
10041
10042
10043
10044








10045
10046
10047
10048
10049
10050
10051
10052
10053
10054
10055

10056
10057
10058
10059

10060
10061
10062
10063
10064
10065
10066
10067
10068
10069
10070
10071
10072
10073
10074
10075
10076
10077
10078
10079
10080
10081

10082

10083
10084

10085

10086
10087
10088

10089

10090

10091

10092

10093
10094

10095

10096
10097

10098
10099
10100
10101
10102
10103
10104
10105
10106
10107
10108
10109
10110
10111
10112

10113
10114
10115
10116
10117
10118
10119
10120
10121
10122
10123
10124
10125
10126
10127
10128

10129
10130
10131
10132
10133


10134
10135
10136
10137

10138


10139
10140
10141
10142
10143
10144
10145
10146
10147
10148
10149
10150
10151
10152
10153
10154
10155
10156
10157
10158

10159
10160
10161
10162
10163
10164
10165













10166

10167
10168
10169
10170
10171
10172
10173
10174
10175

10176
10177
10178
10179

10180
10181

10182
10183
10184
10185
10186
10187
10188
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
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
10361
10362
10363
.....
10373
10374
10375
10376
10377
10378
10379

10380
10381
10382
10383
10384
10385
10386
10387
.....
10707
10708
10709
10710
10711
10712
10713










10714
10715
10716
10717
10718
10719
10720

    a [base|cause] [de|des|du]
        <<- /conf/ not tag_before(\1, "ce_que") -1>> à              # Confusion probable : “a” est une forme conjugée de “avoir”. Pour la préposition, écrivez “à”.

TEST: travailler {{a}} bonne distance des fourneaux.
TEST: Il l’a fait {{a}} cause de toi.






















__conf_à_a_locutions__
    a [califourchon|contrecœur|contre-cœur|contretemps|contre-temps|demi-mot|nouveau|présent|rebrousse-poil|regret|travers|tout-va|confesse|midi|minuit|rallonge|reculons|risque|tâtons|vélo]
    a côté [de|d’]
    a l’ heure actuelle
    a l’ heure [qu’|qu] il est
    a l’ [accoutumée|amiable|avance|avenir|avenant|aveuglette|emporte-pièce|évidence|improviste|inverse]
................................................................................
TEST: car {{ses}} d’autre part
TEST: {{ces}} qu’il y a tant de pertes
TEST: {{ces}} jamais une bonne idée.
TEST: {{c’est}} {{délires}} nous ennuient
TEST: En 2015, c’est Paris et son agglomération qui…
TEST: Ses pas de danse.












# compte / comte / conte
__conf_compte__
    à bon [>conte|comte|comtes]
        <<- /conf/ -3>> compte                                  # Confusion. Locution “à bon compte”.|https://fr.wiktionary.org/wiki/%C3%A0_bon_compte

    à ce [conte-là|comte-là]
................................................................................
    >faire grise mine
    >faire grand [bruit|cas]
    >faire profil bas
    >faire salle comble
    >faire table rase
    >faire ce que bon [me|te|lui|nous|vous|leur] semble
    >laisser pour compte
    >mettre à [bas|jour|niveau|plat|terre]
    >mettre l’ [écart|épreuve]
    >mettre au [point|pas]
    >mettre en [avant|bouche|demeure|garde|jeu|lumière|œuvre|place|scène|terre]
    >mourir jeune
    [>paraître|>paraitre] jeune
    >porte [atteinte|bonheur|caution|chance|malheur|plainte|préjudice|secours]
    >prendre ?[ça|cela|ceci]¿ à la légère
................................................................................
    [>sembler|>paraître|>paraitre] avoir été @:A¬:G
        <<- ~2:3>> *


__conf_locutions_verbales__
    >arriver a échéance
    >arriver a point nommé
    >mettre a [bas|jour|niveau|plat|terre]
    >mettre a l’ [écart|épreuve]
    >prendre a la légère
    >tenir a distance
        <<- /conf/ -2>> à               # Confusion : “a” est une conjugaison du verbe “avoir”. Pour la préposition, écrivez “à”.

    >laisser pour [comte|comtes|>conte]
        <<- /conf/ -3>> compte          # Confusion. Locution “laisser pour compte”.|https://fr.wiktionary.org/wiki/laisser_pour_compte
................................................................................
@@@@
@@@@
@@@@
@@@@

!!
!!
!!!! Groupe nominal (1)                                                                           !!
!!
!!

## l’

__gn_l_1m__
    l’  @:[NA].*:p¬:[123][sp]|:[si]
................................................................................
__gn_de_manière_façon_1m__
    de  [manière|façon]  @:A.*:(?:m|f:p)¬:[GM]
        <<- /gn/ -3>> =suggFemSing(\3)                                                              # Accord erroné avec “\2” : l’adjectif devrait être au féminin singulier.

TEST: il fit cela tans de fois et avec brio de manière {{élégant}}.
TEST: elle s’y prit avec cet individu de façon {{charmant}}.


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


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

__[i]/gn(gn_devinette1)__
    (?:[lmts]a|une|cette) +{w_2} +d(?:e (?:[lmts]a|cette)|’une) +(?!des )({w_2}) +({w_2})  @@w,$

    <<- morphex(\2, ":[NAQ].*:(?:m|f:p)", ":(?:G|P|[fe]:[is]|V0|3[sp])") and not apposition(\1, \2)
    -2>> =suggFemSing(@, True)                                                              # Accord erroné : « \2 » devrait être au féminin singulier.

__[i]/gn(gn_devinette2)__
    (?:le|un|cet?) +{w_2} +d(?:e cet?|u|’un) +(?!des )({w_2}) +({w_2})  @@w,$


    <<- morphex(\2, ":[NAQ].*:(?:f|m:p)", ":(?:G|P|[me]:[is]|V0|3[sp])") and not apposition(\1, \2)
    -2>> =suggMasSing(@, True)                                                              # Accord erroné : « \2 » devrait être au masculin singulier.

__[i]/gn(gn_devinette3)__
    (?:le|un|cet?) +{w_2} +de [mts]on +(?!ex-)({w_2}) +({w_2})  @@w,$

    <<- not morph(\1, ":[NAQ].*:f|>[aéeiou].*:e", False) and morphex(\2, ":[NAQ].*:(?:f|m:p)", ":(?:G|P|m:[is]|V0|3[sp])") and not apposition(\1, \2)
    -2>> =suggMasSing(@, True)                                                              # Accord erroné : « \2 » devrait être au masculin singulier.

__[i]/gn(gn_devinette4)__
    [mts]on +({w_2}) +d(?:e cet?|u|’un) +(?!des )({w_2}) +({w_2})  @@w,w,$


    <<- morphex(\1, ":[NAQ].*:m", ":G|>[aéeiou].*:[ef]")
        and morphex(\3, ":[NAQ].*:(?:f|m:p)", ":(?:G|P|[me]:[is]|V0|3[sp])") and not apposition(\2, \3)
    -3>> =suggMasSing(@, True)                                                              # Accord erroné : « \3 » devrait être au masculin singulier.

__[i]/gn(gn_devinette5)__
    [mts]on +({w_2}) +de [mts]on +({w_2}) +({w_2})  @@w,w,$

    <<- morphex(\1, ":[NAQ].*:m", ":G|>[aéeiou].*:[ef]")
        and not morph(\2, ":[NAQ].*:f|>[aéeiou].*:e", False) and morphex(\3, ":[NAQ].*:(?:f|m:p)", ":(?:G|P|[me]:[is]|V0|3[sp])") and not apposition(\2, \3)
    -3>> =suggMasSing(@, True)                                                              # Accord erroné : « \3 » devrait être au masculin singulier.

__[i]/gn(gn_devinette6)__
    (?:[lmtsc]es|[nv]os|leurs|quelques) +{w_2} +de(?: (?:[mtsc]es|[nv]os|leurs)|s) +({w_2}) +({w_2})  @@w,$


    <<- morphex(\2, ":[NAQ].*:s", ":(?:G|P|[me]:[ip]|V0|3[sp])") and not apposition(\1, \2)
    -2>> =suggPlur(@)                                                                       # Accord erroné : « \2 » devrait être au pluriel.

#__[i]/gn__  (?:l[ea]|une?|ce(?:tte|t|)|[mts](?:on|a)|[nv]otre|leur) +{w_2} +d(?:e(?: (?:la|ce(?:tte|t|)|[mts](?:on|a)|[nv]otre|leur) +|’une? +|)|u +)({w_2}) +({w_2})  @@w,$
#    <<- morphex(\2, ":[NAQ].*:p", ":(?:G|P|[is]|V0|3[sp])") and not apposition(\1, \2)
#    -2>> =suggSing(@)                                                                       # Accord erroné : « \2 » devrait être au pluriel.

TEST: La fille de cette belle {{inconnu}}                       ->> inconnue
TEST: Le chien du voisin {{mourante}}                           ->> mourant
TEST: Un chien de ce voisin {{amicale}}                         ->> amical
TEST: Les hommes des mines {{voisin}}                           ->> voisins
TEST: mon amour du chocolat {{immodérée}}                       ->> immodéré
................................................................................
TEST: ton amour de son verbe {{enthousiasmante}}                ->> enthousiasmant
TEST: Cet homme de mon groupe {{oubliés}}                       ->> oublié
TEST: Lutter contre le chômage de masse avec les armes des travailleurs reste pour nous une priorité.
TEST: le meurtre de son ex-petite amie


## divers
__[i]/gn(gn_de_telle_sorte)__
    de tel(?:s? sorte(?:s|nt|)|les sorte(?:s|nt|)|le sorte(?:s|nt))

    <<- ->> de telle sorte                                                                          # Accord erroné.

TEST: {{de telles sorte}}




!!
!!
!!!! Singuliers & Pluriels                                                                        !!
!!
!!

#### Prépositions

# Similaires à prépositions : http://www.synapse-fr.com/manuels/PP_ATTENDU.htm
# attendu, compris, non-compris, y compris, entendu, excepté, ôté, ouï, passé, supposé, vu
# ! problème avec l’ouïe, ouï retiré de la liste
__<i]/sgpl(sgpl_prep_compris_det)__
    ^ *((Compris|Non[- ]compris)es?) +(?:l(?:e(?:ur|)s?|a)|ce(?:t(?:te|)|s|)|[mts](?:on|a|es)|[nv]o(?:tre|s))  @@*,*
    <<- -1>> \2                                                                                     # Considéré comme préposition, invariable.
__<i]/sgpl(sgpl_prep_entendu_det)__

    ^ *((Entendu|Excepté|Ôté|Supposé|Passé)(?:es?|s)) +(?:l(?:e(?:ur|)s?|a)|ce(?:t(?:te|)|s|)|[mts](?:on|a|es)|[nv]o(?:tre|s))  @@*,*
    <<- -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)) (?:l(?:e(?:ur|)s?|a)|ce(?:t(?:te|)|s|)|[mts](?:on|a|es)|[nv]o(?:tre|s)|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…



#### Nombres cardinaux

# vingt
__[i]/sgpl(sgpl_vingt)__

    vingts <<- not before(r"(?i)\bquatre $") ->> vingt                                              # “Vingt” ne prend la marque du pluriel que dans “quatre-vingts”.
__[i]/sgpl(sgpl_quatre_vingt)__

    quatre[- ]vingt

    <<- not morph(word(1), ":B", False) and not before(r"(?i)\b(?:numéro|page|chapitre|référence|année|test|série)s? +$")
    ->> quatre-vingts                                                                               # Mettre « vingt » au pluriel, excepté s’il s’agit d’une référence (page, chapitre, année…).
__[i]/sgpl(sgpl_quatre_vingt_x)__
    quatre-(vingts)-(?:deux|trois|quatre|cinq|six|sept|huit|neufs?|dix|onze|douze|treize|quatorze|quinze|seize)  @@7
    <<- -1>> vingt                                                                                  # Mettez « vingt » au singulier.






















TEST: Il y a {{vingts}} personnes dans le salon.
TEST: {{Quatre-vingt}} femmes sont passées.
TEST: On en a reçu quatre-{{vingts}}-dix.
TEST: Le gagnant est le numéro quatre-vingt.


# neuf
__[i]/sgpl(sgpl_xxx_neuf)__
    (?:dix|vingt|trente|quarante|cinquante|soixante(?:-dix|)|quatre-vingt(?:-dix|))-neufs








    <<- ->> =\0[:-1]                                                                                # Pas de “s”.

TEST: par {{trente-neufs}} degrés.


# cent
__[i]/sgpl(sgpl_xxx_cents)__
    (?:deux|trois|quatre|cinq|six|sept|huit|neuf) (cent)  @@$
    <<- not morph(word(1), ":B|>une?", False, True) and not before(r"(?i)\b(?:numéro|page|chapitre|référence|année|test|série)s? +$")
    -1>> cents                      # Mettre « cent » au pluriel (centaines entières), excepté s’il s’agit d’une référence (page, chapitre, année…).|http://fr.wiktionary.org/wiki/cent
__[i]/sgpl(sgpl_xxx_cent)__

    (?:deux|trois|quatre|cinq|six|sept|huit|neuf|mille) (cents)  @@$
    <<- morph(word(1), ":B|>une?", False, False)
    -1>> cent                       # Nombre cardinal : pas de “s” à “cent” (hormis sur les centaines entières).|http://fr.wiktionary.org/wiki/cent
__[i]/sgpl(sgpl_cents_nom)__

    (cents) ({w_2})  @@0,6
    <<- morphex(\2, ":[NAQ].*:[pi]", ":G") and morphex(word(-1), ":[VR]", ":B", True)
    -1>> cent                       # Nombre cardinal : pas de “s” à “cent” (hormis sur les centaines entières).|http://fr.wiktionary.org/wiki/cent

TEST: trois {{cent}} marches à gravir.
TEST: deux {{cents}} quatre tests lancés à chaque itération du processus nouveau
TEST: par {{cents}} idées différentes.


# mille
__[i]/sgpl(sgpl_mille)__
    milles
    <<- morphex(word(1), ":B|:N.*:p", ":[QA]", False) or (morph(word(-1), ":B") and morph(word(1), ":[NAQ]", False))
    ->> mille                       # « Mille » est invariable s’il s’agit d’un nombre (et non de l’unité de mesure maritime).

TEST: Plus de {{milles}} personnes sont venues.
TEST: plus de deux cent quatre-vingt mille personnes


#### Groupes, regroupements, collections, etc.

__[i]/sgpl(sgpl_carnet_de)__

    carnets? de (chèque|note|timbre|ticket|vacance) @@$ <<- -1>> \1s                      # Il manque un “s”. Il y en a plusieurs dans un carnet.

__[i]/sgpl(sgpl_collectif_de)__
    collectifs? d(?:e |’)(artiste|architecte|association|citoyen(?:ne|)|con(?:ne|)|consommat(?:eur|rice)|enfant|entreprise|femme|fille|garçon|homme|infirmière|jeune|médecin|motarde?|passionnée?|prostituée?|touriste|travailleu(?:r|se)|vieill(?:e|ard)) @@$

    <<- morph(word(-1), ":D.*:[si]", False, True) -1>> \1s                                          # Il manque un “s”. Il y en a plusieurs dans un collectif.

__[i]/sgpl(sgpl_collection_de)__
    collections? d(?:e |’)(autocollant|boîte|blason|bouton|carte|chaussure|écusson|étiquette|film|fossile|gravure|jeu|insecte|livre|médaille|moto|papillon|pièce|pierre|pipe|tableau|timbre|voiture) @@$
    <<- -1>> \1s                                                                                    # Il manque un “s”. Il y en a plusieurs dans une collection.

__[i]/sgpl(sgpl_concours_de_circonstances)__

    concours de (circonstance)  @@$ <<- -1>> circonstances                                # Un concours de circonstances signifie qu’il y a plusieurs circonstances.

__[i]/sgpl(sgpl_confluence_de)__

    confluences? de (rivière|fleuve|ruisseau)  @@$ <<- -1>> =suggPlur(@)                  # Confluence de plusieurs cours d’eau : mettez au pluriel.

__[i]/sgpl(sgpl_groupe_de)__
    (?:association|groupe|rassemblement|regroupement|réunion|troupe)s? d(?:e |’)(artiste|agricult(?:eur|rice)|architecte|automobiliste|citoyen(?:ne|)|con(?:ne|)|consommat(?:eur|rice)|enfant|entreprise|femme|fille|garçon|homme|infirmière|jeune|médecin|motarde?|passionnée?|prostituée?|touriste|travailleu(?:r|se)|vieill(?:e|arde?)) @@$

    <<- -1>> \1s                                                                                    # Il manque un “s”. Il y en a plusieurs dans un groupe, un rassemblement, un regroupement, etc.

__[i]/sgpl(sgpl_troupeau_de)__
    troupeaux? d(?:e |’)(âne|animal|bœuf|buffle|bovin|bison|con(?:ne|)|cheval|chèvre|génisse|mouton|mulet?|porc|taureau|touriste|vache|veau) @@$

    <<- -1>> =suggPlur(@)                                                                           # Il manque un “s”. Il y en a plusieurs dans un troupeau.

TEST: d’un air compassé, il sortit son carnet de {{chèque}}.
TEST: Ce collectif d’{{artiste}} est très inventif.
TEST: Rends-moi ma collection de {{film}} !
TEST: C’est un malheureux concours de {{circonstance}}.
TEST: à la confluence de {{rivière}}
TEST: ils constituent un groupe de {{passionné}}.
TEST: C’est un putain de troupeau de {{mouton}} !


#### X fois par jour/an/semaine/etc.

__[i]/sgpl(sgpl_x_fois_par_période)__
    fois par (ans|années|décennies|heures|jours|minutes|secondes|semaines|semestres|trimestres) @@$

    <<- -1>> =suggSing(@)                                                   # Mettez au singulier : x fois par période de temps, donc pour chaque période de temps.

TEST: vingt fois par {{ans}}, à peu près.
TEST: 12 fois par {{jours}}, ça suffit.
TEST: Deux fois par mois…


#### Locutions

# à
__[i]/sgpl(sgpl_à_nu)__
    (m[eiî]\w+) +([aà] nu(?:es?|s))  @@0,$
    <<- morph(\1, ">(?:mettre|mise)/", False) -2>> à nu                     # « nu » est invariable dans cette locution.

TEST: Mettre {{à nus}} les hommes.


__[i]/sgpl(sgpl_à_part_égales)__
    à part? égale? <<- ->> à parts égales                                   # Il y a plusieurs parts.

TEST: {{à part égale}}



__[i]/sgpl(sgpl_à_moindres_frais)__
    [àa] moindre frais? <<- ->> à moindres frais                            # Lorsqu’on parle des dépenses, “frais” est un pluriel.

TEST: {{a moindre frais}}





# affaires
__[i]/sgpl(sgpl_chiffre_d_affaires)__
    chiffres? d’(affaire) @@$ <<- -1>> affaires                             # Le chiffre d’affaires. Toujours un “s” final.
__[i]/sgpl(sgpl_faire_affaire_avec)__
    (f[aieî]\w+) (affaires) avec  @@0,w
    <<- morph(\1, ">faire/", False) -2>> affaire                            # « Faire affaire avec ». Pas de “s”.
__[u]/sgpl(sgpl_faire_affaire_à_en)__
    (f[aieî]\w+) (affaire) (?:à|en) ([A-ZÉÈÂ][\w-]+)  @@0,w,$
    <<- morph(\1, ">faire/", False) and morph(\3, ":(?:N|MP)")
    -2>> affaires                                                           # Ajoutez un “s” à « affaire ».

TEST: Quel est son chiffre d’{{affaire}} ?
TEST: Allez-vous faire {{affaires}} avec ces connards ?
TEST: Faire {{affaire}} à Paris.


# boisson
__[i]/sgpl(sgpl_débit_de_boissons)__
    débits? de (boisson) @@$ <<- -1>> boissons                            # Il manque un “s” à « boisson ».


TEST: ils ont ouvert un débit de {{boisson}} à Paris.


# demi-heure, heure et demie
__[i]/sgpl(sgpl_demi_heure)__
    demi(?:e[- ]| )heure(s|) @@$ <<- ->> demi-heure\1                     # « Une demi-heure ».













__[i]/sgpl(sgpl_heure_et_demie)__

    heures? et (demi(?:s|es|)) @@$ <<- -1>> demie                         # « Une heure et demie », « deux heures et demie », etc.

TEST: L’entretien dure environ une {{demie heure}}.
TEST: nous avons rendez-vous dans une heure et {{demi}}


# dévolu
__[i]/sgpl(sgpl_leur_dévolu)__
    jet\w+ +(leurs dévolus) @@$ <<- -1>> leur dévolu                      # « Jeter son dévolu » : au singulier.


TEST: Ces gens qui jettent {{leurs dévolus}} sur n’importe qui, c’est d’une indécence.



# escalier
__[i]/sgpl(sgpl_cage_d_escalier)__

    cages? d’(escaliers) @@$ <<- -1>> escalier                            # Pas de “s” à escalier.

TEST: Elle est passée par la cage d’{{escaliers}}


# à l’extérieur/intérieur
__[i]/sgpl(sgpl_à_l_intérieur_extérieur)__
    (?:l’|d’|[cdls]es +|[mts]on +|leurs? +|[nv]otre +|en +|cet(?:te|) +)((?:ex|in)térieures?) @@$
    <<- -1>> =\1.rstrip("e")                                                        # Ceci est un adjectif féminin. Pas de “e” pour le nom masculin.

TEST: que pensez-vous de notre {{intérieure}} ?



# collet monté
__[i]/sgpl(sgpl_collet_monté)__
    ({w1}) +(collets[- ]montée?s) @@0,$
    <<- morph(\1, ":(?:V0e|W)|>très", False) -2>> collet monté
    # « Être collet monté » : dans cette locution, « collet monté » est invariable.

TEST: Elles sont tellement {{collets montées}} !


# coûter cher
__[i]/sgpl(sgpl_coûter_cher)__
    ((?:co[uû]t|pa)\w+) +(chers|chères?|chaire?s?)  @@0,$
    <<- morph(\1, ">(?:co[ûu]ter|payer)/", False)
    -2>> cher                                                                       # Ici, « cher » est un adverbe, invariable.

TEST: ces saloperies coûtent vraiment {{chères}} !


# donner lieu
__[i]/sgpl(sgpl_donner_lieu)__
    (donn\w+) +(lieux) @@0,$
    <<- morph(\1, ">donner/", False)
    -2>> lieu                                                                       # « Donner lieu » : “lieu” est invariable dans cette locution verbale.

TEST: ces conneries donneront {{lieux}} à une enquête approfondie.


# en bons termes
__[i]/sgpl(sgpl_en_bons_termes)__

    en bon terme @@$ <<- ->> en bons termes                                         # En bons termes : cette locution est toujours au pluriel.

TEST: nous sommes à présent {{en bon terme}}


# ensemble
__[i]/sgpl(sgpl_ensemble)__
    ({w_1}) +(ensembles)  @@0,$
    <<- morphex(\1, ":V.*:[123]p|>(?:tou(?:te|)s|pas|rien|guère|jamais|toujours|souvent)/", ":[DRB]")
    -2>> ensemble                                                                   # S’il s’agit bien de l’adverbe “ensemble”, il est invariable.|https://fr.wiktionary.org/wiki/ensemble

TEST: Elles viendront {{ensembles}}.


# eux-mêmes, elles-mêmes
__[i]/sgpl(sgpl_eux_elles_mêmes)__

    (?:eux|elles)-(même) @@$ <<- -1>> mêmes                                         # Il manque un “s” à même.




TEST: Elles ne sont plus elles-{{même}}.
TEST: Ils ne peuvent s’en prendre qu’à eux-{{même}}.


# par intermittence
__[i]/sgpl(sgpl_par_intermittence)__

    par (intermittences) @@$ <<- -1>> intermittence                                 # Locution : « par intermittence ».

TEST: Elles ne viennent que par {{intermittences}}


# par intervalles
__[i]/sgpl(sgpl_par_intervalles)__

    par (intervalle) @@$ <<- -1>> intervalles                                       # Locution : « par intervalles ».

TEST: On va procéder par {{intervalle}}


# pied
__[i]/sgpl(sgpl_avoir_pied)__
    ([aeop]\w*) +(?:pas |)(pieds)  @@0,$
    <<- morph(\1, ">(?:avoir|perdre)/", False) -2>> pied                            # Pas de “s” final.
__[i]/sgpl(sgpl_à_pied)__

    à (pieds)  @@2
    <<- not before(r"(?i)\b(?:lit|fauteuil|armoire|commode|guéridon|tabouret|chaise)s?\b")
    -1>> pied                                                                       # Pas de “s” final.
__[i]/sgpl(sgpl_au_pied_levé)__


    (?:à|aux) pieds? levée?s? <<- ->> au pied levé                                  # Locution adverbiale invariable.

TEST: ils ont tout simplement perdu {{pieds}}
TEST: ils y sont allés à {{pieds}}.
TEST: Elles ont accompli l’impossible, et de surcroît {{aux pieds levés}}



































# plein
__[i]/sgpl(sgpl_plein_de)__
    (pleins) de?  @@0
    <<- morphex(word(-1), ":(?:V|[NAQ].*:s)", ":(?:[NA]:.:[pi]|V0e.*:[123]p)", True)
    -1>> plein                                                                      # Au singulier.
................................................................................

TEST: Je connais {{pleins}} de gens
TEST: Les avocats sont pleins de nutriments.


# pleines dents
__[i]/sgpl(sgpl_à_pleines_dents)__

    [àa] pl[ea]ine(?: dents?|s? dent) <<- ->> à pleines dents                       # Toujours au pluriel.

TEST: Elle mord la vie {{à plaine dent}}.


# possible
__[i]/sgpl(sgpl_autant_que_possible)__

    autant (?:d(?:e |’){w_2} |)que (possibles) @@$ <<- -1>> possible                # Invariable. Implicitement, autant que ce qui est possible.

TEST: nous ferons des tests autant que {{possibles}}.
TEST: nous ferons autant de tests que {{possibles}}, c’est une nécessité.


# quelque
__[i]/sgpl(sgpl_quelque_temps)__

    (quelques) temps @@0 <<- -1>> quelque                                           # Quelque temps : un temps indéterminé, pas de “s”.|https://fr.wiktionary.org/wiki/quelque_temps
__[i]/sgpl(sgpl_en_quelque_sorte)__

    en (quelques sortes) @@$ <<- -1>> quelque sorte                                 # En quelque sorte : locution invariable.|https://fr.wiktionary.org/wiki/en_quelque_sorte

TEST: Il y a {{quelques}} temps que nous nous connaissons.
TEST: Je suis en vacances, en {{quelques sortes}}.


# rafales
__[i]/sgpl(sgpl_par_en_rafales)__

    (?:par|en) (rafale) @@$ <<- -1>> rafales                                        # En général, il y a plusieurs rafales. Par rafales, en rafales.

TEST: Je lance des tests en {{rafale}}.


#sans (crainte|défense)s <<- ->> sans \1                                            # En général, pas de pluriel.

# par souci de
__[i]/sgpl(sgpl_par_souci_de)__

    par (soucis) (?:de|d) @@4 <<- -1>> souci                                        # Invariable dans cette locution.

TEST: par {{soucis}} d’équité, chacun aura droit à une part.


# ce / se
__[i]/conf(conf_ce_être)__
    (se) (?:sera(?:i(?:en|)t|)|sont|f[uû](?:ren|)t)  @@0
    <<- (after("^ (?:[ldmtsc]es|leurs|nos|vos) ") and not before(r"(?i)\b(?:ils?|elles?|ne) +")) or
    ( morph(word(-1), ":Cs", False, True) and not before(", +$") and not after(r"(?i)^ +(?:ils?|elles?)\b") and not morph(word(1), ":Q", False, False) )
    -1>> ce                                                                 # Confusion probable.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=2440
TEST: des pans entiers de l’univers — pour reprendre l’expression d’Orwell — se sont d’ores et déjà volatilisés
TEST: À la pause, ils se sont tous les deux assis à l’arrière, et j’ai vu progressivement leurs corps se rapprocher.


# termes
__[i]/sgpl(sgpl_en_termes_de)__

    en (terme) (?:de|d) @@3 <<- -1>> termes                                         # Dans la locution “en termes de”, mettez “terme” au pluriel.

TEST: en {{terme}} de communication, c’est une véritable catastrophe


# tous / tout / toutes
__[i]/sgpl(sgpl_tous_azimuts)__
    tout azimuts? <<- ->> tous azimuts                                              # « Tous azimuts » signifie « dans toutes les directions ».
__[i]/sgpl(sgpl_une_bonne_fois_pour_toutes)__

    une (?:bonne |)fois pour (toute) @@$ <<- -1>> toutes                            # Il manque un “s”. Sous-entendu : une fois pour toutes les autres fois.

TEST: ils lancent des attaques {{tout azimut}}.
TEST: une bonne fois pour {{toute}}


# vacances
__[i]/sgpl(sgpl_bonnes_vacances)__

    bonne vacance <<- not morph(word(-1), ":D.*:f:s", False, False) ->> bonnes vacances             # Au pluriel.
__[i]/sgpl(sgpl_en_vacances)__
    ({w1}) +en (vacance)  @@0,$
    <<- morph(\1, ">(?:aller|partir)/", False) -2>> vacances                                        # Si vous parlez des congés, « vacance » doit être au pluriel.

TEST: Je pars en {{vacance}}.
TEST: {{Bonne vacance}} !
TEST: Il nous reste un poste en vacance.
................................................................................
TEST: ils mangent {{vites}}.
TEST: elles sont {{vites}} parties.
TEST: elles sont vites.


# vu / vue
__[i]/sgpl(sgpl_point_de_vue)__

    points? de (vu(?:s|es|)) @@$ <<- -1>> vue                                                       # Dans un “point de vue”, “vue” est toujours au féminin singulier.

TEST: c’est son point de {{vu}} qui prime.
TEST: Son point de {{vus}} prévaudra toujours, faites-vous à cette idée ou dégagez.
TEST: de mon point de {{vues}}



................................................................................
TEST: {{cane}} de défense
TEST: alcool de {{cane}}
TEST: appuyé sur sa {{cane}}
TEST: bec-de-{{cannes}}
TEST: aéroport de {{cannes}}
TEST: restaurant à {{cane}}












# chair / chère
__[i]/conf(conf_faire_bonne_chère)__
    (f[aioîe]\w+) +(bonnes? ch(?:ai|e)re?) @@0,$
    <<- morph(\1, ">faire/", False)
    -2>> bonne chère                                                    # Confusion. « Faire bonne chère » signifie bien manger, ripailler.








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







 







>
>
>
>
>
>
>
>
>
>







 







|







 







|







 







|







 








<
<
<
<
<






|
<
>
|
|

<
<
>
>
|
|

<
<
>
|
|

<
<
>
>
|
|
|

<
<
>
|
|
|

<
<
>
>
|
|

|
|







 







|
|
>
|


<
>













|
|
|
<
>
|
|
<
>
|
|
<
>
|
|
>
>
>
>
>
>
>
>
>
|




|


>





|
>
|
<
>
|
>
|
|
<
<
<

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


|




|
|
>
>
>
>
>
>
>
>
|





|
|
|
|
<
>
|
|
|
<
>
|
|
|







|

|
|






<
|
>
|
>
|
<
>
|
>
|
|
|
>
|
>
|
>
|
>
|
>
|
<
>
|
>
|
<
>
|











<
|
<
>
|









|
|
|

|
<
>
|
<

<

>
>
|
|

|
>

>
>

|
<
<
<
|
<
<
<
<
<







|
|
>





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






|
|
>




>

|
>
|




|
|
|
|

|
>

<
|
|
|
|
<

<

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

|
>
|





|
|
|
|





|
>
|

>
>
>
|
|



|
>
|

|



|
>
|





|
|
|
<
>
|
|
|
<
>
>
|




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







 







>
|






>
|







>
|

>
|







>
|




<
<


>
|



<
<
<
<
<
<
<
<
<
<
<


>
|








>
|







>
|







 







>
|







 







>
>
>
>
>
>
>
>
>
>







4304
4305
4306
4307
4308
4309
4310
4311
4312
4313
4314
4315
4316
4317
4318
4319
4320
4321
4322
4323
4324
4325
4326
4327
4328
4329
4330
4331
4332
4333
4334
4335
4336
4337
....
4846
4847
4848
4849
4850
4851
4852
4853
4854
4855
4856
4857
4858
4859
4860
4861
4862
4863
4864
4865
4866
4867
4868
4869
....
8699
8700
8701
8702
8703
8704
8705
8706
8707
8708
8709
8710
8711
8712
8713
....
8737
8738
8739
8740
8741
8742
8743
8744
8745
8746
8747
8748
8749
8750
8751
....
8896
8897
8898
8899
8900
8901
8902
8903
8904
8905
8906
8907
8908
8909
8910
....
9945
9946
9947
9948
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

10034
10035
10036
10037
10038
10039
10040
10041
10042
10043
10044
10045
10046
10047
10048
10049
10050
10051
10052
10053
10054
10055
10056
10057
10058
10059
10060
10061
10062

10063
10064
10065
10066
10067



10068
10069
10070
10071
10072
10073
10074
10075
10076
10077
10078
10079
10080
10081
10082
10083
10084
10085
10086
10087
10088
10089
10090
10091
10092
10093
10094
10095
10096
10097
10098
10099
10100
10101
10102
10103
10104
10105
10106
10107
10108
10109
10110
10111
10112
10113
10114
10115
10116

10117
10118
10119
10120

10121
10122
10123
10124
10125
10126
10127
10128
10129
10130
10131
10132
10133
10134
10135
10136
10137
10138
10139
10140
10141

10142
10143
10144
10145
10146

10147
10148
10149
10150
10151
10152
10153
10154
10155
10156
10157
10158
10159
10160
10161
10162

10163
10164
10165
10166

10167
10168
10169
10170
10171
10172
10173
10174
10175
10176
10177
10178
10179

10180

10181
10182
10183
10184
10185
10186
10187
10188
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
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
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
10430
10431











10432
10433
10434
10435
10436
10437
10438
10439
10440
10441
10442
10443
10444
10445
10446
10447
10448
10449
10450
10451
10452
10453
10454
10455
10456
10457
10458
10459
10460
10461
.....
10471
10472
10473
10474
10475
10476
10477
10478
10479
10480
10481
10482
10483
10484
10485
10486
.....
10806
10807
10808
10809
10810
10811
10812
10813
10814
10815
10816
10817
10818
10819
10820
10821
10822
10823
10824
10825
10826
10827
10828
10829

    a [base|cause] [de|des|du]
        <<- /conf/ not tag_before(\1, "ce_que") -1>> à              # Confusion probable : “a” est une forme conjugée de “avoir”. Pour la préposition, écrivez “à”.

TEST: travailler {{a}} bonne distance des fourneaux.
TEST: Il l’a fait {{a}} cause de toi.


__conf_à_moindres_frais__
    a >moindre [>frai|>frêt]
    [à|a] moindre [>frai|>frêt]
    [à|a] >moindre [frai|>frêt]
        <<- /conf/ ->> à moindres frais                                     # Pour évoquer des dépenses, écrivez “frais” (pluriel).

TEST: {{a moindre frais}}
TEST: S’en sortir à moindres frais, pas si simple.


__conf_à_parts_égales__
    a [part|parts|par|pare|pares] >égale
    [à|a] [part|par|pare|pares] >égale
    [à|a] [part|parts|par|pare|pares] [égal|égals|égale]
        <<- /conf/ ->> à parts égales                                       # Locution “à parts égales” (toujours au pluriel).

TEST: {{à part égale}}
TEST: un partage à parts égales


__conf_à_a_locutions__
    a [califourchon|contrecœur|contre-cœur|contretemps|contre-temps|demi-mot|nouveau|présent|rebrousse-poil|regret|travers|tout-va|confesse|midi|minuit|rallonge|reculons|risque|tâtons|vélo]
    a côté [de|d’]
    a l’ heure actuelle
    a l’ heure [qu’|qu] il est
    a l’ [accoutumée|amiable|avance|avenir|avenant|aveuglette|emporte-pièce|évidence|improviste|inverse]
................................................................................
TEST: car {{ses}} d’autre part
TEST: {{ces}} qu’il y a tant de pertes
TEST: {{ces}} jamais une bonne idée.
TEST: {{c’est}} {{délires}} nous ennuient
TEST: En 2015, c’est Paris et son agglomération qui…
TEST: Ses pas de danse.


# collet monté
__conf_collet_monté__
    ~^[cC]oll(?:e[rt]s?|ée?s?)-mont(?:er|ée?s?)$
    [collé|collés|>collée|coller|collets] [>montée|monté|montés|monter]
    collet [>montée|montés|monter]
        <<- /conf/ ->> collet monté                # « Être collet monté » : dans cette locution, « collet monté » est invariable.

TEST: Elles sont tellement {{collets montées}} !


# compte / comte / conte
__conf_compte__
    à bon [>conte|comte|comtes]
        <<- /conf/ -3>> compte                                  # Confusion. Locution “à bon compte”.|https://fr.wiktionary.org/wiki/%C3%A0_bon_compte

    à ce [conte-là|comte-là]
................................................................................
    >faire grise mine
    >faire grand [bruit|cas]
    >faire profil bas
    >faire salle comble
    >faire table rase
    >faire ce que bon [me|te|lui|nous|vous|leur] semble
    >laisser pour compte
    >mettre à [bas|jour|niveau|nu|plat|terre]
    >mettre l’ [écart|épreuve]
    >mettre au [point|pas]
    >mettre en [avant|bouche|demeure|garde|jeu|lumière|œuvre|place|scène|terre]
    >mourir jeune
    [>paraître|>paraitre] jeune
    >porte [atteinte|bonheur|caution|chance|malheur|plainte|préjudice|secours]
    >prendre ?[ça|cela|ceci]¿ à la légère
................................................................................
    [>sembler|>paraître|>paraitre] avoir été @:A¬:G
        <<- ~2:3>> *


__conf_locutions_verbales__
    >arriver a échéance
    >arriver a point nommé
    >mettre a [bas|>jour|>niveau|>nu|>nue|>plat|>terre]
    >mettre a l’ [écart|épreuve]
    >prendre a la légère
    >tenir a distance
        <<- /conf/ -2>> à               # Confusion : “a” est une conjugaison du verbe “avoir”. Pour la préposition, écrivez “à”.

    >laisser pour [comte|comtes|>conte]
        <<- /conf/ -3>> compte          # Confusion. Locution “laisser pour compte”.|https://fr.wiktionary.org/wiki/laisser_pour_compte
................................................................................
@@@@
@@@@
@@@@
@@@@

!!
!!
!!!! Groupe nominal (avec déterminants)                                                           !!
!!
!!

## l’

__gn_l_1m__
    l’  @:[NA].*:p¬:[123][sp]|:[si]
................................................................................
__gn_de_manière_façon_1m__
    de  [manière|façon]  @:A.*:(?:m|f:p)¬:[GM]
        <<- /gn/ -3>> =suggFemSing(\3)                                                              # Accord erroné avec “\2” : l’adjectif devrait être au féminin singulier.

TEST: il fit cela tans de fois et avec brio de manière {{élégant}}.
TEST: elle s’y prit avec cet individu de façon {{charmant}}.







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

__gn_devinette__

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



    [le|un|ce|cet]  *WORD  de  [ce|cet|un]  (*WORD)  (*WORD)
    [le|un|ce|cet]  *WORD  du  (*WORD)  (*WORD)
        <<- /gn/ morph(\2, ":[NA].*:(?:f|m:p)", ":(?:G|P|[me]:[is]|V0|3[sp])") and not apposition(\1, \2)
        -2>> =suggMasSing(\2, True)                                                         # Accord erroné : « \2 » devrait être au masculin singulier.



    [le|un|ce|cet]  *WORD  de  [mon|ton|son]  *WORD  *WORD
        <<- /gn/ morph(\5, ":", ":[NA].*:f|>[aéeiou].*:e") and morph(\6, ":[NA].*:(?:f|m:p)", ":(?:G|P|m:[is]|V0|3[sp])") and not apposition(\5, \6)
        -6>> =suggMasSing(\6, True)                                                         # Accord erroné : « \6 » devrait être au masculin singulier.



    [mon|ton|son]  (*WORD)  [de|d’]  [ce|cet|un]  (*WORD)  (*WORD)
    [mon|ton|son]  (*WORD)  du  (*WORD)  (*WORD)
        <<- /gn/ morph(\1, ":[NA].*:m", ":G|>[aéeiou].*:[ef]")
            and morph(\3, ":[NA].*:(?:f|m:p)", ":(?:G|P|[me]:[is]|V0|3[sp])") and not apposition(\2, \3)
        -3>> =suggMasSing(\3, True)                                                         # Accord erroné : « \3 » devrait être au masculin singulier.



    [mon|ton|son]  (*WORD)  de [mon|ton|son]  (*WORD)  (*WORD)
        <<- /gn/ morph(\1, ":[NA].*:m", ":G|>[aéeiou].*:[ef]")
            and not morph(\2, ":[NA].*:f|>[aéeiou].*:e") and morph(\3, ":[NA].*:(?:f|m:p)", ":(?:G|P|[me]:[is]|V0|3[sp])") and not apposition(\2, \3)
        -3>> =suggMasSing(\3, True)                                                         # Accord erroné : « \3 » devrait être au masculin singulier.



    [les|ces|mes|tes|ses|nos|vos|leurs|quelques]  *WORD  de [ces|mes|tes|ses|nos|vos|leurs]  (*WORD)  (*WORD)
    [les|ces|mes|tes|ses|nos|vos|leurs|quelques]  *WORD  des  (*WORD)  (*WORD)
        <<- /gn/ morph(\2, ":[NA].*:s", ":(?:G|P|[me]:[ip]|V0|3[sp])") and not apposition(\1, \2)
        -2>> =suggPlur(\2)                                                                  # Accord erroné : « \2 » devrait être au pluriel.

#__[i]/gn__  (?:l[ea]|une?|ce(?:tte|t|)|[mts](?:on|a)|[nv]otre|leur) +{w_2} +d(?:e(?: (?:la|ce(?:tte|t|)|[mts](?:on|a)|[nv]otre|leur) +|’une? +|)|u +)({w_2}) +({w_2})
#    <<- morph(\2, ":[NA].*:p", ":(?:G|P|[is]|V0|3[sp])") and not apposition(\1, \2)
#    -2>> =suggSing(@)                                                                       # Accord erroné : « \2 » devrait être au pluriel.

TEST: La fille de cette belle {{inconnu}}                       ->> inconnue
TEST: Le chien du voisin {{mourante}}                           ->> mourant
TEST: Un chien de ce voisin {{amicale}}                         ->> amical
TEST: Les hommes des mines {{voisin}}                           ->> voisins
TEST: mon amour du chocolat {{immodérée}}                       ->> immodéré
................................................................................
TEST: ton amour de son verbe {{enthousiasmante}}                ->> enthousiasmant
TEST: Cet homme de mon groupe {{oubliés}}                       ->> oublié
TEST: Lutter contre le chômage de masse avec les armes des travailleurs reste pour nous une priorité.
TEST: le meurtre de son ex-petite amie


## divers
__gn_de_telle_sorte__
    de [tel|tels|telles] [sorte|sortes|sortent]
    de telle [sortes|sortent]
        <<- /gn/ ->> de telle sorte                                                                 # Accord erroné.

TEST: {{de telles sorte}}

TEST: tu vas faire {{de telles sortes}} qu’on ne nous retrouve jamais.


!!
!!
!!!! Singuliers & Pluriels                                                                        !!
!!
!!

#### Prépositions

# Similaires à prépositions : http://www.synapse-fr.com/manuels/PP_ATTENDU.htm
# attendu, compris, non-compris, y compris, entendu, excepté, ôté, ouï, passé, supposé, vu
# ! problème avec l’ouïe, ouï retiré de la liste
__sgpl_prépositions__
    <start> [comprise|comprises] [le|la|l’|les|ce|cet|cette|ces|mon|ton|son|ma|ta|sa|mes|tes|ses|notre|votre|nos|vos|leur|leurs]
        <<- /sgpl/ -2>> compris                                                             # Considéré comme préposition, invariable.


    <start> [non-comprise|non-comprises] [le|la|l’|les|ce|cet|cette|ces|mon|ton|son|ma|ta|sa|mes|tes|ses|notre|votre|nos|vos|leur|leurs]
        <<- /sgpl/ -2>> non compris                                                         # Considéré comme préposition, invariable.


    <start> non [comprise|comprises] [le|la|l’|les|ce|cet|cette|ces|mon|ton|son|ma|ta|sa|mes|tes|ses|notre|votre|nos|vos|leur|leurs]
        <<- /sgpl/ -3>> compris                                                             # Considéré comme préposition, invariable.


    <start> [entendus|exceptés|ôtés|supposés|passés|entendue|exceptée|ôtée|supposée|passée|entendues|exceptées|ôtées|supposées|passées]  [le|la|l’|les|ce|cet|cette|ces|mon|ton|son|ma|ta|sa|mes|tes|ses|notre|votre|nos|vos|leur|leurs]
        <<- /sgpl/ -2>> =suggMasSing(\2)                                                    # Considéré comme préposition, invariable.

    [<start>|,]  [attendus|attendue|attendues]  [que|qu’|qu]
        <<- /sgpl/ -2>> attendu                                                             # “Attendu que” : considéré comme préposition, invariable.

    [<start>|,]  étant [donnés|donnée|données]
        <<- /sgpl/ -3>> donné                                                               # “Étant donné” : considéré comme préposition, invariable.

    [<start>|,]  [vu|vue|vues]  [le|la|l’|les|ce|cet|cette|ces|mon|ton|son|ma|ta|sa|mes|tes|ses|notre|votre|nos|vos|leur|leurs]
    [<start>|,]  [vu|vue|vues]  [que|qu’|qu]
        <<- /sgpl/ -2>> 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…



#### Nombres cardinaux

# vingt
__sgpl_vingt__
    vingts
        <<- /sgpl/ not value(<1, "|quatre|") ->> vingt                                      # “Vingt” ne prend la marque du pluriel que dans “quatre-vingts”.


    quatre-vingt
    quatre vingt
        <<- /sgpl/ not morph(>1, ":B") and not morph(<1, ">(?:numéro|page|chapitre|référence|année|test|série)/")
        ->> quatre-vingts                                                                   # Mettre « vingt » au pluriel, excepté s’il s’agit d’une référence (page, chapitre, année…).




    quatre-vingts-un
    quatre-vingts-deux
    quatre-vingts-trois
    quatre-vingts-quatre
    quatre-vingts-cinq
    quatre-vingts-six
    quatre-vingts-sept
    quatre-vingts-huit
    [quatre-vingts-neuf|quatre-vingts-neufs]
    quatre-vingts-dix
    quatre-vingts-onze
    quatre-vingts-douze
    quatre-vingts-treize
    quatre-vingts-quatorze
    quatre-vingts-quinze
    quatre-vingts-seize
    quatre-vingts-dix-sept
    quatre-vingts-dix-huit
    [quatre-vingts-dix-neuf|quatre-vingts-dix-neufs]
        <<- /sgpl/ -1>> =\1.replace("vingts", "vingt").replace("VINGTS", "VINGT")           # Mettez « vingt » au singulier.

TEST: Il y a {{vingts}} personnes dans le salon.
TEST: {{Quatre-vingt}} femmes sont passées.
TEST: On en a reçu {{quatre-vingts-dix}}.
TEST: Le gagnant est le numéro quatre-vingt.


# neuf
__sgpl_nombre_neuf__
    dix-neufs
    vingt-neufs
    trente-neufs
    quarante-neufs
    cinquante-neufs
    soixante-neufs
    soixante-dix-neufs
    quatre-vingt-neufs
    quatre-vingt-dix-neufs
        <<- /sgpl/ ->> =\1[:-1]                                                             # Pas de “s” sur “neuf” lorsqu’il s’agit d’un nombre.

TEST: par {{trente-neufs}} degrés.


# cent
__sgpl_nombre_cents__
    [deux|trois|quatre|cinq|six|sept|huit|neuf]  cent
        <<- /sgpl/ not morph(>1, ":B|>une?") and not morph(<1, ">(?:numéro|page|chapitre|référence|année|test|série)/")
        -2>> cents                          # Mettre “cent” au pluriel (centaines entières), excepté s’il s’agit d’une référence (page, chapitre, année…).|http://fr.wiktionary.org/wiki/cent


    [deux|trois|quatre|cinq|six|sept|huit|neuf|mille]  cents
        <<- /sgpl/ morph(>1, ":B|>une?")
        -2>> cent                           # Nombre cardinal : pas de “s” à “cent” (hormis sur les centaines entières).|http://fr.wiktionary.org/wiki/cent


    cents  @:[NA].*:[pi]¬:G
        <<- /sgpl/ morph(<1, ":[VR]|<start>", ":B")
        -1>> cent                           # Nombre cardinal : pas de “s” à “cent” (hormis sur les centaines entières).|http://fr.wiktionary.org/wiki/cent

TEST: trois {{cent}} marches à gravir.
TEST: deux {{cents}} quatre tests lancés à chaque itération du processus nouveau
TEST: par {{cents}} idées différentes.


# mille
__sgpl_mille__
    milles
        <<- /sgpl/ morph(>1, ":B|:N.*:p", ":[QA]") or (morph(<1, ":B") and morph(>1, ":[NA]"))
        ->> mille                           # “Mille” est invariable s’il s’agit d’un nombre (et non de l’unité de mesure maritime).

TEST: Plus de {{milles}} personnes sont venues.
TEST: plus de deux cent quatre-vingt mille personnes


#### Groupes, regroupements, collections, etc.

__sgpl_carnet_de__
    >carnet de [chèque|note|timbre|ticket|vacance]
        <<- /sgpl/ -3>> \3s                                             # Il manque un “s”. Il y en a plusieurs dans un carnet.

__sgpl_collectif_de__

    >collective [de|d’] [artiste|agriculteur|agricultrice|architecte|automobiliste|citoyen|citoyenne|con|conne|consommateur|consommatrice|enfant|entreprise|femme|fille|garçon|homme|infirmier|infirmière|jeune|médecin|motard|motarde|passionné|passionnée|prostitué|prostituée|touriste|travailleur|travailleuse|vieille|vieillard|vieillarde]
        <<- /sgpl/ morph(<1, ":D|<start>") -3>> \1s                     # Il manque un “s”. Il y en a plusieurs dans un collectif.

__sgpl_collection_de__
    >collection [de|d’] [autocollant|boîte|blason|bouton|carte|chaussure|écusson|étiquette|film|fossile|gravure|jeu|insecte|livre|médaille|moto|papillon|pièce|pierre|pipe|tableau|timbre|voiture]
        <<- /sgpl/ -3>> =suggPlur(\3)                                   # Il manque un “s”. Il y en a plusieurs dans une collection.

__sgpl_concours_de_circonstances__
    concours de circonstance
        <<- /sgpl/ -3>> circonstances                                   # Un concours de circonstances signifie qu’il y a plusieurs circonstances.

__sgpl_confluence_de__
    >confluence de [rivière|fleuve|ruisseau]
        <<- /sgpl/ -3>> =suggPlur(\3)                                   # Confluence de plusieurs cours d’eau : mettez au pluriel.

__sgpl_groupe_de__

    [>association|>assemblée|>groupe|>rassemblement|>regroupement|>réunion|>troupe] [de|d’] [artiste|agriculteur|agricultrice|architecte|automobiliste|citoyen|citoyenne|con|conne|consommateur|consommatrice|enfant|entreprise|femme|fille|garçon|homme|infirmier|infirmière|jeune|médecin|motard|motarde|passionné|passionnée|prostitué|prostituée|touriste|travailleur|travailleuse|vieille|vieillard|vieillarde]
        <<- /sgpl/ -3>> \3s                                             # Il manque un “s”. Il y en a plusieurs dans un groupe, un rassemblement, une assemblée, etc.

__sgpl_troupeau_de__

    >troupeau [de|d’] [âne|animal|bœuf|buffle|bovin|bison|con|conne|cheval|chèvre|génisse|mouton|mule|mulet|porc|taureau|touriste|vache|veau]
        <<- /sgpl/ -3>> =suggPlur(\3)                                   # Il manque un “s”. Il y en a plusieurs dans un troupeau.

TEST: d’un air compassé, il sortit son carnet de {{chèque}}.
TEST: Ce collectif d’{{artiste}} est très inventif.
TEST: Rends-moi ma collection de {{film}} !
TEST: C’est un malheureux concours de {{circonstance}}.
TEST: à la confluence de {{rivière}}
TEST: ils constituent un groupe de {{passionné}}.
TEST: C’est un putain de troupeau de {{mouton}} !


#### X fois par jour/an/semaine/etc.

__sgpl_x_fois_par_période__

    fois par [nanosecondes|millisecondes|secondes|minutes|heures|jours|semaines|semestres|trimestres|ans|années|décennies|siècles|millénaires]
        <<- /sgpl/ -3>> =suggSing(\3)                                   # Mettez au singulier : x fois par période de temps, donc pour chaque période de temps.

TEST: vingt fois par {{ans}}, à peu près.
TEST: 12 fois par {{jours}}, ça suffit.
TEST: Deux fois par mois…


#### Locutions

# à
__sgpl_mettre_à_nu__
    >mettre à [nus|nue|nues]
        <<- /sgpl/ -3>> à nu                                            # Dans la locution “mettre à nu”, “nu” est invariable.

TEST: Mettre à {{nus}} les hommes.

TEST: Elle s’est mise à {{nue}} devant ses sœurs.
TEST: Une mise à nu douloureuse.




# affaires
__affaires__
    [>chiffre|>homme|>femme|>centre|>chargée]  d’ affaire
        <<- /sgpl/ -3>> affaires                                            # Dans “\1 d’affaires”, toujours mettre “affaires” au pluriel.

    >faire affaires avec
        <<- /sgpl/ -2>> affaire                                             # Dans la locution “Faire affaire avec”, “affaire” est au singulier.

    >faire affaire [à|en] ~^[A-ZÉÈÂ]
        <<- /sgpl/ morph(\4, ":(?:N|MP)") -2>> affaires                     # Ajoutez un “s” à « affaire ».

    >avoir affaires à



        <<- /sgpl/ -2>> affaire                                             # Dans la locution “avoir affaire à”, “affaire” est au singulier.|https://fr.wiktionary.org/wiki/avoir_affaire_%C3%A0






TEST: Quel est son chiffre d’{{affaire}} ?
TEST: Allez-vous faire {{affaires}} avec ces connards ?
TEST: Faire {{affaire}} à Paris.


# boisson
__sgpl_débit_de_boissons__
    >débit de boisson
        <<- /sgpl/ -3>> boissons                                            # Dans la locution “débit de boissons”, “boissons” est au pluriel.

TEST: ils ont ouvert un débit de {{boisson}} à Paris.


# demi-heure, heure et demie
__sgpl_demi_heure__
    demie-heure
    demie heure
    demi heure
        <<- /sgpl/ ->> demi-heure                       # La moitié d’une heure s’écrit “demi-heure”.

    demie-heures
    demie heures
    demies-heures
    demies >heure
    demi heures
    demis >heure
    demis-heures
        <<- /sgpl/ ->> demi-heures                      # La moitié d’une heure s’écrit “demi-heure” (“demi-heures” au pluriel).

__sgpl_heure_et_demie__
    >heure et [demi|demis|demies]
        <<- /sgpl/ -3>> demie                           # « Une heure et demie », « deux heures et demie », etc.

TEST: L’entretien dure environ une {{demie heure}}.
TEST: nous avons rendez-vous dans une heure et {{demi}}


# dévolu
__sgpl_leur_dévolu__
    >jeter leurs dévolus
        <<- /sgpl/ -2:3>> leur dévolu                   # Jeter son dévolu, leur dévolu : au singulier.

TEST: Ces gens qui jettent {{leurs dévolus}} sur n’importe qui, c’est d’une indécence.



# escalier
__sgpl_cage_d_escalier__
    >cage d’ escaliers
        <<- /sgpl/ -3>> escalier                                # Usuellement, pas de “s” à escalier.

TEST: Elle est passée par la cage d’{{escaliers}}


# extérieur/intérieur
__sgpl_intérieur_extérieur__
    [l’|d’|mon|ton|son|leur|notre|votre|cet|en] [intérieure|extérieure]
        <<- /sgpl/ -2>> =\1[:-1]                                # Ceci est un adjectif féminin. Pas de “e” pour le nom masculin.

    [d’|ces|des|les|mes|tes|ses|leurs|nos|vos|en] [intérieures|extérieures]
        <<- /sgpl/ -2>> =\1[:-2]+"s"                            # Ceci est un adjectif féminin. Pas de “e” pour le nom masculin.


TEST: que pensez-vous de notre {{intérieure}} ?
TEST: à l’{{intérieure}} rien de notable.
TEST: un homme de l’{{intérieure}}.
TEST: des {{intérieures}} remarquables.























# en bons termes
__sgpl_en_bons_termes__
    en bon terme
        <<- /sgpl/ ->> en bons termes                               # En bons termes : cette locution est toujours au pluriel.

TEST: nous sommes à présent {{en bon terme}}


# ensemble
__ensemble__
    ensembles
        <<- /sgpl/ morph(<1, ":V.*:[123]|>(?:tou(?:te|)s|pas|rien|guère|jamais|toujours|souvent)/", ":[DRB]")
        ->> ensemble                                                 # S’il s’agit bien de l’adverbe “ensemble”, il est invariable.|https://fr.wiktionary.org/wiki/ensemble

TEST: Elles viendront {{ensembles}}.


# eux-mêmes, elles-mêmes
__sgpl_eux_elles_mêmes__
    eux-même
        <<- /sgpl/ ->> eux-mêmes                                    # Il manque un “s” à même.

    elles-même
        <<- /sgpl/ ->> elles-mêmes                                  # Il manque un “s” à même.

TEST: Elles ne sont plus {{elles-même}}.
TEST: Ils ne peuvent s’en prendre qu’à {{eux-même}}.


# par intermittence
__sgpl_par_intermittence__
    par intermittences
        <<- /sgpl/ -2>> intermittence                               # Locution : « par intermittence ».

TEST: Elles ne viennent que par {{intermittences}}.


# par intervalles
__sgpl_par_intervalles__
    par intervalle
        <<- /sgpl/ -2>> intervalles                                 # Locution : « par intervalles ».

TEST: On va procéder par {{intervalle}}


# pied
__sgpl_pied__
    [>avoir|>perdre]  pieds
        <<- /sgpl/ -2>> pied                                        # Locution “\1 pied” : écrivez “pied” au singulier.


    à pieds
        <<- /sgpl/ not before(r"(?i)\b(?:lit|fauteuil|armoire|commode|guéridon|tabouret|chaise)s?\b") and not morph(>1, ">sculpter/")
        -2>> pied                                                   # Location “à pied” : écrivez “pied” au singulier.|https://fr.wiktionary.org/wiki/%C3%A0_pied


    [à|aux] >pied >levée
        <<- /sgpl/ ->> au pied levé                                 # Locution adverbiale invariable.

TEST: ils ont tout simplement perdu {{pieds}}
TEST: ils y sont allés à {{pieds}}.
TEST: Elles ont accompli l’impossible, et de surcroît {{aux pieds levés}}






# coûter cher
__conf_coûter_cher__
    [>coûter|>payer] chers
        <<- /conf/ -2>> cher                                        # Ici, « cher » est un adverbe, invariable.

    [>coûter|>payer] [chère|chères|>chair|>chaire]
        <<- /conf/ -2>> cher                                        # Confusion. Pour parler de la cherté, écrivez “cher”.

TEST: ces saloperies coûtent vraiment {{chères}} !


# avoir/donner lieu
__conf_avoir_donner_lieu__
    [>avoir|>donner]  lieux
        <<- /conf/ -2>> lieu                                        # « Donner lieu » : “lieu” est invariable dans cette locution verbale.

    [>avoir|>donner]  [>lieue|lieus]
        <<- /conf/ -2>> lieu                                        # Confusion. La lieue est une unité de distance. Les lieus sont des poissons.

TEST: ces conneries donneront {{lieux}} à une enquête approfondie.
TEST: Tout ce qui a {{lieue}} hors de ce pays est ignoré.


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



# plein
__[i]/sgpl(sgpl_plein_de)__
    (pleins) de?  @@0
    <<- morphex(word(-1), ":(?:V|[NAQ].*:s)", ":(?:[NA]:.:[pi]|V0e.*:[123]p)", True)
    -1>> plein                                                                      # Au singulier.
................................................................................

TEST: Je connais {{pleins}} de gens
TEST: Les avocats sont pleins de nutriments.


# pleines dents
__[i]/sgpl(sgpl_à_pleines_dents)__
    [àa] pl[ea]ine(?: dents?|s? dent)
    <<- ->> à pleines dents                       # Toujours au pluriel.

TEST: Elle mord la vie {{à plaine dent}}.


# possible
__[i]/sgpl(sgpl_autant_que_possible)__
    autant (?:d(?:e |’){w_2} |)que (possibles) @@$
    <<- -1>> possible                # Invariable. Implicitement, autant que ce qui est possible.

TEST: nous ferons des tests autant que {{possibles}}.
TEST: nous ferons autant de tests que {{possibles}}, c’est une nécessité.


# quelque
__[i]/sgpl(sgpl_quelque_temps)__
    (quelques) temps @@0
    <<- -1>> quelque                                           # Quelque temps : un temps indéterminé, pas de “s”.|https://fr.wiktionary.org/wiki/quelque_temps
__[i]/sgpl(sgpl_en_quelque_sorte)__
    en (quelques sortes) @@$
    <<- -1>> quelque sorte                                 # En quelque sorte : locution invariable.|https://fr.wiktionary.org/wiki/en_quelque_sorte

TEST: Il y a {{quelques}} temps que nous nous connaissons.
TEST: Je suis en vacances, en {{quelques sortes}}.


# rafales
__[i]/sgpl(sgpl_par_en_rafales)__
    (?:par|en) (rafale) @@$
    <<- -1>> rafales                                        # En général, il y a plusieurs rafales. Par rafales, en rafales.

TEST: Je lance des tests en {{rafale}}.




# par souci de
__[i]/sgpl(sgpl_par_souci_de)__
    par (soucis) (?:de|d) @@4
    <<- -1>> souci                                        # Invariable dans cette locution.

TEST: par {{soucis}} d’équité, chacun aura droit à une part.












# termes
__[i]/sgpl(sgpl_en_termes_de)__
    en (terme) (?:de|d) @@3
    <<- -1>> termes                                         # Dans la locution “en termes de”, mettez “terme” au pluriel.

TEST: en {{terme}} de communication, c’est une véritable catastrophe


# tous / tout / toutes
__[i]/sgpl(sgpl_tous_azimuts)__
    tout azimuts? <<- ->> tous azimuts                                              # « Tous azimuts » signifie « dans toutes les directions ».
__[i]/sgpl(sgpl_une_bonne_fois_pour_toutes)__
    une (?:bonne |)fois pour (toute) @@$
    <<- -1>> toutes                            # Il manque un “s”. Sous-entendu : une fois pour toutes les autres fois.

TEST: ils lancent des attaques {{tout azimut}}.
TEST: une bonne fois pour {{toute}}


# vacances
__[i]/sgpl(sgpl_bonnes_vacances)__
    bonne vacance
    <<- not morph(word(-1), ":D.*:f:s", False, False) ->> bonnes vacances             # Au pluriel.
__[i]/sgpl(sgpl_en_vacances)__
    ({w1}) +en (vacance)  @@0,$
    <<- morph(\1, ">(?:aller|partir)/", False) -2>> vacances                                        # Si vous parlez des congés, « vacance » doit être au pluriel.

TEST: Je pars en {{vacance}}.
TEST: {{Bonne vacance}} !
TEST: Il nous reste un poste en vacance.
................................................................................
TEST: ils mangent {{vites}}.
TEST: elles sont {{vites}} parties.
TEST: elles sont vites.


# vu / vue
__[i]/sgpl(sgpl_point_de_vue)__
    points? de (vu(?:s|es|)) @@$
    <<- -1>> vue                                                       # Dans un “point de vue”, “vue” est toujours au féminin singulier.

TEST: c’est son point de {{vu}} qui prime.
TEST: Son point de {{vus}} prévaudra toujours, faites-vous à cette idée ou dégagez.
TEST: de mon point de {{vues}}



................................................................................
TEST: {{cane}} de défense
TEST: alcool de {{cane}}
TEST: appuyé sur sa {{cane}}
TEST: bec-de-{{cannes}}
TEST: aéroport de {{cannes}}
TEST: restaurant à {{cane}}


# ce / se
__[i]/conf(conf_ce_être)__
    (se) (?:sera(?:i(?:en|)t|)|sont|f[uû](?:ren|)t)  @@0
    <<- (after("^ (?:[ldmtsc]es|leurs|nos|vos) ") and not before(r"(?i)\b(?:ils?|elles?|ne) +")) or
    ( morph(word(-1), ":Cs", False, True) and not before(", +$") and not after(r"(?i)^ +(?:ils?|elles?)\b") and not morph(word(1), ":Q", False, False) )
    -1>> ce                                                                 # Confusion probable.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=2440
TEST: des pans entiers de l’univers — pour reprendre l’expression d’Orwell — se sont d’ores et déjà volatilisés
TEST: À la pause, ils se sont tous les deux assis à l’arrière, et j’ai vu progressivement leurs corps se rapprocher.


# chair / chère
__[i]/conf(conf_faire_bonne_chère)__
    (f[aioîe]\w+) +(bonnes? ch(?:ai|e)re?) @@0,$
    <<- morph(\1, ">faire/", False)
    -2>> bonne chère                                                    # Confusion. « Faire bonne chère » signifie bien manger, ripailler.