Grammalecte  Check-in [7fba9f8163]

Overview
Comment:[fr] ajustements
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk | fr
Files: files | file ages | folders
SHA3-256: 7fba9f816300e00129c5014fa7d501a57eb929127c355e33ee59a9061f12406f
User & Date: olr on 2020-12-11 20:03:06
Other Links: manifest | tags
Context
2020-12-11
20:04
[lo][fr] update version to download extension check-in: c491b9dc46 user: olr tags: fr, lo, trunk
20:03
[fr] ajustements check-in: 7fba9f8163 user: olr tags: fr, trunk
2020-12-10
00:10
[graphspell] lexicographer: fix tag recognition check-in: 710e4f6d06 user: olr tags: graphspell, trunk
Changes

Modified gc_lang/fr/rules.grx from [1ff9f336f5] to [d23f38e310].

2346
2347
2348
2349
2350
2351
2352
2353
2354
2355
2356
2357
2358
2359
2360
2361
2362
2363



2364
2365
2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
2381
2382
2383
2384
2385
2386
2387
2388
2389
2390
2391
2392
2393
....
2465
2466
2467
2468
2469
2470
2471
2472
2473
2474
2475
2476
2477
2478
2479
2480
2481
2482
2483
....
2513
2514
2515
2516
2517
2518
2519
2520
2521
2522
2523
2524
2525
2526
2527
2528
2529
2530
2531
2532
2533
2534
2535
2536
2537
2538
2539
2540
2541



2542
2543
2544
2545
2546
2547
2548
....
2588
2589
2590
2591
2592
2593
2594
















2595
2596
2597
2598
2599
2600
2601
....
2609
2610
2611
2612
2613
2614
2615

2616
2617
2618
2619
2620
2621
2622
....
2631
2632
2633
2634
2635
2636
2637





2638
2639
2640
2641
2642
2643
2644
....
2653
2654
2655
2656
2657
2658
2659











2660
2661
2662

2663
2664
2665
2666
2667




2668
2669
2670
2671
2672
2673
2674
2675
2676
2677
2678
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
2689
2690
2691
2692
....
2693
2694
2695
2696
2697
2698
2699







2700
2701
2702
2703
2704
2705
2706
2707
2708
2709
2710
2711
2712
2713
2714
2715
....
2723
2724
2725
2726
2727
2728
2729



2730
2731
2732
2733
2734
2735
2736
2737
2738
2739
2740
2741
2742
2743
2744
2745
2746
2747
2748
2749
2750
2751
....
2784
2785
2786
2787
2788
2789
2790







2791
2792
2793
2794
2795
2796
2797
....
2802
2803
2804
2805
2806
2807
2808




















2809
2810
2811
2812
2813
2814
2815
....
2867
2868
2869
2870
2871
2872
2873

2874
2875
2876

2877
2878
2879
2880
2881
2882
2883
2884
.....
28267
28268
28269
28270
28271
28272
28273








28274
28275
28276
28277
28278
28279
28280
28281
28282
28283
28284
28285
28286
28287
28288
28289
28290
        <<- not morph(<1, ":(?:3p|R)") =>> select(\2, ":Ov")

    [ne|n’|me|m’|te|t’|se|s’]  [le|la|l’|les|leur|en|y|lui|nous|vous]
        <<- =>> select(\2, ":Ov")

    l’  *WORD
        <<- not value(<1, "|je|j’|il|on|elle|nous|vous|ils|elles|iel|iels|ne|n’|me|m’|te|t’|se|s’|") and (morph(\2, ":[NABWM]", "*") or value(\2, "|plus|moins|")) =>> select(\1, ":D")
        <<- __else__ and morph(\2, ":(?:[123][sp]|P|Y)", "*") =>> select(\1, ":Ov")

    l’ [un|une]
        <<- =>> define(\1, ">l/:HEL")

    l’ on
        <<- not value(<1, "|ne|n’|me|m’|te|t’|nous|vous|ils|elles|iels|") =>> define(\1, ">l/:HEL")

    le  *WORD
        <<- not value(<1, "|je|j’|il|on|elle|nous|vous|ils|elles|iel|iels|ne|n’|me|m’|te|t’|se|s’|") and (morph(\2, ":[NABWM]", "*") or value(\2, "|plus|moins|")) =>> select(\1, ":D")
        <<- __else__ and morph(\2, ":(?:[123][sp]|P|Y)", "*") =>> select(\1, ":Ov")




    la  *WORD
        <<- not value(<1, "|je|j’|il|on|elle|nous|vous|ils|elles|iel|iels|ne|n’|me|m’|te|t’|se|s’|") and (morph(\2, ":[NABWM]", "*") or value(\2, "|plus|moins|plupart|")) =>> select(\1, ":D")
        <<- __else__ and morph(\2, ":(?:[123][sp]|P|Y)", "*") =>> select(\1, ":Ov")
        <<- __else__ and not value(<1, "|le|ce|du|") =>> exclude(\1, ":N")

    les *WORD
        <<- not value(<1, "|je|j’|il|on|elle|nous|vous|ils|elles|iel|iels|ne|n’|me|m’|te|t’|se|s’|") and (morph(\2, ":[NABWM]", "*") or value(\2, "|plus|moins|")) =>> select(\1, ":D")
        <<- __else__ and morph(\2, ":(?:[123][sp]|P|Y)", "*") =>> select(\1, ":Ov")

    leur    *WORD
        <<- not value(<1, "|le|du|") =>> exclude(\1, ":N")
        <<- not value(<1, "|je|j’|il|on|elle|nous|vous|ils|elles|iel|iels|ne|n’|me|m’|te|t’|se|s’|") and (morph(\2, ":[NABWM]", "*") or value(\2, "|plus|moins|")) =>> select(\1, ":D")
        <<- __else__ and morph(\2, ":(?:[123][sp]|P|Y)", "*") =>> select(\1, ":Ov")

    leurs   *WORD
        <<- not value(<1, "|les|des|") =>> exclude(\1, ":N")

    en  [*NUM|*HOUR]
        <<- =>> select(\1, ":R")

    en  *WORD
        <<- value(<1, "|j’|n’|m’|t’|s’|l’|c’|") or morph(\2, ":(?:[123][sp]|P|Y)", "*") =>> select(\1, ":Ov")
        <<- __else__ and not morph(<1, ":O[sv]") and morph(\2, ":", ":[ISKYPE]") =>> select(\1, ":R")

    en la           @:[NA].*:[fe]:si
    en le           @:[NA].*:[me]:si
    en [l’|leur]    @:[NA].*:si
    en [un|une|de|d’|ce|cet|cette|mon|ton|son|ma|ta|sa|notre|votre]
    en [les|des|ces|mes|tes|ses|nos|vos|leurs]
