Grammalecte  Diff

Differences From Artifact [0030de03a4]:

To Artifact [221ff498f7]:


1648
1649
1650
1651
1652
1653
1654

1655
1656


1657
1658

1659

1660

1661

1662

1663

1664

1665

1666

1667

1668

1669

1670

1671

1672
1673

1674

1675
1676
1677
1678

1679

1680

1681

1682

1683

1684

1685

1686

1687

1688

1689

1690

1691

1692

1693

1694
1695
1696
1697
1698
1699
1700
1648
1649
1650
1651
1652
1653
1654
1655


1656
1657
1658
1659
1660

1661
1662
1663

1664
1665
1666

1667
1668
1669

1670
1671
1672

1673
1674
1675

1676
1677
1678

1679
1680
1681
1682

1683
1684
1685

1686
1687

1688
1689
1690

1691
1692
1693

1694
1695
1696

1697
1698
1699

1700
1701
1702

1703
1704
1705

1706
1707
1708

1709
1710
1711
1712
1713
1714
1715
1716







+
-
-
+
+


+
-
+

+
-
+

+
-
+

+
-
+

+
-
+

+
-
+

+
-
+


+
-
+


-

+
-
+

+
-
+

+
-
+

+
-
+

+
-
+

+
-
+

+
-
+

+
-
+









#
# //////////////////////////////////////// DÉSAMBIGUÏSATEUR ////////////////////////////////////////
#

# mots grammaticaux
__[i](d_dans)__
__[i]__  dans
    <<- not morph(word(-1), ":D.*:p|>[a-z]+ièmes ", False, False) =>> select(\0, ":P")
    dans
    <<- not morph(word(-1), ":D.*:p|>[a-z]+ièmes ", False, False) =>> select(\0, ":R")

# verbe
__[i](d_ne_verbe)__
__[i]__  ne +(?:l(?:es? |eurs? |ui |a |’)|[nv]ous |)({w_1}) @@$
    ne +(?:l(?:es? |eurs? |ui |a |’)|[nv]ous |)({w_1}) @@$
    <<- not morph(\1, ":(?:O[sp]|X)", False) =>> select(\1, ":V")
__[i](d_n_m_t_s_verbe)__
__[i]__  [nmts]’(?:en +|y +|)({w_1}) @@$
    [nmts]’(?:en +|y +|)({w_1}) @@$
    <<- not morph(\1, ":X", False) =>> select(\1, ":V")
__[i](d_me_te_se_verbe)__
__[i]__  [mts]e +(?:l(?:es? +|a +|’)|)({w_2})  @@$
    [mts]e +(?:l(?:es? +|a +|’)|)({w_2})  @@$
    <<- =>> select(\1, ":V")
__[i](d_je_verbe)__
__[i]__  j’(?:en +|y +|)({w_1}) @@$
    j’(?:en +|y +|)({w_1}) @@$
    <<- =>> select(\1, ":[123][sp]")
__[i](d_je_il_ils_on_verbe)__
__[i]__  (?:je|ils?|on) +(?:l(?:es? +|la +|’)|[nv]ous +|)({w_1}) @@$
    (?:je|ils?|on) +(?:l(?:es? +|la +|’)|[nv]ous +|)({w_1}) @@$
    <<- not morph(\1, ":(?:Oo|X)", False) =>> select(\1, ":[123][sp]")
__[i](d_tu_verbe)__
__[i]__  tu +(?:l(?:es? +|la +|’)|[nv]ous +|)({w_1}) @@$
    tu +(?:l(?:es? +|la +|’)|[nv]ous +|)({w_1}) @@$
    <<- morph(word(-1), ":Cs", False, True) and not morph(\1, ":(?:Oo|X)", False) =>> select(\1, ":[123][sp]")
__[s](d_nom_propre_verbe)__
__[s]__  ([A-ZÉÈ]{w_1}) +({w_1})  @@0,$
    ([A-ZÉÈ]{w_1}) +({w_1})  @@0,$
    <<- morph(\1, ":M") and \2.islower() and morphex(\2, ":[123][sg]", ":Q") and morph(\2, ":N", False) and morph(word(-1), ":Cs", False, True)
    =>> select(\2, ":[123][sp]")
__[i](d_que_combien_pourquoi_en_y_verbe)__
__[i]__  (?:que?|combien|pourquoi) +(?:en +|y +)({w_3}) @@$
    (?:que?|combien|pourquoi) +(?:en +|y +|)({w_3}) @@$
    <<- =>> exclude(\1, ":E")


# groupe nominal
__[i](d_aucun_non_verbe)__
__[i]__  aucun +({w_4}) @@$
    aucun +({w_4}) @@$
    <<- morph(\1, ":[NA].*:[me]", False) =>> exclude(\1, ":V")
__[i](d_de_non_verbe)__
__[i]__  d(?:e +|’)({w_1}) @@$
    d(?:e +|’)({w_1}) @@$
    <<- not morph(\1, ":[YD]", False) =>> exclude(\1, ":V")
__[i](d_d_un_une_non_verbe)__
__[i]__  d’une? ({w_1}) @@$
    d’une? ({w_1}) @@$
    <<- =>> exclude(\1, ":V")
__[i](d_déterminant_non_verbe)__
__[i]__  (?:des|chaque|quelques?|cet(?:te|)|m(?:on|a)|[ts]a|aux?) +({w_1}) @@$
    (?:des|chaque|quelques?|cet(?:te|)|m(?:on|a)|[ts]a|aux?) +({w_1}) @@$
    <<- =>> exclude(\1, ":V")
__[i](d_de_la_non_verbe)__
__[i]__  de l(?:a |’)({w_2}) @@6
    de l(?:a |’)({w_2}) @@6
    <<- not morph(\1, ":Y", False) =>> exclude(\1, ":V")
__[i](d_de_pronom_non_verbe)__
__[i]__  de (?:tel(?:le|)s?|ce(?:tte|t|s)|[ts](?:a|es)|m(?:on|a|es)|[nv]o(?:tre|s)|plein) +({w_2})  @@$
    de (?:tel(?:le|)s?|ce(?:tte|t|s)|[ts](?:a|es)|m(?:on|a|es)|[nv]o(?:tre|s)|plein) +({w_2})  @@$
    <<- =>> exclude(\1, ":V")
__[i](d_par_non_verbe)__
__[i]__  par +({w_3}) @@$
    par +({w_3}) @@$
    <<- =>> exclude(\1, ":V[123]")
__[i](d_très_non_verbe)__
__[i]__  très +({w_2}) @@$
    très +({w_2}) @@$
    <<- =>> exclude(\1, ":[123][sp]")


TEST: il s’agit d’{{un}} {{anagramme}}
TEST: nul ne sait qui arriva à ce pauvre Paul surpris par la pluie.
TEST: elle finit par être très fière de son fils.

3671
3672
3673
3674
3675
3676
3677
3678

3679
3680
3681
3682
3683
3684
3685
3687
3688
3689
3690
3691
3692
3693

3694
3695
3696
3697
3698
3699
3700
3701







-
+







TEST: il y en a peu, voire très peu.
TEST: car elles pénètrent dans les poumons voire le système sanguin.
TEST: des enfants malades, qui préfèrent souvent voir Dark Vador que des vieux clowns un peu flippants.



#### Pronoms
__[i]__  m’enfin <<- ~>> *
__[i](p_m_enfin)__      m’enfin <<- ~>> *

__[i]/conf(conf_j_y_en_qqch)__
    (j’(?:en +|y +|))({w_1})  @@0,$
    <<- morphex(\2, ":", ":(?:[123][sp]|O[onw])")
    -2>> =suggSimil(\2, ":1s")                                                               # Incohérence avec « \1 » : « \2 » devrait être un verbe.
__[i]/conf(conf_ne_qqch)__
    (n(?:e +|’))({w_1})  @@0,$
4137
4138
4139
4140
4141
4142
4143
4144

4145
4146
4147
4148
4149
4150
4151
4153
4154
4155
4156
4157
4158
4159

4160
4161
4162
4163
4164
4165
4166
4167







-
+







__[i]__  quant à (?:[mt]oi|lui|elles?|[nv]ous|eux)(?! qui) <<- ~>> *
__[i]__  que ça (?:me|te|l(?:ui|eur)|[nv]ous) plaise ou non <<- ~>> *
__[i]__  que (?:je le veuille|tu le veuilles|vous le vouliez|nous le voulions) ou non <<- ~>> *
__[i]__  qu (?:à cela ne tienne|(?:(?:il|elle|on) le veuille|(?:ils|elles) le veuillent) ou non) <<- ~>> *
__[i]__  quel qu en soit le (?:moyen|prix|risque(?: financier|)|danger) <<- ~>> *
__[i]__  quelle qu en soit la (?:cause|raison) <<- ~>> *
__[i]__  quelque(?: (?:part|temps)|s fois) <<- ~>> *
__[i]__  quelques (?:instants|secondes|minutes|heures|jours|semaines|mois|années|siècles|millénaires|trimestres|semestres) (?:auparavant|plus (?:tard|tôt)) <<- ~>> *
__[i]__  quelques (?:instants|secondes|minutes|heures|jours|semaines|mois|années|décennies|siècles|millénaires|trimestres|semestres) (?:auparavant|plus (?:tard|tôt)) <<- ~>> *
__[i]__  qui plus est <<- ~>> *
__[i]__  qui (ce (?:jour|matin|après-midi|soir)-là|cette (?:nuit|matinée|soirée)-là) @@4 <<- ~1>> *
__[i]__  quoi qu il (?:(?:arriv|en co[ûu]t)(?:e|ât)|adv(?:ienne|înt)) <<- ~>> *
__[i]__  sans (?:grande|grosse) difficulté(?: apparente| aucune| financière| majeure| particulière|) <<- ~>> *
__[i]__  sans (?:ambages|arrêt|au(?:cun doute|tre forme de procès)|cesse|commune mesure|conteste|coup férir|crier gare|difficulté(?: apparente| aucune| financière| majeure| particulière|)|dire mot|doute|encombres?|états d’âme|fin|foi,? ni loi|l’ombre d’un doute|le (?:faire exprès|vouloir)|mot dire|nul doute|queue ni tête|raison apparente|relâche|(?:grand |)succès|trêve|(?:pour autant |)y (?:prendre g(?:arde|o[ûu]t)|faire attention|parvenir|réussir|réfléchir|songer|penser)|faire de vagues|s’en (?:rendre compte|apercevoir)|l’aide de personne) <<- ~>> *
__[i]__  séance tenante <<- ~>> *
__[i]__  selon (?:toute vraisemblance|(?:[mt]oi|lui|elles?|eux|nous|vous)(?! qui)) <<- ~>> *
4434
4435
4436
4437
4438
4439
4440

4441

4442
4443
4444
4445



4446
4447
4448
4449
4450
4451
4452



4453
4454
4455
4456
4457
4458
4459
4460
4461
4462
4463
4464
4465
4466
4467
4468
4469
4470
4471
4472
4473
4474
4475
4476
4477
4478
4479
4480
4481



























4482
4483

4484
4485
4486
4487
4488
4489
4490
4491
4492
4493









4494
4495

4496
4497
4498
4499
4500
4501
4502
4503
4504
4505
4506
4507























4508
4509
4510
4511
4512
4513
4514
4450
4451
4452
4453
4454
4455
4456
4457

4458
4459
4460


4461
4462
4463
4464
4465
4466
4467



4468
4469
4470
4471
4472
4473


























4474
4475
4476
4477
4478
4479
4480
4481
4482
4483
4484
4485
4486
4487
4488
4489
4490
4491
4492
4493
4494
4495
4496
4497
4498
4499
4500


4501
4502
4503








4504
4505
4506
4507
4508
4509
4510
4511
4512
4513
4514
4515












4516
4517
4518
4519
4520
4521
4522
4523
4524
4525
4526
4527
4528
4529
4530
4531
4532
4533
4534
4535
4536
4537
4538
4539
4540
4541
4542
4543
4544
4545







+
-
+


-
-
+
+
+




-
-
-
+
+
+



-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+


-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+


+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+







# adverbes en -ment
__[i]__  ({w_2}) (l[ea] (?:plus|moins) (\w+ment)) ({w_2})  @@0,w,>2:$,$
    <<- morph(\1, ":[NAQ]", False) and morph(\3, ":W", False) and morph(\4, ":[AQ]", False) ~2>> *
__[i]__  complètement <<- not morph(word(-1), ":D", False, True) ~>> *
__[i]__  (\w+ment)(?: parlant|) @@0 <<- morph(\1, ":W\\b") ~>> *

# couleurs invariables
__[i](p_couleurs_invariables)__
__[i]__  ({w_2}) +((?:beige|blanc|bleu|brun|châtain|cyan|gris|jaune|magenta|marron|orange|pourpre|rose|rouge|vert|violet) (?:clair|fluo|foncé|irisé|pâle|pastel|sombre|vif|tendre)) @@0,$
    ({w_2}) +((?:beige|blanc|bleu|brun|châtain|cyan|gris|jaune|magenta|marron|orange|pourpre|rose|rouge|vert|violet) (?:clair|fluo|foncé|irisé|pâle|pastel|sombre|vif|tendre)) @@0,$
    <<- morph(\1, ":[NAQ]", False) ~2>> *

# locutions adjectivales & couleurs
__[i]__  ({w_2}) +(bas(?: de gamme|se consommation)|bon (?:enfant|marché|teint|chic,? bon genre)|cl(?:é|ef) en mains?|dernier cri|fleur bleue|grand (?:public|luxe)|grandeur nature|haut(?: de gamme|e résolution)|longue (?:distance|portée|durée)|meilleur marché|numéro (?:un|deux|trois|quatre|cinq|six|sept|huit|neuf|dix(?:-sept|-huit|-neuf)|onze|douze|treize|quatorze|quinze|seize|vingt)|plein cadre|top secret|vieux jeu|open source|Créative Commons|pur jus|terre à terre|bleu (?:ciel|marine|saphir|turquoise)|vert (?:émeraude|olive|pomme)|rouge (?:brique|rubis|sang)|jaune sable|blond platine|gris (?:acier|anthracite|perle)|noir (?:d(?:’encre|e jais)|et blanc))
# locutions adjectivales, nominales & couleurs
__[i](p_locutions_adj_nom_et_couleurs)__
    ({w_2}) +(bas(?: de gamme|se consommation)|bon (?:enfant|marché|teint|chic,? bon genre)|cl(?:é|ef) en mains?|dernier cri|fleur bleue|grand (?:public|luxe)|grandeur nature|haut(?: de gamme|e résolution)|longue (?:distance|portée|durée)|meilleur marché|numéro (?:un|deux|trois|quatre|cinq|six|sept|huit|neuf|dix(?:-sept|-huit|-neuf)|onze|douze|treize|quatorze|quinze|seize|vingt)|plein cadre|top secret|vieux jeu|open source|Créative Commons|pur jus|terre à terre|bleu (?:ciel|marine|saphir|turquoise)|vert (?:émeraude|olive|pomme)|rouge (?:brique|rubis|sang)|jaune sable|blond platine|gris (?:acier|anthracite|perle)|noir (?:d(?:’encre|e jais)|et blanc))
    @@0,$
    <<- morph(\1, ":(?:N|A|Q|V0e)", False) ~2>> *

# tous / tout / toute / toutes
__[i]__  (tout) (?:le|cet?|[mts]on) @@0             <<- ~1>> *
__[i]__  (toute) (?:la|cette|[mts]a) @@0            <<- ~1>> *
__[i]__  (tou(?:te|)s) (?:[ldscsmt]es) @@0          <<- ~1>> *
__[i](p_tout_déterminant_masculin)__        (tout) (?:le|cet?|[mts]on) @@0              <<- ~1>> *
__[i](p_toute_déterminant_féminin)__        (toute) (?:la|cette|[mts]a) @@0             <<- ~1>> *
__[i](p_tous_toutes_déterminant_pluriel)__  (tou(?:te|)s) (?:[ldscsmt]es|[nv]os) @@0    <<- ~1>> *


## 1 mot
__[i]__  ai(?:lleurs|nsi)                           <<- ~>> *
__[i]__  al(?:entour|ors)                           <<- ~>> *
__[i]__  au(?:jourd’hui|paravant)                   <<- ~>> *
__[i]__  bientôt                                    <<- ~>> *
__[i]__  ce(?:pendant|rtes)                         <<- ~>> *
__[i]__  ci-desso?us                                <<- ~>> *
__[i]__  de(?:bout|rechef)                          <<- ~>> *
__[i]__  (depuis), @@0                             <<- ~1>> *
__[i]__  dé(?:jà|sormais)                           <<- ~>> *
__[i]__  do(?:nc|rénavant)                          <<- ~>> *
__[i]__  en(?:fin|suite|core)                       <<- ~>> *
__[i]__  guère                                      <<- ~>> *
__[i]__  jadis                                      <<- ~>> *
__[i]__  jamais          <<- not before(r"(?i)\bne +$") ~>> *
__[i]__  lo(?:in|ngtemps)                           <<- ~>> *
__[i]__  mouais                                     <<- ~>> *
__[i]__  n(?:aguère|éanmoins)                       <<- ~>> *
__[i]__  par(?:fois|tout)                           <<- ~>> *
__[i]__  p(?:eut-être|lutôt|ourtant|resque|rimo)    <<- ~>> *
__[i]__  quelquefois                                <<- ~>> *
__[i]__  sou(?:dain|vent)                           <<- ~>> *
__[i]__  tou(?:jours|tefois)                        <<- ~>> *
__[i]__  secondo                                    <<- ~>> *
__[i]__  sur(?:-le-champ|tout)                      <<- ~>> *
__[i]__  t(?:ôt|ard|antôt|ertio)                    <<- ~>> *
__[i]__  très                                       <<- ~>> *
__[i](p_ailleurs_ainsi)__               ai(?:lleurs|nsi)                            <<- ~>> *
__[i](p_alentour_alors)__               al(?:entour|ors)                            <<- ~>> *
__[i](p_aujourdhui_auparavant)__        au(?:jourd’hui|paravant)                    <<- ~>> *
__[i](p_bientôt)__                      bientôt                                     <<- ~>> *
__[i](p_cependant_certes)__             ce(?:pendant|rtes)                          <<- ~>> *
__[i](p_ci_dessus_dessous)__            ci-desso?us                                 <<- ~>> *
__[i](p_debout_derechef)__              de(?:bout|rechef)                           <<- ~>> *
__[i](p_depuis)__                       (depuis), @@0                              <<- ~1>> *
__[i](p_déjà_désormais)__               dé(?:jà|sormais)                            <<- ~>> *
__[i](p_donc_dorénavant)__              do(?:nc|rénavant)                           <<- ~>> *
__[i](p_enfin_ensuite_encore)__         en(?:fin|suite|core)                        <<- ~>> *
__[i](p_guère)__                        guère                                       <<- ~>> *
__[i](p_jadis)__                        jadis                                       <<- ~>> *
__[i](p_jamais)__                       jamais           <<- not before(r"(?i)\bne +$") ~>> *
__[i](p_loin_longtemps)__               lo(?:in|ngtemps)                            <<- ~>> *
__[i](p_mouais)__                       mouais                                      <<- ~>> *
__[i](p_naguère)__                      n(?:aguère|éanmoins)                        <<- ~>> *
__[i](p_parfois_partout)__              par(?:fois|tout)                            <<- ~>> *
__[i](p_presque_primo)__                pr(?:esque|imo)                             <<- ~>> *
__[i](p_peut_être_plutôt_pourtant)__    p(?:eut-être|lutôt|ourtant)                 <<- ~>> *
__[i](p_quelquefois)__                  quelquefois                                 <<- ~>> *
__[i](p_soudain_souvent)__              sou(?:dain|vent)                            <<- ~>> *
__[i](p_toujours_toutefois)__           tou(?:jours|tefois)                         <<- ~>> *
__[i](p_secondo)__                      secondo                                     <<- ~>> *
__[i](p_sur_le_champ_surtout)__         sur(?:-le-champ|tout)                       <<- ~>> *
__[i](p_tôt_tard_tantôt_tertio_très)__  t(?:ôt|ard|antôt|ertio|rès)                 <<- ~>> *
__[i](p_vite)__                         vite                                        <<- ~>> *
__[i]__  vite                                       <<- ~>> *
__[i]__  volontiers                                 <<- ~>> *
__[i](p_volontiers)__                   volontiers                                  <<- ~>> *

# après
__[i]__  au fur et à mesure                         <<- ~>> *
__<i>__  , +(?:oui|non|entre autres),               <<- ~>> *
__<s>__  , +,                                       <<- ~>> *
__<s>__  ^ *,                                       <<- ~>> *
__<s>__  , *$                                       <<- ~>> *
__<s>__  [—–-] +[—–-]                               <<- ~>> *
__<s>__  [<] +[>]                                   <<- ~>> *
__<s>__  [(] +[)]                                   <<- ~>> *
__[i](p_au_fur_et_à_mesure)__           au fur et à mesure                          <<- ~>> *
__<i>(p_oui_non_entre_autres)__         , +(?:oui|non|entre autres),                <<- ~>> *
__<s>(p_virgule_virgule)__              , +,                                        <<- ~>> *
__<s>(p_première_virgule)__             ^ *,                                        <<- ~>> *
__<s>(p_dernière_virgule)__             , *$                                        <<- ~>> *
__<s>(p_tiret_tiret)__                  [—–-] +[—–-]                                <<- ~>> *
__<s>(p_parenthèses_vides)__            [(] +[)]                                    <<- ~>> *
__<s>(p_balise_vide)__                  [<] +[>]                                    <<- ~>> *


# Seconde passe (il faut réorganiser tout le cycle de simplification)
__[i](p_à_nos_yeux)__
__[i]__  (à (?:[mts]es|[nv]os|leurs) yeux) +({w_1}) @@0,$ <<- not morph(\2, ":A.*:[me]:[pi]", False) ~1>> *
__[i]__  (chaque (?:année|semaine|journée|décennie)) +({w_1}) @@0,$ <<- not morph(\2, ":(?:A.*:[fe]:[si]|Oo|[123][sp])", False) ~1>> *
__[i]__  (chaque (?:an|jour|mois)) +({w_1}) @@0,$ <<- not morph(\2, ":(?:A.*:[me]:[si]|Oo|[123][sp])", False) ~1>> *
__[i]__  (dans l’ensemble) +({w_1}) @@0,$ <<- not morph(\2, ":A.*:[me]:[si]", False) ~1>> *
__[i]__  (de ce (?:seul |)fait) +({w_1}) @@0,$ <<- not morph(\2, ":A.*:[me]:[si]", False) ~1>> *
__[i]__  (dès les premiers (?:jours|mois|ans|siècles|trimestres|semestres)) +({w_1}) @@0,$ <<- not morph(\2, ":A.*:[me]:[pi]", False) ~1>> *
__[i]__  (dès les premières (?:années|semaines|minutes|secondes|heures|décennies)) +({w_1}) @@0,$ <<- not morph(\2, ":A.*:[fe]:[pi]", False) ~1>> *
__[i]__  (en (?:certaines|quelques|plusieurs|de multiples) occasions) +({w_1}) @@0,$ <<- not morph(\2, ":A.*:[fe]:[pi]", False) ~1>> *
__[i]__  (entre autres choses) +({w_1}) @@0,$ <<- not morph(\2, ":A.*:[fe]:[pi]", False) ~1>> *
__[i]__  ((?:quelques|plusieurs|de +nombreuses) (?:secondes|minutes|heures|journées|semaines|années|décennies)) +({w_1}) @@0,$ <<- not morph(\2, ":A.*:[fe]:[pi]", False) ~1>> *
__[i]__  ((?:quelques|plusieurs|de +nombreux) (?:instants|moments|jours|mois|ans|siècles)) +({w_1}) @@0,$ <<- not morph(\2, ":A.*:[me]:[pi]", False) ~1>> *
__[i]__  (un (?:instant|moment)) +({w_1}) @@0,$ <<- not morph(\2, ":A.*:[me]:[si]", False) ~1>> *
    (à (?:[mts]es|[nv]os|leurs) yeux) +({w_1}) @@0,$ <<- not morph(\2, ":A.*:[me]:[pi]", False) ~1>> *
__[i](p_chaque_année_semaine_journée_décennie)__
    (chaque (?:année|semaine|journée|décennie)) +({w_1}) @@0,$ <<- not morph(\2, ":(?:A.*:[fe]:[si]|Oo|[123][sp])", False) ~1>> *
__[i](p_chaque_an_jour_mois)__
    (chaque (?:an|jour|mois)) +({w_1}) @@0,$ <<- not morph(\2, ":(?:A.*:[me]:[si]|Oo|[123][sp])", False) ~1>> *
__[i](p_dans_l_ensemble)__
    (dans l’ensemble) +({w_1}) @@0,$ <<- not morph(\2, ":A.*:[me]:[si]", False) ~1>> *
__[i](p_de_ce_seul_fait)__
    (de ce (?:seul |)fait) +({w_1}) @@0,$ <<- not morph(\2, ":A.*:[me]:[si]", False) ~1>> *
__[i](p_dès_les_premiers_jours_mois_ans)__
    (dès les premiers (?:jours|mois|ans|siècles|trimestres|semestres)) +({w_1}) @@0,$ <<- not morph(\2, ":A.*:[me]:[pi]", False) ~1>> *
__[i](p_dès_les_premières_années_heures_minutes)__
    (dès les premières (?:années|semaines|minutes|secondes|heures|décennies)) +({w_1}) @@0,$ <<- not morph(\2, ":A.*:[fe]:[pi]", False) ~1>> *
__[i](p_en_certaines_plusieurs_occasions)__
    (en (?:certaines|quelques|plusieurs|de multiples) occasions) +({w_1}) @@0,$ <<- not morph(\2, ":A.*:[fe]:[pi]", False) ~1>> *
__[i](p_entre_autres_choses)__
    (entre autres choses) +({w_1}) @@0,$ <<- not morph(\2, ":A.*:[fe]:[pi]", False) ~1>> *
__[i](p_quelques_minutes_heures_années_plus_tard)__
    ((?:quelques|plusieurs|de +nombreuses) (?:secondes|minutes|heures|journées|semaines|années|décennies)) +({w_1}) @@0,$ <<- not morph(\2, ":A.*:[fe]:[pi]", False) ~1>> *
__[i](p_quelques_instants_jours_siècles)__
    ((?:quelques|plusieurs|de +nombreux) (?:instants|moments|jours|mois|ans|siècles)) +({w_1}) @@0,$ <<- not morph(\2, ":A.*:[me]:[pi]", False) ~1>> *
__[i](p_un_moment_instant)__
    (un (?:instant|moment)) +({w_1}) @@0,$ <<- not morph(\2, ":A.*:[me]:[si]", False) ~1>> *


TEST: pourquoi faire compliqué quand on peut faire simple
TEST: Pour ceux et celles qui étaient présents à la cérémonie
TEST: les pires vilénies suite au mauvais vote du peuple
TEST: La numéro 1 mondiale
TEST: cette information n’est rien comparé à cette énorme pression
4554
4555
4556
4557
4558
4559
4560
4561
4562
4563
4564
4565
4566
4567













4568
4569
4570
4571
4572
4573

4574

4575
4576

4577

4578
4579

4580

4581
4582
4583
4584
4585
4586
4587
4585
4586
4587
4588
4589
4590
4591







4592
4593
4594
4595
4596
4597
4598
4599
4600
4601
4602
4603
4604
4605
4606
4607
4608
4609
4610
4611

4612
4613
4614
4615

4616
4617
4618
4619

4620
4621
4622
4623
4624
4625
4626
4627







-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+






+
-
+


+
-
+


+
-
+








#__[i]__  ({avoir}) +({w_1}[eiuts])  @@0,$
#    <<- morph(\1, ":V0a", False) and morphex(\1, ":Q", ":G")
#    =>> exclude(\2, ":A")


