Grammalecte  Check-in [7b06dbd33c]

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:[fr] tests et ajustements
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk | fr
Files: files | file ages | folders
SHA3-256:7b06dbd33c14dcf3a31dd7e97bad925e25c1fdd93218ab2f416c028eaadf1cd8
User & Date: olr 2019-07-31 12:36:40
Context
2019-08-02
06:03
[fr] tests et ajustements check-in: b2be957bfd user: olr tags: fr, trunk
2019-07-31
12:36
[fr] tests et ajustements check-in: 7b06dbd33c user: olr tags: fr, trunk
07:21
[fr] tests et ajustements check-in: 7a50040a2a user: olr tags: fr, trunk
Changes

Changes to gc_lang/fr/rules.grx.

2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
....
2194
2195
2196
2197
2198
2199
2200


2201
2202
2203
2204
2205
2206
2207
.....
13617
13618
13619
13620
13621
13622
13623
13624
13625
13626

13627


13628
13629
13630
13631
13632
13633
13634
.....
13868
13869
13870
13871
13872
13873
13874

13875
13876
13877
13878
13879
13880
13881
.....
13940
13941
13942
13943
13944
13945
13946

13947
13948
13949
13950
13951
13952
13953
.....
13974
13975
13976
13977
13978
13979
13980
13981
13982
13983
13984
13985
13986
13987
13988

13989
13990
13991
13992
13993
13994
13995
13996
13997
13998
13999
14000
14001
14002
14003
14004
14005
14006
14007
14008
14009
14010
14011
14012
.....
14053
14054
14055
14056
14057
14058
14059
14060

14061
14062
14063
14064
14065
14066
14067
.....
14119
14120
14121
14122
14123
14124
14125


14126
14127
14128
14129
14130
14131
14132
.....
14185
14186
14187
14188
14189
14190
14191
14192
14193
14194
14195
14196
14197
14198
14199
14200
14201
14202
14203
14204
14205
.....
14335
14336
14337
14338
14339
14340
14341
14342
14343


14344
14345
14346
14347
14348
14349
14350
14351
14352
14353
14354
14355
14356
.....
14448
14449
14450
14451
14452
14453
14454

14455
14456
14457
14458
14459
14460
14461
.....
20116
20117
20118
20119
20120
20121
20122
20123
20124
20125
20126
20127
20128
20129
20130
20131
.....
20134
20135
20136
20137
20138
20139
20140
20141
20142
20143
20144
20145
20146
20147
20148
20149
20150
20151
20152
20153
20154
20155
20156
20157
20158
20159
20160
20161
20162
.....
20173
20174
20175
20176
20177
20178
20179
20180
20181
20182
20183
20184
20185
20186
20187
20188
.....
20221
20222
20223
20224
20225
20226
20227
20228
20229
20230
20231
20232
20233
20234
20235
20236
20237

20238
20239
20240
20241
20242
20243
20244


__fusions_noms_communs__
    au revoir
        <<- ~>> ␣
        <<- =>> define(\1, [":N:m:i"])

    n’ importe [qui|quoi|quel|quelle|quels|quelles]
        <<- ~1:2>> ␣

    [cultural|gender] studies
        <<- ~>> ␣
        <<- =>> define(\1, [":N:f:p"])

    machine [learning|learnings]
................................................................................
        <<- morph(\1, ":V") !-2>>

    soit pour soit contre
        <<- !3>>


TEST: New York {{étaient}} {{devenue}} la plaque tournante de tous les trafics.




!!!! Noms composés                                                                                !!

__tag_noms__
    ~\w-là$
        <<- />> -là
................................................................................
TEST: ils arrivent et leur arrogance {{insupportables}} nous fatigue tous.
TEST: {{leur}} gros {{grains}}
TEST: Que ferons-nous de {{leur}} gros {{grains}}


__gn_le_la_leur_3m__
    [le|la|leur]  *WORD  *WORD  *WORD
        <<- /gn/ morph(\1, ":D") and morph(\2, ":[NA].*:[si]", ":(?:[123][sp]|G)") and morph(\3, ":[NA].*:[si]", ":(?:[123][sp]|G)") and morph(\4, ":[NA].*:p", "*") and \4.islower()
        -4>> =suggSing(\4)                                                                  # Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au singulier.


TEST: leur grande passion {{délirantes}} pour le cosplay.


TEST: non seulement met en péril la logique industrielle mais contribue à détruire peu à peu le substrat sur lequel repose le marché lui-même, à savoir la société des hommes.
TEST: qu’ils fassent tourner le système économique, assez concrètement, mais sans faire chier avec leurs petits problèmes de gens de rien.
TEST: avec le peuple, contre le capitalisme mortifère sous tous ses visages.


__gn_ledit_1m__
    ledit  *WORD
................................................................................
        <<- /gn/ morph(\3, ":[NA].*:[me]", ":(?:B|G|V0|f)") and morph(\4, ":[NA].*:f", "*") and not apposition(\3, \4)
        -4>> =suggMasSing(\4, True)                                                         # Accord de genre erroné : « \3 » est masculin, « \4 » est féminin.
        <<- /gn/ morph(\3, ":[NA].*:[si]", ":G") and morph(\4, ":[NA].*:p", ":[GWsi]") and not apposition(\3, \4)
        -4>> =suggMasSing(\4)                                                               # Accord de nombre erroné avec « \2 \3 » : « \4 » devrait être au singulier.

TEST: cet outil {{terribles}} qu’il a dans les mains
TEST: J’aimerais connaître de quel parti {{gauchistes}} on parle.

TEST: Ils jugeront en toute impartialité de ce cas {{délirante}}.


