Index: compile_rules_graph.py ================================================================== --- compile_rules_graph.py +++ compile_rules_graph.py @@ -42,12 +42,12 @@ sCode = re.sub(r"\b(morph|morphVC|analyse|value|tag|meta|info)[(]\\-(\d+)", 'g_\\1(lToken[nLastToken-\\2+1]', sCode) sCode = re.sub(r"\b(select|exclude|define|definefrom|rewrite|addmorph|setmeta)[(][\\](\d+)", 'g_\\1(lToken[nTokenOffset+\\2]', sCode) sCode = re.sub(r"\b(select|exclude|define|definefrom|rewrite|addmorph|setmeta)[(][\\]-(\d+)", 'g_\\1(lToken[nLastToken-\\2+1]', sCode) sCode = re.sub(r"\b(tagbefore|tagafter)[(][\\](\d+)", 'g_\\1(lToken[nTokenOffset+\\2], dTags', sCode) sCode = re.sub(r"\b(tagbefore|tagafter)[(][\\]-(\d+)", 'g_\\1(lToken[nLastToken-\\2+1], dTags', sCode) - sCode = re.sub(r"\bspace_after[(][\\](\d+)", 'g_space_between_tokens(lToken[nTokenOffset+\\1], lToken[nTokenOffset+\\1+1]', sCode) - sCode = re.sub(r"\bspace_after[(][\\]-(\d+)", 'g_space_between_tokens(lToken[nLastToken-\\1+1], lToken[nLastToken-\\1+2]', sCode) + sCode = re.sub(r"\bspace[(][\\](\d+)", 'g_space(lToken[nTokenOffset+\\1], lToken[nTokenOffset+\\1+1]', sCode) + sCode = re.sub(r"\bspace[(][\\]-(\d+)", 'g_space(lToken[nLastToken-\\1+1], lToken[nLastToken-\\1+2]', sCode) sCode = re.sub(r"\banalyse_with_next[(][\\](\d+)", 'g_merged_analyse(lToken[nTokenOffset+\\1], lToken[nTokenOffset+\\1+1]', sCode) sCode = re.sub(r"\banalyse_with_next[(][\\]-(\d+)", 'g_merged_analyse(lToken[nLastToken-\\1+1], lToken[nLastToken-\\1+2]', sCode) sCode = re.sub(r"\b(morph|analyse|tag|meta|value)\(>1", 'g_\\1(lToken[nLastToken+1]', sCode) # next token sCode = re.sub(r"\b(morph|analyse|tag|meta|value)\(<1", 'g_\\1(lToken[nTokenOffset]', sCode) # previous token sCode = re.sub(r"\b(morph|analyse|tag|meta|value)\(>(\d+)", 'g_\\1(g_token(lToken, nLastToken+\\2)', sCode) # next token Index: doc/syntax.txt ================================================================== --- doc/syntax.txt +++ doc/syntax.txt @@ -345,23 +345,23 @@ `analyse(n, "regex"[, "neg_regex"][, trim_left=0][, trim_right=0])` > Same action with `morph()` and `morph0()` for regex rules. > Parameters and removed n characters at left or the right of the token before performing an analyse. -`space_after(n, min_space[, max_space])` +`space(n, min_space[, max_space])` > Returns True if the next token after token n is separated with at least blank spaces and at most with blank spaces. `tag(n, tag)` > Returns True if exists on taken the nth token. -`tag_before(n, tag)` +`tagbefore(n, tag)` > Returns True if is found any token before the nth tag. -`tag_after(n, tag)` +`tagafter(n, tag)` > Returns True if is found any token after the nth tag. ### Functions for regex and token rules @@ -601,42 +601,42 @@ `exclude(n, pattern)` > At reference n, exclude morphologies that match the pattern. -`define(n, [morph_list])` +`define(n, morph_list as string)` + +> At reference n, set the listed morphologies. -> At reference n, set the listed morphologies (a list of strings). +`addmorph(n, morph_list as string)` -`add_morph(n, [morph_list])` - -> At reference n, add the listed morphologies (a list of strings). +> At reference n, add the listed morphologies. Examples: =>> select(\1, "po:noun is:pl") =>> exclude(\1, "po:verb") - =>> exclude(\1, "po:verb") and define(\2, ["po:adv"]) and select(\3, "po:adv") + =>> exclude(\1, "po:verb") and define(\2, "po:adv") and select(\3, "po:adv") Note: All these functions ALWAYS return True. If `select()` and `exclude()` generate an empty list, nothing change. With `define()` and `addmorph()`, you must set a list of POS tags. Example: - =>> define(\1, ["po:nom is:plur", "po:adj is:sing", "po:adv"]) - =>> addmorph(\1, ["po:adv"]) + =>> define(\1, "po:nom is:plur|po:adj is:sing|po:adv") + =>> addmorph(\1, "po:adv") ### Tagging **Only for token rules**. Tagging can be done with the command `/>>`. You can set one or several tags at once. Use `|` as a separator. Example: `/>> a_tag` to set the same tag on all takens of the rule. Example: `/3>> a_tag` to set the tag on the third token. Example: `/>> a_tag|another_tag` to set two tags. -You can know if a token is tagged with eh function `tag()` and you can know if tags have been set on previous or following tokens with `tag_before()` and `tag_after()`. +You can know if a token is tagged with eh function `tag()` and you can know if tags have been set on previous or following tokens with `tagbefore()` and `tagafter()`. ### Immunity **Only for token rules**. A immunity rule set a flag on token(s) who are not supposed to be considered as an error. If any other rules find an error, it will be ignored. If an error has already been found, it will be removed. Index: gc_core/js/lang_core/gc_functions.js ================================================================== --- gc_core/js/lang_core/gc_functions.js +++ gc_core/js/lang_core/gc_functions.js @@ -325,11 +325,11 @@ function g_meta (oToken, sType) { return oToken["sType"] == sType; } -function g_space_between_tokens (oToken1, oToken2, nMin, nMax=null) { +function g_space (oToken1, oToken2, nMin, nMax=null) { let nSpace = oToken2["nStart"] - oToken1["nEnd"] if (nSpace < nMin) { return false; } if (nMax !== null && nSpace > nMax) { Index: gc_core/py/lang_core/gc_functions.py ================================================================== --- gc_core/py/lang_core/gc_functions.py +++ gc_core/py/lang_core/gc_functions.py @@ -274,11 +274,11 @@ def g_meta (dToken, sType): "returns True if is equal to the token type" return dToken["sType"] == sType -def g_space_between_tokens (dToken1, dToken2, nMin, nMax=None): +def g_space (dToken1, dToken2, nMin, nMax=None): "checks if spaces between tokens is >= and <= " nSpace = dToken2["nStart"] - dToken1["nEnd"] if nSpace < nMin: return False if nMax is not None and nSpace > nMax: Index: gc_lang/fr/rules.grx ================================================================== --- gc_lang/fr/rules.grx +++ gc_lang/fr/rules.grx @@ -1703,27 +1703,27 @@ !!! !!! __tag_mots_entre_guillemets__ « [*WORD|*WORDELD] » - <<- space_after(\1, 0, 1) and space_after(\2, 0, 1) /2>> eg1mot + <<- space(\1, 0, 1) and space(\2, 0, 1) /2>> eg1mot « [*WORD|*WORDELD] [*WORD|*WORDELD] - <<- space_after(\1, 0, 1) /2:0>> egxmot + <<- space(\1, 0, 1) /2:0>> egxmot [*WORD|*WORDELD] [*WORD|*WORDELD] » - <<- space_after(\2, 0, 1) /1:2>> egxmot + <<- space(\2, 0, 1) /1:2>> egxmot [“|”|"] [*WORD|*WORDELD] [“|”|"] [‘|'|’|`] [*WORD|*WORDELD] [‘|'|’|`] - <<- space_after(\1, 0, 0) and space_after(\2, 0, 0) /2>> eg1mot + <<- space(\1, 0, 0) and space(\2, 0, 0) /2>> eg1mot ["|“|”] [*WORD|*WORDELD] *[*WORD|*WORDELD] - <<- space_after(\1, 0, 0) /2:0>> egxmot + <<- space(\1, 0, 0) /2:0>> egxmot [*WORD|*WORDELD] [*WORD|*WORDELD] ["|“|”] - <<- space_after(\2, 0, 0) /1:2>> egxmot + <<- space(\2, 0, 0) /1:2>> egxmot __purge_guillemets__ [«|»|“|”|"|„|`] <<- ~>> * @@ -1756,18 +1756,18 @@ <<- ->> […] && Pour indiquer une troncature de texte, on utilise usuellement des crochets. <<- ~>> * ( [re|ré] ) *WORD [ [re|ré] ] *WORD - <<- space_after(\3, 0, 0) ~1:3>> * + <<- space(\3, 0, 0) ~1:3>> * [ *NUM ] [ … ] <<- ~>> * ** [ *WORD ] ** - <<- space_after(\1, 1, 3) and space_after(\-2, 1, 3) >>> + <<- space(\1, 1, 3) and space(\-2, 1, 3) >>> <<- morph(\3, ":G") ~2:4>> |\2| <<- __else__ ~2:4>> * ## chapitres, références ( [*WORD|*NUM] , *NUM ) @@ -1835,11 +1835,11 @@ TEST: ceci, cela{{, …}} ->> … __virg_virgule_après_point__ *WORD . , - <<- /virg/ space_after(\1, 0, 0) and space_after(\2, 0, 0) + <<- /virg/ space(\1, 0, 0) and space(\2, 0, 0) and not value(\1, "|etc|fig|hab|litt|fig|hab|litt|circ|coll|ref|réf|étym|suppl|bibl|bibliogr|cit|vol|déc|nov|oct|janv|juil|avr|sept|pp|") and \1.__len__() > 1 -2:3>> ,|. && Pas de virgule après un point (sauf éventuellement après une abréviation). TEST: Les chiens, les chats{{.,}} les poules. ->> ,|. @@ -2657,11 +2657,11 @@ <<- ~>> ␣ <<- =>> setmeta(\1, "WORD") [ [m|t|s] ] [a|on|es] [ [n|v] ] [otre|ôtre] - <<- space_after(\1, 0, 0) and space_after(\2, 0, 0) and space_after(\3, 0, 0) ~>> ␣\2\4 + <<- space(\1, 0, 0) and space(\2, 0, 0) and space(\3, 0, 0) ~>> ␣\2\4 <<- =>> setmeta(\1, "WORD") TEST: [s]es {{homme}} ->> hommes TEST: des effets sur [s]es états d’âme, [s]on corps @@ -2704,14 +2704,14 @@ terra incognita statu quo <<- ~>> ␣ *NUM : *NUM - <<- space_after(\1, 0, 0) and space_after(\1, 0, 0) ~>> ␣ + <<- space(\1, 0, 0) and space(\1, 0, 0) ~>> ␣ *NUM ~^h[0-9][0-9]$ - <<- space_after(\1, 0, 0) ~>> ␣ + <<- space(\1, 0, 0) ~>> ␣ cul et chemise mari et femme père et mère papa et maman @@ -2726,11 +2726,11 @@ TEST: iels étaient mari et femme __fusions_noms_communs_séparés_slash__ *WORD / *WORD - <<- space_after(\1, 0, 1) and space_after(\2, 0, 1) and morph(\1, ":N") and morph(\-1, ":N") and not (morph(\1, "[123][sp]") and morph(<1, ":O[vs]")) ~>> ␣ + <<- space(\1, 0, 1) and space(\2, 0, 1) and morph(\1, ":N") and morph(\-1, ":N") and not (morph(\1, "[123][sp]") and morph(<1, ":O[vs]")) ~>> ␣ <<- __also__ =>> define(\1, ":N:e:i") TEST: Elle peut se cacher / rendre visible par le petit “+” au-dessus. @@ -3553,11 +3553,11 @@ # virgules __ocr_virgules__ [il|le|la|l’|les|de|d’|ne|n’|me|m’|te|t’|se|s’|à|ce|cet|cette|mon|ma|ta|sa|mes|tes|ses|nos|vos|quelque|quelques|au|aux] , - <<- /ocr/ space_after(\1, 0, 0) and not \1.isupper() or value(\1, "|à|") ->> \1 && Erreur de numérisation ? Virgule superflue ? + <<- /ocr/ space(\1, 0, 0) and not \1.isupper() or value(\1, "|à|") ->> \1 && Erreur de numérisation ? Virgule superflue ? TEST: __ocr__ Pierre entre pour {{se,}} rapprocher de L TEST: __ocr__ je voudrais faire une question ou deux sur une maison de ce village, la… comment l’appelle-t-on ? @@ -4005,11 +4005,11 @@ # M. / Mr / M __ocr_mr__ M , /_Tit_ - <<- /ocr/ space_after(\1, 0, 1) -1:2>> "Mr |M. " && Erreur de numérisation ? + <<- /ocr/ space(\1, 0, 1) -1:2>> "Mr |M. " && Erreur de numérisation ? M /_Tit_ <<- /ocr/ -1>> "Mr |M. " && Erreur de numérisation ? TEST: __ocr__ {{M,}} Patrick nous a oubliés. @@ -4439,21 +4439,21 @@ !! # élisions __eleu_élisions_manquantes__ [le|la|de] ~^[aâeéèêiîoôuûyœæh]. - <<- /eleu/ space_after(\1, 1, 1) and not re.search("(?i)^(?:I(?:I|V|X|er|ᵉʳ|ʳᵉ|è?re))", \2) and morph(\2, ":", ":G|;é") + <<- /eleu/ space(\1, 1, 1) and not re.search("(?i)^(?:I(?:I|V|X|er|ᵉʳ|ʳᵉ|è?re))", \2) and 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] - <<- /eleu/ 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(\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] - <<- /eleu/ 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(\1, 1, 1) -1:.2>> qu’ && Il faut élider “que” et l’accoler au pronom.|http://fr.wikipedia.org/wiki/Élision [je|ne|me|te|se] ~^[aâeéèêiîoôuûyœæh]. - <<- /eleu/ not \1.isupper() and space_after(\1, 1, 1) and morph(\2, ":V", ":Q|;é") + <<- /eleu/ not \1.isupper() and space(\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’ @@ -4909,14 +4909,14 @@ <<- =>> setmeta(\1, "DATE") __date_jour_mois_année__ 31 [avril|juin|septembre|novembre] - <<- /date/ space_after(\1, 1, 1) ->> 30 \2 && Cette date est invalide. Il n’y a que 30 jours en \2. + <<- /date/ space(\1, 1, 1) ->> 30 \2 && Cette date est invalide. Il n’y a que 30 jours en \2. [30|31] février - <<- /date/ space_after(\1, 1, 1) ->> 28 février|29 février && Cette date est invalide. Il n’y a que 28 ou 29 jours en février. + <<- /date/ space(\1, 1, 1) ->> 28 février|29 février && Cette date est invalide. Il n’y a que 28 ou 29 jours en février. ~^\d\d?$ [janvier|février|mars|avril|mai|juin|juillet|aout|août|septembre|octobre|novembre|décembre] ~^\d{2,5}$ <<- /date/ not checkDate(\1, \2, \3) ->> _ && Cette date est invalide. TEST: le {{31 avril}} @@ -5087,11 +5087,11 @@ [macro|magnéto|micro|paléo|rétro|rhino|stéréo] *WORD <<- /tu/ analyse_with_next(\1, "-", ":") ->> \1-\2 && S’il s’agit d’un seul mot, il manque un trait d’union. [électro|ferro|hydro|labio|médico|nano|néo|neuro|physico|politico|sino|socio] *WORD - <<- /tu/ space_after(\1, 1, 1) and (morph(\2, ":N") or analyse_with_next(\1, "-", ":")) + <<- /tu/ space(\1, 1, 1) and (morph(\2, ":N") or analyse_with_next(\1, "-", ":")) ->> \1-\2 && S’il s’agit d’un seul mot, il manque un trait d’union. TEST: {{ferro électrique}} ->> ferro-électrique TEST: {{rétro ingénierie}}. ->> rétro-ingénierie @@ -5676,11 +5676,11 @@ # est-ce … ? __tu_est_ce__ est ce @:¬:N.*:[me]:[si]|>qui/ - <<- /tu/ morph(<1, ":Cs|") and space_after(\1, 1, 1) -1:2>> est-ce && S’il s’agit d’une interrogation, il manque un trait d’union. + <<- /tu/ morph(<1, ":Cs|") and space(\1, 1, 1) -1:2>> est-ce && S’il s’agit d’une interrogation, il manque un trait d’union. TEST: {{est ce}} que c’est grave ? ->> est-ce TEST: qu’{{est ce}} que c’est ? ->> est-ce TEST: elles reviendront, {{n’est ce pas}} ? TEST: nous en sommes à l’étape où nous voulons définir ce qu’est ce projet @@ -5985,24 +5985,24 @@ __inte_union_nous1!7__ [ne|n’] ?[le|la|l’|les|en|me|m’|te|t’|se|s’|nous|vous|lui|leur|y]¿ ~ons$ nous [ne|n’] [me|m’|te|t’|se|s’|nous|vous] [le|la|l’|les|en|y] ~ons$ nous [ne|n’] [le|la|l’|les] [lui|leur|en|y] ~ons$ nous [ne|n’] [lui|leur|y] en ~ons$ nous - <<- /inte/ space_after(\-2, 1, 1) and morph(\-2, ":V.*:1p", ":[GW]") and not tagbefore(\1, "_1p_") + <<- /inte/ space(\-2, 1, 1) and morph(\-2, ":V.*:1p", ":[GW]") and not tagbefore(\1, "_1p_") --2:-1>> \-2-\-1 && Forme interrogative ? Mettez un trait d’union. , ~ons$ nous [|,|)] , ~ons$ nous @:¬:(?:1p|Y) - <<- /inte/ space_after(\2, 1, 1) and morph(\2, ":V.*:1p", ":[GW]") and not value(\2, "|veuillons|sachons|") + <<- /inte/ space(\2, 1, 1) and morph(\2, ":V.*:1p", ":[GW]") and not value(\2, "|veuillons|sachons|") -2:3>> \2-\3 && Forme interrogative ? Mettez un trait d’union. ~ons nous - <<- /inte/ space_after(\2, 1, 1) and morph(\2, ":V.*:1p", ":[GW]") and not value(\2, "|veuillons|sachons|allons|venons|partons|") + <<- /inte/ space(\2, 1, 1) and morph(\2, ":V.*:1p", ":[GW]") and not value(\2, "|veuillons|sachons|allons|venons|partons|") -2:3>> \2-\3 && Forme interrogative ? Mettez un trait d’union. [comment|pourquoi|combien|que|qu’|quoique|quoiqu’|où|puis|quand|qui] ~ons nous - <<- /inte/ space_after(\2, 1, 1) and morph(\2, ":V.*:1p", ":[GW]") and not value(\2, "|veuillons|sachons|") + <<- /inte/ space(\2, 1, 1) and morph(\2, ":V.*:1p", ":[GW]") and not value(\2, "|veuillons|sachons|") -2:3>> \2-\3 && Forme interrogative ? Mettez un trait d’union. TEST: n’y {{retrouverons nous}} jamais la tranquilité ? TEST: pourquoi n’en {{entendons nous}} jamais parler ? TEST: que {{pouvons nous}} dans cette vie @@ -6019,24 +6019,24 @@ __inte_union_vous1!7__ [ne|n’] ?[le|la|l’|les|en|me|m’|te|t’|se|s’|nous|vous|lui|leur|y]¿ ~ez$ vous [ne|n’] [me|m’|te|t’|se|s’|nous|vous] [le|la|l’|les|en|y] ~ez$ vous [ne|n’] [le|la|l’|les] [lui|leur|en|y] ~ez$ vous [ne|n’] [lui|leur|y] en ~ez$ vous - <<- /inte/ space_after(\-2, 1, 1) and morph(\-2, ":V.*:2p", ":[GW]") and not tagbefore(\1, "_2p_") + <<- /inte/ space(\-2, 1, 1) and morph(\-2, ":V.*:2p", ":[GW]") and not tagbefore(\1, "_2p_") --2:-1>> \-2-\-1 && Forme interrogative ? Mettez un trait d’union. , ~ez$ vous [|,|)] , ~ez$ vous @:¬:(?:2p|Y) - <<- /inte/ space_after(\2, 1, 1) and morph(\2, ":V.*:2p", ":[GW]") and not value(\2, "|veuillez|sachez|") + <<- /inte/ space(\2, 1, 1) and morph(\2, ":V.*:2p", ":[GW]") and not value(\2, "|veuillez|sachez|") -2:3>> \2-\3 && Forme interrogative ? Mettez un trait d’union. ~ez$ vous - <<- /inte/ space_after(\2, 1, 1) and morph(\2, ":V.*:2p", ":[GW]") and not value(\2, "|veuillez|sachez|allez|venez|partez|") + <<- /inte/ space(\2, 1, 1) and morph(\2, ":V.*:2p", ":[GW]") and not value(\2, "|veuillez|sachez|allez|venez|partez|") -2:3>> \2-\3 && Forme interrogative ? Mettez un trait d’union. [comment|pourquoi|combien|que|qu’|quoique|quoiqu’|où|puis|quand|qui] ~ez$ vous - <<- /inte/ space_after(\2, 1, 1) and morph(\2, ":V.*:2p", ":[GW]") and not value(\2, "|veuillez|sachez|") + <<- /inte/ space(\2, 1, 1) and morph(\2, ":V.*:2p", ":[GW]") and not value(\2, "|veuillez|sachez|") -2:3>> \2-\3 && Forme interrogative ? Mettez un trait d’union. TEST: ne {{soutiendrez vous}} pas cette proposition ? TEST: n’en {{voulez vous}} jamais à ces gens ? TEST: je suis, {{penserez vous}}, un imbécile. @@ -6084,11 +6084,11 @@ !!!! Apostrophe manquante (2) !! __typo_apostrophe_manquante_audace__ [L|D|S|N|C|J|M|T|Ç] ~^[aeéiouhAEÉIOUHyîèêôûYÎÈÊÔÛ] - <<- /mapos/ space_after(\2, 1, 1) -2:.3>> =\2+"’" && Il manque peut-être une apostrophe. + <<- /mapos/ space(\2, 1, 1) -2:.3>> =\2+"’" && Il manque peut-être une apostrophe. TEST: __mapos__ {{L }}opinion des gens, elle s’en moquait. @@ -7590,11 +7590,11 @@ TEST: de l’{{arrivait}} [de|d’] le *WORD - <<- /conf/ space_after(\1, 0, 1) and morph(\3, ":[NAQ].*:[me]", ":[YG]") and not \3.istitle() + <<- /conf/ space(\1, 0, 1) and morph(\3, ":[NAQ].*:[me]", ":[YG]") and not \3.istitle() and not (value(\3, "|mal|") and morph(>1, ":Y")) -1:2>> du && Incohérence avec « \1 \2 » : “\3” est un nom ou un adjectif. <<- /conf/ morph(\3, ":[123][sp]") -3>> =suggVerbInfi(\3) && Incohérence avec « \1 \2 » : “\3” est une forme verbale conjuguée. TEST: {{de le}} vin ->> du TEST: il n’est pas interdit de le {{pensait}} @@ -9190,11 +9190,11 @@ sa [|,|)] <<- /conf/ \1 != "SA" -1>> ça && Confusion probable : “sa” est un déterminant féminin singulier. Pour l’équivalent de “cela” ou “ceci”, écrivez “ça”. [c’|ç’] [à|a] - <<- /conf/ space_after(\1, 0, 0) and not (value(\2, "|a|") and value(>1, "|été|")) >>> + <<- /conf/ space(\1, 0, 0) and not (value(\2, "|a|") and value(>1, "|été|")) >>> <<- /conf/ value(>1, "|été|") -2>> a && Confusion. Pour le verbe avoir à la 3ᵉ personne du singulier, écrivez “a”. <<- /conf/ __else__ ->> ça|sa && Confusion. Si vous voulez dire “cela”, écrivez “ça”. Pour le déterminant possessif, écrivez “sa”. ça et là <<- /conf/ not morph(<1, ":R") ->> çà et là && Confusion : “ça” équivaut à “cela”. Dans l’expression “çà et là”, le terme “çà” signifie “ici”. @@ -11184,11 +11184,11 @@ ~-ont$ <<- /conf/ ->> =\1[:-1] && Incohérence : le mot “ont” est une forme conjuguée du verbe “avoir” (par exemple : “ils ont”). Pour le pronom, écrivez “on”. [|,|(] *WORD ont - <<- /conf/ space_after(\2, 1, 1) and not value(\2, "|soit|") and morph(\2, ":3s") and not (tag(\-1, "eg1mot") and morph(\2, ">écrire/")) + <<- /conf/ space(\2, 1, 1) and not value(\2, "|soit|") and morph(\2, ":3s") and not (tag(\-1, "eg1mot") and morph(\2, ">écrire/")) -2:3>> \2-on && Confusion probable : le mot “ont” est une forme conjuguée du verbe “avoir”. Pour le pronom, écrivez “on” et mettez un trait d’union puisqu’il s’agit d’une question. TEST: il m’assure qu’{{ont}} ne sait pas s’y prendre TEST: {{ont}} m’assure qu’il n’y en a pas. TEST: {{Ont}} n’arrive pas à s’en sortir. @@ -17897,11 +17897,11 @@ Amérique du [Nord|Sud] Amérique centrale <<- ~2:0>> * @:M[12] *WORD - <<- \2.istitle() and space_after(\1, 1, 1) or re.search("^[MDCLXVI]+$", \2) ~2:0>> * + <<- \2.istitle() and space(\1, 1, 1) or re.search("^[MDCLXVI]+$", \2) ~2:0>> * @:M[12] [Ier|Iᵉʳ] <<- \2.istitle() ~2:0>> * @:M[12] [Le|La|von|van|Mac|Mc|De|Du|D’] *WORD @@ -20991,11 +20991,11 @@ [>être|>demeurer|>déménager|>habiter|>trouver|>situer|>rester|>demeurer|>demeure|>vivre] à [quelques|plusieurs|maintes|*NUM|$:B:e:p] [lieux|lieus] <<- /conf/ --1>> lieues && Confusion probable. Pour désigner une distance, écrivez “lieues”.|https://fr.wiktionary.org/wiki/lieue [>être|>demeurer|>déménager|>habiter|>trouver|>situer|>rester|>demeurer|>demeure|>vivre] à des [lieux|lieus] - <<- /conf/ space_after(\2, 1, 4) --1>> lieues && Confusion probable. Pour désigner une distance, écrivez “lieues”.|https://fr.wiktionary.org/wiki/lieue + <<- /conf/ space(\2, 1, 4) --1>> lieues && Confusion probable. Pour désigner une distance, écrivez “lieues”.|https://fr.wiktionary.org/wiki/lieue *NUM >lieu sous [la|les] >mer $:B:e:p >lieu sous [la|les] >mer <<- /conf/ -2>> lieues && Confusion. Pour désigner une distance, écrivez “lieue”.|https://fr.wiktionary.org/wiki/lieue @@ -21355,11 +21355,11 @@ # peu / peux / peut __conf_peut_peux_peu2__ [peux|peut] [de|d’] @:[NA]¬* - <<- /conf/ not value(<1, "|je|tu|il|elle|on|ne|n’|") and space_after(\1, 1, 3) -1>> peu && Confusion probable : “\1” est une forme conjuguée de “pouvoir”, écrivez “peu” pour dire “pas beaucoup”. + <<- /conf/ not value(<1, "|je|tu|il|elle|on|ne|n’|") and space(\1, 1, 3) -1>> peu && Confusion probable : “\1” est une forme conjuguée de “pouvoir”, écrivez “peu” pour dire “pas beaucoup”. TEST: {{peut}} d’hommes savent comment s’y prendre TEST: peu d’argent TEST: il peut de façon crédible avancer qu’il veut tout faire sauter @@ -21446,14 +21446,14 @@ # peut-être / peut être __conf_peut_être2__ *WORD peut être - <<- /conf/ space_after(\2, 1, 1) and morph(\1, ":V", ":[NAQGM]") -2:3>> peut-être && Confusion probable. Pour dire “possiblement”, écrivez “peut-être”. + <<- /conf/ space(\2, 1, 1) and morph(\1, ":V", ":[NAQGM]") -2:3>> peut-être && Confusion probable. Pour dire “possiblement”, écrivez “peut-être”. peut être - <<- /conf/ space_after(\2, 1, 1) -2:3>> peut-être && Confusion probable. Pour dire “possiblement”, écrivez “peut-être”. + <<- /conf/ space(\2, 1, 1) -2:3>> peut-être && Confusion probable. Pour dire “possiblement”, écrivez “peut-être”. TEST: {{Peut être}} qu’on en saura plus demain. TEST: Ils vont {{peut être}} enfin faire quelque chose de leur misérable existence. TEST: L’un peut être réglé immédiatement TEST: Réussir peut parfois être la pire chose possible. @@ -21552,11 +21552,11 @@ # quand même / comme même __conf_quand_même__ comme même [|,|)] comme même @:(?:Os|C) - <<- /conf/ space_after(\1, 1, 1) -1:2>> quand même && Confusion probable.|https://fr.wiktionary.org/wiki/quand_m%C3%AAme + <<- /conf/ space(\1, 1, 1) -1:2>> quand même && Confusion probable.|https://fr.wiktionary.org/wiki/quand_m%C3%AAme TEST: {{comme même}} il y va fort, le saligaud ! TEST: La météo disait qu’il ferait beau temps, mais il pleut {{comme même}}… @@ -23398,15 +23398,15 @@ TEST: Cent quarante-neuvième épisode __gn_nombre_chiffres_1m__ [0|1|01] @:[NAQ].*:p¬* - <<- /gn/ space_after(\1, 1, 1) and not value(\2, "|Rois|Corinthiens|Thessaloniciens|") and not (value(<1, "|à|") and meta(<2, "NUM")) + <<- /gn/ space(\1, 1, 1) and not value(\2, "|Rois|Corinthiens|Thessaloniciens|") and not (value(<1, "|à|") and meta(<2, "NUM")) -2>> =suggSing(\2) && Accord de nombre erroné avec « \1 » : « \2 » devrait être au singulier. *NUM *WORD - <<- /gn/ space_after(\1, 1, 1) and not value(<1, "|/|") and not re.search("^0*[01](?:[,.][0-9]+|)$", \1) and morph(\2, ":[NA].*:s", "*") and not morph(<1, ":(?:N|D.*:s)") + <<- /gn/ space(\1, 1, 1) and not value(<1, "|/|") and not re.search("^0*[01](?:[,.][0-9]+|)$", \1) and morph(\2, ":[NA].*:s", "*") and not morph(<1, ":(?:N|D.*:s)") and not value(\2, "|maximum|minimum|multiplié|divisé|janvier|février|mars|avril|mai|juin|juillet|août|aout|septembre|octobre|novembre|décembre|rue|route|ruelle|place|boulevard|avenue|allée|chemin|sentier|square|impasse|cour|quai|chaussée|côte|vendémiaire|brumaire|frimaire|nivôse|pluviôse|ventôse|germinal|floréal|prairial|messidor|thermidor|fructidor|") -2>> =suggPlur(\2) && Accord de nombre erroné avec « \1 » : « \2 » devrait être au pluriel. *NUM *WORD *WORD <<- /gn/ not value(\2, "|maximum|minimum|fois|multiplié|divisé|janvier|février|mars|avril|mai|juin|juillet|août|aout|septembre|octobre|novembre|décembre|rue|route|ruelle|place|boulevard|avenue|allée|chemin|sentier|square|impasse|cour|quai|chaussée|côte|vendémiaire|brumaire|frimaire|nivôse|pluviôse|ventôse|germinal|floréal|prairial|messidor|thermidor|fructidor|") @@ -24802,11 +24802,11 @@ #### Infinitif après “à” __infi_à_verbe__ à le ~..(?:ée?s?|ez|ai[st]?)$ à les ~..(?:ée?s?|ez|ai[st]?)$ - <<- /infi/ \-1.islower() and space_after(\1, 1, 1) and morph(\-1, ":V", ":[YM]" ) + <<- /infi/ \-1.islower() and space(\1, 1, 1) and morph(\-1, ":V", ":[YM]" ) --1>> =suggVerbInfi(\-1) && Erreur probable. Après le pronom “à”, le verbe devrait être à l’infinitif. à [la|l’|leur] ~..(?:ée?s?|ez|ai[st]?)$ <<- /infi/ \-1.islower() and morph(\-1, ":V", ":[NYM]" ) --1>> =suggVerbInfi(\-1) && Erreur probable. Après le pronom “à”, le verbe devrait être à l’infinitif. @@ -25290,11 +25290,11 @@ TEST: rien d’autre à faire que lui {{donnait}} à manger ->> donner __infi_nous_vous_verbe__ [nous|vous] ~ée?s?$ - <<- /infi/ space_after(\1, 1, 3) and morph(\2, ":Q") and not morph(<1, "V0.*[12]p") -2>> _ && Après “\1”, le verbe ne devrait pas être un participe passé. + <<- /infi/ space(\1, 1, 3) and morph(\2, ":Q") and not morph(<1, "V0.*[12]p") -2>> _ && Après “\1”, le verbe ne devrait pas être un participe passé. TEST: oui, pourquoi pas, puisque nous {{intéressé}} à la question ne suffit pas à faire de nous des experts. TEST: il faut croire que vous {{mangé}} ne nous nourrirait guère TEST: Sommes-nous désespérés à ce point ? TEST: Vous d’habitude si réservée. @@ -25766,20 +25766,20 @@ __conf_conjonction_sujet_à_vinfi__ [lorsque|lorsqu’|puisque|puisqu’|quoique|quoiqu’|quand|auquel|auxquels|auxquelles|lequel|laquelle|lesquels|lesquelles|duquel|desquels|desquelles] || $:M à @:V1.*:Y [|)] [lorsque|lorsqu’|puisque|puisqu’|quoique|quoiqu’|quand|auquel|auxquels|auxquelles|lequel|laquelle|lesquels|lesquelles|duquel|desquels|desquelles] || $:M à @:V1.*:Y , [je|tu|il|elle|iel|on|c’|nous|vous|ils|elles|iels] - <<- /conf/ space_after(\3, 1, 1) -3:4>> ="a "+suggVerbPpas(\4, ":m:s") + <<- /conf/ space(\3, 1, 1) -3:4>> ="a "+suggVerbPpas(\4, ":m:s") && Confusion probable. Si « \2 » est bien le sujet de l’action « \4 », vous confondez la préposition « à » avec « a » (forme conjuguée de « avoir ») et l’infinitif avec le participe passé (avec lesquels écrire un passé composé). Exemple : « il a réparé l’une des machines à réparer ». <<- /conf/ __else__ -3>> a && Confusion probable. Si « \2 » est bien le sujet de l’action « \4 », vous confondez la préposition « à » avec « a » (forme conjuguée de « avoir ») et l’infinitif avec le participe passé (avec lesquels écrire un passé composé). Exemple : « il a réparé l’une des machines à réparer ». <<- /conf/ __also__ -4>> =suggVerbPpas(\4, ":m:s") && Confusion probable. Si « \2 » est bien le sujet de l’action « \4 », vous confondez la préposition « à » avec « a » (forme conjuguée de « avoir ») et l’infinitif avec le participe passé (avec lesquels écrire un passé composé). Exemple : « il a réparé l’une des machines à réparer ». [|,|dont|que|qu’|lorsque|lorsqu’|puisque|puisqu’|quoique|quoiqu’|quand|auquel|auxquels|auxquelles|lequel|laquelle|lesquels|lesquelles|duquel|desquels|desquelles] || $:M [lui|nous|vous] à @:V1.*:Y - <<- /conf/ space_after(\4, 1, 1) -4:5>> ="a "+suggVerbPpas(\5, ":m:s") + <<- /conf/ space(\4, 1, 1) -4:5>> ="a "+suggVerbPpas(\5, ":m:s") && Confusion probable. Si « \2 » est bien le sujet de l’action « \5 », vous confondez la préposition « à » avec « a » (forme conjuguée de « avoir ») et l’infinitif avec le participe passé (avec lesquels écrire un passé composé). Exemple : « il a réparé l’une des machines à réparer ». <<- /conf/ __else__ -4>> a && Confusion probable. Si « \2 » est bien le sujet de l’action « \5 », vous confondez la préposition « à » avec « a » (forme conjuguée de « avoir ») et l’infinitif avec le participe passé (avec lesquels écrire un passé composé). Exemple : « il a réparé l’une des machines à réparer ». <<- /conf/ __also__ -5>> =suggVerbPpas(\5, ":m:s") && Confusion probable. Si « \2 » est bien le sujet de l’action « \5 », vous confondez la préposition « à » avec « a » (forme conjuguée de « avoir ») et l’infinitif avec le participe passé (avec lesquels écrire un passé composé). Exemple : « il a réparé l’une des machines à réparer ». @@ -25786,20 +25786,20 @@ [lorsque|lorsqu’|puisque|puisqu’|quoique|quoiqu’|quand|auquel|auxquels|auxquelles|lequel|laquelle|lesquels|lesquelles|duquel|desquels|desquelles] || @:D.*:s @:[NA].*:[si] à @:V1.*:Y [|)] [lorsque|lorsqu’|puisque|puisqu’|quoique|quoiqu’|quand|auquel|auxquels|auxquelles|lequel|laquelle|lesquels|lesquelles|duquel|desquels|desquelles] || @:D.*:s @:[NA].*:[si] à @:V1.*:Y , [je|tu|il|elle|iel|on|c’|nous|vous|ils|elles|iels] - <<- /conf/ space_after(\4, 1, 1) -4:5>> ="a "+suggVerbPpas(\5, ":m:s") + <<- /conf/ space(\4, 1, 1) -4:5>> ="a "+suggVerbPpas(\5, ":m:s") && Confusion probable. Si « \2 \3 » est bien le sujet de l’action « \5 », vous confondez la préposition « à » avec « a » (forme conjuguée de « avoir ») et l’infinitif avec le participe passé (avec lesquels écrire un passé composé). Exemple : « il a réparé l’une des machines à réparer ». <<- /conf/ __else__ -4>> a && Confusion probable. Si « \2 \3 » est bien le sujet de l’action « \5 », vous confondez la préposition « à » avec « a » (forme conjuguée de « avoir ») et l’infinitif avec le participe passé (avec lesquels écrire un passé composé). Exemple : « il a réparé l’une des machines à réparer ». <<- /conf/ __also__ -5>> =suggVerbPpas(\5, ":m:s") && Confusion probable. Si « \2 \3 » est bien le sujet de l’action « \5 », vous confondez la préposition « à » avec « a » (forme conjuguée de « avoir ») et l’infinitif avec le participe passé (avec lesquels écrire un passé composé). Exemple : « il a réparé l’une des machines à réparer ». [|,|dont|que|qu’|lorsque|lorsqu’|puisque|puisqu’|quoique|quoiqu’|quand|auquel|auxquels|auxquelles|lequel|laquelle|lesquels|lesquelles|duquel|desquels|desquelles] || @:D.*:s @:[NA].*:[si] [lui|nous|vous] à @:V1.*:Y - <<- /conf/ space_after(\5, 1, 1) -5:6>> ="a "+suggVerbPpas(\6, ":m:s") + <<- /conf/ space(\5, 1, 1) -5:6>> ="a "+suggVerbPpas(\6, ":m:s") && Confusion probable. Si « \2 \3 » est bien le sujet de l’action « \6 », vous confondez la préposition « à » avec « a » (forme conjuguée de « avoir ») et l’infinitif avec le participe passé (avec lesquels écrire un passé composé). Exemple : « il a réparé l’une des machines à réparer ». <<- /conf/ __else__ -5>> a && Confusion probable. Si « \2 \3 » est bien le sujet de l’action « \6 », vous confondez la préposition « à » avec « a » (forme conjuguée de « avoir ») et l’infinitif avec le participe passé (avec lesquels écrire un passé composé). Exemple : « il a réparé l’une des machines à réparer ». <<- /conf/ __also__ -6>> =suggVerbPpas(\6, ":m:s") && Confusion probable. Si « \2 \3 » est bien le sujet de l’action « \6 », vous confondez la préposition « à » avec « a » (forme conjuguée de « avoir ») et l’infinitif avec le participe passé (avec lesquels écrire un passé composé). Exemple : « il a réparé l’une des machines à réparer ». @@ -29012,27 +29012,27 @@ !! # Confusions __imp_confusion_2e_pers_pluriel__ [|,|(] *WORD moi - <<- /imp/ space_after(\2, 1, 1) and morph(\2, ":(?:V1.*:[YQ]|Iq.*:[123]s)") + <<- /imp/ space(\2, 1, 1) and morph(\2, ":(?:V1.*:[YQ]|Iq.*:[123]s)") -2:3>> =suggVerbTense(\2, ":E", ":2p") + "-" + \3 && Confusion probable. Pour l’impératif, écrivez : [|,|(] *WORD la *WORD - <<- /imp/ space_after(\2, 1, 1) and morph(\2, ":(?:V1.*:[YQ]|Iq.*:[123]s)") and morph(\4, ":[ORC]", ":[NA]|>plupart/") + <<- /imp/ space(\2, 1, 1) and morph(\2, ":(?:V1.*:[YQ]|Iq.*:[123]s)") and morph(\4, ":[ORC]", ":[NA]|>plupart/") -2:3>> =suggVerbTense(\2, ":E", ":2p") + "-" + \3 && Confusion probable. Pour l’impératif, écrivez : [|,|(] *WORD [le|les|leur] *WORD - <<- /imp/ space_after(\2, 1, 1) and morph(\2, ":(?:V1.*:[YQ]|Iq.*:[123]s)") and morph(\4, ":[ORC]", ":[NA]") + <<- /imp/ space(\2, 1, 1) and morph(\2, ":(?:V1.*:[YQ]|Iq.*:[123]s)") and morph(\4, ":[ORC]", ":[NA]") -2:3>> =suggVerbTense(\2, ":E", ":2p") + "-" + \3 && Confusion probable. Pour l’impératif, écrivez : [|,|(] *WORD [lui|nous|vous] *WORD - <<- /imp/ space_after(\2, 1, 1) and morph(\2, ":(?:V1.*:[YQ]|Iq.*:[123]s)") and morph(\4, ":[ORCD]", ":Y") + <<- /imp/ space(\2, 1, 1) and morph(\2, ":(?:V1.*:[YQ]|Iq.*:[123]s)") and morph(\4, ":[ORCD]", ":Y") -2:3>> =suggVerbTense(\2, ":E", ":2p") + "-" + \3 && Confusion probable. Pour l’impératif, écrivez : [|,|(|et|ou] *WORD [les|le|la|lui|nous|vous|leur] [|,|)] - <<- /imp/ space_after(\2, 1, 1) and morph(\2, ":(?:V1.*:[YQ]|Iq.*:[123]s)") + <<- /imp/ space(\2, 1, 1) and morph(\2, ":(?:V1.*:[YQ]|Iq.*:[123]s)") -2:3>> =suggVerbTense(\2, ":E", ":2p") + "-" + \3 && Confusion probable. Pour l’impératif, écrivez : TEST: {{Donner moi}} une chance ->> Donnez-moi TEST: {{donner la}} et oublie-moi. ->> donnez-la|||là TEST: {{prenait les}} ou volez-les ->> prenez-les @@ -29209,16 +29209,16 @@ !! !! __imp_union_moi__ *WORD moi - <<- /imp/ space_after(\1, 1, 1) + <<- /imp/ space(\1, 1, 1) and morph(\1, ":E", ":[GM]|>(?:venir|aller|partir)/") and not value(<1, "|de|d’|le|la|les|l’|je|j’|me|m’|te|t’|se|s’|nous|vous|lui|leur|") ->> \1-\2 && S’il s’agit d’un impératif, mettez un trait d’union.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=4206 [|,|(] *WORD moi - <<- /imp/ space_after(\2, 1, 1) and morph(\2, ":V(?:1.*:Ip.*:2s|[23].*:Ip.*:3s)", ":[GM]|>(?:venir|aller|partir)/") + <<- /imp/ space(\2, 1, 1) and morph(\2, ":V(?:1.*:Ip.*:2s|[23].*:Ip.*:3s)", ":[GM]|>(?:venir|aller|partir)/") -2:3>> =suggVerbTense(\2, ":E", ":2s")+"-moi" && S’il s’agit d’un impératif, mettez un trait d’union.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=4206 TEST: {{Apporte moi}} ce dictionnaire. ->> Apporte-moi TEST: {{Apportez moi}} ce dictionnaire TEST: tu me dois bien ça, {{Achèves moi}}, je t’en prie. @@ -29227,54 +29227,54 @@ TEST: je suis moi et tu es toi. __imp_union_toi__ *WORD toi - <<- /imp/ space_after(\1, 1, 1) + <<- /imp/ space(\1, 1, 1) and morph(\1, ":E:2s", ":[GM]|>(?:venir|aller|partir)/") and not value(<1, "|de|d’|le|la|les|l’|me|m’|te|t’|se|s’|nous|vous|lui|leur|") ->> \1-\2 && S’il s’agit d’un impératif, mettez un trait d’union.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=4206 [|,|(] *WORD toi - <<- /imp/ space_after(\2, 1, 1) and morph(\2, ":V(?:1.*:Ip.*:2s|[23].*:Ip.*:3s)", ":[GM]|>(?:venir|aller|partir)/") + <<- /imp/ space(\2, 1, 1) and morph(\2, ":V(?:1.*:Ip.*:2s|[23].*:Ip.*:3s)", ":[GM]|>(?:venir|aller|partir)/") -2:3>> =suggVerbTense(\2, ":E", ":2s")+"-toi" && S’il s’agit d’un impératif, mettez un trait d’union.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=4206 TEST: {{Donne toi}} du temps. TEST: j’en ai marre, {{instruit toi}} avant de parler. __imp_union_nous_vous_lui__ *WORD [nous|vous|lui] - <<- /imp/ space_after(\1, 1, 1) + <<- /imp/ space(\1, 1, 1) and morph(\1, ":E", ":[GM]|>(?:venir|aller|partir)/") and morph(>1, ":|", ":(?:Y|3[sp]|Oo)|>(?:en|y)/") and morph(<1, ":Cc||>,") ->> \1-\2 && S’il s’agit d’un impératif, mettez un trait d’union.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=4206 [|,|(] *WORD [nous|vous|lui] - <<- /imp/ space_after(\2, 1, 1) and morph(\2, ":V(?:1.*:Ip.*:2s|[23].*:Ip.*:3s)", ":[GM]|>(?:venir|aller|partir)/") and not morph(>1, ":Y") + <<- /imp/ space(\2, 1, 1) and morph(\2, ":V(?:1.*:Ip.*:2s|[23].*:Ip.*:3s)", ":[GM]|>(?:venir|aller|partir)/") and not morph(>1, ":Y") -2:3>> =suggVerbTense(\2, ":E", ":2s")+"-"+\3 && S’il s’agit d’un impératif, mettez un trait d’union.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=4206 TEST: {{Donne nous}} du café. TEST: si ça se peut, {{apprend nous}} à réussir. TEST: Ce que Jeanne, femme de Patrick, veut vous dire de sa vie. __imp_union_y__ *WORD y - <<- /imp/ space_after(\1, 1, 1) + <<- /imp/ space(\1, 1, 1) and morph(\1, ":E", ":[GM]") and morph(>1, ":|", ":(?:Y|3[sp]|Oo)|>en/") and morph(<1, ":Cc||>,") ->> \1-\2 && S’il s’agit d’un impératif, mettez un trait d’union.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=4206 TEST: {{Donne y}} du tien. __imp_union_les__ *WORD les - <<- /imp/ space_after(\1, 1, 1) + <<- /imp/ space(\1, 1, 1) and morph(\1, ":E", ":[GM]|>(?:venir|aller|partir)") and morph(>1, ":||>,", ":(?:N|A|Y|B|3[sp])|>(?:pour|plus|moins|mieux|peu|trop|très|en|y)/") and morph(<1, ":Cc||>,") ->> \1-les && S’il s’agit d’un impératif, mettez un trait d’union.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=4206 [|,|(] *WORD les - <<- /imp/ space_after(\2, 1, 1) and morph(\2, ":V(?:1.*:Ip.*:2s|[23].*:Ip.*:3s)", ":[GM]|>(?:venir|aller|partir)/") + <<- /imp/ space(\2, 1, 1) and morph(\2, ":V(?:1.*:Ip.*:2s|[23].*:Ip.*:3s)", ":[GM]|>(?:venir|aller|partir)/") and morph(>1, ":||>,", ":(?:N|A|Y|B|3[sp])|>(?:pour|plus|moins|mieux|peu|trop|très|en|y)/") -2:3>> =suggVerbTense(\2, ":E", ":2s")+"-les" && S’il s’agit d’un impératif, mettez un trait d’union.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=4206 TEST: {{chante les}} avec conviction TEST: tu dois finir, {{finit les}}. @@ -29285,17 +29285,17 @@ TEST: Soyez les plus gentils qu’on puisse imaginer. __imp_union_le_la_leur__ *WORD [le|la|leur] - <<- /imp/ space_after(\1, 1, 1) + <<- /imp/ space(\1, 1, 1) and morph(\1, ":E", ":[GM]|>(?:venir|aller|partir)/") and morph(>1, ":||>,", ":(?:N|A|Q|Y|MP|H|T)|>(?:pour|plus|moins|mieux|peu|plupart|trop|très|en|y|une?|leur|lui)/") and morph(<1, ":Cc||>,") ->> \1-\2 && S’il s’agit d’un impératif, mettez un trait d’union.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=4206 [|,|(] *WORD [le|la|leur] - <<- /imp/ space_after(\2, 1, 1) and morph(\2, ":V(?:1.*:Ip.*:2s|[23].*:Ip.*:3s)", ":[GM]|>(?:venir|aller|partir)/") + <<- /imp/ space(\2, 1, 1) and morph(\2, ":V(?:1.*:Ip.*:2s|[23].*:Ip.*:3s)", ":[GM]|>(?:venir|aller|partir)/") and morph(>1, ":||>,", ":(?:N|A|Y|B|T|MP|3[sp])|>(?:pour|plus|moins|mieux|peu|plupart|trop|très|en|y|une?|leur|lui)/") -2:3>> =suggVerbTense(\2, ":E", ":2s")+"-"+\3 && S’il s’agit d’un impératif, mettez un trait d’union.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=4206 TEST: {{Prends le}} avec toi. TEST: {{Dites leur}} que nous sommes là. @@ -29321,16 +29321,16 @@ __imp_union_en__ *WORD en - <<- /imp/ space_after(\1, 1, 1) + <<- /imp/ space(\1, 1, 1) and morph(\1, ":E", ":[GM]|>(?:aller|partir)/") and morph(>1, ":||>,", ":(?:N|A|Q|Y|M|P|B|H|T|D|Ov)|>(?:plus|moins|mieux|peu|trop|très|une?)/") and morph(<1, ":Cc||>,") ->> \1-\2 && S’il s’agit d’un impératif, mettez un trait d’union.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=4206 [|,|(] *WORD en - <<- /imp/ space_after(\2, 1, 1) and morph(\2, ":V(?:1.*:Ip.*:2s|[23].*:Ip.*:3s)", ":[GM]|>(?:aller|partir)/") + <<- /imp/ space(\2, 1, 1) and morph(\2, ":V(?:1.*:Ip.*:2s|[23].*:Ip.*:3s)", ":[GM]|>(?:aller|partir)/") and morph(>1, ":||>,", ":(?:N|A|Y|M|P|B|3[sp]|D|Ov)|>(?:plus|moins|mieux|peu|trop|très|une?)/") -2:3>> =suggVerbTense(\2, ":E", ":2s")+"-"+\3 && S’il s’agit d’un impératif, mettez un trait d’union.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=4206 TEST: {{restons en}} là. TEST: tu crois ça, {{donnes en}} encore @@ -29346,11 +29346,11 @@ TEST: Finis en ne comptant que sur toi-même __imp_laisser_le_la_les_infi__ [laisse|laissons|laissez] [le|la|les] *WORD - <<- /imp/ space_after(\1, 1, 1) and morph(\3, ":(?:Y|Ov)", ":[NAB]") and not morph(<1, ":O[sv]") + <<- /imp/ space(\1, 1, 1) and morph(\3, ":(?:Y|Ov)", ":[NAB]") and not morph(<1, ":O[sv]") -1:2>> \1-\2 && S’il s’agit d’un impératif, mettez un trait d’union.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=4206 TEST: {{Laisse les}} entrer… TEST: {{Laissez la}} venir… TEST: {{laisse le}} faire @@ -29385,41 +29385,41 @@ TEST: {{t-en}} lasser, impossible __imp_union_m_t_en_y__ *WORD [m’|t’] [en|y] - <<- /imp/ space_after(\1, 1, 1) and morph(\1, ":E", ":[MG]") and morph(>1, ":||>,", ":(?:Y|[123][sp])") + <<- /imp/ space(\1, 1, 1) and morph(\1, ":E", ":[MG]") and morph(>1, ":||>,", ":(?:Y|[123][sp])") ->> \1-\2\3 && S’il s’agit d’un impératif, mettez un trait d’union.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=4206 TEST: {{donne m’en}}, s’il te plaît. TEST: Mélanie t’en donne souvent. __imp_union_verbe_pronom_moi_toi_lui__ [/-le|/-la|/-les] [moi|toi] - <<- /imp/ space_after(\1, 1, 1) and morphVC(\1, ":E") + <<- /imp/ space(\1, 1, 1) and morphVC(\1, ":E") ->> \1-\2 && S’il s’agit d’un impératif, mettez un trait d’union.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=4206 TEST: les analyses, {{donne-les moi}} TEST: {{Donne-les lui}}. __imp_union_verbe_pronom_nous_vous__ [/-le|/-la|/-les] [nous|vous|lui|leur] - <<- /imp/ space_after(\1, 1, 1) and morphVC(\1, ":E") and morph(>1, ":[RC]||>,", ":Y") + <<- /imp/ space(\1, 1, 1) and morphVC(\1, ":E") and morph(>1, ":[RC]||>,", ":Y") ->> \1-\2 && S’il s’agit d’un impératif, mettez un trait d’union.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=4206 TEST: {{apporte-les nous}} __imp_union_verbe_pronom_en_y_leur__ [/-moi|/toi] en - <<- /imp/ space_after(\1, 1, 1) and morphVC(\1, ":E") and morph(>1, ":[RC]||>,", ":[NAY]") + <<- /imp/ space(\1, 1, 1) and morphVC(\1, ":E") and morph(>1, ":[RC]||>,", ":[NAY]") ->> \1-\2 && S’il s’agit d’un impératif, mettez un trait d’union.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=4206 [/-lui|/-nous|/-vous|/-leur] [en|y] - <<- /imp/ space_after(\1, 1, 1) and morphVC(\1, ":E") and morph(>1, ":[RC]||>,", ":[NAY]") + <<- /imp/ space(\1, 1, 1) and morphVC(\1, ":E") and morph(>1, ":[RC]||>,", ":[NAY]") ->> \1-\2 && S’il s’agit d’un impératif, mettez un trait d’union.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=4206 TEST: {{donnez-moi en}} TEST: {{prends-leur en}} TEST: {{Donnez-nous en}}. @@ -29426,14 +29426,14 @@ TEST: Alors, {{parais y}} grande et lumineuse. __imp_union_aller_y!5__ [viens|venez|venons|allons|allez] y - <<- /imp/ space_after(\1, 1, 1) and not morph(>1, ":Y") ->> \1-\2 && Il manque un trait d’union. + <<- /imp/ space(\1, 1, 1) and not morph(>1, ":Y") ->> \1-\2 && Il manque un trait d’union. [va|vas] [y|z-y|z’y] - <<- /imp/ space_after(\1, 1, 1) and not value(<1, "|tu|il|elle|on|ne|n’|") and not morph(>1, ":Y") + <<- /imp/ space(\1, 1, 1) and not value(<1, "|tu|il|elle|on|ne|n’|") and not morph(>1, ":Y") ->> vas-y && Il manque un trait d’union. TEST: {{allons y}} TEST: {{vas y}} TEST: {{Viens y}}. @@ -29442,11 +29442,11 @@ __imp_union_convenir_en__ [conviens|convenez|convenons] en - <<- /imp/ space_after(\1, 1, 1) and not value(>1, "|partie|") ->> \1-\2 && Il manque un trait d’union. + <<- /imp/ space(\1, 1, 1) and not value(>1, "|partie|") ->> \1-\2 && Il manque un trait d’union. TEST: c’est une belle affaire malgré son prix élevé, {{convenez en}}… @@ -30348,30 +30348,30 @@ !! __inte_union_je!7__ [|,|comment|pourquoi|combien|que|qu’|quoique|quoiqu’|où|puis|quand|qui] ~..[éèe]$ je [|,|)] [|,|comment|pourquoi|combien|que|qu’|quoique|quoiqu’|où|puis|quand|qui] ~..[éèe]$ je @:¬:1s - <<- /inte/ space_after(\2, 1, 1) and morph(\2, ":V.*:1[sŝś]", ":[GW]") + <<- /inte/ space(\2, 1, 1) and morph(\2, ":V.*:1[sŝś]", ":[GW]") -2:3>> =\2[:-1]+"é-je" && Forme interrogative ? Mettez un trait d’union. *WORD ~..[éèe]$ je [|,|)] *WORD ~..[éèe]$ je @:¬:1s - <<- /inte/ space_after(\2, 1, 1) and morph(\2, ":V.*:1[sŝś]", ":[GNW]") and not value(\1, "|je|j’|il|elle|") + <<- /inte/ space(\2, 1, 1) and morph(\2, ":V.*:1[sŝś]", ":[GNW]") and not value(\1, "|je|j’|il|elle|") -2:3>> =\2[:-1]+"é-je" && Forme interrogative ? Mettez un trait d’union. [|,|comment|pourquoi|combien|que|qu’|quoique|quoiqu’|où|puis|quand|qui] ~.[is]$ je [|,|)] [|,|comment|pourquoi|combien|que|qu’|quoique|quoiqu’|où|puis|quand|qui] ~.[is]$ je @:¬:1s - <<- /inte/ space_after(\2, 1, 1) and morph(\2, ":V.*:1s", ":[GW]") + <<- /inte/ space(\2, 1, 1) and morph(\2, ":V.*:1s", ":[GW]") -2:3>> \2-je && Forme interrogative ? Mettez un trait d’union. [|,|comment|pourquoi|combien|que|qu’|quoique|quoiqu’|où|puis|quand|qui] [ai|avais|eus|eussé|eusse|aurai|aurais|suis|étais|fus|fussé|fusse|serai|serais] je - <<- /inte/ space_after(\2, 1, 1) + <<- /inte/ space(\2, 1, 1) -2:3>> \2-je && Forme interrogative ? Mettez un trait d’union. *WORD ~.[is]$ je [|,|)] *WORD ~.[is]$ je @:¬:1s - <<- /inte/ space_after(\2, 1, 1) and morph(\2, ":V.*:1s", ":[GNW]") and not value(\1, "|je|j’|tu|") + <<- /inte/ space(\2, 1, 1) and morph(\2, ":V.*:1s", ":[GNW]") and not value(\1, "|je|j’|tu|") -2:3>> \2-je && Forme interrogative ? Mettez un trait d’union. TEST: quel animal {{dessine je}} TEST: {{mangé je}} {{ça}} avec dégoût ? TEST: {{viendrais je}} à la fête ? @@ -30380,20 +30380,20 @@ __inte_union_tu!7__ [|,|comment|pourquoi|combien|que|qu’|quoique|quoiqu’|où|puis|quand|qui] ~.[sx]$ tu [|,|)] [|,|comment|pourquoi|combien|que|qu’|quoique|quoiqu’|où|puis|quand|qui] ~.[sx]$ tu @:¬:2s - <<- /inte/ space_after(\2, 1, 1) and morph(\2, ":V.*:2s", ":[GW]") + <<- /inte/ space(\2, 1, 1) and morph(\2, ":V.*:2s", ":[GW]") -2:3>> \2-tu && Forme interrogative ? Mettez un trait d’union. [|,|comment|pourquoi|combien|que|qu’|quoique|quoiqu’|où|puis|quand|qui] [as|avais|eus|eusses|es|auras|aurais|étais|fus|fusses|seras|serais] tu - <<- /inte/ space_after(\2, 1, 1) + <<- /inte/ space(\2, 1, 1) -2:3>> \2-tu && Forme interrogative ? Mettez un trait d’union. *WORD ~.s$ tu [|,|)] *WORD ~.s$ tu @:¬:2s - <<- /inte/ space_after(\2, 1, 1) and morph(\2, ":V.*:2s", ":[GNW]") and not value(\1, "|je|j’|tu|") + <<- /inte/ space(\2, 1, 1) and morph(\2, ":V.*:2s", ":[GNW]") and not value(\1, "|je|j’|tu|") -2:3>> \2-tu && Forme interrogative ? Mettez un trait d’union. TEST: {{Viendras tu}} là ? TEST: et toi, {{as tu}} découvert le secret de l’immortalité ? TEST: quelle vie {{connaitras tu}} ? @@ -30401,20 +30401,20 @@ __inte_union_il_on!7__ [|,|comment|pourquoi|combien|que|qu’|quoique|quoiqu’|où|puis|quand|qui] ~.[td]$ [il|on] [|,|)] [|,|comment|pourquoi|combien|que|qu’|quoique|quoiqu’|où|puis|quand|qui] ~.[td]$ [il|on] @:¬:3s - <<- /inte/ space_after(\2, 1, 1) and morph(\2, ":V.*:3s", ":[GW]") + <<- /inte/ space(\2, 1, 1) and morph(\2, ":V.*:3s", ":[GW]") -2:3>> \2-\3 && Forme interrogative ? Mettez un trait d’union. [|,|comment|pourquoi|combien|que|qu’|quoique|quoiqu’|où|puis|quand|qui] [avait|eut|eût|est|aurait|était|fut|fût|serait] [il|on] - <<- /inte/ space_after(\2, 1, 1) + <<- /inte/ space(\2, 1, 1) -2:3>> \2-\3 && Forme interrogative ? Mettez un trait d’union. *WORD ~.[td]$ [il|on] [|,|)] *WORD ~.[td]$ [il|on] @:¬:3s - <<- /inte/ space_after(\2, 1, 1) and morph(\2, ":V.*:3s", ":[GNW]") and not value(\1, "|ce|il|elle|on|") + <<- /inte/ space(\2, 1, 1) and morph(\2, ":V.*:3s", ":[GNW]") and not value(\1, "|ce|il|elle|on|") -2:3>> \2-\3 && Forme interrogative ? Mettez un trait d’union. TEST: {{prend on}} le temps d’y réfléchir ? TEST: De quel droit {{vient il}} m’{{ennuyer}} ? TEST: comment {{était il}} @@ -30424,30 +30424,30 @@ __inte_union_ce!7__ [|,|(] [est|était|étaient] ce ?pas¿ [le|la|les|l’|un|une|de|des|d’|ce|cet|cette|ces|quelques|plusieurs|mon|ma|ta|sa|notre|votre|leur|mes|tes|ses|nos|vos|leurs] [|,|(] [est|était|étaient] ce ?pas¿ @:G¬:[NA].*:[me]:[si]|>(?:qu[ei’]|pourquoi|dont)/ [|,|(] [est|était|étaient] ce [ton|son] @:N¬:A.*:[me]:[si] - <<- /inte/ space_after(\2, 1, 1) -2:3>> \2-\3 && Forme interrogative ? Mettez un trait d’union. + <<- /inte/ space(\2, 1, 1) -2:3>> \2-\3 && Forme interrogative ? Mettez un trait d’union. TEST: N’{{était ce}} pas le bon moment pour y songer. ->> était-ce TEST: Qu’était ce raffut ? TEST: Cette liberté, formalisée par le libéralisme économique, dès les Physiocrates (vers 1750), est ce dont le despotisme économique a besoin pour que son soubassement économique fonctionne mécaniquement. __inte_union_elle_iel!7__ [|,|comment|pourquoi|combien|que|qu’|quoique|quoiqu’|où|puis|quand|qui] ~.[td]$ [elle|iel] [|,|)] [|,|comment|pourquoi|combien|que|qu’|quoique|quoiqu’|où|puis|quand|qui] ~.[td]$ [elle|iel] @:¬:3s - <<- /inte/ space_after(\2, 1, 1) and morph(\2, ":V.*:3s", ":[GW]") + <<- /inte/ space(\2, 1, 1) and morph(\2, ":V.*:3s", ":[GW]") -2:3>> \2-\3 && Forme interrogative ? Mettez un trait d’union. [|,|comment|pourquoi|combien|que|qu’|quoique|quoiqu’|où|puis|quand|qui] [avait|eut|eût|aurait|est|était|fut|fût|serait] [elle|iel] - <<- /inte/ space_after(\2, 1, 1) + <<- /inte/ space(\2, 1, 1) -2:3>> \2-\3 && Forme interrogative ? Mettez un trait d’union. *WORD ~.[td]$ [elle|iel] [|,|)] *WORD ~.[td]$ [elle|iel] @:¬:3s - <<- /inte/ space_after(\2, 1, 1) and morph(\2, ":V.*:3s", ":[GNW]") and not value(\1, "|ce|c’|ça|ç’|il|elle|on|iel|") + <<- /inte/ space(\2, 1, 1) and morph(\2, ":V.*:3s", ":[GNW]") and not value(\1, "|ce|c’|ça|ç’|il|elle|on|iel|") -2:3>> \2-\3 && Forme interrogative ? Mettez un trait d’union. TEST: {{vient elle}} souvent ? TEST: comment {{sait elle}} TEST: qui {{était elle}} ? @@ -30458,28 +30458,28 @@ __inte_union_nous2!7__ , ~ons$ nous [|,|)] , ~ons$ nous @:¬:(?:1p|Y) - <<- /inte/ space_after(\2, 1, 1) and morph(\2, ":V.*:1p", ":[GW]") and not value(\2, "|veuillons|sachons|") + <<- /inte/ space(\2, 1, 1) and morph(\2, ":V.*:1p", ":[GW]") and not value(\2, "|veuillons|sachons|") -2:3>> \2-\3 && Forme interrogative ? Mettez un trait d’union. ~ons nous - <<- /inte/ space_after(\2, 1, 1) and morph(\2, ":V.*:1p", ":[GW]") and not value(\2, "|veuillons|sachons|allons|venons|partons|") + <<- /inte/ space(\2, 1, 1) and morph(\2, ":V.*:1p", ":[GW]") and not value(\2, "|veuillons|sachons|allons|venons|partons|") -2:3>> \2-\3 && Forme interrogative ? Mettez un trait d’union. [comment|pourquoi|combien|que|qu’|quoique|quoiqu’|où|puis|quand|qui] ~ons nous - <<- /inte/ space_after(\2, 1, 1) and morph(\2, ":V.*:1p", ":[GW]") and not value(\2, "|veuillons|sachons|") + <<- /inte/ space(\2, 1, 1) and morph(\2, ":V.*:1p", ":[GW]") and not value(\2, "|veuillons|sachons|") -2:3>> \2-\3 && Forme interrogative ? Mettez un trait d’union. [|,|comment|pourquoi|combien|que|qu’|quoique|quoiqu’|où|puis|quand|qui] [sommes|étions|fûmes|fussions|serons|serions|avons|avions|eûmes|eussions|aurons|aurions] nous - <<- /inte/ space_after(\2, 1, 1) + <<- /inte/ space(\2, 1, 1) -2:3>> \2-nous && Forme interrogative ? Mettez un trait d’union. *WORD ~ons$ nous [|,|)] *WORD ~ons$ nous @:¬:(?:Y|1p) - <<- /inte/ space_after(\2, 1, 1) and + <<- /inte/ space(\2, 1, 1) and ( (value(\2, "|avions|") and not morph(\1, ":A.*:[me]:[sp]") and not morph(\-1, ":(:?3[sp]|Ov)")) or (morph(\2, ":V.*:1p", ":[GNW]") and not morph(\1, ":Os")) ) -2:3>> \2-nous && Forme interrogative ? Mettez un trait d’union. TEST: Ils savent, réellement {{croyons nous}}, comment résoudre le problème, mais ils n’ont fait que de la merde. @@ -30494,28 +30494,28 @@ __inte_union_vous2!7__ , ~ez$ vous [|,|)] , ~ez$ vous @:¬:(?:2p|Y) - <<- /inte/ space_after(\2, 1, 1) and morph(\2, ":V.*:2p", ":[GW]") and not value(\2, "|veuillez|sachez|") + <<- /inte/ space(\2, 1, 1) and morph(\2, ":V.*:2p", ":[GW]") and not value(\2, "|veuillez|sachez|") -2:3>> \2-\3 && Forme interrogative ? Mettez un trait d’union. ~ez$ vous - <<- /inte/ space_after(\2, 1, 1) and morph(\2, ":V.*:2p", ":[GW]") and not value(\2, "|veuillez|sachez|allez|venez|partez|") + <<- /inte/ space(\2, 1, 1) and morph(\2, ":V.*:2p", ":[GW]") and not value(\2, "|veuillez|sachez|allez|venez|partez|") -2:3>> \2-\3 && Forme interrogative ? Mettez un trait d’union. [comment|pourquoi|combien|que|qu’|quoique|quoiqu’|où|puis|quand|qui] ~ez$ vous - <<- /inte/ space_after(\2, 1, 1) and morph(\2, ":V.*:2p", ":[GW]") and not value(\2, "|veuillez|sachez|") + <<- /inte/ space(\2, 1, 1) and morph(\2, ":V.*:2p", ":[GW]") and not value(\2, "|veuillez|sachez|") -2:3>> \2-\3 && Forme interrogative ? Mettez un trait d’union. [|,|comment|pourquoi|combien|que|qu’|quoique|quoiqu’|où|puis|quand|qui] [êtes|étiez|fûtes|fussiez|serez|seriez|avez|aviez|eûtes|eussiez|aurez|auriez] vous - <<- /inte/ space_after(\2, 1, 1) + <<- /inte/ space(\2, 1, 1) -2:3>> \2-vous && Forme interrogative ? Mettez un trait d’union. *WORD ~..e[zs]$ vous [|,|)] *WORD ~..e[zs]$ vous @:¬:(?:Y|2p) - <<- /inte/ space_after(\2, 1, 1) and morph(\2, ":V.*:2p", ":[GNW]") and not value(\2, "|veuillez|") and not morph(\1, ":Os") + <<- /inte/ space(\2, 1, 1) and morph(\2, ":V.*:2p", ":[GNW]") and not value(\2, "|veuillez|") and not morph(\1, ":Os") -2:3>> \2-vous && Forme interrogative ? Mettez un trait d’union. TEST: ils seront, me {{direz vous}}, étroitement surveillés, mais rien ne le garantit. TEST: Mais {{soutiendrez vous}} cette proposition ? TEST: pourquoi ailleurs {{soutenez vous}} ces gens-là ? @@ -30527,20 +30527,20 @@ __inte_union_ils!7__ [|,|comment|pourquoi|combien|que|qu’|quoique|quoiqu’|où|puis|quand|qui] ~[eo]nt$ ils [|,|)] [|,|comment|pourquoi|combien|que|qu’|quoique|quoiqu’|où|puis|quand|qui] ~[eo]nt$ ils @:¬:3p - <<- /inte/ space_after(\2, 1, 1) and morph(\2, ":V.*:3p", ":[GW]") + <<- /inte/ space(\2, 1, 1) and morph(\2, ":V.*:3p", ":[GW]") -2:3>> \2-\3 && Forme interrogative ? Mettez un trait d’union. [|,|comment|pourquoi|combien|que|qu’|quoique|quoiqu’|où|puis|quand|qui] [ont|avaient|eurent|eussent|auront|auraient|sont|étaient|furent|fussent|seront|seraient] ils - <<- /inte/ space_after(\2, 1, 1) + <<- /inte/ space(\2, 1, 1) -2:3>> \2-\3 && Forme interrogative ? Mettez un trait d’union. *WORD ~[eo]nt$ ils [|,|)] *WORD ~[eo]nt$ ils @:¬:3p - <<- /inte/ space_after(\2, 1, 1) and morph(\2, ":V.*:3p", ":[GNW]") and not value(\1, "|ce|ils|elles|iels|") + <<- /inte/ space(\2, 1, 1) and morph(\2, ":V.*:3p", ":[GNW]") and not value(\1, "|ce|ils|elles|iels|") -2:3>> \2-\3 && Forme interrogative ? Mettez un trait d’union. TEST: {{Viendront ils}} demain ? TEST: qui {{seront ils}} une fois adultes ? TEST: dans quel retaurant {{iront ils}} ? @@ -30547,20 +30547,20 @@ __inte_union_elles_iels!7__ [|,|comment|pourquoi|combien|que|qu’|quoique|quoiqu’|où|puis|quand|qui] ~[eo]nt$ [elles|iels] [|,|)] [|,|comment|pourquoi|combien|que|qu’|quoique|quoiqu’|où|puis|quand|qui] ~[eo]nt$ [elles|iels] @:¬:3p - <<- /inte/ space_after(\2, 1, 1) and morph(\2, ":V.*:3p", ":[GW]") + <<- /inte/ space(\2, 1, 1) and morph(\2, ":V.*:3p", ":[GW]") -2:3>> \2-\3 && Forme interrogative ? Mettez un trait d’union. [|,|comment|pourquoi|combien|que|qu’|quoique|quoiqu’|où|puis|quand|qui] [ont|avaient|eurent|eussent|auront|auraient|sont|étaient|furent|fussent|seront|seraient] [elles|iels] - <<- /inte/ space_after(\2, 1, 1) + <<- /inte/ space(\2, 1, 1) -2:3>> \2-\3 && Forme interrogative ? Mettez un trait d’union. *WORD ~[eo]nt$ [elles|iels] [|,|)] *WORD ~[eo]nt$ [elles|iels] @:¬:3p - <<- /inte/ space_after(\2, 1, 1) and morph(\2, ":V.*:3p", ":[GNW]") and not value(\1, "|ce|ils|elles|iels|") + <<- /inte/ space(\2, 1, 1) and morph(\2, ":V.*:3p", ":[GNW]") and not value(\1, "|ce|ils|elles|iels|") -2:3>> \2-\3 && Forme interrogative ? Mettez un trait d’union. TEST: {{viennent elles}} souvent ? TEST: quand {{furent elles}} recrutées ? TEST: quels éléments {{examinèrent elles}} ? @@ -31140,11 +31140,11 @@ <<- /conj/ not morph(<1, ":[VR]") >>> <<- /conj/ tag(\1, "_bcp_plur_") and not morph(\2, ":3p") -2>> =suggVerb(\2, ":3p") && Conjugaison erronée. Accord avec “\1”. Le substantif suivant étant au pluriel, le verbe devrait être à la 3ᵉ personne du pluriel. <<- /conj/ __else__ and tag(\1, "_bcp_sing_") and not morph(\2, ":3s") -2>> =suggVerb(\2, ":3s") && Conjugaison erronée. Accord avec “\1”. Le substantif suivant étant au singulier, le verbe devrait être à la 3ᵉ personne du singulier. - <<- /conj/ __else__ and \2 != "a" and not tag(\1, "_bcp_sing_") and not morph(\2, ":3p") and not (space_after(\1, 1, 2) and morph(\2, ":V0")) + <<- /conj/ __else__ and \2 != "a" and not tag(\1, "_bcp_sing_") and not morph(\2, ":3p") and not (space(\1, 1, 2) and morph(\2, ":V0")) -2>> =suggVerb(\2, ":3p") && Conjugaison erronée. Accord avec “\1”. Le verbe devrait être à la 3ᵉ personne du pluriel. beaucoup qui @:V¬:(?:3p|P|G) <<- /conj/ -3>> =suggVerb(\3, ":3p") && Conjugaison erronée. Accord avec “\1”. Le verbe devrait être à la 3ᵉ personne du pluriel. @@ -32044,17 +32044,17 @@ # Règles casse-gueule, prudence… __conj_nom_propre_virgule__ $:M , @:3s¬:[NAGEM] [|,|)] - <<- /conj/ space_after(\2, 0, 0) -2:3>> \2 + <<- /conj/ space(\2, 0, 0) -2:3>> \2 && Si “\2” est le sujet de “\4”, la virgule est superflue (on ne sépare pas le verbe du sujet). Sinon “\4” devrait être à l’impératif (à moins d’une inversion verbe-sujet). <<- /conj/ __also__ -4>> =suggVerbTense(\4, ":E", ":2s") && Si “\2” est le sujet de “\4”, la virgule est superflue (on ne sépare pas le verbe du sujet). Sinon “\4” devrait être à l’impératif (à moins d’une inversion verbe-sujet). $:M , @:3s¬:[NAGEM] @:A.*:[si] - <<- /conj/ space_after(\2, 0, 0) and morph(\4, ">(?:être|devenir|redevenir|sembler|para[iî]tre)/") -2:3>> \2 + <<- /conj/ space(\2, 0, 0) and morph(\4, ">(?:être|devenir|redevenir|sembler|para[iî]tre)/") -2:3>> \2 && Si “\2” est le sujet de “\4”, la virgule est superflue (on ne sépare pas le verbe du sujet). Sinon “\4” devrait être à l’impératif (à moins d’une inversion verbe-sujet). <<- /conj/ __also__ -4>> =suggVerbTense(\4, ":E", ":2s") && Si “\2” est le sujet de “\4”, la virgule est superflue (on ne sépare pas le verbe du sujet). Sinon “\4” devrait être à l’impératif (à moins d’une inversion verbe-sujet). TEST: {{Paul,}} {{vient}} ->> Paul|||viens @@ -32064,17 +32064,17 @@ TEST: Valérie, devina Éric, n’avait pas du tout l’intention de mener à bien la tâche qu’il voulait la voir accomplir. __conj_det_nom_sing_virgule__ [un|le|la|l’|ce|cet|cette|mon|ton|son|ma|ta|sa] @:[NA] , @:3s¬:[NAGEM] [|,|les|des|ces|mes|tes|ses|nos|vos|leurs] - <<- /conj/ space_after(\3, 0, 0) -3:4>> \3 + <<- /conj/ space(\3, 0, 0) -3:4>> \3 && Si “\2 \3” est le sujet de “\5”, la virgule est superflue (on ne sépare pas le verbe du sujet). Sinon “\5” devrait être à l’impératif (à moins d’une inversion verbe-sujet). <<- /conj/ __also__ -5>> =suggVerbTense(\5, ":E", ":2s") && Si “\2 \3” est le sujet de “\5”, la virgule est superflue (on ne sépare pas le verbe du sujet). Sinon “\5” devrait être à l’impératif (à moins d’une inversion verbe-sujet). [un|le|la|l’|ce|cet|cette|mon|ton|son|ma|ta|sa] @:[NA] , @:3s¬:[NAGEM] @:A.*:[si] - <<- /conj/ space_after(\3, 0, 0) and morph(\5, ">(?:être|devenir|redevenir|sembler|para[iî]tre)/") -3:4>> \3 + <<- /conj/ space(\3, 0, 0) and morph(\5, ">(?:être|devenir|redevenir|sembler|para[iî]tre)/") -3:4>> \3 && Si “\2 \3” est le sujet de “\5”, la virgule est superflue (on ne sépare pas le verbe du sujet). Sinon “\5” devrait être à l’impératif (à moins d’une inversion verbe-sujet). <<- /conj/ __also__ -5>> =suggVerbTense(\5, ":E", ":2s") && Si “\2 \3” est le sujet de “\5”, la virgule est superflue (on ne sépare pas le verbe du sujet). Sinon “\5” devrait être à l’impératif (à moins d’une inversion verbe-sujet). TEST: Ce {{soir,}} {{vient}}. ->> soir|||viens @@ -32084,15 +32084,15 @@ TEST: L’amour, expliqua la femme. __conj_det_nom_plur_virgule__ [les|ces|mes|tes|ses|plusieurs|quelques|certains|certaines|maints|maintes] @:[NA].*:[pi] , @:3p¬:[NAGEM] [|,|)] - <<- /conj/ space_after(\3, 0, 0) + <<- /conj/ space(\3, 0, 0) -3:4>> \3 && La virgule est probablement superflue (on ne sépare pas le verbe du sujet). [les|ces|mes|tes|ses|plusieurs|quelques|certains|certaines|maints|maintes] @:[NA].*:[pi] , @:3p¬:[NAGEM] @:A.*:[pi] - <<- /conj/ space_after(\3, 0, 0) and morph(\5, ">(?:être|devenir|redevenir|sembler|para[iî]tre)/") + <<- /conj/ space(\3, 0, 0) and morph(\5, ">(?:être|devenir|redevenir|sembler|para[iî]tre)/") -3:4>> \3 && La virgule est probablement superflue (on ne sépare pas le verbe du sujet). TEST: Ces {{imbéciles,}} se ridiculisent. ->> imbéciles TEST: les {{hommes,}} deviennent de plus en plus arrogants. ->> hommes TEST: Les questions de faisabilité, de mise en pratique ont vraiment été abordées. Index: misc/grammalecte.sublime-syntax ================================================================== --- misc/grammalecte.sublime-syntax +++ misc/grammalecte.sublime-syntax @@ -58,11 +58,11 @@ scope: keyword.python - match: '\b(?:True|False|None)\b' scope: constant.language - - match: '\b(?:spell|morph(?:VC|)|stem|tag|value|space_after|textarea0?\w*|before0?\w*|after0?\w*|word|option|define(?:from|)|select|exclude|setmeta|analyse\w*|tag(?:after|before)|apposition|is[A-Z]\w+|agreement|rewrite|checkD\w+|getD\w+|has[A-Z]\w+|sugg[A-Z]\w+|switch[A-Z]\w+|ceOrCet|formatN\w+|mbUnit)\b' + - match: '\b(?:spell|morph(?:VC|)|stem|tag|value|space|textarea0?\w*|before0?\w*|after0?\w*|word|option|define(?:from|)|select|exclude|setmeta|analyse\w*|tag(?:after|before)|apposition|is[A-Z]\w+|agreement|rewrite|checkD\w+|getD\w+|has[A-Z]\w+|sugg[A-Z]\w+|switch[A-Z]\w+|ceOrCet|formatN\w+|mbUnit)\b' scope: entity.name.function - match: '\b(?:replace|endswith|startswith|search|upper|lower|capitalize|strip|rstrip|is(?:alpha|upper|lower|digit|title))\b' scope: support.function