Index: gc_lang/fr/rules.grx ================================================================== --- gc_lang/fr/rules.grx +++ gc_lang/fr/rules.grx @@ -37,11 +37,11 @@ !! OPTGROUP/basic: typo apos eepi, esp tab, nbsp unit, tu maj, num nf, virg poncfin, ocr chim, liga mapos OPTGROUP/gramm: conf sgpl gn OPTGROUP/verbs: infi conj ppas, imp inte vmode -OPTGROUP/style: bs pleo, redon1 redon2, neg +OPTGROUP/style: bs pleo, eleu neg, redon1 redon2 OPTGROUP/misc: date mc OPTGROUP/debug: idrule # Names of options is used in dictionaries keys: dOptPython, dOptJavaScript, etc. OPTSOFTWARE: Python Server Writer JavaScript Firefox Thunderbird @@ -72,13 +72,14 @@ OPT/imp: True True True True True True OPT/inte: True True True True True True OPT/vmode: True True True True True True OPT/bs: True True True True True True OPT/pleo: True True True True True True +OPT/eleu: True True True True True True +OPT/neg: False False False False False False OPT/redon1: False False False False False False OPT/redon2: False False False False False False -OPT/neg: False False False False False False OPT/date: True True True True True True OPT/mc: False False False False False False OPT/idrule: False False False False False False OPT/html: False False False True True True OPT/latex: True False False False False False @@ -134,13 +135,14 @@ OPTCOLOR/imp: fuschia vert_vif OPTCOLOR/inte: fuschia vert_vif OPTCOLOR/vmode: fuschia vert_vif OPTCOLOR/bs: cyan cyan_vif OPTCOLOR/pleo: cyan cyan_vif +OPTCOLOR/eleu: cyan cyan_vif +OPTCOLOR/neg: cyan cyan_vif OPTCOLOR/redon1: cyan cyan_vif OPTCOLOR/redon2: cyan cyan_vif -OPTCOLOR/neg: cyan cyan_vif OPTCOLOR/date: cyan cyan_vif OPTCOLOR/mc: cyan cyan_vif # Texte pour voir toutes les erreurs. # Mardi, 26 janvier 2019. Lorsqu'il arrivas, et il arriva épuisé, la journées était terminées, et et il n’y avais plus rien à mangé, hormis des baigner. Quel décepption ce fut ! @@ -186,10 +188,11 @@ OPTLABEL/vmode: Modes verbaux OPTLABEL/style: Style OPTLABEL/bs: Populaire|Souligne un langage courant considéré comme erroné, comme « malgré que ». OPTLABEL/pleo: Pléonasmes|Repère des redondances sémantiques, comme « au jour d’aujourd’hui », « monter en haut », etc. +OPTLABEL/eleu: Élisions et euphonies|Signale les élisions incorrectes et les tournures dysphoniques. OPTLABEL/neg: Adverbe de négation [!]|Ne … pas, ne … jamais, etc. OPTLABEL/redon1: Répétitions dans le paragraphe [!]|Sont exclus les mots grammaticaux, ceux commençant par une majuscule, ainsi que “être” et “avoir”. OPTLABEL/redon2: Répétitions dans la phrase [!]|Sont exclus les mots grammaticaux, ainsi que “être” et “avoir”. OPTLABEL/misc: Divers @@ -235,10 +238,11 @@ OPTLABEL/vmode: Verbal modes OPTLABEL/style: Style OPTLABEL/bs: Popular style|Underlines misuse of language though informal and commonly used. OPTLABEL/pleo: Pleonasms|Semantic replications, like « au jour d’aujourd’hui », « monter en haut », etc. +OPTLABEL/eleu: Élisions et euphonies|Signale les élisions incorrectes et les tournures dysphoniques. OPTLABEL/neg: Negation adverb [!]|Ne … pas, ne … jamais, etc. OPTLABEL/redon1: Duplicates in paragraph [!]|Are excluded grammatical words, words beginning by a capital letter, and also “être” and “avoir”. OPTLABEL/redon2: Duplicates in sentence [!]|Are excluded grammatical words, and also “être” and “avoir”. OPTLABEL/misc: Miscellaneous @@ -1686,15 +1690,15 @@ ([-–—− ]t(?:[’' ][-–—−]?|[-–—−][’' ]?))(ie?ls?|elles?|on|tu) @@0,$ <<- re.search("(?i)^(?:ie?ls|elles|tu)$", \2) -1>> - && Le “t” euphonique n’est pas nécessaire avec “\2”.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?T1=t+euphonique&id=2513 <<- __else__ and \1 != "-t-" and \1 != "-T-" -1>> -t- && Pour le “t” euphonique, il faut deux traits d’union. Pas d’apostrophe. Pas d’espace. <<- \1 != "-t-" ~1>> -t- __> - && Le “t” euphonique est superflu quand le verbe se termine par “t” ou “d”.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?T1=t+euphonique&id=2513 <<- \1 != "-t-" ~1>> -t- -__> -t-\2 && Il faut un “t” euphonique.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?T1=t+euphonique&id=2513 +__> -t-\2 && Euphonie. Il faut un “t” euphonique.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?T1=t+euphonique&id=2513 TEST: va{{ t’}}il y parvenir ? ->> -t- TEST: A{{ t’}}elle soif ? ->> -t- TEST: A{{ t-}}elle faim ? ->> -t- TEST: a{{ t'}}elle ->> -t- @@ -2018,13 +2022,16 @@ l’ une comme l’ autre <<- ~>> ␣ <<- =>> define(\1, ":LN:f:p") - [des|chaque|quelque|quelques|cet|cette|ces|mon|ma|ta|sa|mes|tes|ses|au|aux|notre|votre|nos|vos|leurs|aucun|aucune] *WORD + [des|chaque|quelque|quelques|cet|cette|ces|mon|ma|ta|mes|tes|ses|au|aux|notre|votre|nos|vos|leurs|aucun|aucune] *WORD <<- not morph(\-1, ":V0") =>> exclude(\2, ":V") + sa *WORD + <<- not morph(\-1, ":V0") and not morph(\-1, ":3s") =>> exclude(\2, ":V") + les ~.es$ <<- not value(<1, "|tu|ne|n’|me|m’|te|t’|se|s’|nous|vous|") and morph(\2, ":V1.*Ip.*:2s") and not tag_before(\1, "_2s_") and not value(>1, "|tu|pas|jamais|") =>> exclude(\2, ":V") [un|une] *WORD @@ -2409,11 +2416,11 @@ <<- /inte/ morphVC(\1, ":V", ":1[sśŝ]") ->> =suggVerb(\1, ":1ś", None, True) && Forme interrogative. Désaccord avec “je”. Le verbe n’est pas à la 1ʳᵉ personne du singulier. <<- /inte/ __else__ and not morphVC(\1, ":V") ->> =suggSimil(\1, ":1[sśŝ]", False, True) && Forme interrogative. Désaccord avec “je”. Le verbe n’est pas à la 1ʳᵉ personne du singulier. <<- />> -je|_VCint_ aie-je - <<- /conj/ ->> ai-je && Forme interrogative. N’employez pas le subjonctif présent. + <<- /vmode/ ->> ai-je && Forme interrogative. N’employez pas le subjonctif présent. ~\w-[tT]u$ <<- /inte/ morphVC(\1, ":V", ":[ISK].*:2s") ->> =suggVerb(\1, ":2s", None, True) && Forme interrogative. Désaccord avec “tu”. Le verbe n’est pas à la 2ᵉ personne du singulier. <<- /inte/ __else__ and not morphVC(\1, ":V") ->> =suggSimil(\1, ":2s", False, True) && Forme interrogative. Désaccord avec “tu”. Le verbe n’est pas à la 2ᵉ personne du singulier. <<- />> -tu|_VCint_ @@ -3549,47 +3556,108 @@ #TEST: Il y a un {{doublon doublon}}. !! !! -!!!! Élisions !! +!!!! Élisions & euphonie !! !! !! -__typo_élisions_manquantes__ - [le|la|de] ~^[aâeéêiîoôu]. - <<- /typo/ space_after(\1, 1, 1) and not re.search("(?i)^(?:onz[ei]|énième|iourte|ouistiti|ouate|one-?step|ouf|Ouagadougou|I(?:I|V|X|er|ᵉʳ|ʳᵉ|è?re))", \2) and not morph(\2, ":G") +# élisions +__eleu_élisions_manquantes__ + [le|la|de] ~^[aâeéèêiîoôuûyœæ]. + <<- /eleu/ space_after(\1, 1, 1) and not re.search("(?i)^(?:onz[ei]|énième|iourte|ouistiti|ouate|one-?step|ouf|Ouagadougou|I(?:I|V|X|er|ᵉʳ|ʳᵉ|è?re))", \2) and not morph(\2, ":G") -1:.2>> =\1[0:1]+"’" && Élision de l’article devant un mot commençant par une voyelle.|http://fr.wikipedia.org/wiki/Élision si [il|ils] - <<- /typo/ space_after(\1, 1, 1) -1:.2>> s’ && Il faut élider “si” et l’accoler au pronom.|http://fr.wikipedia.org/wiki/Élision + <<- /eleu/ space_after(\1, 1, 1) -1:.2>> s’ && Il faut élider “si” et l’accoler au pronom.|http://fr.wikipedia.org/wiki/Élision que [il|ils|elle|elles|on|iel|iels] - <<- /typo/ space_after(\1, 1, 1) -1:.2>> qu’ && Il faut élider “que” et l’accoler au pronom.|http://fr.wikipedia.org/wiki/Élision + <<- /eleu/ space_after(\1, 1, 1) -1:.2>> qu’ && Il faut élider “que” et l’accoler au pronom.|http://fr.wikipedia.org/wiki/Élision - se ~^[aâeéêiîoôu]. - <<- /typo/ \1 != "SE" and space_after(\1, 1, 1) and morph(\2, ":V", ":Q") - -1:.2>> s’ && Il faut élider le pronom “se” et l’accoler au verbe.|http://fr.wikipedia.org/wiki/Élision + [me|te|se] ~^[aâeéèêiîoôuûyœæ]. + <<- /eleu/ not \1.isupper() and space_after(\1, 1, 1) and morph(\2, ":V", ":Q") + -1:.2>> =\1[0:1]+"’" && Il faut élider le pronom “\1” et l’accoler au verbe.|http://fr.wikipedia.org/wiki/Élision TEST: {{le }}amour ->> l’ TEST: {{la }}imagination ->> l’ TEST: {{de }}amour ->> d’ TEST: {{de }}est ->> d’ TEST: je crois que {{si }}ils viennent, ils seront mécontents TEST: {{Que }}ils soient heureux TEST: Il {{se }}avançait parmi eux. +TEST: il {{me }}oublie souvent TEST: J’ai passé une journée de ouf. # ce -> cet -__typo_euphonie_cet__ - ce ~^[aâeéêiîoôu] - <<- /typo/ not re.search("(?i)^(?:onz|énième|ouf|énième|ouistiti|one-?step|I(?:I|V|X|er|ᵉʳ))", \2) and morph(\2, ":[NA].*:[me]") - -1>> cet && Euphonie : “ce” devient “cet” devant un mot commençant par une voyelle. +__eleu_euphonie_cet__ + ce ~^[aâeéèêiîoôuûyœæ] + <<- /eleu/ not re.search("(?i)^(?:onz|énième|ouf|énième|ouistiti|one-?step|I(?:I|V|X|er|ᵉʳ))", \2) and morph(\2, ":[NA].*:[me]") + -1>> cet && Euphonie : “ce” devient “cet” devant un mot commençant par une voyelle.|https://fr.wikipedia.org/wiki/Euphonie TEST: {{ce}} animal est dangereux + +# Verbe 1ʳᵉ personne du singulier, interrogatif… xxxé-je +__eleu_é_je__ + /-je + <<- /eleu/ morphVC(\1, "V1.*:1s") and \1.endswith("e-je") ->> =\1.replace("e-je", "é-je")+"|"+\1.replace("e-je", "è-je") + && Euphonie. Pour les verbes finissant par “e” à l’interrogatif à la 1ʳᵉ personne du singulier, mettez un accent aigu ou grave sur le “e” final. Exemple : “pensé-je” (présent), à ne pas confondre avec “pensais-je” (imparfait).|https://fr.wikipedia.org/wiki/Euphonie + +TEST: {{pense-je}} ->> pensé-je|pensè-je +TEST: pensé-je +TEST: souhaitè-je + + +# ma, ta, sa / mon, ton, son +__eleu_euphonie_ma_ta_sa__ + [ma|ta] ~^[aâeéèêiîoôuûyœæ]. + <<- /eleu/ morph(\2, ":[NA]") and not re.search("(?i)^(?:onz|énième|ouf|énième|I(?:I|V|X|i?[eè]?re|ʳᵉ))", \2) + -1>> =\1[0:1]+"on" && Euphonie : lorsque le déterminant “\1” est suivi d’un nom ou d’un adjectif commençant par une voyelle, il est d’usage d’utiliser le pronom “mon”, “ton” ou “son” pour respecter l’euphonie. Exemple : mon étoile (féminin).|https://fr.wikipedia.org/wiki/Euphonie + + sa ~^[aâeéèêiîoôuûyœæ]. + <<- /eleu/ not \1.isupper() and morph(\2, ":[NA]") and not re.search("(?i)^(?:onz|énième|ouf|énième|I(?:I|V|X|i?[eè]?re|ʳᵉ))", \2) >>> + <<- /eleu/ morph(\2, ":[123][sp]") -1>> =\1[0:1]+"on|ça" && Euphonie : lorsque le déterminant “\1” est suivi d’un nom ou d’un adjectif commençant par une voyelle, il est d’usage d’utiliser le pronom “mon”, “ton” ou “son” pour respecter l’euphonie. (À moins que vous ne confondiez “sa” et “ça”.) Exemple : son étoile (féminin), ça existe.|https://fr.wikipedia.org/wiki/Euphonie + <<- /eleu/ __else__ -1>> =\1[0:1]+"on" && Euphonie : lorsque le déterminant “\1” est suivi d’un nom ou d’un adjectif commençant par une voyelle, il est d’usage d’utiliser le pronom “mon”, “ton” ou “son” pour respecter l’euphonie. Exemple : son étoile (féminin).|https://fr.wikipedia.org/wiki/Euphonie + +TEST: {{ta}} aimée ->> ton +TEST: {{ma}} obligée ->> mon +TEST: {{sa}} œuvre ->> son|ça +TEST: {{sa}} existence ->> son +TEST: SA déchue aux yeux du Fuhrer +TEST: Ce couple va donner à la France sa très importante collection qui rejoindra le musée d’Orsay + + +# nouvel / nouveaux +__eleu_nouvel_nouveau_euphonie__ + [un|le|ce|du|mon|ton|son|notre|votre|leur|quel] nouveau homme + <<- /eleu/ -2>> nouvel && Euphonie. Utilisez “nouvel” pour un nom masculin singulier commençant par une voyelle ou un h.|https://fr.wikipedia.org/wiki/Euphonie + + [un|le|ce|du|mon|ton|son|notre|votre|leur|quel] nouveau ~^[aâeéèêiîoôuûyœæ] + <<- /eleu/ morph(\3, ":[NA].*:[me]:s", ":[123][sp]") -2>> nouvel && Euphonie. Utilisez “nouvel” pour un nom masculin singulier commençant par une voyelle ou un h.|https://fr.wikipedia.org/wiki/Euphonie + +TEST: ce {{nouveau}} homme +TEST: un {{nouveau}} élément relance l’enquête +TEST: il se sentait de nouveau homme +TEST: il se sentait à nouveau homme + + +# vieil / vieux +__eleu_vieil_vieux_euphonie__ + vieux homme + <<- /eleu/ -1>> vieil && Euphonie. Utilisez “vieil” s’il précède un nom masculin singulier commençant par une voyelle ou un h.|https://fr.wikipedia.org/wiki/Euphonie + + vieux ~^[aâeéèêiîoôuûyœæ] + <<- /eleu/ morph(\2, ":[NA].*:[me]:s", ":[123][sp]") + -1>> vieil && Euphonie. Utilisez “vieil” s’il précède un nom masculin singulier commençant par une voyelle ou un h.|https://fr.wikipedia.org/wiki/Euphonie + +TEST: ce {{vieux}} homme +TEST: c’est un {{vieux}} imbécile. +TEST: Le {{vieux}} homme était parti. ->> vieil +TEST: Diviser les jeunes et les vieux est un peu son fonds de commerce + !! !! !!!! Nombres ordinaux !! @@ -5604,27 +5672,10 @@ TEST: {{Ajourner à une date ultérieure}} ->> Ajourner TEST: {{différer à une date ultérieure}} ->> différer TEST: {{reporter à plus tard}} ->> reporter - - -!! -!! -!!!! Tournures de langage !! -!! -!! - -# Mon, ton, son : euphonie -__gn_mon_ton_son_euphonie__ - [ma|ta|sa] @>[aâeéèêiîoôuûyœæ].+:[NAQ].*:f¬:[eGW] - <<- /gn/ -1>> =\1.replace("a", "on") && Même si « \2 » est féminin, on utilise « mon/ton/son » pour faire la liaison.|http://fr.wikipedia.org/wiki/Euphonie - -TEST: {{ta}} aimée ->> ton -TEST: {{ma}} obligée ->> mon -TEST: Ce couple va donner à la France sa très importante collection qui rejoindra le musée d’Orsay - !!! !!! !!! Conjugaison !! @@ -9570,41 +9621,61 @@ TEST: Ils n’étaient guère prêts à ça, {{loins sans faux}}. TEST: Et les intellectuels ? En France comme ailleurs, tous n’ont pas, loin s’en faut, une pleine lucidité sur cette précarité galopante. # m’a / ma -__conf_m_a_ma!6__ - [|,|(] tu ma +__conf_m_a_ma!7__ + [|,|(] tu [ma|mas] <<- /conf/ --1>> m’as && Confusion : “ma” est un déterminant possessif féminin. Pour le verbe “avoir” à la 2ᵉ personne précédé du pronom personnel ”me”, écrivez “m’as”. - [il|ils|on] ma + [il|ils] [ma|mas] + <<- /conf/ not morph(<1, ":3s") + --1>> m’a && Confusion : “ma” est un déterminant possessif féminin. Pour le verbe “avoir” à la 3ᵉ personne précédé du pronom personnel ”me”, écrivez “m’a”. + + on [ma|mas] <<- /conf/ morph(<1, "|:C|>,/") --1>> m’a && Confusion : “ma” est un déterminant possessif féminin. Pour le verbe “avoir” à la 3ᵉ personne précédé du pronom personnel ”me”, écrivez “m’a”. - [ne|n’] ma + [ne|n’] [ma|mas] <<- /conf/ --1>> m’a && Confusion : “ma” est un déterminant possessif féminin. Pour le verbe “avoir” à la 3ᵉ personne précédé du pronom personnel ”me”, écrivez “m’a”. - ça ma *WORD + ça [ma|mas] *WORD <<- /conf/ morph(<1, "|:C|>,/") and analyse(\-1, ":(?:Q|V1.*:Y)", ":N.*:[fe]") -2>> m’a && Confusion : “ma” est un déterminant possessif féminin. Pour le verbe “avoir” à la 3ᵉ personne précédé du pronom personnel ”me”, écrivez “m’a”. + qui ma *WORD + <<- /conf/ analyse(\-1, ":(?:Q|V1.*:Y)", ":N.*:[fe]") + -2>> m’a && Confusion : “ma” est un déterminant possessif féminin. Pour le verbe “avoir” à la 3ᵉ personne précédé du pronom personnel ”me”, écrivez “m’a”. + + ma @:(?:Q.*:e:i|V1.*:Y)¬:f:s + <<- /conf/ -1>> m’a && Confusion probable : “\-2“ est un participe passé. Vous confondez probablement “ma” et “m’a” (contraction de “me” suivi du verbe avoir “a”). + TEST: tu {{ma}} prise par surprise ->> m’as TEST: il {{ma}} tuée ->> m’a TEST: cette femme ne {{ma}} prise que deux fois ->> m’a +TEST: {{on}} {{ma}} dézinguée ->> m’a|||ont TEST: ça {{ma}} {{foutu}} en l’air +TEST: cet homme {{ma}} succédé à ce poste ->> m’a +TEST: {{ma}} {{donner}} la nausée, ce con +TEST: c’est ça qui {{ma}} forcée à poursuivre ->> m’a TEST: ça ma grande, c’est mon secret # m’ont / mon __conf_m_ont!6__ - [il|ils] mon + il mon <<- /conf/ morph(<1, "|:C|>,/") + --1>> m’ont && Confusion probable : “mon” est un déterminant possessif. Pour le verbe “avoir” à la 3ᵉ personne du pluriel précédé du pronom personnel ”me”, écrivez “m’ont”. + + ils mon + <<- /conf/ not morph(<1, ":(?:3p|D)") --1>> m’ont && Confusion : “mon” est un déterminant possessif. Pour le verbe “avoir” à la 3ᵉ personne du pluriel précédé du pronom personnel ”me”, écrivez “m’ont”. ne mon <<- /conf/ --1>> m’ont && Confusion : “mon” est un déterminant possessif. Pour le verbe “avoir” à la 3ᵉ personne du pluriel précédé du pronom personnel ”me”, écrivez “m’ont”. +TEST: il {{mon}} détruit ->> m’ont TEST: ils {{mon}} donné du fil à retordre, ces cons. ->> m’ont TEST: ces écarts ne {{mon}} posé aucun problème ->> m’ont # mai / mais @@ -9679,22 +9750,11 @@ TEST: {{vôtre}} chien a du mordant TEST: nous vous proposons de faire vôtre une autre volonté TEST: Elle récitait sans cesse des Notre Père. -# nouvel / nouveaux -__conf_nouvel_nouveau_euphonie__ - [un|le|ce|du|mon|ton|son|notre|votre|leur|quel] nouveau homme - <<- /conf/ -2>> nouvel && Euphonie. Utilisez “nouvel” pour un nom masculin singulier commençant par une voyelle ou un h.|https://fr.wikipedia.org/wiki/Euphonie - - [un|le|ce|du|mon|ton|son|notre|votre|leur|quel] nouveau ~^[aâeéiîou] - <<- /conf/ morph(\3, ":[NA].*:[me]:s") -2>> nouvel && Euphonie. Utilisez “nouvel” pour un nom masculin singulier commençant par une voyelle ou un h.|https://fr.wikipedia.org/wiki/Euphonie - -TEST: ce {{nouveau}} homme -TEST: un {{nouveau}} élément relance l’enquête -TEST: il se sentait de nouveau homme -TEST: il se sentait à nouveau homme + # nulle part __conf_nulle_part__ nul part @@ -11494,23 +11554,11 @@ TEST: à côté de nous voire avec nous TEST: sans lui voire sans rien TEST: il fait ça pour nous voire pour tout le monde -# vieil / vieux -__conf_vieil_vieux_euphonie__ - vieux homme - <<- /conf/ -1>> vieil && Euphonie. Utilisez “vieil” pour un nom masculin singulier commençant par une voyelle ou un h.|https://fr.wikipedia.org/wiki/Euphonie - - vieux ~^[aeéiîou] - <<- /conf/ morph(\2, ":[NA].*:[me]:s", ":[123][sp]") - -1>> vieil && Euphonie. Utilisez “vieil” pour un nom masculin singulier commençant par une voyelle ou un h.|https://fr.wikipedia.org/wiki/Euphonie - -TEST: ce {{vieux}} homme -TEST: c’est un {{vieux}} imbécile. -TEST: Le {{vieux}} homme était parti. ->> vieil -TEST: Diviser les jeunes et les vieux est un peu son fonds de commerce + !!!! Confusions de vocabulaire !!