__gn_mon_ton_son_1m__
    [mon|ton|son]  *WORD
        <<- /gn/ morph(\1, ":D") >>>
        <<- /gn/ morph(\2, ">[bcdfgjklmnpqrstvwxz].*:[NA].*:f", ":[GWme]") -1>> =\1.replace("on", "a").replace("ON", "A")     # Accord de genre erroné : « \2 » est féminin.
................................................................................
        -4>> =suggFemSing(\4, True)                                                         # Accord de genre erroné : « \3 » est féminin, « \4 » est masculin.
        <<- /gn/ morph(\3, ":[NAQ].*:[si]", ":G") and morph(\4, ":[NAQ].*:p", ":[GWsi]") and not apposition(\3, \4)
        -4>> =suggFemSing(\4)                                                               # Accord de nombre erroné avec « \2 \3 » : « \4 » devrait être au singulier.

TEST: quelle belle {{étourdi}}, cette gamine
TEST: j’en ai assez de cette ville {{stressées}} en permanence.
TEST: Peut-on imaginer de plus {{beaux}} {{enfant}} ?

TEST: il fut cette fois ulcéré de voir son entreprise une fois de plus ruinée par la malchance.


__gn_notre_votre_chaque_1m__
    [notre|votre|chaque]  *WORD
        <<- /gn/ morph(\2, ":[NA].*:p", ":[siGW]") -2>> =suggSing(\2)                       # Accord de nombre erroné : « \2 » devrait être au singulier.

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

    [et|ou|de]  [chaque|quelque|notre|votre]  *WORD  *WORD
        <<- /gn/ not morph(<1, ":[NA]|>(?:et|ou)/") and not \4.startswith("seul") >>>
        <<- /gn/ ((morph(\3, ":[NA].*:m", ":(?:B|e|G|V0|f)") and morph(\4, ":[NA].*:f", "*")) or (morph(\3, ":[NA].*:f", ":(?:B|e|G|V0|m)") and morph(\4, ":[NA].*:m", "*")))
            and not apposition(\3, \4)
        -4>> =switchGender(\4, False)                                                       # Accord de genre erroné entre « \3 » et « \4 ».
        <<- /gn/ __also__ and hasFemForm(\3) -3>> =switchGender(\3, False)                  # Accord de genre erroné avec « \4 ».
        <<- /gn/ morph(\3, ":[NA].*:[si]", ":G") and morph(\3, ":[NA].*:p", ":[GWsi]") and not apposition(\3, \4)
        -4>> =suggSing(\4)                                                                  # Accord de nombre erroné avec « \2 \3 » : « \4 » devrait être au singulier.

TEST: chaque élément {{terrestres}}
TEST: notre {{belle}} {{avenu}}
TEST: ils viennent de chaque coin {{ignorée}} du pays.
TEST: que faire de votre {{ennuyeuse}} {{avocat}}
TEST: de quelque cartable {{vides}}

TEST: Quelque chose tombé dans le puits a souillé l’eau.


__gn_det_sing_3m__
    [ledit|ladite|un|une|ce|cet|cette|mon|ton|son|ma|ta|sa|notre|votre|au|quel|quelle|dudit]  *WORD  *WORD  *WORD
        <<- /gn/ not value(<1, "|et|ou|") and morph(\2, ":[NA].*:[si]") and morph(\3, ":[NA].*:[si]", ":(?:[123][sp]|G|P)") and morph(\4, ":[NA].*:p", "*") and \4.islower()
        -4>> =suggSing(\4)                                                                  # Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au singulier.

    [le|la|leur]  *WORD  *WORD  *WORD
        <<- /gn/ not value(<1, "|et|ou|") and morph(\2, ":[NA].*:[si]", ":[123][sp]") and morph(\3, ":[NA].*:[si]", ":(?:[123][sp]|G|P)") and morph(\4, ":[NA].*:p", "*")
        -4>> =suggSing(\4)                                                                  # Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au singulier.

TEST: un gros connard {{pathétiques}}
TEST: La petite fille {{devenues}} infirmière.
TEST: le jour venu prises par surprise elles durent s’enfuir.
TEST: servi pas un style et une exigence historique remarquables
TEST: sous la forme d’un baromètre comparant différents moyens pour alléger ses émissions


## Pluriels

__gn_les_1m__
    ,  les  *WORD
        <<- /gn/ ( morph(\3, ":[NA].*:s", "*") and not (value(>1, "|et|ou|") and morph(>2, ":[NA]")) )
................................................................................
        <<- /gn/ morph(\3, ":[NA].*:[pi]") and morph(\4, ":[NA].*:s", "*") and not apposition(\3, \4) and not (value(>1, "|et|,|") and morph(>2, ":A"))
        -4>> =suggPlur(\4)                                                                          # Accord de nombre erroné avec « \2 \3 » : « \4 » devrait être au pluriel.

TEST: les pitres {{imbécile}}
TEST: il faut en convenir et les femmes {{oubliés}} seront satisfaites.
TEST: les {{petites}} {{oubliés}}
TEST: c’est ça, et les femmes {{retrouvés}} seront emmenées à l’hôpital.
TEST: ça n’en vaut pas la peine, et les éléments {{perdu}} le seront à jamais

TEST: les moins éloignées possible
TEST: Les besoins minimums en matière de sommeil sont-ils les mêmes d’un individu à l’autre ?
TEST: cette attention de tous les instants portée à la boussole.


__gn_leurs_1m__
    leurs  *WORD
