Grammalecte  Check-in [babfb0cacb]

Overview
Comment:[fr] faux positifs
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk | fr
Files: files | file ages | folders
SHA3-256: babfb0cacb24920bf336ba4e56161f4979fab8a0770f92b3b10c1fc99b21ab62
User & Date: olr on 2021-02-21 10:51:32
Other Links: manifest | tags
Context
2021-02-22
07:43
[build][server][cli] better Python version test check-in: 9fcb8afcbe user: olr tags: build, cli, server, trunk
2021-02-21
10:51
[fr] faux positifs check-in: babfb0cacb user: olr tags: fr, trunk
2021-02-20
16:14
[fr] faux positifs check-in: dba901b78f user: olr tags: fr, trunk
Changes

Modified gc_lang/fr/rules.grx from [08eadcc4b8] to [68fcd60fe8].

2855
2856
2857
2858
2859
2860
2861



2862
2863
2864
2865
2866
2867
2868
....
4869
4870
4871
4872
4873
4874
4875
4876
4877
4878
4879
4880
4881
4882
4883
4884
....
6633
6634
6635
6636
6637
6638
6639
6640
6641
6642
6643
6644
6645
6646
6647
.....
18042
18043
18044
18045
18046
18047
18048
18049
18050
18051
18052
18053
18054
18055
18056
18057
18058
18059
.....
20486
20487
20488
20489
20490
20491
20492






20493
20494
20495
20496
20497
20498
20499
.....
25138
25139
25140
25141
25142
25143
25144



25145
25146

25147
25148
25149
25150
25151

25152
25153
25154
25155
25156
25157
25158
.....
26862
26863
26864
26865
26866
26867
26868
26869
26870
26871
26872
26873
26874
26875
26876
.....
26879
26880
26881
26882
26883
26884
26885

26886
26887
26888
26889
26890
26891
26892
.....
27048
27049
27050
27051
27052
27053
27054
27055
27056
27057
27058
27059
27060
27061
27062
.....
31775
31776
31777
31778
31779
31780
31781

31782
31783
31784
31785
31786
31787
31788
.....
31830
31831
31832
31833
31834
31835
31836


31837
31838
31839
31840
31841
31842
31843
    [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]") =>> select(\1, "", ":N")

__da_avant__
    avant [que|qu’|$:D]
        <<- not value(<1, "|l’|quel|cet|un|mon|ton|son|notre|votre|leur|") =>> select(\1, ":R")
................................................................................
@@@@
@@@@GRAPH: graphe2|g2                                                                              _
@@@@
@@@@
@@@@
@@@@

!!!! Doublons (casse identique)                                                                   !!


# SLOWER THAN REGEX RULE
#__doublon__
#    *WORD  *WORD
#    <<- \1 == \2
#        and not value(\2, "|nous|vous|faire|en|la|lui|donnant|œuvre|ah|oh|eh|hé|ho|ha|hou|olé|joli|Bora|couvent|dément|sapiens|très|vroum|")
#        and not (value(\1, "|est|une|") and value(<1, "|l’|d’|"))
................................................................................



!!!! A / À: accentuation la préposition en début de phrase                                        !!

__typo_À_début_phrase!7__
    <start>  A  @:[GNAY]¬:(?:Q|3s)
        <<- /typo/ not value(\3, "|t’|priori|posteriori|postériori|contrario|capella|fortiori|giorno|")
        -2>> À                                                                                      && S’il s’agit de la préposition « à », il faut accentuer la majuscule.

    <start>  A  bientôt  [<end>|,|)]
        <<- /typo/ -2>> À                                                                           && S’il s’agit de la préposition « à », il faut accentuer la majuscule.

    <start>  A  t’  *WORD
        <<- /typo/ not value(\4, "|il|ils|elle|elles|iel|iels|on|ont|") -2>> À                      && S’il s’agit de la préposition « à », il faut accentuer la majuscule.
................................................................................
    ,  je      [t’|vous]   en  [prie|supplie]  ,
    ,  nous    [t’|vous]   en  [prions|supplions]  ,
        <<- not morph(>1, ":E") ~>> *


