Grammalecte  Check-in [16deb93a42]

Overview
Comment:[fr] ajustements
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | fr | rg
Files: files | file ages | folders
SHA3-256: 16deb93a422d2de067649362fd977975384447295d9af0a607d65e0725d01387
User & Date: olr on 2018-09-05 07:10:38
Other Links: branch diff | manifest | tags
Context
2018-09-05
12:19
[fr] ajustements check-in: 19880a1b11 user: olr tags: fr, rg
07:10
[fr] ajustements check-in: 16deb93a42 user: olr tags: fr, rg
2018-09-04
11:58
[graphspell] echo() update check-in: c76919a14a user: olr tags: graphspell, rg
Changes

Modified gc_lang/fr/rules.grx from [e582448e86] to [8e786c1fc8].

439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
...
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
....
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
....
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025








2026
2027
2028
2029
2030
2031
2032
2033



2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044


2045
2046
2047
2048
2049
2050
2051
....
3609
3610
3611
3612
3613
3614
3615
3616
3617
3618
3619
3620

3621
3622
3623
3624
3625
3626
3627
....
9607
9608
9609
9610
9611
9612
9613



9614
9615
9616
9617
9618
9619
9620

# Ne pas scinder la phrase si les points de suspension sont suivis d’une minuscule
__<s>(p_points_suspension)__
    ({w1})(…)(?= [a-zéèêàâîô])  @@0,$ <<- not re.search("(?i)^etc", \1) ~2>> ,