................................................................................
        -4>> =switchGender(\4, True)                                                                # Accord de genre erroné entre « \3 » et « \4 ».
        <<- /gn/ __also__ and hasFemForm(\3) -3>> =switchGender(\3, True)                           # Accord de genre erroné avec « \4 ».
        <<- /gn/ morph(\3, ":[NA].*:[pi]") and morph(\4, ":[NA].*:s", "*") and not apposition(\3, \4) and not (value(>1, "|et|,|") and morph(>2, ":A"))
            and not (\1.startswith("de") and value(<1, "|un|une|"))
        -4>> =suggPlur(\4)                                                                          # Accord de nombre erroné avec « \2 \3 » : « \4 » devrait être au pluriel.

TEST: ces {{beaux}} {{institutions}}


TEST: de vos défauts {{terrible}}, je connais presque tout.
TEST: Les éléments caractéristiques liés à ses valeurs historique et architecturale
TEST: Une des pierres veinée de rouge…
TEST: Pour maintenir le potentiel de membrane qui lui permet de communiquer avec ses voisins sous forme d’influx nerveux, un neurone a besoin d’énergie.
TEST: ces religieux inflexibles envers les femmes mais compatissants envers les tyrans qui soutiennent leur religion.
TEST: le bruit de nos pas étouffé par l’épais tapis.

................................................................................
    [ces|mes|tes|ses|nos|vos|leurs|quels|quelles|aux]       *WORD  *WORD  *WORD
    [plusieurs|quelques|certains|certaines|moult]           *WORD  *WORD  *WORD
    [lesdits|lesdites|desdits|desdites|auxdits|auxdites]    *WORD  *WORD  *WORD
        <<- /gn/ morph(\2, ":[NA].*:[pi]") and morph(\3, ":[NA].*:[pi]", ":(?:[123][sp]|G)")
            and morph(\4, ":[NA].*:s", "*") and \4.islower() and not before("(?i)\\bune? de +$") and not \4.startswith("seul")
        -4>> =suggPlur(\4)                                                                  # Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au pluriel.

    [les|leurs]    *WORD  *WORD  *WORD
        <<- /gn/ morph(\2, ":[NA].*:[pi]", "[123][sp]") and morph(\3, ":[NA].*:[pi]", ":(?:[123][sp]|G)")
            and morph(\4, ":[NA].*:s", "*") and not before("(?i)\\bune? de +$") and not \4.startswith("seul")
        -4>> =suggPlur(\4)                                                                  # Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au pluriel.

TEST: ces petites sottes {{déjantée}}
TEST: Les grandes volontés {{dépassée}} par les évènements
TEST: Prendre goût aux heures passées seul à marcher


## certains / certaines
__gn_certains_1m__
    certains  *WORD
        <<- /gn/ morph(\2, ":[NA].*:f", ":[emGWP]") -1>> certaines                          # Accord de genre erroné : « \2 » est féminin.
................................................................................
        -1>> quelles                                                                        # Accord de genre erroné avec « \3 \4 ».

__gn_quelles_accord_être_sujet__
    quelles  [sont|étaient|seront|serons|seraient|furent|fussent]  [les|ces|mes|tes|ses|nos|vos|leurs]  *WORD
        <<- /gn/ not value(<1, "|tels|telles|") and morph(\4, ":[NA].*:m", ":[fe]")
        -1>> quels                                                                          # Accord de genre erroné avec « \3 \4 ».

TEST: {{Quel}} sont ces hommes.                               ->> Quels
TEST: {{Quel}} est cette force ?                              ->> Quelle


TEST: {{Quelle}} est mon animal favori ?                      ->> Quel
TEST: {{Quels}} sont ces femmes ?                             ->> Quelles
TEST: {{Quelles}} est cette imbécillité ?                     ->> Quelle
TEST: {{Quelles}} sont ces hommes ?                           ->> Quels
TEST: {{Quel}} est la politique ?                             ->> Quelle
TEST: {{Quelle}} est le politique ?                           ->> Quel
TEST: Il s’agit de définir quelle est notre propre orientation.



#### Quel(le) que soit …

## masculin requis
................................................................................
            and not (\1.startswith("de") and value(<1, "|un|une|"))
        -4>> =suggFemPlur(\4)                                                               # Accord de nombre erroné avec « \2 \3 » : « \4 » devrait être au pluriel.

TEST: certaines idioties {{stupide}}
TEST: quelles grandes {{idiots}}
TEST: je ne sais guère de quelles âneries {{proférés}} on parle.
TEST: quelles étonnantes {{petits}}



## quelque adverbe
__gn_quelque_adverbe__
    quelques  *NUM
        <<- /gn/ -1>> quelque                                                               # Devant un nombre, « quelque » est un adverbe, donc invariable.

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

__imp_union_moi__
    *WORD  moi
        <<- /imp/ space_after(\1, 1, 1)
            and morph(\1, ":E", ":[GM]|>(?:venir|aller|partir)/") and not value(<1, "|de|d’|le|la|les|l’|je|j’|me|m’|te|t’|se|s’|nous|vous|lui|leur|")
        ->> \1-\2                                       # S’il s’agit d’un impératif, mettez un trait d’union.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=4206

    ,  *WORD  moi
        <<- /imp/ space_after(\1, 1, 1) and morph(\2, ":V(?:1.*:Ip.*:2s|[23].*:Ip.*:3s)", ":[GM]|>(?:venir|aller|partir)/")
        -2:3>> =suggVerbTense(\2, ":E", ":2s")+"-moi"   # S’il s’agit d’un impératif, mettez un trait d’union.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=4206