................................................................................
    tu  ?[ne|n’]¿   ?[le|la|l’|les|en|me|m’|te|t’|se|s’|nous|vous|lui|leur|y]¿  @:¬:[OX]
    tu  ?[ne|n’]¿   [me|m’|te|t’|se|s’|nous|vous]   [le|la|l’|les|en|y]         @:¬:[OX]
    tu  ?[ne|n’]¿   [le|la|l’|les]                  [lui|leur|en|y]             @:¬:[OX]
    tu  ?[ne|n’]¿   [lui|leur|y]                    en                          @:¬:[OX]
        <<- not morph(<1, ":V0") =>> select(\-1, ":[ISKP]")

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

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

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

    nous @:[ISKYPE]¬:1p
        <<- =>> select(\1, ":Ov")
................................................................................
    nous ?[ne|n’]¿ [nous|vous]   [le|l’|en|y]         sommes
    nous ?[ne|n’]¿ [lui|leur]      en                 sommes
        <<- not morph(<1, ":R") =>> select(\-1, ":V0")

    [de|d’|par|pour|sans|contre] [elle|lui|nous|vous|eux|elles|celui-ci|celui-là|celle-ci|celle-là|ceux-ci|ceux-là|celles-ci|celles-là]
        <<- =>> select(\-1, ":Oo")


__da_été__
    >avoir ?@:[WX]¿ été
        <<- =>> select(\1, ":V0") and select(\-1, ":Q")

    ça a
        <<- =>> select(\2, ":V")

    après avoir $:Q
        <<- =>> exclude(\2, ":N")


__da_adverbes__
    environ  [$:B|*NUM]
        <<- not value(<1, "|l’|un|cet|quel|") =>> exclude(\1, ":N")

    grave
        <<- morph(<1, ":D") =>> exclude(\1, ":W")

    [lundi|mardi|mercredi|jeudi|vendredi|samedi|dimanche]
        <<- not morph(<1, ":[DA].*:[me]:[si]") =>> select(\1, ":W")





__da_autour__
    autour [de|du|d’|des]
        <<- not morph(<1, ":D.*:[me]") =>> exclude(\1, ":N")

__da_avant__
    avant [que|qu’|$:D]
................................................................................
__da_certains_certaines__
    certains  @:[NA].*:[me]:[pi]¬:(?:G|3[sp])
        <<- =>> exclude(\1, ":O")

    certaines  @:[NA].*:[fe]:[pi]¬:(?:G|3[sp])
        <<- =>> exclude(\1, ":O")

















__da_contre__
    contre [moi|toi|soi|lui|elle|iel|nous|vous|eux|elles|iels]
        <<- =>> select(\1, ":R")

    [la|les|des|une|cette|ma|ta|sa|notre|votre|leur+s] >lutte       ?$:A¬:G¿  contre
    [>accusation|>action|>assaut|>attentat|>croisade|>guerre]       ?$:A¬:G¿  contre
    [>guerre|>jihad|>offensive|>ratonnade|>sortilège|>violence]     ?$:A¬:G¿  contre
................................................................................
    dans
        <<- not morph(<1, ":D.*:p|>[a-zé-]+ième/") =>> select(\1, ":R")

__da_de__
    [de|d’] [me|m’|te|t’|se|s’|en|y|nous|vous|moi|toi|soi|lui|elle|iel|eux|elles|iels]
    [de|d’] @:[MYBD]|#P
    [de|d’] *NUM

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

    [de|d’] @:[NA]¬:[YMGB]
        <<- not \2[0:1].isupper() =>> select(\1, ":D")

__da_devant__
    devant [<end>|,|)]
................................................................................
__da_derrière__
    derrière [<end>|,|)]
        <<- not morph(<1, ":D.*:[me]:[si]") =>> select(\1, ":W")

    derrière $:D
        <<- morph(<1, ":V|<start>|>,", ":G") =>> select(\1, ":R")






__da_entre__
    entre  *WORD  et  *WORD
        <<- (morph(\2, ":[NA]") and morph(\4, ":[NA]"))
            or (morph(\2, ":Y") and morph(\4, ":Y"))
            or (morph(\2, ":M") and morph(\4, ":M")) =>> define(\1, ":R")

    entre  $:D¬:R  *WORD  et  $:D¬:R  *WORD
