Index: gc_lang/fr/rules.grx ================================================================== --- gc_lang/fr/rules.grx +++ gc_lang/fr/rules.grx @@ -1,10 +1,10 @@ # # RÈGLES DE GRAMMAIRE FRANÇAISE POUR GRAMMALECTE # par Olivier R. # -# Copyright © 2011-2019. +# Copyright © 2011-2020. # # This file is part of Grammalecte. # # Grammalecte is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -18,22 +18,21 @@ # # You should have received a copy of the GNU General Public License # along with Grammalecte. If not, see # -# RÈGLES PAR EXPRESSIONS RÉGULIÈRES - # DOCUMENTATION -# Expressions régulières en Python : http://docs.python.org/library/re.html # [++] : 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 @@ -40,10 +39,12 @@ # * 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 @@ -1466,24 +1467,10 @@ ({w1})‑({w1}) @@0,$ <<- ->> \1\2|\1-\2 # Trait d’union conditionnel. Erreur de numérisation ? TEST: __ocr__ c’est {{anti‑américain}} - -## Lettres isolées -# Note: l’option “mapos” cherche les apostrophes manquantes après les lettres l, d, n, m, t, s, j, c, ç -__[s]/ocr(ocr_lettres_isolées)!2__ - \w(?!’) - <<- not re.search("[0-9aàAÀyYdlnmtsjcçDLNMTSJCÇ_]", \0) and not before("\\d[   ]+$") and not (\0.isupper() and after0(r"^\.")) - ->> _ # Lettre isolée : erreur de numérisation ? - -TEST: __ocr__ des verres luisent sur {{i}} le bureau blanc. -TEST: __ocr__ la voix, {{e}} est celle de… -TEST: __ocr__ ressemble {{h}} une fenêtre de serre. -TEST: __ocr__ Ça a duré 3 h. -TEST: __ocr__ c’est alors que je suis fort. - ## Caractères rares __/ocr(ocr_caractères_rares)__ \w*[{}<>&*#£]+\w* <<- \0 != "<" and \0 != ">" ->> _ # Erreur de numérisation ? Cette chaîne contient un caractère de fréquence rare. @@ -1988,11 +1975,11 @@ <<- not morph(<1, ":D") >>> <<- morph(<1, ":A.*:[me]:[si]") =>> add_morph(\1, [">nombre/:G:D"]) <<- __else__ =>> define(\1, [">nombre/:G:D"]) plein [de|d’] @:[AN] - <<- not morph(<1, ">(?:être|(?:re|)devenir|rester|demeurer|sembler|para[iî]tre)/") =>> =define(\1, [":G"]) + <<- not morph(<1, ":D.*:m|>(?:être|(?:re|)devenir|rester|demeurer|sembler|para[iî]tre)/") =>> =define(\1, [":G"]) source [de|d’] <<- morph(<1, ">(?:être|(?:re|)devenir|rester|demeurer|sembler|para[iî]tre)/") =>> define(\1, [":LV"]) tout feu ?,¿ tout >flamme @@ -2497,10 +2484,25 @@ [n|m|t|s|j|l|c|ç|d] *WORD <<- /ocr/ re.search("^[aâeéèêiîouyh]", \2) -1:.2>> \1’ # Lettre isolée. Erreur de numérisation ? TEST: __ocr__ {{J }}arrive demain + +# Note: l’option “mapos” cherche les apostrophes manquantes après les lettres l, d, n, m, t, s, j, c, ç +__ocr_lettres_isolées2!2__ + [á|â|ä|b|c|ç|d|e|é|è|ê|ë|f|g|h|i|í|ì|î|ï|j|k|l|m|n|o|ó|ò|ô|ö|p|q|r|s|t|u|ú|ù|û|ü|v|w|x|z] + <<- not before("\\d[   ]+$") and not (\1.isupper() and value(>1, "|.||")) + ->> _ # Lettre isolée : erreur de numérisation ? + +TEST: __ocr__ des verres luisent sur {{i}} le bureau blanc. +TEST: __ocr__ la voix, {{e}} est celle de… +TEST: __ocr__ ressemble {{h}} une fenêtre de serre. +TEST: __ocr__ Ça a duré 3 h. +TEST: __ocr__ c’est alors que je suis fort. +TEST: __ocr__ X +TEST: __ocr__ V. + # virgules __ocr_virgules__ [il|le|la|l’|les|de|d’|ne|n’|me|m’|te|t’|se|s’|à|ce|cet|cette|mon|ma|ta|sa|mes|tes|ses|nos|vos|quelque|quelques|au|aux] , <<- /ocr/ space_after(\1, 0, 0) and not \1.isupper() or value(\1, "|à|") ->> \1 # Erreur de numérisation ? Virgule superflue ? @@ -12979,10 +12981,13 @@ <<- ~1:3>> * [le|un|ce|mon|ton|son] putain [de|d’] @:[NA].*:[me] <<- ~2:3>> * + quand même @:[AW]¬:D + <<- ~1:2>> * + tambour battant tambours battants <<- morph(<1, ":(?:V|N:f)", ":G") ~>> * tête baissée @@ -13693,21 +13698,21 @@ >avoir ?[pas|jamais|plus|guère|point]¿ un peu >avoir ?[pas|jamais|plus|guère|point]¿ un petit peu >avoir ?[pas|jamais|plus|guère|point]¿ un tout petit peu <<- morph(>1, ":[QY]") ~2:0>> * - >avoir [besoin|confiance|connaissance|conscience|crainte|envie|faim|honte|peur|peine|soif|vent] + >avoir [besoin|confiance|connaissance|conscience|crainte|envie|faim|honte|peur|peine|pitié|soif|vent] >avoir bon [dos|fond] >avoir bon pied ?,¿ bon œil >avoir carte blanche >avoir forme [humaine|animale] >avoir partie [gagnée|liée] >avoir voix au chapitre <<- ~2:0>> ␣ <<- =>> define(\2, [":LV"]) - >avoir [pas|jamais|plus|guère|point] [besoin|confiance|connaissance|conscience|crainte|envie|faim|honte|peur|peine|soif|vent] + >avoir [pas|jamais|plus|guère|point] [besoin|confiance|connaissance|conscience|crainte|envie|faim|honte|peur|peine|pitié|soif|vent] >avoir [pas|jamais|plus|guère|point] bon [dos|fond] >avoir [pas|jamais|plus|guère|point] bon pied ?,¿ bon œil >avoir [pas|jamais|plus|guère|point] carte blanche >avoir [pas|jamais|plus|guère|point] forme [humaine|animale] >avoir [pas|jamais|plus|guère|point] partie [gagnée|liée] @@ -13714,11 +13719,11 @@ >avoir [pas|jamais|plus|guère|point] quartier libre >avoir [pas|jamais|plus|guère|point] voix au chapitre <<- ~3:0>> ␣ <<- =>> define(\3, [":LV"]) - >avoir ?[pas|jamais|plus|guère|point]¿ [tous|toutes] les $:B [besoin|confiance|connaissance|conscience|crainte|envie|faim|honte|peur|peine|soif|vent] + >avoir ?[pas|jamais|plus|guère|point]¿ [tous|toutes] les $:B [besoin|confiance|connaissance|conscience|crainte|envie|faim|honte|peur|peine|pitié|soif|vent] >avoir ?[pas|jamais|plus|guère|point]¿ [tous|toutes] les $:B @:(?:Q|V1.*:Y) <<- ~2:-2>> * n’ >avoir que $:Q <<- ~3>> * @@ -13746,21 +13751,21 @@ /VCint ?[pas|jamais|plus|guère|point]¿ un peu /VCint ?[pas|jamais|plus|guère|point]¿ un petit peu /VCint ?[pas|jamais|plus|guère|point]¿ un tout petit peu <<- morphVC(\1, ":V0a") and morph(>1, ":[QY]") ~2:0>> * - /VCint [besoin|confiance|connaissance|conscience|crainte|envie|faim|honte|peur|peine|soif|vent] + /VCint [besoin|confiance|connaissance|conscience|crainte|envie|faim|honte|peur|peine|pitié|soif|vent] /VCint bon [dos|fond] /VCint bon pied ?,¿ bon œil /VCint carte blanche /VCint forme [humaine|animale] /VCint partie [gagnée|liée] /VCint voix au chapitre <<- morphVC(\1, ":V0a") ~2:0>> ␣ <<- __also__ =>> define(\2, [":LV"]) - /VCint [pas|jamais|plus|guère|point] [besoin|confiance|connaissance|conscience|crainte|envie|faim|honte|peur|peine|soif|vent] + /VCint [pas|jamais|plus|guère|point] [besoin|confiance|connaissance|conscience|crainte|envie|faim|honte|peur|peine|pitié|soif|vent] /VCint [pas|jamais|plus|guère|point] bon [dos|fond] /VCint [pas|jamais|plus|guère|point] bon pied ?,¿ bon œil /VCint [pas|jamais|plus|guère|point] carte blanche /VCint [pas|jamais|plus|guère|point] forme [humaine|animale] /VCint [pas|jamais|plus|guère|point] partie [gagnée|liée] @@ -13767,11 +13772,11 @@ /VCint [pas|jamais|plus|guère|point] quartier libre /VCint [pas|jamais|plus|guère|point] voix au chapitre <<- morphVC(\1, ":V0a") ~3:0>> ␣ <<- __also__ =>> define(\3, [":LV"]) - /VCint ?[pas|jamais|plus|guère|point]¿ [tous|toutes] les $:B [besoin|confiance|connaissance|conscience|crainte|envie|faim|honte|peur|peine|soif|vent] + /VCint ?[pas|jamais|plus|guère|point]¿ [tous|toutes] les $:B [besoin|confiance|connaissance|conscience|crainte|envie|faim|honte|peur|peine|pitié|soif|vent] /VCint ?[pas|jamais|plus|guère|point]¿ [tous|toutes] les $:B @:(?:Q|V1.*:Y) <<- morphVC(\1, ":V0a") ~2:-2>> * __purge_après_verbe__ @@ -19562,10 +19567,17 @@ TEST: sans {{dérogez}} aux règles en vigueur dans cet établissement TEST: Il faut être sans préjugés. TEST: je craignais d’être pour toujours abandonnée +__infi_locutions__ + >sentir le vent tourné + <<- /infi/ --1>> tourner # Locution “sentir le vent tourner ”. Utilisez l’infinitif. + +TEST: j’ai senti le vent {{tourné}} +TEST: elles sentent le vent tourner en leur faveur. + !!!! Participes présents !! __conj_participe_présent__ [ne|lui|me|te|se|nous|vous] ~ants$ @@ -22283,10 +22295,11 @@ TEST: Pesons le pour et le contre. TEST: Va la demander au concierge. TEST: Allons le questionner encore une fois. TEST: Sois le pire des salopards. TEST: L’Astrance brille de mille feux, écrit le Michelin 2010. +TEST: Faites le plein de culture en vous abonnant dès 1 € ! __imp_union_en__ *WORD en <<- /imp/ space_after(\1, 1, 1)