Index: gc_lang/fr/rules.grx ================================================================== --- gc_lang/fr/rules.grx +++ gc_lang/fr/rules.grx @@ -3099,10 +3099,17 @@ __da_pourvu__ pourvu <<- not value(>1, "|que|qu’|") =>> select(\1, "", ":G") +__da_pouvoir_savoir_vouloir__ + [un|le|ce|du|quel|mon|ton|son|notre|votre|leur] [pouvoir|savoir|vouloir] + <<- =>> select(\-1, ":N") + + [un|le|ce|du|quel|mon|ton|son|notre|votre|leur] *WORD [pouvoir|savoir|vouloir] + <<- morph(\2, ":A.*:[me]:[si]") =>> select(\-1, ":N") + __da_puis__ puis <<- not value(<1, "|je|ne|n’|le|l’|leur|") =>> select(\1, "", ":V") __da_quelque__ @@ -11446,11 +11453,11 @@ <<- /conf/ ->> nez à nez && Confusion. Locution “nez à nez”.|https://fr.wiktionary.org/wiki/nez_%C3%A0_nez [à|a] [mon|ton|son|notre|votre|leur] né au [né+ses] [dans|sur|sous] le [né+ses] - >crotte [de|d’] [né+ses] + [>crotte|>pied] [de|d’] [né+ses] >saignement [de|d’] [né+ses] [>mettre|>fourrer] ?@:[WX]¿ [le|mon|ton|son|notre|votre|leur] [né+ses] >pendre ?@:[WX]¿ [au|aux] [né+s] >voir ?@:[WX]¿ plus loin [que|qu’] [le|mon|ton|son|notre|votre|leur] [né+ses] >voir ?@:[WX]¿ plus loin [que|qu’] le bout [de|d’] [mon|ton|son|notre|votre|leur] [né+ses] @@ -22845,10 +22852,13 @@ && Confusion probable. Une vis est une pièce mécanique destinée à être vissée. Si vous parlez d’existence, écrivez “vie”.|https://fr.wiktionary.org/wiki/vie >donner [signe+s] [de|d’] [vis|vit|vies] <<- /conf/ --1>> vie && Locution “donner signe de vie”.|https://fr.wiktionary.org/wiki/ne_pas_donner_signe_de_vie + >sauver @:D.*:[fe] [vis|vit] + <<- /conf/ --1>> vie|vies && Confusion probable. Sauver une existence, c’est-à-dire une vie.|https://fr.wiktionary.org/wiki/vie + !! >question [de|d’] vie [ou|et] [de|d’] mort ¡¡ >question de [vis|vit|vie+s] [ou|et] de [mort+s|mors|mord+s|maure+s] <<- /conf/ -2:0>> de vie \-3 de mort && Locution “une question de vie ou/et de mort”. !! [droit+s] [de|d’] vie et [de|d’] mort ¡¡ @@ -22861,10 +22871,11 @@ --1>> vit && Confusion probable. Le verbe “vivre” s’écrit “vit” à la 3ᵉ personne du singulier. TEST: elle a mené une {{vis}} insignifiante ->> vie TEST: quelle {{vis}} incroyable ! ->> vie TEST: elle donne rarement signe de {{vis}} ->> vie +TEST: sauver des {{vis}}, c’est vital pour elle ->> vie|vies TEST: une question {{de vie ou de mors}} ->> de vie ou de mort TEST: avoir droit {{de vis et de mors}} ->> de vie et de mort TEST: l’homme {{vie}} ses derniers instants ->> vit TEST: le sortilège “vie de merde” n’eut aucun effet TEST: c’est comme toujours une question de vie ou de mort @@ -23018,13 +23029,14 @@ TEST: j’aide l’homme et par amour pour lui le laisse libre. __gn_le_1m__ , le *WORD + <<- /gn/ morph(\2, ":D") >>> <<- /gn/ morph(\3, ":[NA].*:f", ":(?:e|m|P|G|W|[123][sp]|Y)") -2>> =suggLesLa(\3) && Accord de genre erroné : « \3 » est féminin. <<- /gn/ __also__ and hasMasForm(\3) -3>> =suggMasSing(\3, True) && Accord de genre erroné : « \2 » est un déterminant masculin. - <<- /gn/ __else__ and morph(\3, ":[NA].*:p", ":[siGW]") -3>> =suggMasSing(\3) && Accord de nombre erroné : « \3 » devrait être au singulier. + <<- /gn/ __else__ and morph(\3, ":[NA].*:p", ":(?:[siPGWY]|[123][sp])") -3>> =suggMasSing(\3) && Accord de nombre erroné : « \3 » devrait être au singulier. <<- /gn/ __also__ -2>> les && Accord de nombre erroné : « \3 » est au pluriel. *WORD le *WORD <<- /gn/ morph(\2, ":D") >>> <<- /gn/ morph(\3, ":[NA].*:f", ":(?:e|m|P|G|W|[123][sp]|Y)") @@ -23035,11 +23047,11 @@ or ( morph(\3, ":[NA].*:p", ":[si]") and morph(\1, ":[RCY]", ">(?:e[tn]|ou)/") and not (morph(\1, ":Rv") and morph(\3, ":Y")) ) -3>> =suggMasSing(\3) && Accord de nombre erroné : « \3 » devrait être au singulier. <<- /gn/ __also__ -2>> les && Accord de nombre erroné : « \3 » est au pluriel. le *WORD - <<- /gn/ morph(\3, ":[NA].*:f", ":(?:e|m|P|G|W|Y)") -2>> =suggLesLa(\3) && Accord de genre erroné : « \3 » est féminin. + <<- /gn/ morph(\3, ":[NA].*:f", ":[emPGWMY]") -2>> =suggLesLa(\3) && Accord de genre erroné : « \3 » est féminin. <<- /gn/ __also__ and hasMasForm(\3) -3>> =suggMasSing(\3, True) && Accord de genre erroné : « \2 » est un déterminant masculin. <<- /gn/ __else__ and morph(\3, ":[NA].*:p", ":[siGW]") -3>> =suggMasSing(\3) && Accord de nombre erroné : « \3 » devrait être au singulier. <<- /gn/ __also__ -2>> les && Accord de nombre erroné : « \3 » est au pluriel. TEST: c’est une catastrophe, {{le}} {{profits}} a baissé ces deux derniers trimestres ->> les|||profit @@ -23052,10 +23064,11 @@ TEST: {{le}} {{publique}} ->> la|||public TEST: {{Le}} {{pendue}} ->> La|||pendu TEST: {{Le}} personne répond. ->> La TEST: {{le}} {{quotients}} ->> les|||quotient TEST: Comme avec l’Hyperloop, le bus chinois conçu pour passer au-dessus des voitures +TEST: Je le levai, le brandis et frappai de taille. __gn_le_2m__ le *WORD *WORD <<- /gn/ morph(\1, ":D") and not value(<1, "|et|ou|de|") and not morph(\3, ">seul/") >>> @@ -23111,13 +23124,14 @@ TEST: le prétentieux et sot {{hommes}} que voilà ->> homme __gn_la_1m__ , la *WORD - <<- /gn/ morph(\3, ":[NA].*:m", ":(?:e|f|P|G|W|M|[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. + <<- /gn/ morph(\2, ":D") >>> + <<- /gn/ morph(\3, ":[NA].*:m", ":(?:e|f|P|G|W|M|[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", ":(?:[siPGWY]|[123][sp])") -3>> =suggFemSing(\3) && Accord de nombre erroné : « \3 » devrait être au singulier. *WORD la *WORD <<- /gn/ morph(\2, ":D") >>> <<- /gn/ morph(\3, ":[NA].*:m", ":(?:e|f|P|G|W|M|[1-3][sp]|Y)") or ( morph(\3, ":[NA].*:m", ":[Mfe]") and morph(\1, ":[RCY]", ">(?:e[tn]|ou)/") and not (morph(\1, ":(?:Rv|C)") and morph(\3, ":Y")) ) @@ -23148,10 +23162,11 @@ TEST: {{le}} {{doctoresse}} est là. ->> la|||docteur TEST: la force de la {{formes}} parfaite ->> forme|formée TEST: à la Richard Nixon Foundation TEST: à ne plus se laisser faire la fois d’après TEST: il pense à la fois où nous avons eu cet accident idiot. +TEST: Je la levai, la brandis et frappai de taille. __gn_la_2m__ la *WORD *WORD <<- /gn/ morph(\1, ":D") and not value(<1, "|et|ou|de|d’|") and not morph(\3, ">seul/") >>> @@ -24625,12 +24640,12 @@ <<- /gn/ morph(\2, ":A", ":(?:A.*:[fe]:[si]|G|W)|;C") -2>> =suggFemSing(\2, True) && Cet adjectif n’est pas accordé avec le nom “\-1”. <<- /gn/ morph(\4, ":A", ":(?:A.*:[fe]:[si]|G|W)|;C") -4>> =suggFemSing(\4, True) && Cet adjectif n’est pas accordé avec le nom “\-1”. *WORD et *WORD @:N.*:e:s¬* <<- /gn/ morph(\2, ":A", ":G") and morph(\4, ":A", ":G") >>> - <<- /gn/ morph(\2, ":A", ":(?:A.*:[si]|G|W)|;C") -2>> =suggSing(\2, True) && Cet adjectif n’est pas accordé avec le nom “\-1”. - <<- /gn/ morph(\4, ":A", ":(?:A.*:[si]|G|W)|;C") -4>> =suggSing(\4, True) && Cet adjectif n’est pas accordé avec le nom “\-1”. + <<- /gn/ morph(\2, ":A", ":(?:A.*:[si]|G|W)|;C") -2>> =suggSing(\2, True) && Cet adjectif n’est pas accordé avec le nom “\-1”. + <<- /gn/ morph(\4, ":A", ":(?:A.*:[si]|G|W)|;C") -4>> =suggSing(\4, True) && Cet adjectif n’est pas accordé avec le nom “\-1”. *WORD et *WORD @:N.*:m:p¬* <<- /gn/ morph(\2, ":A", ":G") and morph(\4, ":A", ":G") >>> <<- /gn/ morph(\2, ":A", ":(?:A.*:[me]:[pi]|G|W)|;C") -2>> =suggMasPlur(\2, True) && Cet adjectif n’est pas accordé avec le nom “\-1”. <<- /gn/ morph(\4, ":A", ":(?:A.*:[me]:[pi]|G|W)|;C") -4>> =suggMasPlur(\4, True) && Cet adjectif n’est pas accordé avec le nom “\-1”. @@ -25793,10 +25808,11 @@ TEST: {{lorsque}} l’horloge {{sonnée}}, nous nous levions à la hâte TEST: {{quand}} les croissants {{arrivés}}, on se jetait dessus TEST: {{lorsque}} certains idiots {{oubliés}}, on riait aux éclats TEST: {{lorsque}} ton code {{grossi}}, il faut le factoriser TEST: quand le jour venu, il fallut se battre, nous étions prêts. +TEST: quand ce fut fait, il lui manqua la force de répliquer. __conf_qui_pronom_verbe__ qui [lui|nous|vous] @:[NA]¬:(?:[123][sp]|P) <<- /conf/ hasSimil(\-1, ":(?:[123][sp]|P)") --1>> =suggSimil(\-1, ":[123][sp]") && Confusion probable : “\-1” n’est pas une forme verbale conjuguée. @@ -26416,18 +26432,18 @@ __infi_pouvoir!5__ >pouvoir ?[ne|n’]¿ ?[le|la|l’|les|en|me|m’|te|t’|se|s’|nous|vous|lui|leur|y]¿ ~..(?:ée?s?|ez)$ >pouvoir ?[ne|n’]¿ [me|m’|te|t’|se|s’|nous|vous] [le|la|l’|les|en|y] ~..(?:ée?s?|ez)$ >pouvoir ?[ne|n’]¿ [le|la|l’|les] [lui|leur|en|y] ~..(?:ée?s?|ez)$ >pouvoir ?[ne|n’]¿ [lui|leur|y] en ~..(?:ée?s?|ez)$ - <<- /infi/ not value(\1, "|puis|pouvoirs|") and morph(\-1, ":V", ":M") and not (morph(\1, ":N") and morph(<1, ":D")) + <<- /infi/ morph(\1, ":V", ">puis/") and morph(\-1, ":V", ":M") --1>> =suggVerbInfi(\-1) && S’il s’agit d’une action que le sujet peut accomplir, le verbe devrait être à l’infinitif. >pouvoir ?[ne|n’]¿ ?[le|la|l’|les|en|me|m’|te|t’|se|s’|nous|vous|lui|leur|y]¿ ~..(?:ai(?:s|t|ent))$ >pouvoir ?[ne|n’]¿ [me|m’|te|t’|se|s’|nous|vous] [le|la|l’|les|en|y] ~..(?:ai(?:s|t|ent))$ >pouvoir ?[ne|n’]¿ [le|la|l’|les] [lui|leur|en|y] ~..(?:ai(?:s|t|ent))$ >pouvoir ?[ne|n’]¿ [lui|leur|y] en ~..(?:ai(?:s|t|ent))$ - <<- /infi/ not value(\1, "|puis|pouvoirs|") and morph(\-1, ":V", ":M") and not (morph(\1, ":N") and morph(<1, ":D")) and not tagbefore(\1, "_ceque_") + <<- /infi/ morph(\1, ":V", ">puis/") and morph(\-1, ":V", ":M") and not tagbefore(\1, "_ceque_") --1>> =suggVerbInfi(\-1) && S’il s’agit d’une action que le sujet peut accomplir, le verbe devrait être à l’infinitif. [de|d’] pouvoir ?[ne|n’]¿ ?[le|la|l’|les|en|me|m’|te|t’|se|s’|nous|vous|lui|leur|y]¿ ~(?:ée?s?|ez|ais)$ [de|d’] pouvoir ?[ne|n’]¿ [me|m’|te|t’|se|s’|nous|vous] [le|la|l’|les|en|y] ~(?:ée?s?|ez|ais)$ [de|d’] pouvoir ?[ne|n’]¿ [le|la|l’|les] [lui|leur|en|y] ~(?:ée?s?|ez|ais)$ @@ -26439,10 +26455,11 @@ TEST: ils peuvent nous {{marchaient}} sur les pieds ->> marcher TEST: Il doit pouvoir {{détectez}} ces erreurs. ->> détecter TEST: elle rêve de pouvoir les {{brisés}} à mains nues ->> briser TEST: un homme de pouvoir débordé par ses obligations. TEST: faire seulement ce que tu pouvais ne satisfaisait pas tes patrons. +TEST: un immense pouvoir l’animait. __infi_savoir!5__ >savoir ?[que|qu’|quoi]¿ ~..(?:ée?s?|ez)$ >savoir ?[que|qu’|quoi]¿ ~..(?:ée?s?|ez)$ @@ -29137,13 +29154,13 @@ [|,|(|/_start_] ($:M) ?qui¿ ?[ne|n’]¿ ?[en|y]¿ (/_VE_) @:[AQ]¬:[GMW] [|,|(|/_start_] ($:M) ?qui¿ ?[ne|n’]¿ ?[en|y]¿ (/_LVED_) ?/_LVE_¿ ?/_LVE_¿ ?/_LVE_¿ ?/_LVE_¿ /_LVEF_ @:[AQ]¬:[GMW] [|,|(|/_start_] ($:M) ?qui¿ ?[ne|n’]¿ [se|s’] ?[en|y]¿ (/_VEP_) @:[AQ]¬:[GMW] [|,|(|/_start_] ($:M) ?qui¿ ?[ne|n’]¿ [se|s’] ?[en|y]¿ (/_LVEPD_) ?/_LVEP_¿ ?/_LVEP_¿ ?/_LVEP_¿ /_LVEPF_ @:[AQ]¬:[GMW] <<- /ppas/ not tag(\1, "_enum_") and not value(\-1, "|légion|pléthore|néant|réalité|") and (morph(\2, ":[123]s") or (not tag(\1, "_enum_") and morph(\2, ":P"))) >>> - <<- /ppas/ morph(\1, ":M.*:f", ":[me]") and morph(\-1, ":[AQ].*:m", ":[fe]") --1>> =suggFemSing(\-1) && Accord erroné : “\1” et “\-1” ne sont pas accordés. Mettez au féminin pluriel. - <<- /ppas/ __else__ and morph(\1, ":M.*:m", ":[fe]") and morph(\-1, ":[AQ].*:f", ":[me]") --1>> =suggMasSing(\-1) && Accord erroné : “\1” et “\-1” ne sont pas accordés. Mettez au masculin pluriel. - <<- /ppas/ __else__ and morph(\-1, ":p", ":[AQ].*:[si]") --1>> =suggSing(\-1) && Accord erroné : “\1” et “\-1” ne sont pas accordés. Mettez au pluriel. + <<- /ppas/ morph(\1, ":M.*:f", ":[me]") and morph(\-1, ":[AQ].*:m", ":[fe]") --1>> =suggFemSing(\-1) && Accord erroné : “\1” et “\-1” ne sont pas accordés. Mettez au féminin singulier. + <<- /ppas/ __else__ and morph(\1, ":M.*:m", ":[fe]") and morph(\-1, ":[AQ].*:f", ":[me]") --1>> =suggMasSing(\-1) && Accord erroné : “\1” et “\-1” ne sont pas accordés. Mettez au masculin singulier. + <<- /ppas/ __else__ and morph(\-1, ":p", ":[AQ].*:[si]") --1>> =suggSing(\-1) && Accord erroné : “\1” et “\-1” ne sont pas accordés. Mettez au singulier. TEST: Marianne semble devenue {{colériques}} TEST: Pauline n’affirme pas avoir été {{vaincu}} pour autant TEST: Sara n’en croit pas cependant être devenue {{aigries}} TEST: Patrick est devenu {{folles}}