TEST: {{Apporte moi}} ce dictionnaire.                                      ->> Apporte-moi
TEST: {{Apportez moi}} ce dictionnaire
TEST: tu me dois bien ça, {{Achèves moi}}, je t’en prie.
TEST: explique ça mieux, {{Définit moi}} ça en termes intelligibles.
TEST: Viens moi je m’ennuie.
................................................................................

__imp_union_toi__
    *WORD  toi
        <<- /imp/ space_after(\1, 1, 1)
            and morph(\1, ":E:2s", ":[GM]|>(?:venir|aller|partir)/") and not value(<1, "|de|d’|le|la|les|l’|me|m’|te|t’|se|s’|nous|vous|lui|leur|")
        ->> \1-\2                                       # S’il s’agit d’un impératif, mettez un trait d’union.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=4206

    ,  *WORD  toi
        <<- /imp/ space_after(\1, 1, 1) and morph(\2, ":V(?:1.*:Ip.*:2s|[23].*:Ip.*:3s)", ":[GM]|>(?:venir|aller|partir)/")
        -2:3>> =suggVerbTense(\2, ":E", ":2s")+"-toi"   # S’il s’agit d’un impératif, mettez un trait d’union.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=4206

TEST: {{Donne toi}} du temps.
TEST: j’en ai marre, {{instruit toi}} avant de parler.


__imp_union_nous_vous_lui__
    *WORD  [nous|vous|lui]
        <<- /imp/ space_after(\1, 1, 1)
            and morph(\1, ":E", ":[GM]|>(?:venir|aller|partir)/") and morph(>1, ":|<end>", ":(?:Y|3[sp]|Oo)|>(?:en|y)/") and morph(<1, ":Cc|<start>|>,")
        ->> \1-\2                                       # S’il s’agit d’un impératif, mettez un trait d’union.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=4206

    ,  *WORD  [nous|vous|lui]
        <<- /imp/ space_after(\2, 1, 1) and morph(\2, ":V(?:1.*:Ip.*:2s|[23].*:Ip.*:3s)", ":[GM]|>(?:venir|aller|partir)/") and not morph(>1, ":Y")
        -2:3>> =suggVerbTense(\2, ":E", ":2s")+"-"+\3   # S’il s’agit d’un impératif, mettez un trait d’union.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=4206

TEST: {{Donne nous}} du café.
TEST: si ça se peut, {{apprend nous}} à réussir.
TEST: Ce que Jeanne, femme de Patrick, veut vous dire de sa vie.
TEST: Daignez le lui permettre
................................................................................

__imp_union_les__
    *WORD  les
        <<- /imp/ space_after(\1, 1, 1)
            and morph(\1, ":E", ":[GM]|>(?:venir|aller|partir)") and morph(>1, ":|<end>|>,", ":(?:N|A|Y|B|3[sp])|>(?:pour|plus|moins|mieux|peu|trop|très|en|y)/") and morph(<1, ":Cc|<start>|>,")
        ->> \1-les                                      # S’il s’agit d’un impératif, mettez un trait d’union.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=4206

    ,  *WORD  les
        <<- /imp/ space_after(\1, 1, 1) and morph(\2, ":V(?:1.*:Ip.*:2s|[23].*:Ip.*:3s)", ":[GM]|>(?:venir|aller|partir)/")
            and morph(>1, ":|<end>|>,", ":(?:N|A|Y|B|3[sp])|>(?:pour|plus|moins|mieux|peu|trop|très|en|y)/")
        -2:3>> =suggVerbTense(\2, ":E", ":2s")+"-les"   # S’il s’agit d’un impératif, mettez un trait d’union.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=4206

TEST: {{chante les}} avec conviction
TEST: tu dois finir, {{finit les}}.
TEST: Veut les en convaincre.
TEST: Invite les plus intelligents…
................................................................................

__imp_union_en__
    *WORD  en
        <<- /imp/ space_after(\1, 1, 1)
            and morph(\1, ":E", ":[GM]|>(?:venir|aller|partir)/") and morph(>1, ":|<end>|>,", ":(?:N|A|Q|Y|M|P|H|T|D)|>(?:pour|plus|moins|mieux|peu|plupart|trop|très|une?)/") and morph(<1, ":Cc|<start>|>,")
        ->> \1-\2                                       # S’il s’agit d’un impératif, mettez un trait d’union.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=4206

    ,  *WORD  en
        <<- /imp/ space_after(\1, 1, 1) and morph(\2, ":V(?:1.*:Ip.*:2s|[23].*:Ip.*:3s)", ":[GM]|>(?:venir|aller|partir)/")
            and morph(>1, ":|<end>|>,", ":(?:N|A|Y|M|P|B|3[sp]|D)|>(?:pour|plus|moins|mieux|peu|trop|très|en|y)/")
        -2:3>> =suggVerbTense(\2, ":E", ":2s")+"-"+\3   # S’il s’agit d’un impératif, mettez un trait d’union.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=4206

TEST: {{restons en}} là.
TEST: tu crois ça, {{donnes en}} encore
TEST: Intercède en ma faveur
TEST: Même l’implacable guerrier-capitaine de la Fédération, James T. Kirk, apprend en rechignant à enterrer le phaser avec les bâtards Klingons qui ont tué son fils.
TEST: Terminons en réservant une place de choix à l’un des relais les plus fervents de la pensée



__imp_laisser_le_la_les_infi__
    >laisser  [le|la|les]  *WORD
        <<- /imp/ space_after(\1, 1, 1) and morph(\1, ":E") and morph(\3, ":(?:Y|X|Oo)", ":[NAB]") and not morph(<1, ":O[sv]")
        -1:2>> \1-\2                                    # S’il s’agit d’un impératif, mettez un trait d’union.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=4206








