Grammalecte  Diff

Differences From Artifact [99f4eb211e]:

To Artifact [d07fc36f0c]:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34


35
36
37
38
39
40
41
42
43
44


45
46
47
48
49
50
51
#
#   RÈGLES DE GRAMMAIRE FRANÇAISE POUR GRAMMALECTE
#   par Olivier R.
#
#   Copyright © 2011-2019.
#
#   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
#   the Free Software Foundation, either version 3 of the License, or
#   (at your option) any later version.
#
#   Grammalecte is distributed in the hope that it will be useful,
#   but WITHOUT ANY WARRANTY; without even the implied warranty of
#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#   GNU General Public License for more details.
#
#   You should have received a copy of the GNU General Public License
#   along with Grammalecte.  If not, see <http://www.gnu.org/licenses/>
#

# 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



# Groups positioning code for JavaScript:
# Always begins by @@
#   0 ... n         left boundary position from left
#   $               right boundary
#   w               word boundaries
#   *               something somewhere
#   **              something somewhere after previous group
#   >x:_            within group x, _ is group position code within group x

# Fin d’interprétation du fichier avec une ligne commençant par #END



# ERREURS COURANTES
# http://fr.wikipedia.org/wiki/Wikip%C3%A9dia:Fautes_d%27orthographe/Courantes


!!
!!




|

















<
<

<








>
>










>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22


23

24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#
#   RÈGLES DE GRAMMAIRE FRANÇAISE POUR GRAMMALECTE
#   par Olivier R.
#
#   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
#   the Free Software Foundation, either version 3 of the License, or
#   (at your option) any later version.
#
#   Grammalecte is distributed in the hope that it will be useful,
#   but WITHOUT ANY WARRANTY; without even the implied warranty of
#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#   GNU General Public License for more details.
#
#   You should have received a copy of the GNU General Public License
#   along with Grammalecte.  If not, see <http://www.gnu.org/licenses/>
#



# DOCUMENTATION


# [++] : séparateur des règles pour le paragraphe et des règles pour la phrase.

# Types d’action:
#   ->> erreur
#   ~>> préprocesseur de texte
#   =>> désambiguïsateur

# RÈGLES PAR EXPRESSIONS RÉGULIÈRES
# Expressions régulières en Python : http://docs.python.org/library/re.html
# Groups positioning code for JavaScript:
# Always begins by @@
#   0 ... n         left boundary position from left
#   $               right boundary
#   w               word boundaries
#   *               something somewhere
#   **              something somewhere after previous group
#   >x:_            within group x, _ is group position code within group x

# Fin d’interprétation du fichier avec une ligne commençant par #END



# ERREURS COURANTES
# http://fr.wikipedia.org/wiki/Wikip%C3%A9dia:Fautes_d%27orthographe/Courantes


!!
!!
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
## Trait d’union conditionnel
__[i]/ocr(tu_trait_union_conditionnel)__
    ({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
__<s>/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.

__<s>/ocr(ocr_doublons_caractères_rares)__







<
<
<
<
<
<
<
<
<
<
<
<
<
<







1465
1466
1467
1468
1469
1470
1471














1472
1473
1474
1475
1476
1477
1478
## Trait d’union conditionnel
__[i]/ocr(tu_trait_union_conditionnel)__
    ({w1})‑({w1})  @@0,$
    <<- ->> \1\2|\1-\2                                                                              # Trait d’union conditionnel. Erreur de numérisation ?

TEST: __ocr__ c’est {{anti‑américain}}
















## Caractères rares
__<s>/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.

__<s>/ocr(ocr_doublons_caractères_rares)__
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000

    nombre  [de|d’|des]  [@:[NA]|<end>|,]
        <<- 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"])

    source [de|d’]
        <<- morph(<1, ">(?:être|(?:re|)devenir|rester|demeurer|sembler|para[iî]tre)/") =>> define(\1, [":LV"])

    tout feu ?,¿ tout >flamme
        <<- ~>> ␣
        <<- =>> define(\1, [":A:e:i"])







|







1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987

    nombre  [de|d’|des]  [@:[NA]|<end>|,]
        <<- 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, ":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
        <<- ~>> ␣
        <<- =>> define(\1, [":A:e:i"])
2495
2496
2497
2498
2499
2500
2501















2502
2503
2504
2505
2506
2507
2508
## lettres isolées
__ocr_lettres_isolées__
    [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

















# 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 ?

TEST: __ocr__ Pierre entre pour {{se,}} rapprocher de L







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







2482
2483
2484
2485
2486
2487
2488
2489
2490
2491
2492
2493
2494
2495
2496
2497
2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510
## lettres isolées
__ocr_lettres_isolées__
    [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, "|.|<end>|"))
    ->> _           # 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 ?

TEST: __ocr__ Pierre entre pour {{se,}} rapprocher de L
12977
12978
12979
12980
12981
12982
12983



12984
12985
12986
12987
12988
12989
12990
    pour les uns    @:¬:[AQ].*:[me]:[pi]
    pour les autres @:¬:[AQ].*:[pi]
        <<- ~1:3>> *

    [le|un|ce|mon|ton|son]  putain  [de|d’]  @:[NA].*:[me]
        <<- ~2:3>> *




    tambour battant
    tambours battants
        <<- morph(<1, ":(?:V|N:f)", ":G") ~>> *

    tête baissée
        <<- morph(<1, ":[NV]", ":D.*:[fe]:[si]") ~>> *








>
>
>







12979
12980
12981
12982
12983
12984
12985
12986
12987
12988
12989
12990
12991
12992
12993
12994
12995
    pour les uns    @:¬:[AQ].*:[me]:[pi]
    pour les autres @:¬:[AQ].*:[pi]
        <<- ~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
        <<- morph(<1, ":[NV]", ":D.*:[fe]:[si]") ~>> *

13691
13692
13693
13694
13695
13696
13697
13698
13699
13700
13701
13702
13703
13704
13705
13706
13707
13708
13709
13710
13711
13712
13713
13714
13715
13716
13717
13718
13719
13720
13721
13722
13723
13724
13725
13726
    >avoir  ?[pas|jamais|plus|guère|point]¿  un [moment|instant]
    >avoir  ?[pas|jamais|plus|guère|point]¿  un minimum
    >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  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]  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]
    >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  @:(?:Q|V1.*:Y)
        <<- ~2:-2>> *

    n’  >avoir  que  $:Q
        <<- ~3>> *

    n’  >avoir  que  $:W  $:Q