................................................................................
    entre autres
        <<- =>> define(\1, ":R")

    >différence entre
    >choisir entre
        <<- =>> select(\-1, ":R")












__da_face__
    face [à|au|aux]
        <<- not morph(<1, ":(?:D|A.*:[fe]:[si])") =>> exclude(\1, ":N")


__da_grâce__
    grâce [à|au|aux]
        <<- not morph(<1, ":(?:D|A.*:[fe]:[si])") =>> exclude(\1, ":N")





__da_mais__
    mais
        <<- not value(<1, "|les|ces|des|mes|tes|ses|nos|vos|leurs|quelques|") =>> exclude(\1, ":N")

    n’ en >pouvoir mais
        <<- =>> define(\-1, ">mais/:W")

__da_son_ton__
    [le|ce|cet|mon|ton|son|quel|quelque|notre|votre|un|leur|ledit|dudit|chaque|des|les|quelques|quel|quelle|quels|quelles]  [son|ton]
        <<- =>> exclude(\2, ":D")

    [son|ton] *WORD
        <<- morph(\2, ":G", ":[NA]") or value(<1, "|du|le|ce|un|quel|mon|") =>> exclude(\1, ":D")
        <<- __else__ and morph(\2, ":N", "*") =>> select(\1, ":D")

    [son|ton] ,
        <<- =>> select(\1, ":N")

__da_mal__
    pas mal
        <<- =>> select(\2, ":W")

    mal @:[AQ]
        <<- morph(<1, ":[NV]", ":D.*:[me]:[si]") =>> select(\1, ":W")

................................................................................
__da_même__
    même $:D
        <<- morph(<1, "<start>|>,|:[ISKYP]", "*") =>> select(\1, ":W")

    [le|la|l’|les|du|chaque|ces|des|mes|tes|ses|nos|vos|leurs|quelques|quels|quelles] même
        <<- =>> select(\2, ":A")








__da_outre__
    en outre
        <<- not value(<1, "|il|on|elle|iel|n’|l’|") =>> select(\1, ":R") and select(\2, ":N")

    [une|cette|quelle|mon|notre|votre] outre
        <<- =>> select(\2, ":N")

    outre $:D
        <<- morph(<1, ":V", ":[GA]") =>> select(\1, ":R")

__da_point__
    [le|l’|un|mon|notre|votre|leur|chaque|mes|tes|ses|nos|vos|leurs|quel|quels|quelle|quelles] point
        <<- =>> select(\2, ":N")

    [ne|n’]  $:V  point
    [ne|n’] point
................................................................................
    parmi *WORD
        <<- =>> select(\1, ":R")

__da_pas__
    pas
        <<- morph(<1, ":[VWX]") =>> exclude(\1, ":N")




__da_passé__
    passé  [<end>|,|$:R]
        <<- =>> exclude(\1, ":G")

__da_pendant__
    ## évènements
    pendant ?tout¿ [le|l’|ce|cet|mon|ton|son|notre|votre|leur] ?[interminable|long]¿
        || [accouchement|acte|âge|colloque|conflit|cours|couronnement|déjeuner|dîner|diner|entracte|entrainement|entraînement|entretien|examen|événement|évènement|interrègne|jihad|mandat|mariage|match|passage|procès|repas|règne|sommeil|souper|temps|travail|voyage]
    pendant ?toute¿ [la|l’|cette|ma|ta|sa|mon|ton|son|notre|votre|leur] ?[interminable|longue]¿
        || [adolescence|cérémonie|compétition|crise|croisade|dictature|durée|enfance|étude|existence|guerre|interview|intronisation|messe|pause|période|prière|querelle|rencontre|récréation|régence|retraite|réunion|révolution|séance|thérapie|traversée|tyrannie|union|vacance|vie]
    ## évènements
    pendant ?tous¿ [les|ces|mes|tes|ses|nos|vos|leurs] ?[innombrables|interminables|nombreusx]¿
        || [accouchements|actes|âges|colloques|conflits|cours|couronnements|déjeuners|dîners|diners|entractes|entrainementt|entraînements|entretiens|examens|événements|évènements|interrègnes|jihads|mandats|mariages|matchs|passages|procès|repas|règnes|sommeils|soupers|temps|travaux|voyages]
    pendant ?toutes¿ [les|ces|mes|tes|ses|nos|vos|leurs] ?[innombrables|interminables|nombreuses]¿
        || [adolescences|cérémonies|compétitions|crises|croisades|dictatures|durées|enfances|études|existences|guerres|interviews|intronisations|messes|pauses|périodes|prières|querelles|rencontres|récréations|régences|retraites|réunions|révolutions|séances|thérapies|traversées|tyrannies|unions|vacances|vies]
    ## durée
    pendant ?tout¿ [le|l’|ce|cet|mon|ton|son|notre|votre|leur] [matin|soir|an|mois|trimestre|semestre|an|siècle|millénaire|éon]
    pendant ?toute¿ [la|l’|cette|ma|ta|sa|mon|ton|son|notre|votre|leur] [nanoseconde|microseconde|milliseconde|seconde|minute|heure|matinée|journée|nuit|semaine|année|décennie|éternité]
    ## durées
    pendant ?tous¿ [les|ces|mes|tes|ses|nos|vos|leurs|$:B] ?[innombrables|interminables|nombreux]¿
        || [moments|instants|matins|soirs|mois|trimestres|semestres|ans|siècles|millénaires|éons]
    pendant ?toutes¿ [les|ces|mes|tes|ses|nos|vos|leurs|$:B] ?[innombrables|interminables|nombreuses]¿
