Index: compile_rules.py ================================================================== --- compile_rules.py +++ compile_rules.py @@ -147,11 +147,11 @@ if i == -1: print("# Error: no condition at line " + sLineId) return None sRegex = s[:i].strip() s = s[i+4:] - + # JS groups positioning codes m = re.search("@@\\S+", sRegex) if m: tGroups = jsconv.groupsPositioningCodeToList(sRegex[m.start()+2:]) sRegex = sRegex[:m.start()].strip() @@ -253,11 +253,11 @@ #### iGroup / positioning iGroup = int(m.group(2)) if m.group(2) else 0 if iGroup > nGroup: print("# Selected group > group number in regex at line " + sIdAction) - + #### ACTION sAction = sAction[m.end():].strip() cAction = m.group(1) if cAction == "-": ## error @@ -285,11 +285,11 @@ for x in re.finditer(r"\\(\d+)", sMsg): if int(x.group(1)) > nGroup: print("# Error in groups in message at line " + sIdAction + " ("+str(nGroup)+" groups only)") if re.search("[.]\\w+[(]", sMsg): print("# Error in message at line " + sIdAction + ": This message looks like code. Line should begin with =") - + if sAction[0:1] == "=" or cAction == "=": if "define" in sAction and not re.search(r"define\(\\\d+ *, *\[.*\] *\)", sAction): print("# Error in action at line " + sIdAction + ": second argument for define must be a list of strings") sAction = prepareFunction(sAction) sAction = sAction.replace("m.group(i[4])", "m.group("+str(iGroup)+")") @@ -469,11 +469,11 @@ pass elif sLine.startswith("!!"): m = zBookmark.search(sLine) nExMk = len(m.group(0)) if sLine[nExMk:].strip(): - printBookmark(nExMk-2, sLine[nExMk:].strip(), i) + printBookmark(nExMk-2, sLine[nExMk:-3].strip(), i) elif sLine.startswith((" ", "\t")): lRuleLine[len(lRuleLine)-1][1] += " " + sLine.strip() else: lRuleLine.append([i, sLine.strip()]) 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 !! !! !! DEF: avoir [aeo]\w* DEF: etre [êeésf]\w+ @@ -240,11 +240,11 @@ !! !! !! !! !! -!! PASSE 0: PARAGRAPHE PAR PARAGRAPHE +!! PASSE 0: PARAGRAPHE PAR PARAGRAPHE !! !! !! !! !! !! @@ -266,11 +266,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. @@ -375,11 +375,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)__ @@ -524,11 +524,11 @@ !!! !!! -!!! Processeur: balises HTML et LaTeX +!!! Processeur: balises HTML et LaTeX !! !!! !!! # HTML __/html(p_html_amp_xxx)__ &[a-zA-Z]+; <<- ~>> _ @@ -552,11 +552,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 @@ -651,11 +651,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)__ @@ -674,11 +674,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. @@ -732,11 +732,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. @@ -761,11 +761,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. » @@ -800,11 +800,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. @@ -823,11 +823,11 @@ TEST: « {{- }}Viens ! On va en finir avec cette affaire, sale fils de pute. ->> "— |– " !! !! -!!!! Ponctuations redondantes +!!!! Ponctuations redondantes !! !! !! # virgules et points __/typo(typo_virgules_points)__ @@ -871,11 +871,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. @@ -900,11 +900,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. @@ -954,11 +954,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) @@ -996,11 +996,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,$ @@ -1048,11 +1048,11 @@ TEST: {{ce}} animal est dangereux !! !! -!!!! Divers +!!!! Divers !! !! !! ## NF (memo: don’t use flag i) __[s]/nf(nf_norme_française)__ @@ -1071,11 +1071,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,$ @@ -1129,11 +1129,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 @@ -1167,11 +1167,11 @@ TEST: je veux 200 euros. !! !! -!!!! Grands nombres +!!!! Grands nombres !! !! !! __[s]/num(num_grand_nombre_soudé)__ \d\d\d\d+ @@ -1216,11 +1216,11 @@ TEST: Il a perdu {{20 000}} euros à la Bourse en un seul mois. !! !! -!!!! Dates +!!!! Dates !! !! !! __[i]/date(date_nombres)__ (?> _ # Cette date est invalide. @@ -1233,11 +1233,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() @@ -1250,11 +1250,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("‑", "") @@ -1288,11 +1288,11 @@ !! !! !! !! !! -!! PASSE 1: PHRASE PAR PHRASE +!! PASSE 1: PHRASE PAR PHRASE !! !! !! !! !! !! @@ -1314,11 +1314,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("[’']$")) @@ -1326,11 +1326,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 ». @@ -1378,11 +1378,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"]) @@ -1389,11 +1389,11 @@ __[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,$ <<- not checkDateWithString(\1, \2, \3) ->> _ # Cette date est invalide. @@ -1431,11 +1431,11 @@ !!! !!! -!!! Processeur: épuration des signes inutiles et quelques simplifications +!!! Processeur: épuration des signes inutiles et quelques simplifications !! !!! !!! # fin de phrase __(p_fin_de_phrase)__ [.?!:;…][ .?!… »”")]*$ <<- ~>> * @@ -1501,11 +1501,11 @@ TEST: New York {{étaient}} {{devenue}} la plaque tournante de tous les trafics. !! !! -!!!! Traits d’union +!!!! Traits d’union !! !! !! __/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()) @@ -1982,11 +1982,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:] @@ -1995,11 +1995,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,11 +3104,11 @@ 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. @@ -4488,11 +4488,11 @@ !! !! -!!!! Pronoms + incohérences +!!!! Pronoms + incohérences !! !! !! __[i](p_m_enfin)__ m’enfin <<- ~>> * __[i]/conf(conf_j_y_en_qqch)__ @@ -4560,11 +4560,11 @@ TEST: Ne parfois pas être celui qui sabote l’ambiance. !! !! -!!!! Formes verbales sans sujet +!!!! Formes verbales sans sujet !! !! !! ## Incohérences avec formes verbales 1sg et 2sg sans sujet __[i](p_notre_père_qui_es_au_cieux)__ notre père (qui est? aux cieux) @@11 <<- ~1>> * @@ -4639,11 +4639,11 @@ !! !! -!!!! Locutions invariables +!!!! Locutions invariables !! !! !! ## plus que prévu / mois que prévu __[i]/sgpl(sgpl_que_prévu1)__ (plus|moins|autant) +que (prévu(?:es?|s)) @@0,$ <<- -2>> prévu # Invariable. Implicitement, \1 que ce qui était prévu. @@ -4663,11 +4663,11 @@ !! !! -!!!! Tout, tous, toute, toutes +!!!! Tout, tous, toute, toutes !! !! !! __[i](p_fais_les_tous)__ fai(?:tes|sons|s)-(?:les|[nv]ous) (tou(?:te|)s) @@$ <<- ~1>> * @@ -4766,11 +4766,11 @@ !! !! -!!!! Adverbes de négation +!!!! Adverbes de négation !! !! !! __[i]/neg(ne_manquant1)__ (?:je|tu|ils?|on|elles?) ([bcdfgjklmnpqrstvwxz][\w-]*) (pas|rien|jamais|guère) @@w,$ @@ -4800,11 +4800,11 @@ !! !! -!!!! Infinitif +!!!! Infinitif !! !! !! __[i](p_ne_plus_pas_jamais_beaucoup_trop_rien)__ ne (?:pas|plus|jamais) +(beaucoup|trop|rien) @@$ <<- ~1>> * @@ -4845,11 +4845,11 @@ !!! !!! -!!! Processeur: épuration des adverbes, locutions adverbiales, interjections et expressions usuelles +!!! Processeur: épuration des adverbes, locutions adverbiales, interjections et expressions usuelles !! !!! !!! # Dates __[s](p_date)__ @@ -5900,11 +5900,11 @@ # # //////////////////////////////////////// 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). @@ -5917,11 +5917,11 @@ !! !! -!!!! Groupe nominal (1) +!!!! Groupe nominal (1) !! !! !! #### 1 mot @@ -6497,11 +6497,11 @@ !! !! -!!!! Groupe nominal (2) +!!!! Groupe nominal (2) !! !! !! ## Sans article @@ -7014,11 +7014,11 @@ !! !! -!!!! Groupe nominal (3) +!!!! Groupe nominal (3) !! !! !! ## nombre @@ -7068,11 +7068,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,$ @@ -7130,11 +7130,11 @@ !! !! -!!!! Singuliers & Pluriels +!!!! Singuliers & Pluriels !! !! !! #### Prépositions @@ -7528,11 +7528,11 @@ !! !! -!!!! Confusions +!!!! Confusions !! !! !! # à / a __[i]/conf(conf_suite_à)__ @@ -8973,11 +8973,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) @@ -8991,11 +8991,11 @@ !! !! -!!!! Casse: majuscules et minuscules +!!!! Casse: majuscules et minuscules !! !! !! # Les jours __[s]/maj(maj_jours_semaine)__ @@ -9161,11 +9161,11 @@ !! !! !! !! !! -!!! Conjugaisons +!!! Conjugaisons !! !! !! !! !! !! @@ -9176,11 +9176,11 @@ !! !! !! -!!!! Infinitif +!!!! Infinitif !! !! !! __[i]/infi(infi_à_en)__ à en ({w_2}) @@5 @@ -9332,11 +9332,11 @@ !!! !!! -!!! Processeur: simplification des substantifs +!!! Processeur: simplification des substantifs !! !!! !!! ### @ : we remove @ we introduced after le/la/les in some cases __(p_arobase)__ @ <<- ~>> * @@ -9458,11 +9458,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) >>> @@ -9496,11 +9496,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 : @@ -9557,11 +9557,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) ") @@ -9591,11 +9591,11 @@ !! !! -!!!! Infinitif +!!!! Infinitif !! !! !! __[i]/infi(infi_d_en_y)__ d’(?:en|y) +({w_2}) @@$ @@ -9704,11 +9704,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,$ @@ -9746,11 +9746,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}) @@$ @@ -9839,11 +9839,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,$ @@ -9872,11 +9872,11 @@ TEST: nous laisserons étourdi cet homme. !! !! -!!!! Participes passés: être, avoir été, sembler (+être via pp), devenir, rester, (re)devenir, paraître + participe passé / adj +!!!! Participes passés: être, avoir été, sembler (+être via pp), devenir, rester, (re)devenir, paraître + participe passé / adj !! !! !! __[i]/ppas(ppas_je_verbe)__ j(?:e +|’(?:y +|en +|))(?:ne +|n’|)((?:s[oue]|étai|fus|dev|re(?:dev|st)|par)\w*|a(?:ie?|vais|urais?) +été|eus(?:se|) +été) +({w_2}) @@w,$ @@ -10052,11 +10052,11 @@ TEST: Partir aurait été assurer sa survie. !! !! -!!!! Participes passés: pouvoir/sembler/paraître/vouloir/devoir/croire/déclarer/penser/dire/affirmer + être/avoir été +!!!! Participes passés: pouvoir/sembler/paraître/vouloir/devoir/croire/déclarer/penser/dire/affirmer + être/avoir été !! !! !! __[i](p_risque_d_être)__ risqu\w+ +(d’)être @@* <<- ~1>> * @@ -10164,11 +10164,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) @@ -10178,11 +10178,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). @@ -10279,11 +10279,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]") @@ -10349,11 +10349,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,$ @@ -10493,11 +10493,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. @@ -10646,11 +10646,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,$ @@ -10719,11 +10719,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û ». @@ -10763,11 +10763,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)__ (? +\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 @@ -10861,11 +10861,11 @@ !!! !!! -!!! Processeur avant impératif +!!! Processeur avant impératif !! !!! !!! __(p_n_importe_qui_quoi)__ n(’)importe quo?i @@1 <<- ~1>> ` @@ -10906,11 +10906,11 @@ TEST: Ne m’en rien laisser. !! !! -!!!! Impératif ! +!!!! Impératif ! !! !! !! # Confusions __[i]/imp(imp_confusion_2e_pers_pluriel)__ @@ -11038,11 +11038,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)__ (?> 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é)__ @@ -12343,11 +12343,11 @@ !! !! -!!!! Modes verbaux +!!!! Modes verbaux !! !! !! # conditionnel / futur @@ -12508,11 +12508,11 @@ !! !! !! !! !! -!! TESTS: Faux positifs potentiels +!! TESTS: Faux positifs potentiels !! !! !! !! !! !! @@ -12531,11 +12531,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. @@ -12570,15 +12570,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. @@ -12639,11 +12639,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 @@ -13415,11 +13415,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ᵉʳ. @@ -15480,11 +15480,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 @@ -15852,11 +15852,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. @@ -16396,11 +16396,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. @@ -16496,11 +16496,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 @@ -16542,11 +16542,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,