|







 







>
>







 







|


>

>
>







 







>







 







>







 







|







>








<
<
<
<

<
<

<







 







|
>







 







>
>







 







|





|







 







|
|
>
>
|
|
|
|
|
<







 







>







 







|
|







 







|
|












|







 







|
|







 







|
|
|







>







2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
....
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
.....
13619
13620
13621
13622
13623
13624
13625
13626
13627
13628
13629
13630
13631
13632
13633
13634
13635
13636
13637
13638
13639
.....
13873
13874
13875
13876
13877
13878
13879
13880
13881
13882
13883
13884
13885
13886
13887
.....
13946
13947
13948
13949
13950
13951
13952
13953
13954
13955
13956
13957
13958
13959
13960
.....
13981
13982
13983
13984
13985
13986
13987
13988
13989
13990
13991
13992
13993
13994
13995
13996
13997
13998
13999
14000
14001
14002
14003
14004




14005


14006

14007
14008
14009
14010
14011
14012
14013
.....
14054
14055
14056
14057
14058
14059
14060
14061
14062
14063
14064
14065
14066
14067
14068
14069
.....
14121
14122
14123
14124
14125
14126
14127
14128
14129
14130
14131
14132
14133
14134
14135
14136
.....
14189
14190
14191
14192
14193
14194
14195
14196
14197
14198
14199
14200
14201
14202
14203
14204
14205
14206
14207
14208
14209
.....
14339
14340
14341
14342
14343
14344
14345
14346
14347
14348
14349
14350
14351
14352
14353
14354

14355
14356
14357
14358
14359
14360
14361
.....
14453
14454
14455
14456
14457
14458
14459
14460
14461
14462
14463
14464
14465
14466
14467
.....
20122
20123
20124
20125
20126
20127
20128
20129
20130
20131
20132
20133
20134
20135
20136
20137
.....
20140
20141
20142
20143
20144
20145
20146
20147
20148
20149
20150
20151
20152
20153
20154
20155
20156
20157
20158
20159
20160
20161
20162
20163
20164
20165
20166
20167
20168
.....
20179
20180
20181
20182
20183
20184
20185
20186
20187
20188
20189
20190
20191
20192
20193
20194
.....
20227
20228
20229
20230
20231
20232
20233
20234
20235
20236
20237
20238
20239
20240
20241
20242
20243
20244
20245
20246
20247
20248
20249
20250
20251


__fusions_noms_communs__
    au revoir
        <<- ~>> ␣
        <<- =>> define(\1, [":N:m:i"])

    n’ importe [qui|quoi|quel|quelle|quels|quelles|où]
        <<- ~1:2>> ␣

    [cultural|gender] studies
        <<- ~>> ␣
        <<- =>> define(\1, [":N:f:p"])

    machine [learning|learnings]
................................................................................
        <<- morph(\1, ":V") !-2>>

    soit pour soit contre
        <<- !3>>


TEST: New York {{étaient}} {{devenue}} la plaque tournante de tous les trafics.
TEST: de Bordeaux ou de n’importe où



!!!! Noms composés                                                                                !!

__tag_noms__
    ~\w-là$
        <<- />> -là
................................................................................
TEST: ils arrivent et leur arrogance {{insupportables}} nous fatigue tous.
TEST: {{leur}} gros {{grains}}
TEST: Que ferons-nous de {{leur}} gros {{grains}}


__gn_le_la_leur_3m__
    [le|la|leur]  *WORD  *WORD  *WORD
        <<- /gn/ not value(<1, "|et|ou|") and morph(\1, ":D") and morph(\2, ":[NA].*:[si]", ":(?:[123][sp]|G)") and morph(\3, ":[NA].*:[si]", ":(?:[123][sp]|G|P)") and morph(\4, ":[NA].*:p", "*") and \4.islower()
        -4>> =suggSing(\4)                                                                  # Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au singulier.

TEST: La petite fille {{devenues}} infirmière.
TEST: leur grande passion {{délirantes}} pour le cosplay.
TEST: le jour venu prises par surprise elles durent s’enfuir.
TEST: sous la forme d’un baromètre comparant différents moyens pour alléger ses émissions
TEST: non seulement met en péril la logique industrielle mais contribue à détruire peu à peu le substrat sur lequel repose le marché lui-même, à savoir la société des hommes.
TEST: qu’ils fassent tourner le système économique, assez concrètement, mais sans faire chier avec leurs petits problèmes de gens de rien.
TEST: avec le peuple, contre le capitalisme mortifère sous tous ses visages.


__gn_ledit_1m__
    ledit  *WORD
................................................................................
        <<- /gn/ morph(\3, ":[NA].*:[me]", ":(?:B|G|V0|f)") and morph(\4, ":[NA].*:f", "*") and not apposition(\3, \4)
        -4>> =suggMasSing(\4, True)                                                         # Accord de genre erroné : « \3 » est masculin, « \4 » est féminin.
        <<- /gn/ morph(\3, ":[NA].*:[si]", ":G") and morph(\4, ":[NA].*:p", ":[GWsi]") and not apposition(\3, \4)
        -4>> =suggMasSing(\4)                                                               # Accord de nombre erroné avec « \2 \3 » : « \4 » devrait être au singulier.

TEST: cet outil {{terribles}} qu’il a dans les mains
TEST: J’aimerais connaître de quel parti {{gauchistes}} on parle.
TEST: au petit {{publique}}
TEST: Ils jugeront en toute impartialité de ce cas {{délirante}}.