................................................................................
    pourvu
        <<- not value(>1, "|que|qu’|") =>> exclude(\1, ":G")

__da_puis__
    puis
        <<- not value(<1, "|je|ne|n’|le|l’|leur|") =>> exclude(\1, ":V")








__da_SA__
    SA
        <<- morph(<1, ":D") =>> exclude(\1, ":D")

__da_selon__
    selon @:(?:[DBM]|Oo)
        <<- =>> select(\1, ":R")
................................................................................
__da_si__
    si @:[ODB]
    s’ [il|ils]
        <<- =>> select(\1, ":C")

    si bien [que|qu’]
        <<- =>> select(\1, ":W") and select(\2, ":W")





















__da_sous_sur__
    sous @:[BD]
        <<- not morph(<1, ":[DA].*:[me]:[pi]") =>> select(\1, ":R")

    sur @:[BD]
        <<- not morph(<1, ":(?:V[0123]e|[DN].*:[me]:[si])") =>> select(\1, ":R")
................................................................................
    toutes  les                                                                 @:3s¬:(?:G|[NA].*:[fe]:[pi])
    toutes  ?[ne|n’]¿   [me|m’|te|t’|se|s’|nous|vous]   [le|la|l’|les|en|y]     @:3p¬:G
    toutes  ?[ne|n’]¿   [le|la|l’|les]                  [lui|leur|en|y]         @:3p¬:G
    toutes  ?[ne|n’]¿   [lui|leur|y]                    en                      @:3p¬:G
        <<- not morph(<1, ":R") =>> select(\1, ":O")

__da_un_une__

    un  @:[NA].*:[me]
        <<- not value(<1, "|le|de|ce|quel|") =>> select(\1, ":D")


    une @:[NA].*:[fe]
        <<- not value(<1, "|la|de|cette|quelle|une|ma|ta|sa|notre|votre|leur|") =>> select(\1, ":D")

__da_vers__
    vers $:D
        <<- morph(<1, ":V") =>> select(\1, ":R")

__da_vis_à_vis__
................................................................................
TEST: s’efforceront-iels de sembler {{instruit}} des faits                          ->> instruits
TEST: iels sont légion.
TEST: iels ne paraissent pas avoir été légion, mais l’effet eut autant de force que si iels avaient été des millions.
TEST: iels sont devenus faibles.


__ppas_avoir_été__








    >avoir  été  *WORD
        <<- /ppas/ morph(\3, ":[123]s", ":[GNAQWY]") -3>> =suggVerbPpas(\3)         && Après “avoir été”, il faut un participe passé.
        <<- /ppas/ not before("[çcCÇ]’$|[cC][eE] n’$|[çÇ][aA] (?:[nN]’|)$") and not before("(?i)^ *ne pas ") and not morph(<1, ":Y") >>>
        <<- /ppas/ morph(\3, ":Y", ":[AN]") -1:2>> _                                && Tournure familière. Écrivez “être allé” plutôt que “avoir été”.
        <<- /ppas/ morph(\3, ":V1..t.*:Y", ":[AN]") and not morph(>1, ":D")
        -3>> =suggVerbPpas(\3)                                                      && Incohérence. Après “avoir été”, il faut un participe passé (à moins que “avoir été” signifie ici “être allé”).

    >avoir étés
        <<- not (value(>1, "|et|ou|") and value(>2, "|hivers|automnes|printemps|"))
        --1>> été                                                                   && Le participe passé du verbe “être” est invariable.

TEST: j’ai été {{instruis}} par elle
TEST: avoir été {{prit}} par surprise
TEST: Ils {{ont été}} {{réaliser}} à partir d’éléments naturels.
TEST: J’{{ai été}} camper dans les Alpes.
TEST: Tu {{as été}} prendre du bois.
TEST: J’{{ai été}} chercher du pain.







|









|
>
>
>



|




|




|








|







 







|



|







 







<
<
<
<
<
<
<
<




|
<
<
<
<
<
<



>
>
>







 







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







 







>







 







>
>
>
>
>







 







>
>
>
>
>
>
>
>
>
>
>



>





>
>
>
>







<
<
<
<
<
<
<
<
<
<
<







 







>
>
>
>
>
>
>








|







 







>
>
>







|

|


|

|







 







>
>
>
>
>
>
>







 







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







 







>



>
|







 







>
>
>
>
>
>
>
>

|

|

|



|







2346
2347
2348
2349
2350
2351
2352
2353
2354
2355
2356
2357
2358
2359
2360
2361
2362
2363
2364
2365
2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
2381
2382
2383
2384
2385
2386
2387
2388
2389
2390
2391
2392
2393
2394
2395
2396
....
2468
2469
2470
2471
2472
2473
2474
2475
2476
2477
2478
2479
2480
2481
2482
2483
2484
2485
2486
....
2516
2517
2518
2519
2520
2521
2522








2523
2524
2525
2526
2527






2528
2529
2530
2531
2532
2533
2534
2535
2536
2537
2538
2539
2540
....
2580
2581
2582
2583
2584
2585
2586
2587
2588
2589
2590
2591
2592
2593
2594
2595
2596
2597
2598
2599
2600
2601
2602
2603
2604
2605
2606
2607
2608
2609
....
2617
2618
2619
2620
2621
2622
2623
2624
2625
2626
2627
2628
2629
2630
2631
....
2640
2641
2642
2643
2644
2645
2646
2647
2648
2649
2650
2651
2652
2653
2654
2655
2656
2657
2658
....
2667
2668
2669
2670
2671
2672
2673
2674
2675
2676
2677
2678
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
2689
2690
2691
2692
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
2703
2704











