Index: CHANGELOG.txt ================================================================== --- CHANGELOG.txt +++ CHANGELOG.txt @@ -46,9 +46,9 @@ Graphspell: spellchecker as an independant package ## 1.0 New grammar checker engine, based on tokenization > Rules graphs (less resources consuming) - > Simplier method to write rules + > Simpler method to write rules > Tags for tokens > Tokens merging > Immunity rules Index: doc/API.txt ================================================================== --- doc/API.txt +++ doc/API.txt @@ -85,11 +85,11 @@ .dConj Attribute. Dictionary of all conjugations. .sInfo - Attribute. Readable informations about the verb. + Attribute. Readable information about the verb. .infinitif(bPro, bNeg, bTpsCo, bInt, bFem) .participePasse(sWho) Index: doc/syntax.txt ================================================================== --- doc/syntax.txt +++ doc/syntax.txt @@ -1,19 +1,19 @@ -# Writing rules for Grammalecte +# Writing rules for Grammalecte # Note: This documentation is a __draft__. Information may be obsolete or incomplete. -## Files required +## FILES REQUIRED ## The rules file for your language must be named `rules.grx` in the folder `gc_lang//`. The settings file must be named `config.ini`. These files are simple UTF-8 text files. -## Principles +## PRINCIPLES ## Grammalecte is a bi-passes grammar checker engine. On the first pass, the engine checks the text paragraph by paragraph. On the second pass, the engine check the text sentence by sentence. @@ -35,11 +35,11 @@ * [optional] rule name (named rules can be disabled by user or by config) * [optional] priority number * a regex pattern trigger * a list of actions -A token rules is defined by: +A token rule is defined by: * rule name * [optional] priority number * one or several lists of tokens * a list of actions (the action is active only if the option defined by user or config is active) @@ -46,47 +46,32 @@ Token rules must be defined within a graph. Each graph is defined within the second pass with the command: - @@@@GRAPH: graph_name|graph_code + @@@@GRAPH: graph_name|graph_code A graph ends when another graph is defined or when is found the command: - @@@@END_GRAPH + @@@@END_GRAPH There is no limit to the number of actions and the type of actions a rule can launch. Each action has its own condition to be triggered. There are several kinds of actions: -* Error warning, with a message, and optionally suggestions, and optionally an URL +* Error warning, with a message, and optionally suggestions, and optionally a URL * Text transformation, modifying internally the checked text -* [second pass only] Disambiguation action +* Disambiguation action * [second pass only] Tagging token * [second pass only] Immunity rules - On the first pass, you can only write regex rules. On the second pass, you can write regex rules and token rules. All tokens rules must be written within a graph. -## Syntax details - - - -### Comments - -Lines beginning with `#` are comments. - - -### End of parsing - -With the command `#END` at the beginning of a line, the parser won’t go further. -Whatever is written after will be considered as comments. - - -## Regex rule syntax + +## REGEX RULE SYNTAX ## __LCR/option(rulename)!priority__ pattern <<- condition ->> error_suggestions # message_error|URL <<- condition ~>> text_rewriting @@ -97,18 +82,11 @@ http://docs.python.org/library/re.html There can be one or several actions for each rule, executed following the order they are written. -Optional: - -* option -* rulename -* priority -* conditions -* URL - +Optional: option, rulename, priority, condition, URL LCR flags means: * L: Left boundary for the regex * C: Case sensitiveness @@ -142,11 +120,11 @@ ____ ____ -User option activating/disactivating is possible with an option name placed +User option activating/deactivating is possible with an option name placed just after the LCR flags, i.e.: __[i]/option1__ __[u]/option2__ __[s>/option1__ @@ -224,63 +202,253 @@ Example. Back reference in messages. (fooo) bar <<- ->> foo # “\1” should be: + +### Group positioning codes for JavaScript: + +There is no way in JavaScript to know where a captured group starts and ends. To avoid misplacement, regex rules may specify group positioning codes which indicate to the grammar checker where is the position of the captured groups. + +A group positioning code always begins by `@@`. If there is several codes, they are separated by a comma `,`. + +Other codes: + + 0 1 2 3 ... n left boundary position from left + -1 -2 -2 ... -n right boundary position from right + $ extreme right boundary + w somewhere with word boundaries + * something somewhere + ** something somewhere after previous group + +Examples: + + ([A-ZÉÈÂÎ][\w-]+) [A-ZÉÈÂ]([.]) ([A-ZÉÈÂ][\w-]+) @@0,*,$ + " ([?!;])" @@1 + ### Pattern matching -Repeating pattern matching of a single rule continues after the previous matching, so -instead of general multiword patterns, like +Repeating pattern matching of a single rule continues after the previous matching, so instead of general multiword patterns, like (\w+) (\w+) <<- some_check(\1, \2) ->> \1, \2 # foo use (\w+) <<- some_check(\1, word(1)) ->> \1, # foo -### Definitions +## TOKEN RULES ## -Grammalecte supports definitions to simplify the description of complex rules. +Token rules must be defined within a graph. + +### Token rules syntax + + __rulename!priority__ + list_of_tokens + list_of_tokens + list_of_tokens + ... + <<- /option/ condition ->> suggestions|URL + <<- /option/ condition ~>> rewriting + <<- /option/ condition =>> disambiguation + <<- /option/ condition />> tagging + <<- /option/ condition !>> + ... +   + list_of_tokens + ... + <<- action1 + <<- action2 + ... + +With token rules, for one rule name, you can define several blocks of list of tokens with different kinds of actions. Each block must be separated by an empty line. + +Optional: priority, option, condition, URL + +### Tokens + +Tokens can be defined in several ways: + +* Value (the text of the token). Examples: `word`, ``, ``, `,`. +* Lemma: `>lemma`. +* Regex: `~pattern`, `~pattern¬antipattern`. +* Regex on morphologies: `@pattern`, `@pattern¬antipattern`. +* Tags: `/tag`. +* Metatags: *NAME. Examples: `*WORD`, `*NUM`, `*SIGN`, etc. +* Jump over token: `<>` + +Selection of tokens: `[value1|value2||>lemma|~pattern|@pattern|*META|/tag|…]` + +Conditional token: `?token¿` + +Conditional selection of token: `?[token1|token2|…]¿` + +### Token references + +Positive references are defined by a positive integer (> 0). Examples: `\1`, `\2`, `\3`, etc. +If there is at least one token set between parenthesis, these numbers refer to tokens between parenthesis, ignoring all others. +If there is no token between parenthesis, these numbers refer to tokens found in order defined by the rule triggered. + +Negative references are defined by a negative integer (< 0). Examples: `\-1`, `\-2`, `\-3`, etc. +These numbers refer to the tokens beginning by the last one found by the rule triggered. + +Examples: + + tokens: alpha beta gamma delta epsilon + positive refs: 1 2 3 4 5 + negative refs: -5 -4 -3 -2 -1 + + tokens: alpha (beta) gamma (delta) epsilon + positive refs: 1 2 + negative refs: -5 -4 -3 -2 -1 + + tokens: alpha (beta) ?gamma¿ (delta) epsilon + positive refs: 1 2 + negative refs: (-5/-4) (-4/-3) (-3/none) -2 -1 + + +## CONDITIONS ## + +Conditions are Python expressions, they must return a value, which will be +evaluated as boolean. You can use the usual Python syntax and libraries. + +With regex rules, you can call pattern subgroups via `\1`, `\2`… `\0` is the full pattern. + +Example: + + these (\w+) + <<- \1 == "man" -1>> men # Man is a singular noun. + +You can also apply functions to subgroups like: `\1.startswith("a")` or `\3.islower()` or `re.search("pattern", \2)`. + +With token rules, you can also call each token with their reference, like `\1`, `\2`... or `\-1`, `\-2`... Example: - DEF: name pattern - -Usage in the rules: - - ({name}) (\w+) ->> "\1-\2" # Missing hyphen? - - -### Multiple suggestions - -Use `|` in the replacement text to add multiple suggestions: - -Example. Foo, FOO, Bar and BAR suggestions for the input word "foo". - - foo <<- ->> Foo|FOO|Bar|BAR # Did you mean: - - -### No suggestion - -You can display message without making suggestions. For this purpose, -use a single character _ in the suggestion field. - -Example. No suggestion. - - foobar <<- ->> _ # Message + foo [really|often|sometimes] bar + <<- ->> \1 \-1 # We say “foo bar”. + + +### Functions for regex rules + +`word(n)` + +> Catches the nth next word after the pattern (separated only by white spaces). +> Returns None if no word caught + +`word(-n)` + +> Catches the nth next word before the pattern (separated only by white spaces). +> Returns None if no word caught + +`textarea(regex[, neg_regex])` + +> Checks if the full text of the checked area (paragraph or sentence) matches the regex. + +`morph(n, regex[, neg_regex][, no_word=False])` + +> Checks if all tags of the word in group n match the regex. +> If neg_regex = "*", returns True only if all morphologies match the regex. +> If there is no word at position n, returns the value of no_word. + +`analyse(n, regex[, neg_regex][, no_word=False])` + +> Checks if all tags of the word in group n match the regex. +> If neg_regex = "*", returns True only if all morphologies match the regex. +> If there is no word at position n, returns the value of no_word. + +### Functions for token rules + +`value(n, values_string)` + +> Analyses the value of the nth token. +> The contains values separated by the sign `|`. +> Example: `"|foo|bar|"` + +`morph(n, "regex"[, "neg_regex"][, trim_left=0][, trim_right=0])` +`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])` + +> 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)` + +> Returns True if is found any token before the nth tag. + +`tag_after(n, tag)` + +> Returns True if is found any token after the nth tag. + +### Functions for regex and token rules + +`__also__` + +> Returns True if the previous condition returned True. +> Example: `<<- __also__ and condition2 ->>` + +`__else__` + +> Returns False if the previous condition returned False. +> Example: `<<- __else__ and condition2 ->>` + +`option(option_name)` + +> Returns True if is activated else False + +Note: the analysis is done on the preprocessed text. + +`after(regex[, neg_regex])` + +> Checks if the text after the pattern matches the regex. + +`before(regex[, neg_regex])` + +> Checks if the text before the pattern matches the regex. + +### Default variables + +`sCountry` + +> Contains the current country locale of the checked paragraph. + + colour <<- sCountry == "US" ->> color # Use American English spelling. + + +## ACTIONS ## + +There are 5 kinds of actions: + +1. Suggestions. The grammar checker suggests corrections. +2. Text processor. A internal process to modify the text internally. This is used to simplify grammar checking. + * text rewriting + * text deletion + * token rewriting + * token merging + * token deletion +3. Disambiguation. Select, exclude or define morphologies of tokens. +4. Tagging. Add information on token. +5. Immunity. Prevent suggestions to be triggered. ### Positioning -Positioning is valid only for error creation and text rewriting. +Positioning is valid for suggestions, text processing, tagging and immunity. -By default, the full pattern will be underlined with blue. You can shorten the -underlined text area by specifying a back reference group of the pattern. -Instead of writing ->>, write -n>> n being the number of a back reference -group. Actually, ->> is similar to -0>> +By default, rules apply on the full text triggered. You can shorten the +effect of rules by specifying a back reference group of the pattern or token references. + +Instead of writing `->>`, write `-n>>` n being the number of a back reference +group. Actually, `->>` is similar to `-0>>`. Example: (ying) and yang <<- -1>> yin # Did you mean: @@ -306,40 +474,69 @@ ying and yang ^^^^ -### Longer explanations with URLs +### Errors and suggestions + +The command to suggest something is: `->>`. + +#### Multiple suggestions + +Use `|` in the replacement text to add multiple suggestions: + +Example. Foo, FOO, Bar and BAR suggestions for the input word "foo". + + foo <<- ->> Foo|FOO|Bar|BAR # Did you mean: + +#### No suggestion + +You can display message without making suggestions. For this purpose, +use a single character _ in the suggestion field. + +Example. No suggestion. + + foobar <<- ->> _ # Message + +#### Longer explanations with URLs Warning messages can contain optional URL for longer explanations. your’s <<- ->> yours # Possessive pronoun:|http://en.wikipedia.org/wiki/Possessive_pronoun +#### Expressions in suggestion or replacement + +Suggestions started by an equal sign are Python string expressions extended with possible back references and named definitions: + +Example: + + <<- ->> ='"' + \1.upper() + '"' # With uppercase letters and quotation marks + <<- ~>> =\1.upper() + ### Text rewriting + +**WARNING**: The replacing text must be shorter than the replaced text or have the same length. Breaking this rule will misplace following error reports. +You have to ensure yourself the rules comply with this constraint, the text processor won’t do it for you. + +The command for text rewriting is: `~>>`. Example. Replacing a string by another. Mr. [A-Z]\w+ <<- ~>> Mister -**WARNING**: The replacing text must be shorter than the replaced text or have the -same length. Breaking this rule will misplace following error reports. You -have to ensure yourself the rules comply with this constraint, Grammalecte -won’t do it for you. - Specific commands for text rewriting: `~>> *` > Replace by whitespaces `~>> @` -> Replace with arrobas, useful mostly at first pass, where it is advised to -> check usage of punctuations and whitespaces. +> Replace with the at sign, useful mostly at first pass, where it is advised to check usage of punctuations and whitespaces. > Successions of @ are automatically removed at the beginning of the second pass. `~>> _` > Replace with underscores. Just a filler. @@ -352,13 +549,11 @@ You can also call Python expressions. __[s]__ Mr. ([a-z]\w+) <<- ~1>> =\1.upper() -### Text processing - -The text processor is useful to simplify texts and write simplier checking +The text processor is useful to simplify texts and write simpler checking rules. For example, sentences with the same grammar mistake: These “cats” are blacks. @@ -365,12 +560,11 @@ These cats are “blacks”. These cats are absolutely blacks. These stupid “cats” are all blacks. These unknown cats are as per usual blacks. -Instead of writting complex rules or several rules to find mistakes for all possible -cases, you can use the text preprocessor to simplify the text. +Instead of writing complex rules or several rules to find mistakes for all possible cases, you can use the text preprocessor to simplify the text. To remove the chars “”, write: [“”] ~>> * @@ -413,173 +607,93 @@ (Mrs?)[.] <<- ~>> \1 ### Disambiguation -When Grammalecte analyses a word with morph, before requesting the -POS tags to the dictionary, it checks if there is a stored marker for the -position where the word is. If there is a marker, Grammalecte uses the stored -data and don’t make request to the dictionary. - -The disambiguation commands store POS tags at the position of a word. - -There is 3 commands for disambiguation. +When the grammar checker analyses a token with `morph()`, before requesting the POS tags to the dictionary, it checks if there is a stored marker for the position of the token. If a marker is found, it uses the stored data and don’t make request to the dictionary. + +The command for disambiguation is: `=>>`. No positioning allowed. + +There are 4 commands for disambiguation. `select(n, pattern)` -> stores at position n only the POS tags of the word matching the pattern. +> At reference n, select morphologies that match the pattern. `exclude(n, pattern)` -> stores at position n the POS tags of the word, except those matching the - pattern. +> At reference n, exclude morphologies that match the pattern. + +`define(n, [morph_list])` + +> At reference n, set the listed morphologies (a list of strings). -`define(n, [definitions])` +`add_morph(n, [morph_list])` -> stores at position n the POS tags in definitions (a list of strings). +> At reference n, add the listed morphologies (a list of strings). Examples: =>> select(\1, "po:noun is:pl") =>> exclude(\1, "po:verb") - =>> define(\1, ["po:adv"]) - =>> exclude(\1, "po:verb") and define(\2, ["po:adv"]) and select(\3, "po:adv") - -Note: select(), exclude() and define() ALWAYS return True. - -If select() and exclude() generate an empty list, no marker is set. - -With define, you must set a list of POS tags. Example: - - define(\1, ["po:nom is:plur", "po:adj is:sing", "po:adv"]) - - -### Conditions - -Conditions are Python expressions, they must return a value, which will be -evaluated as boolean. You can use the usual Python syntax and libraries. - -You can call pattern subgroups via \0, \1, \2… - -Example: - - these (\w+) - <<- \1 == "man" -1>> men # Man is a singular noun. Use the plural form: - -You can also apply functions to subgroups like: - - \1.startswith("a") - \3.islower() - re.search("pattern", \2) - - -### Standard functions - -`word(n)` - -> catches the nth next word after the pattern (separated only by white spaces). -> returns None if no word catched - -`word(-n)` - -> catches the nth next word before the pattern (separated only by white spaces). -> returns None if no word catched - -`after(regex[, neg_regex])` - -> checks if the text after the pattern matches the regex. - -`before(regex[, neg_regex])` - -> checks if the text before the pattern matches the regex. - -`textarea(regex[, neg_regex])` - -> checks if the full text of the checked area (paragraph or sentence) matches the regex. - -`morph(n, regex[, neg_regex][, no_word=False])` - -> checks if all tags of the word in group n match the regex. -> if neg_regex = "*", returns True only if all morphologies match the regex. -> if there is no word at position n, returns the value of no_word. - -`morph0(n, regex[, neg_regex][, no_word=False])` - -> checks if all tags of the word in group n match the regex. -> if neg_regex = "*", returns True only if all morphologies match the regex. -> if there is no word at position n, returns the value of no_word. - - -`option(option_name)` - -> returns True if option_name is activated else False - -Note: the analysis is done on the preprocessed text. - - -### Default variables - -`sCountry` - -> It contains the current country locale of the checked paragraph. - - colour <<- sCountry == "US" ->> color # Use American English spelling. - - - -### Expressions in suggestion or replacement - -Suggestions started by an equal sign are Python string expressions -extended with possible back references and named definitions: - -Example: - - <<- ->> ='"' + \1.upper() + '"' # With uppercase letters and quotation marks - <<- ~>> =\1.upper() - - -## Token rules - -Token rules must be defined within a graph. - - -### Tokens - -Tokens can be defined in several ways: - -* Value (meaning the text of the token). Examples: `word`, ``, ``, `,`. -* Lemma: `>lemma`. -* Regex: `~pattern`, `~pattern¬antipattern`. -* Regex on morphologies: `@pattern`, `@pattern¬antipattern`. -* Tags: `/tag`. -* Metatags: *NAME. Examples: `*WORD`, `*NUM`, `*SIGN`, etc. - -Selection of tokens: `[token1|token2|>lemma1|>lemma2|~pattern1|@pattern1|…]` - -Conditional token: `?token¿` - -Conditional selection of token: `?[token1|token2|…]¿` - - -### Token references - -Positive references are defined by a positive integer `>= 1`. Examples: \1, \2, \3, etc. -If there is at least one token set between parenthesis, these numbers refer to tokens between parenthesis, ignoring all others. -If there is no token between parenthesis, these numbers refer to tokens found in order defined by the rule triggered. - -Negative references are defined by a negative integer `<= -1`. Examples: \-1, \-2, \-3, etc. -These numbers refer to the tokens beginning by the last one found by the rule triggered. - -Examples: - - tokens: alpha beta gamma delta epsilon - positive refs: 1 2 3 4 5 - negative refs: -5 -4 -3 -2 -1 - - tokens: alpha (beta) gamma (delta) epsilon - positive refs: 1 2 - negative refs: -5 -4 -3 -2 -1 - - tokens: alpha (beta) ?gamma¿ (delta) epsilon - positive refs: 1 2 - negative refs: (-4/-5) (-3/-4) (-3/none) -2 -1 - + =>> 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 `add_morph()`, you must set a list of POS tags. Example: + + =>> define(\1, ["po:nom is:plur", "po:adj is:sing", "po:adv"]) + =>> add_morph(\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()`. + +### 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. + +Example: `!2>>` means no error can be set on the second token. +Example: `!>>` means all tokens will be considered as correct. + +The immunity rules are useful to create simple antipattern that will simplify writing of other rules. + + +## OTHER COMMANDS ## + +### Comments + +Lines beginning with `#` are comments. + +### End of parsing + +With the command `#END` at the beginning of a line, the parser won’t go further. +Whatever is written after will be considered as comments. + +### Definitions + +Grammalecte supports definitions to simplify the description of complex rules. + +Definition: + + DEF: name definition + +Usage: `{name}` will be replaced by its definition + +Example: + + DEF: word_3_letters \w\w\w+ + DEF: uppercase_token ~^[A-Z]+$ + DEF: month_token [January|February|March|April|May|June|July|August|September|October|November|december] + + ({word_3_letters}) (\w+) <<- condition ->> suggestion # message|URL + + {uppercase_token} {month_token} + <<- condition ->> message # message|URL Index: gc_core/js/lang_core/gc_engine.js ================================================================== --- gc_core/js/lang_core/gc_engine.js +++ gc_core/js/lang_core/gc_engine.js @@ -707,14 +707,16 @@ } } if (bDebug) { console.log(` TAG: ${sWhat} > [${this.lToken[nTokenStart]["sValue"]}:${this.lToken[nTokenEnd]["sValue"]}]`); } - if (!this.dTags.has(sWhat)) { - this.dTags.set(sWhat, [nTokenStart, nTokenStart]); - } else { - this.dTags.set(sWhat, [Math.min(nTokenStart, this.dTags.get(sWhat)[0]), Math.max(nTokenEnd, this.dTags.get(sWhat)[1])]); + for (let sTag of sWhat.split("|")) { + if (!this.dTags.has(sTag)) { + this.dTags.set(sTag, [nTokenStart, nTokenEnd]); + } else { + this.dTags.set(sTag, [Math.min(nTokenStart, this.dTags.get(sTag)[0]), Math.max(nTokenEnd, this.dTags.get(sTag)[1])]); + } } } else if (cActionType == "!") { // immunity if (bDebug) { Index: gc_core/py/lang_core/gc_engine.py ================================================================== --- gc_core/py/lang_core/gc_engine.py +++ gc_core/py/lang_core/gc_engine.py @@ -626,15 +626,16 @@ self.lToken[i]["aTags"].update(sWhat.split("|")) else: self.lToken[i]["aTags"] = set(sWhat.split("|")) if bDebug: echo(" TAG: {} > [{}:{}]".format(sWhat, self.lToken[nTokenStart]["sValue"], self.lToken[nTokenEnd]["sValue"])) - if sWhat not in self.dTags: - self.dTags[sWhat] = [nTokenStart, nTokenStart] - else: - self.dTags[sWhat][0] = min(nTokenStart, self.dTags[sWhat][0]) - self.dTags[sWhat][1] = max(nTokenEnd, self.dTags[sWhat][1]) + for sTag in sWhat.split("|"): + if sTag not in self.dTags: + self.dTags[sTag] = [nTokenStart, nTokenEnd] + else: + self.dTags[sTag][0] = min(nTokenStart, self.dTags[sTag][0]) + self.dTags[sTag][1] = max(nTokenEnd, self.dTags[sTag][1]) elif cActionType == "!": # immunity if bDebug: echo(" IMMUNITY: " + sLineId + " / " + sRuleId) nTokenStart = nTokenOffset + eAct[0] if eAct[0] > 0 else nLastToken + eAct[0] Index: gc_lang/fr/dictionnaire/lexique/french.tagset.txt ================================================================== --- gc_lang/fr/dictionnaire/lexique/french.tagset.txt +++ gc_lang/fr/dictionnaire/lexique/french.tagset.txt @@ -42,19 +42,19 @@ _ ^ ^ ^ ^ ^ ^ ^ ^ ^ | | | | | | | | | groupe (0 = être ou avoir) ____/ | | | | | | | | type de verbe (être, avoir, autre) _______/ | | | | | | | - verbe intransifif ? __________/ | | | | | | + verbe intransitif ? __________/ | | | | | | verbe transitif direct ? _____________/ | | | | | verbe transitif indirect ? ________________/ | | | | verbe pronominal ? ___________________/ | | | p: toujours, r: réciproque, e: avec pronom “en” | | | accord? q: oui, u: jamais, v: possiblement | | | verbe impersonnel ? ______________________/ | | - avec verbe auxilaire être ? _________________________/ | - avec verbe auxilaire avoir ? ____________________________/ + avec verbe auxiliaire être ? _________________________/ | + avec verbe auxiliaire avoir ? ____________________________/ Infinitif :Y Participe présent :P Participe passé :Q Index: gc_lang/fr/dictionnaire/orthographe/README.old.txt ================================================================== --- gc_lang/fr/dictionnaire/orthographe/README.old.txt +++ gc_lang/fr/dictionnaire/orthographe/README.old.txt @@ -146,11 +146,11 @@ * Des centaines de nouvelles entrées. * Des centaines de corrections. * Mise à jour avec les entrées proposées sur le site "dico|savant". * Reprise partielle des corrections et ajouts du dictionnaire de Vazkor du 08 septembre 2007. - A la demande de l'intéressé, seul son pseudonyme demeure. La page web + À la demande de l'intéressé, seul son pseudonyme demeure. La page web fournissant ce dictionnaire a été effacée. La plupart des ajouts et des modifications ont été repris (environ 3200 sur 4900). Seules les suppressions des entrées erronées ont été reprises (environ 800 sur 12300). Les termes rares, scientifiques, mathématiques, les mots composés, etc. n'ont pas été effacés. @@ -317,13 +317,13 @@ ##### VERSION 1.0.1 ########################################################### Version corrigée de la liste de mots avec regroupement des mots équivalents afin de supprimer des fautes lors de la correction (les mots sont considérés comme faux -si ils existent en double dans la liste de mots) +s’ils existent en double dans la liste de mots) ##### VERSION 1.0.0 ########################################################### Version du dictionnaire MySpell fr_FR générée automatiquement depuis à partir de la -convertion du fichier affix et des listes de mots créés par Christophe Pythoud pour +conversion du fichier affix et des listes de mots créés par Christophe Pythoud pour Ispell Index: gc_lang/fr/dictionnaire/orthographe/changelog.old.txt ================================================================== --- gc_lang/fr/dictionnaire/orthographe/changelog.old.txt +++ gc_lang/fr/dictionnaire/orthographe/changelog.old.txt @@ -9,11 +9,11 @@ - conversion faite par script (auteurs inconnus) - corrections pour mise en conformité avec les contraintes de Myspell (auteurs inconnus) * Dictionnaire pour Myspell (orthographe réformée) [2005-2006], par Mat. Schopfer (nom incertain, car je le tire d’une adresse mail) - élaboré à partir du dictionnaire 1.0.1 - - restructuration du fichier des affixes, suppression des paramètres inutilisés, suppression des paramètres utiles à un seul verbes + - restructuration du fichier des affixes, suppression des paramètres inutilisés, suppression des paramètres utiles à un seul verbe - ajouts de nombreux noms propres et de néologismes - correction des pluriels de quelques mots en -al (naval, banal ...) - correction de la 2e personne du pluriel de l'indicatif des verbes dérivés de dire (prédire, dédire, médire ...) - regroupement des verbes avec leurs dérivés à préfixes commençant par une consonne (contre-, dé-, ré-, pré-, sur-) Index: gc_lang/fr/dictionnaire/orthographe/changelog.txt ================================================================== --- gc_lang/fr/dictionnaire/orthographe/changelog.txt +++ gc_lang/fr/dictionnaire/orthographe/changelog.txt @@ -179,11 +179,11 @@ — Des milliers de suppressions (redondances ou mots jugés trop rares) 1.? // 2005–2006 Dictionnaire avec orthographe réformée, par Mat. Schopfer (nom incertain, tiré d’une adresse mail) (élaboré à partir du dictionnaire 1.0.1) - — Restructuration du fichier des affixes, suppression des paramètres inutilisés, suppression des paramètres utiles à un seul verbes + — Restructuration du fichier des affixes, suppression des paramètres inutilisés, suppression des paramètres utiles à un seul verbe — Ajouts de nombreux noms propres et de néologismes — Correction des pluriels de quelques mots en -al (naval, banal ...) — Correction de la 2e personne du pluriel de l'indicatif des verbes dérivés de dire (prédire, dédire, médire ...) — Regroupement des verbes avec leurs dérivés à préfixes commençant par une consonne (contre-, dé-, ré-, pré-, sur-) Index: gc_lang/fr/oxt/Lexicographer/Enumerator.py ================================================================== --- gc_lang/fr/oxt/Lexicographer/Enumerator.py +++ gc_lang/fr/oxt/Lexicographer/Enumerator.py @@ -3,10 +3,11 @@ # License: MPL 2 import unohelper import uno import traceback +import platform import helpers import enum_strings import grammalecte.graphspell as sc @@ -143,11 +144,11 @@ ) self._addWidget('num_of_entries', 'FixedText', nX, nY1+210, 30, nHeight, Label = self.dUI.get('num_of_entries', "#err"), Align = 2) self.xNumWord = self._addWidget('num_of_entries_res', 'FixedText', nX+35, nY1+210, 25, nHeight, Label = "—") self._addWidget('tot_of_entries', 'FixedText', nX+60, nY1+210, 30, nHeight, Label = self.dUI.get('tot_of_entries', "#err"), Align = 2) self.xTotWord = self._addWidget('tot_of_entries_res', 'FixedText', nX+95, nY1+210, 30, nHeight, Label = "—") - self.xSearch = self._addWidget('search_button', 'Button', nX+145, nY1+210, 30, nHeight, Label = ">>>", Enabled = False) + self.xSearch = self._addWidget('search_button', 'Button', nX+145, nY1+210, 30, nHeight, Label = ">>>", HelpText=self.dUI.get('goto', "#err"), Enabled = False) self.xExport = self._addWidget('export_button', 'Button', nX+180, nY1+210, 40, nHeight, Label = self.dUI.get('export', "#err"), Enabled = False) # Tag # Note: the only way to group RadioButtons is to create them successively self._addWidget("charstyle_section", 'FixedLine', nX, nY2, 200, nHeight, Label = self.dUI.get("charstyle_section", "#err"), FontDescriptor = xFDTitle) @@ -323,18 +324,20 @@ sText += sWord + "\t" + str(nOccur) + "\n" try: xFilePicker = self.xSvMgr.createInstanceWithContext('com.sun.star.ui.dialogs.FilePicker', self.ctx) # other possibility: com.sun.star.ui.dialogs.SystemFilePicker xFilePicker.initialize([uno.getConstantByName("com.sun.star.ui.dialogs.TemplateDescription.FILESAVE_SIMPLE")]) # seems useless xFilePicker.appendFilter("Supported files", "*.txt") - xFilePicker.setDefaultName("word_count.txt") # useless, doesn’t work + xFilePicker.setDefaultName("word_count.txt") # doesn’t work on Windows xFilePicker.setDisplayDirectory("") xFilePicker.setMultiSelectionMode(False) nResult = xFilePicker.execute() if nResult == 1: # lFile = xFilePicker.getSelectedFiles() lFile = xFilePicker.getFiles() - spfExported = lFile[0][8:] # remove file:/// + spfExported = lFile[0][5:].lstrip("/") # remove file:// + if platform.system() != "Windows": + spfExported = "/" + spfExported #spfExported = os.path.join(os.path.expanduser("~"), "fr.personal.json") with open(spfExported, "w", encoding="utf-8") as hDst: hDst.write(sText) except: sMessage = traceback.format_exc() Index: gc_lang/fr/oxt/Lexicographer/enum_strings.py ================================================================== --- gc_lang/fr/oxt/Lexicographer/enum_strings.py +++ gc_lang/fr/oxt/Lexicographer/enum_strings.py @@ -11,10 +11,11 @@ "count_button": "Compter tout", "count2_button": "Compter par lemme", "unknown_button": "Mots inconnus", "num_of_entries": "Entrées :", "tot_of_entries": "Total :", + "goto": "Sélectionnez une ou plusieurs entrées, puis cliquez sur ce bouton pour trouver la prochaine occurrence", "export": "Exporter", "words": "Mots", "lemmas": "Lemmes", "unknown_words": "Mots inconnus", @@ -39,10 +40,11 @@ "count_button": "Count all", "count2_button": "Count by lemma", "unknown_button": "Unknown words", "num_of_entries": "Entries:", "tot_of_entries": "Total:", + "goto": "select one or several entries, then click on this button to find the next occurrence", "export": "Export", "words": "Words", "lemmas": "Lemmas", "unknown_words": "Unknown words", Index: gc_lang/fr/rules.grx ================================================================== --- gc_lang/fr/rules.grx +++ gc_lang/fr/rules.grx @@ -17,34 +17,10 @@ # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Grammalecte. If not, see # - -# DOCUMENTATION - -# [++] : séparateur des règles pour le paragraphe et des règles pour la phrase. - -# Types d’action: -# ->> erreur -# ~>> préprocesseur de texte -# =>> désambiguïsateur - -# RÈGLES PAR EXPRESSIONS RÉGULIÈRES -# Expressions régulières en Python : http://docs.python.org/library/re.html -# Groups positioning code for JavaScript: -# Always begins by @@ -# 0 ... n left boundary position from left -# $ right boundary -# w word boundaries -# * something somewhere -# ** something somewhere after previous group -# >x:_ within group x, _ is group position code within group x - -# Fin d’interprétation du fichier avec une ligne commençant par #END - - # ERREURS COURANTES # http://fr.wikipedia.org/wiki/Wikip%C3%A9dia:Fautes_d%27orthographe/Courantes @@ -1774,15 +1750,15 @@ __purge_punc_début_phrase__ [?|!|:|;|…|‘|’|'|¿|¡] <<- ~2>> * [-|–|—] ?[-|–|—]¿ - <<- />> tiret1 + <<- />> _tiret1_ <<- ~2>> * [•|·|.] - <<- />> puce1 + <<- />> _puce1_ <<- ~2>> * __purge_fin_phrase__ [.|…|?|!|:|;|–|—|•|·|…|«|»|‘|’|“|”|"|'|¿|¡|-] ?[.|…|?|!|:|;|–|—|•|·|…|«|»|‘|’|“|”|"|'|¿|¡|-]¿ @@ -1807,35 +1783,35 @@ !!! Désambiguïsation !! !!! !!! __da_le_la_les_leur__ - je [le|la|les|leur] + je [le|la|l’|les|leur] <<- not morph(<1, ":1s") =>> select(\2, ":Ov") - tu [le|la|les|leur] + tu [le|la|l’|les|leur] <<- not morph(<1, ":(?:2s|V0)") =>> select(\2, ":Ov") - [il|on] [le|la|les|leur] + [il|on] [le|la|l’|les|leur] <<- not morph(<1, ":3s") =>> select(\2, ":Ov") - elle [le|la|les|leur] + elle [le|la|l’|les|leur] <<- not morph(<1, ":(?:3s|R)") =>> select(\2, ":Ov") - nous [le|la|les|leur] + nous [le|la|l’|les|leur] <<- not morph(<1, ":(?:1p|R)") =>> select(\2, ":Ov") - vous [le|la|les|leur] + vous [le|la|l’|les|leur] <<- not morph(<1, ":(?:2p|R)") =>> select(\2, ":Ov") - ils [le|la|les|leur] + ils [le|la|l’|les|leur] <<- not morph(<1, ":3p") =>> select(\2, ":Ov") - elles [le|la|les|leur] + elles [le|la|l’|les|leur] <<- not morph(<1, ":(?:3p|R)") =>> select(\2, ":Ov") - [ne|n’|me|m’|te|t’|se|s’] [le|la|les|leur] + [ne|n’|me|m’|te|t’|se|s’] [le|la|l’|les|leur] <<- =>> select(\2, ":Ov") le $:N¬* <<- not value(<1, "|ne|n’|me|m’|te|t’|se|s’|") =>> select(\1, ":D") @@ -1844,11 +1820,11 @@ les $:N¬* <<- not value(<1, "|ne|n’|me|m’|te|t’|se|s’|") =>> select(\1, ":D") l’ $:N¬* - <<- not value(<1, "|ne|n’|me|m’|te|t’|se|s’|") =>> define(\1, [":D:e:s"]) + <<- not value(<1, "|ne|n’|me|m’|te|t’|se|s’|") =>> select(\1, ":D") __da_nous_vous__ [ne|n’] [nous|vous] <<- =>> exclude(\2, ":Os") @@ -1923,10 +1899,19 @@ <<- =>> exclude(\4, ":N") >falloir [pouvoir|savoir|vouloir|manger|conseiller] <<- =>> exclude(\2, ":N") + v’nir + <<- ~>> venir + + s’ ra + <<- ~>> sera + + s’ ras + <<- ~>> seras + __da_été__ >avoir ?@:[WX]¿ été <<- =>> select(\-1, ":Q") @@ -1939,10 +1924,11 @@ <<- =>> exclude(\1, ":G") y compris <<- not value(<1, "|n’|j’|tu|t’|m’|s’|") ~>> ␣ <<- __also__ =>> define(\1, [":G:R"]) + __da_puis__ puis <<- not value(<1, "|je|ne|n’|le|la|l’|les|lui|nous|vous|leur|") =>> =exclude(\1, ":V") @@ -2058,79 +2044,82 @@ !!! __tag_sujets__ [je|j’] [moi|moi-même] ?[seul|seule]¿ ?,¿ qui - <<- />> 1s + <<- />> _1s_ [moi|moi-même] [seul|seule] - <<- not value(<1, "|de|d’|par|") />> 1s + <<- not value(<1, "|de|d’|par|") />> _1s_ tu t’ $:2s t’ [en|y] $:2s [toi|toi-même] ?[seul|seule]¿ ?,¿ qui - <<- />> 2s + <<- />> _2s_ [toi|toi-même] [seul|seule] - <<- not value(<1, "|de|d’|par|") />> 2s + <<- not value(<1, "|de|d’|par|") />> _2s_ nous ?[seul|seuls|seules]¿ ?,¿ qui nous-même qui nous-mêmes qui [et|ou] [moi|moi-même] ni [moi|moi-même] [moi|moi-même] et - <<- />> 1p + <<- />> _1p_ nous nous-même nous-mêmes nous [seul|seuls|seules] nous autres - <<- not value(<1, "|de|d’|par|") />> 1p + <<- not value(<1, "|de|d’|par|") />> _1p_ vous ?[seul|seuls|seules]¿ ?,¿ qui vous-même qui vous-mêmes qui [et|ou] [toi|toi-même] ni [toi|toi-même] [toi|toi-même] et - <<- />> 2p + <<- />> _2p_ vous vous-même vous-mêmes vous [seul|seule|seuls|seules] vous autres - <<- not value(<1, "|de|d’|par|") />> 2p + <<- not value(<1, "|de|d’|par|") />> _2p_ __tag_prop_sub__ dont - <<- />> dont + <<- />> _dont_|_propsub_ ce [que|qu’] - <<- />> ce_que + <<- />> _ceque_|_propsub_ [que|qu’] - <<- />> que + <<- />> _que_|_propsub_ qui - <<- />> qui + <<- />> _qui_|_propsub_ + + [lequel|laquelle|lesquels|lesquelles] + <<- morph(<1, ":R") />> _prepquel_|_propsub_ à [qui|quoi] auquel auxquels auxquelles à laquelle - <<- />> àCOI + <<- />> _àCOI_|_propsub_ __tag_ni__ ni - <<- />> ni + <<- />> _ni_ !!!! Fusions et immunités !! __fusions_mots_grammaticaux__ @@ -2159,10 +2148,11 @@ [cultural|gender] studies <<- ~>> ␣ <<- =>> define(\1, [":N:f:p"]) black [>bloc|>block] + jet set machine [learning+s] nec plus ultra standing >ovation star [system+s] <<- ~>> ␣ @@ -2175,10 +2165,16 @@ <<- space_after(\1, 0, 0) and space_after(\1, 0, 0) ~>> ␣ *NUM ~^h[0-9][0-9]$ <<- space_after(\1, 0, 0) ~>> ␣ + +__fusions_noms_communs_séparés_slah__ + *WORD / *WORD + <<- space_after(\1, 0, 0) and space_after(\2, 0, 0) and morph(\1, ":N") and morph(\-1, ":N") ~>> ␣ + <<- =>> define(\1, [":N:e:i"]) + __fusions_noms_propres__ cac 40 <<- ~>> ␣ @@ -2243,14 +2239,17 @@ <<- morph(\1, ":V") !-2>> soit pour soit contre <<- !3>> + y a ?@:[WX]¿ faute + <<- !-1>> TEST: New York {{étaient}} {{devenue}} la plaque tournante de tous les trafics. TEST: de Bordeaux ou de n’importe où - +TEST: il n’y a pas faute. +TEST: une séparation hommes/femmes !!!! Noms composés !! __tag_noms__ @@ -3785,14 +3784,15 @@ [S2Br2|Sb2O3|Sb2O5|Sb2OS2|Sb2S3|Sb2Se3|Sb2Se5|Sb2Te3|SbBr3|SbCl3|SbCl5|SbI3|SbPO4|Sc2O3|SeBr4|SeCl4|SeO2|SeOCl2|SeOF2|SF4|SF6|Si3N4|SiBr4|SiCl4|SiH4|SiI4|SiO2|Sn3Sb4|SnBr2|SnBr2Cl2|SnBr3Cl|SnBr4|SnBrCl3|SnCl2|SnCl2I2|SnCl4|SnI4|SnO2|SnS2|SnSe2|SnTe4|SO2|SO2Cl2|SO2F2|SO3|SOF2|Sr2RuO4|SrBr2|SrC2O4|SrCl2|SrCO3|SrF2|SrHfO3|SrI2|SrMoO4|SrSeO3|SrSeO4|SrTeO3|SrTeO4|SrTiO3] [T2O|TaBr3|TaBr5|TaCl5|TaI5|TeBr2|TeBr4|TeCl2|TeCl4|TeI2|TeI4|TeO2|ThO2|TiBr4|TiCl2I2|TiCl3I|TiCl4|TiH2|TiI4|TiO2|Tl2MoO4|Tl2SeO3|Tl2TeO3|Tl2WO4|Tl3As|TlBr3|TlC2H3O2|TlCl3|TlI3|TlIO3|TlNO3|TlPF6|TmCl3] [U3O8|UBr2|UBr3|UBr5|UC2|UCl3|UCl4|UF4|UF6|UI3|UO2|UO2Cl2|UO2SO4|UO3|US2|USe2|UTe2|V2O3|V2O5|VBr2|VBr3|VCl2|VCl3|VI3|VOC2O4|VOSO4|WBr2|WBr3|WBr4|WBr5|WBr6|WCl2|WCl3|WCl4|WCl5|WCl6|WF4|WF5|WF6|WI2|WI4|WO2|WO2Br2|WO2Cl2|WO2I2|WO3|WOBr3|WOBr4|WOCl3|WOCl4|WOF4|WS2|WS3|WSe2|WTe2|Y2O3|Y2S3] [Yb2O3|Yb2S3|Yb2Se3|YB6|YbBr2|YbBr3|YbCl2|YbCl3|YbF2|YbF3|YbI2|YbI3|YbPO4|YBr3|YbSi2|YC2|YCl3|YF3|YVO4] [Zn2P2O7|Zn2SiO4|Zn3As2|Zn3N2|Zn3P2|Zn3Sb2|ZnBr2|ZnCl2|ZnCO3|ZnCr2O4|ZnF2|ZnI2|ZnMoO4|ZnO2|ZnS2O3|ZnSeO3|ZnSeO4|ZnSnO3|ZnSO3|ZnSO4|ZnTeO3|ZnTeO4|ZnTiO3|ZnWO4|ZnZrO3|ZrB2|ZrBr4|ZrCl4|ZrF4|ZrI4|ZrO2|ZrP2|ZrS2|ZrSi2|ZrSiO4] - <<- /chim/ ->> =\1.replace("2", "₂").replace("3", "₃").replace("4", "₄").replace("5", "₅").replace("6", "₆").replace("7", "₇").replace("8", "₈").replace("9", "₉").replace("0", "₀") + <<- /chim/ ->> =\1.replace("1", "₁").replace("2", "₂").replace("3", "₃").replace("4", "₄").replace("5", "₅").replace("6", "₆").replace("7", "₇").replace("8", "₈").replace("9", "₉").replace("0", "₀") # Typographie des composés chimiques. [!] -TEST: __chim__ les molécules {{CaCO3}} et {{H2O}}… +TEST: __chim__ les molécules {{CaCO3}}… ->> CaCO₃ +TEST: __chim__ {{C5H10N2O3}} ->> C₅H₁₀N₂O₃ !!!! Dates !! @@ -3849,14 +3849,14 @@ <<- /tu/ morph(\2, ":[NB]", ":V0e") and not value(>1, "|où|") -2:3>> \2-\3 # Il manque probablement un trait d’union. [ce|cet|cette|ces] *WORD ci <<- /tu/ morph(\2, ":[NB]", ":V0e") -2:3>> \2-\3 # Il manque probablement un trait d’union. - [ce|cet|cette|ces] *WORD la [|,] + [ce|cet|cette|ces] *WORD la [|,|)] <<- /tu/ morph(\2, ":[NB]") -2:3>> \2-là # Il manque probablement un trait d’union. - [ce|cet|cette|ces] *WORD si [|,] + [ce|cet|cette|ces] *WORD si [|,|)] <<- /tu/ morph(\2, ":[NB]") -2:3>> \2-ci # Il manque probablement un trait d’union. TEST: à ce {{moment là}} ->> moment-là TEST: Il faisait froid cet {{hiver la}}. ->> hiver-là TEST: Ces {{trois là}} sont incollables. @@ -4218,10 +4218,13 @@ [auto|moto] >club <<- /tu/ ->> \1\2|\1-\2|\2 \1 # Mettez un trait d’union, fusionnez ou inversez les termes. <<- ~>> ␣ + >cul de sac + <<- /tu/ ->> \1-\2-\3 # Mettez des traits d’union.|https://fr.wiktionary.org/wiki/cul-de-sac + déjà vu <<- /tu/ morph(<1, ":D.*:[me]") ->> \1-\2 # S’il s’agit d’un nom, mettez un trait d’union.|https://fr.wiktionary.org/wiki/d%C3%A9j%C3%A0-vu état major états majors @@ -4246,11 +4249,11 @@ <<- /tu/ ->> n-\2 # Il manque un trait d’union. [nord|sud] ouest <<- /tu/ ->> \1-ouest # Il manque un trait d’union. - [nord|sud] est [|,] + [nord|sud] est [|,|)] <<- /tu/ ->> \1-est # Il manque un trait d’union. outre mer <<- /tu/ ->> outre-mer # Il manque un trait d’union. @@ -4312,10 +4315,13 @@ <<- /tu/ ->> \1-\2 # Il manque un trait d’union. du sur >mesure <<- /tu/ -2:0>> sur-mesures # Il manque un trait d’union. + tape [à|a] l’ [œil|oeil] + <<- /tu/ not morph(<1, ":O[sv]") ->> tape-à-l’œil # Il manque des traits d’union.|https://fr.wiktionary.org/wiki/tape-%C3%A0-l%E2%80%99%C5%93il + [un|le|ce|du|mon|ton|son|notre|votre|leur] terre plein <<- /tu/ not value(>1, "|de|d’|") -2:3>> terre-plein # Il manque probablement un trait d’union.|https://fr.wiktionary.org/wiki/terre-plein >tête [à|a] >tête <<- /tu/ morph(<1, ":D") ->> tête-à-tête # Il manque les traits d’union. @@ -4359,10 +4365,11 @@ TEST: ils sont allés au {{centre ville}}. TEST: un {{château fort}} n’est pas une demeure confortable TEST: des {{châteaux forts}} TEST: un {{coffre fort}} TEST: des {{coffres forts}} +TEST: encore un {{cul de sac}} TEST: Le {{moto club}} était sur le point de faire faillite. TEST: J’ai beaucoup de {{déjà vu}}. TEST: L’{{état major}} n’a pas encore tranché la question. TEST: Le {{face à face}} entre les forces de l’ordre et les manifestants se poursuit devant l’hôtel de ville à Bordeaux depuis environ 1h30. TEST: {{gagne pain}} de merde @@ -4395,20 +4402,20 @@ TEST: Tout ce {{soi disant}} esprit religieux TEST: implications {{sous jacentes}} ->> sous-jacentes TEST: c’est du {{sur mesure}} TEST: leur {{terre plein}} TEST: Ils versent dans leur terre plein de poisons. +TEST: C’est un peu trop {{tape à l’œil}} comme couleur, tu ne trouves pas ? TEST: beaucoup de {{tête à tête}} TEST: {{un}} {{trompe l’œil}} TEST: un {{va et vient}} incessant me casse la tête TEST: il va et vient sans mot dire TEST: Il a été nommé {{vice président}} TEST: un super {{week end}} ->> week-end __tu_va_t_en__ - va t en va t en va t-en va-t en va-t-en vat-en @@ -4419,13 +4426,14 @@ va t’en >guerre va-t en >guerre va t-en >guerre vat’en >guerre vat-en >guerre + vat en >guerre va-t-en >guerre va-t’en-guerre - <<- /tu/ ->> va-t-en-guerre # Va-t-en-guerre (invariable) : des traits d’union sont nécessaires. + <<- /tu/ ->> va-t-en-guerre # Va-t-en-guerre (invariable) : des traits d’union sont nécessaires.|https://fr.wiktionary.org/wiki/va-t-en-guerre TEST: {{Va-t-en}}, c’en est assez. TEST: Un {{va-t’en guerre}}, on ne peut pas lui faire confiance. TEST: Les {{va-t-en guerre}} sont de sortie. TEST: Elle va t’en donner, des devoirs. @@ -4669,14 +4677,14 @@ __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 tag_before(\1, "1p") + <<- /inte/ space_after(\-2, 1, 1) and morph(\-2, ":V.*:1p", ":[GW]") and not tag_before(\1, "_1p_") --2:-1>> \-2-\-1 # Forme interrogative ? Mettez un trait d’union. - , ~ons$ nous [|,] + , ~ons$ nous [|,|)] , ~ons$ nous @:¬:(?:1p|Y) <<- /inte/ space_after(\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 @@ -4703,14 +4711,14 @@ __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 tag_before(\1, "2p") + <<- /inte/ space_after(\-2, 1, 1) and morph(\-2, ":V.*:2p", ":[GW]") and not tag_before(\1, "_2p_") --2:-1>> \-2-\-1 # Forme interrogative ? Mettez un trait d’union. - , ~ez$ vous [|,] + , ~ez$ vous [|,|)] , ~ez$ vous @:¬:(?:2p|Y) <<- /inte/ space_after(\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 @@ -4765,11 +4773,11 @@ TEST: Tape-toi Patrick. __virg_après_verbe_COD__ [le|la|l’|les] $:Y $:M - <<- /virg/ not value(\2, "|appeler|") and not tag_before(\1, "que") + <<- /virg/ not value(\2, "|appeler|") and not tag_before(\1, "_que_") -2>> \2, # Une virgule est probablement souhaitable. [le|la|l’|les] *WORD ?[cher|chère]¿ @:M[12] <<- /virg/ morph(\2, ":[123][sp]", ">appeler/|:[NA]") and not value(<1, "|que|qu’|") and not (value(<1, "|ne|n’|") and value(<2, "|que|qu’|")) @@ -4802,11 +4810,11 @@ __typo_À_début_phrase!7__ A @:[GNAY]¬:(?:Q|3s) <<- /typo/ not value(\3, "|t’|priori|posteriori|postériori|contrario|capella|fortiori|") -2>> À # S’il s’agit de la préposition « à », il faut accentuer la majuscule. - A bientôt [|,] + A bientôt [|,|)] <<- /typo/ -2>> À # S’il s’agit de la préposition « à », il faut accentuer la majuscule. A t’ *WORD <<- /typo/ not value(\4, "|il|ils|elle|elles|iel|iels|on|ont|") -2>> À # S’il s’agit de la préposition « à », il faut accentuer la majuscule. @@ -5906,25 +5914,25 @@ ## Incohérences avec formes verbales 1sg et 2sg sans sujet __conj_xxxai__sans_sujet!3__ [ne|n’] ?[le|la|l’|les|en|me|m’|te|t’|nous|vous|lui|leur|y]¿ ~ai$ - <<- /conj/ not tag_before(\1, "1s") and morph(\-1, ":1s", ":(?:E|G|W|M|J|3[sp])") + <<- /conj/ not tag_before(\1, "_1s_") and morph(\-1, ":1s", ":(?:E|G|W|M|J|3[sp])") --1>> =suggVerb(\-1, ":3s") # Incohérence. Ceci est un verbe à la 1ʳᵉ personne du singulier. Sujet (“je” ou “moi qui”) introuvable. [me|m’|te|t’] ?[le|la|l’|les|en|y]¿ ~ai$ [le|la|l’|les] [lui|leur|en|y] ~ai$ [lui|leur] en ~ai$ - <<- /conj/ not tag_before(\1, "1s") and morph(\-1, ":1s", ":(?:E|G|W|M|J|3[sp])") + <<- /conj/ not tag_before(\1, "_1s_") and morph(\-1, ":1s", ":(?:E|G|W|M|J|3[sp])") --1>> =suggVerb(\-1, ":3s") # Incohérence. Ceci est un verbe à la 1ʳᵉ personne du singulier. Sujet (“je” ou “moi qui”) introuvable. [nous|vous] ?[le|la|l’|les|en|y]¿ ~ai$ - <<- /conj/ not tag_before(\-1, "1s") and not morph(<1, ":R") and morph(\-1, ":1s", ":(?:E|G|W|M|J|3[sp]|2p|1p)") + <<- /conj/ not tag_before(\-1, "_1s_") and not morph(<1, ":R") and morph(\-1, ":1s", ":(?:E|G|W|M|J|3[sp]|2p|1p)") --1>> =suggVerb(\-1, ":3s") # Incohérence. Ceci est un verbe à la 1ʳᵉ personne du singulier. Sujet (“je” ou “moi qui”) introuvable. ~ai$ - <<- /conj/ not tag_before(\1, "1s") and morph(\1, ":1s", ":(?:E|G|W|M|J|3[sp]|N|A|Q)") and not (\1.istitle() and before0("\\w")) + <<- /conj/ not tag_before(\1, "_1s_") and morph(\1, ":1s", ":(?:E|G|W|M|J|3[sp]|N|A|Q)") and not (\1.istitle() and before0("\\w")) -1>> =suggVerb(\1, ":3s") # Incohérence. Ceci est un verbe à la 1ʳᵉ personne du singulier. Sujet (“je” ou “moi qui”) introuvable. TEST: avançait et s’{{donnai}} en spectacle TEST: il avancera, ne {{serai}} ce que de quelques pas TEST: m’{{occupai}} que deux jours, cette ânerie @@ -5933,25 +5941,25 @@ TEST: ce qui, dans le meilleur des cas, peut-être, oui, c’est vrai, vous {{donnerai}} l’avantage. __conj_xxxas_xxxes__sans_sujet!3__ [ne|n’] ?[le|la|l’|les|en|me|m’|te|t’|nous|vous|lui|leur|y]¿ ~[ae]s$ - <<- /conj/ not tag_before(\1, "2s") and morph(\-1, ":2s", ":(?:E|G|W|M|J|3[sp]|1p)") + <<- /conj/ not tag_before(\1, "_2s_") and morph(\-1, ":2s", ":(?:E|G|W|M|J|3[sp]|1p)") --1>> =suggVerb(\-1, ":3s") # Incohérence. Ceci est un verbe à la 2ᵉ personne du singulier. Sujet (“tu” ou “toi qui”) introuvable. [me|m’|te|t’] ?[le|la|l’|les|en|y]¿ ~[ae]s$ [le|la|l’|les] [lui|leur|en|y] ~[ae]s$ [lui|leur] en ~[ae]s$ - <<- /conj/ not tag_before(\-1, "2s") and morph(\-1, ":2s", ":(?:E|G|W|M|J|3[sp]|1p)") + <<- /conj/ not tag_before(\-1, "_2s_") and morph(\-1, ":2s", ":(?:E|G|W|M|J|3[sp]|1p)") --1>> =suggVerb(\-1, ":3s") # Incohérence. Ceci est un verbe à la 2ᵉ personne du singulier. Sujet (“tu” ou “toi qui”) introuvable. [nous|vous] ?[le|la|l’|les|en|y]¿ ~[ae]s$ - <<- /conj/ not tag_before(\-1, "2s") and not morph(<1, ":R") and morph(\-1, ":2s", ":(?:E|G|W|M|J|3[sp]|2p|1p)") + <<- /conj/ not tag_before(\-1, "_2s_") and not morph(<1, ":R") and morph(\-1, ":2s", ":(?:E|G|W|M|J|3[sp]|2p|1p)") --1>> =suggVerb(\-1, ":3s") # Incohérence. Ceci est un verbe à la 2ᵉ personne du singulier. Sujet (“tu” ou “toi qui”) introuvable. ~..[ae]s$ - <<- /conj/ not tag_before(\1, "2s") and morph(\1, ":2s", ":(?:E|G|W|M|J|3[sp]|N|A|Q|1p)") and not (\1.istitle() and before0("\\w")) + <<- /conj/ not tag_before(\1, "_2s_") and morph(\1, ":2s", ":(?:E|G|W|M|J|3[sp]|N|A|Q|1p)") and not (\1.istitle() and before0("\\w")) -1>> =suggVerb(\1, ":3s") # Incohérence. Ceci est un verbe à la 2ᵉ personne du singulier. Sujet (“tu” ou “toi qui”) introuvable. TEST: se {{demandes}} comment faire TEST: oui, il l’ignorait, ne me {{demandes}} comment c’était possible TEST: c’est ça, me {{demandes}} comment c’est possible @@ -5962,29 +5970,29 @@ TEST: nous laisserons derrière nous les empires de la Terre. __conj_xxxxxs_sans_sujet!3__ [ne|n’] ?[le|la|l’|les|en|me|m’|te|t’|nous|vous|lui|leur|y]¿ ~[iudnrtpcï]s$ - <<- /conj/ not tag_before(\1, "1s") and not tag_before(\1, "2s") and morph(\-1, ":[12]s", ":(?:E|G|W|M|J|3[sp]|2p|1p)") + <<- /conj/ not tag_before(\1, "_1s_") and not tag_before(\1, "_2s_") and morph(\-1, ":[12]s", ":(?:E|G|W|M|J|3[sp]|2p|1p)") --1>> =suggVerb(\-1, ":3s") # Incohérence. Le sujet de cette forme verbale est introuvable. [me|m’|te|t’] ?[le|la|l’|les|en|y]¿ ~[iudnrtpcï]s$ [le|la|l’|les] [lui|leur|en|y] ~[iudnrtpcï]s$ [lui|leur] en ~[iudnrtpcï]s$ - <<- /conj/ not tag_before(\-1, "1s") and not tag_before(\-1, "2s") and morph(\-1, ":[12]s", ":(?:E|G|W|M|J|3[sp]|2p|1p)") + <<- /conj/ not tag_before(\-1, "_1s_") and not tag_before(\-1, "_2s_") and morph(\-1, ":[12]s", ":(?:E|G|W|M|J|3[sp]|2p|1p)") --1>> =suggVerb(\-1, ":3s") # Incohérence. Le sujet de cette forme verbale est introuvable. [nous|vous] ?[le|la|l’|les|en|y]¿ ~[iudnrtpcï]s$ - <<- /conj/ not tag_before(\-1, "1s") and not tag_before(\1, "2s") and not morph(<1, ":R") and morph(\-1, ":[12]s", ":(?:E|G|W|M|J|3[sp]|2p|1p)") + <<- /conj/ not tag_before(\-1, "_1s_") and not tag_before(\1, "_2s_") and not morph(<1, ":R") and morph(\-1, ":[12]s", ":(?:E|G|W|M|J|3[sp]|2p|1p)") --1>> =suggVerb(\-1, ":3s") # Incohérence. Le sujet de cette forme verbale est introuvable. étais - <<- /conj/ not tag_before(\1, "1s") and not tag_before(\1, "2s") and not (\1.istitle() and before0("\\w")) and not morph(<1, ":[DA].*:p") + <<- /conj/ not tag_before(\1, "_1s_") and not tag_before(\1, "_2s_") and not (\1.istitle() and before0("\\w")) and not morph(<1, ":[DA].*:p") -1>> =suggVerb(\1, ":3s") # Incohérence. Le sujet de cette forme verbale est introuvable. ~[iudnrtpcï]s$ - <<- /conj/ not tag_before(\1, "1s") and not tag_before(\1, "2s") and morph(\1, ":[12]s", ":(?:E|G|W|M|J|3[sp]|2p|1p|V0e|N|A|Q)") and not (\1.istitle() and before0("\\w")) + <<- /conj/ not tag_before(\1, "_1s_") and not tag_before(\1, "_2s_") and morph(\1, ":[12]s", ":(?:E|G|W|M|J|3[sp]|2p|1p|V0e|N|A|Q)") and not (\1.istitle() and before0("\\w")) -1>> =suggVerb(\1, ":3s") # Incohérence. Le sujet de cette forme verbale est introuvable. TEST: s’{{précipitais}} dans la gueule du loup TEST: ne leur {{donnais}} aucune raison de se faire aimer TEST: leur en {{faisais}} baver @@ -6003,20 +6011,20 @@ __conj_peux_veux_vaux_équivaux_prévaux_sans_sujet!3__ [ne|n’] ?[le|la|l’|les|en|vous|lui|leur|y]¿ [peux|veux|vaux|équivaux|prévaux] [me|m’|te|t’|nous|vous] ?[le|la|l’|les|en|y]¿ [peux|veux|vaux|équivaux|prévaux] [le|la|l’|les] [lui|leur|en|y] [peux|veux|vaux|équivaux|prévaux] [lui|leur] en [peux|veux|vaux|équivaux|prévaux] - <<- /conj/ not tag_before(\1, "1s") and not tag_before(\1, "2s") + <<- /conj/ not tag_before(\1, "_1s_") and not tag_before(\1, "_2s_") --1>> =suggVerb(\-1, ":3s") # Incohérence. Le sujet de cette forme verbale est introuvable. vaux - <<- /conj/ not tag_before(\1, "1s") and not tag_before(\1, "2s") and not (\1.istitle() and before0("\\w")) + <<- /conj/ not tag_before(\1, "_1s_") and not tag_before(\1, "_2s_") and not (\1.istitle() and before0("\\w")) and not morph(<1, ":(?:R|D.*:p)") -1>> =suggVerb(\1, ":3s") # Incohérence. Le sujet de cette forme verbale est introuvable. [peux|veux|équivaux|prévaux] - <<- /conj/ not tag_before(\1, "1s") and not tag_before(\1, "2s") and not (\1.istitle() and before0("\\w")) + <<- /conj/ not tag_before(\1, "_1s_") and not tag_before(\1, "_2s_") and not (\1.istitle() and before0("\\w")) -1>> =suggVerb(\1, ":3s") # Incohérence. Le sujet de cette forme verbale est introuvable. TEST: tu sais, s’{{équivaux}}, voilà. TEST: tu sais, s’en {{veux}} d’avoir raté ça. TEST: s’{{peux}} qu’il avait faim, va savoir @@ -6030,16 +6038,16 @@ ## Incohérences avec formes verbales 1pl et 2pl sans sujet __conj_xxxons_sans_sujet!3__ ~ons$ - <<- /conj/ morph(\1, ":1p", ":[EGMNAJ]") and not tag_before(\1, "1p") and not (\1.istitle() and before0("\\w")) + <<- /conj/ morph(\1, ":1p", ":[EGMNAJ]") and not tag_before(\1, "_1p_") and not (\1.istitle() and before0("\\w")) -1>> =suggVerb(\1, ":3p") # Ceci est un verbe à la 1ʳᵉ personne du pluriel. Sujet (“nous” ou équivalent) introuvable. __conj_xxxez_sans_sujet!3__ ~ez$ - <<- /conj/ morph(\1, ":2p", ":[EGMNAJ]") and not tag_before(\2, "2p") and not (\1.istitle() and before0("\\w")) + <<- /conj/ morph(\1, ":2p", ":[EGMNAJ]") and not tag_before(\2, "_2p_") and not (\1.istitle() and before0("\\w")) -1>> =suggVerb(\1, ":3p") # Ceci est un verbe à la 2ᵉ personne du pluriel. Sujet (“vous” ou équivalent) introuvable. TEST: les hommes et les femmes, qui sans un bruit, sans une parole amère, {{continuerons}} leur tâche n’en seront pas plus récompensés. TEST: il était dit que cette femme et son frère {{promènerez}} leur chien à cette heure de la journée. TEST: cet homme et cette femme {{pouvez}} y parvenir avec de la persévérance @@ -6423,11 +6431,11 @@ TEST: elle aussi {{mangées}}. __conf_presque_vconj__ presque @:[123][sp]¬:[GNAQWM] - <<- /conf/ not tag_before(\1, "ce_que") and not value(<1, "|ou|") -2>> _ # Incohérence probable avec “presque” : « \2 » n’est ni un adjectif, ni un participe passé, ni un adverbe. + <<- /conf/ not tag_before(\1, "_ceque_") and not value(<1, "|ou|") -2>> _ # Incohérence probable avec “presque” : « \2 » n’est ni un adjectif, ni un participe passé, ni un adverbe. TEST: presque {{délaissait}} par tout le monde. TEST: Tout le monde ou presque déteste ces gens-là. @@ -6438,40 +6446,40 @@ TEST: Toutes les blagues qu’on fera sur {{entreront}} dans l’histoire ! TEST: Elles se querellent sans cesse sur presque tout. __conf_si_x_être__ - si *WORD [/-je|/-tu|/-il|/-elle|/-on|/-nous|/-vous|/-ils|/-elles|/-iel|/-iels] + [aussi|si] *WORD [/-je|/-tu|/-il|/-elle|/-on|/-nous|/-vous|/-ils|/-elles|/-iel|/-iels] <<- /conf/ morphVC(\3, ">(?:être|devenir|redevenir|rester|sembler|demeurer|para[îi]tre)/") and morph(\2, ":(?:Y|[123][sp])", ":[AQ]") -2>> =suggVerbPpas(\2) # Incohérence probable. Ce devrait probablement être un participe passé ou un adjectif. TEST: si {{frapper}} fussent-ils, rien ne put les mouvoir. TEST: si détruit soit-il, on pourra le remettre sur ses pieds. __conj_si_x_être__ - si *WORD [/-je|/-tu|/-iel] + [aussi|si] *WORD [/-je|/-tu|/-iel] <<- /conf/ morphVC(\3, ">(?:être|devenir|redevenir|rester|sembler|demeurer|para[îi]tre)/") and morph(\2, ":A.*:p", ":[si]") -2>> =suggSing(\2) # Accord avec “\3” : l’adjectif doit être au singulier. - si *WORD /-il + [aussi|si] *WORD /-il <<- /conf/ morphVC(\3, ">(?:être|devenir|redevenir|rester|sembler|demeurer|para[îi]tre)/") and morph(\2, ":A.*:[fp]", ":[me]:[si]") -2>> =suggMasSing(\2) # Accord avec “\3” : l’adjectif doit être au masculin singulier. - si *WORD /-elle + [aussi|si] *WORD /-elle <<- /conf/ morphVC(\3, ">(?:être|devenir|redevenir|rester|sembler|demeurer|para[îi]tre)/") and morph(\2, ":A.*:[mp]", ":[fe]:[si]") -2>> =suggFemSing(\2) # Accord avec “\3” : l’adjectif doit être au féminin singulier. - si *WORD [/-nous|/-iels] + [aussi|si] *WORD [/-nous|/-iels] <<- /conf/ morphVC(\3, ">(?:être|devenir|redevenir|rester|sembler|demeurer|para[îi]tre)/") and morph(\2, ":A.*:s", ":[pi]") -2>> =suggPlur(\2) # Accord avec “\3” : l’adjectif doit être au pluriel. - si *WORD /-ils + [aussi|si] *WORD /-ils <<- /conf/ morphVC(\3, ">(?:être|devenir|redevenir|rester|sembler|demeurer|para[îi]tre)/") and morph(\2, ":A.*:[sf]", ":[me]:[pi]") -2>> =suggMasPlur(\2) # Accord avec “\3” : l’adjectif doit être au masculin pluriel. - si *WORD /-elles + [aussi|si] *WORD /-elles <<- /conf/ morphVC(\3, ">(?:être|devenir|redevenir|rester|sembler|demeurer|para[îi]tre)/") and morph(\2, ":A.*:[sm]", ":[fe]:[pi]") -2>> =suggFemPlur(\2) # Accord avec “\3” : l’adjectif doit être au féminin pluriel. TEST: si {{clairvoyants}} deviendrais-je TEST: si {{fragiles}} sois-tu @@ -6478,15 +6486,25 @@ TEST: si {{idiote}} semble-t-il TEST: si {{riches}} soit-elle TEST: si {{grand}} paraissons-nous TEST: si {{frappé}} fussent-ils, rien ne put les mouvoir. TEST: si {{étonnés}} demeurent-elles +TEST: si {{malins}} suis-je que je vis le torrent de merde arriver avant tout le monde +TEST: si {{habiles}} fusses-tu, tu perdis la bataille. +TEST: aussi {{fous}} fût-il, il ne fit point illusion. +TEST: si {{belles}} était-elle qu’elle fut enlevée +TEST: aussi {{pressé}} soyons-nous, ça ne viendra pas plus vite +TEST: si {{avare}} sont-ils qu’ils ont refusé de payer +TEST: aussi {{calme}} fussent-elles, elles furent blâmées. + +# pour justifiée qu’elle fût +# [aussi|si] habile qu’il soit __conf_trop_vconj__ trop @:[123][sp]¬:(?:[GNAQWM]|3p) - <<- /conf/ not tag_before(\1, "ce_que") -2>> _ # Incohérence probable avec “trop” : “\2” n’est ni un adjectif, ni un participe passé, ni un adverbe. + <<- /conf/ not tag_before(\1, "_ceque_") -2>> _ # Incohérence probable avec “trop” : “\2” n’est ni un adjectif, ni un participe passé, ni un adverbe. TEST: J’ai trop {{mangeais}}. TEST: Ce que nous réussissons presque sera considéré comme un échec. @@ -6950,11 +6968,11 @@ TEST: une dérive à vau-l’eau. __conf_à_a_locutions__ a ?seulement¿ [*NUM|$:B|quelques|plusieurs] [millimètres|centimètres|décamètres|mètres|kilomètres|verstes|lieues|UA|parsecs|années-lumière] de distance - a [califourchon|cheval|contrecœur|contre-cœur|contrejour|contre-jour|contretemps|contre-temps|demi-mot|domicile|genoux|gogo|distance|nouveau|présent|rebrousse-poil|regret|travers|tout-va|confesse|midi|minuit|perte|rallonge|reculons|risque|sec|tâtons|vélo|vif] + a [califourchon|cheval|contrecœur|contre-cœur|contrejour|contre-jour|contretemps|contre-temps|demi-mot|domicile|genoux|gogo|distance|nouveau|présent|rebrousse-poil|regret|travers|tout-va|confesse|midi|minuit|perte|rallonge|reculons|risque|sec|tâtons|travers|vélo|vif] a [mi-chemin|mi-mandat|mi-mot+s|mi-parcours|mi-temps|mi-voix] a air comprimé a armes égales a aucun prix a autrui @@ -7022,11 +7040,11 @@ a huis clos a intervalles [réguliers|irréguliers] a ?[si|très|trop]¿ juste [raison|titre] a l’ heure actuelle a l’ heure qu’ il est - a l’ [accoutumée|amiable|arrache|avance|avenant|avenir|aveuglette|emporte-pièce|évidence|étouffée|extérieur|improviste|intérieur|inverse|occasion|unanimité|unisson] + a l’ [accoutumée|amiable|arrache|avance|avenant|avenir|aveuglette|écart|emporte-pièce|évidence|étouffée|extérieur|improviste|intérieur|inverse|occasion|unanimité|unisson] a l’ air libre a l’ exclusion de toute autre chose a l’ ordre du jour a l’ œil nu a l’ en croire @@ -7059,10 +7077,11 @@ a main [armée|droite|gauche|levée] a maints égards a maintes reprises a marche forcée a merveille + a mesure [que|qu’] a [mi-course|mi-distance|mi-temps] a [midi|minuit] ?pile¿ a moindre [coût|cout] a moindres frais a moyen terme @@ -7260,10 +7279,11 @@ >pâte a [>pain|>crêpe|>gaufre|>pizza|>tarte|>modeler|>tartiner] >placard a [>balai|>chaussure] >planche a repasser >presse a >scandale >piano a >queue + >pied a terre >pince a linge >punk a >chienne >revenir a la case départ >rouge a >lèvre >sac a [dos|main|langer|merde|foutre] @@ -7350,29 +7370,24 @@ TEST: Mener {{a}} bien cette guerre sera plus difficile qu’on le pense. TEST: Je peux mener {{a}} bien cette opération. TEST: Cette coalition que tu penses mener a bien l’intention de te trahir. -__conf_à_a_après_verbes__ - @:V¬:[YGNAWM] ?$:W¿ a - <<- /conf/ \-1 != "A" and not tag_before(\1, "que") and not tag_before(\1, "dont") and not tag_before(\1, "qui") and not morph(>1, ":Q") - --1>> à # Confusion probable : “a” est la conjugaison du verbe “avoir”. Pour la préposition, écrivez “à”.|http://fr.wiktionary.org/wiki/%C3%A0 - - [/VCint|/VCimp] ?$:W¿ a - <<- /conf/ not value(\1, "|rendez-vous|") --1>> à # Confusion : “a” est la conjugaison du verbe “avoir”. Pour la préposition, écrivez “à”.|http://fr.wiktionary.org/wiki/%C3%A0 - -TEST: Vient-on {{a}} la maison demain ? -TEST: Arrivait-elle {{a}} le manger ? -TEST: Dis-moi {{a}} quelle heure on mange. -TEST: Offrez-vous {{a}} Dieu et taisez-vous. -TEST: dans tous les cas de figure il pense souvent {{a}} sa fille. -TEST: Qu’y a-t-il {{a}} cette place qui mérite que je prenne tant de risques. -TEST: cet homme mange bien {{a}} la maison ? -TEST: Ce que je mange a un goût de surgelé. -TEST: celui qui conduisait a décidé de faire un tour du quartier avec la voiture. -TEST: Un rendez-vous a bousculé ses plans -TEST: Maria Butina a également rencontré des républicains tels que Donald Trump +__conf_à_bout__ + !! à bout ¡¡ + [à|a] [>boue|bous|bout+s] + <<- /conf/ morph(<1, ">(?:être|rester|demeurer)/") ->> à bout # Confusion. Locution “à bout”.|https://fr.wiktionary.org/wiki/%C3%A0_bout + + !! à bout portant ¡¡ + [à|a] [>boue|bous|bout+s] [>pore|>porc|>port|por|>porte] [tant|>tan|temps|>an|en] + [à|a] [>boue|bous|bout+s] [portant+s] + <<- /conf/ ->> à bout portant # Confusion. Locution “à bout portant”.|https://fr.wiktionary.org/wiki/%C3%A0_bout_portant + +TEST: je suis {{à boue}} ->> à bout +TEST: il tire {{à boues portant}} ->> à bout portant +TEST: avec cette histoire, elle est {{à boues}} ->> à bout +TEST: oui, à bout portant, c’est comme ça qu’il l’a eue. __conf_à_en_juger_par__ !! à en juger par ¡¡ [à|a] [en|>an] [juger|jugé+ses|jugeait|jugeais] [par|pare+s|>part] @@ -7379,10 +7394,19 @@ <<- /conf/ ->> à en juger par # Confusion : “à en juger par” c’est-à-dire “selon le jugement qu’on se faire avec”. TEST: {{a en jugé part}} cet article, c’est bientôt la fin. TEST: ils sont à en juger par leurs résultats les prochains champions. + +__conf_à_prendre_ou_à_laisser__ + !! à prendre ou à laisser ¡¡ + [à|a] prendre [ou|où|houe|hou] [à|a] [laisser|laissé+ses] + <<- /conf/ ->> à prendre ou à laisser # Confusion. Locution “à prendre ou à laisser”.|https://fr.wiktionary.org/wiki/%C3%A0_prendre_ou_%C3%A0_laisser + +TEST: C’était {{à prendre où à laisser}}. +TEST: C’est à prendre ou à laisser : cent pour cent sur cinq ans ou rien du tout et faillite immédiate. + __conf_à_tout_bout_de_champ__ !! à tout bout de champ ¡¡ [à|a] [tout|tous] [bout|bous|>boue] [de|d’] [champ+s|>chant|>chan] <<- /conf/ ->> à tout bout de champ # Confusion. Locution “à tout bout de champ”.|https://fr.wiktionary.org/wiki/%C3%A0_tout_bout_de_champ @@ -7623,11 +7647,11 @@ <<- /conf/ -1>> =\1.replace("o", "a").replace("O", "A") # Confusion probable. Une compagne est un compagnon de sexe féminin.|https://fr.wiktionary.org/wiki/campagne en rase compagne <<- /conf/ -3>> campagne # Confusion probable. Une compagne est un compagnon de sexe féminin.|https://fr.wiktionary.org/wiki/campagne - à la compagne [|,] + à la compagne [|,|)] <<- /conf/ -3>> campagne # Confusion probable. Une compagne est un compagnon de sexe féminin.|https://fr.wiktionary.org/wiki/campagne TEST: La {{compagne}} électorale tourne à la guerre. TEST: Lançons une {{compagne}} de communication TEST: en rase {{compagne}} @@ -7969,11 +7993,11 @@ TEST: Elle souffla puissamment dans le {{corps}} de chasse. # cou / coup / coût __conf_coup_cout_cou1__ - [>cou|>coût|>cout] [de|d’] [>baguette|>barre|>bâton|>bec|>bélier|blues|>botte|>boule|>boutoir|>bol|>bite|>cœur|>chaud|>coude|>couteau|>dé|>dent|>déprime|>froid|fil|>foudre|>genou|>grâce|>griffe|>grisou|>gueule|>hache|>hanche|Jarnac|jus|>jeune|>klaxon|>main|maître|maitre|>massue|>marteau|>nostalgie|>pied|>poing|>poignard|>pouce|>pute|>queue|>rein|>rabot|>savate|>sang|>sabot|>sabre|>sifflet|>soleil|>surin|>tête|>théâtre|>tonnerre|>torchon|>trique|>vent|vieux] + [>cou|>coût|>cout] [de|d’] [>baguette|>barre|>bâton|>bec|>bélier|blues|>botte|>boule|>boutoir|>bol|>bite|>cœur|>chaud|>coude|>couteau|>dé|>dent|>déprime|>froid|fil|>foudre|>genou|>grâce|>griffe|>grisou|>gueule|>hache|>hanche|Jarnac|jus|>jeune|>klaxon|>main|maître|maitre|>massue|>marteau|>nostalgie|>pied|>poing|>poignard|>pouce|>pute|>queue|>rein|>rabot|>savate|>sang|>sabot|>sabre|>sifflet|>soleil|>sonde|>surin|>tête|>théâtre|>tonnerre|>torchon|>trique|>vent|vieux] [>cou|>coût|>cout] d’ [>éclat|>épée|>état|>épaule|œil|>estoc] [>cou|>coût|>cout] du sort [>cou|>coût|>cout] [dur|durs] <<- /conf/ -1>> coup|coups # Confusion probable. Le coût est le prix d’une chose. Le cou est la partie joignant le tronc à la tête. Pour ce qui frappe, écrivez “coup”. @@ -8033,15 +8057,19 @@ # cuir / cuire __conf_cuir_cuire__ >dur [à|a] >cuir - <<- /conf/ -3>> cuire # Confusion. Locution “dur à cuire” Le cuir est le nom qu’on donne à la peau animale. Pour évoquer la cuisson, écrivez “cuire”.|https://fr.wiktionary.org/wiki/cuire + <<- /conf/ -3>> cuire # Confusion. Locution “dur à cuire”. Le cuir est le nom qu’on donne à la peau animale. Pour évoquer la cuisson, écrivez “cuire”.|https://fr.wiktionary.org/wiki/cuire <<- /conf/ \2 == "a" -2>> à # Confusion : “a” est une conjugaison du verbe “avoir”. Pour la préposition, écrivez “à”. + en cuire [de|d’] [buffle|crocodile|hippopotame|porc|vache] + <<- /conf/ -2>> cuir # Confusion. La peau animale s’écrit “cuir”.|https://fr.wiktionary.org/wiki/cuire + TEST: ce sont des durs à {{cuir}} TEST: Quelle dure {{a}} {{cuir}}, celle-là. +TEST: revêtement en {{cuire}} de vache # dans / d’en __conf_dans_dan_d_en__ d’ en [le|la|l’|les|de|d’|des|du|un|une|mon|ton|son|ma|ta|sa|mes|tes|ses|notre|votre|nos|vos|leurs|ce|cet|cette|ces|chacun|plusieurs|quelques|certains|certaines] @@ -8156,19 +8184,19 @@ des [ces|des|les|mes|ses|tes|nos|vos|ce|cet|cette|ma|ta|sa|mon|je|tu|il|ils|nous|vous|on|ceux|celles|celui|celle] <<- /conf/ not \1.isupper() and not \2.isupper() -1>> de|dès # Incohérence : les mots “\1” et “\2” ne devraient pas se succéder. <<- /conf/ __also__ and hasSimil(\2, ":[NA].*:[pi]") -2>> =suggSimil(\2, ":[NA].*:[pi]", True) # Confusion probable. Pour la préposition, écrivez “dès” ou “de”. - des ~^\d{2,5}$ [|,] + des ~^\d{2,5}$ [|,|)] des ~^\d{2,5}$ @:¬:[NA].*:[ip]|>(?:à|et|ou)/ <<- /conf/ not value(<1, "|%|") and not morph(<1, ":B|>(?:pourcent|barre|seuil|aucun|plusieurs|certaine?s|une?)/") -1>> dès # Confusion probable. Pour la préposition, écrivez “dès”.|https://fr.wiktionary.org/wiki/pr%C3%A8s [dés|des] *NUM ans [dés|des] $:B ans [dés|des] un an - <<- /conf/ not morph(<1, ":R|>(?:approcher|anniversaire|cap|célébration|commémoration|occasion|passage|programme|terme|classe|autour|celui|ceux|celle|celles)/") and not value(>1, "|de|du|des|d’|") + <<- /conf/ not morph(<1, ":R|>(?:approcher|anniversaire|cap|célébration|commémoration|occasion|passage|programme|terme|classe|délai|échéance|autour|celui|ceux|celle|celles)/") and not value(>1, "|de|du|des|d’|") and not before("% +$") -1>> dès # Confusion probable. Pour la préposition, écrivez “dès”.|https://fr.wiktionary.org/wiki/pr%C3%A8s [dés|des] *NUM heures <<- /conf/ not morph(<1, ":R|>(?:approcher|cap|passage|programme|terme|classe|autour|celui|ceux|celle|celles)/") and not value(>1, "|de|du|des|d’|") and \2 != "35" @@ -8238,10 +8266,11 @@ TEST: C’est la fin des 35 heures. TEST: 98 % des 18‑29 ans considéraient cela comme évident TEST: Gagnez trois dés lors d’un test TEST: aucun des 19 peuples concernés n’en veut TEST: un des 18 sera bientôt là. +TEST: Le délai des cinq ans pourra-t-il être tenu pour une réouverture ? # diagnostic / diagnotique // pronostic / pronostique // public / publique __conf_diagnostic_pronostique__ [ce|un|du|mon|notre|votre|quel] [diagnostique|pronostique|publique] @@ -8436,11 +8465,11 @@ <<- /conf/ -2>> évidemment # Confusion probable : l’évidement est l’action de vider quelque chose. L’adverbe s’écrit “évidemment”.|https://fr.wiktionary.org/wiki/évidemment évidement <<- /conf/ morph(<1, ":V", ":A") ->> évidemment # Confusion probable : l’évidement est l’action de vider quelque chose. L’adverbe s’écrit “évidemment”.|https://fr.wiktionary.org/wiki/évidemment - [un|l’|cet] évidemment [|,] + [un|l’|cet] évidemment [|,|)] [un|l’|cet] évidemment $:¬:A <<- /conf/ -2>> évidement # Confusion probable : “évidemment” est un adverbe. L’action de “vider” s’écrit “évidement”.|https://fr.wiktionary.org/wiki/évidement TEST: Donne-moi {{évidement}} ça. TEST: Elle sera {{évidement}} déçue de cette minable prestation de sa part. @@ -8626,11 +8655,11 @@ <<- /conf/ -2>> forcément # Confusion probable : le forcement est l’action de forcer quelque chose. L’adverbe s’écrit “forcément”.|https://fr.wiktionary.org/wiki/forc%C3%A9ment forcement <<- /conf/ morph(<1, ":V", ":A") ->> forcément # Confusion probable : le forcement est l’action de forcer quelque chose. L’adverbe s’écrit “forcément”.|https://fr.wiktionary.org/wiki/forc%C3%A9ment - [un|le|ce|au] forcément [|,] + [un|le|ce|au] forcément [|,|)] [un|le|ce|au] forcément $:¬:A <<- /conf/ -2>> forcement # Confusion probable : “forcément” est un adverbe. L’action de “forcer” s’écrit “forcement”.|https://fr.wiktionary.org/wiki/forc%C3%A9ment TEST: Viendra-t-il {{forcement}} demain. TEST: sans {{forcement}} prendre la vie du bon côté @@ -8680,11 +8709,11 @@ ->> guère # Confusion probable. La guerre est conflit. Pour l’adverbe signifiant “peu”, écrivez “guère”. sur le pied de guère <<- /conf/ --1>> guerre # Confusion. Locution “sur le pied de guerre”.|https://fr.wiktionary.org/wiki/sur_le_pied_de_guerre - guère [|,] + guère [|,|)] <<- /conf/ morph(<1, ":D.*:f:s") -1>> guerre # Confusion probable : “guère” signifie “peu”. Si vous évoquez un conflit, écrivez “guerre”.|https://fr.wiktionary.org/wiki/guerre TEST: tout ceci ne me rapporte {{guerre}} TEST: je ne m’en soucie {{guerre}} TEST: Il n’y prête {{guerre}} d’attention. @@ -8906,11 +8935,11 @@ __conf_les_lés_lès__ [les|des|ces|mes|tes|ses|nos|vos|leurs|quelques] lès <<- /conf/ -2>> lés # Confusion probable : “lès” signifie “à côté de” et ne s’emploie plus guère que dans des noms de ville, comme Garges-lès-Gonesse. Si vous parlez des bandes de tissu ou de papier peint, écrivez “lés”.|https://fr.wiktionary.org/wiki/l%C3%A8s - lès [|,] + lès [|,|)] <<- /conf/ -1>> lés # Confusion probable : “lès” signifie “à côté de” et ne s’emploie plus guère que dans des noms de ville, comme Garges-lès-Gonesse. Si vous parlez des bandes de tissu ou de papier peint, écrivez “lés”.|https://fr.wiktionary.org/wiki/l%C3%A8s lès @¬:D.*:p <<- /conf/ -1>> les # Confusion probable : “lès” signifie “à côté de” et ne s’emploie plus guère que dans des noms de ville, comme Garges-lès-Gonesse ou Vandœuvre-lès-Nancy.|https://fr.wiktionary.org/wiki/l%C3%A8s @@ -9538,10 +9567,65 @@ TEST: elle n’est jamais tombée {{dans les paumes}} TEST: le jeu de {{pomme}} est l’ancêtre du tennis TEST: dans la {{pomme}} de sa main TEST: c’est la {{paume}} de discorde + +# porc / pore / port +__conf_porc_port_pore__ + [>porc|>port] de la peau + <<- /conf/ -1>> pore|pores # Confusion. Les pores de la peau .|https://fr.wiktionary.org/wiki/pore + + [>pore|>port] [braisé+ses|caramélisé+ses|confit+s|cuit+s|farci+ses|grillé+ses|laqué+ses|mariné+ses|mijoté+ses|poêlé+ses] + [>pore|>port] au [caramel|cognac|cidre|citron|chorizo|cumin|curry|four|fenouil|gingembre|lait|miel|roquefort|vin|vinaigre] + [>pore|>port] aux [abricots|cèpes|champignons|carottes|épices|fèves|figues|fruits|girolles|haricots|herbes|lardons|légumes|lentilles|marrons|morilles|noisettes|nouilles|oignons|ognons|pâtes|poires|pommes|patates|pruneaux] + [>pore|>port] à la [bière|crème|cocotte|curcuma|moutarde|sauce|sauge] + [>pore|>port] à l’ [ananas|armagnac|estragon|orange] + [>pore|>port] en [>croûte|>croute] + <<- /conf/ -1>> porc|porcs # Confusion. Pour évoquer l’animal, écrivez “porc”.|https://fr.wiktionary.org/wiki/porc + + [>blanquette|>boulette|>brochette|>confit|>côte|>côtelette|>émincé|>escalope|>jarret|>joue|>longe|>mijoté|>nem|>paupiette|>pied|>poitrine|>ragoût|>ragout|>rillette|>rouelle|>rôti|>rognon|>sauté|>terrine] + || [de|d’] [>pore|>port] + >filet ?[mignon+s]¿ [de|d’] [>pore|>port] + <<- /conf/ --1>> porc # Confusion. Pour évoquer l’animal, écrivez “porc”.|https://fr.wiktionary.org/wiki/porc + + [>avaler|>bouffer|>élever|>manger|>mâcher|>mastiquer] $:D¬:R [>pore|>port] + [>avaler|>bouffer|>élever|>manger|>mâcher|>mastiquer] $:D¬:R [>pore|>port] + >élevage [de|d’] [>pore|>port] + <<- /conf/ --1>> porc|porcs # Confusion. Pour évoquer l’animal, écrivez “porc”.|https://fr.wiktionary.org/wiki/porc + + [>pore|>porc] [de|d’] [plaisance|pêche] + [>pore|>porc] [>maritime|>spatial] + <<- /conf/ -1>> port|ports # Confusion. Pour évoquer un havre côtier où les bâteaux accostent, écrivez “port”.|https://fr.wiktionary.org/wiki/port + + [|,|le|au|du] [pore|porc] [de|d’] [Alexandrie|Algésiras|Almirante␣Barroso|Amsterdam|Angra␣dos␣Reis|Anvers|Baltimore|Bandar␣Abbas|Bandar␣Khomeini|Bangkok|Barcelone|Bayonne|Beaumont|Bergen|Bintulu|Bombay|Bordeaux|Botaş|Bremerhaven|Brisbane|Brême|Busan|Bâton-Rouge|Calais|Calcutta|Callao|Cannes|Canton|Cayo␣Arcas|Ceyhan|Chennai|Cherbourg|Chiba|Chittagong|Colombo|Constanța|Corpus␣Christi|Daesan|Dakar|Dalian|Dampier|Dieppe|Djeddah|Dubaï|Dunkerque|Durban|el-Dekheila|Gladstone|Goa|Grimsby|Guangzhou|Gwangyang|Gênes|Göteborg|Hambourg|Hampton␣Roads|Hay␣Point|Honfleur|Hong-Kong|Hong␣Kong|Honshu|Houston|Huntington-Tristate|Hô-Chi-Minh-Ville|Ibiza|Immingham|Inchon|Istanbul|Itaguaí|Itaqui|Izmir|Izmit|Jaffa|Jakarta|Jawaharlal␣Nehru|Jebel␣Ali|Jubail|Kaohsiung|Karachi|Kitakyushu|Kobe|Kota␣Baru|Laem␣Chabang|Lake␣Charles|La␣Nouvelle-Orléans|La␣Rochelle|Lianyungang|Londres|Long␣Beach|Lorient|Los␣Angeles|Madras|Manille|Marseille|Miami|Milford␣Haven|Mobile|Monaco|Montréal|Mormugão|Mumbai|Nagoya|Nantes|Naples|Newcastle|New␣Jersey|New␣York|Nice|Ningbo-Zhoushann|Novorossiysk|Odessa|Oran|Osaka|Ouistreham|Oust-Louga|Paradip|Paranaguá|Philadelphie|Plaquemine|Pohang|Porto-Vecchio|Port␣Hedlandn|Primorsk|Qingdao|Qinhuangdao|Quibéron|Quimper|Richards␣Bay|Rizhao|Rome|Rotterdam|Rouen|Saigon|Saint-Pétersbourg|Saldanha␣Bay|Santos|San␣Lorenzo|Sepetiba|Shanghai|Shenzhen|Singapour|Southampton|São␣Sebastião|Taichung|Tanger|Tangshan|Tanjung␣Pelepas|Tanjung␣Priok|Texas␣City|Tianjin|Tientsin|Tokyo|Toulon|Trieste|Tsingtao|Tubarão|Tunis|Ulsan|Valence|Vancouver|Vannes|Venise|Visakhapatnam|Waigaoqiao|Washington|Wellington|Wuhan|Xiamen|Xingang|Yanbu|Yangshan|Yantian|Yingkou|Yokohama|Youjne|Zeebruges] + [|,|le|au|du] [pore|porc] du [Havre|Touquet] + <<- /conf/ -2>> port # Confusion. Pour évoquer un havre côtier où les bâteaux accostent, écrivez “port”.|https://fr.wiktionary.org/wiki/port + + [>arriver|>parvenir] ?@:[WX]¿ [à|a] bon [>pore|>porc] + >accoster ?@:[WX]¿ au [>pore|>porc] + >accoster ?@:[WX]¿ à ce ?petit¿ [>pore|>porc] + <<- /conf/ --1>> port # Confusion. Pour évoquer un havre côtier où les bâteaux accostent, écrivez “port”.|https://fr.wiktionary.org/wiki/port + + [>pore|>porc] [usb|RJ45|DVI|HDMI|Ethernet|DisplayPort] + <<- /conf/ -1>> port|ports # Confusion. Pour évoquer les connecteurs, écrivez “port”.|https://fr.wiktionary.org/wiki/port + + [pore|porc] de l’ [écharpe|étoile|épée] + <<- /conf/ -1>> port # Confusion. Pour évoquer les objects que l’on porte, écrivez “port”.|https://fr.wiktionary.org/wiki/port + +TEST: les {{ports}} de la peau +TEST: du {{port}} au caramel +TEST: elle prépare un rôti de {{port}} +TEST: j’en ai marre de bouffer du {{port}} +TEST: le {{pore}} de l’étoile jaune +TEST: un petit {{porc}} de plaisance +TEST: nous parvenons enfin à bon {{pore}} +TEST: Accoste au {{porc}} +TEST: le {{pore}} de La Rochelle +TEST: Connecte le {{pore}} USB +TEST: je transporte des porcs de Calais à Londres. + # pot aux roses / poteau rose __conf_pot_aux_roses__ poteau rose <<- /conf/ ->> pot aux roses # Confusion probable. On dit : « découvrir le pot aux roses ».|http://fr.wiktionary.org/wiki/d%C3%A9couvrir_le_pot_aux_roses @@ -9834,11 +9918,11 @@ TEST: de {{quoique}} ce soit, je ne veux pas en entendre parler. # quoiqu’il en coûte __conf_quoi_qu_il_en_coûte__ - quoiqu’ il ?[m’|t’|lui|nous|vous|leur]¿ en [coûte|coute] [|,] + quoiqu’ il ?[m’|t’|lui|nous|vous|leur]¿ en [coûte|coute] [|,|)] <<- /conf/ -1:2>> quoi qu’il # Confusion probable. TEST: Elle y parviendra, {{quoiqu’il}} en coûte. @@ -9928,11 +10012,11 @@ # quoi que / quoique __conf_quoique_quoi_que__ quoiqu’ il se soit ?$:W¿ passé quoiqu’ il se passe quoiqu’ il advienne - quoiqu’ il arrive [|,] + quoiqu’ il arrive [|,|)] [quoique|quoiqu’] [je|j’|tu|il|elle|on|nous|vous|ils|elles|iel|iels] en >penser [quoique|quoiqu’] [je|j’|tu|il|elle|on|nous|vous|ils|elles|iel|iels] >avoir pu faire <<- /conf/ -1>> quoi que|quoi qu’ # Confusion probable.|https://fr.wiktionary.org/wiki/quoi_que TEST: mais {{quoique}} tu en penses, c’est comme ça que ça fonctionne. @@ -10245,19 +10329,19 @@ [|,|(] sont @:[NA].*:[me]:s|>[aeéiîou].*/:[NA].*:f:s¬:[GW] <<- /conf/ -2>> son # Confusion probable : “sont” est le verbe “être” à la 3ᵉ personne du pluriel. Pour le déterminant, écrivez “son”. sont @:[NA].*:[me]:s|>[aeéiîou].*/:[NA].*:f:s¬:[GW] - <<- /conf/ morph(<1, ":(?:V|Cs|R)", ":(?:[NA].*:[pi]|Ov)") and not tag_before(\1, "ce_que") + <<- /conf/ morph(<1, ":(?:V|Cs|R)", ":(?:[NA].*:[pi]|Ov)") and not tag_before(\1, "_ceque_") -1>> son # Confusion probable : “sont” est le verbe “être” à la 3ᵉ personne du pluriel. Pour le déterminant, écrivez “son”. [à|chez|dès|par] sont [avec|contre|devant|derrière|pour|sans|sur] sont @:[NA].*:[me]:s|>[aeéiîou].*/:[NA].*:f:s¬:[GW] <<- /conf/ -2>> son # Confusion probable : “sont” est le verbe “être” à la 3ᵉ personne du pluriel. Pour le déterminant, écrivez “son”. en sont @:[NA].*:[me]:s|>[aeéiîou].*/:[NA].*:f:s¬:[GW] - <<- /conf/ not value(<1, "|ils|elles|iels|leur|lui|nous|vous|m’|t’|s’|l’|") and not tag(<1, "ce_que") + <<- /conf/ not value(<1, "|ils|elles|iels|leur|lui|nous|vous|m’|t’|s’|l’|") and not tag(<1, "_ceque_") -2>> son # Confusion probable : “sont” est le verbe “être” à la 3ᵉ personne du pluriel. Pour le déterminant, écrivez “son”. son [ceux|celles] <<- /conf/ not morph(<1, ":D.*:m:s") -1>> sont # Confusion probable : “son” est un déterminant ou un nom masculin. Le verbe “être” à la 3ᵉ personne du pluriel s’écrit “sont”. @@ -10306,11 +10390,11 @@ __conf_statu_statue_statut__ [statut|statue|status] quo <<- /conf/ ->> statu quo # Confusion. Écrivez “statu quo”.|https://fr.wiktionary.org/wiki/statu_quo statu ~¬^[qQ][uU][oO]$ - statu [|,] + statu [|,|)] <<- /conf/ -1>> status|statut|statue # Confusion : “statu” ne s’emploie que dans l’expression “statu quo”. TEST: Ça n’en finit pas, c’est le {{statut quo}}. TEST: mettre à jour son {{statu}}. @@ -10448,10 +10532,11 @@ [tète+s] de [mule|linotte] <<- /conf/ -1>> =\1.replace("è", "ê").replace("È", "Ê") # Confusion : “tète” est une forme conjuguée de “téter”. Pour la partie supérieure d’un corps, écrivez “tête”. >hocher ?@:[WX]¿ [la|ma|ta|sa|notre|votre|leur|nos|vos|leurs] [tète+s] [mal|maux] de [tète+s] + ni queue ni [tète+s] >tenir ?@:[WX]¿ [tète+s] <<- /conf/ --1>> =\-1.replace("è", "ê").replace("È", "Ê") # Confusion : “tète” est une forme conjuguée de “téter”. Pour la partie supérieure d’un corps, écrivez “tête”. [tète+s] [à|a] [tète+s] tète-à-tète @@ -10568,11 +10653,12 @@ # voix / voie / vois / voit __conf_voie_voix_vois_voit__ à ?[si|très|trop]¿ haute [>voie|vois|voit] à ?[si|très|trop]¿ haute et intelligible [>voie|vois|voit] de vive [>voie|vois|voit] - à portée de [>voie|vois|voit] + [à|a] portée [de|d’] [>voie|vois|voit] + >éclat [de|d’] [>voie|vois|voit] <<- /conf/ --1>> voix # Confusion. Pour évoquer un son humain, animal ou instrumental, écrivez “voix”.|http://fr.wiktionary.org/wiki/voix à [>voie|vois|voit] [basse|haute|basses|hautes] <<- /conf/ -2>> voix # Confusion. Pour évoquer un son humain, animal ou instrumental, écrivez “voix”.|http://fr.wiktionary.org/wiki/voix @@ -10747,11 +10833,11 @@ TEST: elles arrivent en rangs serrés. # entre autres __sgpl_entre_autres!6__ - entre autre [|,] + entre autre [|,|)] entre autre @:(?:[GW]|[NA].*:[pi]) <<- /sgpl/ -2>> autres # La locution “entre autres”, toujours au pluriel.|https://fr.wiktionary.org/wiki/entre_autres !! entre autres choses ¡¡ entre [autre+s] [chose+s] @@ -10841,17 +10927,25 @@ !! !! # Les jours __maj_jours_semaine__ - [*WORD|*NUM] [Lundi|Mardi|Mercredi|Jeudi|Vendredi|Samedi|Dimanche] - , [Lundi|Mardi|Mercredi|Jeudi|Vendredi|Samedi|Dimanche] - <<- /maj/ not \2.isupper() -2:>> =\2.lower() + [*WORD|*NUM] [Lundi|Mercredi|Jeudi|Vendredi|Samedi|Dimanche] + , [Lundi|Mercredi|Jeudi|Vendredi|Samedi|Dimanche] + <<- /maj/ not \2.isupper() and not value(>1, "|saint|") -2:>> =\2.lower() + # Pas de majuscule sur les jours de la semaine.|http://www.academie-francaise.fr/la-langue-francaise/questions-de-langue#42_strong-em-jours-de-la-semaine-pluriel-et-majuscules-em-strong + + [*WORD|*NUM] Mardi + , Mardi + <<- /maj/ not \2.isupper() and not value(>1, "|gras|saint|") -2:>> =\2.lower() # Pas de majuscule sur les jours de la semaine.|http://www.academie-francaise.fr/la-langue-francaise/questions-de-langue#42_strong-em-jours-de-la-semaine-pluriel-et-majuscules-em-strong TEST: Nous vous donnons rendez-vous {{Mercredi}} le 18. +TEST: Viens ce {{Mardi}}. TEST: LA SITUATION CE MERCREDI +TEST: Le Vendredi saint +TEST: un Mardi gras comme un autre # Les mois __maj_mois__ monarchie de Juillet @@ -11500,79 +11594,118 @@ !!! !!! Processeur: épuration des adverbes, locutions adverbiales, interjections et expressions usuelles !! !!! !!! -__purge_dates__ - depuis le [1er|1ᵉʳ|~^\d\d?$] {mois} ?[dernier|prochain|~^\d{2,5}$]¿ - [le|du|au] [1er|1ᵉʳ|~^\d\d?$] {mois} ?[dernier|prochain|~^\d{2,5}$]¿ - jusqu’ au [1er|1ᵉʳ|~^\d\d?$] {mois} ?[dernier|prochain|~^\d{2,5}$]¿ - à compter du [1er|1ᵉʳ|~^\d\d?$] {mois} ?[dernier|prochain|~^\d{2,5}$]¿ +__purge_années__ + au cours [de|d’] l’ an ?[passé|prochain|~^\d{2,5}$]¿ + au cours [de|d’] l’ année ?[passée|prochaine|~^\d{2,5}$]¿ + au cours des années ~^\d{2,5}$ + <<- ~>> * + + à [compter|partir] [de|d’] l’ an ?[passé|prochain|~^\d{2,5}$]¿ + à [compter|partir] [de|d’] l’ année ?[passée|prochaine|~^\d{2,5}$]¿ + à [compter|partir] des années ~^\d{2,5}$ + ?jusqu’¿ à l’ orée de l’ an ?[passé|prochain|~^\d{2,5}$]¿ + ?jusqu’¿ à l’ orée de l’ année ?[passée|prochaine|~^\d{2,5}$]¿ + ?jusqu’¿ à l’ orée des années ~^\d{2,5}$ + ?jusqu’¿ à l’ an ?[passé|prochain|~^\d{2,5}$]¿ + ?jusqu’¿ à l’ année ?[passée|prochaine|~^\d{2,5}$]¿ + ?jusqu’¿ aux années ~^\d{2,5}$ + [dès|depuis|de|d’] l’ an ?[passé|prochain|~^\d{2,5}$]¿ + [dès|depuis|de|d’] l’ année ?[passée|prochaine|~^\d{2,5}$]¿ + [dès|depuis] [les|ces] années ~^\d{2,5}$ + <<- ~>> * + + à [compter|partir] du début de l’ an ?[passé|prochain|~^\d{2,5}$]¿ + à [compter|partir] du début de l’ année ?[passée|prochaine|~^\d{2,5}$]¿ + à [compter|partir] du début des années ~^\d{2,5}$ + ?jusqu’¿ au début de l’ an ?[passé|prochain|~^\d{2,5}$]¿ + ?jusqu’¿ au début de l’ année ?[passée|prochaine|~^\d{2,5}$]¿ + ?jusqu’¿ au début des années ~^\d{2,5}$ + [dès|depuis] le début de l’ an ?[passé|prochain|~^\d{2,5}$]¿ + [dès|depuis] le début de l’ année ?[passée|prochaine|~^\d{2,5}$]¿ + [dès|depuis] le début des années ~^\d{2,5}$ + <<- ~>> * + + à [compter|partir] [de|d’] la fin de l’ an ?[passé|~^\d{2,5}$]¿ + à [compter|partir] [de|d’] la fin de l’ année ?[passée|~^\d{2,5}$]¿ + à [compter|partir] [de|d’] la fin des années ~^\d{2,5}$ + ?jusqu’¿ à la fin de l’ an ?[passé|~^\d{2,5}$]¿ + ?jusqu’¿ à la fin de l’ année ?[passée|~^\d{2,5}$]¿ + ?jusqu’¿ à la fin des années ~^\d{2,5}$ + [dès|depuis|de|d’] la fin de l’ an ?[passé|~^\d{2,5}$]¿ + [dès|depuis|de|d’] la fin de l’ année ?[passée|~^\d{2,5}$]¿ + [dès|depuis|de|d’] la fin des années ~^\d{2,5}$ + <<- ~>> * + en l’ an ~^\d{2,5}$ en l’ an de grâce ~^\d{2,5}$ - en {mois} ~^\d{2,5}$ - [de|d’|D’] {mois} ~^\d{2,5}$ - à la {mi_mois} ?~^\d{2,5}$¿ - entre {mois} ?~^\d{2,5}$¿ et {mois} ?~^\d{2,5}$¿ - début {mois} ~^\d{2,5}$ - au début {mois} ~^\d{2,5}$ - en ce début {mois} ~^\d{2,5}$ - au [début|cours] de l’ an ?[passé|prochain|~^\d{2,5}$]¿ - au [début|cours] de l’ année ?[passée|prochaine|~^\d{2,5}$]¿ - au [début|cours] des années ~^\d{2,5}$ - au [début|cours] du mois [de|d’] {mois} ?[passé|prochain|~^\d{2,5}$]¿ - à la fin de l’ an ?[passé|~^\d{2,5}$]¿ - à la fin de l’ année ?[passée|~^\d{2,5}$]¿ - à la fin des années ~^\d{2,5}$ - à la fin du mois [de|d’] {mois} ?[passé|prochain|~^\d{2,5}$]¿ - jusqu’ en {mois} ~^\d{2,5}$ - jusqu’ à la {mi_mois} ~^\d{2,5}$ - depuis {mois} ?~^\d{2,5}$¿ - depuis la {mi_mois} ~^\d{2,5}$ <<- ~>> * - [début|fin] {mois} ?~^\d{2,5}$¿ - <<- not morph(<1, ":D") ~>> * - en ~^\d{2,5}$ [,||)] en ~^\d{2,5}$ @:¬:[AN].*:[pi] de ~^\d{2,5}$ @:A.*:s <<- ~1:2>> * + +__purge_dates__ + à [compter|partir] du [1er|1ᵉʳ|~^\d\d?$] {mois} ?[dernier|prochain|~^\d{2,5}$]¿ + [dès|depuis] le [1er|1ᵉʳ|~^\d\d?$] {mois} ?[dernier|prochain|~^\d{2,5}$]¿ + [le|du] [1er|1ᵉʳ|~^\d\d?$] {mois} ?[dernier|prochain|~^\d{2,5}$]¿ + ?jusqu’¿ au [1er|1ᵉʳ|~^\d\d?$] {mois} ?[dernier|prochain|~^\d{2,5}$]¿ + <<- ~>> * + + au cours [de|d’] {mois} ?[passé|prochain|~^\d{2,5}$]¿ + au cours du mois [de|d’] {mois} ?[passé|prochain|~^\d{2,5}$]¿ + <<- ~>> * + + à l’ orée du mois [de|d’] {mois} ?[passé|prochain|~^\d{2,5}$]¿ + à [compter|partir] [de|d’] {mois} ?[passé|prochain|~^\d{2,5}$]¿ + ?jusqu’¿ [en|à] {mois} ?[passé|prochain|~^\d{2,5}$]¿ + [dès|depuis|de|d’] {mois} ?[passé|prochain|~^\d{2,5}$]¿ + <<- ~>> * + + [début|fin] {mois} ?~^\d{2,5}$¿ + <<- not morph(<1, ":D") ~>> * + + à [compter|partir] [début|fin] {mois} ?[passé|prochain|~^\d{2,5}$]¿ + ?jusqu’¿ [en|à] [début|fin] {mois} ?[passé|prochain|~^\d{2,5}$]¿ + [dès|depuis|de|d’] [début|fin] {mois} ?[passé|prochain|~^\d{2,5}$]¿ + <<- ~>> * + + ?jusqu’¿ au début {mois} ?[passé|prochain|~^\d{2,5}$]¿ + ?jusqu’¿ au début [de|d’] {mois} ?[passé|prochain|~^\d{2,5}$]¿ + ?jusqu’¿ au début du mois [de|d’] {mois} ?[passé|prochain|~^\d{2,5}$]¿ + [dès|depuis] le début {mois} ?[passé|prochain|~^\d{2,5}$]¿ + [dès|depuis] le début [de|d’] {mois} ?[passé|prochain|~^\d{2,5}$]¿ + [dès|depuis] le début du mois [de|d’] {mois} ?[passé|prochain|~^\d{2,5}$]¿ + <<- ~>> * + + ?jusqu’¿ à la fin {mois} ?[passé|prochain|~^\d{2,5}$]¿ + ?jusqu’¿ à la fin [de|d’] {mois} ?[passé|prochain|~^\d{2,5}$]¿ + ?jusqu’¿ à la fin du mois [de|d’] {mois} ?[passé|prochain|~^\d{2,5}$]¿ + [de|d’|dès|depuis] la fin {mois} ?[passé|prochain|~^\d{2,5}$]¿ + [de|d’|dès|depuis] la fin [de|d’] {mois} ?[passé|prochain|~^\d{2,5}$]¿ + [de|d’|dès|depuis] la fin du mois [de|d’] {mois} ?[passé|prochain|~^\d{2,5}$]¿ + <<- ~>> * + + en ce début {mois} ~^\d{2,5}$ + en la fin {mois} ~^\d{2,5}$ + <<- ~>> * + + entre {mois} ?~^\d{2,5}$¿ et {mois} ?~^\d{2,5}$¿ + <<- ~>> * + + ?jusqu’¿ à la {mi_mois} ~^\d{2,5}$ + [dès|depuis|de|d’] la {mi_mois} ~^\d{2,5}$ + <<- ~>> * + TEST: ils sont depuis le 2 janvier {{parti}} à l’étranger. TEST: ils sont depuis le 2 janvier 2012 {{parti}} à l’étranger. TEST: profanation de plusieurs églises françaises début février. - -__purge_saisons__ - à l’ [été|automne|hiver] ~^\d{2,4}$ - au printemps ~^\d{2,4}$ - <<- ~>> * - -TEST: Une étude de 2005 publiée dans le Journal -TEST: Les cinq variantes de la couverture du magazine Wired d’avril 2016 consacrée à Silicon Valley. -TEST: c’est donc la cinquième en 50 ans - - -__purge_un_nombre__ - un *NUM @:A.*:s¬:G - <<- ~2>> * - -TEST: l’équipe veut aussi voir dans la lettre le nombre d’or, un symbole d’harmonie, ainsi qu’un 6 retourné. - - -__purge_début_phrase__ - car - de plus - et ?puis¿ - mais - m’ est avis [que|qu’] - or donc - puis - [|,|(] grand bien lui fasse - <<- ~2:0>> * - __purge_horaires_et_durée__ 24 [heures|h] [sur|/] 24 7 [jours|j] [sur|/] 7 sept [jours|j] [sur|/] sept @@ -11625,10 +11758,39 @@ TEST: Le train de 2 h 47 {{arriveraient}} en retard. TEST: Le train de 2 h 47 du matin {{arriveraient}} en retard. TEST: Le train de 2h47 du matin {{arriveraient}} en retard. + +__purge_saisons__ + à l’ [été|automne|hiver] ~^\d{2,4}$ + au printemps ~^\d{2,4}$ + <<- ~>> * + +TEST: Une étude de 2005 publiée dans le Journal +TEST: Les cinq variantes de la couverture du magazine Wired d’avril 2016 consacrée à Silicon Valley. +TEST: c’est donc la cinquième en 50 ans + + +__purge_un_nombre__ + un *NUM @:A.*:s¬:G + <<- ~2>> * + +TEST: l’équipe veut aussi voir dans la lettre le nombre d’or, un symbole d’harmonie, ainsi qu’un 6 retourné. + + +__purge_début_phrase__ + car + de plus + et ?puis¿ + mais + m’ est avis [que|qu’] + or donc + puis + [|,|(] grand bien lui fasse + <<- ~2:0>> * + __purge_prépositions_qqn__ [après|avant|avec|pour|contre|sans|envers|chez|en|malgré|selon] les uns et les autres [|,|@:[VXG]¬>qui/] <<- ~1:6>> * @@ -11709,10 +11871,11 @@ <<- ~>> * __purge_locutions__ , [oui|non] , + , fait remarquable , , entre autres ?choses¿ , à *NUM % à ?seulement¿ [*NUM|$:B|quelques|plusieurs] [millimètres|centimètres|décamètres|pas|mètres|kilomètres|verstes|lieues|UA|parsecs|années-lumière] de distance à [autrui|bâbord|califourchon|chacun|cheval|confesse|contrecœur|contre-cœur|contretemps|>demi-mot|foison|grand-peine|jamais|genoux|gogo|loisir|merveille|moitié|nouveau|outrance|peine|perpétuité|présent|raison|rallonge|rebrousse-poil|reculons|regret|renverse|risque|sec|tâtons|tire-d’aile|tire-larigot|tort|tribord|tout-va|vif] à [mi-chemin|mi-mandat|mi-mot+s|mi-parcours|mi-temps|mi-voix] @@ -11766,10 +11929,11 @@ à ?[si|très|trop]¿ courte [échéance|portée] à >coussin d’ air à couteaux tirés à des kilomètres à la ronde à défaut d’ autre chose + à domicile ?fixe¿ à dormir debout à dose homéopathique à durée [déterminée|indéterminée|limitée] à *NUM reprises à $:B reprises @@ -11929,10 +12093,11 @@ à toute heure de la nuit et du jour à tous crins à tous points de vue à toutes fins utiles à toutes jambes + à travers terre et mer à tu et à toi à tue-tête à un moment donné à un moment ou à un autre à une heure [décente|tardive] @@ -12015,35 +12180,36 @@ au propre comme au figuré au préalable au ras des pâquerettes au saut du lit au second plan - au sens [figuré|large|propre] + au sens [figuré|large|littéral|propre] + au sens littéral du terme au surplus au [Ier|Iᵉʳ|IId|Ind|IIᵈ|IIⁿᵈ] siècle au ~^[xXvViI]+(?:[eᵉ]|i?[èe]me)$ siècle au-delà du descriptible au-dessus [de|d’] {pronom_obj} - aujourd’hui - auparavant + ?d’¿ aujourd’hui ?tout¿ aussi + auparavant aussitôt ?tout¿ au fond [de|d’] {pronom_obj} aux [abois|aguets|leurs|mien|miens|mienne|miennes|tien|tiens|tienne|tiennes|sien|siens|sienne|siennes|nôtres|vôtres] autant que [nécessaire|possible|prévu] autant que faire se peut autour [de|d’] {pronom_obj} autrement dit - av. J.-C. + ?d’¿ av. J.-C. avant longtemps avant terme avant tout le monde avant toute chose avant toutes choses avant d’ aller plus loin - avant J.-C. - avant Jésus-Christ + ?d’¿ avant J.-C. + ?d’¿ avant Jésus-Christ avant d’ en arriver là avant de faire quoi que ce soit avant de faire quoi que ce soit [de|d’] ?$:W¿ [absurde|stupide|crétin|con|idiot|inconsidéré] avant qu’ il ne soit trop tard avant un bon bout de temps @@ -12067,17 +12233,18 @@ bien souvent bientôt bon gré ?,¿ mal gré bras dessus ?,¿ bras dessous çà et là + >carabine à plomb ce faisant cependant [cela|ça|ceci] mis à part [cela|ça|ceci] va sans dire [cela|ceci] étant dit certes - ces derniers temps + ?[de|d’]¿ ces derniers temps cette [fois|fois-là|fois-ci] chaque fois ci-dessous ci-dessus chose promise ?,¿ chose due @@ -12158,11 +12325,11 @@ d’ ici ?[là|peu]¿ d’ ici peu de temps d’ ici quelques [secondes|minutes|heures|jours|mois|trimestres|semestres|années|décennies|siècles|millénaires] d’ intérêt général d’ ordinaire - d’ origine [inconnue|douteuse|plébéienne|aristocratique] + d’ origine [inconnue|douteuse|étrangère|plébéienne|aristocratique] d’ ordre général d’ où qu’ [il|elle|on|iel] vienne d’ où qu’ [ils|elles|iels] viennent d’ ouest en est d’ [ors|ores] et déjà @@ -12180,18 +12347,25 @@ d’ une certaine [façon|manière] d’ une tout autre ampleur d’ une [minute|seconde] à l’ autre d’ utilité publique de-ci ?,¿ de-là + [de|d’] ?[assez|si|très]¿ [faible|grande|médiocre|moindre|petite] [taille|envergure|stature|valeur] + [de|d’] ?[assez|si|très]¿ haute [lignée|lutte|naissance|stature|taille|valeur|volée] + [de|d’] ?[assez|si|très]¿ basse [condition|extraction|lignée|naissance] + [de|d’] ?[assez|si|très]¿ bon [aloi|cœur|goût|gout|gré|matin|poil|sens|ton] + [de|d’] ?[assez|si|très]¿ mauvais [aloi|cœur|goût|gout|gré|poil] + [de|d’] ?[assez|si|très]¿ bonne [compagnie|facture|famille|foi|grâce|heure|humeur|qualité] + [de|d’] ?[assez|si|très]¿ haut [rang|vol] + [de|d’] ?[assez|si|très]¿ mauvaise [compagnie|facture|foi|grâce|humeur|qualité] + [de|d’] ?[assez|si|très]¿ longue [date|haleine] + [de|d’] ?[assez|si|très]¿ [courte|longue] durée [de|d’] *NUM % - [de|d’] [cesse|conserve|fait|guingois|luxe|nouveau|permanence|partout|préférence|rechange|routine|surcroît|surcroit|visu] + [de|d’] [conserve|fait|guingois|luxe|nouveau|permanence|partout|préférence|rechange|routine|surcroît|surcroit|visu] [de|d’] A à Z [de|d’] bas en haut [de|d’] bas étage - [de|d’] ?assez¿ basse [condition|extraction] - [de|d’] ?assez¿ bon [aloi|cœur|gré|matin|poil|sens|ton] - [de|d’] ?assez¿ bonne [compagnie|facture|famille|foi|grâce|heure|humeur|qualité] [de|d’] bouche en bouche [de|d’] bric et [de|d’] broc [de|d’] but en blanc [de|d’] ce fait ?[incontestable|irréfutable|même]¿ [de|d’] ce seul fait @@ -12206,43 +12380,38 @@ [de|d’] droite comme de gauche [de|d’] fâcheuse mémoire [de|d’] fil en aiguille [de|d’] fond en comble [de|d’] fort [loin|près] - [de|d’] [fraîche|fraiche] date + [de|d’] ?[assez|si|très]¿ [fraîche|fraiche] date [de|d’] [gaieté|gaîté|gaité] de cœur [de|d’] gauche à droite [de|d’] gauche comme de droite [de|d’] génération en génération - [de|d’] grande [taille|envergure|stature|valeur] [de|d’] gré à gré [de|d’] gré ou de force [de|d’] guerre lasse [de|d’] haut en bas - [de|d’] ?très¿ haut [rang|vol] - [de|d’] ?très¿ haute [lignée|lutte|naissance|stature|taille|valeur|volée] [de|d’] jour comme de nuit [de|d’] jour en jour [de|d’] là-bas [de|d’] la meilleure [manière|façon] possible [de|d’] la même [façon|manière] + [de|d’] la plus haute importance [de|d’] la sorte [de|d’] la tête aux pieds [de|d’] la veille [de|d’] loin [de|d’] loin en loin - [de|d’] longue [date|durée|haleine] [de|d’] main [de|d’] [maître|maitre] - [de|d’] mauvais [aloi|goût|gout|gré] - [de|d’] ?assez¿ mauvaise [compagnie|facture|foi|grâce|humeur|qualité] [de|d’] mieux en mieux [de|d’] millénaire en millénaire [de|d’] moindre [envergure|valeur] [de|d’] mois en mois [de|d’] nature [étrangère|inconnue|indéterminée|insolite] - [de|d’] nombreuses années plus [tôt|tard] - [de|d’] nombreuses fois + [de|d’] ?[assez|si|très]¿ nombreuses années plus [tôt|tard] + [de|d’] ?[assez|si|très]¿ nombreuses fois [de|d’] nos jours [de|d’] notoriété publique [de|d’] nulle part [de|d’] pire en pire [de|d’] près @@ -12249,11 +12418,10 @@ [de|d’] près ou de loin [de|d’] par le monde ?entier¿ [de|d’] part en part [de|d’] part et d’ autre [de|d’] ?presque¿ partout - [de|d’] petite [taille|envergure|stature|valeur] [de|d’] pied ferme [de|d’] place en place [de|d’] plein [droit|fouet] [de|d’] plus [belle|près] [de|d’] premier [choix|ordre|plan] @@ -12297,10 +12465,11 @@ [de|d’] moins en moins [de|d’] plus en plus [de|d’] mieux en mieux [de|d’] pire en pire [de|d’] jour en jour + [de|d’] seconde en seconde [de|d’] minute en minute [de|d’] semaine en semaine [de|d’] mois en mois [de|d’] trimestre en trimestre [de|d’] semestre en semestre @@ -12317,18 +12486,18 @@ désormais depuis $:B [ans|années|mois|semaines|jours|heures|minutes|secondes] depuis *NUM [ans|années|mois|semaines|jours|heures|minutes|secondes] depuis belle lurette depuis bien longtemps - depuis [de|d’] ?[assez|très]¿ longues années + depuis [de|d’] ?[assez|si|très]¿ longues années depuis des lustres depuis la nuit des temps depuis la [première|dernière|~ième$] fois depuis les années ~^\d{2,5}$ - depuis ?[assez|très]¿ longtemps + depuis ?[assez|si|très]¿ longtemps depuis lors - depuis ?[assez|très]¿ peu de temps + depuis ?[assez|si|très]¿ peu de temps depuis quelque temps depuis quelques [secondes|minutes|heures|jours|semaines|mois|trimestres|semestres|années|décennies|siècles|millénaires] depuis si longtemps depuis toujours depuis tout ce temps @@ -12358,14 +12527,14 @@ en \d\d+ [ans|années|mois|semaines|jours|heures|minutes|secondes] en [aparté|apparence|arrière|avance|avant|cachette|ceci|cela|clair|commun|conséquence|continu|contrebas|contrepartie|dedans|définitive|détail|direct|douce|effet|émoi|filigrane|général|goguette|hâte|majorité|outre|pâmoison|parallèle|partie|particulier|permanence|personne|pratique|prime|privé|principe|priorité|public|retour|revanche|rien|rogne|route|secret|silence|somme|suspens|théorie|trompe-l’œil|vain|vérité] en réalité ?[augmentée|virtuelle]¿ en aucun cas en aucune [circonstance|façon|manière] - en ?[assez|très]¿ bas âge - en ?[assez|très]¿ bon état ?général¿ - en ?[assez|très]¿ bon état de [fonctionnement|marche] - en ?[assez|très]¿ bonne [compagnie|place|posture|voie] + en ?[assez|si|très]¿ bas âge + en ?[assez|si|très]¿ bon état ?général¿ + en ?[assez|si|très]¿ bon état de [fonctionnement|marche] + en ?[assez|si|très]¿ bonne [compagnie|place|posture|voie] en bonne et due forme en bonne santé ?[physique|mentale|psychique]¿ en bout de course en cas [de|d’] [besoin|doute|urgence] en cas [de|d’] nécessité ?[absolue|impérieuse]¿ @@ -12394,44 +12563,44 @@ en eau ?peu¿ profonde en eaux troubles en état [de|d’] choc ?circulatoire¿ en ?[excellent|mauvais|parfait]¿ état [de|d’] marche en état d’ ébriété ?avancée¿ - en ?[assez|très]¿ excellent état ?général¿ - en ?[assez|très]¿ fâcheuse posture + en ?[assez|si|très]¿ excellent état ?général¿ + en ?[assez|si|très]¿ fâcheuse posture en file indienne en fin [de|d’] [compte|journée|matinée|soirée|après-midi] en forte [baisse|hausse] en gage [de|d’] bonne foi en garde à vue ?prolongée¿ - en ?[assez|très]¿ grand nombre - en ?[assez|très]¿ grande [difficulté|majorité|partie|pompe] - en ?[assez|très]¿ haut lieu - en ?[assez|très]¿ haute [estime|mer] + en ?[assez|si|très]¿ grand nombre + en ?[assez|si|très]¿ grande [difficulté|majorité|partie|pompe] + en ?[assez|si|très]¿ haut lieu + en ?[assez|si|très]¿ haute [estime|mer] en l’ occurrence en lieu sûr en ligne [de|d’] [compte|mire] en main propre en mains propres - en ?[assez|très]¿ mauvais état - en ?[assez|très]¿ mauvaise [posture|santé] + en ?[assez|si|très]¿ mauvais état + en ?[assez|si|très]¿ mauvaise [posture|santé] en même temps en milieu [de|d’] [journée|matinée|soirée|après-midi] en moyenne en nombre suffisant en nombre plus que suffisant en ordre dispersé en partant [de|d’] zéro en partie ou en totalité en pente douce - en ?très¿ petit nombre + en ?[assez|si|très]¿ petit nombre en place publique en plein [air|cœur|essor|marasme|jour] en pleine [gueule|figure|forme|nuit|poire|tronche] en perte [de|d’] vitesse - en ?[assez|très]¿ peu [de|d’] temps - en ?[assez|très]¿ [piteux|piètre] état + en ?[assez|si|très]¿ peu [de|d’] temps + en ?[assez|si|très]¿ [piteux|piètre] état en point [de|d’] [mire|orgue] en porte-à-faux en position [de|d’] [force|faiblesse] en premier lieu en première [instance|ligne] @@ -12459,10 +12628,11 @@ en temps et en heure en temps [normal|opportun|ordinaire|utile|voulu] en terrain [découvert|miné] en termes choisis en terre battue ?[claire|ocre|jaune|rouge|noire|sombre|humide|sèche|maculée|sale|dégueulasse]¿ + en terre étrangère en toile [de|d’] fond en totalité ou en partie en tous les cas en tous les sens en tout bien tout honneur @@ -12510,26 +12680,27 @@ euh excepté le [mien|tien|sien|nôtre|vôtre|leur] excepté la [mienne|tienne|sienne|nôtre|vôtre|leur] excepté les [miens|miennes|siennes|nôtres|vôtres|leurs] face à face + >fusil à plomb $:B fois [de|d’] suite grosso modo guère ?d’¿ [hier|avant-hier] ?[matin|soir|après-midi]¿ - hors [de|d’] [contrôle|portée|atteinte] - hors d’ état [de|d’] [fonctionner|nuire] - hors [de|d’] [ma|ta|sa|notre|votre|leur] portée - hors du commun + ?d’¿ hors [de|d’] [contrôle|portée|atteinte] + ?d’¿ hors d’ état [de|d’] [fonctionner|nuire] + ?d’¿ hors [de|d’] [ma|ta|sa|notre|votre|leur] portée + ?d’¿ hors du commun ?d’¿ ici ?d’¿ ici [comme|ou] ailleurs ?d’¿ ici et [là|maintenant] ?d’¿ ici même ?d’¿ ici-bas ?d’¿ il y a belle lurette - ?d’¿ il y a ?très¿ longtemps - ?d’¿ il y a ?très¿ peu [de|d’] temps + ?d’¿ il y a ?[assez|si|très]¿ longtemps + ?d’¿ il y a ?[assez|si|très]¿ peu [de|d’] temps ?d’¿ il y a quelques [secondes|minutes|heures|jours|semaines|mois|année|ans|siècles|millénaires] ?d’¿ il y a moins [de|d’] [*NUM|$:B] [secondes|minutes|heures|jours|semaines|mois|année|ans|siècles|millénaires] ?d’¿ il y a [*NUM|$:B] [secondes|minutes|heures|jours|semaines|mois|année|ans|siècles|millénaires] ?d’¿ il y a quelque temps ?d’¿ il n’y a pas ?si¿ longtemps @@ -12591,11 +12762,11 @@ les [uns|unes] par rapport à l’ autre les [uns|unes] par rapport aux autres l’ [un|une] [après|avec|chez|contre|de|derrière|devant|envers|malgré|pour|sans|sous|sur] l’ autre l’ [un|une] près de l’ autre l’ [un|une] par rapport à l’ autre - loin + ?de¿ loin loin [de|d’] là loin [de|d’] tout [ça|cela|ceci] loin d’ [être|ici] loin s’ en [faut|fallait] ?[bien|si|assez]¿ longtemps @@ -12678,10 +12849,11 @@ peu [de|d’] temps auparavant peu ou prou peu à peu peut-être pile poil + >pistolet à plomb plein [nord|sud|ouest] plein [de|d’] fois plus [près|loin|tôt|tard] plus [près|loin|tôt|tard|longtemps] que [prévu|nécessaire] plus [près|loin|tôt|tard|longtemps] que d’ habitude @@ -12773,10 +12945,11 @@ sans [le|l’] vouloir sans l’ aide [de|d’] personne sans l’ ombre d’ un doute sans mot dire sans nul doute + sans perdre [de|d’] temps sans pour autant y [parvenir|réussir|réfléchir|songer|penser] sans pour autant y faire attention sans pour autant y prendre [garde|goût|gout] sans [me|te|lui|nous|vous|leur|y] prêter attention sans [que|qu’] je [le|l’] [sache|susse] @@ -12973,18 +13146,18 @@ __gestion_mots_grammaticaux__ à [bord|bout|cause|contre-courant|côté|court|défaut|destination|droite|flanc|gauche|hauteur|partir|portée|proximité|propos|rebours|titre] [de|du|d’|des] à [bonne|faible|grande] distance [de|du|d’|des] à l’ [affût|affut|approche|arrière|aune|avant|écart|égard|est|extérieur|encontre|insu|instar|intérieur|opposé|orée|ouest] [de|du|d’|des] à l’ autre bout [de|du|d’|des] - à la [hauteur|portée|suite] [de|du|d’|des] + à la [hauteur|portée|proximité|recherche|suite] [de|du|d’|des] à la grande surprise [de|du|d’|des] à [quelques|plusieurs] [mètres|kilomètres|lieues|pas|minutes|heures] [de|du|d’|des] à [quelques|plusieurs] [dizaines|centaines|milliers] de [mètres|kilomètres] [de|du|d’|des] à [base|force|raison] [de|d’] à grand renfort [de|d’] à grands coups [de|d’] - au [bout|courant|cours|détriment|fond|gré|lieu|long|large|milieu|nord|profit|ras|sein|sommet|sortir|sud|sujet|vu] [de|du|d’|des] + au [bout|courant|cours|détriment|fond|gré|lieu|large|long|milieu|nord|profit|ras|sein|sommet|sortir|sud|sujet|vu] [de|du|d’|des] au beau milieu [de|du|d’|des] au fin fond [de|du|d’|des] au grand dam [de|du|d’|des] au plus [près|profond] [de|du|d’|des] au fur et à mesure [de|du|d’|des] @@ -12993,12 +13166,14 @@ au sortir [de|du|d’|des] aux [abords|dépens] [de|du|d’|des] compte tenu [de|du|d’|des] d’ un bout à l’ autre [de|du|d’|des] dans l’ attente [de|du|d’|des] + dans la ligne de mire [de|du|d’|des] des [quatre|4] coins [de|du|d’|des] - en [arrière|attente|amont|aval|bas|cas|cours|dehors|dépit|direction|faveur|guise|haut|présence|provenance|quête|raison|sus|termes|vertu] [de|du|d’|des] + en [arrière|attente|amont|aval|bas|cas|cours|dehors|dépit|direction|faveur|guise|haut|présence|provenance|quête|raison|sus|termes|travers|vertu] [de|du|d’|des] + en dépit de la proximité [de|du|d’|des] en flagrant délit [de|d’] en lieu et place [de|du|d’|des] en matière [de|d’] en l’ [absence|honneur] [de|du|d’|des] en plein milieu [de|du|d’|des] @@ -13006,19 +13181,19 @@ par le biais [de|du|d’|des] par l’ entremise [de|du|d’|des] par manque [de|d’] sous la houlette [de|du|d’|des] <<- ~1:-2>> ␣ - <<- =>> define(\1, [":R:LR"]) + <<- =>> define(\1, [":G:R:LR"]) - tout au long [de|du|d’|des] + tout au [bout|long] [de|du|d’|des] <<- not morph(<1, ":R") ~1>> * à travers $:D à travers >différent <<- ~1:2>> ␣ - <<- =>> define(\1, [":R:LR"]) + <<- =>> define(\1, [":G:R:LR"]) ainsi <<- not value(>1, "|que|qu’|") ~>> * au moins @:[DB] @@ -13220,11 +13395,11 @@ <<- ~1:2>> * aussi $:W que [nécessaire|possible] <<- ~>> * - aussi $:W que ce soit [|,] + aussi $:W que ce soit [|,|)] <<- ~1:5>> * au sens le [plus|moins] @:A.*:[me]:[si] du terme au sens @:A.*:[me]:[si] du terme <<- ~>> * @@ -13295,15 +13470,18 @@ <<- not morph(<1, ":Ov|>(?:il|on|elle)") ~>> * entre [moi|toi|lui|elle|nous|vous|eux|elles] et [moi|toi|lui|elle|nous|vous|eux|elles] <<- ~>> * + haut [placé+ses] + <<- not value(<1, "|en|de|d’|") ~1>> * + haut et fort <<- not morph(<1, ":D") ~>> * hélas - <<- not morph(<1, ":(?:X|Oo)") and not tag_before(\1, "2s") ~>> * + <<- not morph(<1, ":(?:X|Oo)") and not tag_before(\1, "_2s_") ~>> * la lettre [a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z] @:(?:3s|Ov) <<- ~3>> * le [plus|moins] $:W possible @@ -13319,11 +13497,11 @@ <<- not morph(<1, ":D.*:f:[si]") ~>> * nombre [de|des] <<- morph(<1, ":(?:R|C[sc])") ~1>> * - non @:A + non $:A¬>content/ <<- not morph(<1, ":D.*:m:[si]") ~1>> * par trop $:A <<- ~1:2>> * @@ -13371,10 +13549,13 @@ pour les autres @:¬:[AQ].*:[pi] <<- ~1:3>> * [le|un|ce|mon|ton|son] putain [de|d’] @:[NA].*:[me] <<- ~2:3>> * + + >répandre comme une [traînée|trainée] [de|d’] poudre + <<- ~2:0>> * quand même @:[AW]¬:D <<- ~1:2>> * tambour battant @@ -13419,10 +13600,11 @@ >acte [de|d’] gestion ?courante¿ >acte [de|d’] procédure ?pénale¿ >acte d’ état ?civil¿ >administrateur >système >agence [de|d’] >voyage + >agité du bocal >aire d’ atterrissage >animal [de|d’] compagnie >appel au secours >appel à l’ aide >arc à poulies @@ -13440,22 +13622,20 @@ >attaque à main armée >attestation sur l’ honneur >atteinte aux bonnes mœurs >avion à [>hélice|réaction] ayants droit + >bain [de|d’] sang >banc [de|d’] touche >bandit [de|d’] grand chemin >bandit [de|d’] grands chemins bas résille >benne à >ordure [>beauté|>beau] à couper le souffle >bête à [manger|bouffer] du foin >billet [de|d’] [*NUM|$:B] [>euro|>dollar|>centime|>cent|>livre|>shilling] [>bisphénol|>bisphenol] A - >blanc comme neige - >blanc comme [de|d’] la craie - >blanc comme un linge [>boîte|>boite] [aux|à] lettres [>boîte|>boite] à [gants|outils|sardines] >bombe à [eau|fission|fusion|fragmentation|hydrogène|neutrons|retardement] >bombe à rayonnement renforcé >bonnet [de|d’] nuit @@ -13465,16 +13645,17 @@ bras [de|d’] fer >brave ?d’¿ entre les braves >brosse à [>dent|reluire] >bureau [de|d’] [tabac|vote] >cabinet [de|d’] [toilette|travail] - >camp [de|d’] [concentration|internement|rééducation|vacances] + >camp [de|d’] [concentration|internement|rééducation|travail|vacances] >canne à [pêche|sucre] >canon à eau >caisse à >outil >carton d’ emballage cas [de|d’] figure + cas [de|d’] force majeure >cellule [de|d’] détention provisoire >centre d’ éducation [populaire|surveillée] >centre [de|d’] rétention ?[préventive|administrative]¿ >chair à [pâté|>canon] >chair [de|d’] poule @@ -13484,20 +13665,25 @@ [>chariot|>charriot] à [bagages|roulettes] >chasse à courre >chasse à l’ homme >chasse d’ eau >chasseur [de|d’] primes + >chef [de|d’] file + >chef d’ [état-major|entreprise] >chemin [de|d’] [traverse|fer] >chemise [de|d’] nuit >chemise sans >manche >chèque sans provision >chili con carne + >chômage [de|d’] masse >chou à la crème ?[fouettée|diplomate|mousseline|patissière|pralinée]¿ + >cible en approche >cité u >clair comme [de|d’] l’ eau [de|d’] [boudin|roche|source] >clair comme du cristal >clair comme jus [de|d’] [boudin|>chaussette|chique] + [clair+s] [de|d’] lune >classement sans suite [>clé|>clef] à molette >clin d’ œil >clause [de|d’] [confidentialité|non-concurrence] >clause [de|d’] non concurrence @@ -13506,10 +13692,11 @@ >compagne [de|d’] route >compagnon [de|d’] route >complémentaire santé [composante+s] alpha >compte à rebours + >compte offshore concours [de|d’] beauté >condamné à mort >conférence [de|d’] presse >conseiller d’ orientation [scolaire|professionnelle] >contrôle [de|d’] routine @@ -13538,10 +13725,11 @@ [>dîner|>diner] aux chandelles >digne [de|d’] [confiance|foi] >digne [de|d’] ce nom >don en nature >donneur [de|d’] >leçon + >dossier d’ inscription ?[administrative|scolaire]¿ >dossier [de|d’] presse >eau [de|d’] [bouleau|bleuet|chaux|coco|javel|jouvence|mer|parfum|pluie|seltz|source|vie] >eau [de|d’] noix [de|d’] coco >économie [de|d’] >bout [de|d’] >chandelle >éditeur [de|d’] presse @@ -13551,10 +13739,11 @@ >enterrement [de|d’] vie [de|d’] garçon >enterrement [de|d’] vie [de|d’] jeune fille >entrée [de|d’] service >épée à deux mains >épingle à cravate + >épreuve [de|d’] force >erreur [de|d’] jugement >espérance [de|d’] vie >état [de|d’] [âme|esprit|urgence|conservation|fait] >état d’ extrême urgence >état [de|d’] l’ art @@ -13562,16 +13751,17 @@ >expérience [utilisateur|utilisateurs] >face [A|B] faits et gestes farces et attrapes >fard à paupières - >fer à cheval >femme [de|d’] [affaires|chambre|confiance|exception|État|Église|honneur|lettres|loi|ménage] >femme d’ âge mûr >femme à poigne >femme à tout faire + >fer à cheval >fer à repasser + >fer [de|d’] lance >ferme à >clic >fermeture à glissière >fermoir à [cliquet|levier|ressort] >feu d’ artifice >feu de paille @@ -13584,15 +13774,16 @@ fils à [papa|maman] fils [de|d’] pute >figure de proue >fleuve à sec >flocon [de|d’] neige ?électronique¿ - >force d’ assaut - >fou à lier + fonds d’ investissement >fontaine à eau + >force d’ assaut >fosse à [merde|>ordure|purin] >fosse aux lions + >fou à lier [>fourgon|>fourgonnette] [de|d’] location >frayeur [de|d’] tous les diables >frousse [de|d’] tous les diables >fusil à pompe >garde à vue @@ -13619,21 +13810,23 @@ >inspection [de|d’] routine >instinct [de|d’] survie >interface [utilisateur+s] >invité d’ honneur >invité surprise + >issue de secours >journal [de|d’] bord >juge d’ instruction >langue [de|d’] bois >lame [de|d’] fond - >lettre [de|d’] recommandation >lampe à [huile|pétrole] >lampe [de|d’] chevet >langue [de|d’] bois >lavage [de|d’] cerveau + >lettre [de|d’] [démission|motivation|recommandation|référence|résiliation] + >lettre [de|d’] procuration ?bancaire¿ >liaison sans lendemain - >ligne [de|d’] mire + >ligne [de|d’] [conduite|mire] >lime à >ongle >liste d’ attente >lit à baldaquin >lit [de|d’] camp >livraison à domicile @@ -13669,26 +13862,29 @@ >mode [de|d’] [emploi|paiement|scrutin|vie] >monnaie [de|d’] [échange|réserve|singe] >montre à gousset >mot [de|d’] passe >moteur [>essence|>diésel|>diesel] - >motion [de|d’] [blâme|censure|défiance] + >motion [de|d’] blâme + >motion [de|d’] [censure|défiance] ?constructive¿ >moule à [>gaufre|>gâteau|brioche|manqué|savarin|charlotte|tarte] >moulin à [café|eau|paroles|poivre|prières|vent] noix [de|d’] [cajou|pécan|pecan|coco|lavage|muscade|veau|macadamia] >nounou à domicile >nourrice à domicile >occasion en or ?massif¿ >oiseau [de|d’] [malheur|nuit|proie] >oiseau [de|d’] mauvais augure >onde [de|d’] choc + >ordre du jour orge [perlé|mondé|carré] >nuit [de|d’] noces >pain [de|d’] mie >panier à linge >piano à queue >papier à [>lettre|musique] + >parc à thème >parc d’ attractions >parole en l’ air >partie [de|d’] jambes en l’ air >passage à tabac >passation [de|d’] pouvoir @@ -13706,10 +13902,11 @@ >plein aux as >police [de|d’] [caractères|écriture] >politique spectacle >pomme [de|d’] [discorde|terre|reinette|pin|Adam|api|amour|ambre|eau|or] >pompe à [chaleur|essence|fric] + >port [de|d’] plaisance >porte [de|d’] [entrée|service|garage|sortie] >porte d’ entrée >pot [de|d’] [chambre|colle] >poudre aux yeux >pouvoir d’ achat @@ -13719,10 +13916,11 @@ prix [de|d’] revient quelqu’un d’ autre >question [de|d’] vie ou [de|d’] mort >rapport [de|d’] force >rat [de|d’] bibliothèque + >rayon [de|d’] soleil >réaction en [chaîne|chaine] région Grand Est >règlement [de|d’] comptes >sourd comme un pot >requête en nullité @@ -13729,23 +13927,25 @@ >requête en non [conciliation|inscription|lieu] >requête en non révocation [de|d’] sursis >responsable qualité [>resto|>restau] u >retour à la case départ + >revue [de|d’] presse >rivière à sec >robe [de|d’] [chambre|soirée] >robe du soir >robe sans >manche >roman à l’ eau [de|d’] rose >roue [avant|arrière] >rouge à lèvres >roulement à billes [>ru|>ruisseau] à sec + >ruée vers l’ or >sac à [bandoulière|dos|main|langer|merde|foutre] >sac [de|d’] [couchage|sport|voyage] >salle à manger - >salle [de|d’] [attente|>bain|conférence|lecture|séjour|vente] + >salle [de|d’] [attente|>bain|bal|conférence|lecture|séjour|vente] >sclérose en plaques [secret+s] défense >sel [de|d’] [aluminium|ammonium|mer] >serpent à sonnette >service d’ ordre @@ -13754,18 +13954,20 @@ >silo à [>grains|blé] >soldat d’ élite >sonnette d’ alarme >sortie [de|d’] secours >soue à >cochonne + >suspension [de|d’] séance >système d’ exploitation >système D >tableau [de|d’] chasse >table à repasser >table [de|d’] chevet >taille *NUM tas [de|d’] ferraille ?rouillée¿ >talon >aiguille + tapis [de|d’] prière taux [de|d’] [abstention|absorption|alcool|alphabétisation|endettement|inflation|intérêt|imposition|occupation|ouverture|œstrogène|urée|usure|change|cholestérol|cholesterol|glycémie|fécondité|participation|testostérone|TVA] >témoin à charge tenants et aboutissants >ténor du barreau >tête à claques @@ -13780,10 +13982,11 @@ >toile de fond >tondeuse à gazon >tour [de|d’] passe-passe >torrent à sec >train à grande vitesse + >train [de|d’] vie >traitement [de|d’] faveur >transport en commun >travail d’ intérêt général >trou à >rat >trouble à l’ ordre public @@ -13811,10 +14014,13 @@ >zone [de|d’] confort >zone [de|d’] transit ?principal¿ <<- ~2:0>> * <<- =>> =select(\1, ":N") + >blanc comme neige + >blanc comme [de|d’] la craie + >blanc comme un linge >brut [de|d’] décoffrage >con comme la lune >con comme un balai >con comme une valise sans >poignée >corvéable à merci @@ -13821,12 +14027,15 @@ >court sur pattes [cousu+ses] [main] [cousu+ses] [de|d’] fil blanc [daté+ses] du [1er|1ᵉʳ|1|01|2|02|3|03|4|04|5|05|6|06|7|07|8|08|9|09|10|11|12|13|14|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31] {mois} ?[prochain|passé|dernier|~^[0-9]{2,5}$]¿ >droit comme un i + >fort en gueule >fou de rage ?[contenue|retenue]¿ + >élu à la majarité absolue >haut comme [trois|3] pommes + >haut en couleur >mort de trouille >nu comme un ver >nu comme des vers >nul et non >avenu >noir comme la nuit @@ -13854,10 +14063,13 @@ <<- ~2:0>> * <<- =>> =select(\1, ":N") une bonne chose de réglée <<- ~-2:0>> * + + [le|la|l’|les] $:N d’ alors + <<- ~-2:0>> * __purge_syntagmes_nominaux_matière__ *WORD en acier ?[galvanisé|inoxydable|trempé]¿ *WORD en chêne ?massif¿ @@ -14361,182 +14573,182 @@ <<- ~1>> * __purge_locutions_potentielles__ à ce [jour|moment] @¬:A.*:[me]:[si] - à ce [jour|moment] [|,] + à ce [jour|moment] [|,|)] <<- ~1:3>> * à [mon|ton|son|notre|votre|leur] sens @¬:A.*:[me]:[si] - à [mon|ton|son|notre|votre|leur] sens [|,] + à [mon|ton|son|notre|votre|leur] sens [|,|)] <<- ~1:3>> * à [mes|tes|ses|nos|vos|leurs] yeux @¬:A.*:[me]:[pi] - à [mes|tes|ses|nos|vos|leurs] yeux [|,] + à [mes|tes|ses|nos|vos|leurs] yeux [|,|)] <<- ~1:3>> * à la dernière [minute|seconde] @¬:A.*:[fe]:[si] - à la dernière [minute|seconde] [|,] + à la dernière [minute|seconde] [|,|)] <<- ~1:4>> * à la longue @¬:N.*:[fe]:[si] - à la longue [|,] + à la longue [|,|)] à la dérive @¬:A.*:[fe]:[si] - à la dérive [|,] + à la dérive [|,|)] à l’ époque @¬:A.*:[fe]:[si] - à l’ époque [|,] + à l’ époque [|,|)] <<- ~1:3>> * à répétition @¬:A.*:[fe]:[si] - à répétition [|,] + à répétition [|,|)] <<- ~1:2>> * au [départ|quotidien] @:¬:A.*:[me]:[si] - au [départ|quotidien] [|,] + au [départ|quotidien] [|,|)] <<- ~1:2>> * au pire @:A¬:N.*:[me]:[si] - au pire [|,] + au pire [|,|)] <<- ~1:2>> * [|,|(] ben voyons <<- ~2:3>> * chaque [année|semaine|journée|décennie] @¬:(?:A.*:[fe]:[si]|Oo|[123][sp]) - chaque [année|semaine|journée|décennie] [|,] + chaque [année|semaine|journée|décennie] [|,|)] <<- ~1:2>> * chaque [an|jour|mois] @¬:(?:A.*:[me]:[si]|Oo|[123][sp]) - chaque [an|jour|mois] [|,] + chaque [an|jour|mois] [|,|)] <<- ~1:2>> * d’ apparat <<- morph(<1, ":N", ":V") ~>> * d’ [avance|évidence] @¬:A.*:[fe]:[si] - d’ [avance|évidence] [|,] + d’ [avance|évidence] [|,|)] <<- ~1:2>> * d’ entrée @¬:A:[fe]:[si] - d’ entrée [|,] + d’ entrée [|,|)] <<- ~1:2>> * dans ce cas @¬:A:[me]:[pi] - dans ce cas [|,] + dans ce cas [|,|)] <<- ~1:3>> * dans la grande majorité des cas @¬:A:[me]:[pi] - dans la grande majorité des cas [|,] + dans la grande majorité des cas [|,|)] <<- ~1:6>> * dans la majorité des cas @¬:A:[me]:[pi] dans de [très|trop] nombreux cas @¬:A:[me]:[pi] dans la plupart des cas @¬:A:[me]:[pi] - dans la majorité des cas [|,] - dans de [très|trop] nombreux cas [|,] - dans la plupart des cas [|,] + dans la majorité des cas [|,|)] + dans de [très|trop] nombreux cas [|,|)] + dans la plupart des cas [|,|)] <<- ~1:5>> * dans les faits @¬:A:[me]:[pi] - dans les faits [|,] + dans les faits [|,|)] <<- ~1:3>> * dans maints cas @¬:A:[me]:[pi] - dans maints cas [|,] + dans maints cas [|,|)] <<- ~1:3>> * dans l’ ensemble @¬:A.*:[me]:[si] - dans l’ ensemble [|,] + dans l’ ensemble [|,|)] <<- ~1:3>> * dans un [lointain|proche] avenir @¬:A.*:[me]:[si] - dans un [lointain|proche] avenir [|,] + dans un [lointain|proche] avenir [|,|)] dans un avenir [lointain|proche] @¬:A.*:[me]:[si] - dans un avenir [lointain|proche] [|,] + dans un avenir [lointain|proche] [|,|)] <<- ~-2>> * dans tous les cas @:A¬:A.*:[me]:[pi] - dans tous les cas [|,] + dans tous les cas [|,|)] <<- ~1:4>> * de ce fait @¬:A.*:[me]:[si] - de ce fait [|,] + de ce fait [|,|)] <<- ~1:3>> * de ce seul fait @¬:A.*:[me]:[si] - de ce seul fait [|,] + de ce seul fait [|,|)] <<- ~1:4>> * des fois @¬:A.*:[fe]:[pi] - des fois [|,] + des fois [|,|)] <<- ~1:2>> * dès le départ @¬:A.*:[me]:[si] - dès le départ [|,] + dès le départ [|,|)] <<- ~1:3>> * dès les premiers [jours|mois|ans|siècles|trimestres|semestres] @¬:A.*:[me]:[pi] - dès les premiers [jours|mois|ans|siècles|trimestres|semestres] [|,] + dès les premiers [jours|mois|ans|siècles|trimestres|semestres] [|,|)] <<- ~1:4>> * dès les premières [années|semaines|minutes|secondes|heures|décennies] @¬:A.*:[fe]:[pi] - dès les premières [années|semaines|minutes|secondes|heures|décennies] [|,] + dès les premières [années|semaines|minutes|secondes|heures|décennies] [|,|)] <<- ~1:4>> * en [certaines|quelques|plusieurs] occasions @¬:A.*:[fe]:[pi] - en [certaines|quelques|plusieurs] occasions [|,] + en [certaines|quelques|plusieurs] occasions [|,|)] <<- ~1:3>> * en de multiples occasions @¬:A.*:[fe]:[pi] - en de multiples occasions [|,] + en de multiples occasions [|,|)] <<- ~1:4>> * en un sens @¬:A.*:[me]:[si] - en un sens [|,] + en un sens [|,|)] <<- ~1:3>> * en sus <<- not value(<1, "|j’|tu|il|elle|on|n’") ~>> * entre autres choses @¬:A.*:[fe]:[pi] - entre autres choses [|,] + entre autres choses [|,|)] <<- ~1:3>> * [quelques|plusieurs] [secondes|minutes|heures|journées|semaines|années|décennies] @¬:A.*:[fe]:[pi] - [quelques|plusieurs] [secondes|minutes|heures|journées|semaines|années|décennies] [|,] + [quelques|plusieurs] [secondes|minutes|heures|journées|semaines|années|décennies] [|,|)] <<- ~1:2>> * de [quelques|plusieurs] [secondes|minutes|heures|journées|semaines|années|décennies] @¬:A.*:[fe]:[pi] - de [quelques|plusieurs] [secondes|minutes|heures|journées|semaines|années|décennies] [|,] + de [quelques|plusieurs] [secondes|minutes|heures|journées|semaines|années|décennies] [|,|)] <<- ~1:3>> * de nombreuses [secondes|minutes|heures|journées|semaines|années|décennies] @¬:A.*:[fe]:[pi] - de nombreuses [secondes|minutes|heures|journées|semaines|années|décennies] [|,] + de nombreuses [secondes|minutes|heures|journées|semaines|années|décennies] [|,|)] <<- ~1:3>> * [quelques|plusieurs] [instants|moments|jours|mois|ans|siècles] @¬:A.*:[me]:[pi] - [quelques|plusieurs] [instants|moments|jours|mois|ans|siècles] [|,] + [quelques|plusieurs] [instants|moments|jours|mois|ans|siècles] [|,|)] <<- ~1:2>> * de [quelques|plusieurs] [instants|moments|jours|mois|ans|siècles] @¬:A.*:[me]:[pi] - de [quelques|plusieurs] [instants|moments|jours|mois|ans|siècles] [|,] + de [quelques|plusieurs] [instants|moments|jours|mois|ans|siècles] [|,|)] <<- ~1:3>> * de nombreux [instants|moments|jours|mois|ans|siècles] @¬:A.*:[me]:[pi] - de nombreux [instants|moments|jours|mois|ans|siècles] [|,] + de nombreux [instants|moments|jours|mois|ans|siècles] [|,|)] <<- ~1:3>> * [de|d’] [façon|manière] ?non¿ @:A.*:[fe]:[si] et ?non¿ @:A.*:[fe]:[si]¬:[GM] [de|d’] [façon|manière] ?non¿ @:A.*:[fe]:[si] <<- ~>> * le plus clair [de|d’] [mon|ton|son|notre|votre|leur] temps @:¬:A:[me]:[si]|>d[e’]/ - le plus clair [de|d’] [mon|ton|son|notre|votre|leur] temps [|,] + le plus clair [de|d’] [mon|ton|son|notre|votre|leur] temps [|,|)] <<- ~1:6>> * pour partie @:¬:A.*:f:s - pour partie [|,] + pour partie [|,|)] <<- ~1:2>> * semblait-il semble-t-il <<- not value(<1, "|ça|cela|ceci|me|te|lui|nous|vous|leur|") ~>> * @@ -14543,21 +14755,21 @@ tête la première <<- /conf/ not morph(<1, ":D") and not morph(>1, ":[NA].*:[fe]:[si]") ~>> * ?à¿ un [instant|moment] @¬>où/|:A.*:[me]:[si] - ?à¿ un [instant|moment] [|,] + ?à¿ un [instant|moment] [|,|)] un seul [instant|moment] @¬>où|:A.*:[me]:[si] - un seul [instant|moment] [|,] + un seul [instant|moment] [|,|)] <<- not morph(<1, ":R|>d’/") ~1:-2>> * un jour @:¬:A.*:[me]:[si] - un jour [|,] + un jour [|,|)] <<- not morph(<1, ":R|>d’/") ~1:2>> * vu les circonstances @¬:A:[fe]:[pi] - vu les circonstances [|,] + vu les circonstances [|,|)] <<- ~1:3>> * __purge_tous_deux_trois__ >faire [tous|toutes] [deux|trois] @@ -14644,11 +14856,11 @@ vite <<- not (morph(<1, ":V0a") and value(>1, "|fait|")) ~>> * __purge_locutions_verbales__ - >avoir foule + >avoir [foule|vent] >aller bon train >aller de l’ avant >armer jusqu’ aux dents >arriver à [destination|échéance] >arriver à point nommé @@ -14661,10 +14873,11 @@ >chauffer à blanc >compter à rebours >condamner à mort >couler à ?grands¿ flots >demander [assistance|audience|conseil|pardon] + >dire [adieu|merde] [>donner|>redonner] [naissance|sens|suite|vie] [>donner|>redonner] quartier libre >élire domicile >étouffer dans l’ œuf >faire [allusion|assaut|attention|barrage|chaud|confiance|connaissance|compliqué|copain-copain|date|débat|défaut|demi-tour|écran|envie|erreur|état|exception|figure|foi|fortune|froid|front|grève|halte|honte|illusion|mention|mouche|nation|naufrage|office|part|peur|polémique|plaisir|preuve|rage|recette|rempart|scandale|sens|sensation|signe|surface|usage|volte-face] @@ -14686,10 +14899,11 @@ >faire partie ?intégrante¿ >faire profil bas >faire [bonne|fausse] route >faire salle comble >faire table rase + >faire tache d’ huile >faire ce que bon [me|te|lui|nous|vous|leur] semble >fausser compagnie >fermer à [clé|clef] >ficher S >finir en eau de boudin @@ -14730,20 +14944,22 @@ >prendre ?[ça|cela|ceci]¿ à la légère >prendre ?[ça|cela|ceci]¿ au [dépourvu|sérieux] >prendre ?[ça|cela|ceci]¿ au pied de la lettre >prendre bonne note >prendre [congé|conscience|contact|ombrage|note|peur|position|possession|racine|soin|vie] - >prendre de [court|vitesse] + >prendre d’ assaut + >prendre [de|d’] [court|vitesse] >prendre ?[ça|cela|ceci]¿ en charge >prendre ?[ça|cela|ceci]¿ pour argent comptant >prendre par surprise >prêter à confusion >prêter main forte >prêter main-forte >rebrousser chemin >réduire à néant >réduire en miettes + >refaire surface >remettre en cause >rendre [compte|hommage|service|visite] >reprendre haleine >rester lettre morte >rester lettres mortes @@ -14941,10 +15157,11 @@ TEST: elles ont toutes deux épluché le contenu de la boîte TEST: le flou demeure aujourd’hui éblouissant. TEST: la petite reste fragile TEST: au moins neuf personnes disparues dans le pays et 140 blessés TEST: C’en est arrivé là. +TEST: C’en est fini. TEST: Madame, des comme vous, j’en vois quatre par jour. TEST: Un quotidien facilité peut changer, à long terme, la donne dans la satisfaction des professionnels du privé et du public. TEST: elles sont dans l’incapacité de rendre compte de l’intensité et de la profondeur des traumatismes provoqués TEST: Cela nous évoque la fable de Jean de la Fontaine « Les animaux malades de la peste » TEST: Des actions réunissant jusqu’à plusieurs milliers de signataires, et obtenant parfois même gain de cause à l’arrachée. @@ -14958,10 +15175,11 @@ TEST: « Ça vient ! » TEST: Voilà une bonne chose de réglée ! TEST: responsable de l’Ordre des pharmaciens dans la région Grand Est TEST: D’autres nombreuses actions sont également bien sûr impératives. TEST: il y a fort à parier qu’on sera encore oublié… + @@@@ @@@@ @@@@ @@ -15708,12 +15926,12 @@ TEST: il l’a donné aux {{étudiant}} TEST: aux {{personne}} __gn_det_epi_plur_2m__ - [ces|mes|tes|ses|nos|vos|leurs|quelques|plusieurs|aux|moult] *WORD *WORD - <<- /gn/ not value(<1, "|et|ou|de|d’|") and not \3.startswith("seul") >>> + [ces|mes|tes|ses|nos|vos|leurs|quelques|plusieurs|aux|moult|$:B] *WORD *WORD + <<- /gn/ not value(<1, "|et|ou|de|d’|au|aux|") and not \3.startswith("seul") >>> <<- /gn/ ((morph(\2, ":[NA].*:m", ":(?:B|e|G|V0|f)") and morph(\3, ":[NA].*:f", "*")) or (morph(\2, ":[NA].*:f", ":(?:B|e|G|V0|m)") and morph(\3, ":[NA].*:m", "*"))) and not apposition(\2, \3) -3>> =switchGender(\3, True) # Accord de genre erroné entre « \2 » et « \3 ». <<- /gn/ __also__ and hasFemForm(\2) -2>> =switchGender(\2, True) # Accord de genre erroné avec « \3 ». <<- /gn/ morph(\2, ":[NA].*:[pi]") and morph(\3, ":[NA].*:s", "*") and not apposition(\2, \3) and not (value(>1, "|et|,|") and morph(>2, ":A")) @@ -15731,10 +15949,11 @@ TEST: ces {{beaux}} {{institutions}} TEST: nos petites {{fille}} TEST: de plusieurs {{grands}} {{avocates}} TEST: de vos défauts {{terrible}}, je connais presque tout. +TEST: sept valeurs {{aléatoire}} TEST: Les éléments caractéristiques liés à ses valeurs historique et architecturale TEST: Une des pierres veinée de rouge… TEST: Pour maintenir le potentiel de membrane qui lui permet de communiquer avec ses voisins sous forme d’influx nerveux, un neurone a besoin d’énergie. TEST: ces religieux inflexibles envers les femmes mais compatissants envers les tyrans qui soutiennent leur religion. TEST: le bruit de nos pas étouffé par l’épais tapis. @@ -17259,11 +17478,13 @@ !!!! Confusions !! !! !! # a / à -__conf_a_à__ +__conf_à_a_après_verbes__ + >appeler a l’ aide + >avoir a l’ œil >arriver a [destination|échéance] >arriver a point nommé >arriver a bon port >battre a plate couture [>brûler|>bruler] a vif @@ -17273,10 +17494,11 @@ [>gonfler|>regonfler] a bloc >jeter a terre [>mettre|>remettre] a [bas|>flot|>jour|>niveau|>nu|>plat|>table|>terre] >naviguer a [vu+ses] [>mettre|>remettre] a l’ [écart|épreuve] + >parer a toute éventualité >passer a tabac >percer a jour >prendre a la légère >prêter a >confusion >réduire a néant @@ -17289,25 +17511,70 @@ >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 “à”. - >avoir du mal a + >appartenir a + >appartenir en propre a >avoir vocation a + >donner [sens|suite] a + enclin a + en proie a >laisser libre cours a - <<- /conf/ --1>> à # Confusion : “a” est une conjugaison du verbe “avoir”. Pour la préposition, écrivez “à”. + >parvenir a + >prêter attention a + <<- /conf/ \-1 != "A" and not tag_before(\1, "_àCOI_") --1>> à # Confusion : “a” est une conjugaison du verbe “avoir”. Pour la préposition, écrivez “à”. + >appeler a + >avoir du mal a + >commencer a + >condamner a + >dire [adieu|merde] a + >faire confiance a + >mentir a + >préparer a + >prêter serment a + >réussir a + >viser a + <<- /conf/ not tag_before(\1, "_propsub_") and not morph(\1, ":Y") + --1>> à # Confusion probable : “a” est une conjugaison du verbe “avoir”. Pour la préposition, écrivez “à”. + + @:V¬:[YGNAWM] a + <<- /conf/ \-1 != "A" and not tag_before(\1, "_propsub_") and not morph(>1, ":Q") + --1>> à # Confusion probable : “a” est la conjugaison du verbe “avoir”. Pour la préposition, écrivez “à”.|http://fr.wiktionary.org/wiki/%C3%A0 + + [/VCint|/VCimp] a + <<- /conf/ not value(\1, "|rendez-vous|") --1>> à # Confusion : “a” est la conjugaison du verbe “avoir”. Pour la préposition, écrivez “à”.|http://fr.wiktionary.org/wiki/%C3%A0 + +TEST: en proie {{a}} toutes sortes d’illusions TEST: ce contrat arrive {{a}} échéance. TEST: il faut tenir {{contes}} des faits au lieu de nos impressions. TEST: prendre {{a}} la légère ce test serait une erreur. TEST: il faut se tenir {{a}} distance de ces gens-là. TEST: J’avais du mal {{a}} l’écouté (double erreur utile pour tester le faux positif) +TEST: Vient-on {{a}} la maison demain ? +TEST: Arrivait-elle {{a}} le manger ? +TEST: Dis-moi {{a}} quelle heure on mange. +TEST: Offrez-vous {{a}} Dieu et taisez-vous. +TEST: dans tous les cas de figure il pense souvent {{a}} sa fille. +TEST: Qu’y a-t-il {{a}} cette place qui mérite que je prenne tant de risques. +TEST: N’y a-t-il pas {{a}} la table du saucisson ? +TEST: cet homme mange bien {{a}} la maison ? +TEST: Ce que je mange a un goût de surgelé. +TEST: celui qui conduisait a décidé de faire un tour du quartier avec la voiture. +TEST: Un rendez-vous a bousculé ses plans +TEST: Maria Butina a également rencontré des républicains tels que Donald Trump +TEST: l’épée que tu tiens a une longue histoire sanglante. +TEST: l’appel auquel j’ai donné suite a eu des conséquences désastreuses. +TEST: le problème avec lequel j’ai du mal a été résolu avec brio par mon rival +TEST: quand on doute, minutieusement se préparer a des vertus apaisantes +TEST: ce que tu fais a des conséquences __conf_pronom_à_l_air__ [tout|ça|ceci|cela] à l’ air @:[AR]|>libre/ - <<- /conf/ morph(<1, ":Cs||>,") -2>> a # Confusion probable : “à” est une préposition. Pour le verbe “avoir”, écrivez “a”. + <<- /conf/ morph(<1, ":Cs||>,") -2>> a # Confusion probable : “à” est une préposition. Pour le verbe “avoir”, écrivez “a”. TEST: lorsque tout {{à}} l’air fini, c’est trompeur. TEST: Tout {{à}} l’air complètement foutu… TEST: Ça {{à}} l’air génial. TEST: Tout à la benne. @@ -17469,11 +17736,11 @@ TEST: il a bachoté les {{anales}}. # air / aire / ère __conf_air_aire_ère__ - [>air|>aire] [>digital|>numérique|>industriel|>glacière|>glaciaire|>géologique|Meiji|>cénozoïque|>moderne|>paléozoïque|>pliocène|>primaire|>secondaire|>tertiaire|>quaternaire] + [>air|>aire] [>digital|>numérique|>industriel|>glacière|>glaciaire|>géologique|Meiji|>cénozoïque|>moderne|nouvel|nouvelle+s|>paléozoïque|>pliocène|>primaire|>secondaire|>tertiaire|>quaternaire] [>air|>aire] du [cénozoïque|digital|numérique|paléozoïque|pliocène|pétrole|primaire|secondaire|tertiaire|quaternaire] [>air|>aire] du big data <<- /conf/ -1>> ère|ères # Confusion. L’aire est une surface. L’air est un gaz, une apparence ou une musique. Pour évoquer une époque, écrivez “ère”. l’ [aire|ère] du temps @@ -17980,10 +18247,18 @@ TEST: il a été roué de {{cou}} TEST: Je vais tordre le {{coup}} à toutes ces idées stupides, une par une. TEST: Implacable, elle a rendu {{cout pour cout}} sans se départir de son calme. + +# cuire / cuir +__conf_cuire_cuir__ + >faire >cuir $:D [>blanquette|>boulette|>brochette|>bœuf|>carotte|>champignons|>confit|>cèpe|>côte|>côtelette|>escalope|>fruit|>fève|>girolle|>haricot|>herbe|>jarret|>joue|>lardon|>lentille|>longe|>légume|>marron|>mijoté|>morille|>nem|>nouille|>ognon|>oignon|>omelette|>patate|>paupiette|>pied|>poire|>poitrine|>pomme|>porc|>potée|>poêlée|>pruneau|>pâte|>pâte|>pâté|>ragout|>ragoût|>rillette|>rognon|>rouelle|>rôti|>sauté|>steak|>terrine|>veau|>émincé|>épice|>œuf] + <<- /conf/ -2>> cuire # Confusion. Le cuir est la peau d’un animal. Pour parler de la cuisson, écrivez “cuire”.|https://fr.wiktionary.org/wiki/cuire + +TEST: Va te faire {{cuir}} un œuf. ->> cuire + # date / datte __conf_date_datte2__ [>confiture|>crème|>gâteau|>mélasse|>noyau|>pâte|>recette|>sirop] de >date [moelleux|>gâteau|>fondant|>cake] [au|aux] >date @@ -18324,11 +18599,11 @@ TEST: Elle est souvent {{faîte}} de cette manière-là. TEST: Vous {{faîtes}} mal ! en [faite|>faîte] - <<- /conf/ not tag_before(\1, "2p") ->> en fait # Confusion probable : « en fait » = « en réalité ». + <<- /conf/ not tag_before(\1, "_2p_") ->> en fait # Confusion probable : « en fait » = « en réalité ». TEST: {{en faite}}, on en voit partout, ça grouille. TEST: ils sont {{en faîtes}} partis à la montagne. TEST: Aujourd’hui, n’en faites pas trop. @@ -18875,14 +19150,14 @@ TEST: Se faire porter {{pale}}. # pas / par __conf_pas_par2__ - [ne|n’] ?[le|la|l’|les|en|me|m’|te|t’|se|s’|nous|vous|lui|leur|y]¿ *WORD par [|,] - [ne|n’] [me|m’|te|t’|se|s’|nous|vous] [le|la|l’|les|en|y] *WORD par [|,] - [ne|n’] [le|la|l’|les] [lui|leur|en|y] *WORD par [|,] - [ne|n’] [lui|leur|y] en *WORD par [|,] + [ne|n’] ?[le|la|l’|les|en|me|m’|te|t’|se|s’|nous|vous|lui|leur|y]¿ *WORD par [|,|)] + [ne|n’] [me|m’|te|t’|se|s’|nous|vous] [le|la|l’|les|en|y] *WORD par [|,|)] + [ne|n’] [le|la|l’|les] [lui|leur|en|y] *WORD par [|,|)] + [ne|n’] [lui|leur|y] en *WORD par [|,|)] <<- /conf/ morph(\-3, ":V") --2>> pas # Confusion probable. Après “\1 \-3”, il est probable qu’il faille écrire l’adverbe de négation “pas” au lieu de la préposition “par”. TEST: Ils ne viendront probablement {{par}}… TEST: Elles ne s’en soucient {{par}} vraiment, quoi qu’elles en disent. @@ -19185,11 +19460,11 @@ TEST: tu n’as {{cas}} prendre le train # quand même / comme même __conf_quand_même__ - comme même [|,] + comme même [|,|)] comme même @:(?:Os|C) <<- /conf/ space_after(\1, 1, 1) -1:2>> quand même # Confusion probable.|http://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}}… @@ -19196,11 +19471,11 @@ # quoi qu’il en soit __conf_quoi_qu_il_en_soit__ quoiqu’ il en soit @:¬:[AQ] - quoiqu’ il en soit [|,] + quoiqu’ il en soit [|,|)] <<- /conf/ -1:4>> quoi qu’il en soit # Confusion.|https://fr.wiktionary.org/wiki/quoi_qu%E2%80%99il_en_soit TEST: {{quoiqu’il en soit}}, nous ne nous laisserons pas faire, vous pouvez compter sur nous. @@ -19342,10 +19617,12 @@ TEST: une {{tâche}} vraiment indélébile TEST: une {{tâche}} rouge. TEST: Une {{tâche}} sur ma chemise. TEST: J’ai {{tâché}} ma chemise. TEST: Nettoie cette {{tâche}} +TEST: ça fera {{tâche}} d’huile +TEST: ça fait tache d’huile TEST: en tâche de fond TEST: la tâche de la justice TEST: c’est une tâche de grande envergure TEST: déléguer des tâches de sécurité publique à des machines autonomes TEST: tirer bénéfice de nouvelles données en fonction de la tâche de départ qui leur a été assignée @@ -19374,22 +19651,28 @@ >tacher [de|d’] [le|la|l’|les] [lui|leur|en|y] $:Y >tacher [de|d’] [lui|leur] en $:Y <<- /conf/ -1>> =\1.replace("a", "â").replace("A", "Â") # Confusion. Tache signifie faire une salissure, une altération, une marque, une coloration… Pour parler de l’accomplissement d’un travail, écrivez “tâcher”. - [|,|(] *WORD >tache >être [de|d’] [ne|n’|me|m’|te|t’|se|s’] - [|,|(] *WORD >tache >être [de|d’] [le|la|l’|les|en|nous|vous|lui|leur|y] @:(?:Y|V1.*:Q) - [|,|(] *WORD >tache >être [de|d’] [nous|vous] [le|la|l’|les|en|y] @:(?:Y|V1.*:Q) - [|,|(] *WORD >tache >être [de|d’] [le|la|l’|les] [lui|leur|en|y] @:(?:Y|V1.*:Q) - [|,|(] *WORD >tache >être [de|d’] [lui|leur|y] en @:(?:Y|V1.*:Q) - [|,|(] *WORD >tache >être [de|d’] @:(?:Y|V1.*:Q) - [|,|(] *WORD >tache >consister [à|a] [ne|n’|me|m’|te|t’|se|s’] - [|,|(] *WORD >tache >consister [à|a] [le|la|l’|les|en|nous|vous|lui|leur|y] @:(?:Y|V1.*:Q) - [|,|(] *WORD >tache >consister [à|a] [nous|vous] [le|la|l’|les|en|y] @:(?:Y|V1.*:Q) - [|,|(] *WORD >tache >consister [à|a] [le|la|l’|les] [lui|leur|en|y] @:(?:Y|V1.*:Q) - [|,|(] *WORD >tache >consister [à|a] [lui|leur|y] en @:(?:Y|V1.*:Q) - [|,|(] *WORD >tache >consister [à|a] @:(?:Y|V1.*:Q) + [|,|(] *WORD >tache >être [de|d’] [ne|n’|me|m’|te|t’|se|s’] + [|,|(] *WORD >tache >être [de|d’] [le|la|l’|les|en|nous|vous|lui|leur|y] @:(?:Y|V1.*:Q) + [|,|(] *WORD >tache >être [de|d’] [nous|vous] [le|la|l’|les|en|y] @:(?:Y|V1.*:Q) + [|,|(] *WORD >tache >être [de|d’] [le|la|l’|les] [lui|leur|en|y] @:(?:Y|V1.*:Q) + [|,|(] *WORD >tache >être [de|d’] [lui|leur|y] en @:(?:Y|V1.*:Q) + [|,|(] *WORD >tache >être [de|d’] @:(?:Y|V1.*:Q) + [|,|(] *WORD >tache >consister [à|a] [ne|n’|me|m’|te|t’|se|s’] + [|,|(] *WORD >tache >consister [à|a] [le|la|l’|les|en|nous|vous|lui|leur|y] @:(?:Y|V1.*:Q) + [|,|(] *WORD >tache >consister [à|a] [nous|vous] [le|la|l’|les|en|y] @:(?:Y|V1.*:Q) + [|,|(] *WORD >tache >consister [à|a] [le|la|l’|les] [lui|leur|en|y] @:(?:Y|V1.*:Q) + [|,|(] *WORD >tache >consister [à|a] [lui|leur|y] en @:(?:Y|V1.*:Q) + [|,|(] *WORD >tache >consister [à|a] @:(?:Y|V1.*:Q) + [|,|(] *WORD >tache [se|s’] >résumer [à|a] [ne|n’|me|m’|te|t’|se|s’] + [|,|(] *WORD >tache [se|s’] >résumer [à|a] [le|la|l’|les|en|nous|vous|lui|leur|y] @:(?:Y|V1.*:Q) + [|,|(] *WORD >tache [se|s’] >résumer [à|a] [nous|vous] [le|la|l’|les|en|y] @:(?:Y|V1.*:Q) + [|,|(] *WORD >tache [se|s’] >résumer [à|a] [le|la|l’|les] [lui|leur|en|y] @:(?:Y|V1.*:Q) + [|,|(] *WORD >tache [se|s’] >résumer [à|a] [lui|leur|y] en @:(?:Y|V1.*:Q) + [|,|(] *WORD >tache [se|s’] >résumer [à|a] @:(?:Y|V1.*:Q) <<- /conf/ morph(\2, ":D", ":R") -3>> =\3.replace("ach", "âch").replace("ACH", "ÂCH") # Confusion. Une tache est une salissure, une altération, une marque, une coloration… Pour parler d’un travail à accomplir, écrivez “tâche”. TEST: Quelle {{tache}} ingrate. TEST: Une {{tache}} valorisante. @@ -19399,10 +19682,11 @@ TEST: {{Tachez}} d’arriver à l’heure. TEST: {{Tache}} de ne pas faire trop de bruit. TEST: se tuer à la {{tache}} TEST: leur {{tache}} consiste à obéir et à fermer leur gueule TEST: ma {{tache}} est d’accomplir ce que personne d’autre ne peut faire. +TEST: votre {{tache}} se résume à obéir à tout ce qu’on vous dit. TEST: une tâche dévalorisante. TEST: peiner à la tâche. # taule / tôle @@ -19430,17 +19714,23 @@ il >être [tant|>tan] [de|d’] [nous|vous] [la|le|les|l’] il >être [tant|>tan] [de|d’] [la|le|les|lui|nous|vous|leur|l’] $:Y il >être [tant|>tan] [de|d’] $:Y <<- /conf/ -3>> temps # Confusion. Si vous voulez dire “c’est le moment de”, écrivez “temps”.|https://fr.wiktionary.org/wiki/il_est_temps + [>avoir|>prendre||,|(] du bon [tant|>tan] + c’ >être [le|l’] bon ?vieux¿ [tant|>tan] + <<- /conf/ --1>> temps # Confusion. Pour parler d’un période heureuse, écrivez “temps”. + TEST: en {{tan}} que meneuse intrépide, elle a toujours fait preuve d’une grande imagination. TEST: il est bien évidemment {{tant}} d’en finir avec ça. +TEST: c’était le bon {{tan}} +TEST: elle sait prendre du bon {{tant}} # tort / tord / tore / torr / tors __conf_tort_tord_tore__ - en [tord|tords] [|,] + en [tord|tords] [|,|)] à [tord|tords] <<- /conf/ -2>> tort # Confusion : “tord” est une conjugaison du verbe tordre. [à|en] >tore <<- /conf/ -2>> tort # Confusion : un tore est une forme géométrique annulaire. @@ -19637,11 +19927,11 @@ TEST: ils ont intérêt à {{obligés}} ces gens TEST: Tous ceux qui ont du mal à {{obligé}} ces gens __infi_verbe_de_verbe__ - [>accuser|>arrêter|>cesser|>choisir|>commander|>continuer|>craindre|>décider|>défendre|>envisager|>essayer|>éviter|>interdire|>omettre|>oublier|>permettre|>prévoir|>refuser|>suggérer|>tenter] + [>accuser|>arrêter|>cesser|>choisir|>commander|>continuer|>craindre|>décider|>défendre|>envisager|>essayer|>éviter|>interdire|>jurer|>omettre|>oublier|>permettre|>prévoir|>promettre|>refuser|>suggérer|>tenter] || [de|d’] ?[le|l’|la|leur|les|nous|vous|lui]¿ *WORD <<- /infi/ not morph(\1, ":N") and (analyse(\-1, ":V1.*:Q", ":(?:M|Oo)") or analyse(\-1, ":[123][sp]", ":[MNG]")) --1>> =suggVerbInfi(\-1) # Après “\1 de”, le verbe devrait être à l’infinitif. TEST: cessez d’{{anesthésié}} ces gens ! @@ -19700,10 +19990,13 @@ <<- /infi/ analyse(\-1, ":Q", ":[MN]") --1>> =suggVerbInfi(\-1) # Après “avoir \2 de”, le verbe devrait être à l’infinitif. >avoir vite fait [de|d’] ?[le|l’|la|leur|les|nous|vous|lui]¿ ~..ée?s?$ <<- /infi/ analyse(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1) # Après “avoir vite fait de”, le verbe devrait être à l’infinitif. + n’ >avoir de cesse [de|d’] ?[le|l’|la|leur|les|nous|vous|lui]¿ ~..ée?s?$ + <<- /infi/ analyse(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1) # Après “n’avoir de cesse de”, le verbe devrait être à l’infinitif.|https://fr.wiktionary.org/wiki/n%E2%80%99avoir_de_cesse + >faire [exprès|semblant|mine] [de|d’] ?[le|l’|la|leur|les|nous|vous|lui]¿ ~..ée?s?$ <<- /infi/ analyse(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1) # Après “faire semblant de”, le verbe devrait être à l’infinitif. [>façon|>manière] [de|d’] ?[le|l’|la|leur|les|nous|vous|lui]¿ ~..ée?s?$ [>intention|>volonté] [de|d’] ?[le|l’|la|leur|les|nous|vous|lui]¿ ~..ée?s?$ @@ -19721,10 +20014,16 @@ force [est|était|fut|serait|sera] [de|d’] ?[le|l’|la|leur|les|nous|vous|lui]¿ ~..ée?s?$ <<- /infi/ not value(<1, "|une|la|cette|ma|ta|sa|notre|votre|leur|quelle|de|d’|") and analyse(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1) # Après “force est de”, le verbe devrait être à l’infinitif. + non >content [de|d’] ?[le|les|nous|vous|lui]¿ ~..ée?s?$ + <<- /infi/ analyse(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1) # Après “non content de”, le verbe devrait être à l’infinitif. + + non >content [de|d’] [l’|la] ~..ée?s?$ + <<- /infi/ analyse(\-1, ":Q", ":[MN]") --1>> =suggVerbInfi(\-1) # Après “non content de”, le verbe devrait être à l’infinitif. + sous peine [de|d’] ?[le|l’|la|leur|les|nous|vous|lui]¿ ~..ée?s?$ <<- /infi/ analyse(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1) # Après “sous peine de”, le verbe devrait être à l’infinitif. TEST: afin de leur {{percée}} une ouverture TEST: en train de {{percées}} @@ -19737,19 +20036,22 @@ TEST: nous eûmes la chance de la {{trouvée}} facilement TEST: avoir raison de la {{considérée}} ainsi TEST: vous avez le droit de lui {{craché}} à la gueule TEST: ils ont vite fait de nous {{poussée}} à bout TEST: elle est en train de {{mangée}} +TEST: elle n’avait de cesse de la {{poussée}} dans ses derniers retranchements TEST: je déteste sa manière de la {{rabaissée}} en permanence. TEST: Elle avait hâte de {{dévouée}} sa vie à sa passion TEST: il est hors de question de {{menée}} cette attaque ainsi TEST: il serait temps de {{poussée}} la logique jusqu’au bout TEST: impossible d’{{échappée}} à cette horreur. TEST: Force est d’{{pensée}} que nous allons y arriver avec seulement nos bonnes intentions. TEST: sous peine de nous {{pesée}} lourd sun l’estomac TEST: Sont-ils en mesure de nous {{fabriqué}} ces armes ? TEST: Ne fais pas semblant de l’{{oubliée}}. +TEST: non content de {{damnés}} pour l’éternité +TEST: non contente de l’{{ignorée}}, elle en était fière. __infi_de_verbe__ [de|d’] [le|l’|leur|les] @:V¬:[YNAM]|>(?:lui|plus)/ [|,|(] [de|d’] [nous|vous|lui] @:V¬:[YE]|>(?:lui|plus)/ @@ -19766,11 +20068,11 @@ <<- /infi/ --1>> =suggVerbInfi(\-1) # Après “de”, le verbe devrait être à l’infinitif. [de|d’] @:V1.*:Q¬:N <<- /infi/ not \2[0:1].isupper() and not morph(<1, ">(?:en|passer|qualifier)/") and not before("(?i)(?:quelqu(?:e chose|’une?)|qu’y a-t-il |\\b(?:l(?:es?|a)|nous|vous|me|te|se) trait|personne|points? +$|autant +$|ça +|rien d(?:e |’)|rien(?: +[a-zéèêâîûù]+|) +$)") - and not tag_before(\1, "ce_que") + and not tag_before(\1, "_ceque_") -2>> =suggVerbInfi(\2) # Le verbe devrait être à l’infinitif. TEST: d’en {{parlé}} sans cesse TEST: cela suffit de les {{aimait}} TEST: de ne leur en {{avancé}} que le nécessaire. @@ -19907,21 +20209,21 @@ TEST: Ils ont beau {{consacré}} le plus clair de leur temps à ce projet, ça n’avance guère. __infi_avoir_de_quoi__ - >avoir de quoi ?[ne|n’|le|la|l’|les|en|me|m’|te|t’|se|s’|nous|vous|lui|leur|y]¿ ~..(?:ée?s?|ez|ai[ts]?)$ - >avoir de quoi ?[ne|n’]¿ [le|la|l’|les|en|me|m’|te|t’|se|s’|nous|vous|lui|leur|y] ~..(?:ée?s?|ez|ai[ts]?)$ - >avoir de quoi ?[ne|n’]¿ [me|m’|te|t’|se|s’|nous|vous] [le|la|l’|les|en|y] ~..(?:ée?s?|ez|ai[ts]?)$ - >avoir de quoi ?[ne|n’]¿ [le|la|l’|les] [lui|leur|en|y] ~..(?:ée?s?|ez|ai[ts]?)$ - >avoir de quoi ?[ne|n’]¿ [lui|leur|y] en ~..(?:ée?s?|ez|ai[ts]?)$ - <<- /infi/ morph(\-1, ":V1") --1>> =suggVerbInfi(\-1) # Après “avoir beau”, le verbe devrait être à l’infinitif.|http://fr.wiktionary.org/wiki/avoir_beau + >avoir [de|d’] quoi ?[ne|n’|le|la|l’|les|en|me|m’|te|t’|se|s’|nous|vous|lui|leur|y]¿ ~..(?:ée?s?|ez|ai[ts]?)$ + >avoir [de|d’] quoi ?[ne|n’]¿ [le|la|l’|les|en|me|m’|te|t’|se|s’|nous|vous|lui|leur|y] ~..(?:ée?s?|ez|ai[ts]?)$ + >avoir [de|d’] quoi ?[ne|n’]¿ [me|m’|te|t’|se|s’|nous|vous] [le|la|l’|les|en|y] ~..(?:ée?s?|ez|ai[ts]?)$ + >avoir [de|d’] quoi ?[ne|n’]¿ [le|la|l’|les] [lui|leur|en|y] ~..(?:ée?s?|ez|ai[ts]?)$ + >avoir [de|d’] quoi ?[ne|n’]¿ [lui|leur|y] en ~..(?:ée?s?|ez|ai[ts]?)$ + <<- /infi/ morph(\-1, ":V1") --1>> =suggVerbInfi(\-1) # Après “avoir de quoi”, le verbe devrait être à l’infinitif.|http://fr.wiktionary.org/wiki/avoir_de_quoi TEST: ils n’ont pas de quoi {{pavoisé}} -__infi_est_ce_que__ +__infi_est_ceque__ est-ce [que|qu’] @:(?:V1.*:Q|[13]s|2[sp])¬:[GYWMN] <<- /infi/ not value(<1, "|que|qu’|") -3>> =suggVerbInfi(\3) # Après “est-ce que”, le verbe devrait être à l’infinitif. TEST: est-ce que {{rapporté}} ces données nous aidera ? TEST: est-ce que {{priait}} est la solution ? @@ -19932,11 +20234,11 @@ __infi_falloir__ [faut|fallait|fallut|faudra|faudrait] @:V¬:[YMWG] il faille @:V¬:[YMWG] >avoir fallu @:V¬:[YMWG] [faut-il|fallait-il|fallut-il|faudra-t-il|faudrait-il] @:V¬:[YMWG] - <<- /infi/ not (tag_before(\1, "que") and morph(\-1, ":3[sp]")) + <<- /infi/ not (tag_before(\1, "_que_") and morph(\-1, ":3[sp]")) --1>> =suggVerbInfi(\-1) # Après le verbe “falloir”, le verbe devrait être à l’infinitif. [faut|fallait|fallut|faudra|faudrait] [le|la|leur|les|l’] @:V¬:[YMWGN] il faille [le|la|leur|les|l’] @:V¬:[YMWGN] >avoir fallu [le|la|leur|les|l’] @:V¬:[YMWGN] @@ -20011,11 +20313,11 @@ TEST: sa simple présence les a fait reculer __infi_laisser__ [me|m’|te|t’|lui|nous|vous|se|s’] >laisser *WORD [le|la|l’|les|un|une|ce|cet|cette|ces|mon|ton|son|ma|ta|sa|mes|tes|ses|notre|votre|nos|vos|leur|leurs|quelques|chaque] - [me|m’|te|t’|lui|nous|vous|se|s’] >laisser *WORD [|,] + [me|m’|te|t’|lui|nous|vous|se|s’] >laisser *WORD [|,|)] [me|m’|te|t’|lui|nous|vous|se|s’] >laisser *WORD [dans|avec] [me|m’|te|t’|lui|nous|vous|se|s’] >laisser *WORD [autant|que|qu’|lorsque|quand|combien|comment|car|quoi|quoique|quoiqu’|puisque|puisqu’] <<- /infi/ morph(\3, ":V1.*:(?:Q|Ip.*:2p|Iq.*:[123]s)", ">désemparer/.*:Q") -3>> =suggVerbInfi(\3) # Après “laisser”, le verbe doit être à l’infinitif. Exemples : Laisser faire, laisser aller, laisser venir, etc. @@ -20029,11 +20331,11 @@ [me|m’|te|t’|lui|nous|vous|se|s’] >laisser [lui|leur|y] en *WORD <<- /infi/ morph(\-1, ":V1.*:(?:Q|Ip.*:2p|Iq.*:[123]s)", ">désemparer/.*:Q") --1>> =suggVerbInfi(\-1) # Après “laisser”, le verbe doit être à l’infinitif. Exemples : Laisser faire, laisser aller, laisser venir, etc. [le|la|l’|les|leur] >laisser *WORD [le|la|l’|les|un|une|ce|cet|cette|ces|mon|ton|son|ma|ta|sa|mes|tes|ses|notre|votre|nos|vos|leur|leurs|quelques|chaque] - [le|la|l’|les|leur] >laisser *WORD [|,] + [le|la|l’|les|leur] >laisser *WORD [|,|)] [le|la|l’|les|leur] >laisser *WORD [dans|avec] [le|la|l’|les|leur] >laisser *WORD [autant|que|qu’|lorsque|quand|combien|comment|car|quoi|quoique|quoiqu’|puisque|puisqu’] <<- /infi/ not morph(\2, ":N") and morph(\3, ":V1.*:(?:Q|Ip.*:2p)", ">désemparer/.*:Q") -3>> =suggVerbInfi(\3) # Après “laisser”, le verbe doit être à l’infinitif. Exemples : Laisser faire, laisser aller, laisser venir, etc. @@ -20047,11 +20349,11 @@ [le|la|l’|les|leur] >laisser [lui|leur|y] en *WORD <<- /infi/ not morph(\2, ":N") and morph(\-1, ":V1.*:(?:Q|Ip.*:2p|Iq.*:[123]s)", ">désemparer/.*:Q") --1>> =suggVerbInfi(\-1) # Après “laisser”, le verbe doit être à l’infinitif. Exemples : Laisser faire, laisser aller, laisser venir, etc. [/-le|/-la|/-les|/-moi|/-toi|/-lui|/-nous|/-vous|/-leur] *WORD [le|la|l’|les|un|une|ce|cet|cette|ces|mon|ton|son|ma|ta|sa|mes|tes|ses|notre|votre|nos|vos|leur|leurs|quelques|chaque] - [/-le|/-la|/-les|/-moi|/-toi|/-lui|/-nous|/-vous|/-leur] *WORD [|,] + [/-le|/-la|/-les|/-moi|/-toi|/-lui|/-nous|/-vous|/-leur] *WORD [|,|)] [/-le|/-la|/-les|/-moi|/-toi|/-lui|/-nous|/-vous|/-leur] *WORD [dans|avec] [/-le|/-la|/-les|/-moi|/-toi|/-lui|/-nous|/-vous|/-leur] *WORD [autant|que|qu’|lorsque|quand|combien|comment|car|quoi|quoique|quoiqu’|puisque|puisqu’] <<- /infi/ morphVC(\1, ">laisser") and (morph(\2, ":V1.*:(?:Q|Ip.*:2[sp])", ">désemparer/.*:Q") or (not morph(<1, ":D") and morph(\-1, ":V1.*:Iq.*:[123]s", ">désemparer/.*:Q"))) -2>> =suggVerbInfi(\2) # Après “laisser”, le verbe doit être à l’infinitif. Exemples : Laisser faire, laisser aller, laisser venir, etc. @@ -20174,10 +20476,16 @@ pour ~..(?:ée?s?|ez|ai[st]?)$ <<- /infi/ not morph(<1, ">(?:passer|tenir)/") and morph(\-1, ":V1.*:(?:Q|[123][sp])", ":[NM]") --1>> =suggVerbInfi(\-1) # Après la préposition “\1”, le verbe devrait être à l’infinitif. + sans pour autant ?[le|la|l’|les|en|me|m’|te|t’|se|s’|nous|vous|lui|leur|y]¿ ~..(?:ée?s?|ez|ai[st]?)$ + sans pour autant [me|m’|te|t’|se|s’|nous|vous] [le|la|l’|les|en|y] ~..(?:ée?s?|ez|ai[st]?)$ + sans pour autant [le|la|l’|les] [lui|leur|en|y] ~..(?:ée?s?|ez|ai[st]?)$ + sans pour autant [lui|leur|y] en ~..(?:ée?s?|ez|ai[st]?)$ + <<- /infi/ morph(\-1, ":V1.*:(?:Q|[123][sp])") --1>> =suggVerbInfi(\-1) # Après la préposition “\1”, le verbe devrait être à l’infinitif.|https://fr.wiktionary.org/wiki/sans_pour_autant + TEST: finira sans se {{doutait}} du problème généré TEST: par nous en {{douté}} TEST: commence par {{commencé}} ton boulot, ça ira peut-être mieux TEST: il y va pour s’en {{donnait}} à cœur joie. TEST: elle s’en va sans {{donné}} de motif @@ -20187,12 +20495,16 @@ TEST: pour nous {{chassez}} de chez lui TEST: sans {{mangé}} à sa faim, il faudra chasser. TEST: C’est sans {{attaqué}} la journée. TEST: sans nous {{chassez}} de chez lui TEST: sans {{dérogez}} aux règles en vigueur dans cet établissement +TEST: sans pour autant la {{vouée}} aux gémonies. TEST: Il faut être sans préjugés. TEST: je craignais d’être pour toujours abandonnée + +__sans_pour_autant__ + __infi_locutions__ >sentir le vent tourné <<- /infi/ --1>> tourner # Locution “sentir le vent tourner ”. Utilisez l’infinitif. @@ -20232,10 +20544,17 @@ TEST: censés être {{instruites}} ->> instruits TEST: censées être {{instruits}} ->> instruites TEST: il est censé être habile TEST: censée être la meilleure de son groupe + +__conf_adj_de_voir_que__ + [|,|(] *WORD de [voir|constater] [que|qu’] + <<- /conf/ morph(\2, ":V1.*:Y") -2>> =suggVerbPpas(\2) # Confusion probable. Si vous décrivez un état de fait (et non une action), il faut un participe passés. + +TEST: {{tétaniser}} de voir que leurs théories grandioses ne valent rien + !!! !!! !!! Processeur: simplification des substantifs !! @@ -20466,14 +20785,14 @@ <<- not value(<1, "|j’|n’|tu|il|on|") ~>> * __énumérations_noms_propres__ *WORD , *WORD , *WORD - <<- morph(\1, ":M") and morph(\3, ":M") and morph(\3, ":M") />> enum + <<- morph(\1, ":M") and morph(\3, ":M") and morph(\3, ":M") />> _enum_ *WORD , *WORD - <<- morph(\2, ":M") and morph(\4, ":M") />> enum + <<- morph(\2, ":M") and morph(\4, ":M") />> _enum_ @@@@ @@@@ @@ -20611,11 +20930,11 @@ ## Accord et incohérences __ppas_sont_adj__ sont *WORD - <<- /ppas/ morph(\2, ":V", ":(?:N|A|Q|W|G|3p)") and not tag_before(\1, "ce_que") + <<- /ppas/ morph(\2, ":V", ":(?:N|A|Q|W|G|3p)") and not tag_before(\1, "_ceque_") -2>> =suggVerbPpas(\2, ":m:p") # Incohérence : “\2” n’est pas un participe passé. TEST: après avoir mis à jour sont {{profile}}. @@ -20628,11 +20947,11 @@ ## 1pl __conj_nous2__ nous ~.ont$ <<- /conj/ morph(\3, ":V.*:3p", ":[GPY]") and not value(>1, "|ils|elles|iel|iels|") - and ( (morph(\3, ":V...t_") and value(>1, "le|la|l’|un|une|ce|cet|cette|mon|ton|son|ma|ta|sa|leur") and not tag(>1, "enum")) or morph(\3, ":V..i__") ) + and ( (morph(\3, ":V...t_") and value(>1, "le|la|l’|un|une|ce|cet|cette|mon|ton|son|ma|ta|sa|leur") and not tag(>1, "_enum_")) or morph(\3, ":V..i__") ) -3>> =suggVerb(\3, ":1p") # Conjugaison problement erronée si “\2” est bien le sujet de “\3” et non un pronom objet. [|,|(] nous qui @:V¬:(?:1p|G) <<- /conj/ -4>> =suggVerb(\4, ":1p") # Conjugaison erronée. Accord avec “nous”. Le verbe devrait être à la 1ʳᵉ personne du pluriel. @@ -20768,11 +21087,11 @@ __ppas_se_être__ [me|m’|te|se|s’] ?[y|en]¿ >être *WORD <<- /ppas/ morph(\-1, ":(?:Y|[123][sp])", ":[QAG]") --1>> =suggVerbPpas(\-1) # Incohérence. Après « s’être », le verbe doit être un participe passé. - <<- /ppas/ __else__ and morph(\-2, ":[123]s") and morph(\-1, ":Q.*:p") and not tag_before(\1, "que") and not before("(?i)\\bon (?:ne |)$") + <<- /ppas/ __else__ and morph(\-2, ":[123]s") and morph(\-1, ":Q.*:p") and not tag_before(\1, "_que_") and not before("(?i)\\bon (?:ne |)$") --1>> =suggSing(\-1) # Le participe passé devrait être au singulier. tu t’ ?[y|en]¿ [es|étais|seras|serais|fus|fusses] *WORD <<- /ppas/ morph(\-1, ":(?:Y|[123][sp])", ":[QAG]") --1>> =suggVerbPpas(\-1) # Incohérence. Après « s’être », le verbe doit être un participe passé. @@ -20794,13 +21113,13 @@ TEST: Cela fait un petit temps qu’on ne s’est plus vus. TEST: Cela s’est entre autres traduit par l’absence de grandes controverses sur la sécurité des vaccins __ppas_pron_pluriel_se_être_ppas__ - nous ?[ne|n’]¿ nous >être @q.*:Q.*:p @:[DB] @:[NA] [|,] - vous ?[ne|n’]¿ vous >être @q.*:Q.*:p @:[DB] @:[NA] [|,] - [on|ils|elles] ?[ne|n’]¿ [se|s’] >être @q.*:Q.*:p @:[DB] @:[NA] [|,] + nous ?[ne|n’]¿ nous >être @q.*:Q.*:p @:[DB] @:[NA] [|,|)] + vous ?[ne|n’]¿ vous >être @q.*:Q.*:p @:[DB] @:[NA] [|,|)] + [on|ils|elles] ?[ne|n’]¿ [se|s’] >être @q.*:Q.*:p @:[DB] @:[NA] [|,|)] <<- /ppas/ not morph(\-2, ">(?:matin|soir|soirée|nuit|après-midi|jour|année|semaine|mois|seconde|minute|heure|siècle|millénaire|fois)/") --4>> =suggVerbPpas(\-4, ":m:s") # Usage pronominal. Si “\-3 \-2” est le COD de “\-4”, alors ce participe passé devrait être au masculin singulier. (Il ne s’accorde avec le sujet “\2” que si l’action agit sur “\2”.) TEST: Ils se sont {{échangés}} leurs vœux. ->> échangé TEST: elles s’étaient {{données}} le mot ->> donné @@ -20812,11 +21131,11 @@ TEST: elles se sont prises en main. TEST: elles s’étaient aimées ce matin. __ppas_désoler__ - [|,|(] désoler [|,] + [|,|(] désoler [|,|)] [|,|(] désoler pour $:D <<- /ppas/ -2>> désolé|désolée # Confusion. Pour indiquer qu’on est désolé, il faut un participe passé. TEST: {{Désoler}} pour la soupe froide. @@ -20895,11 +21214,11 @@ || [>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir] || être [devenu+e|redevenu+e|resté+e|demeuré+e] @:[NA].*:p¬:[GWYsi] [je|j’|tu] ?[ne|n’]¿ ?[en|y]¿ || [>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir] || avoir [été|semblé|paru] @:[NA].*:p¬:[GWYsi] - <<- /ppas/ not (tag(<1, "ce_que") and morph(\-1, ":3s")) --1>> =suggSing(\-1) # Accord avec le sujet “\1” : “\-1” devrait être au singulier. + <<- /ppas/ not (tag(<1, "_ceque_") and morph(\-1, ":3s")) --1>> =suggSing(\-1) # Accord avec le sujet “\1” : “\-1” devrait être au singulier. TEST: j’étais {{perdus}} ->> perdu TEST: j’aurais été {{perdus}} sans toi ->> perdu TEST: je n’étais pas {{perdus}} ->> perdu TEST: Je suis {{contents}}. ->> content @@ -20950,11 +21269,11 @@ || ([>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir]) || être [devenu|redevenu|resté|demeuré] [@:[NA].*:p¬:[GWYsi]|@:[AQ].*:f¬:[GWYme]] ([il|ce|c’|ç’|quiconque]) ?[ne|n’]¿ ?[en|y]¿ || ([>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir]) || avoir [été|semblé|paru] [@:[NA].*:p¬:[GWYsi]|@:[AQ].*:f¬:[GWYme]] - <<- /ppas/ morph(\2, ":(?:[123]s|P)") and not (tag(<1, "ce_que") and morph(\-1, ":3s")) --1>> =suggMasSing(\-1) # Accord avec le sujet “\1” : “\-1” devrait être au masculin singulier. + <<- /ppas/ morph(\2, ":(?:[123]s|P)") and not (tag(<1, "_ceque_") and morph(\-1, ":3s")) --1>> =suggMasSing(\-1) # Accord avec le sujet “\1” : “\-1” devrait être au masculin singulier. ([ça|ceci|cela|celui-ci|celui-là]) ?[ne|n’]¿ ?[en|y]¿ ([>être|>sembler|>devenir|>rester|>demeurer|>redevenir|>paraître|>paraitre]) [@:[NA].*:p¬:[GWYsi]|@:[AQ].*:f¬:[GWYme]] ([ça|ceci|cela|celui-ci|celui-là]) ?[ne|n’]¿ ?[en|y]¿ (>avoir) [été|semblé|paru] [@:[NA].*:p¬:[GWYsi]|@:[AQ].*:f¬:[GWYme]] ([ça|ceci|cela|celui-ci|celui-là]) ?[ne|n’]¿ ?[en|y]¿ ([>être|>sembler]) [devenu|redevenu|resté|demeuré] [@:[NA].*:p¬:[GWYsi]|@:[AQ].*:f¬:[GWYme]] ([ça|ceci|cela|celui-ci|celui-là]) ?[ne|n’]¿ ?[en|y]¿ @@ -20964,11 +21283,11 @@ || ([>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir]) || être [devenu|redevenu|resté|demeuré] [@:[NA].*:p¬:[GWYsi]|@:[AQ].*:f¬:[GWYme]] ([ça|ceci|cela|celui-ci|celui-là]) ?[ne|n’]¿ ?[en|y]¿ || ([>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir]) || avoir [été|semblé|paru] [@:[NA].*:p¬:[GWYsi]|@:[AQ].*:f¬:[GWYme]] - <<- /ppas/ not tag(\1, "enum") and morph(\2, ":3s") and not morph(<1, ":[RV]|>(?:et|ou)/") and not (tag(<1, "ce_que") and morph(\-1, ":3s")) + <<- /ppas/ not tag(\1, "_enum_") and morph(\2, ":3s") and not morph(<1, ":[RV]|>(?:et|ou)/") and not (tag(<1, "_ceque_") and morph(\-1, ":3s")) --1>> =suggMasSing(\-1) # Accord avec le sujet “\1” : “\-1” devrait être au masculin singulier. [|,|(] tout ?[ne|n’]¿ ?[en|y]¿ [>être|>sembler|>devenir|>rester|>demeurer|>redevenir|>paraître|>paraitre] [@:A.*:p¬:[GWYNsi]|@:[AQ].*:f¬:[GWYNme]] [|,|(] tout ?[ne|n’]¿ ?[en|y]¿ >avoir [été|semblé|paru] [@:A.*:p¬:[GWYNsi]|@:[AQ].*:f¬:[GWYNme]] [|,|(] tout ?[ne|n’]¿ ?[en|y]¿ [>être|>sembler] [devenu|redevenu|resté|demeuré] [@:A.*:p¬:[GWYNsi]|@:[AQ].*:f¬:[GWYNme]] @@ -20979,11 +21298,11 @@ || [>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir] || être [devenu|redevenu|resté|demeuré] [@:A.*:p¬:[GWYNsi]|@:[AQ].*:f¬:[GWYNme]] [|,|(] tout ?[ne|n’]¿ ?[en|y]¿ || [>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir] || avoir [été|semblé|paru] [@:A.*:p¬:[GWYNsi]|@:[AQ].*:f¬:[GWYNme]] - <<- /ppas/ not tag(\2, "enum") --1>> =suggMasSing(\-1) # Accord avec le sujet “\2” : “\-1” devrait être au masculin singulier. + <<- /ppas/ not tag(\2, "_enum_") --1>> =suggMasSing(\-1) # Accord avec le sujet “\2” : “\-1” devrait être au masculin singulier. lui [ne|n’|y] [>être|>sembler|>devenir|>rester|>demeurer|>redevenir|>paraître|>paraitre] [@:[NA].*:p¬:[GWYsi]|@:[AQ].*:f¬:[GWYme]] lui [ne|n’|y] >avoir [été|semblé|paru] [@:[NA].*:p¬:[GWYsi]|@:[AQ].*:f¬:[GWYme]] lui [ne|n’|y] [>être|>sembler] [devenu|redevenu|resté|demeuré] [@:[NA].*:p¬:[GWYsi]|@:[AQ].*:f¬:[GWYme]] lui [ne|n’|y] @@ -20993,11 +21312,11 @@ || [>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir] || être [devenu|redevenu|resté|demeuré] [@:[NA].*:p¬:[GWYsi]|@:[AQ].*:f¬:[GWYme]] lui [ne|n’|y] || [>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir] || avoir [été|semblé|paru] [@:[NA].*:p¬:[GWYsi]|@:[AQ].*:f¬:[GWYme]] - <<- /ppas/ not morph(<1, ":[RV]") and not (tag(<1, "ce_que") and morph(\-1, ":3s")) --1>> =suggMasSing(\-1) # Accord avec le sujet “\1” : “\-1” devrait être au masculin singulier. + <<- /ppas/ not morph(<1, ":[RV]") and not (tag(<1, "_ceque_") and morph(\-1, ":3s")) --1>> =suggMasSing(\-1) # Accord avec le sujet “\1” : “\-1” devrait être au masculin singulier. lui n’ [en|y] [>être|>sembler|>devenir|>rester|>demeurer|>redevenir|>paraître|>paraitre] [@:[NA].*:p¬:[GWYsi]|@:[AQ].*:f¬:[GWYme]] lui n’ [en|y] >avoir [été|semblé|paru] [@:[NA].*:p¬:[GWYsi]|@:[AQ].*:f¬:[GWYme]] lui n’ [en|y] [>être|>sembler] [devenu|redevenu|resté|demeuré] [@:[NA].*:p¬:[GWYsi]|@:[AQ].*:f¬:[GWYme]] lui n’ [en|y] @@ -21007,11 +21326,11 @@ || [>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir] || être [devenu|redevenu|resté|demeuré] [@:[NA].*:p¬:[GWYsi]|@:[AQ].*:f¬:[GWYme]] lui n’ [en|y] || [>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir] || avoir [été|semblé|paru] [@:[NA].*:p¬:[GWYsi]|@:[AQ].*:f¬:[GWYme]] - <<- /ppas/ not morph(<1, ":[RV]") and not (tag(<1, "ce_que") and morph(\-1, ":3s")) --1>> =suggMasSing(\-1) # Accord avec le sujet “\1” : “\-1” devrait être au masculin singulier. + <<- /ppas/ not morph(<1, ":[RV]") and not (tag(<1, "_ceque_") and morph(\-1, ":3s")) --1>> =suggMasSing(\-1) # Accord avec le sujet “\1” : “\-1” devrait être au masculin singulier. ([lui|ça|ceci|cela|ce|c’|ç’|celui|celui-ci|celui-là]) qui ?[ne|n’]¿ ?[en|y]¿ ([>être|>sembler|>devenir|>rester|>demeurer|>redevenir|>paraître|>paraitre]) [@:[NA].*:p¬:[GWYsi]|@:[AQ].*:f¬:[GWYme]] ([lui|ça|ceci|cela|ce|c’|ç’|celui|celui-ci|celui-là]) qui ?[ne|n’]¿ ?[en|y]¿ (>avoir) [été|semblé|paru] [@:[NA].*:p¬:[GWYsi]|@:[AQ].*:f¬:[GWYme]] ([lui|ça|ceci|cela|ce|c’|ç’|celui|celui-ci|celui-là]) qui ?[ne|n’]¿ ?[en|y]¿ ([>être|>sembler]) [devenu|redevenu|resté|demeuré] [@:[NA].*:p¬:[GWYsi]|@:[AQ].*:f¬:[GWYme]] ([lui|ça|ceci|cela|ce|c’|ç’|celui|celui-ci|celui-là]) qui ?[ne|n’]¿ ?[en|y]¿ @@ -21021,11 +21340,11 @@ || ([>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir]) || être [devenu|redevenu|resté|demeuré] [@:[NA].*:p¬:[GWYsi]|@:[AQ].*:f¬:[GWYme]] ([lui|ça|ceci|cela|ce|c’|ç’|celui|celui-ci|celui-là]) qui ?[ne|n’]¿ ?[en|y]¿ || ([>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir]) || avoir [été|semblé|paru] [@:[NA].*:p¬:[GWYsi]|@:[AQ].*:f¬:[GWYme]] - <<- /ppas/ morph(\2, ":(?:[123]s|P)") and not (tag(<1, "ce_que") and morph(\-1, ":3s")) --1>> =suggMasSing(\-1) # Accord avec le sujet “\1 qui” : “\-1” devrait être au masculin singulier. + <<- /ppas/ morph(\2, ":(?:[123]s|P)") and not (tag(<1, "_ceque_") and morph(\-1, ":3s")) --1>> =suggMasSing(\-1) # Accord avec le sujet “\1 qui” : “\-1” devrait être au masculin singulier. lequel ?[ne|n’]¿ ?[en|y]¿ [>être|>sembler|>devenir|>rester|>demeurer|>redevenir|>paraître|>paraitre] [@:[NA].*:p¬:[GWYsi]|@:[AQ].*:f¬:[GWYme]] lequel ?[ne|n’]¿ ?[en|y]¿ >avoir [été|semblé|paru] [@:[NA].*:p¬:[GWYsi]|@:[AQ].*:f¬:[GWYme]] lequel ?[ne|n’]¿ ?[en|y]¿ [>être|>sembler] [devenu|redevenu|resté|demeuré] [@:[NA].*:p¬:[GWYsi]|@:[AQ].*:f¬:[GWYme]] lequel ?[ne|n’]¿ ?[en|y]¿ @@ -21097,11 +21416,11 @@ || ([>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir]) || être [devenue|redevenue|restée|demeurée] [@:[NA].*:p¬:[GWYsi]|@:[AQ].*:m¬:[GWYfe]] ([elle|celle-ci|celle-là]) ?[ne|n’]¿ ?[en|y]¿ || ([>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir]) || avoir [été|semblé|paru] [@:[NA].*:p¬:[GWYsi]|@:[AQ].*:m¬:[GWYfe]] - <<- /ppas/ not tag(\1, "enum") and not morph(<1, ":[RV]|>(?:et|ou)/") and morph(\2, ":(?:[123]s|P)") and not (tag(<1, "ce_que") and morph(\-1, ":3s")) + <<- /ppas/ not tag(\1, "_enum_") and not morph(<1, ":[RV]|>(?:et|ou)/") and morph(\2, ":(?:[123]s|P)") and not (tag(<1, "_ceque_") and morph(\-1, ":3s")) --1>> =suggFemSing(\-1) # Accord avec le sujet “\1” : “\-1” devrait être au féminin singulier. ([elle|celle|celle-ci|celle-là]) qui ?[ne|n’]¿ ?[en|y]¿ ([>être|>sembler|>devenir|>rester|>demeurer|>redevenir|>paraître|>paraitre]) [@:[NA].*:p¬:[GWYsi]|@:[AQ].*:m¬:[GWYfe]] ([elle|celle|celle-ci|celle-là]) qui ?[ne|n’]¿ ?[en|y]¿ (>avoir) [été|semblé|paru] [@:[NA].*:p¬:[GWYsi]|@:[AQ].*:m¬:[GWYfe]] ([elle|celle|celle-ci|celle-là]) qui ?[ne|n’]¿ ?[en|y]¿ ([>être|>sembler]) [devenue|redevenue|restée|demeurée] [@:[NA].*:p¬:[GWYsi]|@:[AQ].*:m¬:[GWYfe]] @@ -21112,11 +21431,11 @@ || ([>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir]) || être [devenue|redevenue|restée|demeurée] [@:[NA].*:p¬:[GWYsi]|@:[AQ].*:m¬:[GWYfe]] ([elle|celle|celle-ci|celle-là]) qui ?[ne|n’]¿ ?[en|y]¿ || ([>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir]) || avoir [été|semblé|paru] [@:[NA].*:p¬:[GWYsi]|@:[AQ].*:m¬:[GWYfe]] - <<- /ppas/ morph(\2, ":(?:[123]s|P)") and not (tag(<1, "ce_que") and morph(\-1, ":3s")) --1>> =suggFemSing(\-1) # Accord avec le sujet “\1 qui” : “\-1” devrait être au féminin singulier. + <<- /ppas/ morph(\2, ":(?:[123]s|P)") and not (tag(<1, "_ceque_") and morph(\-1, ":3s")) --1>> =suggFemSing(\-1) # Accord avec le sujet “\1 qui” : “\-1” devrait être au féminin singulier. laquelle ?[ne|n’]¿ ?[en|y]¿ [>être|>sembler|>devenir|>rester|>demeurer|>redevenir|>paraître|>paraitre] [@:[NA].*:p¬:[GWYsi]|@:[AQ].*:m¬:[GWYfe]] laquelle ?[ne|n’]¿ ?[en|y]¿ >avoir [été|semblé|paru] [@:[NA].*:p¬:[GWYsi]|@:[AQ].*:m¬:[GWYfe]] laquelle ?[ne|n’]¿ ?[en|y]¿ [>être|>sembler] [devenue|redevenue|restée|demeurée] [@:[NA].*:p¬:[GWYsi]|@:[AQ].*:m¬:[GWYfe]] laquelle ?[ne|n’]¿ ?[en|y]¿ @@ -21145,23 +21464,23 @@ TEST: celle qui ne pense pas être {{découvert}} TEST: laquelle n’était pas {{contrarié}} __ppas_1pl_verbe_état__ - nous ?[ne|n’]¿ ?[en|y]¿ ([>être|>sembler|>devenir|>rester|>demeurer|>redevenir|>paraître|>paraitre]) @:[NA].*:s¬:[GWYpi]|>légion - nous ?[ne|n’]¿ ?[en|y]¿ (>avoir) [été|semblé|paru] @:[NA].*:s¬:[GWYpi]|>légion - nous ?[ne|n’]¿ ?[en|y]¿ ([>être|>sembler]) [devenus|devenues|redevenus|redevenues|restés|restées|demeurés|demeurées] @:[NA].*:s¬:[GWYpi]|>légion + nous ?[ne|n’]¿ ?[en|y]¿ ([>être|>sembler|>devenir|>rester|>demeurer|>redevenir|>paraître|>paraitre]) @:[NA].*:s¬:[GWYpi] + nous ?[ne|n’]¿ ?[en|y]¿ (>avoir) [été|semblé|paru] @:[NA].*:s¬:[GWYpi] + nous ?[ne|n’]¿ ?[en|y]¿ ([>être|>sembler]) [devenus|devenues|redevenus|redevenues|restés|restées|demeurés|demeurées] @:[NA].*:s¬:[GWYpi] + nous ?[ne|n’]¿ ?[en|y]¿ + || ([>aller|>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir]) + || [être|devenir|redevenir|rester|paraître|paraitre|sembler] @:[NA].*:s¬:[GWYpi] nous ?[ne|n’]¿ ?[en|y]¿ - || ([>aller|>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir]) - || [être|devenir|redevenir|rester|paraître|paraitre|sembler] @:[NA].*:s¬:[GWYpi]|>légion + || ([>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir]) + || être [devenus|devenues|redevenus|redevenues|restés|restées|demeurés|demeurées] @:[NA].*:s¬:[GWYpi] nous ?[ne|n’]¿ ?[en|y]¿ || ([>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir]) - || être [devenus|devenues|redevenus|redevenues|restés|restées|demeurés|demeurées] @:[NA].*:s¬:[GWYpi]|>légion - nous ?[ne|n’]¿ ?[en|y]¿ - || ([>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir]) - || avoir [été|semblé|paru] @:[NA].*:s¬:[GWYpi]|>légion - <<- /ppas/ not morph(<1, ":[RV]|>(?:ne|nous)/") and morph(\1, ":1p") and not (tag(<1, "ce_que") and morph(\-1, ":3s")) + || avoir [été|semblé|paru] @:[NA].*:s¬:[GWYpi] + <<- /ppas/ not value(\-1, "|légion|néant|réalité|") and not morph(<1, ":[RV]|>(?:ne|nous)/") and morph(\1, ":1p") and not (tag(<1, "_ceque_") and morph(\-1, ":3s")) --1>> =suggPlur(\-1) # Accord avec le sujet “nous” : “\-1” devrait être au pluriel. TEST: nous paraissons {{faible}} TEST: Nous paraissons avoir été complètement {{prise}} de panique. ->> prises TEST: Nous devons avoir été bien {{méchant}} pour être traité de la sorte. @@ -21168,10 +21487,11 @@ TEST: nous ne pouvons devenir aussi {{perspicace}} avec tout cet alcool ingurgité. TEST: nous pensons être {{désiré}} TEST: nous n’y devons pas être {{instruit}}, mais… TEST: nous sommes légion. TEST: nous ne paraissions pas avoir été légion, mais l’effet eut autant de force que si nous avions été des millions. +TEST: nous sommes devenus néant. __ppas_3pl_mas_verbe_état__ ils ?[ne|n’]¿ ?[en|y]¿ [>être|>sembler|>devenir|>rester|>demeurer|>redevenir|>paraître|>paraitre] [@:[NA].*:s¬:[GWYpi]|@:[AQ].*:f¬:[GWYme]] ils ?[ne|n’]¿ ?[en|y]¿ >avoir [été|semblé|paru] [@:[NA].*:s¬:[GWYpi]|@:[AQ].*:f¬:[GWYme]] @@ -21183,11 +21503,12 @@ || [>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir] || être [devenus|redevenus|restés|demeurés] [@:[NA].*:s¬:[GWYpi]|@:[AQ].*:f¬:[GWYme]] ils ?[ne|n’]¿ ?[en|y]¿ || [>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir] || avoir [été|semblé|paru] [@:[NA].*:s¬:[GWYpi]|@:[AQ].*:f¬:[GWYme]] - <<- /ppas/ not value(\-1, "|légion|") and not (tag(<1, "ce_que") and morph(\-1, ":3s")) --1>> =suggMasPlur(\-1) # Accord avec le sujet “\1” : “\-1” devrait être au masculin singulier. + <<- /ppas/ not value(\-1, "|légion|néant|réalité|") and not (tag(<1, "_ceque_") and morph(\-1, ":3s")) + --1>> =suggMasPlur(\-1) # Accord avec le sujet “\1” : “\-1” devrait être au masculin singulier. ([eux|ceux-ci|ceux-là]) ?[ne|n’]¿ ?[en|y]¿ ([>être|>sembler|>devenir|>rester|>demeurer|>redevenir|>paraître|>paraitre]) [@:[NA].*:s¬:[GWYpi]|@:[AQ].*:f¬:[GWYme]] ([eux|ceux-ci|ceux-là]) ?[ne|n’]¿ ?[en|y]¿ (>avoir) [été|semblé|paru] [@:[NA].*:s¬:[GWYpi]|@:[AQ].*:f¬:[GWYme]] ([eux|ceux-ci|ceux-là]) ?[ne|n’]¿ ?[en|y]¿ ([>être|>sembler]) [devenus|redevenus|restés|demeurés] [@:[NA].*:s¬:[GWYpi]|@:[AQ].*:f¬:[GWYme]] ([eux|ceux-ci|ceux-là]) ?[ne|n’]¿ ?[en|y]¿ @@ -21197,11 +21518,11 @@ || ([>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir]) || être [devenus|redevenus|restés|demeurés] [@:[NA].*:s¬:[GWYpi]|@:[AQ].*:f¬:[GWYme]] ([eux|ceux-ci|ceux-là]) ?[ne|n’]¿ ?[en|y]¿ || ([>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir]) || avoir [été|semblé|paru] [@:[NA].*:s¬:[GWYpi]|@:[AQ].*:f¬:[GWYme]] - <<- /ppas/ not morph(<1, ":[RV]") and morph(\2, ":(?:3p|P)") and not value(\-1, "|légion|") and not (tag(<1, "ce_que") and morph(\-1, ":3s")) + <<- /ppas/ not morph(<1, ":[RV]") and morph(\2, ":(?:3p|P)") and not value(\-1, "|légion|néant|réalité|") and not (tag(<1, "_ceque_") and morph(\-1, ":3s")) --1>> =suggMasPlur(\-1) # Accord avec le sujet “\1” : “\-1” devrait être au masculin singulier. ([eux|ceux|ceux-ci|ceux-là]) qui ?[ne|n’]¿ ?[en|y]¿ ([>être|>sembler|>devenir|>rester|>demeurer|>redevenir|>paraître|>paraitre]) [@:[NA].*:s¬:[GWYpi]|@:[AQ].*:f¬:[GWYme]] ([eux|ceux|ceux-ci|ceux-là]) qui ?[ne|n’]¿ ?[en|y]¿ (>avoir) [été|semblé|paru] [@:[NA].*:s¬:[GWYpi]|@:[AQ].*:f¬:[GWYme]] ([eux|ceux|ceux-ci|ceux-là]) qui ?[ne|n’]¿ ?[en|y]¿ ([>être|>sembler]) [devenus|redevenus|restés|demeurés] [@:[NA].*:s¬:[GWYpi]|@:[AQ].*:f¬:[GWYme]] @@ -21212,11 +21533,11 @@ || ([>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir]) || être [devenus|redevenus|restés|demeurés] [@:[NA].*:s¬:[GWYpi]|@:[AQ].*:f¬:[GWYme]] ([eux|ceux|ceux-ci|ceux-là]) qui ?[ne|n’]¿ ?[en|y]¿ || ([>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir]) || avoir [été|semblé|paru] [@:[NA].*:s¬:[GWYpi]|@:[AQ].*:f¬:[GWYme]] - <<- /ppas/ morph(\2, ":(?:3p|P)") and not value(\-1, "|légion|") and not (tag(<1, "ce_que") and morph(\-1, ":3s")) + <<- /ppas/ morph(\2, ":(?:3p|P)") and not value(\-1, "|légion|néant|réalité|") and not (tag(<1, "_ceque_") and morph(\-1, ":3s")) --1>> =suggMasPlur(\-1) # Accord avec le sujet “\1” : “\-1” devrait être au masculin singulier. lesquels ?[ne|n’]¿ ?[en|y]¿ [>être|>sembler|>devenir|>rester|>demeurer|>redevenir|>paraître|>paraitre] [@:[NA].*:s¬:[GWYpi]|@:[AQ].*:f¬:[GWYme]] lesquels ?[ne|n’]¿ ?[en|y]¿ >avoir [été|semblé|paru] [@:[NA].*:s¬:[GWYpi]|@:[AQ].*:f¬:[GWYme]] lesquels ?[ne|n’]¿ ?[en|y]¿ [>être|>sembler] [devenus|redevenus|restés|demeurés] [@:[NA].*:s¬:[GWYpi]|@:[AQ].*:f¬:[GWYme]] @@ -21227,11 +21548,11 @@ || [>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir] || être [devenus|redevenus|restés|demeurés] [@:[NA].*:s¬:[GWYpi]|@:[AQ].*:f¬:[GWYme]] lesquels ?[ne|n’]¿ ?[en|y]¿ || [>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir] || avoir [été|semblé|paru] [@:[NA].*:s¬:[GWYpi]|@:[AQ].*:f¬:[GWYme]] - <<- /ppas/ not morph(<1, ":R") and not value(\-1, "|légion|") --1>> =suggMasPlur(\-1) # Accord avec le sujet “\1” : “\-1” devrait être au masculin singulier. + <<- /ppas/ not morph(<1, ":R") and not value(\-1, "|légion|néant|réalité|") --1>> =suggMasPlur(\-1) # Accord avec le sujet “\1” : “\-1” devrait être au masculin singulier. TEST: ils sont {{parti}}. ->> partis TEST: ils sont {{parties}}. ->> partis TEST: ils restaient {{méfiantes}} ->> méfiants TEST: Ils semblent avoir été {{attaqué}} par des soldats. ->> attaqués @@ -21250,10 +21571,11 @@ TEST: ceux qui adorent paraître plus {{instruit}} qu’ils ne sont réellement TEST: avec ceux-là qui n’ont pas semblé trop {{con}} TEST: contre ceux-ci qui n’en semblent pas plus {{contrarié}} qui quiconque TEST: lesquels pensent avoir paru {{faible}} devant leurs pairs. TEST: ceux qui estimant être {{éduqué}} +TEST: ils étaient devenus réalité. __ppas_3pl_fem_verbe_état__ ([elles|celles-ci|celles-là]) ?[ne|n’]¿ ?[en|y]¿ ([>être|>sembler|>devenir|>rester|>demeurer|>redevenir|>paraître|>paraitre]) [@:[NA].*:s¬:[GWYpi]|@:[AQ].*:m¬:[GWYfe]] ([elles|celles-ci|celles-là]) ?[ne|n’]¿ ?[en|y]¿ (>avoir) [été|semblé|paru] [@:[NA].*:s¬:[GWYpi]|@:[AQ].*:m¬:[GWYfe]] @@ -21265,11 +21587,11 @@ || ([>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir]) || être [devenues|redevenues|restées|demeurées] [@:[NA].*:s¬:[GWYpi]|@:[AQ].*:m¬:[GWYfe]] ([elles|celles-ci|celles-là]) ?[ne|n’]¿ ?[en|y]¿ || ([>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir]) || avoir [été|semblé|paru] [@:[NA].*:s¬:[GWYpi]|@:[AQ].*:m¬:[GWYfe]] - <<- /ppas/ not morph(<1, ":[RV]") and morph(\2, ":(?:3p|P)") and not value(\-1, "|légion|") and not (tag(<1, "ce_que") and morph(\-1, ":3s")) + <<- /ppas/ not morph(<1, ":[RV]") and morph(\2, ":(?:3p|P)") and not value(\-1, "|légion|néant|réalité|") and not (tag(<1, "_ceque_") and morph(\-1, ":3s")) --1>> =suggFemPlur(\-1) # Accord avec le sujet “\1” : “\-1” devrait être au féminin pluriel. ([elles|celles|celles-ci|celles-là]) qui ?[ne|n’]¿ ?[en|y]¿ ([>être|>sembler|>devenir|>rester|>demeurer|>redevenir|>paraître|>paraitre]) [@:[NA].*:s¬:[GWYpi]|@:[AQ].*:m¬:[GWYfe]] ([elles|celles|celles-ci|celles-là]) qui ?[ne|n’]¿ ?[en|y]¿ (>avoir) [été|semblé|paru] [@:[NA].*:s¬:[GWYpi]|@:[AQ].*:m¬:[GWYfe]] ([elles|celles|celles-ci|celles-là]) qui ?[ne|n’]¿ ?[en|y]¿ ([>être|>sembler]) [devenues|redevenues|restées|demeurées] [@:[NA].*:s¬:[GWYpi]|@:[AQ].*:m¬:[GWYfe]] @@ -21280,11 +21602,11 @@ || ([>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir]) || être [devenues|redevenues|restées|demeurées] [@:[NA].*:s¬:[GWYpi]|@:[AQ].*:m¬:[GWYfe]] ([elles|celles|celles-ci|celles-là]) qui ?[ne|n’]¿ ?[en|y]¿ || ([>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir]) || avoir [été|semblé|paru] [@:[NA].*:s¬:[GWYpi]|@:[AQ].*:m¬:[GWYfe]] - <<- /ppas/ morph(\2, ":(?:3p|P)") and not value(\-1, "|légion|") and not (tag(<1, "ce_que") and morph(\-1, ":3s")) + <<- /ppas/ morph(\2, ":(?:3p|P)") and not value(\-1, "|légion|néant|réalité|") and not (tag(<1, "_ceque_") and morph(\-1, ":3s")) --1>> =suggFemPlur(\-1) # Accord avec le sujet “\1 qui” : “\-1” devrait être au féminin pluriel. lesquelles ?[ne|n’]¿ ?[en|y]¿ [>être|>sembler|>devenir|>rester|>demeurer|>redevenir|>paraître|>paraitre] [@:[NA].*:s¬:[GWYpi]|@:[AQ].*:m¬:[GWYfe]] lesquelles ?[ne|n’]¿ ?[en|y]¿ >avoir [été|semblé|paru] [@:[NA].*:s¬:[GWYpi]|@:[AQ].*:m¬:[GWYfe]] lesquelles ?[ne|n’]¿ ?[en|y]¿ [>être|>sembler] [devenues|redevenues|restées|demeurées] [@:[NA].*:s¬:[GWYpi]|@:[AQ].*:m¬:[GWYfe]] @@ -21295,11 +21617,11 @@ || [>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir] || être [devenues|redevenues|restées|demeurées] [@:[NA].*:s¬:[GWYpi]|@:[AQ].*:m¬:[GWYfe]] lesquelles ?[ne|n’]¿ ?[en|y]¿ || [>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir] || avoir [été|semblé|paru] [@:[NA].*:s¬:[GWYpi]|@:[AQ].*:m¬:[GWYfe]] - <<- /ppas/ not morph(<1, ":R") and not value(\-1, "|légion|") --1>> =suggFemPlur(\-1) # Accord avec le sujet “\1” : “\-1” devrait être au masculin pluriel. + <<- /ppas/ not morph(<1, ":R") and not value(\-1, "|légion|néant|réalité|") --1>> =suggFemPlur(\-1) # Accord avec le sujet “\1” : “\-1” devrait être au masculin pluriel. TEST: elles n’ont tout de même pas été {{attaqué}} ->> attaquées TEST: Elles sont {{affamé}}. ->> affamées TEST: Celles-là sont {{folle}}. TEST: elles veulent être {{différente}} @@ -21354,16 +21676,16 @@ || ([>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir]) || être [devenu+e|redevenu+e|resté+e|demeuré+e] @:[NA].*:p¬:[GMWYsi] (*WORD) ?qui¿ ?[ne|n’]¿ ?[en|y]¿ || ([>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir]) || avoir [été|semblé|paru] @:[NA].*:p¬:[GMWYsi] - <<- /ppas/ not tag_before(\1, "que") and not morph(\1, ":G") and morph(\2, ":[123]s", ":(?:C|N.*:p)") + <<- /ppas/ not tag_before(\1, "_que_") and not morph(\1, ":G") and morph(\2, ":[123]s", ":(?:C|N.*:p)") --1>> =suggSing(\-1) # Accord avec la forme verbale “\2” : “\-1” devrait être au singulier. - [|,|(] ?qui¿ ?[ne|n’]¿ ?[en|y]¿ ([>être|>sembler|>devenir|>rester|>demeurer|>redevenir|>paraître|>paraitre]) @:[NA].*:p¬:[GMWYsi] - [|,|(] ?qui¿ ?[ne|n’]¿ ?[en|y]¿ (>avoir) [été|semblé|paru] @:[NA].*:p¬:[GMWYsi] - [|,|(] ?qui¿ ?[ne|n’]¿ ?[en|y]¿ ([>être|>sembler]) [devenu+e|redevenu+e|resté+e|demeuré+e] @:[NA].*:p¬:[GMWYsi] + [|,|(] ?qui¿ ?[ne|n’]¿ ?[en|y]¿ ([>être|>sembler|>devenir|>rester|>demeurer|>redevenir|>paraître|>paraitre]) @:[NA].*:p¬:[GMWYsi] + [|,|(] ?qui¿ ?[ne|n’]¿ ?[en|y]¿ (>avoir) [été|semblé|paru] @:[NA].*:p¬:[GMWYsi] + [|,|(] ?qui¿ ?[ne|n’]¿ ?[en|y]¿ ([>être|>sembler]) [devenu+e|redevenu+e|resté+e|demeuré+e] @:[NA].*:p¬:[GMWYsi] [|,|(] ?qui¿ ?[ne|n’]¿ ?[en|y]¿ || ([>aller|>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir]) || [être|devenir|redevenir|rester|paraître|paraitre|sembler] @:[NA].*:p¬:[GMWYsi] [|,|(] ?qui¿ ?[ne|n’]¿ ?[en|y]¿ || ([>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir]) @@ -21387,38 +21709,38 @@ TEST: Restes crâniens. TEST: Demeures victoriennes. __ppas_être_accord_plur__ - (*WORD) ?qui¿ ?[ne|n’]¿ ?[en|y]¿ ([>être|>sembler|>devenir|>rester|>demeurer|>redevenir|>paraître|>paraitre]) @:[NA].*:s¬:[GMWYpi]|>légion/ - (*WORD) ?qui¿ ?[ne|n’]¿ ?[en|y]¿ (>avoir) [été|semblé|paru] @:[NA].*:s¬:[GMWYpi]|>légion/ - (*WORD) ?qui¿ ?[ne|n’]¿ ?[en|y]¿ ([>être|>sembler]) [devenus|redevenus|restés|demeurés|devenues|redevenues|restées|demeurées] @:[NA].*:s¬:[GMWYpi]|>légion/ - (*WORD) ?qui¿ ?[ne|n’]¿ ?[en|y]¿ - || ([>aller|>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir]) - || [être|devenir|redevenir|rester|paraître|paraitre|sembler] @:[NA].*:s¬:[GMWYpi]|>légion/ - (*WORD) ?qui¿ ?[ne|n’]¿ ?[en|y]¿ - || ([>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir]) - || être [devenus|redevenus|restés|demeurés|devenues|redevenues|restées|demeurées] @:[NA].*:s¬:[GMWYpi]|>légion/ - (*WORD) ?qui¿ ?[ne|n’]¿ ?[en|y]¿ - || ([>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir]) - || avoir [été|semblé|paru] @:[NA].*:s¬:[GMWYpi]|>légion/ - <<- /ppas/ not tag_before(\1, "que") and not morph(\1, ":G") and morph(\2, ":[13]p") - --1>> =suggPlur(\-1) # Accord avec la forme verbale “\2” : “\-1” devrait être au pluriel. - - [|,|(] ?qui¿ ?[ne|n’]¿ ?[en|y]¿ ([>être|>sembler|>devenir|>rester|>demeurer|>redevenir|>paraître|>paraitre]) @:[NA].*:s¬:[GMWYpi]|>légion/ - [|,|(] ?qui¿ ?[ne|n’]¿ ?[en|y]¿ (>avoir) [été|semblé|paru] @:[NA].*:s¬:[GMWYpi]|>légion/ - [|,|(] ?qui¿ ?[ne|n’]¿ ?[en|y]¿ ([>être|>sembler]) [devenus|redevenus|restés|demeurés|devenues|redevenues|restées|demeurées] @:[NA].*:s¬:[GMWYpi]|>légion/ - [|,|(] ?qui¿ ?[ne|n’]¿ ?[en|y]¿ - || ([>aller|>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir]) - || [être|devenir|redevenir|rester|paraître|paraitre|sembler] @:[NA].*:s¬:[GMWYpi]|>légion/ - [|,|(] ?qui¿ ?[ne|n’]¿ ?[en|y]¿ - || ([>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir]) - || être [devenus|redevenus|restés|demeurés|devenues|redevenues|restées|demeurées] @:[NA].*:s¬:[GMWYpi]|>légion/ - [|,|(] ?qui¿ ?[ne|n’]¿ ?[en|y]¿ - || ([>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir]) - || avoir [été|semblé|paru] @:[NA].*:s¬:[GMWYpi]|>légion/ - <<- /ppas/ morph(\1, ":[13]p") --1>> =suggPlur(\-1) # Accord avec la forme verbale “\1” : “\-1” devrait être au pluriel. + (*WORD) ?qui¿ ?[ne|n’]¿ ?[en|y]¿ ([>être|>sembler|>devenir|>rester|>demeurer|>redevenir|>paraître|>paraitre]) @:[NA].*:s¬:[GMWYpi] + (*WORD) ?qui¿ ?[ne|n’]¿ ?[en|y]¿ (>avoir) [été|semblé|paru] @:[NA].*:s¬:[GMWYpi] + (*WORD) ?qui¿ ?[ne|n’]¿ ?[en|y]¿ ([>être|>sembler]) [devenus|redevenus|restés|demeurés|devenues|redevenues|restées|demeurées] @:[NA].*:s¬:[GMWYpi] + (*WORD) ?qui¿ ?[ne|n’]¿ ?[en|y]¿ + || ([>aller|>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir]) + || [être|devenir|redevenir|rester|paraître|paraitre|sembler] @:[NA].*:s¬:[GMWYpi] + (*WORD) ?qui¿ ?[ne|n’]¿ ?[en|y]¿ + || ([>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir]) + || être [devenus|redevenus|restés|demeurés|devenues|redevenues|restées|demeurées] @:[NA].*:s¬:[GMWYpi] + (*WORD) ?qui¿ ?[ne|n’]¿ ?[en|y]¿ + || ([>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir]) + || avoir [été|semblé|paru] @:[NA].*:s¬:[GMWYpi] + <<- /ppas/ not tag_before(\1, "_que_") and not value(\-1, "|légion|néant|réalité|") and not morph(\1, ":G") and morph(\2, ":[13]p") + --1>> =suggPlur(\-1) # Accord avec la forme verbale “\2” : “\-1” devrait être au pluriel. + + [|,|(] ?qui¿ ?[ne|n’]¿ ?[en|y]¿ ([>être|>sembler|>devenir|>rester|>demeurer|>redevenir|>paraître|>paraitre]) @:[NA].*:s¬:[GMWYpi] + [|,|(] ?qui¿ ?[ne|n’]¿ ?[en|y]¿ (>avoir) [été|semblé|paru] @:[NA].*:s¬:[GMWYpi] + [|,|(] ?qui¿ ?[ne|n’]¿ ?[en|y]¿ ([>être|>sembler]) [devenus|redevenus|restés|demeurés|devenues|redevenues|restées|demeurées] @:[NA].*:s¬:[GMWYpi] + [|,|(] ?qui¿ ?[ne|n’]¿ ?[en|y]¿ + || ([>aller|>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir]) + || [être|devenir|redevenir|rester|paraître|paraitre|sembler] @:[NA].*:s¬:[GMWYpi] + [|,|(] ?qui¿ ?[ne|n’]¿ ?[en|y]¿ + || ([>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir]) + || être [devenus|redevenus|restés|demeurés|devenues|redevenues|restées|demeurées] @:[NA].*:s¬:[GMWYpi] + [|,|(] ?qui¿ ?[ne|n’]¿ ?[en|y]¿ + || ([>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir]) + || avoir [été|semblé|paru] @:[NA].*:s¬:[GMWYpi] + <<- /ppas/ not value(\-1, "|légion|néant|réalité|") and morph(\1, ":[13]p") --1>> =suggPlur(\-1) # Accord avec la forme verbale “\1” : “\-1” devrait être au pluriel. TEST: ces atouts sont très {{favorable}} TEST: Mais ces hommes affirment être redevenus {{humble}}. TEST: ces femmes n’affirment pas avoir été {{courtoise}}. TEST: des avocates qui n’imaginent pas devenir {{inapte}} pour si peu. @@ -21445,11 +21767,12 @@ || ([>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir]) || être [devenu+e|redevenu+e|resté+e|demeuré+e] *WORD [|,|$:Cs] [un|le|ce|cet] (*WORD) ?qui¿ ?[ne|n’]¿ || ([>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir]) || avoir [été|semblé|paru] *WORD - <<- /ppas/ morph(\1, ":[NA].*:[me]", ":[GWf]") and morph(\-1, ":A.*:f", ":[GWMme]") and (morph(\2, ":[123]s") or (not tag(\1, "enum") and morph(\2, ":P"))) + <<- /ppas/ not value(\-1, "|légion|néant|réalité|") and + morph(\1, ":[NA].*:[me]", ":[GWf]") and morph(\-1, ":A.*:f", ":[GWMme]") and (morph(\2, ":[123]s") or (not tag(\1, "_enum_") and morph(\2, ":P"))) --1>> =switchGender(\-1) # Accord erroné : “\1” et “\-1” ne sont pas accordés en genre. [|,|$:Cs] [une|la|ma|ta|sa|cette] (*WORD) ?qui¿ ?[ne|n’]¿ ([>être|>sembler|>devenir|>rester|>demeurer|>redevenir|>paraître|>paraitre]) *WORD [|,|$:Cs] [une|la|ma|ta|sa|cette] (*WORD) ?qui¿ ?[ne|n’]¿ (>avoir) [été|semblé|paru] *WORD [|,|$:Cs] [une|la|ma|ta|sa|cette] (*WORD) ?qui¿ ?[ne|n’]¿ ([>être|>sembler]) [devenu+e|redevenu+e|resté+e|demeuré+e] *WORD @@ -21460,11 +21783,12 @@ || ([>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir]) || être [devenu+e|redevenu+e|resté+e|demeuré+e] *WORD [|,|$:Cs] [une|la|ma|ta|sa|cette] (*WORD) ?qui¿ ?[ne|n’]¿ || ([>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir]) || avoir [été|semblé|paru] *WORD - <<- /ppas/ morph(\1, ":[NA].*:[fe]", ":[GWm]") and morph(\-1, ":A.*:m", ":[GWMfe]") and (morph(\2, ":[123]s") or (not tag(\1, "enum") and morph(\2, ":P"))) + <<- /ppas/ not value(\-1, "|légion|néant|réalité|") and + morph(\1, ":[NA].*:[fe]", ":[GWm]") and morph(\-1, ":A.*:m", ":[GWMfe]") and (morph(\2, ":[123]s") or (not tag(\1, "_enum_") and morph(\2, ":P"))) --1>> =switchGender(\-1) # Accord erroné : “\1” et “\-1” ne sont pas accordés en genre. [|,|$:Cs] [l’|mon|ton|son|notre|votre|leur] (*WORD) ?qui¿ ?[ne|n’]¿ ([>être|>sembler|>devenir|>rester|>demeurer|>redevenir|>paraître|>paraitre]) *WORD [|,|$:Cs] [l’|mon|ton|son|notre|votre|leur] (*WORD) ?qui¿ ?[ne|n’]¿ (>avoir) [été|semblé|paru] *WORD [|,|$:Cs] [l’|mon|ton|son|notre|votre|leur] (*WORD) ?qui¿ ?[ne|n’]¿ ([>être|>sembler]) [devenu+e|redevenu+e|resté+e|demeuré+e] *WORD @@ -21475,12 +21799,13 @@ || ([>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir]) || être [devenu+e|redevenu+e|resté+e|demeuré+e] *WORD [|,|$:Cs] [l’|mon|ton|son|notre|votre|leur] (*WORD) ?qui¿ ?[ne|n’]¿ || ([>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir]) || avoir [été|semblé|paru] *WORD - <<- /ppas/ ((morph(\1, ":[NA].*:f", ":[GWme]") and morph(\-1, ":A.*:m", ":[GWMfe]")) or (morph(\1, ":[NA].*:m", ":[GWfe]") and morph(\-1, ":A.*:f", ":[GWme]"))) - and (morph(\2, ":[123]s") or (not tag(\1, "enum") and morph(\2, ":P"))) + <<- /ppas/ not value(\-1, "|légion|néant|réalité|") and + ((morph(\1, ":[NA].*:f", ":[GWme]") and morph(\-1, ":A.*:m", ":[GWMfe]")) or (morph(\1, ":[NA].*:m", ":[GWfe]") and morph(\-1, ":A.*:f", ":[GWme]"))) + and (morph(\2, ":[123]s") or (not tag(\1, "_enum_") and morph(\2, ":P"))) --1>> =switchGender(\-1) # Accord erroné : “\1” et “\-1” ne sont pas accordés en genre. [|,|$:Cs] [les|ces|mes|tes|ses|nos|vos|leurs|quelques|plusieurs] (*WORD) ?qui¿ ?[ne|n’]¿ ([>être|>sembler|>devenir|>rester|>demeurer|>redevenir|>paraître|>paraitre]) *WORD [|,|$:Cs] [les|ces|mes|tes|ses|nos|vos|leurs|quelques|plusieurs] (*WORD) ?qui¿ ?[ne|n’]¿ (>avoir) [été|semblé|paru] *WORD [|,|$:Cs] [les|ces|mes|tes|ses|nos|vos|leurs|quelques|plusieurs] (*WORD) ?qui¿ ?[ne|n’]¿ ([>être|>sembler]) [devenus|redevenus|restés|demeurés|devenues|redevenues|restées|demeurées] *WORD @@ -21491,11 +21816,12 @@ || ([>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir]) || être [devenus|redevenus|restés|demeurés|devenues|redevenues|restées|demeurées] *WORD [|,|$:Cs] [les|ces|mes|tes|ses|nos|vos|leurs|quelques|plusieurs] (*WORD) ?qui¿ ?[ne|n’]¿ || ([>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir]) || avoir [été|semblé|paru] *WORD - <<- /ppas/ ((morph(\1, ":[NA].*:f", ":[GWme]") and morph(\-1, ":A.*:m", ":[GWMfe]")) or (morph(\1, ":[NA].*:m", ":[GWfe]") and morph(\-1, ":A.*:f", ":[GWme]"))) and morph(\2, ":(?:[123]p|P)") + <<- /ppas/ not value(\-1, "|légion|néant|réalité|") and + ((morph(\1, ":[NA].*:f", ":[GWme]") and morph(\-1, ":A.*:m", ":[GWMfe]")) or (morph(\1, ":[NA].*:m", ":[GWfe]") and morph(\-1, ":A.*:f", ":[GWme]"))) and morph(\2, ":(?:[123]p|P)") --1>> =switchGender(\-1) # Accord erroné : “\1” et “\-1” ne sont pas accordés en genre. *WORD [que|qu’] [un|le|ce|cet|une|la|ma|ta|sa|cette|l’|mon|ton|son|notre|votre|leur|les|ces|mes|tes|ses|nos|vos|leurs|quelques|plusieurs] *WORD ?[ne|n’]¿ || ([>affirmer|>croire|>déclarer|>désirer|>détester|>dire|>estimer|>imaginer|>penser|>préférer|>savoir|>souhaiter|>vouloir]) || [être|devenir|redevenir|rester|paraître|paraitre|sembler] *WORD @@ -21526,10 +21852,11 @@ TEST: plusieurs invités qui ne sont pas {{contentes}} TEST: les réunions sans cesse reportées qui sont {{annulés}} TEST: les hommes croyant être {{instruites}} TEST: Les tortures que ce journaliste pense être “normales”. TEST: La première était René, le parfumeur, qui s’approcha de Catherine +TEST: les abrutis sont légion __ppas_nom_propre_être_accord_genre__ [|,|$:Cs] ($:M) ?qui¿ ?[ne|n’]¿ ([>être|>sembler|>devenir|>rester|>demeurer|>redevenir|>paraître|>paraitre]) *WORD [|,|$:Cs] ($:M) ?qui¿ ?[ne|n’]¿ (>avoir) [été|semblé|paru] *WORD @@ -21541,12 +21868,12 @@ || ([>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir]) || être [devenu+e|redevenu+e|resté+e|demeuré+e] *WORD [|,|$:Cs] ($:M) ?qui¿ ?[ne|n’]¿ || ([>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir]) || avoir [été|semblé|paru] *WORD - <<- /ppas/ not tag(\1, "enum") and ((morph(\1, ":M.*:f", ":[GWme]") and morph(\-1, ":A.*:m", ":[GWfe]")) or (morph(\1, ":M.*:m", ":[GWfe]") and morph(\-1, ":A.*:f", ":[GWme]"))) - and (morph(\2, ":[123]s") or (not tag(\1, "enum") and morph(\2, ":P"))) + <<- /ppas/ not tag(\1, "_enum_") and ((morph(\1, ":M.*:f", ":[GWme]") and morph(\-1, ":A.*:m", ":[GWfe]")) or (morph(\1, ":M.*:m", ":[GWfe]") and morph(\-1, ":A.*:f", ":[GWme]"))) + and (morph(\2, ":[123]s") or (not tag(\1, "_enum_") and morph(\2, ":P"))) --1>> =switchGender(\-1) # Accord erroné : “\1” et “\-1” ne sont pas accordés en genre. *WORD [que|qu’] $:M ?[ne|n’]¿ || ([>affirmer|>croire|>déclarer|>désirer|>détester|>dire|>estimer|>imaginer|>penser|>préférer|>savoir|>souhaiter|>vouloir]) || [être|devenir|redevenir|rester|paraître|paraitre|sembler] *WORD @@ -22447,11 +22774,11 @@ TEST: il faillit agir, mais l’ayant {{remarqués}}, il passa son chemin. __ppas_m_t_avoir__ [m’|t’] >avoir @:Q.*:p¬:[GWsi] - <<- /ppas/ not tag_before(\1, "que") or morph(\3, ":V[0-3]..t_") -3>> =suggSing(\3) + <<- /ppas/ not tag_before(\1, "_que_") or morph(\3, ":V[0-3]..t_") -3>> =suggSing(\3) # Accord avec “\1”. S’il s’agit d’un COD, le participe passé “\3” devrait être au singulier (et accordé en genre).|http://fr.wikipedia.org/wiki/Accord_du_participe_pass%C3%A9_en_fran%C3%A7ais TEST: ces livres m’avaient {{ennuyés}} au-delà du dicible. TEST: Les élèves m’ont {{écoutés}}. TEST: Les élèves t’ont de temps en temps {{écoutées}}. @@ -22576,11 +22903,11 @@ TEST: la danse qu’ils ont réussi à faire TEST: La dernière fois qu’elle a brûlé, c’était pendant la Commune. TEST: en ayant l’impression qu’il a beaucoup réussi -__ppas_ce_que_pronom_avoir__ +__ppas_ceque_pronom_avoir__ ce [que|qu’] [je|j’|tu|il|elle|on|nous|vous|ils|elles|iel|iels|ça|cela|ceci] ?[ne|n’]¿ ?[lui|leur]¿ >avoir @:V[0-3]..t.*:Q.*:[fp]¬:(?:G|W|[me]:[si]) <<- /ppas/ --1>> =suggVerbPpas(\-1, ":m:s") # Accord avec le COD “ce”. Le participe passé devrait être au masculin singulier.|http://fr.wikipedia.org/wiki/Accord_du_participe_pass%C3%A9_en_fran%C3%A7ais TEST: ce que ça a {{donnée}} @@ -22697,11 +23024,11 @@ [|,|(] *WORD [lui|nous|vous] *WORD <<- /imp/ space_after(\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 : - [|,|(] *WORD [les|la|lui|nous|vous|leur] [|,] + [|,|(] *WORD [les|la|lui|nous|vous|leur] [|,|)] <<- /imp/ space_after(\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. ->> là|||donnez-la @@ -23446,30 +23773,30 @@ __ppas_être_confusion__ ne [pas|jamais] être @:(?:V(?:1.*:Y|2.*:Ip.*:3s|3.*:Is.*:3s)|2p) <<- /ppas/ --1>> =suggVerbPpas(\-1) # Après “ne \2 être”, il faut un participe passé. avoir [pu|cru|pensé|imaginé] être @:(?:V(?:1.*:Y|2.*:Ip.*:3s|3.*:Is.*:3s)|2p) - <<- /ppas/ not value(<1, "|l’|") and not tag_before(\1, "que") --1>> =suggVerbPpas(\-1) # Après le verbe “être”, il faut un participe passé. + <<- /ppas/ not value(<1, "|l’|") and not tag_before(\1, "_que_") --1>> =suggVerbPpas(\-1) # Après le verbe “être”, il faut un participe passé. >être ~..er$ <<- /ppas/ not tag(\2, "upron") and morph(\1, ":V", ":Q|>soit/") and (morph(\2, ":Y", ":[NAQ]") or \2 in aSHOULDBEVERB) and not morph(<1, ":Y|>ce/") and not value(<1, "|c’|") and not value(<2, "|ce|") - and not tag_before(\1, "ce_que") and not tag_before(\1, "suj_vinfi") + and not tag_before(\1, "_ceque_") and not tag_before(\1, "suj_vinfi") -2>> =suggVerbPpas(\2) # Après “être”, le verbe ne devrait pas être à l’infinitif. >être ~..ez$ <<- /ppas/ morph(\1, ":V", ":Q|>soit/") and morph(\2, ":2p", ":[NAQ]") -2>> =suggVerbPpas(\2) # Après “être”, le verbe ne devrait pas être conjugué à la 2ᵉ personne du pluriel. >être ~.it$ <<- /ppas/ morph(\1, ":V", ":Q|>soit/") and morph(\2, ":V(?:2.*:Ip.*:3s|3.*:Is.*:3s)", ":[NAQ]") - and not tag_before(\1, "ce_que") and not tag_before(\1, "suj_vinfi") + and not tag_before(\1, "_ceque_") and not tag_before(\1, "suj_vinfi") -2>> =suggVerbPpas(\2) # Après “être”, le verbe ne devrait pas être conjugué à la 3ᵉ personne du singulier. >être ~.ut$ <<- /ppas/ morph(\1, ":V", ":Q|>soit/") and morph(\2, ":V3.*:Is.*:3s", ":[NAQ]") - and not tag_before(\1, "ce_que") and not tag_before(\1, "suj_vinfi") + and not tag_before(\1, "_ceque_") and not tag_before(\1, "suj_vinfi") -2>> =suggVerbPpas(\2) # Après “être”, le verbe ne devrait pas être conjugué à la 3ᵉ personne du singulier. TEST: Ne pas être {{aller}} là-bas est une grave erreur que nous regretterons longtemps. TEST: Ne pas être {{arrivez}} à ses fins. TEST: Ne pas être {{prit}} au sérieux. @@ -23821,38 +24148,66 @@ [ne|n’] [lui|leur] en @:(?:[123][sp]|P|Y)¬:X <<- ~1:-2>> * __purge_proposition_subordonnée__ - [que|qu’] je ?[ne|n’]¿ ?[le|la|l’|les|en|me|m’|te|t’|se|s’|nous|vous|lui|leur|y]¿ $:1s @:[123][sp] - [que|qu’] je ?[ne|n’]¿ [me|m’|te|t’|se|s’|nous|vous] [le|la|l’|les|en|y] $:1s @:[123][sp] - [que|qu’] je ?[ne|n’]¿ [le|la|l’|les] [lui|leur|en|y] $:1s @:[123][sp] - [que|qu’] je ?[ne|n’]¿ [lui|leur|y] en $:1s @:[123][sp] - [que|qu’] tu ?[ne|n’]¿ ?[le|la|l’|les|en|me|m’|te|t’|se|s’|nous|vous|lui|leur|y]¿ $:2s @:[123][sp] - [que|qu’] tu ?[ne|n’]¿ [me|m’|te|t’|se|s’|nous|vous] [le|la|l’|les|en|y] $:2s @:[123][sp] - [que|qu’] tu ?[ne|n’]¿ [le|la|l’|les] [lui|leur|en|y] $:2s @:[123][sp] - [que|qu’] tu ?[ne|n’]¿ [lui|leur|y] en $:2s @:[123][sp] - [que|qu’] [il|elle|on|iel|$:M] ?[ne|n’]¿ ?[le|la|l’|les|en|me|m’|te|t’|se|s’|nous|vous|lui|leur|y]¿ $:3s @:[123][sp] - [que|qu’] [il|elle|on|iel|$:M] ?[ne|n’]¿ [me|m’|te|t’|se|s’|nous|vous] [le|la|l’|les|en|y] $:3s @:[123][sp] - [que|qu’] [il|elle|on|iel|$:M] ?[ne|n’]¿ [le|la|l’|les] [lui|leur|en|y] $:3s @:[123][sp] - [que|qu’] [il|elle|on|iel|$:M] ?[ne|n’]¿ [lui|leur|y] en $:3s @:[123][sp] - [que|qu’] nous ?[ne|n’]¿ ?[le|la|l’|les|en|me|m’|te|t’|se|s’|nous|vous|lui|leur|y]¿ $:1p @:[123][sp] - [que|qu’] nous ?[ne|n’]¿ [me|m’|te|t’|se|s’|nous|vous] [le|la|l’|les|en|y] $:1p @:[123][sp] - [que|qu’] nous ?[ne|n’]¿ [le|la|l’|les] [lui|leur|en|y] $:1p @:[123][sp] - [que|qu’] nous ?[ne|n’]¿ [lui|leur|y] en $:1p @:[123][sp] - [que|qu’] vous ?[ne|n’]¿ ?[le|la|l’|les|en|me|m’|te|t’|se|s’|nous|vous|lui|leur|y]¿ $:2p @:[123][sp] - [que|qu’] vous ?[ne|n’]¿ [me|m’|te|t’|se|s’|nous|vous] [le|la|l’|les|en|y] $:2p @:[123][sp] - [que|qu’] vous ?[ne|n’]¿ [le|la|l’|les] [lui|leur|en|y] $:2p @:[123][sp] - [que|qu’] vous ?[ne|n’]¿ [lui|leur|y] en $:2p @:[123][sp] - [que|qu’] [ils|elles|iels] ?[ne|n’]¿ ?[le|la|l’|les|en|me|m’|te|t’|se|s’|nous|vous|lui|leur|y]¿ $:3p @:[123][sp] - [que|qu’] [ils|elles|iels] ?[ne|n’]¿ [me|m’|te|t’|se|s’|nous|vous] [le|la|l’|les|en|y] $:3p @:[123][sp] - [que|qu’] [ils|elles|iels] ?[ne|n’]¿ [le|la|l’|les] [lui|leur|en|y] $:3p @:[123][sp] - [que|qu’] [ils|elles|iels] ?[ne|n’]¿ [lui|leur|y] en $:3p @:[123][sp] - [que|qu’] $:M et $:M ?[ne|n’]¿ ?[le|la|l’|les|en|me|m’|te|t’|se|s’|nous|vous|lui|leur|y]¿ $:3p @:[123][sp] - [que|qu’] $:M et $:M ?[ne|n’]¿ [me|m’|te|t’|se|s’|nous|vous] [le|la|l’|les|en|y] $:3p @:[123][sp] - [que|qu’] $:M et $:M ?[ne|n’]¿ [le|la|l’|les] [lui|leur|en|y] $:3p @:[123][sp] - [que|qu’] $:M et $:M ?[ne|n’]¿ [lui|leur|y] en $:3p @:[123][sp] + [que|qu’] je ?[ne|n’]¿ ?[le|la|l’|les|en|me|m’|te|t’|se|s’|nous|vous|lui|leur|y]¿ @V[123].*:1s @:[123][sp] + [que|qu’] je ?[ne|n’]¿ [me|m’|te|t’|se|s’|nous|vous] [le|la|l’|les|en|y] @V[123].*:1s @:[123][sp] + [que|qu’] je ?[ne|n’]¿ [le|la|l’|les] [lui|leur|en|y] @V[123].*:1s @:[123][sp] + [que|qu’] je ?[ne|n’]¿ [lui|leur|y] en @V[123].*:1s @:[123][sp] + [que|qu’] tu ?[ne|n’]¿ ?[le|la|l’|les|en|me|m’|te|t’|se|s’|nous|vous|lui|leur|y]¿ @V[123].*:2s @:[123][sp] + [que|qu’] tu ?[ne|n’]¿ [me|m’|te|t’|se|s’|nous|vous] [le|la|l’|les|en|y] @V[123].*:2s @:[123][sp] + [que|qu’] tu ?[ne|n’]¿ [le|la|l’|les] [lui|leur|en|y] @V[123].*:2s @:[123][sp] + [que|qu’] tu ?[ne|n’]¿ [lui|leur|y] en @V[123].*:2s @:[123][sp] + [que|qu’] [il|elle|on|iel|$:M] ?[ne|n’]¿ ?[le|la|l’|les|en|me|m’|te|t’|se|s’|nous|vous|lui|leur|y]¿ @V[123].*:3s @:[123][sp] + [que|qu’] [il|elle|on|iel|$:M] ?[ne|n’]¿ [me|m’|te|t’|se|s’|nous|vous] [le|la|l’|les|en|y] @V[123].*:3s @:[123][sp] + [que|qu’] [il|elle|on|iel|$:M] ?[ne|n’]¿ [le|la|l’|les] [lui|leur|en|y] @V[123].*:3s @:[123][sp] + [que|qu’] [il|elle|on|iel|$:M] ?[ne|n’]¿ [lui|leur|y] en @V[123].*:3s @:[123][sp] + [que|qu’] nous ?[ne|n’]¿ ?[le|la|l’|les|en|me|m’|te|t’|se|s’|nous|vous|lui|leur|y]¿ @V[123].*:1p @:[123][sp] + [que|qu’] nous ?[ne|n’]¿ [me|m’|te|t’|se|s’|nous|vous] [le|la|l’|les|en|y] @V[123].*:1p @:[123][sp] + [que|qu’] nous ?[ne|n’]¿ [le|la|l’|les] [lui|leur|en|y] @V[123].*:1p @:[123][sp] + [que|qu’] nous ?[ne|n’]¿ [lui|leur|y] en @V[123].*:1p @:[123][sp] + [que|qu’] vous ?[ne|n’]¿ ?[le|la|l’|les|en|me|m’|te|t’|se|s’|nous|vous|lui|leur|y]¿ @V[123].*:2p @:[123][sp] + [que|qu’] vous ?[ne|n’]¿ [me|m’|te|t’|se|s’|nous|vous] [le|la|l’|les|en|y] @V[123].*:2p @:[123][sp] + [que|qu’] vous ?[ne|n’]¿ [le|la|l’|les] [lui|leur|en|y] @V[123].*:2p @:[123][sp] + [que|qu’] vous ?[ne|n’]¿ [lui|leur|y] en @V[123].*:2p @:[123][sp] + [que|qu’] [ils|elles|iels] ?[ne|n’]¿ ?[le|la|l’|les|en|me|m’|te|t’|se|s’|nous|vous|lui|leur|y]¿ @V[123].*:3p @:[123][sp] + [que|qu’] [ils|elles|iels] ?[ne|n’]¿ [me|m’|te|t’|se|s’|nous|vous] [le|la|l’|les|en|y] @V[123].*:3p @:[123][sp] + [que|qu’] [ils|elles|iels] ?[ne|n’]¿ [le|la|l’|les] [lui|leur|en|y] @V[123].*:3p @:[123][sp] + [que|qu’] [ils|elles|iels] ?[ne|n’]¿ [lui|leur|y] en @V[123].*:3p @:[123][sp] + [que|qu’] $:M et $:M ?[ne|n’]¿ ?[le|la|l’|les|en|me|m’|te|t’|se|s’|nous|vous|lui|leur|y]¿ @V[123].*:3p @:[123][sp] + [que|qu’] $:M et $:M ?[ne|n’]¿ [me|m’|te|t’|se|s’|nous|vous] [le|la|l’|les|en|y] @V[123].*:3p @:[123][sp] + [que|qu’] $:M et $:M ?[ne|n’]¿ [le|la|l’|les] [lui|leur|en|y] @V[123].*:3p @:[123][sp] + [que|qu’] $:M et $:M ?[ne|n’]¿ [lui|leur|y] en @V[123].*:3p @:[123][sp] + [que|qu’] je ?[ne|n’]¿ ?[le|la|l’|les|en|me|m’|te|t’|se|s’|nous|vous|lui|leur|y]¿ @:V0.*:1s @:Q¬:G @:[123][sp] + [que|qu’] je ?[ne|n’]¿ [me|m’|te|t’|se|s’|nous|vous] [le|la|l’|les|en|y] @:V0.*:1s @:Q¬:G @:[123][sp] + [que|qu’] je ?[ne|n’]¿ [le|la|l’|les] [lui|leur|en|y] @:V0.*:1s @:Q¬:G @:[123][sp] + [que|qu’] je ?[ne|n’]¿ [lui|leur|y] en @:V0.*:1s @:Q¬:G @:[123][sp] + [que|qu’] tu ?[ne|n’]¿ ?[le|la|l’|les|en|me|m’|te|t’|se|s’|nous|vous|lui|leur|y]¿ @:V0.*:2s @:Q¬:G @:[123][sp] + [que|qu’] tu ?[ne|n’]¿ [me|m’|te|t’|se|s’|nous|vous] [le|la|l’|les|en|y] @:V0.*:2s @:Q¬:G @:[123][sp] + [que|qu’] tu ?[ne|n’]¿ [le|la|l’|les] [lui|leur|en|y] @:V0.*:2s @:Q¬:G @:[123][sp] + [que|qu’] tu ?[ne|n’]¿ [lui|leur|y] en @:V0.*:2s @:Q¬:G @:[123][sp] + [que|qu’] [il|elle|on|iel|$:M] ?[ne|n’]¿ ?[le|la|l’|les|en|me|m’|te|t’|se|s’|nous|vous|lui|leur|y]¿ @:V0.*:3s @:Q¬:G @:[123][sp] + [que|qu’] [il|elle|on|iel|$:M] ?[ne|n’]¿ [me|m’|te|t’|se|s’|nous|vous] [le|la|l’|les|en|y] @:V0.*:3s @:Q¬:G @:[123][sp] + [que|qu’] [il|elle|on|iel|$:M] ?[ne|n’]¿ [le|la|l’|les] [lui|leur|en|y] @:V0.*:3s @:Q¬:G @:[123][sp] + [que|qu’] [il|elle|on|iel|$:M] ?[ne|n’]¿ [lui|leur|y] en @:V0.*:3s @:Q¬:G @:[123][sp] + [que|qu’] nous ?[ne|n’]¿ ?[le|la|l’|les|en|me|m’|te|t’|se|s’|nous|vous|lui|leur|y]¿ @:V0.*:1p @:Q¬:G @:[123][sp] + [que|qu’] nous ?[ne|n’]¿ [me|m’|te|t’|se|s’|nous|vous] [le|la|l’|les|en|y] @:V0.*:1p @:Q¬:G @:[123][sp] + [que|qu’] nous ?[ne|n’]¿ [le|la|l’|les] [lui|leur|en|y] @:V0.*:1p @:Q¬:G @:[123][sp] + [que|qu’] nous ?[ne|n’]¿ [lui|leur|y] en @:V0.*:1p @:Q¬:G @:[123][sp] + [que|qu’] vous ?[ne|n’]¿ ?[le|la|l’|les|en|me|m’|te|t’|se|s’|nous|vous|lui|leur|y]¿ @:V0.*:2p @:Q¬:G @:[123][sp] + [que|qu’] vous ?[ne|n’]¿ [me|m’|te|t’|se|s’|nous|vous] [le|la|l’|les|en|y] @:V0.*:2p @:Q¬:G @:[123][sp] + [que|qu’] vous ?[ne|n’]¿ [le|la|l’|les] [lui|leur|en|y] @:V0.*:2p @:Q¬:G @:[123][sp] + [que|qu’] vous ?[ne|n’]¿ [lui|leur|y] en @:V0.*:2p @:Q¬:G @:[123][sp] + [que|qu’] [ils|elles|iels] ?[ne|n’]¿ ?[le|la|l’|les|en|me|m’|te|t’|se|s’|nous|vous|lui|leur|y]¿ @:V0.*:3p @:Q¬:G @:[123][sp] + [que|qu’] [ils|elles|iels] ?[ne|n’]¿ [me|m’|te|t’|se|s’|nous|vous] [le|la|l’|les|en|y] @:V0.*:3p @:Q¬:G @:[123][sp] + [que|qu’] [ils|elles|iels] ?[ne|n’]¿ [le|la|l’|les] [lui|leur|en|y] @:V0.*:3p @:Q¬:G @:[123][sp] + [que|qu’] [ils|elles|iels] ?[ne|n’]¿ [lui|leur|y] en @:V0.*:3p @:Q¬:G @:[123][sp] + [que|qu’] $:M et $:M ?[ne|n’]¿ ?[le|la|l’|les|en|me|m’|te|t’|se|s’|nous|vous|lui|leur|y]¿ @:V0.*:3p @:Q¬:G @:[123][sp] + [que|qu’] $:M et $:M ?[ne|n’]¿ [me|m’|te|t’|se|s’|nous|vous] [le|la|l’|les|en|y] @:V0.*:3p @:Q¬:G @:[123][sp] + [que|qu’] $:M et $:M ?[ne|n’]¿ [le|la|l’|les] [lui|leur|en|y] @:V0.*:3p @:Q¬:G @:[123][sp] + [que|qu’] $:M et $:M ?[ne|n’]¿ [lui|leur|y] en @:V0.*:3p @:Q¬:G @:[123][sp] <<- morph(<1, ":N", ":V") ~1:-2>> * __tag_verbe_infinitif_sujet__ [|,|(] [ne|n’] ?[en|y]¿ ?presque¿ [pas|rien|guère|point|jamais|plus] @@ -23873,17 +24228,23 @@ || , [le|la|l’|les|un|une|des|ce|cet|cette|ces|mon|ton|son|ma|ta|sa|mes|tes|ses|notre|votre|nos|vos|leur|leurs|quelques|certains|certaines|tout|tous|toute|toutes] (*WORD) || [,|et|ou] [le|la|l’|les|un|une|des|ce|cet|cette|ces|mon|ton|son|ma|ta|sa|mes|tes|ses|notre|votre|nos|vos|leur|leurs|quelques|certains|certaines|tout|tous|toute|toutes] (*WORD) [le|la|l’|les|un|une|des|ce|cet|cette|ces|mon|ton|son|ma|ta|sa|mes|tes|ses|notre|votre|nos|vos|leur|leurs|quelques|certains|certaines|tout|tous|toute|toutes] (*WORD) || , [le|la|l’|les|un|une|des|ce|cet|cette|ces|mon|ton|son|ma|ta|sa|mes|tes|ses|notre|votre|nos|vos|leur|leurs|quelques|certains|certaines|tout|tous|toute|toutes] (*WORD) || ?,¿ ainsi [que|qu’] [le|la|l’|les|un|une|des|ce|cet|cette|ces|mon|ton|son|ma|ta|sa|mes|tes|ses|notre|votre|nos|vos|leur|leurs|quelques|certains|certaines|tout|tous|toute|toutes] (*WORD) - <<- morph(\1, ":[NAM]") and morph(\2, ":[NAM]") and morph(\3, ":[NAM]") />> enum + <<- morph(\1, ":[NAM]") and morph(\2, ":[NAM]") and morph(\3, ":[NAM]") />> _enum_ [le|la|l’|les|un|une|des|ce|cet|cette|ces|mon|ton|son|ma|ta|sa|mes|tes|ses|notre|votre|nos|vos|leur|leurs|quelques|certains|certaines|tout|tous|toute|toutes] (*WORD) || [,|et|ou] [le|la|l’|les|un|une|des|ce|cet|cette|ces|mon|ton|son|ma|ta|sa|mes|tes|ses|notre|votre|nos|vos|leur|leurs|quelques|certains|certaines|tout|tous|toute|toutes] (*WORD) [le|la|l’|les|un|une|des|ce|cet|cette|ces|mon|ton|son|ma|ta|sa|mes|tes|ses|notre|votre|nos|vos|leur|leurs|quelques|certains|certaines|tout|tous|toute|toutes] (*WORD) || ?,¿ ainsi [que|qu’] [le|la|l’|les|un|une|des|ce|cet|cette|ces|mon|ton|son|ma|ta|sa|mes|tes|ses|notre|votre|nos|vos|leur|leurs|quelques|certains|certaines|tout|tous|toute|toutes] (*WORD) - <<- morph(\1, ":[NAM]") and morph(\2, ":[NAM]") />> enum + <<- morph(\1, ":[NAM]") and morph(\2, ":[NAM]") />> _enum_ + + +__da_est__ + *WORD est + <<- morph(\1, ":V", ":N") =>> select(\2, ":V") + @@@@ @@@@ @@@@ @@ -23919,11 +24280,11 @@ #### être / avoir __conf_ait_confiance_été_faim_tort!3__ [es|est] [confiance|conscience|envie|été|peur|faim|hâte|honte|recours|soif|tort] [es|est] peine [à|a] - <<- /conf/ not tag_before(\1, "ce_que") and not value(<1, "|tout|d’|l’|") + <<- /conf/ not tag_before(\1, "_ceque_") and not value(<1, "|tout|d’|l’|") -1>> ait|aie # Confusion probable dans l’expression “avoir \2”. Vous utilisez ici le verbe “être”. TEST: il est posssible qu’il {{est}} confiance en toi TEST: Je crains qu’il {{est}} peine à trouver le bonheur. TEST: La révolution est crainte. @@ -24048,30 +24409,30 @@ !!!! Traits d’union manquants (formes interrogatives) !! !! !! __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 [|,|)] [|,|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]") -2:3>> =\2[:-1]+"é-je" # Forme interrogative ? Mettez un trait d’union. - *WORD ~..[éèe]$ je [|,] + *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|") -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 [|,|)] [|,|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]") -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) -2:3>> \2-je # Forme interrogative ? Mettez un trait d’union. - *WORD ~.[is]$ je [|,] + *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|") -2:3>> \2-je # Forme interrogative ? Mettez un trait d’union. TEST: quel animal {{dessine je}} @@ -24080,20 +24441,20 @@ TEST: {{ai je}} enfin trouvé la réponse à mes questions ? TEST: quel amour {{connaîtrai je}} si je juge sans cesse ? __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 [|,|)] [|,|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]") -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) -2:3>> \2-tu # Forme interrogative ? Mettez un trait d’union. - *WORD ~.s$ tu [|,] + *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|") -2:3>> \2-tu # Forme interrogative ? Mettez un trait d’union. TEST: {{Viendras tu}} là ? @@ -24101,20 +24462,20 @@ TEST: quelle vie {{connaitras tu}} ? TEST: Comment {{peux tu}} ? __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] [|,|)] [|,|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]") -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) -2:3>> \2-\3 # Forme interrogative ? Mettez un trait d’union. - *WORD ~.[td]$ [il|on] [|,] + *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|") -2:3>> \2-\3 # Forme interrogative ? Mettez un trait d’union. TEST: {{prend on}} le temps d’y réfléchir ? @@ -24134,20 +24495,20 @@ 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] [|,|)] [|,|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]") -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) -2:3>> \2-\3 # Forme interrogative ? Mettez un trait d’union. - *WORD ~.[td]$ [elle|iel] [|,] + *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|") -2:3>> \2-\3 # Forme interrogative ? Mettez un trait d’union. TEST: {{vient elle}} souvent ? @@ -24158,11 +24519,11 @@ TEST: je ne comprenais pas pourquoi c’était elle qui était punie et que personne ne parlait de celui qui avait fait ça. TEST: C’était elle qui avait pris le contrôle. __inte_union_nous2!7__ - , ~ons$ nous [|,] + , ~ons$ nous [|,|)] , ~ons$ nous @:¬:(?:1p|Y) <<- /inte/ space_after(\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 @@ -24175,11 +24536,11 @@ [|,|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) -2:3>> \2-nous # Forme interrogative ? Mettez un trait d’union. - *WORD ~ons$ nous [|,] + *WORD ~ons$ nous [|,|)] *WORD ~ons$ nous @:¬:(?:Y|1p) <<- /inte/ space_after(\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. @@ -24194,11 +24555,11 @@ TEST: pourquoi {{entendons nous}} souvent ces injonctions idiotes ? TEST: les avions nous font rêver. __inte_union_vous2!7__ - , ~ez$ vous [|,] + , ~ez$ vous [|,|)] , ~ez$ vous @:¬:(?:2p|Y) <<- /inte/ space_after(\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 @@ -24211,11 +24572,11 @@ [|,|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) -2:3>> \2-vous # Forme interrogative ? Mettez un trait d’union. - *WORD ~..e[zs]$ vous [|,] + *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") -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. @@ -24227,20 +24588,20 @@ TEST: quel homme {{voulez vous}} qu’il devienne TEST: Veuillez vous instruire avant de contester ces mesures. __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 [|,|)] [|,|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]") -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) -2:3>> \2-\3 # Forme interrogative ? Mettez un trait d’union. - *WORD ~[eo]nt$ ils [|,] + *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|") -2:3>> \2-\3 # Forme interrogative ? Mettez un trait d’union. TEST: {{Viendront ils}} demain ? @@ -24247,20 +24608,20 @@ TEST: qui {{seront ils}} une fois adultes ? TEST: dans quel retaurant {{iront ils}} ? __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] [|,|)] [|,|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]") -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) -2:3>> \2-\3 # Forme interrogative ? Mettez un trait d’union. - *WORD ~[eo]nt$ [elles|iels] [|,] + *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|") -2:3>> \2-\3 # Forme interrogative ? Mettez un trait d’union. TEST: {{viennent elles}} souvent ? @@ -24547,22 +24908,22 @@ TEST: y être sans ma femme ni les enfants fait monter en moi une certaine nervosité. __conj_det_sing_nom__ [le|la|l’|un|une|ce|cet|cette|mon|ton|son|ma|ta|sa|notre|votre|leur] *WORD @:V¬:(?:3s|P|Q|Y|3p!|G|M) - <<- /conj/ not tag(\2, "enum") and morph(<1, ":C||>,", ":[YP]") and morph(\2, ":[NA].*:[si]", ":G") + <<- /conj/ not tag(\2, "_enum_") and morph(<1, ":C||>,", ":[YP]") and morph(\2, ":[NA].*:[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") ) >>> + or tag_before(\1, "_ni_") or value(<1, "|et|ou|")) and morph(\3, ":3?p") ) >>> <<- /conj/ not checkAgreement(\2, \3) -3>> =suggVerb(\3, ":3s") # Conjugaison erronée. Accord avec “\1 \2…”. Le verbe devrait être à la 3ᵉ personne du singulier. <<- /conj/ __else__ and isVeryAmbiguousAndWrong(\2, \3, ":s", ":3s", value(<1, "||,|")) -3>> =suggVerb(\3, ":3s", suggSing) # Accord avec “\1 \2…” incorrect. Conjugaison erronée ou accord nom/adjectif incorrect. [le|la|l’|un|une|ce|cet|cette|mon|ton|son|ma|ta|sa|notre|votre|leur] *WORD qui @:V¬:(?:3s|P|3p!|G|M) - <<- /conj/ not tag(\2, "enum") and morph(<1, ":C||>,", ":[YP]") and morph(\2, ":[NA].*:[si]", ":G") + <<- /conj/ not tag(\2, "_enum_") and morph(<1, ":C||>,", ":[YP]") and morph(\2, ":[NA].*:[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(\4, ":3p") ) + or tag_before(\1, "_ni_") or value(<1, "|et|ou|")) and morph(\4, ":3p") ) -4>> =suggVerb(\4, ":3s") # Conjugaison erronée. Accord avec “\1 \2…”. Le verbe devrait être à la 3ᵉ personne du singulier. TEST: La {{N.S.A.}} {{espionneras}} toujours tout le monde TEST: La suspicion envers les élus {{accroissaient}}… ->> accroissait TEST: Le chien n’{{es}} pas mort. @@ -24645,10 +25006,21 @@ TEST: Les résultats d’une des membres étaient particulièrement notables. TEST: un des hommes qui vient. TEST: une des dames qui se sentent mal à l’aise dans cet avion est venue nous trouver. TEST: l’un des chants les plus diffusés pendant la Révolution culturelle + +__conj_ce_que__ + ce [que|qu’] [je|tu|il|elle|on|nous|vous|ils|elles|iel|iels] @:V[123].*:[123][sp] @:V¬:(?:G|P|Q|M|Y|3s) + <<- /conj/ not (morph(<1, ":R") and morph(\-1, ":3p")) + --1>> =suggVerb(\-1, ":3s") # Conjugaison erronée. Accord avec “\1 \2 \3 \4…”. Le verbe devrait être à la 3ᵉ personne du singulier. + +TEST: ce qu’ils font me {{donnent}} la nausée. ->> donne +TEST: tu ne sais pas, mais ce que tu fais {{deviens}} plus facile ->> devient +TEST: ceux contre ce que nous faisons deviennent hargneux. +TEST: ce qu’elles accomplissent est formidable. + ## 3pl __conj_elles__ elles @:V¬:(?:3p|P|G|M|A.*:f:p) <<- /conj/ not morph(<1, ":R") and not (morph(\2, ":Q") and morph(<1, ":V0.*:3p")) @@ -24836,18 +25208,18 @@ TEST: on va tous manger au resto. TEST: elles vont toutes aller faire un tour __conj_det_plur_nom__ - [ces|mes|tes|ses|nos|vos|leurs|quelques] @:[NA].*:[pi] @:V¬:(?:[13]p|P|Y|G|M|A.*:e:[pi]) + [ces|mes|tes|ses|nos|vos|leurs|quelques|maints] @:[NA].*:[pi] @:V¬:(?:[13]p|P|Y|G|M|A.*:e:[pi]) <<- /conj/ morph(<1, ":Cs||>,") and not( morph(\3, ":3s") and before("(?i)\\b(?:l[ea] |l’|une? |ce(?:tte|t|) |[mts](?:on|a) |[nv]otre ).+ entre .+ et ") ) >>> <<- /conj/ not checkAgreement(\2, \3) -3>> =suggVerb(\3, ":3p") # Conjugaison erronée. Accord avec “\1 \2…”. Le verbe devrait être à la 3ᵉ personne du pluriel. <<- /conj/ __else__ and isAmbiguousAndWrong(\2, \3, ":p", ":3p") -3>> =suggVerb(\3, ":3p", suggPlur) # Accord avec « \1 \2… » incorrect. Conjugaison erronée ou accord nom/adjectif incorrect. - [ces|mes|tes|ses|nos|vos|leurs|quelques] @:[NA].*:[pi] qui @:V¬:(?:[13]p|P|Y|G|M|A.*:e:[pi]) + [ces|mes|tes|ses|nos|vos|leurs|quelques|maints] @:[NA].*:[pi] qui @:V¬:(?:[13]p|P|Y|G|M|A.*:e:[pi]) <<- /conj/ morph(<1, ":Cs||>,") and not( morph(\4, ":3s") and before("(?i)\\b(?:l[ea] |l’|une? |ce(?:tte|t|) |[mts](?:on|a) |[nv]otre ).+ entre .+ et ") ) -4>> =suggVerb(\4, ":3p") # Conjugaison erronée. Accord avec “\1 \2 \3…”. Le verbe devrait être à la 3ᵉ personne du pluriel. TEST: Ses « chiens » {{coure}} sur ma pelouse. @@ -24921,11 +25293,11 @@ TEST: certaines femmes {{danse}} beaucoup TEST: tu sais, certaines danses {{dérive}} d’autres TEST: certaines demandes qui {{donne}} le tournis. TEST: plusieurs personnes {{devienne}} des robots TEST: plusieurs pressions qui ne {{donne}} pas les résultats attendus. -TEST: les invités que tu as servis {{outrepasse}} leur droit +TEST: les malades que tu as servis {{outrepasse}} leur droit TEST: l’écart entre les riches et les pauvres n’était pas si grand. TEST: Les grands hommes politiques TEST: les charmantes petites mines de toutes les jeunes filles TEST: Les pauvres petites dames sont folles TEST: Sauf que l’un comme l’autre avaient dû y renoncer. @@ -24954,11 +25326,11 @@ #### NOMS PROPRES # 3sg __conj_nom_propre__ [|,|(] ~^[A-ZÉÈ] @:[123][sp]¬:(?:G|3s|3p!|P|M|A.*:[si]|N.*:m:s) - <<- /conj/ not tag(\2, "enum") and morph(\2, ":M") + <<- /conj/ not tag(\2, "_enum_") and morph(\2, ":M") -3>> =suggVerb(\3, ":3s") # Conjugaison erronée. Accord avec “\2”. Le verbe devrait être à la 3ᵉ personne du singulier. TEST: Marc {{arrives}} demain. TEST: Paul ne {{viens}} pas demain. TEST: Marc Aurèle {{étaient}} l’empereur des Romains. (Pas de trait d’union sur Marc Aurèle.) @@ -25006,15 +25378,15 @@ !! !! __conj_que_où_comment_verbe_sujet_sing__ [que|qu’|où|comment|combien|dont|quand|pourquoi] @:[123][sp]¬:(?:3s|G|W|3p!) [un|une|ce|cet|cette|mon|ton|son|ma|ta|sa|notre|votre] *WORD - <<- /conj/ not value(\4, "|plupart|majorité|groupe|") and not tag(\4, "enum") and not (value(>1, "|et|ou|") and morph(>2, ":D")) + <<- /conj/ not value(\4, "|plupart|majorité|groupe|") and not tag(\4, "_enum_") and not (value(>1, "|et|ou|") and morph(>2, ":D")) -2>> =suggVerb(\2, ":3s") # Conjugaison erronée. Accord avec “\3 \4…”. Le verbe devrait être à la 3ᵉ personne du singulier. [que|qu’|où|comment|combien|dont|quand|pourquoi] @:[123][sp]¬:(?:3s|G|W|3p!) [le|la|l’|leur] *WORD - <<- /conj/ not value(\4, "|plupart|majorité|groupe|") and not tag(\4, "enum") and not (value(>1, "|et|ou|") and morph(>2, ":D")) + <<- /conj/ not value(\4, "|plupart|majorité|groupe|") and not tag(\4, "_enum_") and not (value(>1, "|et|ou|") and morph(>2, ":D")) and not (morph(\4, ":Y") and morph(\2, ">(?:pouvoir|vouloir|devoir)")) -2>> =suggVerb(\2, ":3s") # Conjugaison erronée. Accord avec “\3 \4…”. Le verbe devrait être à la 3ᵉ personne du singulier. TEST: les possibilités qu’{{offrent}} le chien TEST: les possibilités que {{donnent}} le chien. @@ -25075,11 +25447,11 @@ __conj_quel_quelle_que_3sg__ [quel|quelle] [que|qu’] >être [le|la|l’|ce|cet|cette|mon|ton|son|ma|ta|sa|notre|votre|leur] *WORD <<- /conj/ morph(\3, ":V0e", ":3s") -3>> =suggVerb(\3, ":3s") # Conjugaison erronée. Accord avec “\4 \5”. Mettez “être” à la 3ᵉ personne du singulier. [quels|quelles] [que|qu’] >être [le|la|l’|ce|cet|cette|mon|ton|son|ma|ta|sa|notre|votre|leur] *WORD - <<- /conj/ not ( morph(\3, ":3p") and (value(>1, "|et|") or tag(\5, "enum")) ) + <<- /conj/ not ( morph(\3, ":3p") and (value(>1, "|et|") or tag(\5, "_enum_")) ) -3>> =suggVerb(\3, ":3s") # Conjugaison erronée. Accord avec “\4 \5”. Mettez “être” à la 3ᵉ personne du singulier. <<- /conj/ __also__ -1>> =\1[:-1] # Accord avec “\4 \5”. Utilisez le singulier. TEST: Quel que {{soient}} son passe-temps, il y consacre trop de temps. TEST: {{Quels}} que {{soient}} le feu utilisé. @@ -25461,11 +25833,11 @@ !! # Règles casse-gueule, prudence… __conj_nom_propre_virgule__ - $:M , @:3s¬:[NAGEM] [|,] + $:M , @:3s¬:[NAGEM] [|,|)] <<- /conj/ space_after(\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). @@ -25501,11 +25873,11 @@ TEST: l’Angola, Cuba et l’Afrique du Sud signent à New York, sous l’égide des Soviétiques et des Américains, un accord aboutissant au retrait des troupes cubaines d’Angola. TEST: L’amour, expliqua la femme. __conj_det_nom_plur_virgule__ - [les|ces|mes|tes|ses|plusieurs|quelques|certains|certaines] @:[NA].*:[pi] , @:3p¬:[NAGEM] [|,] + [les|ces|mes|tes|ses|plusieurs|quelques|certains|certaines] @:[NA].*:[pi] , @:3p¬:[NAGEM] [|,|)] <<- /conj/ space_after(\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] @:[NA].*:[pi] , @:3p¬:[NAGEM] @:A.*:[pi] <<- /conj/ space_after(\3, 0, 0) and morph(\5, ">(?:être|devenir|redevenir|sembler|para[iî]tre)/") Index: gc_lang/fr/webext/background.js ================================================================== --- gc_lang/fr/webext/background.js +++ gc_lang/fr/webext/background.js @@ -289,10 +289,14 @@ let iPortId = xPort.sender.tab.id; // identifier for the port: each port can be found at dConnx[iPortId] dConnx.set(iPortId, xPort); xPort.onMessage.addListener(function (oRequest) { let {sCommand, oParam, oInfo} = oRequest; switch (sCommand) { + case "ping": + //console.log("[background] ping"); + xPort.postMessage({sActionDone: "ping", result: null, bInfo: null, bEnd: true, bError: false}); + break; case "parse": case "parseAndSpellcheck": case "parseAndSpellcheck1": case "parseFull": case "getListOfTokens": Index: gc_lang/fr/webext/content_scripts/init.js ================================================================== --- gc_lang/fr/webext/content_scripts/init.js +++ gc_lang/fr/webext/content_scripts/init.js @@ -278,12 +278,28 @@ /* Connexion to the background */ const oGrammalecteBackgroundPort = { + + bConnected: false, xConnect: browser.runtime.connect({name: "content-script port"}), + + start: function () { + //console.log("[Grammalecte] background port: start."); + this.listen(); + this.listen2(); + //this.ping(); + }, + + restart: function () { + console.log("[Grammalecte] try to reconnect to the background.") + this.xConnect = browser.runtime.connect({name: "content-script port"}); + this.listen(); + this.ping(); + }, /* Send messages to the background object { sCommand: the action to perform @@ -291,16 +307,22 @@ oInfo: all kind of informations that needs to be sent back (usually to know where to use the result) } */ send: function (sCommand, oParam={}, oInfo={}) { - if (this.xConnect) { + if (this.bConnected) { this.xConnect.postMessage({ sCommand: sCommand, oParam: oParam, oInfo: oInfo }); } else { - oGrammalecte.showMessage("Erreur. La connexion vers le correcteur grammatical est perdue."); + oGrammalecte.showMessage("Erreur. La connexion vers le correcteur grammatical est perdue.", + "Tentative de reconnexion. Fermer la fenêtre et relancez. Si ça ne fonctionne pas, il sera nécessaire de recharger la page."); + this.restart(); } }, + + ping: function () { + this.xConnect.postMessage({ sCommand: "ping", oParam: {}, oInfo: {} }); + }, parseAndSpellcheck: function (sText, sDestination) { this.send("parseAndSpellcheck", { sText: sText, sCountry: "FR", bDebug: false, bContext: false }, { sDestination: sDestination }); }, @@ -347,21 +369,26 @@ } else if (browser.runtime.lastError) { sError = browser.runtime.lastError.message; } console.log("[Grammalecte] Connection to the background script has been lost. Error :", sError); - this.xConnect = browser.runtime.connect({name: "content-script port"}); - this.listen(); + this.bConnected = false; + this.restart(); }.bind(this)); this.xConnect.onMessage.addListener(function (oMessage) { let { sActionDone, result, oInfo, bEnd, bError } = oMessage; switch (sActionDone) { case "init": + this.bConnected = true; oGrammalecte.sExtensionUrl = oMessage.sUrl; oGrammalecte.listen(); oGrammalecte.createButton(); break; + case "ping": + console.log("[Grammalecte] Connection to background done."); + this.bConnected = true; + break; case "parseAndSpellcheck": if (oInfo.sDestination == "__GrammalectePanel__") { if (!bEnd) { oGrammalecte.oGCPanel.addParagraphResult(result); } else { @@ -438,13 +465,13 @@ } else { oGrammalecte.showMessage("Erreur. Le cadre sur lequel vous avez cliqué n’a pas pu être identifié. Sélectionnez le texte à corriger et relancez le correcteur via le menu contextuel."); } break; default: - console.log("[Content script] Unknown command: " + sActionDone); + console.log("[Grammalecte] Content-script. Unknown command: ", sActionDone); } - }); + }.bind(this)); }, /* Other messages from background */ @@ -462,18 +489,18 @@ } else { oGrammalecte.startGCPanel(oGrammalecte.getPageText()); } break; default: - console.log("[Content script] Unknown command: " + sActionDone); + console.log("[Grammalecte] Content-script. Unknown command: ", sActionRequest); } }); } } -oGrammalecteBackgroundPort.listen() -oGrammalecteBackgroundPort.listen2() + +oGrammalecteBackgroundPort.start(); /* Callable API for the webpage. Index: gc_lang/fr/webext/content_scripts/panel.css ================================================================== --- gc_lang/fr/webext/content_scripts/panel.css +++ gc_lang/fr/webext/content_scripts/panel.css @@ -188,14 +188,10 @@ color: hsl(30, 60%, 95%); font-size: 14px; font-weight: bold; cursor: pointer; } -div#grammalecte_panel_message_close_button:hover { - background-color: hsl(0, 100%, 60%); - color: hsl(0, 50%, 100%); -} div#grammalecte_panel_message_close_button { float: right; margin: 0 0 10px 10px; padding: 2px 5px; border-radius: 5px; @@ -209,17 +205,15 @@ background-color: hsl(0, 100%, 60%); color: hsl(0, 50%, 100%); } div.grammalecte_panel_flow_message { - margin: 10px; - padding: 10px; - border-radius: 5px; - background-color: hsl(300, 20%, 50%); - color: hsl(300, 20%, 96%); + padding: 12px; + background-color: hsl(210, 40%, 82%); + color: hsl(210, 20%, 30%); font-family: "Trebuchet MS", "Fira Sans", "Ubuntu Condensed", "Liberation Sans", sans-serif; - font-size: 16px; + font-size: 14px; } Index: gc_lang/fr/webext/content_scripts/panel_gc.css ================================================================== --- gc_lang/fr/webext/content_scripts/panel_gc.css +++ gc_lang/fr/webext/content_scripts/panel_gc.css @@ -208,17 +208,16 @@ /* ERRORS */ mark.grammalecte_error, -mark.grammalecte_spellerror, -mark.grammalecte_maybe_spellerror { +mark.grammalecte_spellerror { margin: 0; padding: 0; cursor: pointer; border-radius: 2px; - background-color: hsl(240, 0%, 80%); /* default color */ + background-color: hsl(240, 0%, 85%); /* default color */ color: hsl(240, 0%, 10%); /* default color */ border-bottom: solid 2px hsl(0, 0%, 50%); /* default color */ font-size: 14px; font-style: normal; font-family : "Courier New", Courier, "Lucida Sans Typewriter", "Lucida Typewriter", monospace; @@ -226,24 +225,18 @@ text-shadow: unset; text-align: left; hyphens: none; } mark.grammalecte_error:hover, -mark.grammalecte_spellerror:hover, -mark.grammalecte_maybe_spellerror:hover { +mark.grammalecte_spellerror:hover { opacity: .9; box-shadow: 0px 0px 0px 3px hsla(0, 0%, 50%, 0.25); } mark.grammalecte_spellerror { background-color: hsl(0, 100%, 95%); color: hsl(0, 80%, 20%); - border-bottom: solid 2px hsl(0, 100%, 50%); -} -mark.grammalecte_maybe_spellerror { - background-color: hsla(0, 100%, 100%, 0); - color: hsl(0, 80%, 0%); border-bottom: solid 2px hsl(0, 100%, 50%); } mark.grammalecte_error_corrected, Index: graphspell-js/char_player.js ================================================================== --- graphspell-js/char_player.js +++ graphspell-js/char_player.js @@ -20,19 +20,20 @@ } return sNewWord.normalize("NFC"); }, _xTransCharsForSimplification: new Map([ - ['à', 'a'], ['é', 'e'], ['î', 'i'], ['ô', 'o'], ['û', 'u'], ['ÿ', 'i'], ['y', 'i'], - ['â', 'a'], ['è', 'e'], ['ï', 'i'], ['ö', 'o'], ['ù', 'u'], ['ŷ', 'i'], - ['ä', 'a'], ['ê', 'e'], ['í', 'i'], ['ó', 'o'], ['ü', 'u'], ['ý', 'i'], - ['á', 'a'], ['ë', 'e'], ['ì', 'i'], ['ò', 'o'], ['ú', 'u'], ['ỳ', 'i'], - ['ā', 'a'], ['ē', 'e'], ['ī', 'i'], ['ō', 'o'], ['ū', 'u'], ['ȳ', 'i'], + ['à', 'a'], ['é', 'é'], ['î', 'i'], ['ô', 'o'], ['û', 'u'], ['ÿ', 'i'], ['y', 'i'], + ['â', 'a'], ['è', 'é'], ['ï', 'i'], ['ö', 'o'], ['ù', 'u'], ['ŷ', 'i'], + ['ä', 'a'], ['ê', 'é'], ['í', 'i'], ['ó', 'o'], ['ü', 'u'], ['ý', 'i'], + ['á', 'a'], ['ë', 'é'], ['ì', 'i'], ['ò', 'o'], ['ú', 'u'], ['ỳ', 'i'], + ['ā', 'a'], ['ē', 'é'], ['ī', 'i'], ['ō', 'o'], ['ū', 'u'], ['ȳ', 'i'], ['ç', 'c'], ['ñ', 'n'], ['k', 'q'], ['w', 'v'], ['œ', 'oe'], ['æ', 'ae'], ['ſ', 's'], ['ffi', 'ffi'], ['ffl', 'ffl'], ['ff', 'ff'], ['ſt', 'ft'], ['fi', 'fi'], ['fl', 'fl'], ['st', 'st'], - ["⁰", "0"], ["¹", "1"], ["²", "2"], ["³", "3"], ["⁴", "4"], ["⁵", "5"], ["⁶", "6"], ["⁷", "7"], ["⁸", "8"], ["⁹", "9"] + ["⁰", "0"], ["¹", "1"], ["²", "2"], ["³", "3"], ["⁴", "4"], ["⁵", "5"], ["⁶", "6"], ["⁷", "7"], ["⁸", "8"], ["⁹", "9"], + ["₀", "0"], ["₁", "1"], ["₂", "2"], ["₃", "3"], ["₄", "4"], ["₅", "5"], ["₆", "6"], ["₇", "7"], ["₈", "8"], ["₉", "9"] ]), simplifyWord: function (sWord) { // word simplication before calculating distance between words sWord = sWord.toLowerCase(); Index: graphspell-js/ibdawg.js ================================================================== --- graphspell-js/ibdawg.js +++ graphspell-js/ibdawg.js @@ -42,10 +42,13 @@ } this.aAllSugg.add(sSugg); if (!this.aSugg.has(sSugg)) { let nDist = str_transform.distanceDamerauLevenshtein(this.sSimplifiedWord, char_player.simplifyWord(sSugg)); if (nDist <= this.nDistLimit) { + if (sSugg.includes(" ")) { // add 1 to distance for split suggestions + nDist += 1; + } if (!this.dSugg.has(nDist)) { this.dSugg.set(nDist, []); } this.dSugg.get(nDist).push(sSugg); this.aSugg.add(sSugg); Index: graphspell/char_player.py ================================================================== --- graphspell/char_player.py +++ graphspell/char_player.py @@ -15,19 +15,20 @@ "nomalization NFC and removing ligatures" return unicodedata.normalize("NFC", sWord.translate(_xTransCharsForSpelling)) _xTransCharsForSimplification = str.maketrans({ - 'à': 'a', 'é': 'e', 'î': 'i', 'ô': 'o', 'û': 'u', 'ÿ': 'i', "y": "i", - 'â': 'a', 'è': 'e', 'ï': 'i', 'ö': 'o', 'ù': 'u', 'ŷ': 'i', - 'ä': 'a', 'ê': 'e', 'í': 'i', 'ó': 'o', 'ü': 'u', 'ý': 'i', - 'á': 'a', 'ë': 'e', 'ì': 'i', 'ò': 'o', 'ú': 'u', 'ỳ': 'i', - 'ā': 'a', 'ē': 'e', 'ī': 'i', 'ō': 'o', 'ū': 'u', 'ȳ': 'i', + 'à': 'a', 'é': 'é', 'î': 'i', 'ô': 'o', 'û': 'u', 'ÿ': 'i', "y": "i", + 'â': 'a', 'è': 'é', 'ï': 'i', 'ö': 'o', 'ù': 'u', 'ŷ': 'i', + 'ä': 'a', 'ê': 'é', 'í': 'i', 'ó': 'o', 'ü': 'u', 'ý': 'i', + 'á': 'a', 'ë': 'é', 'ì': 'i', 'ò': 'o', 'ú': 'u', 'ỳ': 'i', + 'ā': 'a', 'ē': 'é', 'ī': 'i', 'ō': 'o', 'ū': 'u', 'ȳ': 'i', 'ç': 'c', 'ñ': 'n', 'k': 'q', 'w': 'v', 'œ': 'oe', 'æ': 'ae', 'ſ': 's', 'ffi': 'ffi', 'ffl': 'ffl', 'ff': 'ff', 'ſt': 'ft', 'fi': 'fi', 'fl': 'fl', 'st': 'st', - "⁰": "0", "¹": "1", "²": "2", "³": "3", "⁴": "4", "⁵": "5", "⁶": "6", "⁷": "7", "⁸": "8", "⁹": "9" + "⁰": "0", "¹": "1", "²": "2", "³": "3", "⁴": "4", "⁵": "5", "⁶": "6", "⁷": "7", "⁸": "8", "⁹": "9", + "₀": "0", "₁": "1", "₂": "2", "₃": "3", "₄": "4", "₅": "5", "₆": "6", "₇": "7", "₈": "8", "₉": "9" }) def simplifyWord (sWord): "word simplication before calculating distance between words" sWord = sWord.lower().translate(_xTransCharsForSimplification) Index: graphspell/ibdawg.py ================================================================== --- graphspell/ibdawg.py +++ graphspell/ibdawg.py @@ -55,10 +55,12 @@ return self.aAllSugg.add(sSugg) if sSugg not in self.aSugg: nDist = st.distanceDamerauLevenshtein(self.sSimplifiedWord, cp.simplifyWord(sSugg)) if nDist <= self.nDistLimit: + if " " in sSugg: + nDist += 1 if nDist not in self.dSugg: self.dSugg[nDist] = [] self.dSugg[nDist].append(sSugg) self.aSugg.add(sSugg) if nDist < self.nMinDist: