Grammalecte  Check-in [722c557610]

Overview
Comment:[fr] conversion: regex rules -> graph rules
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | fr | rg
Files: files | file ages | folders
SHA3-256: 722c557610645428ab0d49eac22ee5bc9a825c6b98ecc53c09580ea556c6deb6
User & Date: olr on 2018-08-18 20:27:35
Other Links: branch diff | manifest | tags
Context
2018-08-18
21:31
[fr] conversion: regex rules -> graph rules check-in: 3d86b1d267 user: olr tags: fr, rg
20:27
[fr] conversion: regex rules -> graph rules check-in: 722c557610 user: olr tags: fr, rg
13:29
[core] gc engine: don’t check regexes on some META tokens check-in: 209474b757 user: olr tags: core, rg
Changes

Modified gc_lang/fr/rules.grx from [9664aedc44] to [fb2cb409ee].

2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205



2206
2207
2208


2209

2210



2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222











2223
2224
2225
2226
2227
2228
2229

    vous [>avoir|>être]
        <<- not morph(\2, ":2p") =>> exclude(\1, ":Os")


__da_préverbes_verbes__
    ne  ?[le|la|l’|les|nous|vous|lui|leur]¿  (@:¬:[OX])
    ne  [nous|vous]     [le|la|l’|les|en|y]  (@:¬:[OX])
    ne  [le|la|l’|les]  [lui|leur|en|y]      (@:¬:[OX])
    ne  [lui|leur]      en                   (@:¬:[OX])
        <<- =>> select(\1, ":V")




    [n’|m|t|s’]  ?[en|y]¿  (@:¬:[OX])
        <<- =>> select(\1, ":V")



    [me|te|se]  ?[le|la|l’|les]¿  (@:¬:[OX])

        <<- =>> select(\1, ":V")




    [je|j’|il|ils|on]  ?[le|la|l’|les|en|nous|vous|lui|leur|y]¿  (@:¬:[OX])
    [je|j’|il|ils|on]  [nous|vous]     [le|la|l’|les|en|y]       (@:¬:[OX])
    [je|j’|il|ils|on]  [le|la|l’|les]  [lui|leur|en|y]           (@:¬:[OX])
    [je|j’|il|ils|on]  [lui|leur]      en                        (@:¬:[OX])
        <<- =>> select(\1, ":[123][sp]")

    tu  ?[le|la|l’|les|en|nous|vous|lui|leur|y]¿  (@:¬:[OX])
    tu  [nous|vous]   [le|la|l’|les|en|y]         (@:¬:[OX])
    tu  [le|la|l’|les]  [lui|leur|en|y]           (@:¬:[OX])
    tu  [lui|leur]      en                        (@:¬:[OX])
        <<- morph(<1, ":Cs|<start>") =>> select(\1, ":[123][sp]")












    @:M  @:[123]s¬:Q
        <<- \2.islower() and morph(<1, ":Cs|<start>") =>> select(\2, ":[123][sp]")

    <start> @:M  @:(?:[123]s|Oo)|>ne/¬:A
        <<- =>> =select(\2, ":M")








|
|



>
>
>
|


>
>
|
>
|
>
>
>











|
>
>
>
>
>
>
>
>
>
>
>







2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249

    vous [>avoir|>être]
        <<- not morph(\2, ":2p") =>> exclude(\1, ":Os")


__da_préverbes_verbes__
    ne  ?[le|la|l’|les|nous|vous|lui|leur]¿  (@:¬:[OX])
    ne  [nous|vous]     [le|la|l’|les|en]    (@:¬:[OX])
    ne  [le|la|l’|les]  [lui|leur|en]        (@:¬:[OX])
    ne  [lui|leur]      en                   (@:¬:[OX])
        <<- =>> select(\1, ":V")

    [me|m’|te|se|s’]  ?[le|la|l’|les]¿  (@:¬:[OX])
        <<- =>> select(\1, ":V")

    [n’|m’|s’]  ?[en|y]¿  (@:¬:[OX])
        <<- =>> select(\1, ":V")

    t’  [le|la|l’|les|en|y]  @:(?:[123][sp]|P|Y)¬:X|>rien/
        <<- =>> select(\3, ":(?:[123][sp]|P|Y)")

    t’  @:¬:X|>(?:rien|ils?|elles?|on)/
        <<- =>> select(\2, ":(?:[123][sp]|P|Y)")

    y  @:¬:[OX]
        <<- =>> select(\2, ":(?:[123][sp]|P|Y)")

    [je|j’|il|ils|on]  ?[le|la|l’|les|en|nous|vous|lui|leur|y]¿  (@:¬:[OX])
    [je|j’|il|ils|on]  [nous|vous]     [le|la|l’|les|en|y]       (@:¬:[OX])
    [je|j’|il|ils|on]  [le|la|l’|les]  [lui|leur|en|y]           (@:¬:[OX])
    [je|j’|il|ils|on]  [lui|leur]      en                        (@:¬:[OX])
        <<- =>> select(\1, ":[123][sp]")

    tu  ?[le|la|l’|les|en|nous|vous|lui|leur|y]¿  (@:¬:[OX])
    tu  [nous|vous]   [le|la|l’|les|en|y]         (@:¬:[OX])
    tu  [le|la|l’|les]  [lui|leur|en|y]           (@:¬:[OX])
    tu  [lui|leur]      en                        (@:¬:[OX])
        <<- not morph(<1, ":V0") =>> select(\1, ":[123][sp]")

    lui  [la|le|l’|les]  @:(?:[123][sp]|P|Y)
        <<- not morph(<1, ":R") =>> select(\3, ":(?:[123][sp]|P|Y)")

    [nous|vous]     [le|la|l’|les|en]  @:¬:[OX]
    lui             en                 @:¬:[OX]
        <<- not morph(<1, ":R") =>> select(\3, ":(?:[123][sp]|P|Y)")

    [le|la|l’|les]  [lui|leur|en]      @:¬:[OX]
    leur            en                 @:¬:[OX]
        <<- =>> select(\2, ":(?:[123][sp]|P|Y)")

    @:M  @:[123]s¬:Q
        <<- \2.islower() and morph(<1, ":Cs|<start>") =>> select(\2, ":[123][sp]")

    <start> @:M  @:(?:[123]s|Oo)|>ne/¬:A
        <<- =>> =select(\2, ":M")

8015
8016
8017
8018
8019
8020
8021

8022
8023
8024
8025
8026
8027
8028
    de fil en aiguille
    de fond en comble
    de fort [loin|près]
    de [fraîche|fraiche] date
    de [gaieté|gaîté|gaité] de cœur
    de gauche à droite
    de gauche comme de droite

    de grande [taille|envergure]
    de gré ou de force
    de guerre lasse
    de haut en bas
    de haut [rang|vol]
    de haute [lutte|stature|volée]
    de jour comme de nuit







>







8035
8036
8037
8038
8039
8040
8041
8042
8043
8044
8045
8046
8047
8048
8049
    de fil en aiguille
    de fond en comble
    de fort [loin|près]
    de [fraîche|fraiche] date
    de [gaieté|gaîté|gaité] de cœur
    de gauche à droite
    de gauche comme de droite
    de génération en génération
    de grande [taille|envergure]
    de gré ou de force
    de guerre lasse
    de haut en bas
    de haut [rang|vol]
    de haute [lutte|stature|volée]
    de jour comme de nuit
14550
14551
14552
14553
14554
14555
14556
14557
14558
14559
14560
14561
14562
14563
14564
14565
14566
14567
14568
14569
14570
14571
14572
14573
14574
14575
14576
14577
14578
14579
14580
14581
14582
TEST: {{avançait moi}} de l’argent                      ->> avancez-moi
TEST: {{filé moi}} du fric, bon sang !                  ->> filez-moi
TEST: {{Données lui}} ça.                               ->> Donnez-lui
TEST: {{Enseignait nous}}.                              ->> Enseignez-nous


# être
__imp_sois__
    <start>  [ne|n’]  ?[le|l’|en|me|m’|te|t’|nous|vous|lui|leur|y]¿  soit
    <start>  [ne|n’]  [me|m’|te|t’|nous|vous]  [le|l’|en|y]          soit
    <start>  [ne|n’]  [le|l’]                  [lui|leur|en|y]       soit
    <start>  [ne|n’]  [lui|leur]               en                    soit
        <<- /imp/ --1>> sois                                                        # S’il s’agit d’un impératif, écrivez “sois”.

    <start>  soit  @:A¬:G
        <<- /imp/ not after(r"\bsoit\b") -2>> sois                                  # S’il s’agit d’un impératif, écrivez “sois”.

TEST: ne lui {{soit}} pas odieux.
TEST: {{Soit}} cohérent avec toi-même.
TEST: Ne {{soit}} pas con.
TEST: ne leur en {{soit}} pas reconnaissant, ce n’était qu’un calcul de leur part.
TEST: Ne {{soit}} pas en retard !


# avoir
__imp_aie__
    <start>  [ne|n’]  ?[le|la|l’|les|en|me|m’|te|t’|nous|vous|lui|leur|y]¿  [ai|ait|aies]
    <start>  [ne|n’]  [me|m’|te|t’|nous|vous]  [le|la|l’|les|en|y]          [ai|ait|aies]
    <start>  [ne|n’]  [le|la|l’|les]           [lui|leur|en|y]              [ai|ait|aies]
    <start>  [ne|n’]  [lui|leur]               en                           [ai|ait|aies]
    <start>  [ai|ait|aies]
        <<- /imp/ --1>> aie                                                         # S’il s’agit d’un impératif, écrivez “aie”.








|

















|







14571
14572
14573
14574
14575
14576
14577
14578
14579
14580
14581
14582
14583
14584
14585
14586
14587
14588
14589
14590
14591
14592
14593
14594
14595
14596
14597
14598
14599
14600
14601
14602
14603
TEST: {{avançait moi}} de l’argent                      ->> avancez-moi
TEST: {{filé moi}} du fric, bon sang !                  ->> filez-moi
TEST: {{Données lui}} ça.                               ->> Donnez-lui
TEST: {{Enseignait nous}}.                              ->> Enseignez-nous


# être
__imp_être__
    <start>  [ne|n’]  ?[le|l’|en|me|m’|te|t’|nous|vous|lui|leur|y]¿  soit
    <start>  [ne|n’]  [me|m’|te|t’|nous|vous]  [le|l’|en|y]          soit
    <start>  [ne|n’]  [le|l’]                  [lui|leur|en|y]       soit
    <start>  [ne|n’]  [lui|leur]               en                    soit
        <<- /imp/ --1>> sois                                                        # S’il s’agit d’un impératif, écrivez “sois”.

    <start>  soit  @:A¬:G
        <<- /imp/ not after(r"\bsoit\b") -2>> sois                                  # S’il s’agit d’un impératif, écrivez “sois”.

TEST: ne lui {{soit}} pas odieux.
TEST: {{Soit}} cohérent avec toi-même.
TEST: Ne {{soit}} pas con.
TEST: ne leur en {{soit}} pas reconnaissant, ce n’était qu’un calcul de leur part.
TEST: Ne {{soit}} pas en retard !


# avoir
__imp_avoir__
    <start>  [ne|n’]  ?[le|la|l’|les|en|me|m’|te|t’|nous|vous|lui|leur|y]¿  [ai|ait|aies]
    <start>  [ne|n’]  [me|m’|te|t’|nous|vous]  [le|la|l’|les|en|y]          [ai|ait|aies]
    <start>  [ne|n’]  [le|la|l’|les]           [lui|leur|en|y]              [ai|ait|aies]
    <start>  [ne|n’]  [lui|leur]               en                           [ai|ait|aies]
    <start>  [ai|ait|aies]
        <<- /imp/ --1>> aie                                                         # S’il s’agit d’un impératif, écrivez “aie”.

14609
14610
14611
14612
14613
14614
14615
14616
14617
14618
14619
14620
14621
14622
14623
14624
14625
14626
14627
14628
14629
    <start>  vas
        <<- /imp/ not value(>1, "|tu|") --1>> va                                   # S’il s’agit d’un impératif, pas de “s”.

TEST: {{Vas}} lui mettre une branlée.
TEST: {{Vas}} au diable !
TEST: N’y {{vas}} pas

# <start>  [ne|n’]  ?[le|la|l’|les|en|me|m’|te|t’|se|s’|nous|vous|lui|leur|y]¿
# <start>  [ne|n’]  [me|m’|te|t’|se|s’|nous|vous]  [le|la|l’|les|en|y]
# <start>  [ne|n’]  [le|la|l’|les]                 [lui|leur|en|y]
# <start>  [ne|n’]  [lui|leur]                     en


# verbes du 1er et du 3ᵉ groupe en -e
__imp_verbe_groupe1__
    <start>  [ne|n’]  ?[le|la|l’|les|en|me|m’|te|t’|nous|vous|lui|leur|y]¿  ~\w\w+es$
    <start>  [ne|n’]  [me|m’|te|t’|nous|vous]  [le|la|l’|les|en|y]          ~\w\w+es$
    <start>  [ne|n’]  [le|la|l’|les]           [lui|leur|en|y]              ~\w\w+es$
    <start>  [ne|n’]  [lui|leur]               en                           ~\w\w+es$
        <<- /imp/ morph(\-1, ":V[13].*:Ip.*:2s", ":G") and not value(>1, "|tu|")
        --1>> =\-1[:-1]                                                             # S’il s’agit d’un impératif, pas de “s”.







<
<
<
<

<
|







14630
14631
14632
14633
14634
14635
14636




14637

14638
14639
14640
14641
14642
14643
14644
14645
    <start>  vas
        <<- /imp/ not value(>1, "|tu|") --1>> va                                   # S’il s’agit d’un impératif, pas de “s”.

TEST: {{Vas}} lui mettre une branlée.
TEST: {{Vas}} au diable !
TEST: N’y {{vas}} pas







# verbes du 1ᵉʳ et du 3ᵉ groupe en -e
__imp_verbe_groupe1__
    <start>  [ne|n’]  ?[le|la|l’|les|en|me|m’|te|t’|nous|vous|lui|leur|y]¿  ~\w\w+es$
    <start>  [ne|n’]  [me|m’|te|t’|nous|vous]  [le|la|l’|les|en|y]          ~\w\w+es$
    <start>  [ne|n’]  [le|la|l’|les]           [lui|leur|en|y]              ~\w\w+es$
    <start>  [ne|n’]  [lui|leur]               en                           ~\w\w+es$
        <<- /imp/ morph(\-1, ":V[13].*:Ip.*:2s", ":G") and not value(>1, "|tu|")
        --1>> =\-1[:-1]                                                             # S’il s’agit d’un impératif, pas de “s”.
14766
14767
14768
14769
14770
14771
14772
14773
14774
14775
14776
14777
14778
14779
14780
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.



__imp_laisser_le_la_les_infi__
    >laisser  [le|la|les]  *WORD
        <<- /imp/ space_after(\1, 1, 1) and morph(\1, ":E") and morph(\3, ":(?:Y|X|Oo)", ":[NAB]")
        -1:2>> \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

TEST: {{Laisse les}} entrer…
TEST: {{Laissez la}} venir…







<







14782
14783
14784
14785
14786
14787
14788

14789
14790
14791
14792
14793
14794
14795
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.



__imp_laisser_le_la_les_infi__
    >laisser  [le|la|les]  *WORD
        <<- /imp/ space_after(\1, 1, 1) and morph(\1, ":E") and morph(\3, ":(?:Y|X|Oo)", ":[NAB]")
        -1:2>> \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

TEST: {{Laisse les}} entrer…
TEST: {{Laissez la}} venir…
14848
14849
14850
14851
14852
14853
14854
14855
14856
14857
14858
14859
14860
14861
14862
14863
14864
14865
14866
14867
14868
14869
14870
14871
14872
14873
14874
14875
14876
14877
14878
14879
14880
14881

14882
14883
14884

14885
14886
14887
14888
14889
14890
14891
14892
14893
14894
14895
14896
14897
14898
14899
14900
14901
14902
14903
14904
14905
14906
14907
14908
14909
14910
14911
14912
14913
14914

14915
14916
14917
14918
14919
14920
14921
14922
14923
14924
14925
14926
14927
14928
14929
14930
14931
14932
14933
14934
14935
14936
14937
14938



14939
14940
14941
14942
14943
14944

14945
14946
14947
14948
14949
14950
14951


14952
14953

14954
14955

14956
14957

14958


14959
14960
14961
14962


14963

14964
14965
14966
14967

14968
14969
14970
14971
14972

14973
14974
14975
14976
14977
14978

14979


14980


14981
14982

14983
14984

14985
14986

14987
14988

14989
14990

14991
14992
14993
14994

14995
14996
14997
14998
14999
15000

15001
15002
15003
15004
15005
15006
15007
15008
15009


15010

15011
15012

15013
15014
15015

15016
15017
15018
15019


15020
15021

15022


15023


15024
15025
15026
15027
15028
15029
15030
15031
15032
15033
15034
15035
15036
15037
15038
15039
15040





15041
15042
15043
15044
15045
15046
15047
15048
15049
15050
15051
15052
15053
15054
15055
15056



15057
15058
15059
15060
15061
15062
15063
15064








15065
15066
15067
15068

15069
15070
15071
15072
15073
15074
15075
__imp_union_aller_y!5__
    [viens|venez|venons|allons|allez] y
        <<- /imp/ space_after(\1, 1, 1) and not morph(>1, ":Y") ->> \1-\2           # Il manque un trait d’union.

    [va|vas] [y|z-y|z’y]
        <<- /imp/ space_after(\1, 1, 1) and not morph(>1, ":Y") ->> vas-y           # Il manque un trait d’union.

__imp_union_convenir_en__
    [conviens|convenez|convenons] en
        <<- /imp/ space_after(\1, 1, 1) and not value(>1, "|partie|") ->> \1-\2     # Il manque un trait d’union.

TEST: {{allons y}}
TEST: {{vas y}}
TEST: c’est une belle affaire malgré son prix élevé, {{convenez en}}…
TEST: {{Viens y}}.
TEST: Viens y faire un test.


@@@@
@@@@
@@@@
@@@@
@@@@END_GRAPH                                                                                      _
@@@@
@@@@
@@@@
@@@@


!!!
!!!
!!! Processeur avant impératif                                                                    !!
!!!
!!!