2705
2706
2707
2708
2709
2710
2711
....
2712
2713
2714
2715
2716
2717
2718
2719
2720
2721
2722
2723
2724
2725
2726
2727
2728
2729
2730
2731
2732
2733
2734
2735
2736
2737
2738
2739
2740
2741
....
2749
2750
2751
2752
2753
2754
2755
2756
2757
2758
2759
2760
2761
2762
2763
2764
2765
2766
2767
2768
2769
2770
2771
2772
2773
2774
2775
2776
2777
2778
2779
2780
....
2813
2814
2815
2816
2817
2818
2819
2820
2821
2822
2823
2824
2825
2826
2827
2828
2829
2830
2831
2832
2833
....
2838
2839
2840
2841
2842
2843
2844
2845
2846
2847
2848
2849
2850
2851
2852
2853
2854
2855
2856
2857
2858
2859
2860
2861
2862
2863
2864
2865
2866
2867
2868
2869
2870
2871
....
2923
2924
2925
2926
2927
2928
2929
2930
2931
2932
2933
2934
2935
2936
2937
2938
2939
2940
2941
2942
.....
28325
28326
28327
28328
28329
28330
28331
28332
28333
28334
28335
28336
28337
28338
28339
28340
28341
28342
28343
28344
28345
28346
28347
28348
28349
28350
28351
28352
28353
28354
28355
28356
        <<- not morph(<1, ":(?:3p|R)") =>> select(\2, ":Ov")

    [ne|n’|me|m’|te|t’|se|s’]  [le|la|l’|les|leur|en|y|lui|nous|vous]
        <<- =>> select(\2, ":Ov")

    l’  *WORD
        <<- not value(<1, "|je|j’|il|on|elle|nous|vous|ils|elles|iel|iels|ne|n’|me|m’|te|t’|se|s’|") and (morph(\2, ":[NABWM]", "*") or value(\2, "|plus|moins|")) =>> select(\1, ":D")
        <<- __else__ and morph(\2, ":[ISKYPE]", "*") =>> select(\1, ":Ov")

    l’ [un|une]
        <<- =>> define(\1, ">l/:HEL")

    l’ on
        <<- not value(<1, "|ne|n’|me|m’|te|t’|nous|vous|ils|elles|iels|") =>> define(\1, ">l/:HEL")

    le  *WORD
        <<- not value(<1, "|je|j’|il|on|elle|nous|vous|ils|elles|iel|iels|ne|n’|me|m’|te|t’|se|s’|") and (morph(\2, ":[NABWM]", "*") or value(\2, "|plus|moins|")) =>> select(\1, ":D")
        <<- __else__ and morph(\2, ":[ISKYPE]", "*") =>> select(\1, ":Ov")

    le [*NUM|*WORDORD]
        <<- =>> select(\1, ":D")

    la  *WORD
        <<- not value(<1, "|je|j’|il|on|elle|nous|vous|ils|elles|iel|iels|ne|n’|me|m’|te|t’|se|s’|") and (morph(\2, ":[NABWM]", "*") or value(\2, "|plus|moins|plupart|")) =>> select(\1, ":D")
        <<- __else__ and morph(\2, ":[ISKYPE]", "*") =>> select(\1, ":Ov")
        <<- __else__ and not value(<1, "|le|ce|du|") =>> exclude(\1, ":N")

    les *WORD
        <<- not value(<1, "|je|j’|il|on|elle|nous|vous|ils|elles|iel|iels|ne|n’|me|m’|te|t’|se|s’|") and (morph(\2, ":[NABWM]", "*") or value(\2, "|plus|moins|")) =>> select(\1, ":D")
        <<- __else__ and morph(\2, ":[ISKYPE]", "*") =>> select(\1, ":Ov")

    leur    *WORD
        <<- not value(<1, "|le|du|") =>> exclude(\1, ":N")
        <<- not value(<1, "|je|j’|il|on|elle|nous|vous|ils|elles|iel|iels|ne|n’|me|m’|te|t’|se|s’|") and (morph(\2, ":[NABWM]", "*") or value(\2, "|plus|moins|")) =>> select(\1, ":D")
        <<- __else__ and morph(\2, ":[ISKYPE]", "*") =>> select(\1, ":Ov")

    leurs   *WORD
        <<- not value(<1, "|les|des|") =>> exclude(\1, ":N")

    en  [*NUM|*HOUR]
        <<- =>> select(\1, ":R")

    en  *WORD
        <<- value(<1, "|j’|n’|m’|t’|s’|l’|c’|") or morph(\2, ":[ISKYPE]", "*") =>> select(\1, ":Ov")
        <<- __else__ and not morph(<1, ":O[sv]") and morph(\2, ":", ":[ISKYPE]") =>> select(\1, ":R")

    en la           @:[NA].*:[fe]:si
    en le           @:[NA].*:[me]:si
    en [l’|leur]    @:[NA].*:si
    en [un|une|de|d’|ce|cet|cette|mon|ton|son|ma|ta|sa|notre|votre]
    en [les|des|ces|mes|tes|ses|nos|vos|leurs]
................................................................................
    tu  ?[ne|n’]¿   ?[le|la|l’|les|en|me|m’|te|t’|se|s’|nous|vous|lui|leur|y]¿  @:¬:[OX]
    tu  ?[ne|n’]¿   [me|m’|te|t’|se|s’|nous|vous]   [le|la|l’|les|en|y]         @:¬:[OX]
    tu  ?[ne|n’]¿   [le|la|l’|les]                  [lui|leur|en|y]             @:¬:[OX]
    tu  ?[ne|n’]¿   [lui|leur|y]                    en                          @:¬:[OX]
        <<- not morph(<1, ":V0") =>> select(\-1, ":[ISKP]")

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

    [nous|vous]     [le|la|l’|les|en]  @:¬:[OXW]
    lui             en                 @:¬:[OXW]
        <<- not morph(<1, ":R") =>> select(\3, ":[ISKYPE]")

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

    nous @:[ISKYPE]¬:1p
        <<- =>> select(\1, ":Ov")
................................................................................
    nous ?[ne|n’]¿ [nous|vous]   [le|l’|en|y]         sommes
    nous ?[ne|n’]¿ [lui|leur]      en                 sommes
        <<- not morph(<1, ":R") =>> select(\-1, ":V0")

    [de|d’|par|pour|sans|contre] [elle|lui|nous|vous|eux|elles|celui-ci|celui-là|celle-ci|celle-là|ceux-ci|ceux-là|celles-ci|celles-là]
        <<- =>> select(\-1, ":Oo")









    après avoir $:Q
        <<- =>> exclude(\2, ":N")


__da_jours__






    [lundi|mardi|mercredi|jeudi|vendredi|samedi|dimanche]
        <<- not morph(<1, ":[DA].*:[me]:[si]") =>> select(\1, ":W")

__da_a__
    [ça|ceci|cela] a
        <<- =>> select(\2, ":V")

__da_autour__
    autour [de|du|d’|des]
        <<- not morph(<1, ":D.*:[me]") =>> exclude(\1, ":N")

__da_avant__
    avant [que|qu’|$:D]
................................................................................
__da_certains_certaines__
    certains  @:[NA].*:[me]:[pi]¬:(?:G|3[sp])
        <<- =>> exclude(\1, ":O")

    certaines  @:[NA].*:[fe]:[pi]¬:(?:G|3[sp])
        <<- =>> exclude(\1, ":O")

    certains [ne|n’|me|m’|te|t’|se|s’]               @:3p
    certains [le|la|l’|les|en|nous|vous|lui|leur|y]  @:3p
    certains [nous|vous]     [le|la|l’|les|en|y]     @:3p
    certains [le|la|l’|les]  [lui|leur|en|y]         @:3p
    certains [lui|leur|y]    en                      @:3p
    certains @:3p¬:(?:G|[NA].*:[me]:[pi]|V.e)
        <<- not morph(<1, ":[NAD].*:[me]:[pi]") =>> select(\1, ":O")

    certaines [ne|n’|me|m’|te|t’|se|s’]               @:3p
    certaines [le|la|l’|les|en|nous|vous|lui|leur|y]  @:3p
    certaines [nous|vous]     [le|la|l’|les|en|y]     @:3p
    certaines [le|la|l’|les]  [lui|leur|en|y]         @:3p
    certaines [lui|leur|y]    en                      @:3p
    certaines @:3p¬:(?:G|[NA].*:[fe]:[pi]|V.e)
        <<- not morph(<1, ":[NAD].*:[fe]:[pi]") =>> select(\1, ":O")

__da_contre__
    contre [moi|toi|soi|lui|elle|iel|nous|vous|eux|elles|iels]
        <<- =>> select(\1, ":R")

    [la|les|des|une|cette|ma|ta|sa|notre|votre|leur+s] >lutte       ?$:A¬:G¿  contre
    [>accusation|>action|>assaut|>attentat|>croisade|>guerre]       ?$:A¬:G¿  contre
    [>guerre|>jihad|>offensive|>ratonnade|>sortilège|>violence]     ?$:A¬:G¿  contre
................................................................................
    dans
        <<- not morph(<1, ":D.*:p|>[a-zé-]+ième/") =>> select(\1, ":R")

__da_de__
    [de|d’] [me|m’|te|t’|se|s’|en|y|nous|vous|moi|toi|soi|lui|elle|iel|eux|elles|iels]
    [de|d’] @:[MYBD]|#P
    [de|d’] *NUM
    [de|d’] entre
        <<- =>> select(\1, ":R")

    [de|d’] @:[NA]¬:[YMGB]
        <<- not \2[0:1].isupper() =>> select(\1, ":D")

__da_devant__
    devant [<end>|,|)]
................................................................................
__da_derrière__
    derrière [<end>|,|)]
        <<- not morph(<1, ":D.*:[me]:[si]") =>> select(\1, ":W")

    derrière $:D
        <<- morph(<1, ":V|<start>|>,", ":G") =>> select(\1, ":R")

__da_ensemble__
    ensemble
        <<- morph(<1, ":V") =>> select(\1, ":W")
        <<- __else__ and morph(<1, ":D", ">la/") =>> select(\1, ":N")

__da_entre__
    entre  *WORD  et  *WORD
        <<- (morph(\2, ":[NA]") and morph(\4, ":[NA]"))
            or (morph(\2, ":Y") and morph(\4, ":Y"))
            or (morph(\2, ":M") and morph(\4, ":M")) =>> define(\1, ":R")

    entre  $:D¬:R  *WORD  et  $:D¬:R  *WORD
................................................................................
    entre autres
        <<- =>> define(\1, ":R")

    >différence entre
    >choisir entre
        <<- =>> select(\-1, ":R")

__da_environ__
    environ  [$:B|*NUM]
        <<- not value(<1, "|l’|un|cet|quel|") =>> exclude(\1, ":N")

__da_été__
    >avoir ?@:[WX]¿ été
        <<- =>> select(\1, ":V0") and select(\-1, ":Q")

    [un|l’|quel|cet|mon|ton|son|notre|votre|leur] été
        <<- =>> select(\-1, ":N")

__da_face__
    face [à|au|aux]
        <<- not morph(<1, ":(?:D|A.*:[fe]:[si])") =>> exclude(\1, ":N")
        <<- __else__ =>> select(\1, ":N")

__da_grâce__
    grâce [à|au|aux]
        <<- not morph(<1, ":(?:D|A.*:[fe]:[si])") =>> exclude(\1, ":N")

__da_grave__
    grave
        <<- morph(<1, ":D") =>> exclude(\1, ":W")

__da_mais__
    mais
        <<- not value(<1, "|les|ces|des|mes|tes|ses|nos|vos|leurs|quelques|") =>> exclude(\1, ":N")

    n’ en >pouvoir mais
        <<- =>> define(\-1, ">mais/:W")












__da_mal__
    pas mal
        <<- =>> select(\2, ":W")

    mal @:[AQ]
        <<- morph(<1, ":[NV]", ":D.*:[me]:[si]") =>> select(\1, ":W")

................................................................................
__da_même__
    même $:D
        <<- morph(<1, "<start>|>,|:[ISKYP]", "*") =>> select(\1, ":W")

    [le|la|l’|les|du|chaque|ces|des|mes|tes|ses|nos|vos|leurs|quelques|quels|quelles] même
        <<- =>> select(\2, ":A")

__da_or__
    <start> or ?,¿ @:(?:Os|D)
        <<- =>> select(\2, ":G")

    [un|l’|d’|quel|cet|mon|ton|son|notre|votre|leur] or
        <<- =>> select(\-1, ":N")

__da_outre__
    en outre
        <<- not value(<1, "|il|on|elle|iel|n’|l’|") =>> select(\1, ":R") and select(\2, ":N")

    [une|cette|quelle|mon|notre|votre] outre
        <<- =>> select(\2, ":N")

    outre $:D
        <<- morph(<1, ":V|<start>", ":[GA]") =>> select(\1, ":R")

__da_point__
    [le|l’|un|mon|notre|votre|leur|chaque|mes|tes|ses|nos|vos|leurs|quel|quels|quelle|quelles] point
        <<- =>> select(\2, ":N")

    [ne|n’]  $:V  point
    [ne|n’] point
................................................................................
    parmi *WORD
        <<- =>> select(\1, ":R")

__da_pas__
    pas
        <<- morph(<1, ":[VWX]") =>> exclude(\1, ":N")

    pourquoi pas
        <<- =>> select(\2, ":X")

__da_passé__
    passé  [<end>|,|$:R]
        <<- =>> exclude(\1, ":G")

__da_pendant__
    ## évènements
    pendant ?tout¿ [le|l’|ce|cet|mon|ton|son|notre|votre|leur] ?[interminable|long]¿
        || [accouchement|acte|âge|colloque|confinement|conflit|cours|couronnement|déjeuner|dîner|diner|entracte|entrainement|entraînement|entretien|examen|événement|évènement|interrègne|jihad|mandat|mariage|match|passage|procès|repas|règne|sommeil|souper|temps|travail|voyage]
    pendant ?toute¿ [la|l’|cette|ma|ta|sa|mon|ton|son|notre|votre|leur] ?[interminable|longue]¿
        || [adolescence|cérémonie|compétition|crise|croisade|dictature|durée|enfance|étude|existence|guerre|interview|intronisation|messe|partie|pause|période|prière|querelle|rencontre|récréation|régence|retraite|réunion|révolution|séance|thérapie|traversée|tyrannie|union|vacance|vie]
    ## évènements
    pendant ?tous¿ [les|ces|mes|tes|ses|nos|vos|leurs] ?[innombrables|interminables|nombreusx]¿
        || [accouchements|actes|âges|colloques|confinements|conflits|cours|couronnements|déjeuners|dîners|diners|entractes|entrainementt|entraînements|entretiens|examens|événements|évènements|interrègnes|jihads|mandats|mariages|matchs|passages|procès|repas|règnes|sommeils|soupers|temps|travaux|voyages]
    pendant ?toutes¿ [les|ces|mes|tes|ses|nos|vos|leurs] ?[innombrables|interminables|nombreuses]¿
        || [adolescences|cérémonies|compétitions|crises|croisades|dictatures|durées|enfances|études|existences|guerres|interviews|intronisations|messes|parties|pauses|périodes|prières|querelles|rencontres|récréations|régences|retraites|réunions|révolutions|séances|thérapies|traversées|tyrannies|unions|vacances|vies]
    ## durée
    pendant ?tout¿ [le|l’|ce|cet|mon|ton|son|notre|votre|leur] [matin|soir|an|mois|trimestre|semestre|an|siècle|millénaire|éon]
    pendant ?toute¿ [la|l’|cette|ma|ta|sa|mon|ton|son|notre|votre|leur] [nanoseconde|microseconde|milliseconde|seconde|minute|heure|matinée|journée|nuit|semaine|année|décennie|éternité]
    ## durées
    pendant ?tous¿ [les|ces|mes|tes|ses|nos|vos|leurs|$:B] ?[innombrables|interminables|nombreux]¿
        || [moments|instants|matins|soirs|mois|trimestres|semestres|ans|siècles|millénaires|éons]
    pendant ?toutes¿ [les|ces|mes|tes|ses|nos|vos|leurs|$:B] ?[innombrables|interminables|nombreuses]¿
