Index: gc_lang/fr/rules.grx ================================================================== --- gc_lang/fr/rules.grx +++ gc_lang/fr/rules.grx @@ -8927,80 +8927,10 @@ TEST: avec {{le}} {{pile}} TEST: {{le}} {{publique}} TEST: {{Le}} {{pendue}} -__gn_ledit_1m__ - ledit *WORD - <<- /gn/ morph(\2, ":[NA].*:f", ":[GWme]") -1>> ladite # 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_un_1m__ - un *WORD - <<- /gn/ morph(\2, ":[NA].*:f", ":(?:e|m|G|W|V0|3s|Y)") -1>> une # 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_un_des_1m__ - un des *WORD - <<- /gn/ morph(\3, ":[NA].*:f", ":(?:e|m|G|W|V0|3s)") -1>> une # Accord de genre erroné : « \2 » est féminin. - <<- /gn/ __also__ and hasMasForm(\3) -3>> =suggMasPlur(\3, True) # Accord de genre erroné : « \1 » est un déterminant masculin. - -__gn_du_1m__ - du *WORD - <<- /gn/ morph(\2, ":[NA].*:f", ":[GWme]") -1>> de 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_cet_1m__ - cet *WORD - <<- /gn/ morph(\2, ":[NA].*:f", ":[GWme]") -1>> cette # 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, ">[bcçdfgjklmnpqrstvwxz].+:[NA].*:m", ":[efGW]") -1>> ce # Accord de genre correct, mais euphonie non respectée.|http://fr.wikipedia.org/wiki/Euphonie - <<- /gn/ morph(\2, ":[NA].*:p", ":[siGW]") -2>> =suggMasSing(\2) # Accord de nombre erroné : « \2 » devrait être au singulier. - -__gn_ce_1m__ - ce *WORD - <<- /gn/ morph(\2, ":[NA].*:f", ":(?:3s|[GWme])") -1>> cette # 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].*:f", ":[GWme]") and morph(\2, ":3s") -1>> cette|se # Accord de genre erroné : « \2 » est féminin. Ou bien vous confondez le déterminant “ce” avec le pronom “se”. - <<- /gn/ morph(\2, ":[NA].*:p", ":[siGW]") -2>> =suggMasSing(\2) # Accord de nombre erroné : « \2 » devrait être au singulier. - -__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_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: ledit {{accords}} ne vaut rien. -TEST: {{au}} {{États-Unis}} -TEST: {{Un}} {{amie}} -TEST: {{Cet}} {{idiote}}. -TEST: {{cet}} ballon. ->> ce -TEST: {{Ce}} animal. ->> Cet -TEST: {{un}} des {{chattes}} -TEST: {{une}} des {{chats}} -TEST: {{mon}} {{chienne}} -TEST: cet {{oliviers}} -TEST: ce {{claviers}} -TEST: cette bouffe, c’est du {{chiens}} -TEST: le ton monte. -TEST: Ces enfants n’ont jamais vu quelqu’un lire. -TEST: Trente et un hommes sur le pont. - - -## Singulier féminin - __gn_la_1m__ , la *WORD <<- /gn/ morph(\3, ":[NA].*:m", ":(?:e|f|P|G|W|[1-3][sp]|Y)") -2>> le # Accord de genre erroné : « \3 » est masculin. <<- /gn/ __also__ and hasFemForm(\3) -3>> =suggFemSing(\3, True) # Accord de genre erroné : « \2 » est un déterminant féminin. <<- /gn/ __else__ and morph(\3, ":[NA].*:p") -3>> =suggFemSing(\3) # Accord de nombre erroné : « \3 » devrait être au singulier. @@ -9029,61 +8959,10 @@ TEST: {{la}} {{véhicule}} TEST: {{La}} {{pris}} TEST: la force de la {{formes}} parfaite -__gn_ladite_1m__ - ladite *WORD - <<- /gn/ morph(\2, ":[NA].*:m", ":[efGW]") -1>> ledit # Accord de genre erroné : « \2 » est masculin. - <<- /gn/ __also__ 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: ladite {{passions}} l’avait conduit à sa perte. - - -__gn_une_1m__ - une *WORD - <<- /gn/ morph(\2, ":[NA].*:m", ":(?:e|f|G|W|V0|3s|P)") and not ( \2 == "demi" and morph(>1, ":N.*:f", "*") ) - -1>> un # Accord de genre erroné : « \2 » est masculin. - <<- /gn/ __also__ 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. - -__gn_une_des_1m__ - une des *WORD - <<- /gn/ morph(\3, ":[NA].*:m", ":(?:e|f|G|W|V0|3s)") -1>> un # Accord de genre erroné : « \3 » est masculin. - <<- /gn/ __also__ and hasFemForm(\3) -3>> =suggFemPlur(\3, True) # Accord de genre erroné : « \1 » est un déterminant féminin. - -TEST: un {{slashs}} ->> slash -TEST: un {{fromages}}. ->> fromage -TEST: Un {{ballons}} ->> ballon -TEST: Une {{cinglées}} ->> cinglée -TEST: {{une}} des {{joueurs}} -TEST: mille et une merveilles - - -__gn_cette_1m__ - cette *WORD - <<- /gn/ morph(\2, ":[NA].*:m", ":[efGW]") -1>> =suggCeOrCet(\2) # Accord de genre erroné : « \2 » est masculin. - <<- /gn/ __also__ 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. - -__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: {{une}} des {{chats}} -TEST: {{ma}} {{parti}} -TEST: {{ma}} amour ->> mon -TEST: {{une}} kyste ->> un -TEST: {{Cette}} {{animal}} mort. - - -## Singuliers épicènes - __gn_leur_1m__ , leur *WORD <<- /gn/ morph(\3, ":[NA].*:p", "*") -2>> leurs # Accord de nombre erroné avec « \3 ». <<- /gn/ __also__ -3>> =suggSing(\3) # Accord de nombre erroné : « \3 » devrait être au singulier. @@ -9100,27 +8979,202 @@ TEST: Tu sais, {{leur}} {{impatiences}} est notoire. TEST: J’en ai assez de {{leur}} {{délires}} TEST: {{Leur}} {{perceptions}} des choses m’exaspère. TEST: dans {{leur}} {{usines}} + +__gn_ledit_1m__ + ledit *WORD + <<- /gn/ morph(\2, ":[NA].*:f", ":[GWme]") -1>> ladite # 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. + +TEST: ledit {{accords}} ne vaut rien. + +__gn_ladite_1m__ + ladite *WORD + <<- /gn/ morph(\2, ":[NA].*:m", ":[efGW]") -1>> ledit # Accord de genre erroné : « \2 » est masculin. + <<- /gn/ __also__ 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: ladite {{passions}} l’avait conduit à sa perte. + + +__gn_un_1m__ + un *WORD + <<- /gn/ morph(\2, ":[NA].*:f", ":(?:e|m|G|W|V0|3s|Y)") -1>> une # 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_un_des_1m__ + un des *WORD + <<- /gn/ morph(\3, ":[NA].*:f", ":(?:e|m|G|W|V0|3s)") -1>> une # Accord de genre erroné : « \2 » est féminin. + <<- /gn/ __also__ and hasMasForm(\3) -3>> =suggMasPlur(\3, True) # Accord de genre erroné : « \1 » est un déterminant masculin. + +__gn_une_1m__ + une *WORD + <<- /gn/ morph(\2, ":[NA].*:m", ":(?:e|f|G|W|V0|3s|P)") and not ( \2 == "demi" and morph(>1, ":N.*:f", "*") ) + -1>> un # Accord de genre erroné : « \2 » est masculin. + <<- /gn/ __also__ 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. + +__gn_une_des_1m__ + une des *WORD + <<- /gn/ morph(\3, ":[NA].*:m", ":(?:e|f|G|W|V0|3s)") -1>> un # Accord de genre erroné : « \3 » est masculin. + <<- /gn/ __also__ and hasFemForm(\3) -3>> =suggFemPlur(\3, True) # Accord de genre erroné : « \1 » est un déterminant féminin. + +TEST: {{Un}} {{amie}} +TEST: {{un}} des {{chattes}} +TEST: {{une}} des {{chats}} +TEST: Trente et un hommes sur le pont. +TEST: Ces enfants n’ont jamais vu quelqu’un lire. +TEST: un {{slashs}} ->> slash +TEST: un {{fromages}}. ->> fromage +TEST: Un {{ballons}} ->> ballon +TEST: Une {{cinglées}} ->> cinglée +TEST: {{une}} des {{chats}} +TEST: {{une}} kyste ->> un +TEST: {{une}} des {{joueurs}} +TEST: mille et une merveilles + +## un / une +__gn_un_2m__ + un *WORD *WORD + <<- /gn/ not value(<1, "|et|ou|d’|") and not \3.startswith("seul") >>> + <<- /gn/ morph(\2, ":[NA].*:[me]", ":(?:B|G|V0)") and morph(\3, ":[NA].*:f", "*") and not apposition(\2, \3) + -3>> =suggMasSing(\3, True) # Accord de genre erroné : « \1 \2 » est masculin, « \3 » est féminin. + <<- /gn/ morph(\2, ":[NA].*:[si]", ":G") and morph(\3, ":[NA].*:p", "*") and not apposition(\2, \3) + -3>> =suggMasSing(\3) # Accord de nombre erroné avec « \2 » : « \3 » devrait être au singulier. + + [et|ou|d’] un *WORD *WORD + <<- /gn/ not morph(<1, ":[NA]|>(?:et|ou)/") and not \4.startswith("seul") >>> + <<- /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é : « \2 \3 » est masculin, « \4 » est féminin. + <<- /gn/ morph(\3, ":[NA].*:[si]", ":G") and morph(\4, ":[NA].*:p", "*") and not apposition(\3, \4) + -4>> =suggMasSing(\4) # Accord de nombre erroné avec « \2 \3 » : « \4 » devrait être au singulier. + +TEST: un exercice pas très {{utiles}}. ->> utile +TEST: un homme {{grands}} ->> grand +TEST: un homme {{futiles}} ->> futile +TEST: Une femme {{laconiques}}. ->> laconique +TEST: je me souviens d’un homme {{arrogants}} +TEST: C’est pas les quelques vues sur Linux qui vont rattraper un scénario {{bancale}}. + + +__gn_une_2m__ + une *WORD *WORD + <<- /gn/ not value(<1, "|et|ou|d’|") and not \3.startswith("seul") >>> + <<- /gn/ morph(\2, ":[NA].*:[fe]", ":(?:B|G|V0)") and morph(\3, ":[NA].*:m", "*") and not apposition(\2, \3) + -3>> =suggFemSing(\3, True) # Accord de genre erroné : « \1 \2 » est féminin, « \3 » est masculin. + <<- /gn/ \2 != "fois" and morph(\2, ":[NA].*:[si]", ":G") and morph(\3, ":[NA].*:p", "*") and not apposition(\2, \3) + -3>> =suggFemSing(\3) # Accord de nombre erroné avec « \1 \2 » : « \3 » devrait être au singulier. + + [et|ou|d’] une *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>> =suggFemSing(\4, True) # Accord de genre erroné : « \2 \3 » est féminin, « \4 » est masculin. + <<- /gn/ \3 != "fois" and morph(\3, ":[NA].*:[si]", ":G") and morph(\4, ":[NA].*:p", "*") and not apposition(\3, \4) + -4>> =suggFemSing(\4) # Accord de nombre erroné avec « \2 \3 » : « \4 » devrait être au singulier. + +TEST: Une grande {{homme}}. +TEST: une géologue {{intelligents}} +TEST: Et une femme {{déterminées}} +TEST: on parle là d’une femme {{inconnu}} +TEST: L’or allume le feu d’une cupidité d’une couleur et d’une sorte différentes. + + +__gn_du_1m__ + du *WORD + <<- /gn/ morph(\2, ":[NA].*:f", ":[GWme]") -1>> de 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_dudit_1m__ + dudit *WORD + <<- /gn/ morph(\2, ":[NA].*:f", ":[GWme]") -1>> de ladite # 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. + +TEST: cette bouffe, c’est du {{chiens}} +TEST: les consignes dudit {{présidents}} étaient contratritoires. + + +__gn_cet_1m__ + cet *WORD + <<- /gn/ morph(\2, ":[NA].*:f", ":[GWme]") -1>> cette # 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, ">[bcçdfgjklmnpqrstvwxz].+:[NA].*:m", ":[efGW]") -1>> ce # Accord de genre correct, mais euphonie non respectée.|http://fr.wikipedia.org/wiki/Euphonie + <<- /gn/ morph(\2, ":[NA].*:p", ":[siGW]") -2>> =suggMasSing(\2) # Accord de nombre erroné : « \2 » devrait être au singulier. + +__gn_ce_1m__ + ce *WORD + <<- /gn/ morph(\2, ":[NA].*:f", ":(?:3s|[GWme])") -1>> cette # 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].*:f", ":[GWme]") and morph(\2, ":3s") -1>> cette|se # Accord de genre erroné : « \2 » est féminin. Ou bien vous confondez le déterminant “ce” avec le pronom “se”. + <<- /gn/ morph(\2, ":[NA].*:p", ":[siGW]") -2>> =suggMasSing(\2) # Accord de nombre erroné : « \2 » devrait être au singulier. + +__gn_cette_1m__ + cette *WORD + <<- /gn/ morph(\2, ":[NA].*:m", ":[efGW]") -1>> =suggCeOrCet(\2) # Accord de genre erroné : « \2 » est masculin. + <<- /gn/ __also__ 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: {{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 + +__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_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 -## Pluriels épicènes +## 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 @@ -9155,11 +9209,11 @@ TEST: {{leurs}} {{action}} TEST: {{leur}} {{données}} __gn_det_pluriel_1m__ - [des|mes|tes|ses|nos|vos|quelques|lesdits|moult] *WORD + [des|mes|tes|ses|nos|vos|quelques|lesdits|lesdites|desdits|desdites|auxdits|auxdites|moult] *WORD <<- /gn/ (morph(\2, ":[NA].*:s", ":[ipGW]") 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. TEST: des {{pain}} ->> pains @@ -9190,11 +9244,18 @@ -2>> =suggPlur(\2) # Accord de nombre erroné : « \2 » devrait être au pluriel. TEST: plusieurs {{foi}} par jour. -## Autres pluriels +## Cas particuliers +__gn_det_plur_cas_particuliers__ + [ces|des|mes|tes|ses|nos|vos|leurs|quelques|quels] [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 + ## certains / certaines __gn_certains_1m__ certains *WORD <<- /gn/ morph(\2, ":[NA].*:f", ":[emGWP]") -1>> certaines # Accord de genre erroné : « \2 » est féminin. @@ -9354,18 +9415,10 @@ TEST: {{Quel}} que soit cette femme ->> Quelle TEST: {{Quel}} que soit la force appliquée. ->> Quelle TEST: {{Quels}} que soient ces idiotes ->> Quelles -## Cas particuliers -__gn_det_plur_cas_particuliers__ - [ces|des|mes|tes|ses|nos|vos|leurs|quelques|quels] [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_1m__ nombre [de|d’] *WORD <<- /gn/ (morph(\3, ":[NA].*:s", ":[ip]|>o(?:nde|xydation|r)/") and morph(<1, ":(?:G|[123][sp])|", ":[AD]")) @@ -9543,69 +9596,10 @@ @@@@ @@@@END_GRAPH _ @@@@ - -## un / une - -__[i]/gn(gn_2m_un)__ - (?> =suggMasSing(@, True) # Accord de genre erroné : « \1 » est masculin, « \2 » est féminin. - <<- morphex(\1, ":[NAQ].*:[si]", ":G") and morph(\2, ":[NAQ].*:p") and not \2.startswith("seul") - and not apposition(\1, \2) and not before(r"\b(?:et|ou|d’) *$") - -2>> =suggMasSing(@) # Accord de nombre erroné avec « \1 » : « \2 » devrait être au singulier. -__[i]/gn(gn_2m_un_après_et_ou_de)__ - (?:et +|ou +|d’)un +({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. - <<- morphex(\1, ":[NAQ].*:[si]", ":G") and morph(\2, ":[NAQ].*:p") and not \2.startswith("seul") - and not apposition(\1, \2) - and not morph(word(-1), ":[NAQB]|>(?:et|ou)/", False, False) - -2>> =suggMasSing(@) # Accord de nombre erroné avec « \1 » : « \2 » devrait être au singulier. - -TEST: un exercice pas très {{utiles}}. ->> utile -TEST: un homme {{grands}} ->> grand -TEST: un homme {{futiles}} ->> futile -TEST: Une femme {{laconiques}}. ->> laconique -TEST: je me souviens d’un homme {{arrogants}} -TEST: C’est pas les quelques vues sur Linux qui vont rattraper un scénario {{bancale}}. - - -__[i]/gn(gn_2m_une)__ - (?> =suggFemSing(@, True) # Accord de genre erroné : « \1 » est féminin, « \2 » est masculin. - <<- \1 != "fois" and morph(\1, ":[NAQ].*:[si]", False) and morph(\2, ":[NAQ].*:p") and not \2.startswith("seul") - and not apposition(\1, \2) and not before(r"\b(?:et|ou|d’) *$") - -2>> =suggFemSing(@) # Accord de nombre erroné avec « \1 » : « \2 » devrait être au singulier. -__[i]/gn(gn_2m_une_après_et_ou_de)__ - (?:et +|ou +|d’)une +({w_2}) +({w_2}) @@w,$ - <<- not \2.startswith("seul") - and morphex(\1, ":[NAQ].*:[fe]", ":(?:B|G|V0|m)") and morph(\2, ":[NAQ].*:m") - and not apposition(\1, \2) - and not morph(word(-1), ":[NAQ]|>(?:et|ou)/", False, False) - -2>> =suggFemSing(@, True) # Accord de genre erroné : « \1 » est féminin, « \2 » est masculin. - <<- \1 != "fois" and morph(\1, ":[NAQ].*:[si]", False) and morph(\2, ":[NAQ].*:p") and not \2.startswith("seul") - and not apposition(\1, \2) - and not morph(word(-1), ":[NAQB]|>(?:et|ou)/", False, False) - -2>> =suggFemSing(@) # Accord de nombre erroné avec « \1 » : « \2 » devrait être au singulier. - -TEST: Une grande {{homme}}. -TEST: une géologue {{intelligents}} -TEST: Et une femme {{déterminées}} -TEST: on parle là d’une femme {{inconnu}} -TEST: L’or allume le feu d’une cupidité d’une couleur et d’une sorte différentes. - ## articles divers __[i]/gn(gn_2m_le)__ (?