__gn_mon_ton_son_1m__
    [mon|ton|son]  *WORD
        <<- /gn/ morph(\1, ":D") >>>
        <<- /gn/ morph(\2, ">[bcdfgjklmnpqrstvwxz].*:[NA].*:f", ":[GWme]") -1>> =\1.replace("on", "a").replace("ON", "A")     # Accord de genre erroné : « \2 » est féminin.
................................................................................
        -4>> =suggFemSing(\4, True)                                                         # Accord de genre erroné : « \3 » est féminin, « \4 » est masculin.
        <<- /gn/ morph(\3, ":[NAQ].*:[si]", ":G") and morph(\4, ":[NAQ].*:p", ":[GWsi]") and not apposition(\3, \4)
        -4>> =suggFemSing(\4)                                                               # Accord de nombre erroné avec « \2 \3 » : « \4 » devrait être au singulier.

TEST: quelle belle {{étourdi}}, cette gamine
TEST: j’en ai assez de cette ville {{stressées}} en permanence.
TEST: Peut-on imaginer de plus {{beaux}} {{enfant}} ?
TEST: de ma grande {{ami}}
TEST: il fut cette fois ulcéré de voir son entreprise une fois de plus ruinée par la malchance.


__gn_notre_votre_chaque_1m__
    [notre|votre|chaque]  *WORD
        <<- /gn/ morph(\2, ":[NA].*:p", ":[siGW]") -2>> =suggSing(\2)                       # Accord de nombre erroné : « \2 » devrait être au singulier.

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

    [et|ou|de]  [chaque|quelque|notre|votre]  *WORD  *WORD
        <<- /gn/ not morph(<1, ":[NA]|>(?:et|ou)/") and not \4.startswith("seul") >>>
        <<- /gn/ ((morph(\3, ":[NA].*:m", ":(?:B|e|G|V0|f)") and morph(\4, ":[NA].*:f", "*")) or (morph(\3, ":[NA].*:f", ":(?:B|e|G|V0|m)") and morph(\4, ":[NA].*:m", "*")))
            and not apposition(\3, \4)
        -4>> =switchGender(\4, False)                                                       # Accord de genre erroné entre « \3 » et « \4 ».
        <<- /gn/ __also__ and hasFemForm(\3) -3>> =switchGender(\3, False)                  # Accord de genre erroné avec « \4 ».
        <<- /gn/ morph(\3, ":[NA].*:[si]", ":G") and morph(\4, ":[NA].*:p", ":[GWsi]") and not apposition(\3, \4)
        -4>> =suggSing(\4)                                                                  # Accord de nombre erroné avec « \2 \3 » : « \4 » devrait être au singulier.

TEST: chaque élément {{terrestres}}
TEST: notre {{belle}} {{avenu}}
TEST: ils viennent de chaque coin {{ignorée}} du pays.
TEST: que faire de votre {{ennuyeuse}} {{avocat}}
TEST: de quelque cartable {{vides}}
TEST: de notre petit {{amis}}
TEST: Quelque chose tombé dans le puits a souillé l’eau.


__gn_det_sing_3m__
    [ledit|ladite|un|une|ce|cet|cette|mon|ton|son|ma|ta|sa|notre|votre|au|quel|quelle|dudit]  *WORD  *WORD  *WORD
        <<- /gn/ not value(<1, "|et|ou|") and morph(\2, ":[NA].*:[si]") and morph(\3, ":[NA].*:[si]", ":(?:[123][sp]|G|P)") and morph(\4, ":[NA].*:p", "*") and \4.islower()
        -4>> =suggSing(\4)                                                                  # Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au singulier.





TEST: un gros connard {{pathétiques}}


TEST: servi pas un style et une exigence historique remarquables



## Pluriels

__gn_les_1m__
    ,  les  *WORD
        <<- /gn/ ( morph(\3, ":[NA].*:s", "*") and not (value(>1, "|et|ou|") and morph(>2, ":[NA]")) )
................................................................................
        <<- /gn/ morph(\3, ":[NA].*:[pi]") and morph(\4, ":[NA].*:s", "*") and not apposition(\3, \4) and not (value(>1, "|et|,|") and morph(>2, ":A"))
        -4>> =suggPlur(\4)                                                                          # Accord de nombre erroné avec « \2 \3 » : « \4 » devrait être au pluriel.

TEST: les pitres {{imbécile}}
TEST: il faut en convenir et les femmes {{oubliés}} seront satisfaites.
TEST: les {{petites}} {{oubliés}}
TEST: c’est ça, et les femmes {{retrouvés}} seront emmenées à l’hôpital.
TEST: fais ce que tu peux, ou les {{petites}} {{perdus}} le seront à jamais
TEST: ça ou les éternels {{imbécile}} du coin
TEST: les moins éloignées possible
TEST: Les besoins minimums en matière de sommeil sont-ils les mêmes d’un individu à l’autre ?
TEST: cette attention de tous les instants portée à la boussole.


__gn_leurs_1m__
    leurs  *WORD
................................................................................
        -4>> =switchGender(\4, True)                                                                # Accord de genre erroné entre « \3 » et « \4 ».
        <<- /gn/ __also__ and hasFemForm(\3) -3>> =switchGender(\3, True)                           # Accord de genre erroné avec « \4 ».
        <<- /gn/ morph(\3, ":[NA].*:[pi]") and morph(\4, ":[NA].*:s", "*") and not apposition(\3, \4) and not (value(>1, "|et|,|") and morph(>2, ":A"))
            and not (\1.startswith("de") and value(<1, "|un|une|"))
        -4>> =suggPlur(\4)                                                                          # Accord de nombre erroné avec « \2 \3 » : « \4 » devrait être au pluriel.