# Déterminant + nombre
__p_dét_plur_nombre_nom__
    [les|des|mes|tes|ses|nos|vos|leurs]  ~^\d+$  @:[NA].*:[pi]¬:(?:V0|3p|Oo|X)|>(?:janvier|février|mars|avril|mai|juin|juillet|ao[ûu]t|septembre|octobre|novembre|décembre|vendémiaire|brumaire|frimaire|nivôse|pluviôse|ventôse|germinal|floréal|prairial|messidor|thermidor|fructidor)
        <<- ~2>> *

    [les|des|mes|tes|ses|nos|vos|leurs]  ~^\d+$  ou  ~^\d+$  @:[NA].*:[pi]¬:(?:V0|3p|Oo|X)|>(?:janvier|février|mars|avril|mai|juin|juillet|ao[ûu]t|septembre|octobre|novembre|décembre|vendémiaire|brumaire|frimaire|nivôse|pluviôse|ventôse|germinal|floréal|prairial|messidor|thermidor|fructidor)
        <<- ~2:4>> *

    [les|des]   >numéro  [un|*NUM|$:B]  et  [*NUM|$:B]
        <<- ~3:0>> *

    la  >numéro  un
    la  >numéro  $:B
................................................................................
__da_participe_passé__
    >avoir  $:Q
        <<- not value(\1, "|avoir|avoirs|") and not morph(<1, ":D") =>> rewrite(\2, ":A", "")

    >être   $:Q
        <<- not value(\1, "|être|êtres|") and not morph(<1, ":D") =>> rewrite(\2, ":A", "")








__purge_rien__
    rien  $:Q  [d’|de]
        <<- /2>> _rien_

    rien
        <<- morph(<1, ":V") and not value(>1, "|qui|de|d’|ne|n’|") ~>> *
................................................................................
TEST: les agrandissements photo
TEST: Il faut donc examiner ensemble les panneaux et les parois latéraux.
TEST: Il faut donc examiner ensemble les panneaux et les parois latérales.
TEST: l’homme les a volés


__gn_les_2m_virg__



    <start>  les  *WORD  ,  @:A¬:[GP]
        <<- /gn/ morph(\3, ":[NA].*:[pi]", ":3[sp]") and not agreement(\3, \5)

        --1>> =suggAgree(\-1, \3)                                                           && Cet adjectif n’est pas accordé avec “\2 \3”.

TEST: les femmes, {{blessé}} par deux fois                                      ->> blessées
TEST: les hommes, {{blessée}} par deux fois                                     ->> blessés
TEST: les femmes, demeurant rue de la paix



__gn_leurs_1m__
    leurs  *WORD
        <<- /gn/ morph(\2, ":[NA].*:s", ":(?:[ipGW]|[123][sp])") and not (value(>1, "|et|ou|") and morph(>2, ":[NA]"))
        -2>> =suggPlur(\2)                                                                  && Accord de nombre erroné avec « \1 » : « \2 » devrait être au pluriel.
        <<- /gn/ __also__ -1>> leur                                                         && Accord de nombre erroné avec « \2 ».
................................................................................
TEST: ajoute plein de sel sur ses pâtes
TEST: avoir plein d’argent ne suffit pas toujours à tout résoudre


__gn_groupe_de__
    [un|une|le|la|ce|cette|mon|ton|son|ma|ta|sa|les|ces|des|mes|tes|ses|nos|vos|leurs|quelques|plusieurs]
        || [>dizaine|>douzaine||>vingtaine|>trentaine|>quarantaine|>cinquantaine|>soixantaine|>centaine|>millier|>million|>milliard|>multitude|>horde]  [de|d’]  *WORD
        <<- /gn/ morph(\4, ":[NA].*:s", ":[ip]|>(?:fraude|large|long|profondeur|hauteur)/")
        -4>> =suggPlur(\4)                                                                  && Avec « \1 \2 \3… », mettre au pluriel “\4” s’il y en a bien plusieurs.

    [un|une|le|la|ce|cette|mon|ton|son|ma|ta|sa|les|ces|des|mes|tes|ses|nos|vos|leurs|quelques|plusieurs] >groupe [d’|de] [écoutes|paroles]
        <<- /gn/ -4>> =suggSing(\4)                                                         && Mettez au singulier.

    [>association|>assemblée|>collectif|>collectivité|>groupe|>rassemblement|>regroupement|>réunion|>troupe] [de|d’] [artiste|agriculteur|agricultrice|architecte|automobiliste|citoyen|citoyenne|con|conne|consommateur|consommatrice|enfant|entreprise|femme|fille|garçon|homme|imbécile|infirmier|infirmière|jeune|malfaiteur|médecin|motard|motarde|musicien|musicienne|passionné|passionnée|prostitué|prostituée|touriste|travailleur|travailleuse|vieille|vieillard|vieillarde]
        <<- /gn/ -3>> \3s                                               && Il manque un “s”. Il y en a plusieurs dans un groupe, un rassemblement, une assemblée, etc.