### Désambiguïsation par séparation de le/la/les avec la suite s’il s’agit de COD dans les syntagmes verbaux
#__[i>__  [nmts]e l(?:es?|a)( ) @@$          <<- ~1>> @
__[i>__  je l(?:es?|a)( ) @@$               <<- not morph(word(-1), ":1s", False, False) ~1>> @
__[i>__  tu l(?:es?|a)( ) @@$               <<- not morph(word(-1), ":2s", False, False) ~1>> @
__[i>__  (?:il|elle|on) l(?:es?|a)( ) @@$   <<- not morph(word(-1), ":3s", False, False) ~1>> @
__[i>__  nous l(?:es?|a)( ) @@$             <<- not morph(word(-1), ":1p", False, False) ~1>> @
__[i>__  vous l(?:es?|a)( ) @@$             <<- not morph(word(-1), ":2p", False, False) ~1>> @
__[i>__  (?:ils|elles) l(?:es?|a)( ) @@$    <<- not morph(word(-1), ":3p", False, False) ~1>> @
__[i>(p_astuce_je_le_la_les)__
    je l(?:es?|a)( ) @@$               <<- not morph(word(-1), ":1s", False, False) ~1>> @
__[i>(p_astuce_tu_le_la_les)__
    tu l(?:es?|a)( ) @@$               <<- not morph(word(-1), ":2s", False, False) ~1>> @
__[i>(p_astuce_il_elle_on_le_la_les)__
    (?:il|elle|on) l(?:es?|a)( ) @@$   <<- not morph(word(-1), ":3s", False, False) ~1>> @
__[i>(p_astuce_nous_le_la_les)__
    nous l(?:es?|a)( ) @@$             <<- not morph(word(-1), ":1p", False, False) ~1>> @
__[i>(p_astuce_vous_le_la_les)__
    vous l(?:es?|a)( ) @@$             <<- not morph(word(-1), ":2p", False, False) ~1>> @
__[i>(p_astuce_ils_elles_le_la_les)__
    (?:ils|elles) l(?:es?|a)( ) @@$    <<- not morph(word(-1), ":3p", False, False) ~1>> @
#__[i>__  [nmts]e l(?:es?|a)( ) @@$          <<- ~1>> @
#__[i]__  l(?:es?|a)( )({w_2}) @@*,$         <<- morph(\2, ":[123][sp]") ~1>> @


### DPP: Désambiguïsation par distinction des mots qui sont à la fois (verbes conjugués ET (noms ET/OU adjectifs))
# Cette distinction est nécessaire seulement pour les mots suivant un groupe nominal.
# Exemples : finis, donne(s), avance(s), bavarde(s)
__[i](p_astuce_désambiguïsation1)__
__[i]__  (?<![lL]’)une? ({w_2})( ) *({w_2})  @@w,**,$
    (?<![lL]’)une? ({w_2})( ) *({w_2})  @@w,**,$
    <<- isAmbiguousNAV(\3) and morphex(\1, ":[NAQ]", ">telle ")
    ~2>> ~
__[i](p_astuce_désambiguïsation2)__
__[i]__  (?:d(?:es? |’)|[mts](?:es|on|a) |ce(?:s|t(?:te|)|rtaine?s|) |[nv](?:otre|os) |leurs |quelques ) *({w_2})( ) *({w_2}) @@w,**,$
    (?:d(?:es? |’)|[mts](?:es|on|a) |ce(?:s|t(?:te|)|rtaine?s|) |[nv](?:otre|os) |leurs |quelques ) *({w_2})( ) *({w_2}) @@w,**,$
    <<- isAmbiguousNAV(\3) and morphex(\1, ":[NAQ]", ">telle ") and not re.search("^[dD](?:’une?|e l(?:a|eur)) ", \0)
    ~2>> ~
__[i](p_astuce_désambiguïsation3)__
__[i]__  l(?:es? |a |’|eur ) *({w_2})( ) *({w_2})  @@w,**,$
    l(?:es? |a |’|eur ) *({w_2})( ) *({w_2})  @@w,**,$
    <<- isAmbiguousNAV(\3) and ( morphex(\1, ":[NAQ]", ":V0a") or (morphex(\1, ":[NAQ]", ":(?:3[sp]|V0a)") and not word(-1)) )
    ~2>> ~

TEST: comme le signe évident d’une politique volontaire
TEST: c’était le signe évident d’une politique volontaire
TEST: ce que c’est : le signe évident d’une politique volontaire

7729
7730
7731
7732
7733
7734
7735

7736

7737
7738
7739

7740

7741
7742
7743
7744
7745



7746
7747

7748

7749
7750

7751

7752
7753

7754

7755
7756
7757


7758
7759



7760
7761

7762

7763

7764

7765

7766

7767
7768
7769
7770
7771
7772
7773
7774







7775
7776
7777
7778
7779
7780
7781
7769
7770
7771
7772
7773
7774
7775
7776

7777
7778
7779
7780
7781

7782
7783
7784



7785
7786
7787
7788
7789
7790

7791
7792
7793
7794

7795
7796
7797
7798

7799
7800
7801
7802
7803
7804


7805
7806
7807
7808
7809
7810

7811
7812
7813

7814
7815
7816

7817
7818
7819






7820
7821
7822
7823
7824
7825
7826
7827
7828
7829
7830
7831
7832
7833







+
-
+



+
-
+


-
-
-
+
+
+


+
-
+


+
-
+


+
-
+



+
+
-
-
+
+
+


+
-
+

+
-
+

+
-
+


-
-
-
-
-
-
+
+
+
+
+
+
+







__[i]__  aucune? (de [nv]ous|d’e(?:ux|lles|ntre (?:[nv]ous|e(?:ux|lles)))) @@$ <<- ~1>> *
__[i]__  aucune? +(des +{w_2}) +ne? @@w <<- ~1>> *
__[i]__  chacune? (de [nv]ous|d’e(?:ux|lles|ntre (?:[nv]ous|e(?:ux|lles)))) @@$ <<- ~1>> *
__[i]__  l’une? (de [nv]ous|des [nv]ôtres|d’e(?:ux|lles|ntre (?:[nv]ous|e(?:ux|lles)))) @@$ <<- ~1>> *
__[i]__  la plupart (des {w_2}) @@11 <<- ~1>> *

# groupe déjà partiellement simplifié (selon les règles de la passe 3)
__[i](p_groupes_déjà_simplifiés)__
__[i]__  (?:a(?:ux?|vec)|à|en)   +d(?:e +(?:la |l’|leurs? |ce(?:s|tte|t|) |[nv]o(?:s|tre) |[mts](?:a|on) |quelques? |certaine?s? )|es? |u ) *({w2})  @@$
    (?:a(?:ux?|vec)|à|en)   +d(?:e +(?:la |l’|leurs? |ce(?:s|tte|t|) |[nv]o(?:s|tre) |[mts](?:a|on) |quelques? |certaine?s? )|es? |u ) *({w2})  @@$
    <<- morph(\1, ":[NAQ]", False) and isEndOfNG() ~>> *

## y compris (pas terrible, mais cas difficile)
__[i](p_y_compris)__
__[i]__  y compris <<- not before(r"(?i)\b(?:[jn]’|tu )$") ~>> *
    y compris <<- not before(r"(?i)\b(?:[jn]’|tu )$") ~>> *

## eux/nous/vous tous -- elles toutes
__[i]__  [nv]ous (tou(?:te|)s) qui @@5 <<- ~1>> *
__[i]__  eux (tous) qui @@4 <<- ~1>> *
__[i]__  elles (toutes) qui @@6 <<- ~1>> *
__[i](p_nous_vous_tous_toutes_qui)__    [nv]ous (tou(?:te|)s) qui @@5 <<- ~1>> *
__[i](p_eux_tous_qui)__                 eux (tous) qui @@4 <<- ~1>> *
__[i](p_elles_toutes_qui)__             elles (toutes) qui @@6 <<- ~1>> *

## groupe avec préposition
__[i](p_préposition_nom)__
__[i]__  (?:avec|à|s(?:ur|ous|elon)|c(?:ontre|hez)|dans|envers|p(?:ar|our)|aux?) +({w_2})  @@$
    (?:avec|à|s(?:ur|ous|elon)|c(?:ontre|hez)|dans|envers|p(?:ar|our)|aux?) +({w_2})  @@$
    <<- morphex(\1, ":[NAQ]", ":[GY]") and isEndOfNG()
    ~>> *
__[i](p_préposition_déterminant_nom)__
__[i]__  (?:avec|à|s(?:ur|ous|elon)|c(?:ontre|hez)|dans|envers|p(?:ar|our)) +(?:les? |la |l’|de(?:s| la|) |ce[st]? |cette |[mts](?:es|on|a) |[nv]o(?:s|tre) |leurs? |certaine?s? |quelques ) *({w_2})  @@$
    (?:avec|à|s(?:ur|ous|elon)|c(?:ontre|hez)|dans|envers|p(?:ar|our)) +(?:les? |la |l’|de(?:s| la|) |ce[st]? |cette |[mts](?:es|on|a) |[nv]o(?:s|tre) |leurs? |certaine?s? |quelques ) *({w_2})  @@$
    <<- morph(\1, ":[NAQ]", False) and isEndOfNG()
    ~>> *
__[i](p_lors_de_du_nom)__
__[i]__  lors d(?:’|e(?:s| la|) |u ) *({w_2})  @@$
    lors d(?:’|e(?:s| la|) |u ) *({w_2})  @@$
    <<- morph(\1, ":[NAQ]", False) and isEndOfNG()
    ~>> *

## doute que
__[i](p_nul_doute_que)__
__[i]__  nul doute qu  <<- not word(-1) ~>> *
__[i]__  (dout\w+)( ) *que?  @@0,*  <<- morph(\1, ">douter ", False) and before(r"(?i)\b(?:[mts]e|[nv]ous) +$") ~2>> ,
    nul doute qu  <<- not word(-1) ~>> *
__[i](p_douter_que)__
    (dout\w+)( ) *que?  @@0,*  <<- morph(\1, ">douter ", False) and before(r"(?i)\b(?:[mts]e|[nv]ous) +$") ~2>> ,

## de +
__[i](p_de_nom)__
__[i]__  d(?:e +|’)(?!autres)({w_2}) @@$
    d(?:e +|’)(?!autres)({w_2}) @@$
    <<- morphex(\1, ":N", ":[GY]") and isEndOfNG() ~>> *
__[i](p_de_pronom_nom)__
__[i]__  de (?:ce(?:t|tte|s|)|[mts](?:on|a|es)|[nv](?:otre|os)|leurs) +({w_2})  @@$
    de (?:ce(?:t|tte|s|)|[mts](?:on|a|es)|[nv](?:otre|os)|leurs) +({w_2})  @@$
    <<- morph(\1, ":[NAQ]", False) and isEndOfNG() ~>> *
__[i](p_de_la_leur_nom)__
__[i]__  de l(?:a|eur) +({w_2})  @@$
    de l(?:a|eur) +({w_2})  @@$
    <<- morphex(\1, ":[NAQ]", ":Y") and isEndOfNG() ~>> *

__[s]__  , +, <<- ~>> *
__[s]__  ^ *, <<- ~>> *
__[s]__  , *$ <<- ~>> *
__[s]__  [—–-] +[—–-] <<- ~>> *
__[s]__  [<] +[>] <<- ~>> *
__[s]__  [(] +[)] <<- ~>> *
__[s](p_virgule_virgule2)__     , +, <<- ~>> *
__[s](p_première_virgule2)__    ^ *, <<- ~>> *
__[s](p_dernière_virgule2)__    , *$ <<- ~>> *
__[s](p_tiret_tiret2)__         [—–-] +[—–-] <<- ~>> *
__[s](p_parenthèses_vides2)__   [(] +[)] <<- ~>> *
__[s](p_balise_vide2)__         [<] +[>] <<- ~>> *



TEST: tandis que d’autres perçoivent le bon goût de la soupe.
TEST: Je me doute bien que vous avez trouvé la réponse.
TEST: Nous nous doutons bien qu’il y a une entourloupe derrière cette affaire.


8985
8986
8987
8988
8989
8990
8991
8992
8993
8994
8995
8996
8997
8998







8999
9000
9001
9002
9003
9004
9005
9037
9038
9039
9040
9041
9042
9043







9044
9045
9046
9047
9048
9049
9050
9051
9052
9053
9054
9055
9056
9057







-
-
-
-
-
-
-
+
+
+
+
+
+
+










#
# //////////////////////////////////////// PRÉPROCESSEUR ////////////////////////////////////////
#

__<i>__  n(’)importe quo?i @@1 <<- ~1>> `
__<i]__  ^ *ne l(?:es?|a) l(?:ui|eur) <<- ~>> >
__<i]__  ^ *ne (?:[mt]’|l(?:ui|eur) )en <<- ~>> >
__<i]__  ^ *ne (?:[mt]e|[nv]ous) (?:les?|la|en) <<- ~>> >
__<i]__  ^ *ne +(?:en|l(?:es?|a|’(?:en|y))|[mt](?:e|’(?:en|y))|[nv]ous) <<- ~>> >
__<i>__  ^ *n’(?:en |y |) <<- ~>> >
__<i>__  ^ *ne (?:l’|) <<- ~>> >
__<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) <<- ~>> >
__<i](p_premier_ne_pro_per_obj2)__  ^ *ne (?:[mt]’|l(?:ui|eur) )en <<- ~>> >
__<i](p_premier_ne_pro_per_obj3)__  ^ *ne (?:[mt]e|[nv]ous) (?:les?|la|en) <<- ~>> >
__<i](p_premier_ne_pro_per_obj4)__  ^ *ne +(?:en|l(?:es?|a|’(?:en|y))|[mt](?:e|’(?:en|y))|[nv]ous) <<- ~>> >
__<i>(p_premier_ne_pro_per_obj5)__  ^ *n’(?:en |y |) <<- ~>> >
__<i>(p_premier_ne_pro_per_obj6)__  ^ *ne (?:l’|) <<- ~>> >


#
# //////////////////////////////////////// RÈGLES DE CONTRÔLE ////////////////////////////////////////
#


9243
9244
9245
9246
9247
9248
9249
9250
9251
9252
9253
9254
9255
9256
9257
9258









9259
9260
9261
9262
9263
9264
9265
9266
9267
9268
9269
9270
9271
9272
9273
9274
9275
9276
9277
9278
9279
9280
9281
9282
9283
9284
9285
9286
9287


























9288
9289
9290
9291
9292
9293
9294
9295
9296
9297
9298
9299
9300
9301









9302
9303
9304
9305
9306
9307
9308
9309
9310
9311
9312
9313


























9314
9315
9316
9317
9318
9319
9320
9321
9322
9323
9324
9325
9326
9327
9328
9329
9330
9331
9332
9333
9334
9335
9336
9337
9338
9339
9340
9341
9342
9343
9344
9345
9346







-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+



-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+








#
# //////////////////////////////////////// PRÉPROCESSEUR ////////////////////////////////////////
# Destruction des pronoms qui précèdent un verbe et de l’adverbe de négation “ne”.
#

# Brainfuck (ici, prudence !)
__[i]__  ne +(?:l(?:ui|eur|a|es?)|[mts]e|[nv]ous) +(?:l(?:a|es?|ui|eur)|en|y) <<- ~>> >
__[i]__  ne +(?:[mts](?:e|’(?:en|y))|[nv]ous|l(?:es?|a|ui|eur|’(?:en|y))) <<- ~>> >
__[i]__  [mts]e +l(?:a|es?) <<- ~>> >
__[i]__  [nmsl]’(?:en|y) <<- ~>> >
__[i]__  l(?:a|es?) +(?:lui|en) <<- ~>> >
__[i]__  lui +(?:la|les?|en|y) <<- not morph(word(-1), ":R", False, True) ~>> >
__[i]__  leur +(?:en|y) <<- not morph(word(-1), ":R", False, False) ~>> >
__[i]__  (?:je|tu|ils?|on) ([nv]ous(?: la| les?|)|lui) @@$ <<- ~1>> >
__[i]__  (?:je|tu|ils?|on) (l(?:es?|a)) ({w_1}) @@w,$
__[i](p_pro_per_obj01)__    ne +(?:l(?:ui|eur|a|es?)|[mts]e|[nv]ous) +(?:l(?:a|es?|ui|eur)|en|y) <<- ~>> >
__[i](p_pro_per_obj02)__    ne +(?:[mts](?:e|’(?:en|y))|[nv]ous|l(?:es?|a|ui|eur|’(?:en|y))) <<- ~>> >
__[i](p_pro_per_obj03)__    [mts]e +l(?:a|es?) <<- ~>> >
__[i](p_pro_per_obj04)__    [nmsl]’(?:en|y) <<- ~>> >
__[i](p_pro_per_obj05)__    l(?:a|es?) +(?:lui|en) <<- ~>> >
__[i](p_pro_per_obj06)__    lui +(?:la|les?|en|y) <<- not morph(word(-1), ":R", False, True) ~>> >
__[i](p_pro_per_obj07)__    leur +(?:en|y) <<- not morph(word(-1), ":R", False, False) ~>> >
__[i](p_pro_per_obj08)__    (?:je|tu|ils?|on) ([nv]ous(?: la| les?|)|lui) @@$ <<- ~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]") ~1>> >
    <<- \1 == "la" and not morph(\2, ":N.*:[fe]:[si]") ~1>> >
    <<- \1 == "les" and not morph(\2, ":N.*:.:[pi]") ~1>> >
__[i]__  (?:elles?|[nv]ous) ([nv]ous(?: la| les?|)|l(?:es?|ui|a)) @@$ <<- not morph(word(-1), ":R", False, False) ~1>> >
__[i]__  ce(?:ux|lles?|lui|la|) qui ([nv]ous(?: la| les?|)|l(?:es?|ui|a)) @@$ <<- ~1>> >
__[i]__  (?<!’)(en) ({w_2}) @@0,$ <<- morph(\2, ":[123][sp]") ~1>> >
__[i]__  (?:tu|il|on) (en) @@3 <<- not morph(word(-1), ":[123]s", False, False) ~1>> >
__[i]__  (?<!’)elle (en) @@5 <<- not morph(word(-1), ":(?:[123]s|R)", False, False) ~1>> >
__[i]__  (?<!’)elles (en) @@6 <<- not morph(word(-1), ":(?:[123]p|R)", False, False) ~1>> >
__[i]__  ils (en) @@4 <<- not morph(word(-1), ":3p", False, False) ~1>> >
__[i]__  (?<!’)(y) ({w_2}) @@0,2 <<- morph(\2, ":[123][sp]", False) ~1>> >
__[i]__  (le) ({w_2}) @@0,3 <<- morphex(\2, ":(?:[123][sp]|Y)", ":(?:[NAQ].*:[me]:[si]|G|M)") ~1>> >
__[i]__  (la) ({w_2}) @@0,3 <<- morphex(\2, ":(?:[123][sp]|Y)", ":(?:[NAQ].*:[fe]:[si]|G|M)") ~1>> >
__[i]__  (l’)({w_2}) @@0,2 <<- morphex(\2, ":(?:[123][sp]|Y)", ":(?:[NAQ].*:[si]|G|M)") ~1>> >
__[i]__  (leur) ({w_2}) @@0,5 <<- morphex(\2, ":(?:[123][sp]|Y)", ":(?:[NAQ].*:[si]|G|M)") ~1>> >
__[s]__  [lL]’a <<- ~>> > a
__[i]__  (nous) ({w_2}) @@0,5 <<- morphex(\2, ":(?:[123][sp]|Y)", ":(?:A|G|M|1p)") ~1>> >
__[i]__  (vous) ({w_2}) @@0,5 <<- morphex(\2, ":(?:[123][sp]|Y)", ":(?:A|G|M|2p)") ~1>> >
__[i]__  (?:à|de) ([nv]ous|lui|les?|en)(?! qui) @@$ <<- ~1>> >
__[i]__  (s’)({w4}) @@0,2 <<- morph(\2, ":V", False) ~1>> >
__[i]__  (?:je|tu|ils?|elles?|on) (l’|l(?:es?|a|ui|eur) +|[nv]ous +){w_2} @@* <<- not word(-1) ~1>> >
__[i]__  (?:je|tu|ils?|elles?|on|[nv]ous|ce(?:ux|elles?|lui|la|) qui) (l’)({w4}) @@*,$ <<- morph(\2, ":V", False) ~1>> >
__[i]__  (t’(?:en|y)) ({w_2}) @@0,$ <<- not morph(\2, ":2s", False) or before(r"(?i)\b(?:je|tu|on|ils?|elles?|nous) +$") ~1>> >
__[i]__  (t’)({w_2}) @@0,$ <<- not morph(\2, ":2s|>(ils?|elles?|on) ", False) or before(r"(?i)\b(?:je|tu|on|ils?|elles?|nous) +$") ~1>> >
__[i>__  ne [mtsl]’ <<- ~>> >
__[i>__  [mts]e +l’ <<- ~>> >
__[i>__  [nm]’ <<- ~>> >
__[i]__  [nmts]e <<- ~>> >
__<s>__  > +> <<- ~>> >
__[i](p_pro_per_obj10)__    (?:elles?|[nv]ous) ([nv]ous(?: la| les?|)|l(?:es?|ui|a)) @@$ <<- not morph(word(-1), ":R", False, False) ~1>> >
__[i](p_pro_per_obj11)__    ce(?:ux|lles?|lui|la|) qui ([nv]ous(?: la| les?|)|l(?:es?|ui|a)) @@$ <<- ~1>> >
__[i](p_pro_per_obj12)__    (?<!’)(en) ({w_2}) @@0,$ <<- morph(\2, ":[123][sp]") ~1>> >
__[i](p_pro_per_obj13)__    (?:tu|il|on) (en) @@3 <<- not morph(word(-1), ":[123]s", False, False) ~1>> >
__[i](p_pro_per_obj14)__    (?<!’)elle (en) @@5 <<- not morph(word(-1), ":(?:[123]s|R)", False, False) ~1>> >
__[i](p_pro_per_obj15)__    (?<!’)elles (en) @@6 <<- not morph(word(-1), ":(?:[123]p|R)", False, False) ~1>> >
__[i](p_pro_per_obj16)__    ils (en) @@4 <<- not morph(word(-1), ":3p", False, False) ~1>> >
__[i](p_pro_per_obj17)__    (?<!’)(y) ({w_2}) @@0,2 <<- morph(\2, ":[123][sp]", False) ~1>> >
__[i](p_pro_per_obj18)__    (le) ({w_2}) @@0,3 <<- morphex(\2, ":(?:[123][sp]|Y)", ":(?:[NAQ].*:[me]:[si]|G|M)") ~1>> >
__[i](p_pro_per_obj19)__    (la) ({w_2}) @@0,3 <<- morphex(\2, ":(?:[123][sp]|Y)", ":(?:[NAQ].*:[fe]:[si]|G|M)") ~1>> >
__[i](p_pro_per_obj20)__    (l’)({w_2}) @@0,2 <<- morphex(\2, ":(?:[123][sp]|Y)", ":(?:[NAQ].*:[si]|G|M)") ~1>> >
__[i](p_pro_per_obj21)__    (leur) ({w_2}) @@0,5 <<- morphex(\2, ":(?:[123][sp]|Y)", ":(?:[NAQ].*:[si]|G|M)") ~1>> >
__[s](p_pro_per_obj22)__    [lL]’a <<- ~>> > a
__[i](p_pro_per_obj23)__    (nous) ({w_2}) @@0,5 <<- morphex(\2, ":(?:[123][sp]|Y)", ":(?:A|G|M|1p)") ~1>> >
__[i](p_pro_per_obj24)__    (vous) ({w_2}) @@0,5 <<- morphex(\2, ":(?:[123][sp]|Y)", ":(?:A|G|M|2p)") ~1>> >
__[i](p_pro_per_obj25)__    (?:à|de) ([nv]ous|lui|les?|en)(?! qui) @@$ <<- ~1>> >
__[i](p_pro_per_obj26)__    (s’)({w4}) @@0,2 <<- morph(\2, ":V", False) ~1>> >
__[i](p_pro_per_obj27)__    (?:je|tu|ils?|elles?|on) (l’|l(?:es?|a|ui|eur) +|[nv]ous +){w_2} @@* <<- not word(-1) ~1>> >
__[i](p_pro_per_obj28)__    (?:je|tu|ils?|elles?|on|[nv]ous|ce(?:ux|elles?|lui|la|) qui) (l’)({w4}) @@*,$ <<- morph(\2, ":V", False) ~1>> >
__[i](p_pro_per_obj29)__    (t’(?:en|y)) ({w_2}) @@0,$ <<- 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,$ <<- 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]’ <<- ~>> >
__[i>(p_pro_per_obj32)__    [mts]e +l’ <<- ~>> >
__[i>(p_pro_per_obj33)__    [nm]’ <<- ~>> >
__[i](p_pro_per_obj34)__    [nmts]e <<- ~>> >
__<s>(p_pro_per_obj35)__    > +> <<- ~>> >
# Fin du Brainfuck


#
# //////////////////////////////////////// RÈGLES DE CONTRÔLE ////////////////////////////////////////
#