TEST: ces {{beaux}} {{institutions}}
TEST: nos petites {{fille}}
TEST: de plusieurs {{grands}} {{avocates}}
TEST: de vos défauts {{terrible}}, je connais presque tout.
TEST: Les éléments caractéristiques liés à ses valeurs historique et architecturale
TEST: Une des pierres veinée de rouge…
TEST: Pour maintenir le potentiel de membrane qui lui permet de communiquer avec ses voisins sous forme d’influx nerveux, un neurone a besoin d’énergie.
TEST: ces religieux inflexibles envers les femmes mais compatissants envers les tyrans qui soutiennent leur religion.
TEST: le bruit de nos pas étouffé par l’épais tapis.

................................................................................
    [ces|mes|tes|ses|nos|vos|leurs|quels|quelles|aux]       *WORD  *WORD  *WORD
    [plusieurs|quelques|certains|certaines|moult]           *WORD  *WORD  *WORD
    [lesdits|lesdites|desdits|desdites|auxdits|auxdites]    *WORD  *WORD  *WORD
        <<- /gn/ morph(\2, ":[NA].*:[pi]") and morph(\3, ":[NA].*:[pi]", ":(?:[123][sp]|G)")
            and morph(\4, ":[NA].*:s", "*") and \4.islower() and not before("(?i)\\bune? de +$") and not \4.startswith("seul")
        -4>> =suggPlur(\4)                                                                  # Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au pluriel.

    leurs  *WORD  *WORD  *WORD
        <<- /gn/ morph(\2, ":[NA].*:[pi]", "[123][sp]") and morph(\3, ":[NA].*:[pi]", ":(?:[123][sp]|G)")
            and morph(\4, ":[NA].*:s", "*") and not before("(?i)\\bune? de +$") and not \4.startswith("seul")
        -4>> =suggPlur(\4)                                                                  # Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au pluriel.

TEST: ces petites sottes {{déjantée}}
TEST: Leurs grands plans {{dépassé}} par les évènements
TEST: Prendre goût aux heures passées seul à marcher


## certains / certaines
__gn_certains_1m__
    certains  *WORD
        <<- /gn/ morph(\2, ":[NA].*:f", ":[emGWP]") -1>> certaines                          # Accord de genre erroné : « \2 » est féminin.
................................................................................
        -1>> quelles                                                                        # Accord de genre erroné avec « \3 \4 ».

__gn_quelles_accord_être_sujet__
    quelles  [sont|étaient|seront|serons|seraient|furent|fussent]  [les|ces|mes|tes|ses|nos|vos|leurs]  *WORD
        <<- /gn/ not value(<1, "|tels|telles|") and morph(\4, ":[NA].*:m", ":[fe]")
        -1>> quels                                                                          # Accord de genre erroné avec « \3 \4 ».

TEST: {{Quel}} sont ces hommes.                                     ->> Quels
TEST: {{Quel}} est cette force ?                                    ->> Quelle
TEST: {{Quel}} serait notre peine ?                                 ->> Quelle
TEST: {{Quel}} est la politique ?                                   ->> Quelle
TEST: {{Quelle}} est mon animal favori ?                            ->> Quel
TEST: {{Quelle}} est le politique ?                                 ->> Quel
TEST: {{Quelles}} est cette imbécillité ?                           ->> Quelle
TEST: {{Quelles}} sont ces hommes ?                                 ->> Quels
TEST: {{Quels}} sont ces femmes ?                                   ->> Quelles

TEST: Il s’agit de définir quelle est notre propre orientation.



#### Quel(le) que soit …

## masculin requis
................................................................................
            and not (\1.startswith("de") and value(<1, "|un|une|"))
        -4>> =suggFemPlur(\4)                                                               # Accord de nombre erroné avec « \2 \3 » : « \4 » devrait être au pluriel.

TEST: certaines idioties {{stupide}}
TEST: quelles grandes {{idiots}}
TEST: je ne sais guère de quelles âneries {{proférés}} on parle.
TEST: quelles étonnantes {{petits}}
TEST: ici ou auxdites lointaines {{contrée}}


## quelque adverbe
__gn_quelque_adverbe__
    quelques  *NUM
        <<- /gn/ -1>> quelque                                                               # Devant un nombre, « quelque » est un adverbe, donc invariable.

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

__imp_union_moi__
    *WORD  moi
        <<- /imp/ space_after(\1, 1, 1)
            and morph(\1, ":E", ":[GM]|>(?:venir|aller|partir)/") and not value(<1, "|de|d’|le|la|les|l’|je|j’|me|m’|te|t’|se|s’|nous|vous|lui|leur|")
        ->> \1-\2                                       # S’il s’agit d’un impératif, mettez un trait d’union.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=4206

    [<start>|,]  *WORD  moi
        <<- /imp/ space_after(\2, 1, 1) and morph(\2, ":V(?:1.*:Ip.*:2s|[23].*:Ip.*:3s)", ":[GM]|>(?:venir|aller|partir)/")
        -2:3>> =suggVerbTense(\2, ":E", ":2s")+"-moi"   # S’il s’agit d’un impératif, mettez un trait d’union.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=4206

TEST: {{Apporte moi}} ce dictionnaire.                                      ->> Apporte-moi
TEST: {{Apportez moi}} ce dictionnaire
TEST: tu me dois bien ça, {{Achèves moi}}, je t’en prie.
TEST: explique ça mieux, {{Définit moi}} ça en termes intelligibles.
TEST: Viens moi je m’ennuie.
................................................................................