................................................................................
TEST: une multitude d’{{homme}}                                     ->> hommes
TEST: des groupes de {{paroles}}                                    ->> parole
TEST: ils constituent un groupe de {{passionné}}.                   ->> passionnés
TEST: Ce collectif d’{{artiste}} est très inventif.                 ->> artistes
TEST: les 80 milliards de fraude fiscale
TEST: un groupe de prière
TEST: elle fait environ un mètre de large sur des dizaines de long



__gn_cage_d_escalier__
    >cage d’ escaliers
        <<- /gn/ -3>> escalier                                          && Usuellement, pas de “s” à escalier.

__gn_carnet_de__
................................................................................

# extérieur/intérieur
__gn_intérieur_extérieur__
    [l’|d’|mon|ton|son|leur|notre|votre|cet|en] [intérieure|extérieure]
        <<- /gn/ -2>> =\2[:-1]                          && Ceci est un adjectif féminin. Pas de “e” pour le nom masculin.

    [d’|ces|des|les|mes|tes|ses|leurs|nos|vos|en] [intérieures|extérieures]
        <<- /gn/ -2>> =\2[:-2]+"s"                      && Ceci est un adjectif féminin. Pas de “e” pour le nom masculin.

TEST: que pensez-vous de notre {{intérieure}} ?             ->> intérieur
TEST: à l’{{intérieure}} rien de notable.                   ->> intérieur
TEST: un homme de l’{{intérieure}}.                         ->> intérieur
TEST: des {{intérieures}} remarquables.                     ->> intérieurs


................................................................................
        <<- /ppas/ morph(\2, ":[NA].*:[fe]", ">(?:fois|impression)/") and not morph(>1, ":(?:Y|Ov|D|ÉV)|>qu[e’]/")
            and not ((value(\-1, "|commencé|décidé|essayé|fini|imaginé|ordonné|oublié|recommencé|supplié|tenté|") and value(>1, "|de|d’|")) or (value(\-1, "|commencé|recommencé|réussi|pensé|échoué|") and value(>1, "|à|")))
        --1>> =suggVerbPpas(\-1, ":f:s")
        && Si “\1 \2…” est bien le COD du participe passé “\-1”, celui-ci devrait être au féminin singulier.|http://fr.wikipedia.org/wiki/Accord_du_participe_pass%C3%A9_en_fran%C3%A7ais

    [l’|mon|ton|son|notre|votre|leur]  *WORD  [que|qu’]  [je|j’|tu|il|elle|on|nous|vous|ils|elles|iel|iels|$:M]  ?[ne|n’]¿  ?[lui|leur]¿  >avoir  @:V[0-3]..t.*:Q¬:[GWÉ]
    [l’|mon|ton|son|notre|votre|leur]  *WORD  [que|qu’]  $:D¬:R  @:[NA]                                          ?[ne|n’]¿  ?[lui|leur]¿  >avoir  @:V[0-3]..t.*:Q¬:[GWÉ]

        <<- /ppas/ morph(\2, ":[NA].*:m", ":[fe]|>impression/") and morph(\-1, ":Q.*:[fp]", ":[me]:[si]") --1>> =suggVerbPpas(\-1, ":m:s")
        && Si “\1 \2…” est bien le COD du participe passé “\-1”, celui-ci devrait être au masculin singulier.|http://fr.wikipedia.org/wiki/Accord_du_participe_pass%C3%A9_en_fran%C3%A7ais
        <<- /ppas/ __else__ and morph(\2, ":[NA].*:f", ":[me]") and morph(\-1, ":Q.*:[mp]", ":[fe]:[si]") --1>> =suggVerbPpas(\-1, ":f:s")
        && Si “\1 \2…” est bien le COD du participe passé “\-1”, celui-ci devrait être au féminin singulier.|http://fr.wikipedia.org/wiki/Accord_du_participe_pass%C3%A9_en_fran%C3%A7ais
        <<- /ppas/ __else__ and morph(\2, ":[NA].*:[si]") and morph(\-1, ":Q.*:p", ":[si]") --1>> =suggSing(\-1)
        && Si “\1 \2…” est bien le COD du participe passé “\-1”, celui-ci devrait être au singulier.|http://fr.wikipedia.org/wiki/Accord_du_participe_pass%C3%A9_en_fran%C3%A7ais

................................................................................
TEST: votre père que vous m’avez {{envoyée}}                                    ->> envoyé
TEST: ton psychologue que tu nous as {{suggérés}}                               ->> suggéré
TEST: le flacon qu’ils ont réussi à acquérir
TEST: la danse qu’ils ont réussi à faire
TEST: La dernière fois qu’elle a brûlé, c’était pendant la Commune.
TEST: en ayant l’impression qu’il a beaucoup réussi
TEST: rassuré par l’enquête qu’il avait dû mener, il consentit à me faire confiance



__ppas_det_plur_COD_que_avoir__
    [les|des|ces|mes|tes|ses|nos|vos|leurs|quelques|plusieurs]  *WORD  [que|qu’]  [je|j’|tu|il|elle|on|nous|vous|ils|elles|iel|iels|$:M]  ?[ne|n’]¿  ?[lui|leur]¿  >avoir  @:V[0-3]..t.*:Q¬:[GWÉ]
    [les|des|ces|mes|tes|ses|nos|vos|leurs|quelques|plusieurs]  *WORD  [que|qu’]  $:D¬:R  @:[NA]                                          ?[ne|n’]¿  ?[lui|leur]¿  >avoir  @:V[0-3]..t.*:Q¬:[GWÉ]
        <<- /ppas/ not morph(>1, ":(?:Y|Ov|D|LV|ÉV)")
            and not ((value(\-1, "|commencé|décidé|essayé|fini|imaginé|ordonné|oublié|recommencé|supplié|tenté|") and value(>1, "|de|d’|")) or (value(\-1, "|commencé|recommencé|réussi|pensé|échoué|") and value(>1, "|à|")))
            and morph(\2, ":[NA]") >>>







>
>
>







 







|
<







 







|







 







|


|







 







>
>
>
>
>
>







 







>
>
>


>





>







 







|







 







>







 







|







 







>







 







>
>







2855
2856
2857
2858
2859
2860
2861
2862
2863
2864
2865
2866
2867
2868
2869
2870
2871
....
4872
4873
4874
4875
4876
4877
4878
4879

4880
4881
4882
4883
4884
4885
4886
....
6635
6636
6637
6638
6639
6640
6641
6642
6643
6644
6645
6646
6647
6648
6649
.....
18044
18045
18046
18047
18048
18049
18050
18051
18052
18053
18054
18055
18056
18057
18058
18059
18060
18061
.....
20488
20489
20490
20491
20492
20493
20494
20495
20496
20497
20498
20499
20500
20501
20502
20503
20504
20505
20506
20507
.....
25146
25147
25148
25149
25150
25151
25152
25153
25154
25155
25156
25157
25158
25159
25160
25161
25162
25163
25164
25165
25166
25167
25168
25169
25170
25171
.....
26875
26876
26877
26878
26879
26880
26881
26882
26883
26884
26885
26886
26887
26888
26889
.....
26892
26893
26894
26895
26896
26897
26898
26899
26900
26901
26902
26903
26904
26905
26906
.....
27062
27063
27064
27065
27066
27067
27068
27069
27070
27071
27072
27073
27074
27075
27076
.....
31789
31790
31791
31792
31793
31794
31795
31796
31797
31798
31799
31800
31801
31802
31803
.....
31845
31846
31847
31848
31849
31850
31851
31852
31853
31854
31855
31856
31857
31858
31859
31860
    [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")

    a [,|et] [b|c|ç|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z]
        <<- =>> select(\1, ":N")

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

__da_avant__
    avant [que|qu’|$:D]
        <<- not value(<1, "|l’|quel|cet|un|mon|ton|son|notre|votre|leur|") =>> select(\1, ":R")
................................................................................
@@@@
@@@@GRAPH: graphe2|g2                                                                              _
@@@@
@@@@
@@@@
@@@@

##!!!! Doublons (casse identique)                                                                   !!


# SLOWER THAN REGEX RULE
#__doublon__
#    *WORD  *WORD
#    <<- \1 == \2
#        and not value(\2, "|nous|vous|faire|en|la|lui|donnant|œuvre|ah|oh|eh|hé|ho|ha|hou|olé|joli|Bora|couvent|dément|sapiens|très|vroum|")
#        and not (value(\1, "|est|une|") and value(<1, "|l’|d’|"))
................................................................................



!!!! A / À: accentuation la préposition en début de phrase                                        !!

__typo_À_début_phrase!7__
    <start>  A  @:[GNAY]¬:(?:Q|3s)
        <<- /typo/ not value(\3, "|t’|priori|posteriori|postériori|contrario|capella|fortiori|giorno|a|")
        -2>> À                                                                                      && S’il s’agit de la préposition « à », il faut accentuer la majuscule.

    <start>  A  bientôt  [<end>|,|)]
        <<- /typo/ -2>> À                                                                           && S’il s’agit de la préposition « à », il faut accentuer la majuscule.

    <start>  A  t’  *WORD
        <<- /typo/ not value(\4, "|il|ils|elle|elles|iel|iels|on|ont|") -2>> À                      && S’il s’agit de la préposition « à », il faut accentuer la majuscule.
