Index: gc_lang/fr/rules.grx ================================================================== --- gc_lang/fr/rules.grx +++ gc_lang/fr/rules.grx @@ -3169,11 +3169,11 @@ TEST: __ocr__ ce petit {{rut}} traité comme un chien # il / n / ils / U / Us / i1 / if / 11 __ocr_il__ - [|,|(] [n|h|d] ~^[bcdfghjklmnpqrstvwxz] + [|,|(] [n|h|d] ~^[bcçdfghjklmnpqrstvwxz] <<- /ocr/ morph(\3, ":(?:O[on]|3s)") -2>> il && Erreur de numérisation ? [U|if|i1] <<- /ocr/ ->> Il|il && Erreur de numérisation ? @@ -4360,10 +4360,11 @@ TEST: il a pris une balle dans l’{{arrière train}}. TEST: Ce {{sans gêne}} mérite une bonne leçon TEST: une {{sous culture}} passée de mode TEST: l’{{avant train}} +TEST: l’{{arrière pensée}} TEST: Sans gêne, il avança parmi nous. __tu_préfixe_pseudo__ pseudo $:N¬* @@ -4404,11 +4405,10 @@ TEST: une {{entre voie}} TEST: s’{{entre regarder}} TEST: ce sont des {{lève tard}}. TEST: nous nous {{entre tuions}} TEST: un {{brise glace}} -TEST: l’{{arrière pensée}} TEST: entre deux chaises… __tu_mots_grammaticaux__ au [delà|dehors|dessous|dessus|devant] @@ -9853,17 +9853,17 @@ TEST: Très {{jeûne}}, elle a su qu’elle ne voulait pas d’une vie ordinaire. # la / l’a __conf_il_elle_on_la_l_a_vconj__ - [il|elle|on|iel] ?[nous|vous]¿ l’ a ~^[bcdfghjklmnpqrstvwxz] + [il|elle|on|iel] ?[nous|vous]¿ l’ a ~^[bcçdfghjklmnpqrstvwxz] <<- /conf/ morph(\-1, ":[123][sp]", ":[GQ]") --3:-2>> la && Confusion probable. Pour un pronom objet féminin, écrivez “la”. - [ne|me|te|se] l’ a ~^[bcdfghjklmnpqrstvwxz] + [ne|me|te|se] l’ a ~^[bcçdfghjklmnpqrstvwxz] <<- /conf/ morph(\4, ":[123][sp]", ":[GQ]") -2:3>> la && Confusion probable. Pour un pronom objet féminin, écrivez “la”. - ne [nous|vous] l’ a ~^[bcdfghjklmnpqrstvwxz] + ne [nous|vous] l’ a ~^[bcçdfghjklmnpqrstvwxz] <<- /conf/ morph(\5, ":[123][sp]", ":[GQ]") -3:4>> la && Confusion probable. Pour un pronom objet féminin, écrivez “la”. ne l’ a [lui|leur] <<- /conf/ -2:3>> la && Confusion probable. Pour un pronom objet féminin, écrivez “la”. @@ -11242,11 +11242,12 @@ TEST: Qu’elle avait été accueillie avec joie. __conf_quelle_qu_elle__ quelle [ne|n’|me|m’|te|t’|se|s’|nous|vous|le|la|l’|les|lui|leur|en|y] - <<- /conf/ not (value(\2, "|en|ne|") and morph(>1, ":V0e")) -1>> qu’elle && Confusion. Le sujet “elle” doit être séparée de la conjonction “que”. + <<- /conf/ not (value(\2, "|en|ne|n’|") and morph(>1, ":V0e")) and not after("^ *(?:a|avait|eut|eût|aura|aurait) +(?:pas|) +été") + -1>> qu’elle && Confusion. Le sujet “elle” doit être séparée de la conjonction “que”. quelle @:V¬:[NA].*:[fe]|>(?:être|plus|point)/ <<- /conf/ \2.islower() and not (morph(\2, ">(?:pouvoir|devoir|aller)/") and (morph(>1, ":V0e") or morph(>2, ":V0e"))) and not (morph(\2, ":V0a") and value(>1, "|été|")) -1>> qu’elle && Confusion. Le sujet “elle” doit être séparée de la conjonction “que”. @@ -11254,10 +11255,13 @@ TEST: {{Quelle}} a du répondant, cette gamine ! TEST: {{Quelle}} allât prendre son repas à la cantine, je n’en avais cure. TEST: Il se plaint {{quelle}} ne nous dit rien. TEST: {{Quelle}} l’apprenne un jour, on n’y peut rien. TEST: Je crois {{quelle}} n’en sait pas assez pour nous nuire. +TEST: Quelle n’a pas été ma surprise +TEST: quelle ne fut pas ma surprise +TEST: quelle en était la cause ? quelles [ne|n’|me|m’|te|t’|se|s’|nous|vous|le|la|l’|les|lui|leur|en|y] <<- /conf/ not (value(\2, "|en|ne|") and morph(>1, ":V0e")) -1>> qu’elles && Confusion. Le sujet “elles” doit être séparée de la conjonction “que”. @@ -11619,17 +11623,22 @@ <<- /conf/ morph(<1, ":[YQ]|>(?:avec|contre|par|pour|sur)/||>,") ->> soi-même && Confusion probable : moi-même, toi-même, lui-même, elle-même, soi-même, elles-mêmes, eux-mêmes. [sois-même|soit-même|soie-même|soies-même|soi-mêmes|sois-mêmes|soit-mêmes|soie-mêmes|soies-mêmes] <<- /conf/ ->> soi-même && Confusion : moi-même, toi-même, lui-même, elle-même, soi-même, elles-mêmes, eux-mêmes. + [entre-soit|entre-sois|entre-soie+s] + <<- /conf/ ->> entre-soi + && Confusion : pour évoquer la situation où l’on ne rencontre que des gens proche de soi, écrivez “entre-soi”.|https://fr.wiktionary.org/wiki/entre-soi + TEST: chez {{soit}}, c’est presque toujours mieux. TEST: ce n’est pas la philosophie en {{soit}} qui est problématique TEST: quel que {{soie}} sa pensée, je refuse d’y accorder de l’attention. TEST: Penser par {{soit même}}… TEST: S’aimer {{soit-même}}, c’est le début d’une grande histoire d’amour. (Oscar Wilde) TEST: pas sûr que {{sa}} {{soi}} terminé avant demain TEST: Cela va presque de {{soit}} +TEST: l’{{entre-soit}} ->> entre-soi TEST: Je regrette que l’on en soit encore à des considérations que je croyais dépassées TEST: Quoi qu’il en soit TEST: À moins qu’elle n’en soit la victime. TEST: Je doute qu’il s’en soit sorti si aisément. TEST: Je refuse, quoi qu’il en soit. @@ -14954,10 +14963,11 @@ en dépit du bon sens le plus [commun|élémentaire] en désespoir [de|d’] cause en détention provisoire en direction [de|d’] l’ [est|ouest] en direction du [nord|nord-est|nord-ouest|sud|sud-est|sud-ouest] + en double aveugle en eau ?peu¿ profonde en eaux troubles en état [de|d’] choc ?circulatoire¿ en ?[excellent|mauvais|parfait]¿ état [de|d’] [fonctionnement|marche] en état d’ ébriété ?avancée¿ @@ -15249,11 +15259,11 @@ que vous [le|l’] vouliez ou non que nous [le|l’] voulions ou non qu’ [ils|elles|iels] [le|l’] veuillent ou non qu’ à cela ne tienne quel qu’ en soit [le|l’] [moyen|prix|danger] - quel qu’ en soit [le|l’] risque ?financier¿ + quel qu’ en soit [le|l’] risque ?[économique|financier|légal|juridique|militaire]¿ quelle qu’ en soit la [cause|raison] quelque peu ?[de|d’]¿ quelque part qui plus est quoi qu’ il [arrive|arrivât|advienne|advînt] @@ -16277,14 +16287,17 @@ >frousse [de|d’] tous les diables >fuite en avant >fusée [de|d’] détresse >fusil à [lunette|plomb|pompe] >gala [de|d’] charité + >galette des rois >garde à vue >garde du corps gaz à >effet [de|d’] serre + >général [2|3|4|5|deux|trois|quatre|cinq] étoiles >genou à terre + gens de confiance >geste >barrière >gilet [de|d’] sauvetage >gouvernement d’ union nationale >grain [de|d’] [blé|maïs|sable] >grenouille [de|d’] bénitier @@ -16628,10 +16641,11 @@ >vague à l’ âme >vecteur [>accélération|>position|>rotation|>vitesse] >véhicule [de|d’] location >vente à [découvert|domicile|emporter] >vente aux enchères + >ventilateur à merde >vérification [de|d’] routine vernis à ongles >ver [de|d’] terre >verre à pied >vêtement [de|d’] rechange @@ -17830,10 +17844,11 @@ >tenir en retrait >tirer [avantage|profit] >tirer à blanc >tomber à [pic|point] >tourner à l’ aigre + >tourner à vide >tourner court >trainer en longueur >traîner en longueur >trier sur le volet >trouver refuge @@ -18212,10 +18227,11 @@ >tenir a [carreau|cœur|distance] >tirer a blanc >tomber a [pic|point|terre] >tirer a blanc >tourner a l’ aigre + >tourner a vide >vendre a >perte >venir a bout [>venir|>revenir] a point <<- /conf/ -2>> à && Confusion : “a” est une conjugaison du verbe “avoir”. Pour la préposition, écrivez “à”.|https://fr.wiktionary.org/wiki/%C3%A0 @@ -21262,15 +21278,26 @@ 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_det_mas_sing_3m__ + [ledit|un|ce|cet|au|quel|audit|dudit|aucun|nul] *WORD *WORD *WORD + <<- /gn/ morph(<1, "|:V", "*") and morph(\2, ":[NA].*:[me]:[si]") and morph(\3, ":[NA].*:[me]:[si]", ":(?:[123][sp]|G|P|B)") and morph(\4, ":[NA].*:[pf]", "*") and \4.islower() + -4>> =suggMasSing(\4) && Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au masculin singulier. + +TEST: ledit martyr oublié {{réhabilitée}} ->> réhabilité +TEST: un gros connard {{pathétiques}} ->> pathétique +TEST: servi pas un style et une exigence historique remarquables +TEST: ils eurent besoins d’au minimum cent ans pour s’en remettre + __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. + <<- /gn/ morph(\2, ">[bcçdfgjklmnpqrstvwxz].*:[NA].*:f", ":[GWme]") -1>> =\1.replace("on", "a").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. TEST: mon {{excellentes}} mémoire TEST: {{ton}} {{belle}} mémoire @@ -21278,33 +21305,52 @@ __gn_mon_ton_son_2m__ [mon|ton|son] *WORD *WORD <<- /gn/ not value(<1, "|et|ou|de|d’|") and not morph(\3, ">seul/") >>> - <<- /gn/ morph(\2, ":[NA].*:m", ":(?:B|G|e|V0|f)") and morph(\3, ":[NA].*:f", "*") and not apposition(\2, \3) + <<- /gn/ morph(\2, ":[NA].*:m", ":(?:B|G|e|V0|f)") and morph(\3, ":[NAQ].*:f", "*") and not apposition(\2, \3) -3>> =suggMasSing(\3, True) && Accord de genre erroné : « \2 » est masculin, « \3 » est féminin. - <<- /gn/ morph(\2, ">[aâeéèêiîoôuûyœæ].*:[NA].*:f", ":(?:B|G|e|V0|m)") and morph(\3, ":[NA].*:m", "*") and not apposition(\2, \3) + <<- /gn/ morph(\2, ">[aâeéèêiîoôuûyœæ].*:[NAQ].*:f", ":(?:B|G|e|V0|m)") and morph(\3, ":[NAQ].*:m", "*") and not apposition(\2, \3) -3>> =suggFemSing(\3, True) && Accord de genre erroné : « \2 » est féminin, « \3 » est masculin. - <<- /gn/ morph(\2, ":[NA].*:[si]", ":G") and morph(\3, ":[NA].*:p", ":[GWsi]") and not apposition(\2, \3) + <<- /gn/ morph(\2, ":[NA].*:[si]", ":G") and morph(\3, ":[NAQ].*:p", ":[GWsi]") and not apposition(\2, \3) -3>> =suggMasSing(\3) && Accord de nombre erroné avec « \1 \2 » : « \3 » devrait être au singulier. [et|ou|de|d’] [mon|ton|son] *WORD *WORD <<- /gn/ not morph(<1, ":[NA]|>(?:et|ou)/") and not morph(\4, ">seul/") >>> - <<- /gn/ morph(\3, ":[NA].*:m", ":(?:B|G|e|V0|f)") and morph(\4, ":[NA].*:f", "*") and not apposition(\3, \4) + <<- /gn/ morph(\3, ":[NA].*:m", ":(?:B|G|e|V0|f)") and morph(\4, ":[NAQ].*:f", "*") and not apposition(\3, \4) -4>> =suggMasSing(\4, True) && Accord de genre erroné : « \3 » est masculin, « \4 » est féminin. - <<- /gn/ morph(\3, ">[aâeéèêiîoôuûyœæ].*:[NA].*:f", ":(?:B|G|e|V0|m)") and morph(\4, ":[NA].*:m", "*") and not apposition(\3, \4) + <<- /gn/ morph(\3, ">[aâeéèêiîoôuûyœæ].*:[NA].*:f", ":(?:B|G|e|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, ":[NA].*:[si]", ":G") and morph(\4, ":[NA].*:p", ":[GWsi]") and not apposition(\3, \4) + <<- /gn/ morph(\3, ":[NA].*:[si]", ":G") and morph(\4, ":[NAQ].*:p", ":[GWsi]") and not apposition(\3, \4) -4>> =suggMasSing(\4) && Accord de nombre erroné avec « \2 \3 » : « \4 » 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}} TEST: on parlait de son escapade {{éperdu}} au milieu de la nuit. TEST: ton étonnante {{secret}} ne sera pas au programme. TEST: elle s’étonnait de ton opposition {{grandissantes}} TEST: le ton monte. + +__gn_det_mon_ton_son_3m__ + [mon|ton|son] *WORD *WORD *WORD + <<- /gn/ morph(<1, "|:V", "*") and \4.islower() >>> + <<- /gn/ morph(\2, ">[bcçdfgjklmnpqrstvwxz].*:[NA].*:[me]:[si]") and morph(\3, ":[NA].*:[me]:[si]", ":(?:[123][sp]|G|P|B)") and morph(\4, ":[NAQ].*:[pf]", "*") + -4>> =suggMasSing(\4) && Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au masculin singulier. + <<- /gn/ re.search("^[aâeéèêiîoôuûyœæ]", \2) >>> + <<- /gn/ morph(\2, ":[NA].*:m:[si]", ":[fe]") and morph(\3, ":[NA].*:[me]:[si]", ":(?:[123][sp]|G|P|B)") and morph(\4, ":[NAQ].*:[pf]", "*") + -4>> =suggMasSing(\4) && Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au masculin singulier. + <<- /gn/ __else__ and morph(\2, ":[NA].*:f:[si]", ":[me]") and morph(\3, ":[NA].*:[fe]:[si]", ":(?:[123][sp]|G|P|B)") and morph(\4, ":[NAQ].*:[pm]", "*") + -4>> =suggFemSing(\4) && Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au féminin singulier. + <<- /gn/ __else__ and morph(\2, ":[NA].*:[si]") and morph(\3, ":[NA].*:[si]", ":(?:[123][sp]|G|P|B)") and morph(\4, ":[NAQ].*:p", "*") + -4>> =suggSing(\4) && Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au singulier. + +TEST: mon petit ami {{décédée}} ->> décédé +TEST: mon ami proche {{décédée}} ->> décédé +TEST: mon amie proche {{décédé}} ->> décédée +TEST: son addictologue ridicule {{financés}} par l’État ->> financé + __gn_ma_ta_sa_1m__ [ma|ta|sa] *WORD <<- not (tag(\1, "_CAP_") and morph(\1, ":N")) >>> <<- /gn/ morph(\2, ":[NA].*:m", ":[efGW]") -1>> =\1[:-1]+"on" && Accord de genre erroné : « \2 » est masculin. @@ -21317,18 +21363,18 @@ TEST: ma {{carlingues}} TEST: Après cet épisode, la SA a joué un rôle marginal dans l’histoire du Troisième Reich __gn_det_fem_sing_2m__ - [ma|ta|sa|cette|quelle|ladite] *WORD *WORD + [ma|ta|sa|cette|quelle|ladite|aucune|nulle] *WORD *WORD <<- /gn/ not value(<1, "|et|ou|de|d’|") and not morph(\3, ">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|d’] [ma|ta|sa|cette|quelle|ladite] *WORD *WORD + [et|ou|de|d’] [ma|ta|sa|cette|quelle|ladite|aucune|nulle] *WORD *WORD <<- /gn/ not morph(<1, ":[NAQ]|>(?:et|ou)/") and not morph(\4, ">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. @@ -21337,10 +21383,18 @@ 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_det_fem_sing_3m__ + [ladite|une|cette|ma|ta|sa|quelle|aucune|nulle] *WORD *WORD *WORD + <<- /gn/ morph(<1, "|:V", "*") and morph(\2, ":[NA].*:[fe]:[si]") and morph(\3, ":[NA].*:[fe]:[si]", ":(?:[123][sp]|G|P|B)") and morph(\4, ":[NA].*:[pm]", "*") and \4.islower() + -4>> =suggFemSing(\4) && Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au féminin singulier. + +TEST: une amie prodigieuse {{récompensé}} ->> récompensée + __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. @@ -21381,18 +21435,23 @@ 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|B)") and morph(\4, ":[NA].*:p", "*") and \4.islower() +__gn_det_notre_votre_3m__ + [chaque|quelque|notre|votre] *WORD *WORD *WORD + <<- /gn/ morph(<1, "|:V", "*") and \4.islower() >>> + <<- /gn/ morph(\2, ":[NA].*:m:[si]", ":[fe]") and morph(\3, ":[NA].*:[me]:[si]", ":(?:[123][sp]|G|P|B)") and morph(\4, ":[NA].*:f", "*") + -4>> =suggMasSing(\4) && Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au masculin singulier. + <<- /gn/ __else__ and morph(\2, ":[NA].*:f:[si]", ":[me]") and morph(\3, ":[NA].*:[fe]:[si]", ":(?:[123][sp]|G|P|B)") and morph(\4, ":[NA].*:m", "*") + -4>> =suggFemSing(\4) && Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au féminin singulier. + <<- /gn/ __else__ and morph(\2, ":[NA].*:[si]", ":[fe]") and morph(\3, ":[NA].*:[me]:[si]", ":(?:[123][sp]|G|P|B)") 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: servi pas un style et une exigence historique remarquables -TEST: ils eurent besoins d’au minimum cent ans pour s’en remettre +TEST: notre grande armée {{fabuleux}} ->> fabuleuse +TEST: notre supérieur hiérarchique {{ignorante}} des pratiques ->> ignorant +TEST: votre petit test {{minables}} ->> minable ## Pluriels __gn_les_1m__ @@ -21480,11 +21539,11 @@ __gn_ces_aux_pluriel_1m__ [ces|aux] *WORD <<- /gn/ morph(\2, ":[NA].*:s", ":[ipGW]") and not (value(>1, "|et|ou|") and morph(>2, ":[NA]")) -2>> =suggPlur(\2) && Accord de nombre erroné : « \2 » devrait être au pluriel. - <<- /gn/ __also__ and morph(\2, ">[bcdfglklmnpqrstvwxz].*:m", ":f") >>> + <<- /gn/ __also__ and morph(\2, ">[bcçdfglklmnpqrstvwxz].*:m", ":f") >>> <<- /gn/ \1.endswith("x") or \1.endswith("X") -1>> au && Accord de nombre erroné : « \2 » est au singulier. <<- /gn/ __else__ -1>> ce && Accord de nombre erroné : « \2 » est au singulier. TEST: {{ces}} {{détournement}} de fonds et ces vols TEST: ces {{étudiant}} sont légion. @@ -21623,36 +21682,10 @@ TEST: plusieurs {{femme}} TEST: plusieurs {{foi}} par jour. TEST: plusieurs {{abricot}} - -__gn_les_3m__ - les *WORD *WORD *WORD - <<- /gn/ morph(\1, ":D") and morph(\2, ":[NA].*:[pi]", ":(?:[123][sp]|G)") and morph(\3, ":[NA].*:[pi]", ":(?:[123][sp]|G)") and morph(\4, ":[NA].*:s", "*") and \4.islower() - -4>> =suggPlur(\4) && Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au pluriel. - -TEST: les heureux imbéciles {{payé}} au lance-pierre. - - -__gn_det_plur_3m__ - [ces|mes|tes|ses|nos|vos|quels|quelles|aux] *WORD *WORD *WORD - [plusieurs|quelques|certains|certaines|moult|maints|maintes] *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 morph(\4, ">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 morph(\4, ">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. @@ -21707,10 +21740,76 @@ TEST: Maintes {{danse}} TEST: Maints {{chien}} TEST: {{maintes}} {{petits}} TEST: Un problème rapporté par maints est l’incapacité à trouver un partenaire + +## 3m +__gn_det_les_3m__ + les *WORD *WORD *WORD + <<- /gn/ morph(<1, "|:V", "*") and not morph(\2, ":[123][sp]") and \4.islower() and not morph(\4, ">seul/") >>> + <<- /gn/ morph(\2, ":[NA].*:m:[pi]", ":[fe]") and morph(\3, ":[NA].*:[me]:[pi]", ":(?:[123][sp]|G|P|B)") and morph(\4, ":[NAQ].*:f", "*") + -4>> =suggMasPlur(\4) && Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au masculin pluriel. + <<- /gn/ __else__ and morph(\2, ":[NA].*:f:[pi]", ":[me]") and morph(\3, ":[NA].*:[fe]:[pi]", ":(?:[123][sp]|G|P|B)") and morph(\4, ":[NAQ].*:m", "*") + -4>> =suggFemPlur(\4) && Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au féminin pluriel. + <<- /gn/ __else__ and morph(\2, ":[NA].*:[pi]") and morph(\3, ":[NA].*:[me]:[pi]", ":(?:[123][sp]|G|P|B)") and morph(\4, ":[NAQ].*:s", "*") + -4>> =suggPlur(\4) && Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au pluriel. + +TEST: les heureux imbéciles {{payée}} au lance-pierre. ->> payés +TEST: les petites gens {{oubliés}} ->> oubliées +TEST: les psychologues hypocrites {{ébranlé}} par la crise ->> ébranlés + + +__gn_det_leurs_3m__ + leurs *WORD *WORD *WORD + <<- /gn/ morph(<1, "|:V", "*") and not morph(\2, ":[123][sp]") and \4.islower() and not morph(\4, ">seul/") and not before("(?i)\\bune? de +$") >>> + <<- /gn/ morph(\2, ":[NA].*:m:[pi]", ":[fe]") and morph(\3, ":[NA].*:[me]:[pi]", ":(?:[123][sp]|G|P|B)") and morph(\4, ":[NAQ].*:f", "*") + -4>> =suggMasPlur(\4) && Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au masculin pluriel. + <<- /gn/ __else__ and morph(\2, ":[NA].*:f:[pi]", ":[me]") and morph(\3, ":[NA].*:[fe]:[pi]", ":(?:[123][sp]|G|P|B)") and morph(\4, ":[NAQ].*:m", "*") + -4>> =suggFemPlur(\4) && Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au féminin pluriel. + <<- /gn/ __else__ and morph(\2, ":[NA].*:[pi]") and morph(\3, ":[NA].*:[me]:[pi]", ":(?:[123][sp]|G|P|B)") and morph(\4, ":[NAQ].*:s", "*") + -4>> =suggPlur(\4) && Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au pluriel. + +TEST: Leurs grands plans {{dépassées}} par les évènements ->> dépassés +TEST: leurs grandes peurs {{refoulés}} ->> refoulées +TEST: leurs psychologues hypocrites {{condamné}} ->> condamnés + + +__gn_det_mas_plur_3m__ + [quels|certains|maints|lesdits|desdits|auxdits] *WORD *WORD *WORD + <<- /gn/ morph(<1, "|:V", "*") and \4.islower() and not morph(\4, ">seul/") and not before("(?i)\\bune? de +$") + and morph(\2, ":[NA].*:[me]:[pi]") and morph(\3, ":[NA].*:[me]:[pi]", ":(?:[123][sp]|G|P|B)") and morph(\4, ":[NAQ].*:[fs]", "*") + -4>> =suggMasPlur(\4) && Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au masculin pluriel. + +TEST: lesdits dentistes ruinés {{oublié}} ->> oubliés +TEST: Prendre goût aux heures passées seul à marcher + + +__gn_det_fem_plur_3m__ + [quelles|certaines|maintes|lesdites|desdites|auxdites] *WORD *WORD *WORD + <<- /gn/ morph(<1, "|:V", "*") and \4.islower() and not morph(\4, ">seul/") and not before("(?i)\\bune? de +$") + and morph(\2, ":[NA].*:[fe]:[pi]") and morph(\3, ":[NA].*:[fe]:[pi]", ":(?:[123][sp]|G|P|B)") and morph(\4, ":[NAQ].*:[ms]", "*") + -4>> =suggFemPlur(\4) && Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au féminin pluriel. + +TEST: quelles belles nuits {{inoubliable}} ->> inoubliables + + +__gn_det_epi_plur_3m__ + [ces|mes|tes|ses|nos|vos|aux|plusieurs|quelques|moult] *WORD *WORD *WORD + <<- /gn/ morph(<1, "|:V", "*") and \4.islower() and not morph(\4, ">seul/") and not before("(?i)\\bune? de +$") >>> + <<- /gn/ morph(\2, ":[NA].*:m:[pi]", ":[fe]") and morph(\3, ":[NA].*:[me]:[pi]", ":(?:[123][sp]|G|P|B)") and morph(\4, ":[NAQ].*:f", "*") + -4>> =suggMasPlur(\4) && Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au masculin pluriel. + <<- /gn/ __else__ and morph(\2, ":[NA].*:f:[pi]", ":[me]") and morph(\3, ":[NA].*:[fe]:[pi]", ":(?:[123][sp]|G|P|B)") and morph(\4, ":[NAQ].*:m", "*") + -4>> =suggFemPlur(\4) && Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au féminin pluriel. + <<- /gn/ __else__ and morph(\2, ":[NA].*:[pi]") and morph(\3, ":[NA].*:[me]:[pi]", ":(?:[123][sp]|G|P|B)") and morph(\4, ":[NAQ].*:s", "*") + -4>> =suggPlur(\4) && Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au pluriel. + +TEST: ces petites sottes {{venus}} foutre la merde ->> venues +TEST: mes beaux chevaux {{oubliées}} ->> oubliés +TEST: vos dentistes ridicules {{perdu}} dans la forêt ->> perdus +TEST: Prendre goût aux heures passées seul à marcher + ## quel / quels / quelle / quelles __gn_quel_1m__ quel *WORD <<- /gn/ morph(\2, ":[NA].*:f:p", ":(?:V0|Oo|[NA].*:[me]:[si])") -1>> quelles && Accord de genre et de nombre erroné : « \2 » est féminin et au pluriel. @@ -29035,19 +29134,19 @@ TEST: la plupart avançaient en rangs serrés TEST: un grand nombre avaient été humiliés par ces pratiques délétères __conj_det_sing_nom__ - [un|ce|cet|mon|ton|son|notre|votre] *WORD @:V¬:(?:3s|P|Y|3p!|G|M) + [un|ce|cet|mon|ton|son|notre|votre] *WORD @:[123][sp]¬:(?:3s|P|Y|3p!|G|M) <<- /conj/ not tag(\2, "_enum_") and morph(<1, ":C||>,", ":[YP]") and morph(\2, ":[NA].*:[me]:[si]", ":G") and not ( (value(\2, "|dizaine|douzaine|quinzaine|vingtaine|trentaine|quarantaine|cinquantaine|soixantaine|centaine|majorité|minorité|millier|partie|poignée|tas|paquet|moitié|") or tag_before(\1, "_ni_") or value(<1, "|et|ou|")) and morph(\3, ":3?p") ) and not checkAgreement(\2, \3) >>> <<- /conj/ not tag(\-1, "_ngn_") and morph(\3, ":A.*:p") or (morph(\3, ":N.*:p") and morph(\2, ":A")) -3>> =suggVerb(\3, ":3s", suggSing) && Accord avec “\1 \2…” incorrect. Conjugaison erronée ou accord nom/adjectif incorrect. <<- /conj/ __else__ -3>> =suggVerb(\3, ":3s") && Conjugaison erronée. Accord avec “\1 \2…”. Le verbe devrait être à la 3ᵉ personne du singulier. - [une|cette|mon|ton|son|ma|ta|sa|notre|votre] *WORD @:V¬:(?:3s|P|Y|3p!|G|M) + [une|cette|mon|ton|son|ma|ta|sa|notre|votre] *WORD @:[123][sp]¬:(?:3s|P|Y|3p!|G|M) <<- /conj/ not tag(\2, "_enum_") and morph(<1, ":C||>,", ":[YP]") and morph(\2, ":[NA].*:[fe]:[si]", ":G") and not ( (value(\2, "|dizaine|douzaine|quinzaine|vingtaine|trentaine|quarantaine|cinquantaine|soixantaine|centaine|majorité|minorité|millier|partie|poignée|tas|paquet|moitié|") or tag_before(\1, "_ni_") or value(<1, "|et|ou|")) and morph(\3, ":3?p") ) and not checkAgreement(\2, \3) >>> <<- /conj/ not tag(\-1, "_ngn_") and morph(\3, ":A.*:p") or (morph(\3, ":N.*:p") and morph(\2, ":A")) -3>> =suggVerb(\3, ":3s", suggSing) && Accord avec “\1 \2…” incorrect. Conjugaison erronée ou accord nom/adjectif incorrect.