6502
6503
6504
6505
6506
6507
6508
6509
6510
6511
6512
6513
6514
6515
6516
6517
6518
6519
6520
6521
6522
6523
6524
6525
6526
6527
6528
6529
6530
6531
6532
6533
6534
6535
6536
6537
6538
|
6502
6503
6504
6505
6506
6507
6508
6509
6510
6511
6512
6513
6514
6515
6516
6517
6518
6519
6520
6521
6522
6523
6524
6525
6526
6527
6528
6529
6530
6531
6532
6533
6534
6535
6536
6537
6538
|
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
-
-
-
+
+
+
-
-
+
+
|
!!!
!!!
!!! Processeur: épuration des adverbes, locutions adverbiales, interjections et expressions usuelles !!
!!!
!!!
__purge_dates__
depuis le [1er|1ᵉʳ|~\d\d?] {mois} ?[dernier|prochain|~\d{2,5}]¿
[le|du|au] [1er|1ᵉʳ|~\d\d?] {mois} ?[dernier|prochain|~\d{2,5}]¿
[jusqu’|jusqu] au [1er|1ᵉʳ|~\d\d?] {mois} ?[dernier|prochain|~\d{2,5}]¿
à compter du [1er|1ᵉʳ|~\d\d?] {mois} ?[dernier|prochain|~\d{2,5}]¿
en l’ an ~\d{2,5}
en l’ an de grâce ~\d{2,5}
en {mois} ~\d{2,5}
[de|d’|D’] {mois} ~\d{2,5}
à la {mi_mois} ?~\d{2,5}¿
depuis le [1er|1ᵉʳ|~^\d\d?$] {mois} ?[dernier|prochain|~^\d{2,5}$]¿
[le|du|au] [1er|1ᵉʳ|~^\d\d?$] {mois} ?[dernier|prochain|~^\d{2,5}$]¿
[jusqu’|jusqu] au [1er|1ᵉʳ|~^\d\d?$] {mois} ?[dernier|prochain|~^\d{2,5}$]¿
à compter du [1er|1ᵉʳ|~^\d\d?$] {mois} ?[dernier|prochain|~^\d{2,5}$]¿
en l’ an ~^\d{2,5}$
en l’ an de grâce ~^\d{2,5}$
en {mois} ~^\d{2,5}$
[de|d’|D’] {mois} ~^\d{2,5}$
à la {mi_mois} ?~^\d{2,5}$¿
<<- ~>> *
en ~\d{2,5} [,|<end>]
en ~\d{2,5} @:¬:[AN].*:[pi]
de ~\d{2,5} @:A.*:s
en ~^\d{2,5}$ [,|<end>]
en ~^\d{2,5}$ @:¬:[AN].*:[pi]
de ~^\d{2,5}$ @:A.*:s
<<- ~1:2>> *
TEST: ils sont depuis le 2 janvier {{parti}} à l’étranger.
TEST: ils sont depuis le 2 janvier 2012 {{parti}} à l’étranger.
__purge_saisons__
à l’ [été|automne|hiver] ~\d{2,4}
au printemps ~\d{2,4}
à l’ [été|automne|hiver] ~^\d{2,4}$
au printemps ~^\d{2,4}$
<<- ~>> *
TEST: Une étude de 2005 publiée dans le Journal
TEST: Les cinq variantes de la couverture du magazine Wired d’avril 2016 consacrée à Silicon Valley.
TEST: c’est donc la cinquième en 50 ans
|
9199
9200
9201
9202
9203
9204
9205
9206
9207
9208
9209
9210
9211
9212
9213
9214
9215
9216
9217
9218
9219
9220
9221
9222
9223
9224
9225
9226
9227
9228
9229
9230
9231
9232
9233
9234
9235
9236
9237
9238
9239
9240
9241
9242
9243
9244
9245
9246
9247
9248
9249
9250
9251
9252
9253
9254
9255
9256
9257
9258
9259
9260
9261
9262
9263
9264
9265
9266
9267
9268
9269
9270
9271
9272
9273
9274
9275
9276
9277
9278
9279
9280
9281
9282
9283
9284
9285
9286
9287
9288
9289
9290
9291
9292
9293
9294
9295
9296
9297
9298
9299
9300
9301
9302
9303
9304
9305
9306
9307
9308
9309
9310
9311
9312
9313
9314
9315
9316
9317
9318
9319
9320
9321
9322
9323
9324
9325
9326
9327
9328
9329
9330
9331
9332
9333
9334
9335
9336
9337
9338
9339
9340
9341
9342
9343
9344
9345
9346
9347
9348
9349
9350
9351
9352
9353
9354
9355
9356
9357
9358
|
9201
9202
9203
9204
9205
9206
9207
9208
9209
9210
9211
9212
9213
9214
9215
9216
9217
9218
9219
9220
9221
9222
9223
9224
9225
9226
9227
9228
9229
9230
9231
9232
9233
9234
9235
9236
9237
9238
9239
9240
9241
9242
9243
9244
9245
9246
9247
9248
9249
9250
9251
9252
9253
9254
9255
9256
9257
9258
9259
9260
9261
9262
9263
9264
9265
9266
9267
9268
9269
9270
9271
9272
9273
9274
9275
9276
9277
9278
9279
9280
9281
9282
9283
9284
9285
9286
9287
9288
9289
9290
9291
9292
9293
9294
9295
9296
9297
9298
9299
9300
9301
9302
9303
9304
9305
9306
9307
9308
9309
9310
9311
9312
9313
9314
9315
9316
9317
9318
9319
9320
9321
9322
9323
9324
9325
9326
9327
9328
9329
9330
9331
9332
9333
9334
9335
9336
9337
9338
9339
9340
9341
9342
9343
9344
9345
9346
9347
9348
|
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
+
+
+
+
-
-
+
-
-
-
-
-
-
-
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
-
-
-
+
|
TEST: Certaines {{danse}}
TEST: Certains {{chien}}
TEST: {{certains}} des {{nouvelles}} sont à côté de la plaque.
TEST: {{certaines}} des hommes
TEST: Un problème rapporté par certains est l’incapacité à trouver un partenaire
## quel / quels / quelle / quelles
__gn_quel_accord__
quel *WORD
<<- /gn/ morph(\2, ":[NAQ].*:f:p", ":(?:V0|Oo|[NAQ].*:[me]:[si])") -1>> quelles # Accord de genre et de nombre erroné : « \2 » est féminin et au pluriel.
<<- /gn/ __also__ and hasFemForm(\2) -2>> =suggMasSing(\2, True) # Accord de genre et de nombre erroné : « \1 » est masculin et au singulier.
<<- /gn/ morph(\2, ":[NAQ].*:m:p", ":(?:V0|Oo|[NAQ].*:[me]:[si])") -1>> quels # Accord de nombre erroné : « \2 » est au pluriel.
<<- /gn/ __also__ -2>> =suggSing(\2) # Accord de nombre erroné : « \1 » est au singulier.
<<- /gn/ morph(\2, ":[NAQ].*:f:[si]", ":(?:V0|Oo|[NAQ].*:[me]:[si])") -1>> quelle # Accord de genre erroné : « \2 » est féminin.
<<- /gn/ __also__ and hasFemForm(\2) -2>> =suggMasSing(\2, True) # Accord de genre erroné : « \1 » est masculin.
## Cas particuliers
__gn_quels_accord__
quels *WORD
<<- /gn/ morph(\2, ":[NAQ].*:f:s", ":(?:V0|Oo|[NAQ].*:[me]:[pi])") -1>> quelle # Accord de genre et de nombre erroné : « \2 » est féminin et au singulier.
<<- /gn/ __also__ and hasFemForm(\2) -2>> =suggMasPlur(\2, True) # Accord de genre et de nombre erroné : « \1 » est masculin et au pluriel.
<<- /gn/ morph(\2, ":[NAQ].*:m:s", ":(?:V0|Oo|[NAQ].*:[me]:[pi])") -1>> quel # Accord de nombre erroné : « \2 » est au singulier.
<<- /gn/ __also__ -2>> =suggPlur(\2) # Accord de nombre erroné : « \1 » est au pluriel.
<<- /gn/ morph(\2, ":[NAQ].*:f:[pi]", ":(?:V0|Oo|[NAQ].*:[me]:[pi])") -1>> quelles # Accord de genre erroné : « \2 » est féminin.
<<- /gn/ __also__ and hasFemForm(\2) -2>> =suggMasPlur(\2, True) # Accord de genre erroné : « \1 » est masculin.
__gn_quelle_accord__
quelle *WORD
<<- /gn/ morph(\2, ":[NAQ].*:m:p", ":(?:V0|Oo|[NAQ].*:[fe]:[si])") -1>> quels # Accord de genre et de nombre erroné : « \2 » est masculin et au pluriel.
<<- /gn/ __also__ and hasFemForm(\2) -2>> =suggFemSing(\2, True) # Accord de genre et de nombre erroné : « \1 » est féminin et au singulier.
<<- /gn/ morph(\2, ":[NAQ].*:f:p", ":(?:V0|Oo|[NAQ].*:[fe]:[si])") -1>> quelles # Accord de nombre erroné : « \2 » est au pluriel.
<<- /gn/ __also__ -2>> =suggSing(\2) # Accord de nombre erroné : « \1 » est au singulier.
<<- /gn/ morph(\2, ":[NAQ].*:m:[si]", ":(?:V0|Oo|[NAQ].*:[fe]:[si])") -1>> quel # Accord de genre erroné : « \2 » est masculin.
<<- /gn/ __also__ and hasFemForm(\2) -2>> =suggFemSing(\2, True) # Accord de genre erroné : « \1 » est féminin.
__gn_quelles_accord__
quelles *WORD
<<- /gn/ morph(\2, ":[NAQ].*:m:s", ":(?:V0|Oo|[NAQ].*:[fe]:[pi])") -1>> quel # Accord de genre et de nombre erroné. « \2 » est masculin et au singulier.
<<- /gn/ __also__ and hasFemForm(\2) -2>> =suggFemPlur(\2, True) # Accord de genre et de nombre erroné : « \1 » est féminin et au pluriel.
<<- /gn/ morph(\2, ":[NAQ].*:f:s", ":(?:V0|Oo|[NAQ].*:[fe]:[pi])") -1>> quelle # Accord de nombre erroné : « \2 » est au singulier.
<<- /gn/ __also__ -2>> =suggPlur(\2) # Accord de nombre erroné : « \1 » est au pluriel.
<<- /gn/ morph(\2, ":[NAQ].*:m:[pi]", ":(?:V0|Oo|[NAQ].*:[fe]:[pi])") -1>> quels # Accord de genre erroné : « \2 » est masculin.
<<- /gn/ __also__ and hasFemForm(\2) -2>> =suggFemPlur(\2, True) # Accord de genre erroné : « \1 » est féminin.
TEST: {{Quelle}} homme. ->> Quel
TEST: {{Quel}} femme. ->> Quelle
TEST: {{Quels}} chanson. ->> Quelle
TEST: {{Quelles}} {{tarés}}.
TEST: Quelle sale journée…
TEST: Quelles drôles de prunes
## Cas particuliers
__gn_det_plur_cas_particuliers__
[ces|des|mes|tes|ses|nos|vos|leurs|quelques] [même|point|son|ton]
<<- /gn/ -2>> \1s # Accord de nombre erroné : mettez au pluriel.
TEST: des {{son}} que nous entendons jour et nuit.
TEST: j’entends ces {{même}} âneries tous les jours
## Pluriel des groupes
__gn_nombre_de_accord__
nombre [de|d’] *WORD
<<- /gn/ (morph(\3, ":[NAQ].*:s", ":[ip]|>o(?:nde|xydation|r)/") and morph(<1, ":(?:G|[123][sp])|<start>", ":[AD]"))
or \3 in aREGULARPLURAL
-3>> =suggPlur(\3) # Ici, « nombre de » devrait probablement être suivi d’un pluriel.
TEST: Je connais nombre d’{{emmerdeur}} et aucun n’est pire que lui.
__gn_det_groupe_de_accord__
[un|une|le|la|ce|cette|mon|ton|son|ma|ta|sa|les|ces|des|mes|tes|ses|nos|vos|leurs|quelques] [>centaine|>millier|>million|>milliard|>dixaine|>douzaine|>multitude|>horde] [de|d’] *WORD
<<- /gn/ morph(\4, ":[NAQ].*:s", ":[ip]") or \4 in aREGULARPLURAL
-4>> =suggPlur(\4) # Avec des « \2 \3 \4 », mettre au pluriel.
TEST: des centaines de {{bête}} à cornes passèrent devant nous. ->> bêtes
TEST: une multitude d’{{homme}} ->> hommes
## quelque adverbe
__gn_quelque_adverbe__
quelques ~^\d+$
<<- /gn/ -1>> quelque # Devant un nombre, « quelque » est un adverbe, donc invariable.
quelques @:B
<<- /gn/ \2 != "cents" -1>> quelque # Devant un nombre, « quelque » est un adverbe, donc invariable.
TEST: Elle a eu {{quelques}} 300 réponses à sa petite-annonce.
TEST: Il commande {{quelques}} trois cents hommes.
TEST: {{Quelques}} 120 hommes ->> Quelque
TEST: {{Quelques}} deux cents hommes. ->> Quelque
TEST: les quelque 2,5 millions d’habitants
TEST: les quelque 12 000 stations-service
@@@@
@@@@END_GRAPH _
@@@@
## Nombres
__[i]/gn(gn_nombre_lettres_accord)__
__gn_nombre_lettres_accord__
(d(?:eux|ix|ouze)|tr(?:ois|eize)|qua(?:tre(?:-vingt(?:s|-dix)|)|torze|rante)|cinq(?:uante|)|six|sept(?:ante|)|huit(?:ante|)|onze|quinze|seize|vingt|trente|soixante(?:-dix|)|cents?|octante|nonante) +({w_2}) @@0,$
<<- (morph(\2, ":[NAQ].*:s")
and not re.search("(?i)^(janvier|février|mars|avril|mai|juin|juillet|ao[ûu]t|septembre|octobre|novembre|décembre|rue|route|ruelle|place|boulevard|avenue|allée|chemin|sentier|square|impasse|cour|quai|chaussée|côte|vendémiaire|brumaire|frimaire|nivôse|pluviôse|ventôse|germinal|floréal|prairial|messidor|thermidor|fructidor)$", \2))
or \2 in aREGULARPLURAL
-2>> =suggPlur(@) # Accord de nombre erroné avec « \1 » : « \2 » devrait être au pluriel.
@:B:e:p *WORD
<<- /gn/ not value(\1, "|neuf|mille|") and ( (morph(\2, ":[NAQ].*:s", "*") and not value(\2, "|janvier|février|mars|avril|mai|juin|juillet|août|aout|septembre|octobre|novembre|décembre|rue|route|ruelle|place|boulevard|avenue|allée|chemin|sentier|square|impasse|cour|quai|chaussée|côte|vendémiaire|brumaire|frimaire|nivôse|pluviôse|ventôse|germinal|floréal|prairial|messidor|thermidor|fructidor|") )
or \2 in aREGULARPLURAL)
-2>> =suggPlur(\2) # Accord de nombre erroné avec « \1 » : « \2 » devrait être au pluriel.
TEST: ce sont trois {{idiot}} pas foutus de trouver leur chemin avec un GPS.
neuf *WORD
__[i]/gn(gn_neuf_accord)__
(neuf) +({w_2}) @@0,$
<<- (morph(\2, ":[NAQ].*:s") and not morph(word(-1), ":N", False)
and not re.search("(?i)^(janvier|février|mars|avril|mai|juin|juillet|ao[ûu]t|septembre|octobre|novembre|décembre|rue|route|ruelle|place|boulevard|avenue|allée|chemin|sentier|square|impasse|cour|quai|chaussée|côte|vendémiaire|brumaire|frimaire|nivôse|pluviôse|ventôse|germinal|floréal|prairial|messidor|thermidor|fructidor)$", \2))
or \2 in aREGULARPLURAL
-2>> =suggPlur(@) # Accord de nombre erroné avec « \1 » : « \2 » devrait être au pluriel.
<<- /gn/ ( morph(\2, ":[NAQ].*:s", "*") and not morph(<1, ":N.*:m:[is]") and not value(\2, "|janvier|février|mars|avril|mai|juin|juillet|août|aout|septembre|octobre|novembre|décembre|rue|route|ruelle|place|boulevard|avenue|allée|chemin|sentier|square|impasse|cour|quai|chaussée|côte|vendémiaire|brumaire|frimaire|nivôse|pluviôse|ventôse|germinal|floréal|prairial|messidor|thermidor|fructidor|") )
or \2 in aREGULARPLURAL
-2>> =suggPlur(\2) # Accord de nombre erroné avec « \1 » : « \2 » devrait être au pluriel.
TEST: Il a abandonné neuf {{enfant}}.
__[i]/gn(gn_mille_accord)__
mille +({w_2}) @@$
<<- (morph(\1, ":[NAQ].*:s") or \1 in aREGULARPLURAL) and not before(r"(?i)\b(?:le|un|ce|du) +$")
-1>> =suggPlur(@) # Accord de nombre erroné avec « mille » : « \1 » devrait être au pluriel.
mille *WORD
<<- /gn/ (morph(\2, ":[NAQ].*:s", "*") or \1 in aREGULARPLURAL) and not value(<1, "|le|un|ce|du|")
-2>> =suggPlur(\2) # Accord de nombre erroné avec « \1 » : « \2 » devrait être au pluriel.
TEST: ce sont trois {{idiot}} pas foutus de trouver leur chemin avec un GPS.
TEST: Il a abandonné neuf {{enfant}}.
TEST: On peut trouver mille {{travailleur}} d’un claquement de doigts.
TEST: un logement neuf bâti par des professionnels.
TEST: un mille marin.
__[i]/gn(gn_01_accord)__
[01] ({w_2}) @@$
<<- morph(\1, ":[NAQ].*:p")
and not re.search("(?i)^(janvier|février|mars|avril|mai|juin|juillet|ao[ûu]t|septembre|octobre|novembre|décembre|rue|route|ruelle|place|boulevard|avenue|allée|chemin|sentier|square|impasse|cour|quai|chaussée|côte|vendémiaire|brumaire|frimaire|nivôse|pluviôse|ventôse|germinal|floréal|prairial|messidor|thermidor|fructidor|Rois|Corinthiens|Thessaloniciens)$", \1)
-1>> =suggSing(@) # Accord de nombre erroné : « \1 » devrait être au singulier.
__gn_nombre_chiffres_accord__
[0|1|01] @:[NAQ].*:p¬*
<<- /gn/ not value(\2, "|Rois|Corinthiens|Thessaloniciens|") -2>> =suggSing(\2) # Accord de nombre erroné : « \1 » devrait être au singulier.
~^\d+$ *WORD
<<- not value(<1, "|/|") and not re.search("^0*[01]$", \1)
and ( (morph(\2, ":[NAQ].*:s", "*") and not value(\2, "|janvier|février|mars|avril|mai|juin|juillet|août|aout|septembre|octobre|novembre|décembre|rue|route|ruelle|place|boulevard|avenue|allée|chemin|sentier|square|impasse|cour|quai|chaussée|côte|vendémiaire|brumaire|frimaire|nivôse|pluviôse|ventôse|germinal|floréal|prairial|messidor|thermidor|fructidor|"))
or \1 in aREGULARPLURAL )
-2>> =suggPlur(\2) # Accord de nombre erroné : « \2 » devrait être au pluriel.
TEST: 00 heure, 01 heure
TEST: il a adopté 1 {{chiens}}.
__[i]/gn(gn_nombre_chiffres_accord)__
(?<!/)(\d+) ({w_2}) @@0,$
<<- not re.search("^0*[01]$", \1)
and ((morph(\2, ":[NAQ].*:s") and not re.search("(?i)^(janvier|février|mars|avril|mai|juin|juillet|ao[ûu]t|septembre|octobre|novembre|décembre|rue|route|ruelle|place|boulevard|avenue|allée|chemin|sentier|square|impasse|cour|quai|chaussée|côte|vendémiaire|brumaire|frimaire|nivôse|pluviôse|ventôse|germinal|floréal|prairial|messidor|thermidor|fructidor)$", \2))
or \1 in aREGULARPLURAL)
-2>> =suggPlur(@) # Accord de nombre erroné : « \2 » devrait être au pluriel.
TEST: 22 {{heure}}
TEST: 3 {{heure}}
## quel / quels / quelle / quelles
__[i]/gn(gn_quel_accord)__
(quel) +({w_2}) @@0,$
<<- morphex(\2, ":[NAQ].*:f:p", ":(?:V0e|[NAQ].*:[me]:[si])") -1>> quelles # Accord de genre et de nombre erroné : « \2 » est féminin et au pluriel.
<<- __also__ and hasFemForm(\2) -2>> =suggMasSing(@, True) # Accord de genre et de nombre erroné : « \1 » est masculin et au singulier.
<<- morphex(\2, ":[NAQ].*:m:p", ":(?:V0e|[NAQ].*:[me]:[si])") -1>> quels # Accord de nombre erroné : « \2 » est au pluriel.
<<- __also__ -2>> =suggSing(@) # Accord de nombre erroné : « \1 » est au singulier.
<<- morphex(\2, ":[NAQ].*:f:[si]", ":(?:V0e|[NAQ].*:[me]:[si])") -1>> quelle # Accord de genre erroné : « \2 » est féminin.
<<- __also__ and hasFemForm(\2) -2>> =suggMasSing(@, True) # Accord de genre erroné : « \1 » est masculin.
__[i]/gn(gn_quels_accord)__
(quels) +({w_2}) @@0,$
<<- morphex(\2, ":[NAQ].*:f:s", ":(?:V0e|[NAQ].*:[me]:[pi])") -1>> quelle # Accord de genre et de nombre erroné : « \2 » est féminin et au singulier.
<<- __also__ and hasFemForm(\2) -2>> =suggMasPlur(@, True) # Accord de genre et de nombre erroné : « \1 » est masculin et au pluriel.
<<- morphex(\2, ":[NAQ].*:m:s", ":(?:V0e|[NAQ].*:[me]:[pi])") -1>> quel # Accord de nombre erroné : « \2 » est au singulier.
<<- __also__ -2>> =suggPlur(@) # Accord de nombre erroné : « \1 » est au pluriel.
<<- morphex(\2, ":[NAQ].*:f:[pi]", ":(?:V0e|[NAQ].*:[me]:[pi])") -1>> quelles # Accord de genre erroné : « \2 » est féminin.
<<- __also__ and hasFemForm(\2) -2>> =suggMasPlur(@, True) # Accord de genre erroné : « \1 » est masculin.
__[i]/gn(gn_quelle_accord)__
(quelle) +({w_2}) @@0,$
<<- morphex(\2, ":[NAQ].*:m:p", ":(?:V0e|[NAQ].*:[fe]:[si])") -1>> quels # Accord de genre et de nombre erroné : « \2 » est masculin et au pluriel.
<<- __also__ and hasFemForm(\2) -2>> =suggFemSing(@, True) # Accord de genre et de nombre erroné : « \1 » est féminin et au singulier.
<<- morphex(\2, ":[NAQ].*:f:p", ":(?:V0e|[NAQ].*:[fe]:[si])") -1>> quelles # Accord de nombre erroné : « \2 » est au pluriel.
<<- __also__ -2>> =suggSing(@) # Accord de nombre erroné : « \1 » est au singulier.
<<- morphex(\2, ":[NAQ].*:m:[si]", ":(?:V0e|[NAQ].*:[fe]:[si])") -1>> quel # Accord de genre erroné : « \2 » est masculin.
<<- __also__ and hasFemForm(\2) -2>> =suggFemSing(@, True) # Accord de genre erroné : « \1 » est féminin.
__[i]/gn(gn_quelles_accord)__
(quelles) +({w_2}) @@0,$
<<- morphex(\2, ":[NAQ].*:m:s", ":(?:V0e|[NAQ].*:[fe]:[pi])") -1>> quel # Accord de genre et de nombre erroné. « \2 » est masculin et au singulier.
<<- __also__ and hasFemForm(\2) -2>> =suggFemPlur(@, True) # Accord de genre et de nombre erroné : « \1 » est féminin et au pluriel.
<<- morphex(\2, ":[NAQ].*:f:s", ":(?:V0e|[NAQ].*:[fe]:[pi])") -1>> quelle # Accord de nombre erroné : « \2 » est au singulier.
<<- __also__ -2>> =suggPlur(@) # Accord de nombre erroné : « \1 » est au pluriel.
<<- morphex(\2, ":[NAQ].*:m:[pi]", ":(?:V0e|[NAQ].*:[fe]:[pi])") -1>> quels # Accord de genre erroné : « \2 » est masculin.
<<- __also__ and hasFemForm(\2) -2>> =suggFemPlur(@, True) # Accord de genre erroné : « \1 » est féminin.
TEST: {{Quelle}} homme. ->> Quel
TEST: {{Quel}} femme. ->> Quelle
@@@@
@@@@END_GRAPH _
TEST: {{Quels}} chanson. ->> Quelle
TEST: {{Quelles}} {{tarés}}.
TEST: Quelle sale journée…
TEST: Quelles drôles de prunes
@@@@
__[i]/gn(gn_quel_quel_accord_être)__
(quel(?:le|)) (sont|étaient|ser(?:o|aie)nt|fu(?:r|ss)ent) @@0,$
<<- not before(r"\btel(?:le|)s? +$")
-1>> \1s # Accord de nombre erroné avec “\2”.
|