................................................................................
    ,  je      [t’|vous]   en  [prie|supplie]  ,
    ,  nous    [t’|vous]   en  [prions|supplions]  ,
        <<- not morph(>1, ":E") ~>> *


# Déterminant + nombre
__p_dét_plur_nombre_nom__
    [les|ces|des|mes|tes|ses|nos|vos|leurs]  [*NUM|$:B]  @:[NA].*:[pi]¬:(?:V0|3p|Oo|X)|>(?:janvier|février|mars|avril|mai|juin|juillet|ao[ûu]t|septembre|octobre|novembre|décembre|vendémiaire|brumaire|frimaire|nivôse|pluviôse|ventôse|germinal|floréal|prairial|messidor|thermidor|fructidor)
        <<- ~2>> *

    [les|ces|des|mes|tes|ses|nos|vos|leurs]  [*NUM|$:B]  ou  [*NUM|$:B]  @:[NA].*:[pi]¬:(?:V0|3p|Oo|X)|>(?:janvier|février|mars|avril|mai|juin|juillet|ao[ûu]t|septembre|octobre|novembre|décembre|vendémiaire|brumaire|frimaire|nivôse|pluviôse|ventôse|germinal|floréal|prairial|messidor|thermidor|fructidor)
        <<- ~2:4>> *

    [les|des]   >numéro  [un|*NUM|$:B]  et  [*NUM|$:B]
        <<- ~3:0>> *

    la  >numéro  un
    la  >numéro  $:B
................................................................................
__da_participe_passé__
    >avoir  $:Q
        <<- not value(\1, "|avoir|avoirs|") and not morph(<1, ":D") =>> rewrite(\2, ":A", "")

    >être   $:Q
        <<- not value(\1, "|être|êtres|") and not morph(<1, ":D") =>> rewrite(\2, ":A", "")


__da_dit__
    ,  dit  /_Maj_
    ,  dit  $:D
        <<- =>> =select(\2, "", ":A")


__purge_rien__
    rien  $:Q  [d’|de]
        <<- /2>> _rien_

    rien
        <<- morph(<1, ":V") and not value(>1, "|qui|de|d’|ne|n’|") ~>> *
................................................................................
TEST: les agrandissements photo
TEST: Il faut donc examiner ensemble les panneaux et les parois latéraux.
TEST: Il faut donc examiner ensemble les panneaux et les parois latérales.
TEST: l’homme les a volés


__gn_les_2m_virg__
    calendriers ,  [grégorien|julien|hégirien] et [grégorien|julien|hégirien]
        <<- !3>> gn

    <start>  les  *WORD  ,  @:A¬:[GP]
        <<- /gn/ morph(\3, ":[NA].*:[pi]", ":3[sp]") and not agreement(\3, \5)
            and not (value(>1, "|et|") and morph(\-1, "#G") and morph(>2, "#G"))
        --1>> =suggAgree(\-1, \3)                                                           && Cet adjectif n’est pas accordé avec “\2 \3”.

TEST: les femmes, {{blessé}} par deux fois                                      ->> blessées
TEST: les hommes, {{blessée}} par deux fois                                     ->> blessés
TEST: les femmes, demeurant rue de la paix
TEST: les deux camps, italien et allemand, étaient à portée d’arc