__imp_union_toi__
    *WORD  toi
        <<- /imp/ space_after(\1, 1, 1)
            and morph(\1, ":E:2s", ":[GM]|>(?:venir|aller|partir)/") and not value(<1, "|de|d’|le|la|les|l’|me|m’|te|t’|se|s’|nous|vous|lui|leur|")
        ->> \1-\2                                       # S’il s’agit d’un impératif, mettez un trait d’union.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=4206

    [<start>|,]  *WORD  toi
        <<- /imp/ space_after(\2, 1, 1) and morph(\2, ":V(?:1.*:Ip.*:2s|[23].*:Ip.*:3s)", ":[GM]|>(?:venir|aller|partir)/")
        -2:3>> =suggVerbTense(\2, ":E", ":2s")+"-toi"   # S’il s’agit d’un impératif, mettez un trait d’union.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=4206

TEST: {{Donne toi}} du temps.
TEST: j’en ai marre, {{instruit toi}} avant de parler.


__imp_union_nous_vous_lui__
    *WORD  [nous|vous|lui]
        <<- /imp/ space_after(\1, 1, 1)
            and morph(\1, ":E", ":[GM]|>(?:venir|aller|partir)/") and morph(>1, ":|<end>", ":(?:Y|3[sp]|Oo)|>(?:en|y)/") and morph(<1, ":Cc|<start>|>,")
        ->> \1-\2                                       # S’il s’agit d’un impératif, mettez un trait d’union.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=4206

    [<start>|,]  *WORD  [nous|vous|lui]
        <<- /imp/ space_after(\2, 1, 1) and morph(\2, ":V(?:1.*:Ip.*:2s|[23].*:Ip.*:3s)", ":[GM]|>(?:venir|aller|partir)/") and not morph(>1, ":Y")
        -2:3>> =suggVerbTense(\2, ":E", ":2s")+"-"+\3   # S’il s’agit d’un impératif, mettez un trait d’union.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=4206

TEST: {{Donne nous}} du café.
TEST: si ça se peut, {{apprend nous}} à réussir.
TEST: Ce que Jeanne, femme de Patrick, veut vous dire de sa vie.
TEST: Daignez le lui permettre
................................................................................

__imp_union_les__
    *WORD  les
        <<- /imp/ space_after(\1, 1, 1)
            and morph(\1, ":E", ":[GM]|>(?:venir|aller|partir)") and morph(>1, ":|<end>|>,", ":(?:N|A|Y|B|3[sp])|>(?:pour|plus|moins|mieux|peu|trop|très|en|y)/") and morph(<1, ":Cc|<start>|>,")
        ->> \1-les                                      # S’il s’agit d’un impératif, mettez un trait d’union.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=4206

    [<start>|,]  *WORD  les
        <<- /imp/ space_after(\2, 1, 1) and morph(\2, ":V(?:1.*:Ip.*:2s|[23].*:Ip.*:3s)", ":[GM]|>(?:venir|aller|partir)/")
            and morph(>1, ":|<end>|>,", ":(?:N|A|Y|B|3[sp])|>(?:pour|plus|moins|mieux|peu|trop|très|en|y)/")
        -2:3>> =suggVerbTense(\2, ":E", ":2s")+"-les"   # S’il s’agit d’un impératif, mettez un trait d’union.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=4206

TEST: {{chante les}} avec conviction
TEST: tu dois finir, {{finit les}}.
TEST: Veut les en convaincre.
TEST: Invite les plus intelligents…
................................................................................

__imp_union_en__
    *WORD  en
        <<- /imp/ space_after(\1, 1, 1)
            and morph(\1, ":E", ":[GM]|>(?:venir|aller|partir)/") and morph(>1, ":|<end>|>,", ":(?:N|A|Q|Y|M|P|H|T|D)|>(?:pour|plus|moins|mieux|peu|plupart|trop|très|une?)/") and morph(<1, ":Cc|<start>|>,")
        ->> \1-\2                                       # S’il s’agit d’un impératif, mettez un trait d’union.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=4206

    [<start>|,]  *WORD  en
        <<- /imp/ space_after(\2, 1, 1) and morph(\2, ":V(?:1.*:Ip.*:2s|[23].*:Ip.*:3s)", ":[GM]|>(?:venir|aller|partir)/")
            and morph(>1, ":|<end>|>,", ":(?:N|A|Y|M|P|B|3[sp]|D|Ov)|>(?:pour|plus|moins|mieux|peu|trop|très|en|y)/")
        -2:3>> =suggVerbTense(\2, ":E", ":2s")+"-"+\3   # S’il s’agit d’un impératif, mettez un trait d’union.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=4206

TEST: {{restons en}} là.
TEST: tu crois ça, {{donnes en}} encore
TEST: Intercède en ma faveur
TEST: Même l’implacable guerrier-capitaine de la Fédération, James T. Kirk, apprend en rechignant à enterrer le phaser avec les bâtards Klingons qui ont tué son fils.
TEST: Terminons en réservant une place de choix à l’un des relais les plus fervents de la pensée
TEST: Le Souffle puisé à la Parole nous met en synergie avec le Père Qui souffre, souffre en nous sûrement de voir que Sa Parole déjà transmise autrefois peine à être accomplie.


__imp_laisser_le_la_les_infi__
    >laisser  [le|la|les]  *WORD
        <<- /imp/ space_after(\1, 1, 1) and morph(\1, ":E") and morph(\3, ":(?:Y|X|Oo)", ":[NAB]") and not morph(<1, ":O[sv]")
        -1:2>> \1-\2                                    # S’il s’agit d’un impératif, mettez un trait d’union.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=4206