# Mr et MM
__[s>(p_M_point)__
    (M[.]) (?:[A-ZÉÈÎ]\w+|l[e'’])  @@0 <<- ~1>> Mr
__[s>(p_MM_point)__
    MM[.] <<- ~>> "MM "
__[s>(p_Mr_Mgr_Mme_point)__
    M(?:r|gr|me|[.]) [A-ZÉ]([.])(?=\W+[a-zéèêâîïû]) @@$ <<- ~1>> *

# Patronyme réduit à une seule lettre
__[s](p_prénom_lettre_point_patronyme)__
    ([A-ZÉÈÂÎ][\w-]+)[  ]([A-ZÉÈÂ][.][  ]([A-ZÉÈÂ][\w-]+)) @@0,$,$
    <<- morph(\1, ":M[12]") and (morph(\3, ":(?:M[12]|V)") or not spell(\3)) ~2>> *
__[s>(p_prénom_lettre_point)__
    ([A-ZÉÈÂÎ][\w-]+)[  ]([A-ZÉÈÂ][.]) @@0,$
    <<- morph(\1, ":M[12]") and after("^\W+[a-zéèêîïâ]") ~2>> *

# Patronymes composés avec Le/La/Les
__[s](p_patronyme_composé_avec_le_la_les)__
    [A-ZÉÈÂÎ][\w-]+[-–—]L(?:es?|a) [A-ZÉÈÂÎ][\w-]+ <<- ~>> =\0.replace(" ", "_")

# IP
__[s](p_adresse_IP)__
................................................................................
    <<- \1.isdigit() ~>> *
    <<- __else__ and morph(\1, ":G") ~>> =" " + \1 + " "
    <<- __else__ and \1.isalpha() ~>> " _"
__[s](points_suspension_entre_parenthèses)__
    \(…\)
    <<- ->> […]                 # Pour indiquer une troncature de texte, on utilise usuellement des crochets.
    <<- ~>> *

# Divers
__[i](p_FranceTV)__
    France ([23450O]) @@$ <<- ~>> France_\1
__[u](p_CAC40)__
    cac 40 <<- ~>> CAC40


TEST: par {{O.R.}}                                          ->> OR|O. R.
TEST: l’{{A.N.P.E.}} n’existe plus
TEST: ce chien […] ne {{semblez}} pas perdu.
TEST: ce chat {{(…)}} ne {{semblez}} pas perdu.
TEST: les tests de la version 3.17.8 {{commence}} demain.
TEST: ce nouveau moteur de recherche (http://www.cherche-moi-ça.fr/home.php&lang=fr) fonctionne pas mal.
................................................................................
# singletons entre parenthèses / crochets / accolades
__<s>(p_singleton_parenthèses)__    [(]\w+[)] <js>\([a-zA-Z]+\)</js> <<- ~>> *
__<s>(p_singleton_accolades)__      [{]\w+[}] <js>\{[a-zA-Z]+\}</js> <<- ~>> *
__<s>(p_singleton_crochets)__       [\[]\w+[\]] <js>\[[a-zA-Z]+\]</js> <<- ~>> *

# Avocats
__[s](p_Me_nom_propre)__        (Me) [A-ZÉÂÔÈ][\w-]+ @@0 <<- ~1>> *

# Rois, reines, papes et vaniteux du même acabit
__[s](p_titres_et_ordinaux)__   [A-ZÉÂÔÈ]\w+ ([XVI]+|I(?:er|ᵉʳ)) @@$ <<- \1 != "I" ~1>> *


# alors que / dès lors que (éviter d’accorder un participe passé avec un pseudo-COD antérieur)
__[i](p_alors_dès_lors_que)__   (alors|dès lors) que  @@0 <<- ~1>> _
__[i](p_alors_dès_lors_que2)__  (alors|dès lors) qu’  @@0 <<- ~1>> _

# Fusion des mots “multiples” (expérimental)
__[s](p_fusion_mots_multiples)__
................................................................................

#   [un|mon|ton|son|ce|mes|tes|ses|leurs] rendez-vous
#   rendez-vous seulement défini comme :N:m:i  dans le dictionnaire


!!!! Fusions et immunités                                                                         !!

__fusions__
    au revoir
        <<- ~>> ␣
        <<- =>> define(\1, [":N:m:i"])

    n’ importe [qui|quoi]
        <<- ~1:2>> ␣









    Peugeot  ~^\d0\d\d?$
        <<- ~>> ␣
        <<- =>> define(\1, [":N:e:i"])

    Mai 68
        <<- ~>> ␣
        <<- =>> define(\1, [":N:m:i"])





__immunités__
    au sortir [de|des|du|d’]
        <<- ~2>> *

    en tout et pour tout
        <<- %-1>>

    jusqu’ à
        <<- %2>>





@@@@
@@@@
@@@@
@@@@
@@@@GRAPH: ocr                                                                                     _
................................................................................
TEST: {{donne-le-moi}} Camille.
TEST: donne-moi Alice.
TEST: Tape-toi Patrick.


__virg_après_verbe_COD__
    [le|la|l’|les]  @:Y  @:M
        <<- /virg/ not value(<1, "|à|") -2>> \2,                                                    # Une virgule est probablement souhaitable.

TEST: Tu vas les {{donner}} Rachel.
TEST: Il va la {{tuer}} Paul.
TEST: Cependant les promesses n’engagent que ceux qui les croient, comme aimait à le dire Jacques Chirac.

TEST: Avancez comme sait le faire Patrick.



!!!! Apostrophe manquante (2)                                                                     !!

__typo_apostrophe_manquante_audace__
................................................................................
        <<- ~2>> *

    Amérique du [Nord|Sud]
    Amérique centrale
        <<- ~2:0>> *

    @:M[12]  *WORD



        <<- \2.istitle() ~2:0>> *

    @:M[12]  [Le|La|von|van|Mac|Mc|De|Du|D’]  *WORD
        <<- \3.istitle() ~2:0>> *

    [de|d’]  @:M  [et|ou]  [de|d’]  @:M
    [de|d’]  @:M







|



|



|


|
|







 







<
<
<
<
<
<
<







 







<
<
<
<







 







|







>
>
>
>
>
>
>
>








>
>
>











>
>







 







|




>







 







>
>
>







439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
...
488
489
490
491
492
493
494







495
496
497
498
499
500
501
....
1481
1482
1483
1484
1485
1486
1487




1488
1489
1490
1491
1492
1493
1494
....
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
....
3611
3612
3613
3614
3615
3616
3617
3618
3619
3620
3621
3622
3623
3624
3625
3626
3627
3628
3629
3630
....
9610
9611
9612
9613
9614
9615
9616
9617
9618
9619
9620
9621
9622
9623
9624
9625
9626

# Ne pas scinder la phrase si les points de suspension sont suivis d’une minuscule
__<s>(p_points_suspension)__
    ({w1})(…)(?= [a-zéèêàâîô])  @@0,$ <<- not re.search("(?i)^etc", \1) ~2>> ,

# Mr et MM
__[s>(p_M_point)__
    (M[.]) (?:[A-ZÉÈÎ]\w*|l[e'’])  @@0 <<- ~1>> Mr
__[s>(p_MM_point)__
    MM[.] <<- ~>> "MM "
__[s>(p_Mr_Mgr_Mme_point)__
    M(?:r|gr|me) [A-ZÉ]([.])(?=\W+[a-zéèêâîïû]) @@$ <<- ~1>> *

# Patronyme réduit à une seule lettre
__[s](p_prénom_lettre_point_patronyme)__
    ([A-ZÉÈÂÎ][\w-]+)[  ][A-ZÉÈÂ]([.])[  ]([A-ZÉÈÂ][\w-]+) @@0,$,$
    <<- morph(\1, ":M[12]") and (morph(\3, ":(?:M[12]|V)") or not spell(\3)) ~2>> *
__[s>(p_prénom_lettre_point)__
    ([A-ZÉÈÂÎ][\w-]+)[  ][A-ZÉÈÂ]([.]) @@0,$
    <<- morph(\1, ":M[12]") and after("^\W+[a-zéèêîïâ]") ~2>> _

# Patronymes composés avec Le/La/Les
__[s](p_patronyme_composé_avec_le_la_les)__
    [A-ZÉÈÂÎ][\w-]+[-–—]L(?:es?|a) [A-ZÉÈÂÎ][\w-]+ <<- ~>> =\0.replace(" ", "_")

# IP
__[s](p_adresse_IP)__
................................................................................
    <<- \1.isdigit() ~>> *
    <<- __else__ and morph(\1, ":G") ~>> =" " + \1 + " "
    <<- __else__ and \1.isalpha() ~>> " _"
__[s](points_suspension_entre_parenthèses)__
    \(…\)
    <<- ->> […]                 # Pour indiquer une troncature de texte, on utilise usuellement des crochets.
    <<- ~>> *








TEST: par {{O.R.}}                                          ->> OR|O. R.
TEST: l’{{A.N.P.E.}} n’existe plus
TEST: ce chien […] ne {{semblez}} pas perdu.
TEST: ce chat {{(…)}} ne {{semblez}} pas perdu.
TEST: les tests de la version 3.17.8 {{commence}} demain.
TEST: ce nouveau moteur de recherche (http://www.cherche-moi-ça.fr/home.php&lang=fr) fonctionne pas mal.
................................................................................
# singletons entre parenthèses / crochets / accolades
__<s>(p_singleton_parenthèses)__    [(]\w+[)] <js>\([a-zA-Z]+\)</js> <<- ~>> *
__<s>(p_singleton_accolades)__      [{]\w+[}] <js>\{[a-zA-Z]+\}</js> <<- ~>> *
__<s>(p_singleton_crochets)__       [\[]\w+[\]] <js>\[[a-zA-Z]+\]</js> <<- ~>> *

# Avocats
__[s](p_Me_nom_propre)__        (Me) [A-ZÉÂÔÈ][\w-]+ @@0 <<- ~1>> *





# alors que / dès lors que (éviter d’accorder un participe passé avec un pseudo-COD antérieur)
__[i](p_alors_dès_lors_que)__   (alors|dès lors) que  @@0 <<- ~1>> _
__[i](p_alors_dès_lors_que2)__  (alors|dès lors) qu’  @@0 <<- ~1>> _

# Fusion des mots “multiples” (expérimental)
__[s](p_fusion_mots_multiples)__
................................................................................

#   [un|mon|ton|son|ce|mes|tes|ses|leurs] rendez-vous
#   rendez-vous seulement défini comme :N:m:i  dans le dictionnaire


!!!! Fusions et immunités                                                                         !!

__fusions_noms_communs__
    au revoir
        <<- ~>> ␣
        <<- =>> define(\1, [":N:m:i"])

    n’ importe [qui|quoi]
        <<- ~1:2>> ␣


__fusions_noms_propres__
    cac  40
        <<- ~>> ␣

    France [2|3|4|5|0|O]
        <<- ~>> ␣

    Peugeot  ~^\d0\d\d?$
        <<- ~>> ␣
        <<- =>> define(\1, [":N:e:i"])

    Mai 68
        <<- ~>> ␣
        <<- =>> define(\1, [":N:m:i"])

    ~^[A-ZÂÉÈÎ].  ~^[A-ZÂÉÈÎ]
        <<- analyse_with_next(\1, " ", ":") ~>> ␣


__immunités__
    au sortir [de|des|du|d’]
        <<- ~2>> *

    en tout et pour tout
        <<- %-1>>

    jusqu’ à
        <<- %2>>

    [comme|que|qu’|lorsque|lorsqu’|puisque|puisqu’|quand|pourquoi|qui|quoi]  ?[ne|n’]¿  ?[se|s’]¿  (*WORD)  ?à¿  [le|la|l’|les]  @:Y  @:M
        <<- morph(\1, ":V") %-2>>


@@@@
@@@@
@@@@
@@@@
@@@@GRAPH: ocr                                                                                     _
................................................................................
TEST: {{donne-le-moi}} Camille.
TEST: donne-moi Alice.
TEST: Tape-toi Patrick.


__virg_après_verbe_COD__
    [le|la|l’|les]  @:Y  @:M
        <<- /virg/ -2>> \2,                                                                         # Une virgule est probablement souhaitable.

TEST: Tu vas les {{donner}} Rachel.
TEST: Il va la {{tuer}} Paul.
TEST: Cependant les promesses n’engagent que ceux qui les croient, comme aimait à le dire Jacques Chirac.
TEST: Cependant les promesses n’engagent que ceux qui les croient, comme s’évertuait à le dire Jacques Chirac.
TEST: Avancez comme sait le faire Patrick.



!!!! Apostrophe manquante (2)                                                                     !!

__typo_apostrophe_manquante_audace__
................................................................................
        <<- ~2>> *

    Amérique du [Nord|Sud]
    Amérique centrale
        <<- ~2:0>> *

    @:M[12]  *WORD
        <<- \2.istitle() or re.search("^[MDCLXVI]+$", \2) ~2:0>> *

    @:M[12]  [Ier|Iᵉʳ]
        <<- \2.istitle() ~2:0>> *

    @:M[12]  [Le|La|von|van|Mac|Mc|De|Du|D’]  *WORD
        <<- \3.istitle() ~2:0>> *

    [de|d’]  @:M  [et|ou]  [de|d’]  @:M
    [de|d’]  @:M