__gn_leurs_1m__
    leurs  *WORD
        <<- /gn/ morph(\2, ":[NA].*:s", ":(?:[ipGW]|[123][sp])") and not (value(>1, "|et|ou|") and morph(>2, ":[NA]"))
        -2>> =suggPlur(\2)                                                                  && Accord de nombre erroné avec « \1 » : « \2 » devrait être au pluriel.
        <<- /gn/ __also__ -1>> leur                                                         && Accord de nombre erroné avec « \2 ».
................................................................................
TEST: ajoute plein de sel sur ses pâtes
TEST: avoir plein d’argent ne suffit pas toujours à tout résoudre


__gn_groupe_de__
    [un|une|le|la|ce|cette|mon|ton|son|ma|ta|sa|les|ces|des|mes|tes|ses|nos|vos|leurs|quelques|plusieurs]
        || [>dizaine|>douzaine||>vingtaine|>trentaine|>quarantaine|>cinquantaine|>soixantaine|>centaine|>millier|>million|>milliard|>multitude|>horde]  [de|d’]  *WORD
        <<- /gn/ morph(\4, ":[NA].*:s", ":[ip]|>(?:bénéfice|fraude|large|long|profondeur|hauteur|perte)/")
        -4>> =suggPlur(\4)                                                                  && Avec « \1 \2 \3… », mettre au pluriel “\4” s’il y en a bien plusieurs.

    [un|une|le|la|ce|cette|mon|ton|son|ma|ta|sa|les|ces|des|mes|tes|ses|nos|vos|leurs|quelques|plusieurs] >groupe [d’|de] [écoutes|paroles]
        <<- /gn/ -4>> =suggSing(\4)                                                         && Mettez au singulier.

    [>association|>assemblée|>collectif|>collectivité|>groupe|>rassemblement|>regroupement|>réunion|>troupe] [de|d’] [artiste|agriculteur|agricultrice|architecte|automobiliste|citoyen|citoyenne|con|conne|consommateur|consommatrice|enfant|entreprise|femme|fille|garçon|homme|imbécile|infirmier|infirmière|jeune|malfaiteur|médecin|motard|motarde|musicien|musicienne|passionné|passionnée|prostitué|prostituée|touriste|travailleur|travailleuse|vieille|vieillard|vieillarde]
        <<- /gn/ -3>> \3s                                               && Il manque un “s”. Il y en a plusieurs dans un groupe, un rassemblement, une assemblée, etc.
................................................................................
TEST: une multitude d’{{homme}}                                     ->> hommes
TEST: des groupes de {{paroles}}                                    ->> parole
TEST: ils constituent un groupe de {{passionné}}.                   ->> passionnés
TEST: Ce collectif d’{{artiste}} est très inventif.                 ->> artistes
TEST: les 80 milliards de fraude fiscale
TEST: un groupe de prière
TEST: elle fait environ un mètre de large sur des dizaines de long
TEST: six milliards de perte


__gn_cage_d_escalier__
    >cage d’ escaliers
        <<- /gn/ -3>> escalier                                          && Usuellement, pas de “s” à escalier.

__gn_carnet_de__
................................................................................

# extérieur/intérieur
__gn_intérieur_extérieur__
    [l’|d’|mon|ton|son|leur|notre|votre|cet|en] [intérieure|extérieure]
        <<- /gn/ -2>> =\2[:-1]                          && Ceci est un adjectif féminin. Pas de “e” pour le nom masculin.

    [d’|ces|des|les|mes|tes|ses|leurs|nos|vos|en] [intérieures|extérieures]
        <<- /gn/ space(\1, 1, 3) -2>> =\2[:-2]+"s"      && Ceci est un adjectif féminin. Pas de “e” pour le nom masculin.

TEST: que pensez-vous de notre {{intérieure}} ?             ->> intérieur
TEST: à l’{{intérieure}} rien de notable.                   ->> intérieur
TEST: un homme de l’{{intérieure}}.                         ->> intérieur
TEST: des {{intérieures}} remarquables.                     ->> intérieurs