__<i>(p_n_importe_qui_quoi)__       n(’)importe quo?i @@1 <<- ~1>> `



__<i](p_premier_ne_pro_per_obj1)__
    ^( *ne l(?:es?|a) l(?:ui|eur)) ({w_2})  @@0,$
    <<- morph(\2, ":(?:[123][sp]|P)", False) =>> select(\2,":(?:[123][sp]|P)")
    <<- ~1>> *
__<i](p_premier_ne_pro_per_obj2)__
    ^( *ne (?:[mt]’|l(?:ui|eur) )en) ({w_2})  @@0,$
    <<- morph(\2, ":(?:[123][sp]|P)", False) =>> select(\2,":(?:[123][sp]|P)")
    <<- not morph(\1, ":X|>rien/", False) ~1>> *
__<i](p_premier_ne_pro_per_obj3)__
    ^( *ne (?:[mt]e|[nv]ous) (?:les?|la|en)) ({w_2})  @@0,$
    <<- morph(\2, ":(?:[123][sp]|P)", False) =>> select(\2,":(?:[123][sp]|P)")
    <<- ~1>> *
__<i](p_premier_ne_pro_per_obj4)__
    ^( *ne +(?:l(?:es?|a|’(?:en|y))|[mt](?:e|’(?:en|y))|[nv]ous)) ({w_2})  @@0,$
    <<- morph(\2, ":(?:[123][sp]|P)", False) =>> select(\2,":(?:[123][sp]|P)")
    <<- ~1>> *
__<i>(p_premier_ne_pro_per_obj5)__
    ^( *n’(?:en |y |))({w_2})  @@0,$
    <<- morph(\2, ":(?:[123][sp]|P)", False) =>> select(\2,":(?:[123][sp]|P)")
    <<- not morph(\1, ":X|>rien/", False) ~1>> *
__<i>(p_premier_ne_pro_per_obj6)__
    ^( *ne l’)({w_2})  @@0,$
    <<- morph(\2, ":(?:[123][sp]|P)", False) =>> select(\2,":(?:[123][sp]|P)")
    <<- ~1>> *
__<i>(p_premier_ne_pro_per_obj7)__
    ^( *ne) ({w_2})  @@0,$
    <<- morph(\2, ":(?:[123][sp]|P)", False) =>> select(\2,":(?:[123][sp]|P)")
    <<- not morph(\2, ":X|>rien/", False) ~1>> *


TEST: Ne rien céder.
TEST: Ne pas manger.
TEST: Ne manquer de rien.
TEST: Ne jamais miser sur ces tocards.
TEST: Ne m’en rien laisser.



!!!
!!!
!!! Processeur: destruction des pronoms qui précèdent un verbe et de l’adverbe de négation “ne”.  !!
!!!
!!!

# Brainfuck (ici, prudence !)
__[i](p_pro_per_obj01)__
    (ne +(?:l(?:ui|eur|a|es?)|[mts]e|[nv]ous) +(?:l(?:a|es?|ui|eur)|en|y)) +({w_1})  @@0,$
    <<- morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)")
    <<- ~1>> *
__[i](p_pro_per_obj02)__
    (ne +(?:[mts](?:e|’(?:en|y))|[nv]ous|l(?:es?|a|ui|eur|’(?:en|y)))) +({w_1})  @@0,$
    <<- morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)")
    <<- ~1>> *
__[i](p_pro_per_obj03)__



    ([mts]e +l(?:a|es?)) +({w_1})  @@0,$
    <<- morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)")
    <<- ~1>> *
__[i](p_pro_per_obj04)__
    ([nmsl]’(?:en|y)) +({w_1})  @@0,$
    <<- morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)")

    <<- ~1>> *
__[i](p_pro_per_obj05)__
    (l(?:a|es?) +(?:lui|en)) +({w_1})  @@0,$
    <<- morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)")
    <<- ~1>> *
__[i](p_pro_per_obj06)__
    (lui +(?:la|les?|en|y)) +({w_1})  @@0,$


    <<- not morph(word(-1), ":R", False, True) ~1>> *
    <<- __also__ and morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)")

__[i](p_pro_per_obj07)__
    (leur +(?:en|y)) +({w_1})  @@0,$

    <<- not morph(word(-1), ":R", False, False) ~1>> *
    <<- __also__ and morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)")

__[i](p_pro_per_obj08)__


    (?:je|tu|ils?|on) ([nv]ous(?: la| les?|)|lui) +({w_1})  @@*,$
    <<- morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)")
    <<- __also__ ~1>> *
__[i](p_pro_per_obj09)__


    (?:je|tu|ils?|on) (l(?:es?|a)) ({w_1}) @@w,$

    <<- (\1 == "le" and not morph(\2, ":N.*:[me]:[si]"))
        or (\1 == "la" and not morph(\2, ":N.*:[fe]:[si]"))
        or (\1 == "les" and not morph(\2, ":N.*:.:[pi]")) ~1>> *
    <<- __also__ and morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)")

__[i](p_pro_per_obj10)__
    (?:elles?|[nv]ous) ([nv]ous(?: la| les?|)|l(?:es?|ui|a)) +({w_1})  @@*,$
    <<- not morph(word(-1), ":R", False, False) ~1>> *
    <<- __also__ and morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)")
__[i](p_pro_per_obj11)__

    ce(?:ux|lles?|lui|la|) qui ([nv]ous(?: la| les?|)|l(?:es?|ui|a)) +({w_1})  @@*,$
    <<- morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)")
    <<- __also__ ~1>> *
__[i](p_pro_per_obj12)__
    (?<!’)(en) ({w_2}) @@0,$
    <<- morph(\2, ":(?:[123][sp]|P|Y)") ~1>> *

__[i](p_pro_per_obj13)__


    (?:tu|il|on) (en) +({w_1})  @@w,$


    <<- not morph(word(-1), ":[123]s", False, False) ~1>> *
    <<- morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)")

__[i](p_pro_per_obj14)__
    (?<!’)elle (en) +({w_1})  @@w,$

    <<- not morph(word(-1), ":(?:[123]s|R)", False, False) ~1>> *
    <<- morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)")

__[i](p_pro_per_obj15)__
    (?<!’)elles (en) +({w_1})  @@w,$

    <<- not morph(word(-1), ":(?:[123]p|R)", False, False) ~1>> *
    <<- morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)")

__[i](p_pro_per_obj16)__
    ils (en) +({w_1})  @@4,$
    <<- not morph(word(-1), ":3p", False, False) ~1>> *
    <<- morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)")

__[i](p_pro_per_obj17)__
    (?<!’)(y) ({w_2}) @@0,2
    <<- morph(\2, ":(?:[123][sp]|P|Y)", False) ~1>> *
    <<- __also__ =>> select(\2, ":(?:[123][sp]|P|Y)")
__[i](p_pro_per_obj18)__
    (le) ({w_2}) @@0,3

    <<- morphex(\2, ":(?:[123][sp]|P|Y)", ":(?:[NAQ].*:[me]:[si]|G|M)") ~1>> *
    <<- __also__ =>> select(\2, ":(?:[123][sp]|P|Y)")
__[i](p_pro_per_obj19)__
    (la) ({w_2}) @@0,3
    <<- morphex(\2, ":(?:[123][sp]|P|Y)", ":(?:[NAQ].*:[fe]:[si]|G|M)") ~1>> *
    <<- __also__ =>> select(\2, ":(?:[123][sp]|P|Y)")
__[i](p_pro_per_obj20)__
    (l’)({w_2}) @@0,2
    <<- morphex(\2, ":(?:[123][sp]|P|Y)", ":(?:[NAQ].*:[si]|G|M)") ~1>> *


    <<- __also__ =>> select(\2, ":(?:[123][sp]|P|Y)")

__[i](p_pro_per_obj21)__
    (leur) {1,3}({w_2}) @@0,5

    <<- morphex(\2, ":(?:[123][sp]|P|Y)", ":(?:[NAQ].*:[si]|G|M)") ~1>> *
    <<- __also__ =>> select(\2, ":(?:[123][sp]|P|Y)")
__[s](p_pro_per_obj22)__

    [lL]’(a) @@$
    <<- =>> select(\1, ":V")
    <<- ~>> "  a"
__[i](p_pro_per_obj23)__


    (nous) {1,3}({w_2}) @@0,5
    <<- morphex(\2, ":(?:[123][sp]|P|Y)", ":(?:A|G|M|1p)") =>> select(\2, ":(?:[123][sp]|P|Y)")

    <<- __also__ ~1>> *


__[i](p_pro_per_obj24)__


    (vous) {1,3}({w_2}) @@0,5
    <<- morphex(\2, ":(?:[123][sp]|P|Y)", ":(?:A|G|M|2p)") =>> select(\2, ":(?:[123][sp]|P|Y)")
    <<- __also__ ~1>> *
__[i](p_pro_per_obj25)__
    (?:à|de) ([nv]ous|lui|les?|en) (?!qui)({w_2}) @@w,$
    <<- morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)")
    <<- ~1>> *
__[i](p_pro_per_obj26)__
    (s’)({w4}) @@0,2
    <<- morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)")
    <<- __also__ ~1>> *
__[i](p_pro_per_obj27)__
    (?:je|tu|ils?|elles?|on) (l’|l(?:es?|a|ui|eur) +|[nv]ous +)({w_2}) @@*,$
    <<- morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)")
    <<- isStart() ~1>> *
__[i](p_pro_per_obj28)__
    (?:je|tu|ils?|elles?|on|[nv]ous|ce(?:ux|elles?|lui|la|) qui) (l’)({w4}) @@*,$





    <<- morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)")
    <<- __also__ ~1>> *
__[i](p_pro_per_obj29)__
    (t’(?:en|y)) {1,3}({w_2}) @@0,$
    <<- morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)")
    <<- not morph(\2, ":2s", False) or before(r"(?i)\b(?:je|tu|on|ils?|elles?|nous) +$") ~1>> *
__[i](p_pro_per_obj30)__
    (t’)({w_2}) @@0,$
    <<- morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)")
    <<- not morph(\2, ":2s|>(ils?|elles?|on)/", False) or before(r"(?i)\b(?:je|tu|on|ils?|elles?|nous) +$") ~1>> *
__[i>(p_pro_per_obj31)__
    (ne +[mtsl]’)({w_1})  @@0,$
    <<- morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)")
    <<- ~1>> *
__[i>(p_pro_per_obj32)__
    ([mts]e +l’)({w_1})  @@0,$



    <<- morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)")
    <<- ~1>> *
__[i>(p_pro_per_obj33)__
    [nm]’({w_1})  @@2
    <<- morph(\1, ":(?:[123][sp]|P|Y)", False) =>> select(\1, ":(?:[123][sp]|P|Y)")
    <<- ~>> "  \1"
__[i](p_pro_per_obj34)__
    ([nmts]e +)({w_1})  @@0,$








    <<- morph(\2, ":(?:[123][sp]|P|Y)", False) =>> select(\2, ":(?:[123][sp]|P|Y)")
    <<- __also__ ~1>> *
# Fin du Brainfuck




!!
!!
!!!! Confusions                                                                                   !!
!!
!!







<
<
<
<


<




<
<
<
<
<
<
<
<
<
|
|
<
<
<
<
<
>

<

>

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

>














|
<
<
|
|
|
<
|
|
|
>
>
>
|
|
|
<
<
|
>
|
|
<
|
|
|
<
>
>
|
|
>
|
|
>
|
|
>
|
>
>
|
|
|
|
>
>
|
>
|
|
<
|
>
|
|
|
|
|
>
|
|
<
|
|
|
>
|
>
>
|
>
>
|
|
>
|
|
>
|
|
>
|
|
>
|
|
>
|
<
<
|
>
|
<
|
|
|
|
>
|
|
<
|
|
|
|
|
|
>
>
|
>
|
|
>
|
|
<
>
|
|
|
|
>
>
|
|
>
|
>
>
|
>
>
|
|
|
|
<
|
|
|
<
|
|
|
|
|
|
|
|
>
>
>
>
>
|
|
|
<
|
|
|
<
|
|
<
<
<
|
|
|
>
>
>
|
|
|
|
<
<
<
|
>
>
>
>
>
>
>
>
|
<
<

>







14863
14864
14865
14866
14867
14868
14869




14870
14871

14872
14873
14874
14875









14876
14877





14878
14879

14880
14881
14882




























14883
14884
14885
14886
14887
14888
14889
14890
14891
14892
14893
14894
14895
14896
14897
14898
14899


14900
14901
14902

14903
14904
14905
14906
14907
14908
14909
14910
14911


14912
14913
14914
14915

14916
14917
14918

14919
14920
14921
14922
14923
14924
14925
14926
14927
14928
14929
14930
14931
14932
14933
14934
14935
14936
14937
14938
14939
14940
14941
14942

14943
14944
14945
14946
14947
14948
14949
14950
14951
14952

14953
14954
14955
14956
14957
14958
14959
14960
14961
14962
14963
14964
14965
14966
14967
14968
14969
14970
14971
14972
14973
14974
14975
14976
14977
14978


14979
14980
14981

14982
14983
14984
14985
14986
14987
14988

14989
14990
14991
14992
14993
14994
14995
14996
14997
14998
14999
15000
15001
15002
15003

15004
15005
15006
15007
15008
15009
15010
15011
15012
15013
15014
15015
15016
15017
15018
15019
15020
15021
15022
15023

15024
15025
15026

15027
15028
15029
15030
15031
15032
15033
15034
15035
15036
15037
15038
15039
15040
15041
15042

15043
15044
15045

15046
15047



15048
15049
15050
15051
15052
15053
15054
15055
15056
15057



15058
15059
15060
15061
15062
15063
15064
15065
15066
15067


15068
15069
15070
15071
15072
15073
15074
15075
15076
__imp_union_aller_y!5__
    [viens|venez|venons|allons|allez] y
        <<- /imp/ space_after(\1, 1, 1) and not morph(>1, ":Y") ->> \1-\2           # Il manque un trait d’union.

    [va|vas] [y|z-y|z’y]
        <<- /imp/ space_after(\1, 1, 1) and not morph(>1, ":Y") ->> vas-y           # Il manque un trait d’union.





TEST: {{allons y}}
TEST: {{vas y}}

TEST: {{Viens y}}.
TEST: Viens y faire un test.











__imp_union_convenir_en__
    [conviens|convenez|convenons] en





        <<- /imp/ space_after(\1, 1, 1) and not value(>1, "|partie|") ->> \1-\2     # Il manque un trait d’union.



TEST: c’est une belle affaire malgré son prix élevé, {{convenez en}}…






























# Autres tests
TEST: Ne rien céder.
TEST: Ne pas manger.
TEST: Ne manquer de rien.
TEST: Ne jamais miser sur ces tocards.
TEST: Ne m’en rien laisser.



!!!
!!!
!!! Processeur: destruction des pronoms qui précèdent un verbe et de l’adverbe de négation “ne”.  !!
!!!
!!!

__purge_préverbes1__


    [ne|n’|me|m’|te|se|s’|y]  @:(?:[123][sp]|P|Y)¬:X|>rien/
        <<- ~1>> *


    t’  @:(?:[123][sp]|P|Y)¬:(?:X|2s)|>(?:rien|ils?|elles?|on)/
        <<- ~1>> *

    le    @:(?:[123][sp]|P|Y)¬:(?:[NA].*:[me]:[si]|G|M)
    la    @:(?:[123][sp]|P|Y)¬:(?:[NA].*:[fe]:[si]|G|M)
    l’    @:(?:[123][sp]|P|Y)¬:(?:[NA].*:[si]|G|M)
    les   @:(?:[123][sp]|P|Y)¬:(?:[NA].*:[pi]|G|M)
    en    @:(?:[123][sp]|P|Y)¬:[NA]
    nous  @:(?:[123][sp]|P|Y)¬:1p


    vous  @:(?:[123][sp]|P|Y)¬:2p
    leur  @:(?:[123][sp]|P|Y)¬:(?:[NA].*:[si]|G|M)
        <<- \2.islower() ~1>> *


    lui   @:(?:[123][sp]|P|Y)¬:3s
        <<- not morph(<1, ":R") ~2>> *


    [je|j’|tu|il|on]  le   @:(?:[123][sp]|P|Y)
        <<- not morph(<1, ":[123]s") or not morph(\3, ":N.*:[me]:[si]") ~2>> *

    [je|j’|tu|il|on]  la   @:(?:[123][sp]|P|Y)
        <<- not morph(<1, ":[123]s") or not morph(\3, ":N.*:[fe]:[si]") ~2>> *

    [je|j’|tu|il|on]  [l’|leur]   @:(?:[123][sp]|P|Y)
        <<- not morph(<1, ":[123]s") or not morph(\3, ":N.*:[si]") ~2>> *

    [je|j’|tu|il|on]  les  @:(?:[123][sp]|P|Y)
        <<- not morph(<1, ":[123]s") or not morph(\3, ":N.*:[pi]") ~2>> *

    [je|j’|tu|il|on]  en  @:(?:[123][sp]|P|Y)
        <<- not morph(<1, ":[123]s") or not morph(\3, ":[NA]") ~2>> *

    ils  le   @:(?:[123][sp]|P|Y)
        <<- not morph(<1, ":3p") or not morph(\3, ":N.*:[me]:[si]") ~2>> *

    ils  la   @:(?:[123][sp]|P|Y)
        <<- not morph(<1, ":3p") or not morph(\3, ":N.*:[fe]:[si]") ~2>> *

    ils  [l’|leur]   @:(?:[123][sp]|P|Y)
        <<- not morph(<1, ":3p") or not morph(\3, ":N.*:[si]") ~2>> *


    ils  les  @:(?:[123][sp]|P|Y)
        <<- not morph(<1, ":3p") or not morph(\3, ":N.*:[pi]") ~2>> *

    ils  en  @:(?:[123][sp]|P|Y)
        <<- not morph(<1, ":3p") or not morph(\3, ":[NA]") ~2>> *

    [lui|celui-là|celui-ci]  le   @:(?:[123][sp]|P|Y)
        <<- not morph(<1, ":(?:3s|R)") or not morph(\3, ":N.*:[me]:[si]") ~2>> *

    [lui|celui-là|celui-ci]  la   @:(?:[123][sp]|P|Y)

        <<- not morph(<1, ":(?:3s|R)") or not morph(\3, ":N.*:[fe]:[si]") ~2>> *

    [lui|celui-là|celui-ci]  [l’|leur]   @:(?:[123][sp]|P|Y)
        <<- not morph(<1, ":(?:3s|R)") or not morph(\3, ":N.*:[si]") ~2>> *

    [lui|celui-là|celui-ci]  les  @:(?:[123][sp]|P|Y)
        <<- not morph(<1, ":(?:3s|R)") or not morph(\3, ":N.*:[pi]") ~2>> *

    [lui|celui-là|celui-ci]  en  @:(?:[123][sp]|P|Y)
        <<- not morph(<1, ":(?:3s|R)") or not morph(\3, ":[NA]") ~2>> *

    [elle|celle-là|celle-ci]  le   @:(?:[123][sp]|P|Y)
        <<- not morph(<1, ":(?:3s|R)") or not morph(\3, ":N.*:[me]:[si]") ~2>> *

    [elle|celle-là|celle-ci]  la   @:(?:[123][sp]|P|Y)
        <<- not morph(<1, ":(?:3s|R)") or not morph(\3, ":N.*:[fe]:[si]") ~2>> *

    [elle|celle-là|celle-ci]  [l’|leur]   @:(?:[123][sp]|P|Y)
        <<- not morph(<1, ":(?:3s|R)") or not morph(\3, ":N.*:[si]") ~2>> *

    [elle|celle-là|celle-ci]  les  @:(?:[123][sp]|P|Y)
        <<- not morph(<1, ":(?:3s|R)") or not morph(\3, ":N.*:[pi]") ~2>> *

    [elle|celle-là|celle-ci]  en  @:(?:[123][sp]|P|Y)
        <<- not morph(<1, ":(?:3s|R)") or not morph(\3, ":[NA]") ~2>> *



    nous  le   @:(?:[123][sp]|P|Y)
        <<- not morph(<1, ":(?:1p|R)") or not morph(\3, ":N.*:[me]:[si]") ~2>> *


    nous  la   @:(?:[123][sp]|P|Y)
        <<- not morph(<1, ":(?:1p|R)") or not morph(\3, ":N.*:[fe]:[si]") ~2>> *

    nous  [l’|leur]   @:(?:[123][sp]|P|Y)
        <<- not morph(<1, ":(?:1p|R)") or not morph(\3, ":N.*:[si]") ~2>> *

    nous  les  @:(?:[123][sp]|P|Y)

        <<- not morph(<1, ":(?:1p|R)") or not morph(\3, ":N.*:[pi]") ~2>> *

    nous  en  @:(?:[123][sp]|P|Y)
        <<- not morph(<1, ":(?:1p|R)") or not morph(\3, ":[NA]") ~2>> *

    vous  le   @:(?:[123][sp]|P|Y)
        <<- not morph(<1, ":(?:2p|R)") or not morph(\3, ":N.*:[me]:[si]") ~2>> *

    vous  la   @:(?:[123][sp]|P|Y)
        <<- not morph(<1, ":(?:2p|R)") or not morph(\3, ":N.*:[fe]:[si]") ~2>> *

    vous  [l’|leur]   @:(?:[123][sp]|P|Y)
        <<- not morph(<1, ":(?:2p|R)") or not morph(\3, ":N.*:[si]") ~2>> *

    vous  les  @:(?:[123][sp]|P|Y)

        <<- not morph(<1, ":(?:2p|R)") or not morph(\3, ":N.*:[pi]") ~2>> *

    vous  en  @:(?:[123][sp]|P|Y)
        <<- not morph(<1, ":(?:2p|R)") or not morph(\3, ":[NA]") ~2>> *

    [elles|celles-là|celles-ci]  le   @:(?:[123][sp]|P|Y)
        <<- not morph(<1, ":(?:3p|R)") or not morph(\3, ":N.*:[me]:[si]") ~2>> *

    [elles|celles-là|celles-ci]  la   @:(?:[123][sp]|P|Y)
        <<- not morph(<1, ":(?:3p|R)") or not morph(\3, ":N.*:[fe]:[si]") ~2>> *

    [elles|celles-là|celles-ci]  [l’|leur]   @:(?:[123][sp]|P|Y)
        <<- not morph(<1, ":(?:3p|R)") or not morph(\3, ":N.*:[si]") ~2>> *

    [elles|celles-là|celles-ci]  les  @:(?:[123][sp]|P|Y)
        <<- not morph(<1, ":(?:3p|R)") or not morph(\3, ":N.*:[pi]") ~2>> *

    [elles|celles-là|celles-ci]  en  @:(?:[123][sp]|P|Y)
        <<- not morph(<1, ":(?:3p|R)") or not morph(\3, ":[NA]") ~2>> *


    [je|j’|tu|il|on|ils]  [nous|vous|lui]  @:(?:[123][sp]|P|Y)
        <<- ~2>> *


    [lui|celui-là|celui-ci]     [nous|vous|lui]  @:(?:[123][sp]|P|Y)
    [elle|celle-là|celle-ci]    [nous|vous|lui]  @:(?:[123][sp]|P|Y)
    [nous|vous]                 [nous|vous|lui]  @:(?:[123][sp]|P|Y)
    [eux|ceux-là|ceux-ci]       [nous|vous|lui]  @:(?:[123][sp]|P|Y)
    [elles|celles-là|celles-ci] [nous|vous|lui]  @:(?:[123][sp]|P|Y)
        <<- not morph(<1, ":R") ~2>> *


__purge_préverbes2__
    [me|m’|te|se|s’]  [le|la|l’|les|en|y]  @:(?:[123][sp]|P|Y)¬:X|>rien/
    nous              [le|la|l’|les|en|y]  @:(?:[123][sp]|P|Y)¬:(?:X|1p)|>rien/
    vous              [le|la|l’|les|en|y]  @:(?:[123][sp]|P|Y)¬:(?:X|2p)|>rien/
    [le|la|l’|les]    [lui|leur|en|y]      @:(?:[123][sp]|P|Y)¬:X|>rien/
    leur              en                   @:(?:[123][sp]|P|Y)¬:X|>rien/
        <<- ~1:2>> *


    lui                         en                   @:(?:[123][sp]|P|Y)¬:X|>rien/
        <<- not morph(<1, ":(?:R|3s)") ~1:2>> *


    t’  [le|la|l’|les|en|y]  @:(?:[123][sp]|P|Y)¬:X|>rien/
        <<- not morph(\3, ":2s") or value(<1, "|je|j’|tu|il|elle|on|nous|vous|ils|elles|") ~1:2>> *



        <<- ~2>> *

__purge_préverbes_négation__
    [ne|n’]  [le|la|l’|les|en|me|m’|te|t’|se|s’|nous|vous|lui|leur|y]  @:(?:[123][sp]|P|Y)¬:X|>rien/
    [ne|n’]  [me|m’|te|t’|se|s’|nous|vous]  [le|la|l’|les|en|y]        @:(?:[123][sp]|P|Y)¬:X|>rien/
    [ne|n’]  [le|la|l’|les]                 [lui|leur|en|y]            @:(?:[123][sp]|P|Y)¬:X|>rien/
    [ne|n’]  [lui|leur]                     en                         @:(?:[123][sp]|P|Y)¬:X|>rien/
        <<- ~1:-2>> *





@@@@
@@@@
@@@@
@@@@
@@@@END_GRAPH                                                                                      _
@@@@
@@@@
@@@@
@@@@




__<i>(p_n_importe_qui_quoi)__       n(’)importe quo?i @@1 <<- ~1>> `


!!
!!
!!!! Confusions                                                                                   !!
!!
!!