|









|










|







13696
13697
13698
13699
13700
13701
13702
13703
13704
13705
13706
13707
13708
13709
13710
13711
13712
13713
13714
13715
13716
13717
13718
13719
13720
13721
13722
13723
13724
13725
13726
13727
13728
13729
13730
13731
    >avoir  ?[pas|jamais|plus|guère|point]¿  un [moment|instant]
    >avoir  ?[pas|jamais|plus|guère|point]¿  un minimum
    >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|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|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]
    >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|pitié|soif|vent]
    >avoir  ?[pas|jamais|plus|guère|point]¿  [tous|toutes] les $:B  @:(?:Q|V1.*:Y)
        <<- ~2:-2>> *

    n’  >avoir  que  $:Q
        <<- ~3>> *

    n’  >avoir  que  $:W  $:Q
13744
13745
13746
13747
13748
13749
13750
13751
13752
13753
13754
13755
13756
13757
13758
13759
13760
13761
13762
13763
13764
13765
13766
13767
13768
13769
13770
13771
13772
13773
13774
13775
13776
13777
13778
13779
    /VCint  ?[pas|jamais|plus|guère|point]¿  un [moment|instant]
    /VCint  ?[pas|jamais|plus|guère|point]¿  un minimum
    /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  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]  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]
    /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  @:(?:Q|V1.*:Y)
        <<- morphVC(\1, ":V0a") ~2:-2>> *


__purge_après_verbe__
    $:V  ?pas¿  jour et nuit
    $:V  ?pas¿  nuit et jour







|









|










|







13749
13750
13751
13752
13753
13754
13755
13756
13757
13758
13759
13760
13761
13762
13763
13764
13765
13766
13767
13768
13769
13770
13771
13772
13773
13774
13775
13776
13777
13778
13779
13780
13781
13782
13783
13784
    /VCint  ?[pas|jamais|plus|guère|point]¿  un [moment|instant]
    /VCint  ?[pas|jamais|plus|guère|point]¿  un minimum
    /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|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|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]
    /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|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__
    $:V  ?pas¿  jour et nuit
    $:V  ?pas¿  nuit et jour
19560
19561
19562
19563
19564
19565
19566







19567
19568
19569
19570
19571
19572
19573
TEST: C’est sans {{attaqué}} la journée.
TEST: sans nous {{chassez}} de chez lui
TEST: sans {{dérogez}} aux règles en vigueur dans cet établissement
TEST: Il faut être sans préjugés.
TEST: je craignais d’être pour toujours abandonnée










!!!! Participes présents                                                                          !!

__conj_participe_présent__
    [ne|lui|me|te|se|nous|vous]  ~ants$
        <<- /infi/ morph(\2, ":A") -2>> =\2[:-1]                                        # Un participe présent est invariable.|http://fr.wiktionary.org/wiki/participe_pr%C3%A9sent








>
>
>
>
>
>
>







19565
19566
19567
19568
19569
19570
19571
19572
19573
19574
19575
19576
19577
19578
19579
19580
19581
19582
19583
19584
19585
TEST: C’est sans {{attaqué}} la journée.
TEST: sans nous {{chassez}} de chez lui
TEST: sans {{dérogez}} aux règles en vigueur dans cet établissement
TEST: 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$
        <<- /infi/ morph(\2, ":A") -2>> =\2[:-1]                                        # Un participe présent est invariable.|http://fr.wiktionary.org/wiki/participe_pr%C3%A9sent

22281
22282
22283
22284
22285
22286
22287

22288
22289
22290
22291
22292
22293
22294
TEST: Notez le peu de cas qui en est fait en général dans les médias
TEST: deux fois par an, souligne le Dr Assouline
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.



__imp_union_en__
    *WORD  en
        <<- /imp/ space_after(\1, 1, 1)
            and morph(\1, ":E", ":[GM]|>(?:venir|aller|partir)/") and morph(>1, ":|<end>|>,", ":(?:N|A|Q|Y|M|P|H|T|D|Ov)|>(?:pour|plus|moins|mieux|peu|plupart|trop|très|une?)/") and morph(<1, ":Cc|<start>|>,")
        ->> \1-\2                                       # S’il s’agit d’un impératif, mettez un trait d’union.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=4206







>







22293
22294
22295
22296
22297
22298
22299
22300
22301
22302
22303
22304
22305
22306
22307
TEST: Notez le peu de cas qui en est fait en général dans les médias
TEST: deux fois par an, souligne le Dr Assouline
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)
            and morph(\1, ":E", ":[GM]|>(?:venir|aller|partir)/") and morph(>1, ":|<end>|>,", ":(?:N|A|Q|Y|M|P|H|T|D|Ov)|>(?:pour|plus|moins|mieux|peu|plupart|trop|très|une?)/") and morph(<1, ":Cc|<start>|>,")
        ->> \1-\2                                       # S’il s’agit d’un impératif, mettez un trait d’union.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=4206