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)