................................................................................
    pourvu
        <<- not value(>1, "|que|qu’|") =>> exclude(\1, ":G")

__da_puis__
    puis
        <<- not value(<1, "|je|ne|n’|le|l’|leur|") =>> exclude(\1, ":V")

__da_quelque__
    quelque *NUM
        <<- =>> select(\1, ":W")

    quelque [autre|chose|temps|part]
        <<- =>> select(\1, ":D")

__da_SA__
    SA
        <<- morph(<1, ":D") =>> exclude(\1, ":D")

__da_selon__
    selon @:(?:[DBM]|Oo)
        <<- =>> select(\1, ":R")
................................................................................
__da_si__
    si @:[ODB]
    s’ [il|ils]
        <<- =>> select(\1, ":C")

    si bien [que|qu’]
        <<- =>> select(\1, ":W") and select(\2, ":W")

    si @:[AW]¬:G
        <<- morph(<1, ":N", ":D") =>> select(\1, ":W")

__da_son_ton__
    [le|ce|cet|mon|ton|son|quel|quelque|notre|votre|un|leur|ledit|dudit|chaque|des|les|quelques|quel|quelle|quels|quelles]  [son|ton]
        <<- =>> exclude(\2, ":D")

    [son|ton] *WORD
        <<- morph(\2, ":G", ":[NA]") or value(<1, "|du|le|ce|un|quel|mon|") =>> exclude(\1, ":D")
        <<- __else__ and morph(\2, ":N", "*") =>> select(\1, ":D")

    [son|ton] ,
        <<- =>> select(\1, ":N")

__da_sans__
    sans [que|qu’]
        <<- =>> select(\1, ":C")



__da_sous_sur__
    sous @:[BD]
        <<- not morph(<1, ":[DA].*:[me]:[pi]") =>> select(\1, ":R")

    sur @:[BD]
        <<- not morph(<1, ":(?:V[0123]e|[DN].*:[me]:[si])") =>> select(\1, ":R")
................................................................................
    toutes  les                                                                 @:3s¬:(?:G|[NA].*:[fe]:[pi])
    toutes  ?[ne|n’]¿   [me|m’|te|t’|se|s’|nous|vous]   [le|la|l’|les|en|y]     @:3p¬:G
    toutes  ?[ne|n’]¿   [le|la|l’|les]                  [lui|leur|en|y]         @:3p¬:G
    toutes  ?[ne|n’]¿   [lui|leur|y]                    en                      @:3p¬:G
        <<- not morph(<1, ":R") =>> select(\1, ":O")

__da_un_une__
    un  [de|d’|des]
    un  @:[NA].*:[me]
        <<- not value(<1, "|le|de|ce|quel|") =>> select(\1, ":D")

    une  des  @:(?:W|[NA].*:[fe]:[pi])
    une  @:[NA].*:[fe]
        <<- not value(<1, "|la|de|cette|quelle|une|ma|ta|sa|notre|votre|leur|") =>> select(\1, ":D")

__da_vers__
    vers $:D
        <<- morph(<1, ":V") =>> select(\1, ":R")

__da_vis_à_vis__
................................................................................
TEST: s’efforceront-iels de sembler {{instruit}} des faits                          ->> instruits
TEST: iels sont légion.
TEST: iels ne paraissent pas avoir été légion, mais l’effet eut autant de force que si iels avaient été des millions.
TEST: iels sont devenus faibles.


__ppas_avoir_été__
    l’  homme   [que|qu’] [je|tu|il|iel]              >avoir   été $:3s
    la  femme   [que|qu’] [je|tu|elle|iel]            >avoir   été $:3s
    l’  enfant  [que|qu’] [je|tu|il|elle|iel]         >avoir   été $:3s
    les hommes  [que|qu’] [nous|vous|ils|iels]        >avoir   été $:3p
    les femmes  [que|qu’] [nous|vous|elles|iels]      >avoir   été $:3p
    les enfants [que|qu’] [nous|vous|ils|elles|iels]  >avoir   été $:3p
        <<- !-1>> ppas

    >avoir  été  *WORD
        <<- /ppas/ morph(\3, ":[123]s", ":[GNAQWY]") -3>> =suggVerbPpas(\3)                     && Après “avoir été”, il faut un participe passé.
        <<- /ppas/ not before("[çcCÇ]’$|[cC][eE] n’$|[çÇ][aA] (?:[nN]’|)$") and not before("(?i)^ *ne pas ") and not morph(<1, ":Y") >>>
        <<- /ppas/ morph(\3, ":Y", ":[AN]") -1:2>> _                                            && Tournure familière. Écrivez “être allé” plutôt que “avoir été”.
        <<- /ppas/ morph(\3, ":V1..t.*:Y", ":[AN]") and not morph(>1, ":D")
        -3>> =suggVerbPpas(\3)                                                                  && Incohérence. Après “avoir été”, il faut un participe passé (à moins que “avoir été” signifie ici “être allé”).

    >avoir étés
        <<- not (value(>1, "|et|ou|") and value(>2, "|hivers|automnes|printemps|"))
        --1>> été                                                                               && Le participe passé du verbe “être” est invariable.

TEST: j’ai été {{instruis}} par elle
TEST: avoir été {{prit}} par surprise
TEST: Ils {{ont été}} {{réaliser}} à partir d’éléments naturels.
TEST: J’{{ai été}} camper dans les Alpes.
TEST: Tu {{as été}} prendre du bois.
TEST: J’{{ai été}} chercher du pain.