Index: gc_lang/fr/rules.grx ================================================================== --- gc_lang/fr/rules.grx +++ gc_lang/fr/rules.grx @@ -47,11 +47,11 @@ # http://fr.wikipedia.org/wiki/Wikip%C3%A9dia:Fautes_d%27orthographe/Courantes !! !! -!! Options +!! Options !! !! !! OPTGROUP/basic: typo apos, esp tab, nbsp unit, tu maj, num virg, nf chim, ocr mapos, liga OPTGROUP/gramm: conf sgpl gn @@ -198,11 +198,11 @@ !! !! -!! Définitions pour les regex +!! Définitions pour les regex !! !! !! # REGEX DEF: avoir [aeo]\w* @@ -244,11 +244,11 @@ !! !! !! !! !! -!! PASSE 0: PARAGRAPHE PAR PARAGRAPHE +!! PASSE 0: PARAGRAPHE PAR PARAGRAPHE !! !! !! !! !! !! @@ -270,11 +270,11 @@ !! !! -!!! Espaces & tabulations +!!! Espaces & tabulations !! !! !! # Espaces surnuméraires # Note : les tabulations ne sont pas soulignées dans LibreOffice. Mais l’erreur est bien présente. @@ -379,11 +379,11 @@ # !!! !!! -!!! Processeur: efface les ponctuations gênantes (URL, sigles, abréviations, IP, heures, etc.) +!!! Processeur: efface les ponctuations gênantes (URL, sigles, abréviations, IP, heures, etc.) !! !!! !!! # e-mail __(p_email)__ @@ -527,11 +527,11 @@ !!! !!! -!!! Processeur: balises HTML et LaTeX +!!! Processeur: balises HTML et LaTeX !! !!! !!! # HTML __/html(p_html_amp_xxx)__ &[a-zA-Z]+; <<- ~>> _ @@ -555,11 +555,11 @@ !! !! -!!!! Écritures épicènes dystypographiques +!!!! Écritures épicènes dystypographiques !! !! !! # (attention aux modifs: brainfuck d’intensité non négligeable) # La désambiguïsation est faite lors de la deuxième passe @@ -654,11 +654,11 @@ TEST: il faut en parler à l’{{auteur(e)}} et à son agent. !! !! -!!!! Majuscules manquantes +!!!! Majuscules manquantes !! !! !! # Majuscules après un point __[s]/maj(majuscule_après_point)__ @@ -677,11 +677,11 @@ TEST: {{je}} suis disponible quand tu veux. Mais pas aujourd’hui. !! !! -!!!! Virgules +!!!! Virgules !! !! !! # virgules manquantes __[i>/virg(virgule_manquante_avant_etc)__ {w_1}( etc[.]) @@$ <<- -1>> , etc. # Avant « etc. », il faut mettre une virgule. @@ -735,11 +735,11 @@ # -1>> \1.|\1…|\1 !|\1 ?|\1 :|\1 ;|\1, # Il manque une ponctuation finale. !! !! -!!!! Espaces manquants +!!!! Espaces manquants !! !! !! __/typo(typo_espace_manquant_après1)__ ({w1})[,:]({w_1}) @@0,$ <<- not \1.isdigit() -2>> " \2" # Il manque un espace. @@ -764,11 +764,11 @@ TEST: pic.twitter.com/PICNAME !! !! -!!!! Points +!!!! Points !! !! !! # Points superflus __[i>/typo(typo_et_cetera)__ etc(?:[.]{3,5}|…) <<- ->> etc. # Un seul point après « etc. » @@ -803,11 +803,11 @@ !! !! -!!!! Tirets +!!!! Tirets !! !! !! # Tirets, énumérations et dialogues __/typo(typo_tiret_début_ligne)__ ^[-_][  ] <<- ->> "— |– " # Dialogues et énumérations : un tiret cadratin ou demi-cadratin, suivi d’un espace insécable, est requis. @@ -826,16 +826,16 @@ TEST: « {{- }}Viens ! On va en finir avec cette affaire, sale fils de pute. ->> "— |– " !! !! -!!!! Ponctuations redondantes +!!!! Ponctuations redondantes !! !! !! # virgules et points -__/typo(typo_virgules_points)__ +__/typo(typo_virgules_points)__ ,[.,]{2,} <<- ->> =\0.replace(",", ".").replace("...", "…") # Erreur de numérisation ? Virgules au lieu de points ? TEST: Ah !{{,.,}} et en quoi consistait le festin ? @@ -874,11 +874,11 @@ TEST: {{» }}C’est ce qu’on croit savoir. ->> "» |« " !! !! -!!!! Signes typographiques +!!!! Signes typographiques !! !! !! __/typo(typo_signe_multiplication)__ (\d+) ?[x*] ?(\d+) @@0,$ <<- not \0.startswith("0x") ->> \1 × \2 # Signe de multiplication typographique. @@ -903,11 +903,11 @@ TEST: __liga__ une belle {{fi}}gure ->> fi !! !! -!!!! Apostrophes +!!!! Apostrophes !! !! !! ## Apostrophe typographique __[i>/apos(apostrophe_typographique)__ ([ldsncjmç]|jusqu|lorsqu|aujourd|presqu|quelqu|puisqu|qu|prud|entr)['´‘′`](?=[\w"«]) @@0 <<- ->> \1’ # Apostrophe typographique. @@ -957,11 +957,11 @@ TEST: Je {{n }}ai pas retrouvé l’ambiance de mes années de lycée. ->> n’ !! !! -!!!! Guillemets typographiques +!!!! Guillemets typographiques !! !! !! __/typo(typo_guillemets_typographiques_doubles_ouvrants)__ "(?=\w) @@ -999,11 +999,11 @@ TEST: J’en ai '''marre''' (syntaxe wiki). !! !! -!!!! Élisions +!!!! Élisions !! !! !! __[i]/typo(typo_élision_déterminants)__ (l[ea] |de )([aâeéêiîoôu]\w+) @@0,$ @@ -1051,11 +1051,11 @@ TEST: {{ce}} animal est dangereux !! !! -!!!! Divers +!!!! Divers !! !! !! ## NF (memo: don’t use flag i) __[s]/nf(nf_norme_française)__ @@ -1074,11 +1074,11 @@ TEST: __chim__ les molécules {{CaCO3}} et {{H2O}}… !! !! -!!!! Cohérence des guillemets +!!!! Cohérence des guillemets !! !! !! __/typo(typo_cohérence_guillemets_chevrons_ouvrants)__ («)[^»“]+?(”) @@0,$ @@ -1132,11 +1132,11 @@ TEST: « J’en suis “malade”. » !! !! -!!!! Espaces insécables avant unités de mesure +!!!! Espaces insécables avant unités de mesure !! !! !! __[s]/unit(unit_nbsp_avant_unités1)__ ((\d+(?:,\d+[⁰¹²³⁴⁵⁶⁷⁸⁹]?|[⁰¹²³⁴⁵⁶⁷⁸⁹]|)) ?)(?:[kcmµn]?(?:[slgJKΩ]|m[²³]?|Wh?|Hz|dB)|[%‰€$£¥Åℓhj]|min|°C|℃)(?![’']) @@0,0 @@ -1170,11 +1170,11 @@ TEST: je veux 200 euros. !! !! -!!!! Grands nombres +!!!! Grands nombres !! !! !! __[s]/num(num_grand_nombre_soudé)__ \d\d\d\d+ @@ -1219,11 +1219,11 @@ TEST: Il a perdu {{20 000}} euros à la Bourse en un seul mois. !! !! -!!!! Dates +!!!! Dates !! !! !! __[i]/date(date_nombres)__ (?> _ # Cette date est invalide. @@ -1236,11 +1236,11 @@ TEST: 12-12-2012 !! !! -!!!! Redondances +!!!! Redondances !! !! !! __[i]/redon1(redondances_paragraphe)__ ({w_4})[  ,.;!?:].*[  ](\1) @@0,$ <<- not morph(\1, ":(?:G|V0)|>(?:t(?:antôt|emps|rès)|loin|souvent|parfois|quelquefois|côte|petit|même)/", False) and not \1[0].isupper() @@ -1253,11 +1253,11 @@ !!! !!! -!!! Processeur: Dernier nettoyage avant coupure du paragraphe en phrases +!!! Processeur: Dernier nettoyage avant coupure du paragraphe en phrases !! !!! !!! # Trait d’union conditionnel (u00AD) __(p_trait_union_conditionnel1)__ \w+‑\w+‑\w+ <<- ~>> =\0.replace("‑", "") @@ -1268,11 +1268,11 @@ __(p_fin_dialogue2)__ ([?!…][?!…  ]*)[ "'”» ]*[a-zéèêîô] @@0 <<- ~1>> , TEST: « Je suis donc perdu ? », dit Paul. TEST: “C’est bon !”, croit savoir Marie. TEST: “Parce que… ?” finit par demander Paul. -TEST: « Dans quel pays sommes-nous ? » demanda un manifestant. +TEST: « Dans quel pays sommes-nous ? » demanda un manifestant. !! !! !! @@ -1291,11 +1291,11 @@ !! !! !! !! !! -!! PASSE 1: PHRASE PAR PHRASE +!! PASSE 1: PHRASE PAR PHRASE !! !! !! !! !! !! @@ -1317,11 +1317,11 @@ [++] -!!!! Doublons (casse identique) +!!!! Doublons (casse identique) !! __[s](doublon)__ ({w1}) {1,3}\1 @@0 <<- not re.search("(?i)^([nv]ous|faire|en|la|lui|donnant|œuvre|h[éoa]|hou|olé|joli|Bora|couvent|dément|sapiens|très|vroum|[0-9]+)$", \1) and not (re.search("^(?:est|une?)$", \1) and before("[’']$")) @@ -1329,11 +1329,11 @@ ->> \1 # Doublon. TEST: Il y a un {{doublon doublon}}. -!!!! Nombres: typographie +!!!! Nombres: typographie !! #(\d\d\d\d)-(\d\d\d\d) <<- ->> \1–\2 # Ne pas séparer deux dates par un trait d’union, mais par un tiret demi-cadratin. __[s]/num(num_lettre_O_zéro1)__ [\dO]+[O][\dO]+ <<- not option("ocr") ->> =\0.replace("O", "0") # S’il s’agit d’un nombre, utilisez le chiffre « 0 » plutôt que la lettre « O ». __[s]/num(num_lettre_O_zéro2)__ [1-9]O <<- not option("ocr") ->> =\0.replace("O", "0") # S’il s’agit d’un nombre, utilisez le chiffre « 0 » plutôt que la lettre « O ». @@ -1381,11 +1381,11 @@ TEST: Le {{XXIème}} siècle. ->> XXIᵉ TEST: le {{XXè}} siècle. ->> XXᵉ -!!!! Écritures épicènes invariables +!!!! Écritures épicènes invariables !! __[i](d_typo_écriture_épicène_pluriel)__ ({w_1}[éuitsrn])_(?:[nt]|)e_s @@0 <<- morphex(\1, ":[NAQ]", ":G") =>> define(\1, [":N:A:Q:e:p"]) @@ -1392,53 +1392,53 @@ __[i](d_typo_écriture_épicène_singulier)__ ({w_2}[éuitsrn])_e @@0 <<- morph(\1, ":[NAQ]", False) =>> define(\1, [":N:A:Q:e:s"]) -!!!! Dates +!!!! Dates !! __[i]/date(date_jour_mois_année)__ - (\d\d?) (janvier|février|ma(?:rs|i)|a(?:vril|o[ûu]t)|jui(?:n|llet)|septembre|octobre|novembre|décembre) (\d\d\d+) @@0,w,$ + (\d\d?) (janvier|février|ma(?:rs|i)|a(?:vril|o[ûu]t)|jui(?:n|llet)|septembre|octobre|novembre|décembre) (\d\d\d+) @@0,w,$ <<- not checkDateWithString(\1, \2, \3) ->> _ # Cette date est invalide. TEST: {{29 février 2011}} __[i]/date(date_journée_jour_mois_année1)__ - (lundi|m(?:ardi|ercredi)|jeudi|vendredi|samedi|dimanche),? (?:le |)(\d\d?)-(\d\d?)-(\d\d+) @@0,w,w,$ + (lundi|m(?:ardi|ercredi)|jeudi|vendredi|samedi|dimanche),? (?:le |)(\d\d?)-(\d\d?)-(\d\d+) @@0,w,w,$ <<- not after(r"^ +av(?:ant|) +J(?:C|ésus-Christ)") and not checkDay(\1, \2, \3, \4) -1>> =getDay(\2, \3, \4) # Le jour de la date suivante est incorrect. TEST: {{mercredi}}, le 10-06-2014 ->> mardi __[i]/date(date_journée_jour_mois_année2)__ - (lundi|m(?:ardi|ercredi)|jeudi|vendredi|samedi|dimanche),? (?:le |)(\d\d?) (janvier|février|ma(?:rs|i)|a(?:vril|o[ûu]t)|jui(?:n|llet)|septembre|octobre|novembre|décembre) (\d\d+) @@0,w,w,$ + (lundi|m(?:ardi|ercredi)|jeudi|vendredi|samedi|dimanche),? (?:le |)(\d\d?) (janvier|février|ma(?:rs|i)|a(?:vril|o[ûu]t)|jui(?:n|llet)|septembre|octobre|novembre|décembre) (\d\d+) @@0,w,w,$ <<- not after(r"^ +av(?:ant|) +J(?:C|ésus-Christ)") and not checkDayWithString(\1, \2, \3, \4) -1>> =getDayWithString(\2, \3, \4) # Le jour de la date suivante est incorrect. TEST: {{mercredi}}, le 10 juin 2014 ->> mardi TEST: {{lundi}}, 18 août 1912 ->> dimanche TEST: lundi, 18 août 1912 avant Jésus-Christ (date imaginaire) __[i]/date(date_mois_31)__ 31 (avril|juin|septembre|novembre) @@3 - <<- ->> 30 \1 # Cette date est invalide. Il n’y a que 30 jours en \1. + <<- ->> 30 \1 # Cette date est invalide. Il n’y a que 30 jours en \1. TEST: le {{31 avril}} __[i]/date(date_février)__ 3[01] février - <<- ->> 28 février|29 février # Cette date est invalide. Il n’y a que 28 ou 29 jours en février. + <<- ->> 28 février|29 février # Cette date est invalide. Il n’y a que 28 ou 29 jours en février. TEST: le {{30 février}} !!! !!! -!!! Processeur: épuration des signes inutiles et quelques simplifications +!!! Processeur: épuration des signes inutiles et quelques simplifications !! !!! !!! # fin de phrase __(p_fin_de_phrase)__ [.?!:;…][ .?!… »”")]*$ <<- ~>> * @@ -1465,11 +1465,11 @@ # faux positifs avec adverbes de négation __[i](p_pas_mal)__ pas mal <<- not morph(word(-1), ":D", False) ~>> * __[i](p_pas_assez)__ pas assez ({w_2}) @@$ <<- morph(\1, ":A", False) and not morph(word(-1), ":D", False) ~>> * # faux positifs avec «à chez» -__[i](p_de_chez_à_chez_pronom)__ de chez \w+ (?:à|jusqu à) chez (?:moi|toi|lui|elles?|eux|nous|vous) <<- ~>> * +__[i](p_de_chez_à_chez_pronom)__ de chez \w+ (?:à|jusqu à) chez (?:moi|toi|lui|elles?|eux|nous|vous) <<- ~>> * __[i](p_de_chez)__ (jusqu à|de) chez @@0 <<- ~1>> * # faux positifs __[i](p_en_tout_et_pour_tout)__ en tout et pour tout <<- ~>> * __[i](p_au_sortir_de)__ au (sortir) de?s? @@3 <<- ~1>> * @@ -1504,11 +1504,11 @@ TEST: New York {{étaient}} {{devenue}} la plaque tournante de tous les trafics. !! !! -!!!! Traits d’union +!!!! Traits d’union !! !! !! __> mi-\1 # S’il s’agit d’un seul mot, il manque un trait d’union. + mi ({w2}) @@$ <<- morph(\1, ":[NAQ]", False) ->> mi-\1 # S’il s’agit d’un seul mot, il manque un trait d’union. TEST: J’ai été engagé pour un {{mi temps}}. __[i]/tu(tu_préfixe_quasi)__ - (?:l(?:es?|a|eurs?)|ce(?:tte|t|s|)|des?|m(?:a|on|es)|[ts](?:es|a)) (quasi ({w1})) @@$,$ + (?:l(?:es?|a|eurs?)|ce(?:tte|t|s|)|des?|m(?:a|on|es)|[ts](?:es|a)) (quasi ({w1})) @@$,$ <<- morphex(\2, ":N", ":[AGW]") -1>> quasi-\2 # Il manque un trait d’union : « quasi » s’accroche au mot qui le suit s’il s’agit d’un nom. <<- ~1>> \2 TEST: leurs {{quasi indifférences}} @@ -1687,15 +1687,15 @@ __[i]/tu(tu_nord_sud_ouest)__ (nord|sud) ouest @@0 <<- ->> \1-ouest # Il manque un trait d’union. __[i]/tu(tu_nord_sud_est)__ (nord|sud) est @@0 <<- isEnd() ->> \1-est # Il manque un trait d’union. __[i]/tu(tu_outre_mer)__ outre mer <<- ->> outre-mer # Il manque un trait d’union. __[i]/tu(tu_ouï_dire)__ ou[iï] dire <<- morph(word(-1), ":G") ->> ouï-dire # Il manque un trait d’union. __[i]/tu(tu_par_préposition)__ - par (desso?us|devant|delà|derrière|dehors|dedans|devers) @@$ + par (desso?us|devant|delà|derrière|dehors|dedans|devers) @@$ <<- ->> par-\1 # Il manque un trait d’union. __[i]/tu(tu_par_ci_par_là)__ par ci,? par là <<- ->> par-ci par-là|par-ci, par-là # Trait(s) d’union manquant(s). __[i]/tu(tu_prêt_à_porter)__ - (prêts?) à porter @@0 + (prêts?) à porter @@0 <<- before(r"(?i)\b(?:les?|du|des|un|ces?|[mts]on) +") ->> \1-à-porter # Il manque les traits d’union. __[i]/tu(tu_plate_forme)__ plates? formes? <<- ->> plate-forme|plates-formes|plateforme|plateformes # Il manque un trait d’union. Vous pouvez aussi souder les deux mots. __[i]/tu(tu_quelques_uns_unes)__ quelques (une?s) @@$ <<- ->> quelques-\1 # Il manque un trait d’union. __[i]/tu(tu_plus_moins_values)__ (plus|moins) (values?) @@0,$ <<- ->> \1-\2 # Il manque un trait d’union. __[i]/tu(tu_rez_de_chaussée)__ rez de chaussées? <<- ->> rez-de-chaussée # Il manque un trait d’union. @@ -1715,11 +1715,11 @@ TEST: {{le}} {{bouche à oreille}} TEST: à ce {{moment là}} ->> moment-là TEST: une {{plus value}} ->> plus-value TEST: Il est {{en-dessous}} de tout. ->> en dessous TEST: Ils sont {{en-deçà}} de tout ->> en deçà -TEST: {{Là bas}}. ->> Là-bas +TEST: {{Là bas}}. ->> Là-bas TEST: {{Au dessus}} ->> Au-dessus TEST: {{ci dessus}} ->> ci-dessus TEST: {{par dessus}} ->> par-dessus TEST: {{au delà}} ->> au-delà TEST: {{ci devant}}. ->> ci-devant @@ -1807,14 +1807,14 @@ __[u]/tu(tu_Pas_de_Calais)__ Pas de Calais <<- ->> Pas-de-Calais # Il manque les traits d’union. __[u]/tu(tu_Rhône_Alpes)__ Rhône Alpes <<- ->> Rhône-Alpes # Il manque les traits d’union. __[u]/tu(tu_Saône_et_Loire)__ Saône et Loire <<- ->> Saône-et-Loire # Il manque un trait d’union. __[u]/tu(tu_Jésus_Christ)__ Jésus Christ <<- ->> Jésus-Christ # Il manque un trait d’union. __[u]/tu(tu_Jean_prénom)__ - Jean (Baptiste|Claude|François|Jacques|Louis|Luc|Marc|Marie|Michel|Paul|Philippe|Pierre) @@$ + Jean (Baptiste|Claude|François|Jacques|Louis|Luc|Marc|Marie|Michel|Paul|Philippe|Pierre) @@$ <<- ->> Jean-\1 # Il manque un trait d’union. __[u]/tu(tu_Marie_Prénom)__ - Marie (Ange|Agnès|Anne|Antoinette|Cécile|Chantal|Charlotte|Christine|Claire|Claude|Dominique|France|Françoise|Hélène|Jeanne|José|Josèphe|Line|Louise|Madeleine|Noëlle|Odile|Paule|Pierre|Rose|Thérèse) @@$ + Marie (Ange|Agnès|Anne|Antoinette|Cécile|Chantal|Charlotte|Christine|Claire|Claude|Dominique|France|Françoise|Hélène|Jeanne|José|Josèphe|Line|Louise|Madeleine|Noëlle|Odile|Paule|Pierre|Rose|Thérèse) @@$ <<- ->> Marie-\1 # Il manque un trait d’union. __[s]/tu(tu_St_Ste_Bidule)__ ((Ste?) )[A-ZÉÈÎ]\w+ @@0,0 <<- -1>> \2- # Il manque un trait d’union s’il s’agit d’une église, d’une cité, d’une communauté… S’il s’agit d’une personne, écrivez « saint(e) » sans majuscule, sans trait d’union. @@ -1916,11 +1916,11 @@ TEST: Elle y arriva {{lors qu}}’elle trouva l’astuce permettant l’ouverture de la porte. TEST: Dès lors qu’on sait comment s’y prendre, aucune raison de faillir. -!!!! Virgules +!!!! Virgules !! # Dialogues __[u]/virg(virgule_dialogue_après_nom_propre)__ ([A-ZÉÈ][\w-]+) (\w+-(?:moi|toi|l(?:ui|a|e(?:ur|s|))|nous|vous|je|tu|ils|elles)) @@0,$ <<- morphex(\1, ":M", ":G") and not morph(\2, ":N", False) and isStart() @@ -1953,21 +1953,21 @@ TEST: Il va la {{tuer}} Paul. TEST: Cependant les promesses n’engagent que ceux qui les croient, comme aimait à le dire Jacques Chirac. -!!!! Apostrophe manquante (2) +!!!! Apostrophe manquante (2) !! __/typo(typo_apostrophe_manquante_audace2)__ ^ *([LDSNCJMTÇ] )[aeéiouhAEÉIOUHyîèêôûYÎÈÊÔÛ] @@* <<- option("mapos") -1>> =\1[:-1]+"’" # Il manque peut-être une apostrophe. TEST: __mapos__ {{L }}opinion des gens, elle s’en moquait. -!!!! A / À: accentuation la préposition en début de phrase +!!!! A / À: accentuation la préposition en début de phrase !! __(?:priori|post[eé]riori|contrario|capella|fortiori)/") or (\2 == "bientôt" and isEnd()) @@ -1985,11 +1985,11 @@ TEST: A bientôt fini son devoir. TEST: A priori, nul ne peut y parvenir sans une aide extérieure. TEST: A devient notre meilleure chance d’y parvenir. -!!!! Accentuation des majuscules +!!!! Accentuation des majuscules !! __[u]/maj(maj_accents)__ E(?:tat|glise|co(?:le|nomie)|quipe|lectri(?:cité|que)|gal(?:ité|ement)|té)s? @@1 <<- ->> ="É"+\0[1:] # Accentuez les majuscules. <<- ~>> ="É"+\0[1:] @@ -1998,11 +1998,11 @@ !!! !!! -!!! Désambiguïsation +!!! Désambiguïsation !! !!! !!! # mots grammaticaux __[i](d_dans)__ @@ -2102,11 +2102,11 @@ !! !! -!!!! OCR +!!!! OCR !! !! !! # ? __> M. # M. est l’usage courant pour “Monsieur”. « Mr » est l’abréviation ancienne, française. @@ -2928,11 +2928,11 @@ #enjoindre à qqn de faire qqch !! !! -!!!! Pléonasmes +!!!! Pléonasmes !! !! !! __[i]/pleo(pleo_abolir)__ (abol\w+) (?:absolument|entièrement|compl[èé]tement|totalement) @@0 <<- morph(\1, ">abolir/", False) ->> \1 # Pléonasme. __[i]/pleo(pleo_acculer)__ (accul\w+) aux? pieds? du mur @@0 <<- morph(\1, ">acculer/", False) ->> \1 # Pléonasme. @@ -3104,18 +3104,18 @@ TEST: Ce couple va donner à la France sa très importante collection qui rejoindra le musée d’Orsay !! !! -!!!! Confusions +!!!! Confusions !! !! !! __[s>/conf(conf_ne_n)__ [nN]e n’ <<- ->> ne m’|n’ # Incohérence. Double négation. __[s>/conf(conf_pronoms1)__ [mtMT]e ([nmst](?:’|e )) @@$ <<- ->> \1 # Incohérence. __[s>/conf(conf_pronoms2)__ [sS]e ([mst](?:’|e )) @@$ <<- ->> \1 # Incohérence. -__[s>/conf(conf_de_d)__ [dD][eu] d’(?![A-ZÉÂÔÈ]) <<- ->> d’ # Incohérence. +__[s>/conf(conf_de_d)__ [dD][eu] d’(?![A-ZÉÂÔÈ]) <<- ->> d’ # Incohérence. TEST: Il {{ne n’}}arrive jamais à l’heure. TEST: Ça {{me te }}prend la tête, toutes ces complications vaines. TEST: il {{se m’}}est difficile d’y parvenir. TEST: Ça t’arrive {{de d’}}arriver à l’heure ? @@ -3146,11 +3146,11 @@ __[i]/conf(conf_malgré_le_la_les_leur)__ malgré l(?:es? +|eurs? +|a +|’)({w_3}) @@$ <<- morphex(\1, ":", ":[GNAWMB]") -1>> =suggSimil(\1, ":[NA]", True) # Incohérence : après “malgré”, on devrait trouver un groupe nominal. -TEST: malgré l’{{arrête}} qui interdisait le port +TEST: malgré l’{{arrête}} qui interdisait le port TEST: malgré les deux précédentes erreurs __[i]/conf(conf_ma_ta_cette_verbe)__ ([mt]a|cette) +({w_2}) @@0,$ @@ -3339,11 +3339,11 @@ #__[i]/conf__ # très +(bien|\w+ent) +({w2}) @@w,$ # <<- morph(\1, ":W", False) and morphex(\2, ":[123][sp]", ":[GAQW]") -2>> _ # # Incohérence avec « très » : « \2 » n’est ni un adjectif, ni un participe passé, ni un adverbe. - + __[i]/conf(conf_très_verbe)__ très +(?!envie)({w_2}) @@$ <<- morphex(\1, ":(?:Y|[123][sp])", ":[AQW]") -1>> =suggSimil(\1, ":[AW]", True) # Incohérence avec « très » : « \1 » n’est ni un adjectif, ni un participe passé, ni un adverbe. <<- morph(\1, ">jeûne/", False) -1>> =\1.replace("û", "u") # Confusion. Le jeûne est une privation de nourriture.|https://fr.wiktionary.org/wiki/jeune @@ -3465,16 +3465,16 @@ __[i]/conf(conf_a_à_au_aux)__ (à) aux?(?! (?:moins|plus)) @@0 <<- -1>> a # Confusion : “à” est une préposition. Pour le verbe avoir, écrivez : __[i]/conf(conf_a_à_base_cause)__ (a) (?:base|cause) d(?:es?|u|) @@0 <<- not before(r"(?i)\bce que?\b") -1>> à # Confusion. Utilisez la préposition « à ». __[i]/conf(conf_a_à_faim_peur_honte_soif)__ - (à) +(?:faim|peur|honte|soif) @@0 <<- -1>> a # Confusion : “à” est une préposition. Pour le verbe avoir, écrivez : + (à) +(?:faim|peur|honte|soif) @@0 <<- -1>> a # Confusion : “à” est une préposition. Pour le verbe avoir, écrivez : __[i]/conf(conf_a_à_part)__ (a) part ({w1}) @@0,7 <<- morph(\2, ":(?:M[12]|D|Oo)") -1>> à # Confusion probable. __[i]/conf(conf_a_à_les_à)__ les (à)(?! côtés| peu près| prioris?| post[eé]rioris?| valoirs?| pics?| propos) @@4 <<- -1>> a - # Confusion : “à” est une préposition. Pour le verbe avoir, écrivez : + # Confusion : “à” est une préposition. Pour le verbe avoir, écrivez : __[i]/conf(conf_a_à_avant_conj_prep)__ (à) +(?:a(?:fin|lors|près|uprès|ux?(?! moins| plus| mieux)|vant|vec)|au-de(?:dans|hors|là|sso?us|vant)|chez|d(?:ans|evant|ès|déjà|onc|urant)|lorsque?|malgré|par(?:ce|mi|)|p(?:endant|our|uisque)|que?|sur|tandis) @@0 <<- -1>> a # Confusion probable : “à” est une préposition. Écrivez “a” pour la conjugaison de “avoir”. __[i]/conf(conf_a_participe_passé_ou_vconj)__ (à) +({w_2}) @@0,$ @@ -3501,11 +3501,11 @@ (a) (?:[mts](?:es|on|a)|[nv]o(?:s|tre)|leurs?) (?:avis|c(?:onnaissance|ôtés)|c(?:œur|orps) défendant|dé(?:pens|triment)|disposition|encontre|égard|grand(?: désarroi|e (?:surprise|tristesse))|guise|insu|portée|risques et périls|sujet|tour) @@0 <<- not before(r"(?i)(?:\bque? |[ln]’$|(?> à # Confusion probable : “a” est la conjugaison du verbe “avoir”. Utilisez la préposition “à”.|http://fr.wiktionary.org/wiki/%C3%A0 __[s]/conf(conf_a_à_infi)__ (?> à # Confusion probable : “a” est la conjugaison du verbe “avoir”. Utilisez la préposition “à”.|http://fr.wiktionary.org/wiki/%C3%A0 __[s]/conf(conf_a_à_après_interrogative)__ \w+-(?:je|ils?|elles?|je|tu|on|vous|nous) (a)(?! priori| posteriori| fortiori) @@$ <<- -1>> à # Confusion probable : “a” est la conjugaison du verbe “avoir”. Utilisez la préposition “à”.|http://fr.wiktionary.org/wiki/%C3%A0 @@ -3992,21 +3992,21 @@ <<- -2>> golf # Confusion. Le golfe est une zone de mer ou d’un lac avancée dans les terres. Ex : Le golfe Persique. __[i]/conf(conf_golfe)__ (golf) (persique|d[ue] (?:Bengale|Botnie|Gascogne|Gabès|Guinée|Lion|Morbihan|Mexique|Porto|Saint-Laurent|Thaïlande|Tonkin|Tunis|Winam)|d’(?:Aden|Ajaccio|Alaska|Hammamet)) @@0,$ <<- -1>> golfe # Confusion. Le golf est un sport. __[i]/conf(conf_Golfe)__ - (?:guerre|émir|monarchie)s? du (golf) @@$ <<- -1>> Golfe # Confusion. Le golf est un sport. + (?:guerre|émir|monarchie)s? du (golf) @@$ <<- -1>> Golfe # Confusion. Le golf est un sport. TEST: Il a réalisé un documentaire sur la guerre du {{Golf}}. TEST: C’est un bon joueur de {{golfe}}. TEST: Le {{golf}} Persique est presque une mer fermée. TEST: J’ai fait de la voile dans le {{golf}} du Morbihan. TEST: Le {{golf}} d’Aden. # haut delà / au-delà -__[i]/conf(conf_au_delà)__ haut[- ]del[àa] <<- ->> au-delà # Confusion. +__[i]/conf(conf_au_delà)__ haut[- ]del[àa] <<- ->> au-delà # Confusion. TEST: il va dans l’{{haut delà}} # héro / héros @@ -4170,11 +4170,11 @@ __[i]/conf(conf_cela_peut_être_adj)__ ^ *(?:cela|ceci) (peut-être) ({w_2}) @@w,$ <<- morph(\2, ":[AQ]", False) -1>> peut être # Confusion probable : « peut-être » signifie « possiblement ». __[i]/conf(conf_peu_à_peu)__ peu[xt]? a peu[xt]? - <<- ->> peu à peu # Confusion : « peu à peu » ou « petit à petit ». + <<- ->> peu à peu # Confusion : « peu à peu » ou « petit à petit ». __[i]/conf(conf_peu_importe)__ (peu[tx]) importe(?:nt|) @@w <<- morph(word(-1), ":C", False, True) -1>> peu # Confusion : « \1 » est une conjugaison de “pouvoir”, utilisez “peu” pour dire “pas beaucoup”. __[i]/conf(conf_adv_de_peu)!6__ (?:très|trop|de|quelque|pour|à) (peu[tx]) @@$ @@ -4278,11 +4278,11 @@ TEST: Quand à mon tour je réalise l’imposture, c’est trop tard. # quand bien même __[i]/conf(conf_quand_bien_même)__ - combien même <<- not after("^ si ") ->> quand bien même # Locution conjonctive.|https://fr.wiktionary.org/wiki/quand_bien_m%C3%AAme + combien même <<- not after("^ si ") ->> quand bien même # Locution conjonctive.|https://fr.wiktionary.org/wiki/quand_bien_m%C3%AAme TEST: J’irai, {{combien même}} vous seriez tous contre moi. TEST: Il partirait en guerre quand bien même devrait-il être tout seul. TEST: Elle veut savoir combien même si ça ne lui est d’aucune utilité immédiate. @@ -4431,11 +4431,11 @@ __[i]/conf(conf_en_temps_de)__ en (tant?) de? @@3 <<- not after("^[ ’](?:lieux|endroits|places|mondes|villes|pays|régions|cités)") -1>> temps # Confusion. Écrivez « en temps de » si vous évoquez une période de temps. __[i]/conf(conf_de_temps_en_temps)__ de tant? en tant? <<- ->> de temps en temps # Confusion. Écrivez « de temps en temps ». __[i]/conf(conf_un_temps_soit_peu)__ un (temps|tan) soi[tes]? peu @@3 <<- -1>> tant # Confusion. Écrivez « un tant soit peu ». -__[i]/conf(conf_tant_de)__ a(?:près|vec) (temps|tan) de? @@w <<- -1>> tant # Confusion.|http://fr.wiktionary.org/wiki/tant +__[i]/conf(conf_tant_de)__ a(?:près|vec) (temps|tan) de? @@w <<- -1>> tant # Confusion.|http://fr.wiktionary.org/wiki/tant __[i]/conf(conf_à_temps_partiel)__ [àa] (tant?) (?:partiel|plein)s? @@2 <<- -1>> temps # Confusion. __[i]/conf(conf_en_même_temps)__ en mêmes? (tant?) @@$ <<- -1>> temps # Confusion. TEST: en {{tant}} de guerre, il faut savoir faire face et ne pas faiblir face à l’adversité. TEST: ils vont {{de tan en tan}} au restaurant @@ -4486,11 +4486,11 @@ # voire / voir __[i]/conf(conf_voir_voire)__ (voir) ({w_2}) @@0,$ <<- not re.search("^(?:grand|petit|rouge)$", \2) and morphex(\2, ":A", ":[NGM]") and not \2.istitle() and not before(r"(?i)\b[ndmts](?:e |’(?:en |y ))(?:pas |jamais |) *$") and not morph(word(-1), ":O[os]|>(?:[ndmts]e|falloir|pouvoir|savoir|de)/", False) - -1>> voire + -1>> voire # Confusion probable : “voir” est un verbe concernant la perception visuelle. Pour signifier “et même possiblement”, écrivez :|https://fr.wiktionary.org/wiki/voire __[i]/conf(conf_voire_voir)__ voire <<- morph(word(-1), ":Cs|>(?:ni|et|sans|pour|falloir|[pv]ouvoir|aller)/", True, False) ->> voir @@ -4516,11 +4516,11 @@ !! !! -!!!! Pronoms + incohérences +!!!! Pronoms + incohérences !! !! !! __[i](p_m_enfin)__ m’enfin <<- ~>> * __[i]/conf(conf_j_y_en_qqch)__ @@ -4593,11 +4593,11 @@ @@@@ @@@@ @@@@ @@@@ -@@@@GRAPH: graphe1 +@@@@GRAPH: graphe1 @@@@ @@@@ @@@@ @@@@ @@ -4607,11 +4607,11 @@ <<- ~3:0>> _ !! !! -!!!! Formes verbales sans sujet +!!!! Formes verbales sans sujet !! !! !! __tag_sujets__ [je|j’] @@ -4773,11 +4773,11 @@ !! !! -!!!! Locutions invariables +!!!! Locutions invariables !! !! !! __locutions_invariables__ [plus|moins|autant] que [prévue|prévus|prévues] @@ -4811,11 +4811,11 @@ !! !! -!!!! Tout, tous, toute, toutes +!!!! Tout, tous, toute, toutes !! !! !! __purge_tout_tous_toutes__ [fais-les|fais-nous] [tous|toutes] @@ -4946,11 +4946,11 @@ !! !! -!!!! Adverbes de négation +!!!! Adverbes de négation !! !! !! __ne_manquant__ [|,] je [le|la|l’|les|me|m’|te|t’|se|s’|nous|vous|lui|leur] @:1s¬:(?:Oo|X) [pas|rien|jamais|guère|point] @@ -5014,11 +5014,11 @@ TEST: __neg__ il {{le}} lui donne pas souvent. !! !! -!!!! Infinitif +!!!! Infinitif !! !! !! __infi_ne_pas_jamais_etc__ ne [pas|rien|guère|point] ?[le|la|l’|les|leur|lui|nous|vous|me|m’|te|t’|se|s’|en|y]¿ (@:[VNA]¬:(?:Y|W|X|O[ow])|>que?/) @@ -5545,11 +5545,11 @@ bien souvent bon gré ?,¿ mal gré bras dessus ?,¿ bras dessous çà et là ce faisant - [cela|ça|ceci] mis à part + [cela|ça|ceci] mis à part [cela|ça|ceci] va sans dire ces derniers temps cette [fois-là|fois-ci] chaque fois comme avant @@ -6224,29 +6224,29 @@ vers nulle part <<- ~>> * @@@@ -@@@@END_GRAPH +@@@@END_GRAPH @@@@ - + __[i](p_plus_avant)__ plus avant(?! de | que?) <<- ~>> * -__[i](p_qui_loc_tps)__ qui (ce (?:jour|matin|après-midi|soir)-là|cette (?:nuit|matinée|soirée)-là) @@4 <<- ~1>> * +__[i](p_qui_loc_tps)__ qui (ce (?:jour|matin|après-midi|soir)-là|cette (?:nuit|matinée|soirée)-là) @@4 <<- ~1>> * - + TEST: ils vont et viennent, toujours {{cotes a cotes}}… TEST: Nous irons {{tours à tours}} chercher du bois. TEST: Ma thèse en 180 secondes. -# je / tu / il / elles / nous / vous / ils / elles +# je / tu / il / elles / nous / vous / ils / elles __[i](p_je_vous_en_prie)__ je (?:t’en|vous en) (?:prie|supplie) <<- ~>> * __[i](p_nous_vous_en_prions)__ nous (?:t’en|vous en) (?:prions|supplions) <<- ~>> * # mot-là __[i](p_qqch_tiret_là)__ ({w1})(-là) @@0,$ <<- morphex(\1, ":[NAQ]", ":G") ~2>> * @@ -6270,11 +6270,11 @@ __[i](p_en_loc_de2)__ en (flagrant délit|matière) de? @@3 <<- ~1>> * __[i](p_en_proie_à)__ (en proie) à @@0 <<- ~1>> * __[i](p_eu_égard_à)__ (eu égard) (?:à|aux?) @@0 <<- ~1>> * __[i](p_la_une_de)__ la (une) d(?:es?|u) @@3 <<- ~1>> _ __[i](p_le_long_de)__ le (long) d(?:es?|u) @@3 <<- ~1>> _ -__[i](p_par_le_biais_de)__ par (le biais|l’entremise) d(?:es?|u) @@4 <<- ~1>> * +__[i](p_par_le_biais_de)__ par (le biais|l’entremise) d(?:es?|u) @@4 <<- ~1>> * __[i](p_pour_ou_contre)__ pour (ou contre) @@5 <<- ~1>> * __[i](p_rien_comparé_à)__ rien +(comparé) +à @@w <<- ~1>> * __[i](p_suite_à)__ (suite) (?:à|aux?) @@0 <<- not before(r"(?i)\b(?:une|la|cette|[mts]a|[nv]otre|de) +") ~1>> * __[i](p_vent_debout_contre)__ (vent debout) contre @@0 <<- ~1>> * @@ -6415,11 +6415,11 @@ __[i](p_nu_comme_un_ver)__ nue?s? (comme (?:un ver|des vers)) @@$ <<- ~1>> * __[i](p_numéro)__ numéro (un|deux|trois|quatre|cinq|six|sept|huit|neuf|dix(?:-sept|-huit|-neuf|)|onze|douze|treize|quatorze|quinze|seize|vingt|trente|quarante|cinquante|soixante(?:-dix|)|quatre-vingt(?:-dix|)|cent|mille|\d+) @@$ <<- before(r"\b[lL]a +$") =>> define(\0, [">numéro/:N:f:s"]) <<- ~1>> * -__[i](p_oiseau_de)__ oiseaux? (de (?:malheur|nuit|proie|mauvais augure)) @@$ <<- ~1>> * +__[i](p_oiseau_de)__ oiseaux? (de (?:malheur|nuit|proie|mauvais augure)) @@$ <<- ~1>> * __[i](p_onde_de_choc)__ ondes? (de choc) @@$ <<- ~1>> * __[i](p_orge)__ orge (perlé|mondé|carré) @@$ <<- ~1>> * __[i](p_noire_comme)__ noire?s? (comme (?:la nuit|une nuit sans lune)) @@$ <<- ~1>> * __[i](p_partie_de_jambe_en_l_air)__ parties? (de jambes en l’air) @@$ <<- ~1>> * @@ -6550,18 +6550,18 @@ <<- ~>> soixante __[i](p_80_qqch)__ quatre-vingt-(?:un|d(?:eux|ix|ouze)|tr(?:ois|eize)|quat(?:re|orze)|cinq|six|sept|huit|neuf|onze|quinze|seize) <<- ~>> quatre-vingts __[i](p_qqch_100)__ - ((?:d(?:eux|ouze)|tr(?:ois|eize)|quat(?:re|orze)|cinq|s(?:ix|seize)|sept|huit|neuf|onze|quinze) cents) +({w_2}) @@0,$ + ((?:d(?:eux|ouze)|tr(?:ois|eize)|quat(?:re|orze)|cinq|s(?:ix|seize)|sept|huit|neuf|onze|quinze) cents) +({w_2}) @@0,$ <<- morphex(\2, ":[NAQ].*:[pi]", ":(?:G|3p)") ~1>> cent __[i](p_qqch_1000)__ (?:deux|trois|quatre|cinq|six|sept|huit|neuf|cent) (?:cent |)mille <<- ~>> mille __[i](p_det_plur_nombre_nom)__ - (?:le(?:ur|)s|des|ses|ces|mes|tes|nos|vos) +((?:quelque +|)(?:d(?:eux|ix|ouze)|tr(?:ois|eize|ente)|qua(?:t(?:re(?:-vingts|)|orze)|rante)|cinq(?:uante|)|s(?:ix|eize|oixante)|sept|huit|neuf|onze|quinze|vingt|cent|mille|\d+)) +({w_2}) @@w,$ + (?:le(?:ur|)s|des|ses|ces|mes|tes|nos|vos) +((?:quelque +|)(?:d(?:eux|ix|ouze)|tr(?:ois|eize|ente)|qua(?:t(?:re(?:-vingts|)|orze)|rante)|cinq(?:uante|)|s(?:ix|eize|oixante)|sept|huit|neuf|onze|quinze|vingt|cent|mille|\d+)) +({w_2}) @@w,$ <<- morphex(\2, ":[NAQ].*:[pi]", ":(?:G|3p)") ~1>> * __[i](p_une_heure)__ (?:à |d(?:e +|’))une +heure(?: (?:d(?:eu|i)x|tr(?:ois|eize|ente)|qu(?:a(?:t(?:re|orze)|rante)|inze)|cinq(?:uante|)|s(?:ix|ept|eize)|huit|neuf|onze|douze|vingt|décente|(?:très |)tardive)|) <<- ~>> * __[i](p_nombre_heure)__ @@ -6708,11 +6708,11 @@ __[i](p_la_xxx_la_plus_adj)__ la ({w_2}) (la plus) ({w_2}) @@3,w,$ <<- morphex(\1, ":[NAQ].*:[fe]", ":G") and morph(\3, ":[AQ].*:[fe]", False) ~2>> * __[i](p_les_xxx_les_plus_adj)__ (?:[lmts]es|nos|vos|leurs) ({w_2}) (les plus) ({w_2}) @@w,w,$ - <<- morphex(\1, ":[NAQ].*:[pi]", ":[123][sp]") and morph(\3, ":A.*:[pi]", False) ~2>> * + <<- morphex(\1, ":[NAQ].*:[pi]", ":[123][sp]") and morph(\3, ":A.*:[pi]", False) ~2>> * __[i](p_le_plus_le_moins)__ (le (?:plus|moins)) ({w_2}) @@0,$ <<- morph(\2, ":A", ":([me]:[si]|G)") and morph(word(-1), ">(?:avoir|être)/:V", False) ~1>> * __[i](p_bien_sûr)__ bien sûr(?! de) <<- ~>> * @@ -7024,12 +7024,12 @@ # # //////////////////////////////////////// RÈGLES DE CONTRÔLE //////////////////////////////////////// # -!!!! Redondances dans la phrase - +!!!! Redondances dans la phrase !! + __[i]/redon2(redondances_phrase)__ ({w_4})[ ,].* (\1) @@0,$ <<- not morph(\1, ":(?:G|V0)|>même/", False) -2>> _ # Dans cette phrase, répétition de « \1 » (à gauche). <<- __also__ -1>> _ # Dans cette phrase, répétition de « \1 » (à droite). @@ -7041,11 +7041,11 @@ !! !! -!!!! Groupe nominal (1) +!!!! Groupe nominal (1) !! !! !! #### 1 mot @@ -7621,11 +7621,11 @@ !! !! -!!!! Groupe nominal (2) +!!!! Groupe nominal (2) !! !! !! ## Sans article @@ -7726,11 +7726,11 @@ <<- __also__ and hasFemForm(\1) -1>> =switchGender(@) # Accord de genre erroné avec « \2 ». <<- not re.search("(?i)^air$", \1) and not \2.startswith("seul") and morph(\1, ":[si]") and morph(\2, ":[NAQ].*:p") and not apposition(\1, \2) and not morph(word(-1), ":[NAQ]", False, False) -2>> =suggSing(@) # Accord de nombre erroné avec « \1 » : « \2 » devrait être au singulier. - + TEST: L’{{amande}} {{amer}} TEST: l’{{amicale}} {{animal}} TEST: du chien et de l’{{excellente}} {{collier}} qu’il avait autour du cou. TEST: du chien et de l’{{étonnante}} {{collier}} qu’il avait autour du cou. @@ -7801,11 +7801,11 @@ <<- morph(\1, ":D", False) >>> <<- not \3.startswith("seul") and morphex(\2, ":[NAQ].*:[me]", ":(?:B|G|V0)") and morph(\3, ":[NAQ].*:f") and not apposition(\2, \3) and not before(r"\b(?:et|ou|de) +$") -3>> =suggMasSing(@, True) # Accord de genre erroné : « \2 » est masculin, « \3 » est féminin. - <<- not \3.startswith("seul") + <<- not \3.startswith("seul") and morphex(\2, ":[NAQ].*:[si]", ":G") and morphex(\3, ":[NAQ].*:p", ":[GWsi]") and not apposition(\2, \3) and not before(r"\b(?:et|ou|de) +$") -3>> =suggMasSing(@) # Accord de nombre erroné avec « \2 » : « \3 » devrait être au singulier. __[i]/gn(gn_2m_le_après_et_ou_de)__ (?:et|ou) +(le) +({w_2}) +({w_2}) @@w,w,$ @@ -7815,11 +7815,11 @@ and not apposition(\2, \3) and not morph(word(-1), ":[NAQ]|>(?:et|ou)/", False, False) -3>> =suggMasSing(@, True) # Accord de genre erroné : « \2 » est masculin, « \3 » est féminin. <<- not \3.startswith("seul") and morphex(\2, ":[NAQ].*:[si]", ":G") and morphex(\3, ":[NAQ].*:p", ":[GWsi]") and not apposition(\2, \3) and not morph(word(-1), ":[NAQ]|>(?:et|ou)/", False, False) - -3>> =suggMasSing(@) # Accord de nombre erroné avec « \2 » : « \3 » devrait être au singulier. + -3>> =suggMasSing(@) # Accord de nombre erroné avec « \2 » : « \3 » devrait être au singulier. TEST: le test très {{cons}} qu’on a passé hier. TEST: c’était le chien {{perdue}} des voisins. TEST: viens vite ou le pari {{imperdables}} sera moins facile… @@ -7828,11 +7828,11 @@ (?> =suggMasSing(@, True) # Accord de genre erroné : « \1 » est masculin, « \2 » est féminin. - <<- not \2.startswith("seul") + <<- not \2.startswith("seul") and morphex(\1, ":[NAQ].*:[si]", ":G") and morphex(\2, ":[NAQ].*:p", ":[GWsi]") and not apposition(\1, \2) and not before(r"\b(?:et|ou|de) +$") -2>> =suggMasSing(@) # Accord de nombre erroné avec « \1 » : « \2 » devrait être au singulier. __[i]/gn(gn_2m_det_mas_sing_après_et_ou_de)__ (?:et|ou|de) +(?:cet?|quel|au|ledit) +({w_2}) +({w_2}) @@w,$ @@ -7841,11 +7841,11 @@ and not apposition(\1, \2) and not morph(word(-1), ":[NAQ]|>(?:et|ou)/", False, False) -2>> =suggMasSing(@, True) # Accord de genre erroné : « \1 » est masculin, « \2 » est féminin. <<- not \2.startswith("seul") and morphex(\1, ":[NAQ].*:[si]", ":G") and morphex(\2, ":[NAQ].*:p", ":[GWsi]") and not apposition(\1, \2) and not morph(word(-1), ":[NAQ]|>(?:et|ou)/", False, False) - -2>> =suggMasSing(@) # Accord de nombre erroné avec « \1 » : « \2 » devrait être au singulier. + -2>> =suggMasSing(@) # Accord de nombre erroné avec « \1 » : « \2 » devrait être au singulier. TEST: cet outil {{terribles}} qu’il a dans les mains TEST: J’aimerais connaître de quel parti {{gauchistes}} on parle. @@ -7853,11 +7853,11 @@ (?> =suggMasSing(@, True) # Accord de genre erroné : « \1 » est masculin, « \2 » est féminin. - <<- not \2.startswith("seul") + <<- not \2.startswith("seul") and morphex(\1, ":[NAQ].*:[si]", ":G") and morphex(\2, ":[NAQ].*:p", ":[GWsi]") and not apposition(\1, \2) and not before(r"\b(?:et|ou|de) +$") -2>> =suggMasSing(@) # Accord de nombre erroné avec « \1 » : « \2 » devrait être au singulier. __[i]/gn(gn_2m_mon_ton_son_après_et_ou_de)__ (?:et|ou|de) +[mts]on +({w_2}) +({w_2}) @@w,$ @@ -7867,11 +7867,11 @@ -2>> =suggMasSing(@, True) # Accord de genre erroné : « \1 » est masculin, « \2 » est féminin. <<- not \2.startswith("seul") and morphex(\1, ":[NAQ].*:[si]", ":G") and morphex(\2, ":[NAQ].*:p", ":[GWsi]") and not apposition(\1, \2) and not morph(word(-1), ":[NAQ]|>(?:et|ou)/", False, False) - -2>> =suggMasSing(@) # Accord de nombre erroné avec « \1 » : « \2 » devrait être au singulier. + -2>> =suggMasSing(@) # Accord de nombre erroné avec « \1 » : « \2 » devrait être au singulier. TEST: il brandissait avec fougue son drapeau {{déchirés}} TEST: comment osez-vous médire de mon héritage {{glorieuse}} @@ -7880,11 +7880,11 @@ <<- morph(\1, ":D", False) >>> <<- \2 != "fois" and not \3.startswith("seul") and morphex(\2, ":[NAQ].*:[fe]", ":(?:B|G|V0)") and morph(\3, ":[NAQ].*:m") and not apposition(\2, \3) and not before(r"\b(?:et|ou|de) +$") -3>> =suggFemSing(@, True) # Accord de genre erroné : « \2 » est féminin, « \3 » est masculin. - <<- not \3.startswith("seul") + <<- not \3.startswith("seul") and morphex(\2, ":[NAQ].*:[si]", ":G") and morphex(\3, ":[NAQ].*:p", ":[GWsi]") and not apposition(\2, \3) and not before(r"\b(?:et|ou|de) +$") -3>> =suggFemSing(@) # Accord de nombre erroné avec « \2 » : « \3 » devrait être au singulier. __[i]/gn(gn_2m_la_après_et_ou_de)__ (?:et|ou|de) +(la) +({w_2}) +({w_2}) @@w,w,$ @@ -8138,11 +8138,11 @@ !! !! -!!!! Groupe nominal (3) +!!!! Groupe nominal (3) !! !! !! ## nombre @@ -8192,11 +8192,11 @@ !! !! -!!!! Groupe nominal: Accords avec de / des / du +!!!! Groupe nominal: Accords avec de / des / du !! !! !! __[i]/gn(gn_devinette1)__ (?:[lmts]a|une|cette) +{w_2} +d(?:e (?:[lmts]a|cette)|’une) +(?!des )({w_2}) +({w_2}) @@w,$ @@ -8254,11 +8254,11 @@ !! !! -!!!! Singuliers & Pluriels +!!!! Singuliers & Pluriels !! !! !! #### Prépositions @@ -8652,11 +8652,11 @@ !! !! -!!!! Confusions +!!!! Confusions !! !! !! # à / a __[i]/conf(conf_suite_à)__ @@ -8709,11 +8709,11 @@ __[i]/conf(conf_âcre)__ acres? <<- morph(word(-1), ">(?:être|go[ûu]t|humeur|odeur|parole|parfum|remarque|reproche|réponse|saveur|senteur|sensation|vin)/", False, False) ->> =\0.replace("a", "â").replace("A", "Â") # Confusion probable : “acre” est une unité de surface agraire. Pour l’adjectif signifiant “irritant”, écrivez :|https://fr.wiktionary.org/wiki/%C3%A2cre - + TEST: Il avait ce goût {{acre}} dans la bouche qui ne passait pas. # accro / accroc __[i]/conf(conf_être_accro)__ @@ -8777,11 +8777,11 @@ # annales / anal-e-s __[i]/conf(conf_annales1)__ (anale?s?) (?:littéraires?|politiques?|ecclésiastiques?|du (?:bac(?:calauréat|)|brevet)|de (?:physique|chimie|mathématiques|biologie|géographie)|d’histoire) @@0 - <<- -1>> annales # Confusion : “\1” est l’adjectif relatif à l’anus.|http://fr.wiktionary.org/wiki/annales + <<- -1>> annales # Confusion : “\1” est l’adjectif relatif à l’anus.|http://fr.wiktionary.org/wiki/annales __[i]/conf(conf_annales2)__ [lcdmts]es (anale?s?) @@4 <<- -1>> annales # Confusion : “\1” est l’adjectif relatif à l’anus.|http://fr.wiktionary.org/wiki/annales TEST: des {{anales}} littéraires @@ -9212,11 +9212,11 @@ TEST: Béatrice Dalle et Claude __[i]/conf(conf_où_est)__ où (et) +({w_1}) @@w,$ - <<- morphex(\2, ":D", ":R|>(?:quand|pourquoi)") or (\2 == "l" and after("^’")) + <<- morphex(\2, ":D", ":R|>(?:quand|pourquoi)") or (\2 == "l" and after("^’")) -1>> est # Confusion probable : “et” est une conjonction de coordination. Pour le verbe être à la 3ᵉ personne du singulier, écrivez : TEST: où {{et}} cet ennemi ? TEST: où {{et}} l’homme qui est passé ce matin ? TEST: Je veux savoir où et quand, où et pouquoi. @@ -9255,11 +9255,11 @@ # foi / fois __[i]/conf(conf_bonne_mauvaise_foi)__ (mauvaise|bonne) (fois) @@0,$ - <<- not ( \1 == "bonne" and before(r"(?i)\bune +$") and after("(?i)^ +pour toute") ) + <<- not ( \1 == "bonne" and before(r"(?i)\bune +$") and after("(?i)^ +pour toute") ) -2>> foi # Confusion probable.|http://fr.wiktionary.org/wiki/foi __[i]/conf(conf_faire_perdre_donner_foi)__ ((?:f[aieî]|perd|donn|[ae])\w*) (fois) @@0,$ <<- morph(\1, ">(?:faire|perdre|donner|avoir)/", False) -2>> foi # Confusion probable.|http://fr.wiktionary.org/wiki/foi @@ -9804,11 +9804,11 @@ # # Confusion probable : « quelquefois » est un adverbe qui signifie « parfois » ; ne pas confondre avec les quelques fois qu’il est advenu ou qu’il adviendra quelque chose.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=4334 __[i]/conf(conf_quelquefois_quelques_fois)__ qu(?: elles? que fois?|elles? que fois?|elque fois) <<- ->> quelquefois|quelques fois - # Confusion. Utilisez « quelquefois » si vous voulez dire « parfois ». Utilisez « quelques fois » pour évoquer ce qui est advenu ou adviendra plusieurs fois.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=4334 + # Confusion. Utilisez « quelquefois » si vous voulez dire « parfois ». Utilisez « quelques fois » pour évoquer ce qui est advenu ou adviendra plusieurs fois.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=4334 TEST: {{Quelles que fois}}, on y comprend plus rien. TEST: {{Qu’elle que fois}}, on y comprend plus rien. TEST: Il y va {{quelque fois}} par an. @@ -9921,11 +9921,11 @@ __[i]/conf(conf_en_soi)__ (?> soi # Confusion probable. __[i]/conf(conf_quel_que_soit2)__ - quel(?:le|)s? que (soi(?:es?|)) @@$ <<- -1>> soit|soient # Confusion probable. + quel(?:le|)s? que (soi(?:es?|)) @@$ <<- -1>> soit|soient # Confusion probable. __[i]/conf(conf_soi_même1)__ (soi[tes]s? mêmes?) @@$ <<- morph(word(-1), ":[YQ]|>(?:avec|contre|par|pour|sur)/", False, True) -1>> soi-même # Confusion probable : moi-même, toi-même, lui-même, elle-même, soi-même, elles-mêmes, eux-mêmes. __[i]/conf(conf_soi_même2)__ soi[tes]s?-mêmes? <<- ->> soi-même # Confusion : moi-même, toi-même, lui-même, elle-même, soi-même, elles-mêmes, eux-mêmes. @@ -10078,11 +10078,11 @@ # nouveau / nouvel # TODO -!!!! Mots composés +!!!! Mots composés !! __[i]/mc(mc_mot_composé)__ ({w2})-({w2}) @@0,$ <<- not \1.isdigit() and not \2.isdigit() and not morph(\0, ":", False) and not morph(\2, ":G", False) and spell(\1+\2) @@ -10096,11 +10096,11 @@ !! !! -!!!! Casse: majuscules et minuscules +!!!! Casse: majuscules et minuscules !! !! !! # Les jours __[s]/maj(maj_jours_semaine)__ @@ -10266,11 +10266,11 @@ !! !! !! !! !! -!!! Conjugaisons +!!! Conjugaisons !! !! !! !! !! !! @@ -10281,11 +10281,11 @@ !! !! !! -!!!! Infinitif +!!!! Infinitif !! !! !! __[i]/infi(infi_à_en)__ à en ({w_2}) @@5 @@ -10426,11 +10426,11 @@ TEST: les documents {{scanner}} ne sont pas lisibles. TEST: tes doutes {{remâcher}} deviennent difficiles à vivre. -!!!! Participes présents +!!!! Participes présents !! __[i]/conj(conj_participe_présent)__ (?:ne|lui|me|te|se|nous|vous) ({w_2}ants) @@$ <<- morph(\1, ":A", False) -1>> =\1[:-1] # Un participe présent est invariable.|http://fr.wiktionary.org/wiki/participe_pr%C3%A9sent TEST: nous {{épuisants}} à la tâche pour des clopinettes, nous défaillîmes. @@ -10437,11 +10437,11 @@ !!! !!! -!!! Processeur: simplification des substantifs +!!! Processeur: simplification des substantifs !! !!! !!! ### @ : we remove @ we introduced after le/la/les in some cases __(p_arobase)__ @ <<- ~>> * @@ -10563,11 +10563,11 @@ TEST: Notre but n’était pas de devenir célèbres. TEST: sans qu’on ait à le lui ordonner -!!!! OCR +!!!! OCR !! # Participes passés __[i]/ocr(ocr_être_participes_passés)__ ({etre}) +({w_2}es?) @@0,$ <<- morph(\1, ":V0e", False) >>> @@ -10601,11 +10601,11 @@ # TEST: __ocr__ vous êtes {{presses}} de monter à bord de ce train-ci. # Fonctionne avec nous serons, mais pas nous sommes (bug de JavaScript?) -!!!! Confusions +!!!! Confusions !! ## guerre / guère __[i]/conf(conf_ne_pronom_pronom_verbe_guère)__ ne (?:[mts]e|la|les?|[nv]ous|lui|leur) (?:la |les? |lui |leur |l’|)\w{w_2} (?:plus |)(guerre) @@$ <<- -1>> guère # Confusion. La guerre est conflit. Pour l’adverbe signifiant “peu”, écrivez : @@ -10662,11 +10662,11 @@ TEST: cela ne va pas de {{soit}}. -!!!! Adverbes après verbe +!!!! Adverbes après verbe !! # fort __[i]/sgpl(sgpl_verbe_fort)__ ({w_2}) +(forts) @@0,$ <<- morphex(\1, ":V", ":[AN].*:[me]:[pi]|>(?:être|sembler|devenir|re(?:ster|devenir)|para[îi]tre|appara[îi]tre)/.*:(?:[123]p|P|Q)|>(?:affirmer|trouver|croire|désirer|estime|préférer|penser|imaginer|voir|vouloir|aimer|adorer|souhaiter)/") @@ -10696,11 +10696,11 @@ !! !! -!!!! Infinitif +!!!! Infinitif !! !! !! __[i]/infi(infi_d_en_y)__ d’(?:en|y) +({w_2}) @@$ @@ -10809,11 +10809,11 @@ !! !! -!!!! Usage pronominal avec “avoir” au lieu d’“être” +!!!! Usage pronominal avec “avoir” au lieu d’“être” !! !! !! __[i]/conj(conj_se_conf_être_avoir)__ (s’)(?:en +|y+ |)({avoir}) @@0,$ @@ -10851,11 +10851,11 @@ !! !! -!!!! Participes passés: se +être +verbe +!!!! Participes passés: se +être +verbe !! !! !! __[i]/ppas(ppas_je_me_être_verbe)__ je +(?:ne +|)m(?:e +|’(?:y +|))(?:s[uo]i[st]|étai[st]|fu(?:sses?|s|t)|serai[st]?) +({w_3}) @@$ @@ -10944,11 +10944,11 @@ !! !! -!!!! Participes passés: se +laisser +adjectif +!!!! Participes passés: se +laisser +adjectif !! !! !! __[i]/ppas(ppas_me_te_laisser_adj)__ ([mt]e|l[ae]) +(laiss\w*) +({w_3}) @@0,w,$ @@ -11140,11 +11140,11 @@ <<- morph(\2, ":V0a", False) >>> <<- morphex(\3, ":[123]s", ":[GNAQWY]") -3>> =suggVerbPpas(@) # Après « avoir été », il faut un participe passé. <<- not before("[çcCÇ]’$|[cC]e n’$|[çÇ]a (?:n’|)$") and not before("(?i)^ *ne pas ") and not morph(word(-1), ":Y", False) >>> <<- morphex(\3, ":Y", ":A") -1>> _ # Tournure familière. Utilisez « être allé » plutôt que « avoir été ». <<- morphex(\3, ":V1..t.*:Y", ":A") -3>> =suggVerbPpas(@) # Incohérence. Après « avoir été », il faut un participe passé (à moins que « avoir été » signifie ici « être allé »). - + TEST: j’ai été {{instruis}} par elle TEST: avoir été {{prit}} par surprise TEST: Ils {{ont été}} {{réaliser}} à partir d’éléments naturels. TEST: J’{{ai été}} camper dans les Alpes. TEST: Tu {{as été}} prendre du bois. @@ -11269,11 +11269,11 @@ TEST: elles peuvent avoir été {{trompé}} TEST: elles souhaitent être plus {{considérée}} -!!!! Participes passés: accord en nombre avec la conjugaison de « être » +!!!! Participes passés: accord en nombre avec la conjugaison de « être » !! ## Contrôle de l’ __[i]/ppas(ppas_être_accord_singulier)__ ({w_2}) +(?:qui +|)(?:ne +|n’|)(?:est|était|f[uû]t|sera(?:it|)|a(?:vait|ura|urait|it|) +été|e[uû]t +été) +({w_2}) @@0,$ <<- morphex(\2, ":[NAQ].*:p", ":[GMWYsi]") and not morph(\1, ":G", False) @@ -11283,11 +11283,11 @@ ({w_2}) +(?:qui +|)(?:ne +|n’|)(?:sont|étaient|fu(?:r|ss)ent|ser(?:ont|aient)|soient|ont +été|a(?:vaient|uront|uraient|ient) +été|eu(?:r|ss)ent +été) +({w_2}) @@0,$ <<- not re.search("(?i)^légion$", \2) and morphex(\2, ":[NAQ].*:s", ":[GWYpi]") and not morph(\1, ":G", False) -2>> =suggPlur(@) # Accord avec « être » : « \2 » devrait être au pluriel. -!!!! Participes passés: accord en genre avec le substantif précédent +!!!! Participes passés: accord en genre avec le substantif précédent !! __[i]/ppas(ppas_sujet_être_accord_genre)__ (?> =suggSing(@) # Si cet adjectif se réfère au pronom « \2 », l’adjectif devrait être au singulier (et accordé en genre). @@ -11384,11 +11384,11 @@ !! !! -!!!! Inversion verbe/sujet +!!!! Inversion verbe/sujet !! !! !! __[i]/ppas(ppas_inversion_être_je)__ (?:s[ou]is|étais|fus(?:sé|)|serais?)-je +({w_2}) @@$ <<- morphex(\1, ":(?:[123][sp]|Y|[NAQ].*:p)", ":[GWsi]") @@ -11440,11 +11440,11 @@ TEST: Est-il question de ceci ou de cela ? TEST: Est-ce former de futurs travailleurs ou bien des citoyens -## Accord et incohérences +## Accord et incohérences __[i]/ppas(ppas_sont)__ sont ({w_2}) @@5 <<- morphex(\1, ":[NAQ]", ":[QWGBMpi]") and not re.search("(?i)^(?:légion|nombre|cause)$", \1) and not before(r"(?i)\bce que?\b") -1>> =suggPlur(@) # Incohérence : « \1 » est au singulier. Ou vous confondez « sont » et « son », ou l’accord en nombre est incorrect. <<- __else__ and morphex(\1, ":V", ":(?:N|A|Q|W|G|3p)") and not before(r"(?i)\bce que?\b") @@ -11454,11 +11454,11 @@ !! !! -!!!! Se croire/considérer/montrer/penser/révéler/savoir/sentir/voir/vouloir + participe passé/adj +!!!! Se croire/considérer/montrer/penser/révéler/savoir/sentir/voir/vouloir + participe passé/adj !! !! !! __[i]/ppas(ppas_je_me_verbe)__ je +(?:ne +|)me +((?:s[eauû]|montr|pens|rév|v[oiîe])\w+) +({w_2}) @@w,$ @@ -11598,11 +11598,11 @@ !! !! -!!!! Avoir + participes passés +!!!! Avoir + participes passés !! !! !! #__[i]/conj__ fait(s|e|es) ({w1}) <<- morph(\2, ":V") and not morph(\2, ":Y") # ->> fait \1 # Le participe passé de faire reste au masculin singulier s’il est suivi par un verbe à l’infinitif. @@ -11751,11 +11751,11 @@ !! !! -!!!! COD précédant que +!!!! COD précédant que !! !! !! __[i]/ppas(ppas_det_plur_COD_que_avoir)__ ([ldmtsc]es) +({w_2}) +que? +(?:j’|tu |ils? |[nv]ous |elles? |on ) *(?:ne +|n’|)({avoir}) +({w_2}[éiust]e?)(?! [mts]’) @@0,w,w,$ @@ -11824,11 +11824,11 @@ TEST: Avoir {{marcher}} toute la journée m’a épuisée. -!!!! du / dû +!!!! du / dû !! __[i]/ppas(ppas_avoir_dû_vinfi)__ ({avoir}) +(due?s?) +(?:[mts]’|)({w_2}) @@0,w,$ <<- morph(\1, ":V0a", False) and (morph(\3, ":Y") or re.search("^(?:[mtsn]e|[nv]ous|leur|lui)$", \3)) -2>> dû # Participe passé de devoir : « dû ». @@ -11868,11 +11868,11 @@ TEST: A-t-il déjà {{signer}} le contrat ? !! !! -!!!! Participes passés avec formes interrogatives +!!!! Participes passés avec formes interrogatives !! !! !! __[i]/ppas(ppas_avoir_pronom1)__ (?> =suggMasSing(@) # Avec « avoir », il faut un participe passé au masculin singulier. __[i]/ppas(ppas_l_m_t_avoir_pronom)__ ([ltm]’)({avoir})[- ](?:je|tu|ils?|elles?|t-(?:ils?|elles?|on)|[nv]ous|on) +({w2}s) @@0,2,$ - <<- morph(\2, ":V0a", False) and morphex(\3, ":(?:Y|2p|Q.*:p)", ":[si]") + <<- morph(\2, ":V0a", False) and morphex(\3, ":(?:Y|2p|Q.*:p)", ":[si]") -3>> =suggMasSing(@) # Accord avec le COD « \1 » : e participe passé « \2 » devrait être au singulier (et accordé en genre). __[i]/ppas(ppas_les_avoir_pronom)__ les +({avoir})-(?:je|tu|ils?|elles?|t-(?:ils?|elles?|on)|[nv]ous|on) +({w_1}(?:[éiut]e?|is|se)) @@w,$ @@ -11935,11 +11935,11 @@ __[i]/conj(conj_vous_verbe2)__ vous [nm](?:e +(?:les? |l’|la |[nv]ous |)|’)({w_3}) @@$ <<- morphex(\1, ":V", ":2p") and isStart() -1>> =suggVerb(@, ":2p") # Conjugaison erronée. Accord avec « vous ». Le verbe devrait être à la 2ᵉ personne du pluriel. TEST: vous ne l’{{avait}} pas vu. -TEST: je crois, vous m’{{avais}} trompé… +TEST: je crois, vous m’{{avais}} trompé… ## se + incohérence __[i]/conj(conj_se_incohérence)__ s(?:e +(?:les? +|la +|)|’(?:en +|y +|))({w_2}(?:e[zs]|ons|is|us)) @@$ @@ -11952,11 +11952,11 @@ TEST: se {{crois}} élu par Dieu… TEST: avec ceux se trouvant sur leur chemin -!!!! Confusions ou/où +!!!! Confusions ou/où !! __[i]/conf(conf_det_nom_où_pronom)__ ^ *(?:l(?:es? +|a +|’)|[nv]o(?:s|tre) +|ce(?:t|tte|s|) +|[mts](?:es|on|a) +|des +)({w_2}) +(ou) +(?:je|tu|ils?|elles? +> +\w+|[nv]ous +> +\w+) @@w,w <<- morphex(\1, ":[NAQ]", ":G") -2>> où # Confusion probable. Pour évoquer un lieu ou un moment, écrivez :|http://fr.wiktionary.org/wiki/o%C3%B9 @@ -11966,11 +11966,11 @@ !!! !!! -!!! Processeur avant impératif +!!! Processeur avant impératif !! !!! !!! __(p_n_importe_qui_quoi)__ n(’)importe quo?i @@1 <<- ~1>> ` @@ -12011,11 +12011,11 @@ TEST: Ne m’en rien laisser. !! !! -!!!! Impératif ! +!!!! Impératif ! !! !! !! # Confusions __[i]/imp(imp_confusion_2e_pers_pluriel)__ @@ -12144,11 +12144,11 @@ TEST: explique-{{leurs}} de quoi il est question. !! !! -!!!! Impératif: traits d’union manquants +!!!! Impératif: traits d’union manquants !! !! !! __[i]/imp(imp_union_moi_toi)__ (?ne/", False) -1>> veillez # Confusion probable : “veuillez” est une forme conjuguée du verbe “vouloir”.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=1939 @@ -12489,11 +12489,11 @@ !! !! -!!!! Infinitif +!!!! Infinitif !! !! !! __[i]/infi(infi_comment_où)__ (?:comment|où) +({w_2}(?:ée?s?|ez)) @@$ @@ -12593,11 +12593,11 @@ TEST: Ne pas aimer n’est pas oublier l’autre. !! !! -!!!! Conjugaison +!!!! Conjugaison !! !! !! ## 1sg __[i]/conj(conj_j)__ @@ -12845,11 +12845,11 @@ TEST: l’un des chants les plus diffusés pendant la Révolution culturelle __[i]/conj(conj_infi)__ ^ *({infi}) +({w_2}) @@*,$ - <<- morph(\1, ":Y", False) and morph(\2, ":V.[a-z_!?]+(?!.*:(?:3s|P|Q|Y|3p!))") + <<- morph(\1, ":Y", False) and morph(\2, ":V.[a-z_!?]+(?!.*:(?:3s|P|Q|Y|3p!))") -2>> =suggVerb(@, ":3s") # Conjugaison erronée. Accord avec « \1… ». Le verbe devrait être à la 3ᵉ personne du singulier. TEST: manger {{fais}} grossir. TEST: boire immodérément {{nuis}} à la santé @@ -13145,11 +13145,11 @@ TEST: Des hommes {{arrive}}. TEST: Des femmes ne {{demande}} rien. TEST: des femmes qui {{conduise}} la marche du monde. -!!!! Quel(le) que soit / quel(le)s que soient +!!!! Quel(le) que soit / quel(le)s que soient !! # singulier __[i]/conj(conj_quel_quelle_que_3sg1)__ quel(?:le|)s? que ([sf]\w+) +(?:l[ea]|ce(?:t|tte|)|[mts](?:a|on)|[nv]otre|leur) @@w <<- morphex(\1, ":V0e", ":3s") @@ -13222,11 +13222,11 @@ !! !! -!!!! Inversion verbe sujet +!!!! Inversion verbe sujet !! !! !! __[i]/conj(conj_que_où_comment_verbe_sujet_sing)__ (?:que?|où|comment|combien|dont|quand|pourquoi) +({w1}) (l(?:e(?:ur | )|a |’)|[mts](?:on|a) |ce(?:t|tte|) |[nv]otre |du ) *(?!plupart|majorité)({w1}) @@w,w,$ @@ -13301,11 +13301,11 @@ !! !! -!!!! Formes interrogatives ? +!!!! Formes interrogatives ? !! !! !! __[i]/inte(inte_union_xxxe_je)__ (?> attaquent TEST: {{prendrons}}-elles un verre avec moi ? -!!!! Verbe auxiliaire +!!!! Verbe auxiliaire !! __[i]/conf(conf_avoir_sujet_participe_passé)__ ({avoir})-(?:je|tu|ils?|elles?|on) +({ppas}) @@0,$ <<- morph(\1, ">avoir/", False) and morph(\2, ":V.......e_.*:Q", False) -1>> _ # Incohérence. La forme verbale “\2” ne peut pas être utilisé avec l’auxiliaire “avoir”, seulement avec l’auxiliaire “être”. __[i]/conf(conf_sujet_avoir_participe_passé)__ @@ -13453,20 +13453,20 @@ @@@@ @@@@ @@@@ @@@@ -@@@@GRAPH: last_graph +@@@@GRAPH: last_graph @@@@ @@@@ @@@@ @@@@ !! !! -!!!! Modes verbaux +!!!! Modes verbaux !! !! !! # conditionnel / futur @@ -13544,11 +13544,11 @@ pour peu [que|qu’|qu] @:(?:Os|M) @:I¬:[GYS] il peut [que|qu’|qu] @:(?:Os|M) @:I¬:[GYS] <<- /vmode/ -5>> =suggVerbMode(\5, ":S", \4) # Ce verbe devrait être au subjonctif. TEST: à condition qu’il {{finit}} son boulot. -TEST: pour peu qu’il {{prend}} son devoir sérieux… +TEST: pour peu qu’il {{prend}} son devoir sérieux… TEST: il se peut que nous {{avons}} tort. # Bien que + subjonctif __vmode_bien_que_subjonctif__ @@ -13606,20 +13606,20 @@ TEST: quand elle {{rencontrât}} son créateur TEST: lorsqu’il y {{eût}} du grabuge, nous montâmes tous sur le pont. @@@@ -@@@@END_GRAPH +@@@@END_GRAPH @@@@ @@@@ @@@@ @@@@ @@@@ -@@@@GRAPH: test +@@@@GRAPH: test @@@@ @@@@ @@@@ @@@@ @@ -13647,11 +13647,11 @@ TEST: Ça me fait {{plaisirs}}. @@@@ -@@@@END_GRAPH +@@@@END_GRAPH @@@@ !! !! @@ -13671,11 +13671,11 @@ !! !! !! !! !! -!! TESTS: Faux positifs potentiels +!! TESTS: Faux positifs potentiels !! !! !! !! !! !! @@ -13694,11 +13694,11 @@ !! !! !! !! -!!! À trier +!!! À trier !! TEST: L’homme sur le bateau de Patrick {{viens}} de temps en temps {{mangé}} chez moi. TEST: Ces marchands {{passe}} leur temps à se quereller. TEST: Ils jugeront en toute impartialité de ce cas {{délirante}}. TEST: Ils sont de manière si étonnante et si admirable {{arrivé}} à ce résultat… TEST: Les tests grand public de Jean-Paul {{montre}} des résultats surprenants. @@ -13733,15 +13733,15 @@ TODO: André Juin était un sculpteur français. TODO: La bataille de Monte Cassino révèle le génie militaire du général Juin. TODO: Les côtes sont dans leur ensemble extrêmement découpées. -!!! Indécidable +!!! Indécidable !! TEST: Du sable fin grippe les rouages (accord avec ce qui précède). TEST: Du monde noir sortent les envahisseurs (accord avec ce qui suit). -!!! Autres tests +!!! Autres tests !! TEST: Ça a l’air de t’aller. TEST: Et je m’en sors. TEST: C’est à chacun d’entre nous de suivre le modèle d’Amos. TEST: C’est toi qui voulais y aller. TEST: je ne suis qu’une joueuse en robe de soirée. @@ -13802,11 +13802,11 @@ TEST: Ce qu’ils nous ont fait TEST: Comment vous expliquez ça ? TEST: Comment vous expliquer ça ? -!!! Tests historiques +!!! Tests historiques !! ## Version 0.5.14 TEST: par le léger tissu de rayonne qui les protégeait en ce moment. ## Version 0.5.11 @@ -14578,11 +14578,11 @@ TEST: À qui mieux mieux, à qui mieux mieux TEST: L’est est loin, la gare de l’est aussi. -!!! Tests repris de LanguageTool +!!! Tests repris de LanguageTool !! ## NOTE : ces textes contiennent parfois des erreurs (corrigées quand repérées par le correcteur) TEST: Au voisinage du zéro absolu de température. TEST: La couronne périphérique alterne falaises abruptes et plages. TEST: Henri VIII rencontre François Iᵉʳ. @@ -16643,11 +16643,11 @@ TEST: Le 29 février 2016. TEST: Le 29 février 2020. TEST: Le 29-février-2004 -!!! Le Horla, de Guy de Maupassant +!!! Le Horla, de Guy de Maupassant !! # Nouvelle intégrale (228 lignes) # Certains points diffèrent du texte original tiré de Wikisource : # — les paragraphes sont souvent scindés pour des raisons pratiques. # — les virgules avant les points de suspension ont été supprimées # — moyen âge -> Moyen Âge @@ -17015,11 +17015,11 @@ TEST: Après l’homme le Horla. — Après celui qui peut mourir tous les jours, à toutes les heures, à toutes les minutes, par tous les accidents, est venu celui qui ne doit mourir qu’à son jour, à son heure, à sa minute, parce qu’il a touché la limite de son existence ! TEST: Non… non… sans aucun doute, sans aucun doute… il n’est pas mort… Alors… alors… il va donc falloir que je me tue, moi !… # FIN DU HORLA -!!! Double assassinat dans la rue morgue, d’Edgar Poe +!!! Double assassinat dans la rue morgue, d’Edgar Poe !! # Texte tiré de Wikisource # Les paragraphes ont été découpés pour réduire la longueur des tests. TEST: DOUBLE ASSASSINAT DANS LA RUE MORGUE — Edgar Poe TEST: Quelle chanson chantaient les sirènes ? quel nom Achille avait-il pris, quand il se cachait parmi les femmes ? – Questions embarrassantes, il est vrai, mais qui ne sont pas situées au-delà de toute conjecture. TEST: Sir Thomas Browne. @@ -17559,11 +17559,11 @@ TEST: Mais, après tout, c’est un brave homme. Je l’adore particulièrement pour un merveilleux genre de cant auquel il doit sa réputation de génie. TEST: Je veux parler de sa manie de nier ce qui est, et d’expliquer ce qui n’est pas[2]. # FIN DU DOUBLE ASSASSINAT DANS LA RUE MORGUE -!!! Vers Dorés, de Pythagore +!!! Vers Dorés, de Pythagore !! # Origine? TEST: Aux dieux, suivant les lois, rends de justes hommages ; TEST: Respecte le serment, les héros et les sages ; TEST: Honore tes parents, tes rois, tes bienfaiteurs ; TEST: Choisi parmi tes amis les hommes les meilleurs. @@ -17659,11 +17659,11 @@ TEST: Fin des vers dorés de Pythagore TEST: Note : Chez les Pythagoriciens, la monade ou l’unité représente Dieu-même, parce qu’elle n’est engendrée par aucun nombre, qu’elle les engendre tous, qu’elle est simple et sans aucune composition. La dyade, ou le nombre deux, est l’image de la nature créée, parce qu’elle est le premier produit de l’unité, parce qu’elle est inspirée, parce qu’ayant des parties elle peut se décomposer et se défendre. La monade et la dyade réunies forment le ternaire, et représentent l’immensité de tout ce qui existe, l’être immuable et la matière altérable et changeante. J’ignore par quelle propriété le quaternaire, le nombre quatre, est encore un emblème de la divinité. # FIN DES VERS DORÉS DE PYTHAGORE -!!! Épître du feu philosophique, de Jean Pontanus +!!! Épître du feu philosophique, de Jean Pontanus !! # Les paragraphes ont été découpés et ne correspondent pas à ceux du texte. TEST: Épître du Feu Philosophique TEST: Lettre concernant la pierre dite philosophale TEST: Jean Pontanus TEST: in Theatrum Chimicum, 1614, t. III @@ -17705,11 +17705,11 @@ TEST: Si tu penses bien profondément aux propriétés du feu ci-dessus, tu la connaîtras, mais non autrement. TEST: Donc, touché d’un mouvement de pitié, j’ai écrit ceci ; mais, et afin que je me satisfasse, le feu n’est point transmué avec la matière, comme je l’ai dit ci-dessus. TEST: J’ai bien voulu le dire et en avertir les prudents de ces choses, pour qu’ils ne dépensent pas inutilement leur argent, mais qu’ils sachent auparavant ce qu’ils doivent chercher, et, par ce moyen, parviendront à la vérité de l’Art ; non pas autrement. À Dieu. # FIN DE L’ÉPÎTRE DU FEU PHILOSOPHIQUE -!!! Le Misanthrope, de Molière +!!! Le Misanthrope, de Molière !! TEST: LE MISANTHROPE (1666) TEST: de Molière TEST: Texte établi par Charles Louandre, Charpentier, 1910 (2, pp. 170-239). TEST: PERSONNAGES TEST: Alceste, amant de Célimène,