................................................................................
        <<- /ppas/ morph(\2, ":[NA].*:[fe]", ">(?:fois|impression)/") and not morph(>1, ":(?:Y|Ov|D|ÉV)|>qu[e’]/")
            and not ((value(\-1, "|commencé|décidé|essayé|fini|imaginé|ordonné|oublié|recommencé|supplié|tenté|") and value(>1, "|de|d’|")) or (value(\-1, "|commencé|recommencé|réussi|pensé|échoué|") and value(>1, "|à|")))
        --1>> =suggVerbPpas(\-1, ":f:s")
        && Si “\1 \2…” est bien le COD du participe passé “\-1”, celui-ci devrait être au féminin singulier.|http://fr.wikipedia.org/wiki/Accord_du_participe_pass%C3%A9_en_fran%C3%A7ais

    [l’|mon|ton|son|notre|votre|leur]  *WORD  [que|qu’]  [je|j’|tu|il|elle|on|nous|vous|ils|elles|iel|iels|$:M]  ?[ne|n’]¿  ?[lui|leur]¿  >avoir  @:V[0-3]..t.*:Q¬:[GWÉ]
    [l’|mon|ton|son|notre|votre|leur]  *WORD  [que|qu’]  $:D¬:R  @:[NA]                                          ?[ne|n’]¿  ?[lui|leur]¿  >avoir  @:V[0-3]..t.*:Q¬:[GWÉ]
        <<- /ppas/ not morph(>1, ":(?:Y|Ov|D|ÉV)|>qu[e’]/") >>>
        <<- /ppas/ morph(\2, ":[NA].*:m", ":[fe]|>impression/") and morph(\-1, ":Q.*:[fp]", ":[me]:[si]") --1>> =suggVerbPpas(\-1, ":m:s")
        && Si “\1 \2…” est bien le COD du participe passé “\-1”, celui-ci devrait être au masculin singulier.|http://fr.wikipedia.org/wiki/Accord_du_participe_pass%C3%A9_en_fran%C3%A7ais
        <<- /ppas/ __else__ and morph(\2, ":[NA].*:f", ":[me]") and morph(\-1, ":Q.*:[mp]", ":[fe]:[si]") --1>> =suggVerbPpas(\-1, ":f:s")
        && Si “\1 \2…” est bien le COD du participe passé “\-1”, celui-ci devrait être au féminin singulier.|http://fr.wikipedia.org/wiki/Accord_du_participe_pass%C3%A9_en_fran%C3%A7ais
        <<- /ppas/ __else__ and morph(\2, ":[NA].*:[si]") and morph(\-1, ":Q.*:p", ":[si]") --1>> =suggSing(\-1)
        && Si “\1 \2…” est bien le COD du participe passé “\-1”, celui-ci devrait être au singulier.|http://fr.wikipedia.org/wiki/Accord_du_participe_pass%C3%A9_en_fran%C3%A7ais

................................................................................
TEST: votre père que vous m’avez {{envoyée}}                                    ->> envoyé
TEST: ton psychologue que tu nous as {{suggérés}}                               ->> suggéré
TEST: le flacon qu’ils ont réussi à acquérir
TEST: la danse qu’ils ont réussi à faire
TEST: La dernière fois qu’elle a brûlé, c’était pendant la Commune.
TEST: en ayant l’impression qu’il a beaucoup réussi
TEST: rassuré par l’enquête qu’il avait dû mener, il consentit à me faire confiance
TEST: l’hypothèse que ces deux familles aient partagé un ancêtre commun


__ppas_det_plur_COD_que_avoir__
    [les|des|ces|mes|tes|ses|nos|vos|leurs|quelques|plusieurs]  *WORD  [que|qu’]  [je|j’|tu|il|elle|on|nous|vous|ils|elles|iel|iels|$:M]  ?[ne|n’]¿  ?[lui|leur]¿  >avoir  @:V[0-3]..t.*:Q¬:[GWÉ]
    [les|des|ces|mes|tes|ses|nos|vos|leurs|quelques|plusieurs]  *WORD  [que|qu’]  $:D¬:R  @:[NA]                                          ?[ne|n’]¿  ?[lui|leur]¿  >avoir  @:V[0-3]..t.*:Q¬:[GWÉ]
        <<- /ppas/ not morph(>1, ":(?:Y|Ov|D|LV|ÉV)")
            and not ((value(\-1, "|commencé|décidé|essayé|fini|imaginé|ordonné|oublié|recommencé|supplié|tenté|") and value(>1, "|de|d’|")) or (value(\-1, "|commencé|recommencé|réussi|pensé|échoué|") and value(>1, "|à|")))
            and morph(\2, ":[NA]") >>>