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: |
fe719cf206c28b9c2169f13403c8c04f |
User & Date: | olr on 2018-07-28 16:46:58 |
Other Links: | branch diff | manifest | tags |
Context
2018-07-28
| ||
18:31 | [fr] conversion: regex rules -> graph rules check-in: ac102ad110 user: olr tags: fr, rg | |
16:46 | [fr] conversion: regex rules -> graph rules check-in: fe719cf206 user: olr tags: fr, rg | |
14:00 | [fr] des +mot +mot: condition stricte pour le token précédent check-in: d7488dfd42 user: olr tags: fr, rg | |
Changes
Modified gc_lang/fr/rules.grx from [b68566db3d] to [8d4917b3f3].
︙ | ︙ | |||
3206 3207 3208 3209 3210 3211 3212 3213 3214 3215 3216 3217 3218 3219 | <<- not morph(<1, ":D.*:p|>[a-z]+ième/") =>> select(\1, ":R") __da_son_ton__ [le|ce|cet|ces|mon|ton|son|quel|quelque|quelques|notre|votre|un|leur|ledit|dudit] [son|ton] <<- =>> exclude(\2, ":D") __da_groupe_nominal__ aucun @:[NA].*:[me] <<- =>> exclude(\2, ":V") [de|d’] @:¬:[YD] <<- =>> exclude(\2, ":V") | > > > > | 3206 3207 3208 3209 3210 3211 3212 3213 3214 3215 3216 3217 3218 3219 3220 3221 3222 3223 | <<- not morph(<1, ":D.*:p|>[a-z]+ième/") =>> select(\1, ":R") __da_son_ton__ [le|ce|cet|ces|mon|ton|son|quel|quelque|quelques|notre|votre|un|leur|ledit|dudit] [son|ton] <<- =>> exclude(\2, ":D") __da_quelque_chose__ quelque chose <<- ~>> ␣ <<- =>> define(\1, [":N:m:s"]) __da_groupe_nominal__ aucun @:[NA].*:[me] <<- =>> exclude(\2, ":V") [de|d’] @:¬:[YD] <<- =>> exclude(\2, ":V") |
︙ | ︙ | |||
5301 5302 5303 5304 5305 5306 5307 5308 5309 5310 5311 5312 5313 5314 | vers ou <<- /conf/ not morph(<1, ":D") -2>> où # Confusion probable. La conjonction “ou” signale une alternative. Pour identifier un lieu ou un temps, écrivez “où”. [au|le|des] cas ou <<- /conf/ -3>> où # Confusion. La conjonction “ou” signale une alternative. Pour identifier un lieu ou un temps, écrivez “où”. à partir du [lieu|moment|jour|mois] (ou) à partir de l’ [instant|année|heure] (ou) à partir de la [minute|semaine|seconde] (ou) <<- /conf/ -1>> où # Confusion. La conjonction “ou” signale une alternative. Pour identifier un lieu ou un temps, écrivez “où”. depuis le [jour|millénaire|moment|mois|siècle] ou depuis la [minute|semaine|seconde] ou | > > > | 5305 5306 5307 5308 5309 5310 5311 5312 5313 5314 5315 5316 5317 5318 5319 5320 5321 | vers ou <<- /conf/ not morph(<1, ":D") -2>> où # Confusion probable. La conjonction “ou” signale une alternative. Pour identifier un lieu ou un temps, écrivez “où”. [au|le|des] cas ou <<- /conf/ -3>> où # Confusion. La conjonction “ou” signale une alternative. Pour identifier un lieu ou un temps, écrivez “où”. [les|ces|des|aux|auxdites] fois ou <<- /conf/ -3>> où # Confusion probable. La conjonction “ou” signale une alternative. Pour identifier un lieu ou un temps, écrivez “où”. à partir du [lieu|moment|jour|mois] (ou) à partir de l’ [instant|année|heure] (ou) à partir de la [minute|semaine|seconde] (ou) <<- /conf/ -1>> où # Confusion. La conjonction “ou” signale une alternative. Pour identifier un lieu ou un temps, écrivez “où”. depuis le [jour|millénaire|moment|mois|siècle] ou depuis la [minute|semaine|seconde] ou |
︙ | ︙ | |||
6967 6968 6969 6970 6971 6972 6973 | çà et là ce faisant cependant [cela|ça|ceci] mis à part [cela|ça|ceci] va sans dire certes ces derniers temps | | | 6974 6975 6976 6977 6978 6979 6980 6981 6982 6983 6984 6985 6986 6987 6988 | çà et là ce faisant cependant [cela|ça|ceci] mis à part [cela|ça|ceci] va sans dire certes ces derniers temps cette [fois|fois-là|fois-ci] chaque fois ci-dessous ci-dessus comme avant comme autrefois comme d’ habitude comme toujours |
︙ | ︙ | |||
9189 9190 9191 9192 9193 9194 9195 9196 9197 9198 9199 9200 9201 9202 9203 9204 9205 9206 9207 9208 9209 9210 9211 9212 9213 9214 9215 9216 9217 9218 9219 9220 9221 9222 | TEST: {{Cet}} {{idiote}}. TEST: {{cet}} ballon. ->> ce TEST: {{Ce}} animal. ->> Cet TEST: cet {{oliviers}} TEST: ce {{claviers}} TEST: {{Cette}} {{animal}} mort. __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") # Accord de genre erroné : « \2 » est féminin. <<- /gn/ __also__ and hasMasForm(\2) -2>> =suggMasSing(\2, True) # Accord de genre erroné : « \1 » est un déterminant masculin. <<- /gn/ morph(\2, ":[NA].*:p", ":[siGW]") -2>> =suggMasSing(\2) # Accord de nombre erroné : « \2 » devrait être au singulier. __gn_ma_ta_sa_1m__ [ma|ta|sa] *WORD <<- /gn/ morph(\2, ":[NA].*:m", ":[efGW]") -1>> =\1[:-1]+"on" # Accord de genre erroné : « \2 » est masculin. <<- /gn/ __also__ and not re.search("(?i)^[aâeéèêiîoôuûyœæ]", \2) and hasFemForm(\2) -2>> =suggFemSing(\2, True) # Accord de genre erroné : « \1 » est un déterminant féminin. <<- /gn/ morph(\2, ":[NA].*:p", ":[siGW]") -2>> =suggFemSing(\2) # Accord de nombre erroné : « \2 » devrait être au singulier. TEST: {{mon}} {{chienne}} TEST: le ton monte. TEST: {{ma}} {{parti}} TEST: {{ma}} amour ->> mon __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. TEST: Chaque {{chiens}}. ->> chien | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > < < < < < < < < < < < > > > > > > > > > > > > > > > > > > > > > > > > | 9196 9197 9198 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 | TEST: {{Cet}} {{idiote}}. TEST: {{cet}} ballon. ->> ce TEST: {{Ce}} animal. ->> Cet TEST: cet {{oliviers}} TEST: ce {{claviers}} TEST: {{Cette}} {{animal}} mort. __gn_au_1m__ au *WORD <<- /gn/ morph(\2, ":[NA].*:f:s", ":[GWme]") -1>> à la # Accord de genre erroné : « \2 » est féminin. <<- /gn/ __also__ and hasMasForm(\2) -2>> =suggMasSing(\2, True) # Accord de genre erroné : « \1 » est un déterminant masculin. <<- /gn/ morph(\2, ":[NA].*:p", ":[siGW]") -2>> =suggMasSing(\2) # Accord de nombre erroné : « \2 » devrait être au singulier. <<- /gn/ __also__ -1>> aux # Accord de nombre erroné : « \2 » est au pluriel. TEST: {{au}} {{États-Unis}} __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") # Accord de genre erroné : « \2 » est féminin. <<- /gn/ __also__ and hasMasForm(\2) -2>> =suggMasSing(\2, True) # Accord de genre erroné : « \1 » est un déterminant masculin. <<- /gn/ morph(\2, ":[NA].*:p", ":[siGW]") -2>> =suggMasSing(\2) # Accord de nombre erroné : « \2 » devrait être au singulier. __gn_ma_ta_sa_1m__ [ma|ta|sa] *WORD <<- /gn/ morph(\2, ":[NA].*:m", ":[efGW]") -1>> =\1[:-1]+"on" # Accord de genre erroné : « \2 » est masculin. <<- /gn/ __also__ and not re.search("(?i)^[aâeéèêiîoôuûyœæ]", \2) and hasFemForm(\2) -2>> =suggFemSing(\2, True) # Accord de genre erroné : « \1 » est un déterminant féminin. <<- /gn/ morph(\2, ":[NA].*:p", ":[siGW]") -2>> =suggFemSing(\2) # Accord de nombre erroné : « \2 » devrait être au singulier. TEST: {{mon}} {{chienne}} TEST: le ton monte. TEST: {{ma}} {{parti}} TEST: {{ma}} amour ->> mon __gn_det_fem_sing_2m__ [ma|ta|sa|cette|quelle|ladite] *WORD *WORD <<- /gn/ not value(<1, "|et|ou|de|") and not \3.startswith("seul") >>> <<- /gn/ morph(\2, ":[NAQ].*:[fe]", ":(?:B|G|V0)") and morph(\3, ":[NAQ].*:m", "*") and not apposition(\2, \3) -3>> =suggFemSing(\3, True) # Accord de genre erroné : « \1 \2 » est féminin, « \3 » est masculin. <<- /gn/ morph(\2, ":[NAQ].*:[si]", ":G") and morph(\3, ":[NAQ].*:p", ":[GWsi]") and not apposition(\2, \3) -3>> =suggFemSing(\3) # Accord de nombre erroné avec « \1 \2 » : « \3 » devrait être au singulier. [et|ou|de] [ma|ta|sa|cette|quelle|ladite] *WORD *WORD <<- /gn/ not morph(<1, ":[NAQ]|>(?:et|ou)/") and not \4.startswith("seul") >>> <<- /gn/ morph(\3, ":[NAQ].*:[fe]", ":(?:B|G|V0|m)") and morph(\4, ":[NAQ].*:m", "*") and not apposition(\3, \4) -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. TEST: Chaque {{chiens}}. ->> chien __gn_quelque_1m__ quelque *WORD <<- /gn/ morph(\2, ":[NA].*:p", ":[siG]") and not value(>1, "|que|qu’|qu|") -1>> quelques # Il manque un “s” à « quelque » ou « \2 » doit être au singulier. TEST: {{Quelque}} amis __gn_det_epi_sing_2m__ [chaque|quelque|notre|votre] *WORD *WORD <<- /gn/ not value(<1, "|et|ou|de|") and not \3.startswith("seul") >>> <<- /gn/ ((morph(\2, ":[NA].*:m", ":(?:B|e|G|V0|f)") and morph(\3, ":[NA].*:f", "*")) or (morph(\2, ":[NA].*:f", ":(?:B|e|G|V0|m)") and morph(\3, ":[NA].*:m", "*"))) and not apposition(\2, \3) -3>> =switchGender(\3, False) # Accord de genre erroné entre « \2 » et « \3 ». <<- /gn/ __also__ and hasFemForm(\2) -2>> =switchGender(\2, False) # Accord de genre erroné avec « \3 ». <<- /gn/ morph(\2, ":[NA].*:[si]", ":G") and morph(\3, ":[NA].*:p", ":[GWsi]") and not apposition(\2, \3) -3>> =suggSing(\3) # Accord de nombre erroné avec « \1 \2 » : « \3 » 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: ils viennent de chaque coin {{ignorée}} du pays. TEST: Quelque chose tombé dans le puits a souillé l’eau. ## Pluriels __gn_les_1m__ , les *WORD <<- /gn/ ( morph(\3, ":[NA].*:s", "*") and not (value(>1, "|et|ou|") and morph(>2, ":[NA]")) ) or \3 in aREGULARPLURAL |
︙ | ︙ | |||
9262 9263 9264 9265 9266 9267 9268 9269 9270 9271 9272 9273 9274 9275 | TEST: ils viennent, les {{petit}} TEST: Les {{tiret}} ->> tirets TEST: Les plus {{grand}} hommes. ->> grands TEST: les {{véhicule}} ->> véhicules TEST: Les {{démoralisation}}. ->> démoralisations TEST: dans les {{usine}} ->> usines __gn_leurs_1m__ leurs *WORD <<- /gn/ (morph(\2, ":[NA].*:s", ":(?:[ipGW]|[123][sp])") and not (value(>1, "|et|ou|") and morph(>2, ":[NA]"))) or \2 in aREGULARPLURAL -2>> =suggPlur(\2) # Accord de nombre erroné avec « \1 » : « \2 » devrait être au pluriel. <<- /gn/ __also__ -1>> leur # Accord de nombre erroné avec « \2 ». | > > > > > > > > > > > > > > > > > > > > > > > > | 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 | TEST: ils viennent, les {{petit}} TEST: Les {{tiret}} ->> tirets TEST: Les plus {{grand}} hommes. ->> grands TEST: les {{véhicule}} ->> véhicules TEST: Les {{démoralisation}}. ->> démoralisations TEST: dans les {{usine}} ->> usines __gn_les_2m__ les *WORD *WORD <<- /gn/ morph(\1, ":D") and not value(<1, "|et|ou|de|") and not \3.startswith("seul") >>> <<- /gn/ ((morph(\2, ":[NA].*:m", ":(?:B|e|G|V0|f)") and morph(\3, ":[NA].*:f", "*")) or (morph(\2, ":[NA].*:f", ":(?:B|e|G|V0|m)") and morph(\3, ":[NA].*:m", "*"))) and not apposition(\2, \3) -3>> =switchGender(\3, True) # Accord de genre erroné entre « \2 » et « \3 ». <<- /gn/ __also__ and hasFemForm(\2) -2>> =switchGender(\2, True) # Accord de genre erroné avec « \3 ». <<- /gn/ morph(\2, ":[NA].*:[pi]") and morph(\3, ":[NA].*:s", "*") and not apposition(\2, \3) and not (value(>1, "|et|,|") and morph(>2, ":A")) -3>> =suggPlur(\3) # Accord de nombre erroné avec « \1 \2 » : « \3 » devrait être au pluriel. [et|ou] les *WORD *WORD <<- /gn/ morph(\2, ":D") and not morph(<1, ":[NA]") and not \3.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, 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")) -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: et les femmes {{retrouvés}} seront emmenées à l’hôpital. __gn_leurs_1m__ leurs *WORD <<- /gn/ (morph(\2, ":[NA].*:s", ":(?:[ipGW]|[123][sp])") and not (value(>1, "|et|ou|") and morph(>2, ":[NA]"))) or \2 in aREGULARPLURAL -2>> =suggPlur(\2) # Accord de nombre erroné avec « \1 » : « \2 » devrait être au pluriel. <<- /gn/ __also__ -1>> leur # Accord de nombre erroné avec « \2 ». |
︙ | ︙ | |||
9300 9301 9302 9303 9304 9305 9306 9307 9308 9309 9310 9311 9312 9313 | <<- /gn/ __else__ -1>> ce # Accord de nombre erroné : « \2 » est au pluriel. TEST: {{ces}} {{détournement}} de fonds et ces vols TEST: ces {{étudiant}} sont légion. TEST: je vais {{aux}} {{cinéma}} TEST: il l’a donné aux {{étudiant}} __gn_plusieurs_1m__ plusieurs *WORD <<- /gn/ (morph(\2, ":[NA].*:s", ":[ipGWP]") and not (value(>1, "|et|ou|") and morph(>2, ":[NA]"))) or \2 in aREGULARPLURAL -2>> =suggPlur(\2) # Accord de nombre erroné : « \2 » devrait être au pluriel. | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 9375 9376 9377 9378 9379 9380 9381 9382 9383 9384 9385 9386 9387 9388 9389 9390 9391 9392 9393 9394 9395 9396 9397 9398 9399 9400 9401 9402 9403 9404 9405 9406 9407 9408 9409 9410 9411 9412 9413 9414 9415 9416 9417 9418 9419 9420 9421 9422 9423 9424 9425 9426 9427 9428 9429 9430 9431 9432 9433 9434 9435 9436 9437 | <<- /gn/ __else__ -1>> ce # Accord de nombre erroné : « \2 » est au pluriel. TEST: {{ces}} {{détournement}} de fonds et ces vols TEST: ces {{étudiant}} sont légion. TEST: je vais {{aux}} {{cinéma}} TEST: il l’a donné aux {{étudiant}} __gn_det_epi_plur_2m__ [ces|mes|tes|ses|nos|vos|leurs|quelques|plusieurs|aux|moult] *WORD *WORD <<- /gn/ not value(<1, "|et|ou|de|") and not \3.startswith("seul") >>> <<- /gn/ ((morph(\2, ":[NA].*:m", ":(?:B|e|G|V0|f)") and morph(\3, ":[NA].*:f", "*")) or (morph(\2, ":[NA].*:f", ":(?:B|e|G|V0|m)") and morph(\3, ":[NA].*:m", "*"))) and not apposition(\2, \3) -3>> =switchGender(\3, True) # Accord de genre erroné entre « \2 » et « \3 ». <<- /gn/ __also__ and hasFemForm(\2) -2>> =switchGender(\2, True) # Accord de genre erroné avec « \3 ». <<- /gn/ morph(\2, ":[NA].*:[pi]") and morph(\3, ":[NA].*:s", "*") and not apposition(\2, \3) and not (value(>1, "|et|,|") and morph(>2, ":A")) -3>> =suggPlur(\3) # Accord de nombre erroné avec « \1 \2 » : « \3 » devrait être au pluriel. [et|ou|de] [ces|mes|tes|ses|nos|vos|leurs|quelques|plusieurs|aux|moult] *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, 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]", False) 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… __gn_des_2m__ des *WORD *WORD <<- /gn/ (morph(<1, ":[VRBX]|:Cs|>comme/|<start>", "*") or morph(\3, ":N", ":[AQ]")) and not \3.startswith("seul") >>> <<- /gn/ ( (morph(\2, ":[NA].*:m", ":[fe]") and morph(\3, ":[NA].*:f", "*")) or (morph(\2, ":[NA].*:f", ":[me]") and morph(\3, ":[NA].*:m", "*")) ) and not apposition(\2, \3) -3>> =switchGender(\3, True) # Accord de genre erroné avec « \2 ». <<- /gn/ __also__ and hasFemForm(\2) -2>> =switchGender(\2) # Accord de genre erroné avec « \3 ». <<- /gn/ morph(\2, ":[NA].*:[pi]") and morph(\3, ":[NA].*:s", "*") and not apposition(\2, \3) and not (value(>1, "|et|,|") and morph(>2, ":A")) -3>> =suggPlur(\3) # Accord de nombre erroné avec « \1 \2 » : « \3 » devrait être au pluriel. <<- checkAgreement(\2, \3) =>> =exclude(\3, ":V") TEST: faire table rase des passions {{inutile}} ->> inutiles TEST: à bonne distance des {{chiens}} {{méchante}} TEST: des hommes {{attaquée}} TEST: des femmes {{agressé}} TEST: des hommes très mal {{renseigné}} ->> renseignés TEST: des dépenses non {{nécessaire}} ->> nécessaires TEST: Des règles pas du tout {{claire}}. ->> claires TEST: Des peines à peine {{croyable}}. ->> croyables TEST: Des {{chambres}} plus ou moins fortement {{éclairé}}. TEST: Les couleurs rouge, jaune et verte ne doivent pas être utilisées TEST: des passeports américain, canadien, néerlandais, allemand et britannique. __gn_plusieurs_1m__ plusieurs *WORD <<- /gn/ (morph(\2, ":[NA].*:s", ":[ipGWP]") and not (value(>1, "|et|ou|") and morph(>2, ":[NA]"))) or \2 in aREGULARPLURAL -2>> =suggPlur(\2) # Accord de nombre erroné : « \2 » devrait être au pluriel. |
︙ | ︙ | |||
9480 9481 9482 9483 9484 9485 9486 | TEST: {{Quel}} que soit la force appliquée. ->> Quelle TEST: {{Quel}} que soit mon aversion ->> Quelle TEST: {{Quel}} que soit cette femme ->> Quelle TEST: {{Quel}} que soit la force appliquée. ->> Quelle TEST: {{Quels}} que soient ces idiotes ->> Quelles | | | | | | | < | | | > > > > > > > < | | | > | | > > > > > > > | > > > > > > > | | < < > | 9604 9605 9606 9607 9608 9609 9610 9611 9612 9613 9614 9615 9616 9617 9618 9619 9620 9621 9622 9623 9624 9625 9626 9627 9628 9629 9630 9631 9632 9633 9634 9635 9636 9637 9638 9639 9640 9641 9642 9643 9644 9645 9646 9647 9648 9649 9650 9651 9652 9653 9654 9655 9656 9657 9658 | TEST: {{Quel}} que soit la force appliquée. ->> Quelle TEST: {{Quel}} que soit mon aversion ->> Quelle TEST: {{Quel}} que soit cette femme ->> Quelle TEST: {{Quel}} que soit la force appliquée. ->> Quelle TEST: {{Quels}} que soient ces idiotes ->> Quelles __gn_det_mas_plur_2m__ [certains|quels|lesdits|desdits|auxdits] *WORD *WORD <<- /gn/ not value(<1, "|et|ou|de|") and not \3.startswith("seul") >>> <<- /gn/ morph(\2, ":[NA].*:[me]", ":(?:B|G|V0)") and morph(\3, ":[NA].*:f", "*") and not apposition(\2, \3) -3>> =suggMasPlur(\3, True) # Accord de genre erroné : « \2 » est masculin, « \3 » est féminin. <<- /gn/ morph(\2, ":[NA].*:[pi]", ":G") and morph(\3, ":[NA].*:s", "*") and not apposition(\2, \3) and not (value(>1, "|et|,|") and morph(>2, ":A")) -3>> =suggMasPlur(\3) # Accord de nombre erroné avec « \1 \2 » : « \3 » devrait être au pluriel. [et|ou|de] [certains|quels|lesdits|desdits|auxdits] *WORD *WORD <<- /gn/ not morph(<1, ":[NA]|>(?:et|ou)/") and not \3.startswith("seul") >>> <<- /gn/ morph(\3, ":[NA].*:[me]", ":(?:B|G|V0|f)") and morph(\4, ":[NA].*:f", "*") and not apposition(\3, \4) -4>> =suggMasPlur(\4, True) # Accord de genre erroné : « \3 » est masculin, « \4 » est féminin. <<- /gn/ morph(\3, ":[NA].*:[pi]", ":G") 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>> =suggMasPlur(\4) # Accord de nombre erroné avec « \2 \3 » : « \4 » devrait être au pluriel. TEST: certains claviers {{dégueulasse}} TEST: certains hommes {{petite}} TEST: elle se rappelle de quels rapports {{désastreuses}} il s’agit. TEST: chez certains la revue Limite provoque des crises d’hystérie. __gn_det_fem_plur_2m__ [certaines|quelles|lesdites|desdites|auxdites] *WORD *WORD <<- /gn/ not value(<1, "|et|ou|de|") and not \3.startswith("seul") >>> <<- /gn/ morph(\2, ":[NA].*:[fe]", ":(?:B|G|V0)") and morph(\3, ":[NA].*:m", "*") and not apposition(\2, \3) -3>> =suggFemPlur(\3, True) # Accord de genre erroné : « \2 » est féminin, « \3 » est masculin. <<- /gn/ morph(\2, ":[NA].*:[pi]") and morph(\3, ":[NA].*:s", "*") and not apposition(\2, \3) and not (value(>1, "|et|,|") and morph(>2, ":A")) -3>> =suggFemPlur(\3) # Accord de nombre erroné avec « \1 \2 » : « \3 » devrait être au pluriel. [et|ou|de] [certaines|quelles|lesdites|desdites|auxdites] *WORD *WORD <<- /gn/ not morph(<1, ":[NA]|>(?:et|ou)/") and not \4.startswith("seul") >>> <<- /gn/ morph(\3, ":[NA].*:[fe]", ":(?:B|G|V0|m)") and morph(\4, ":[NA].*:m", "*") and not apposition(\3, \4) -4>> =suggFemPlur(\4, True) # Accord de genre erroné : « \3 » est féminin, « \4 » est masculin. <<- /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>> =suggFemPlur(\4) # Accord de nombre erroné avec « \2 \3 » : « \4 » devrait être au pluriel. TEST: certaines idioties {{stupide}} TEST: je ne sais guère de quelles âneries {{proférés}} on parle. ## Pluriel des groupes __gn_nombre_de_1m__ nombre [de|d’] *WORD <<- /gn/ (morph(\3, ":[NA].*:s", ":[ip]|>o(?:nde|xydation|r)/") and morph(<1, ":(?:G|[123][sp])|<start>", ":[AD]")) |
︙ | ︙ | |||
9690 9691 9692 9693 9694 9695 9696 | @@@@ ## articles divers __[i]/gn(gn_2m_det_mas_sing)__ | | | | 9833 9834 9835 9836 9837 9838 9839 9840 9841 9842 9843 9844 9845 9846 9847 9848 9849 9850 9851 9852 9853 9854 9855 9856 9857 | @@@@ ## articles divers __[i]/gn(gn_2m_det_mas_sing)__ (?<!et |ou |de )(?:cet?|quel|au|ledit|dudit|audit) +({w_2}) +({w_2}) @@w,$ <<- not \2.startswith("seul") and morphex(\1, ":[NAQ].*:[me]", ":(?:B|G|V0)") and morph(\2, ":[NAQ].*:f") and not apposition(\1, \2) and not before(r"\b(?:et|ou|de) +$") -2>> =suggMasSing(@, True) # Accord de genre erroné : « \1 » est masculin, « \2 » est féminin. <<- not \2.startswith("seul") and morphex(\1, ":[NAQ].*:[si]", ":G") and morphex(\2, ":[NAQ].*:p", ":[GWsi]") and not apposition(\1, \2) and not before(r"\b(?:et|ou|de) +$") -2>> =suggMasSing(@) # Accord de nombre erroné avec « \1 » : « \2 » devrait être au singulier. __[i]/gn(gn_2m_det_mas_sing_après_et_ou_de)__ (?:et|ou|de) +(?:cet?|quel|au|ledit|dudit|audit) +({w_2}) +({w_2}) @@w,$ <<- not \2.startswith("seul") and morphex(\1, ":[NAQ].*:[me]", ":(?:B|G|V0|f)") and morph(\2, ":[NAQ].*:f") and not apposition(\1, \2) and not morph(word(-1), ":[NAQ]|>(?:et|ou)/", False, False) -2>> =suggMasSing(@, True) # Accord de genre erroné : « \1 » est masculin, « \2 » est féminin. <<- not \2.startswith("seul") and morphex(\1, ":[NAQ].*:[si]", ":G") and morphex(\2, ":[NAQ].*:p", ":[GWsi]") and not apposition(\1, \2) and not morph(word(-1), ":[NAQ]|>(?:et|ou)/", False, False) |
︙ | ︙ | |||
9739 9740 9741 9742 9743 9744 9745 | and not apposition(\1, \2) and not morph(word(-1), ":[NAQ]|>(?:et|ou)/", False, False) -2>> =suggMasSing(@) # Accord de nombre erroné avec « \1 » : « \2 » devrait être au singulier. TEST: il brandissait avec fougue son drapeau {{déchirés}} TEST: comment osez-vous médire de mon héritage {{glorieuse}} | < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < | 9882 9883 9884 9885 9886 9887 9888 9889 9890 9891 9892 9893 9894 9895 | and not apposition(\1, \2) and not morph(word(-1), ":[NAQ]|>(?:et|ou)/", False, False) -2>> =suggMasSing(@) # Accord de nombre erroné avec « \1 » : « \2 » devrait être au singulier. TEST: il brandissait avec fougue son drapeau {{déchirés}} TEST: comment osez-vous médire de mon héritage {{glorieuse}} !! !! !!!! Groupe nominal (3) !! !! !! |
︙ | ︙ |