Grammalecte  Check-in [b316995bfc]

Overview
Comment:[build][core][fr][doc] rename functions
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk | fr | core | build | doc
Files: files | file ages | folders
SHA3-256: b316995bfcb31a30f86b32ba32e576f29192b216bf76d61d2065b0030a17a362
User & Date: olr on 2020-11-26 07:12:36
Other Links: manifest | tags
Context
2020-11-26
12:30
[build][core][fr] rename function check-in: 261ec1c90b user: olr tags: build, core, fr, trunk
07:12
[build][core][fr][doc] rename functions check-in: b316995bfc user: olr tags: build, core, doc, fr, trunk
2020-11-25
22:59
[build][core][fr][doc] rename functions check-in: b695f86d1e user: olr tags: build, core, doc, fr, trunk
Changes

Modified compile_rules_graph.py from [256d05840f] to [7091a2b5a1].

34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54


55
56
57
58
59
60
61
62
63
64
65
66
67
def rewriteCode (sCode):
    "convert simple code syntax to a string of Python code"
    if sCode[0:1] == "=":
        sCode = sCode[1:]
    sCode = sCode.replace("__also__", "bCondMemo")
    sCode = sCode.replace("__else__", "not bCondMemo")
    sCode = sCode.replace("sContext", "_sAppContext")
    sCode = re.sub(r"\b(morph|morphVC|analyse|value|tag|meta|info)[(]\\(\d+)", 'g_\\1(lToken[nTokenOffset+\\2]', sCode)
    sCode = re.sub(r"\b(morph|morphVC|analyse|value|tag|meta|info)[(]\\-(\d+)", 'g_\\1(lToken[nLastToken-\\2+1]', sCode)
    sCode = re.sub(r"\b(select|exclude|define|definefrom|rewrite|addmorph|setmeta)[(][\\](\d+)", 'g_\\1(lToken[nTokenOffset+\\2]', sCode)
    sCode = re.sub(r"\b(select|exclude|define|definefrom|rewrite|addmorph|setmeta)[(][\\]-(\d+)", 'g_\\1(lToken[nLastToken-\\2+1]', sCode)
    sCode = re.sub(r"\b(tagbefore|tagafter)[(][\\](\d+)", 'g_\\1(lToken[nTokenOffset+\\2], dTags', sCode)
    sCode = re.sub(r"\b(tagbefore|tagafter)[(][\\]-(\d+)", 'g_\\1(lToken[nLastToken-\\2+1], dTags', sCode)
    sCode = re.sub(r"\bspace[(][\\](\d+)", 'g_space(lToken[nTokenOffset+\\1], lToken[nTokenOffset+\\1+1]', sCode)
    sCode = re.sub(r"\bspace[(][\\]-(\d+)", 'g_space(lToken[nLastToken-\\1+1], lToken[nLastToken-\\1+2]', sCode)
    sCode = re.sub(r"\banalyse_with_next[(][\\](\d+)", 'g_merged_analyse(lToken[nTokenOffset+\\1], lToken[nTokenOffset+\\1+1]', sCode)
    sCode = re.sub(r"\banalyse_with_next[(][\\]-(\d+)", 'g_merged_analyse(lToken[nLastToken-\\1+1], lToken[nLastToken-\\1+2]', sCode)
    sCode = re.sub(r"\b(morph|analyse|tag|meta|value)\(>1", 'g_\\1(lToken[nLastToken+1]', sCode)                       # next token
    sCode = re.sub(r"\b(morph|analyse|tag|meta|value)\(<1", 'g_\\1(lToken[nTokenOffset]', sCode)                       # previous token
    sCode = re.sub(r"\b(morph|analyse|tag|meta|value)\(>(\d+)", 'g_\\1(g_token(lToken, nLastToken+\\2)', sCode)        # next token
    sCode = re.sub(r"\b(morph|analyse|tag|meta|value)\(<(\d+)", 'g_\\1(g_token(lToken, nTokenOffset+1-\\2)', sCode)    # previous token


    sCode = re.sub(r"\bspell *[(]", '_oSpellChecker.isValid(', sCode)
    sCode = re.sub(r"\bbefore\(\s*", 'look(sSentence[:lToken[1+nTokenOffset]["nStart"]], ', sCode)          # before(sCode)
    sCode = re.sub(r"\bafter\(\s*", 'look(sSentence[lToken[nLastToken]["nEnd"]:], ', sCode)                 # after(sCode)
    sCode = re.sub(r"\bbefore0\(\s*", 'look(sSentence0[:lToken[1+nTokenOffset]["nStart"]], ', sCode)        # before0(sCode)
    sCode = re.sub(r"\bafter0\(\s*", 'look(sSentence[lToken[nLastToken]["nEnd"]:], ', sCode)                # after0(sCode)
    sCode = re.sub(r"\banalyseWord[(]", 'analyse(', sCode)
    sCode = re.sub(r"\bagreement[(]\\(\d+), *\\(\d+)", 'g_agreement(lToken[nTokenOffset+\\1], lToken[nTokenOffset+\\2]', sCode)
    sCode = re.sub(r"\bagreement[(]\\(\d+), *\\-(\d+)", 'g_agreement(lToken[nTokenOffset+\\1], lToken[nLastToken-\\2+1]', sCode)
    sCode = re.sub(r"[\\](\d+)", 'lToken[nTokenOffset+\\1]["sValue"]', sCode)
    sCode = re.sub(r"[\\]-(\d+)", 'lToken[nLastToken-\\1+1]["sValue"]', sCode)
    sCode = re.sub(r">1", 'lToken[nLastToken+1]["sValue"]', sCode)
    sCode = re.sub(r"<1", 'lToken[nTokenOffset]["sValue"]', sCode)
    return sCode







|
|








|
|
|
|
>
>





<







34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61

62
63
64
65
66
67
68
def rewriteCode (sCode):
    "convert simple code syntax to a string of Python code"
    if sCode[0:1] == "=":
        sCode = sCode[1:]
    sCode = sCode.replace("__also__", "bCondMemo")
    sCode = sCode.replace("__else__", "not bCondMemo")
    sCode = sCode.replace("sContext", "_sAppContext")
    sCode = re.sub(r"\b(morph0?|morphVC|value|tag|meta|info)[(]\\(\d+)", 'g_\\1(lToken[nTokenOffset+\\2]', sCode)
    sCode = re.sub(r"\b(morph0?|morphVC|value|tag|meta|info)[(]\\-(\d+)", 'g_\\1(lToken[nLastToken-\\2+1]', sCode)
    sCode = re.sub(r"\b(select|exclude|define|definefrom|rewrite|addmorph|setmeta)[(][\\](\d+)", 'g_\\1(lToken[nTokenOffset+\\2]', sCode)
    sCode = re.sub(r"\b(select|exclude|define|definefrom|rewrite|addmorph|setmeta)[(][\\]-(\d+)", 'g_\\1(lToken[nLastToken-\\2+1]', sCode)
    sCode = re.sub(r"\b(tagbefore|tagafter)[(][\\](\d+)", 'g_\\1(lToken[nTokenOffset+\\2], dTags', sCode)
    sCode = re.sub(r"\b(tagbefore|tagafter)[(][\\]-(\d+)", 'g_\\1(lToken[nLastToken-\\2+1], dTags', sCode)
    sCode = re.sub(r"\bspace[(][\\](\d+)", 'g_space(lToken[nTokenOffset+\\1], lToken[nTokenOffset+\\1+1]', sCode)
    sCode = re.sub(r"\bspace[(][\\]-(\d+)", 'g_space(lToken[nLastToken-\\1+1], lToken[nLastToken-\\1+2]', sCode)
    sCode = re.sub(r"\banalyse_with_next[(][\\](\d+)", 'g_merged_analyse(lToken[nTokenOffset+\\1], lToken[nTokenOffset+\\1+1]', sCode)
    sCode = re.sub(r"\banalyse_with_next[(][\\]-(\d+)", 'g_merged_analyse(lToken[nLastToken-\\1+1], lToken[nLastToken-\\1+2]', sCode)
    sCode = re.sub(r"\b(morph0?|tag|meta|value)\(>1", 'g_\\1(lToken[nLastToken+1]', sCode)                      # next token
    sCode = re.sub(r"\b(morph0?|tag|meta|value)\(<1", 'g_\\1(lToken[nTokenOffset]', sCode)                      # previous token
    sCode = re.sub(r"\b(morph0?|tag|meta|value)\(>(\d+)", 'g_\\1(g_token(lToken, nLastToken+\\2)', sCode)       # next token
    sCode = re.sub(r"\b(morph0?|tag|meta|value)\(<(\d+)", 'g_\\1(g_token(lToken, nTokenOffset+1-\\2)', sCode)   # previous token
    sCode = re.sub(r"\bspace[(](>1)", 'g_space(lToken[nLastToken+1], g_token(lToken, nLastToken+2)', sCode)     # next token
    sCode = re.sub(r"\bspace[(](<1)", 'g_space(lToken[nTokenOffset], lToken[nTokenOffset+1]', sCode)            # previous token
    sCode = re.sub(r"\bspell *[(]", '_oSpellChecker.isValid(', sCode)
    sCode = re.sub(r"\bbefore\(\s*", 'look(sSentence[:lToken[1+nTokenOffset]["nStart"]], ', sCode)          # before(sCode)
    sCode = re.sub(r"\bafter\(\s*", 'look(sSentence[lToken[nLastToken]["nEnd"]:], ', sCode)                 # after(sCode)
    sCode = re.sub(r"\bbefore0\(\s*", 'look(sSentence0[:lToken[1+nTokenOffset]["nStart"]], ', sCode)        # before0(sCode)
    sCode = re.sub(r"\bafter0\(\s*", 'look(sSentence[lToken[nLastToken]["nEnd"]:], ', sCode)                # after0(sCode)

    sCode = re.sub(r"\bagreement[(]\\(\d+), *\\(\d+)", 'g_agreement(lToken[nTokenOffset+\\1], lToken[nTokenOffset+\\2]', sCode)
    sCode = re.sub(r"\bagreement[(]\\(\d+), *\\-(\d+)", 'g_agreement(lToken[nTokenOffset+\\1], lToken[nLastToken-\\2+1]', sCode)
    sCode = re.sub(r"[\\](\d+)", 'lToken[nTokenOffset+\\1]["sValue"]', sCode)
    sCode = re.sub(r"[\\]-(\d+)", 'lToken[nLastToken-\\1+1]["sValue"]', sCode)
    sCode = re.sub(r">1", 'lToken[nLastToken+1]["sValue"]', sCode)
    sCode = re.sub(r"<1", 'lToken[nTokenOffset]["sValue"]', sCode)
    return sCode

Modified doc/syntax.txt from [27f6e428ae] to [5966d37107].

338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
`value(n, values_string)`

>   Analyses the value of the nth token.
>   The <values_string> contains values separated by the sign `|`.
>   Example: `"|foo|bar|"`

`morph(n, "regex"[, "neg_regex"][, trim_left=0][, trim_right=0])`
`analyse(n, "regex"[, "neg_regex"][, trim_left=0][, trim_right=0])`

>   Same action with `morph()` and `morph0()` for regex rules.
>   Parameters <trim_left> and <trim_right> removed n characters at left or the right of the token before performing an analyse.

`space(n, min_space[, max_space])`

>   Returns True if the next token after token n is separated with at least <min_space> blank spaces and at most with <max_space> blank spaces.

`tag(n, tag)`







|

|







338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
`value(n, values_string)`

>   Analyses the value of the nth token.
>   The <values_string> contains values separated by the sign `|`.
>   Example: `"|foo|bar|"`

`morph(n, "regex"[, "neg_regex"][, trim_left=0][, trim_right=0])`
`morph0(n, "regex"[, "neg_regex"][, trim_left=0][, trim_right=0])`

>   Same action with `morph()` and `analyse()` for regex rules.
>   Parameters <trim_left> and <trim_right> removed n characters at left or the right of the token before performing an analyse.

`space(n, min_space[, max_space])`

>   Returns True if the next token after token n is separated with at least <min_space> blank spaces and at most with <max_space> blank spaces.

`tag(n, tag)`

Modified gc_core/js/lang_core/gc_functions.js from [b16f321cd1] to [56e86460e7].

234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
            }
        }
    }
    // search sPattern
    return lMorph.some(sMorph  =>  (sMorph.search(sPattern) !== -1));
}

function g_analyse (oToken, sPattern, sNegPattern="", nLeft=null, nRight=null, bMemorizeMorph=true) {
    // analyse a token, return True if <sNegPattern> not in morphologies and <sPattern> in morphologies
    let lMorph;
    if (nLeft !== null) {
        let sValue = (nRight !== null) ? oToken["sValue"].slice(nLeft, nRight) : oToken["sValue"].slice(nLeft);
        lMorph = gc_engine.oSpellChecker.getMorph(sValue);
        if (bMemorizeMorph) {
            oToken["lMorph"] = lMorph;







|







234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
            }
        }
    }
    // search sPattern
    return lMorph.some(sMorph  =>  (sMorph.search(sPattern) !== -1));
}

function g_morph0 (oToken, sPattern, sNegPattern="", nLeft=null, nRight=null, bMemorizeMorph=true) {
    // analyse a token, return True if <sNegPattern> not in morphologies and <sPattern> in morphologies
    let lMorph;
    if (nLeft !== null) {
        let sValue = (nRight !== null) ? oToken["sValue"].slice(nLeft, nRight) : oToken["sValue"].slice(nLeft);
        lMorph = gc_engine.oSpellChecker.getMorph(sValue);
        if (bMemorizeMorph) {
            oToken["lMorph"] = lMorph;

Modified gc_core/py/lang_core/gc_functions.py from [31d3381f72] to [5fef80fdf0].

195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
        if any(zNegPattern.search(sMorph)  for sMorph in lMorph):
            return False
    # search sPattern
    zPattern = re.compile(sPattern)
    return any(zPattern.search(sMorph)  for sMorph in lMorph)


def g_analyse (dToken, sPattern, sNegPattern="", nLeft=None, nRight=None, bMemorizeMorph=True):
    "analyse a token, return True if <sNegPattern> not in morphologies and <sPattern> in morphologies (disambiguation off)"
    if nLeft is not None:
        lMorph = _oSpellChecker.getMorph(dToken["sValue"][slice(nLeft, nRight)])
        if bMemorizeMorph:
            dToken["lMorph"] = lMorph
    else:
        lMorph = _oSpellChecker.getMorph(dToken["sValue"])







|







195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
        if any(zNegPattern.search(sMorph)  for sMorph in lMorph):
            return False
    # search sPattern
    zPattern = re.compile(sPattern)
    return any(zPattern.search(sMorph)  for sMorph in lMorph)


def g_morph0 (dToken, sPattern, sNegPattern="", nLeft=None, nRight=None, bMemorizeMorph=True):
    "analyse a token, return True if <sNegPattern> not in morphologies and <sPattern> in morphologies (disambiguation off)"
    if nLeft is not None:
        lMorph = _oSpellChecker.getMorph(dToken["sValue"][slice(nLeft, nRight)])
        if bMemorizeMorph:
            dToken["lMorph"] = lMorph
    else:
        lMorph = _oSpellChecker.getMorph(dToken["sValue"])

Modified gc_lang/fr/rules.grx from [374df9580b] to [5ff861bc84].

1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779

1780
1781

1782
1783
1784
1785
1786
1787
1788
.....
10944
10945
10946
10947
10948
10949
10950
10951
10952
10953
10954
10955
10956
10957
10958
10959
10960
10961
10962
.....
14071
14072
14073
14074
14075
14076
14077
14078
14079
14080
14081
14082
14083
14084
14085
.....
21694
21695
21696
21697
21698
21699
21700
21701
21702
21703
21704
21705
21706
21707
21708
21709
21710
21711
21712
21713
21714
21715
21716
.....
24844
24845
24846
24847
24848
24849
24850
24851
24852
24853
24854
24855
24856
24857
24858
.....
24873
24874
24875
24876
24877
24878
24879
24880
24881
24882
24883
24884
24885
24886
24887
24888
24889
24890
.....
24993
24994
24995
24996
24997
24998
24999
25000
25001
25002
25003
25004
25005
25006
25007
.....
25023
25024
25025
25026
25027
25028
25029
25030
25031
25032
25033
25034
25035
25036
25037
25038
25039
25040
25041
25042
25043
25044
25045
25046
25047
25048
25049
25050
25051
25052
25053
25054
25055
25056
25057
25058
25059
25060
25061
25062
25063
25064
25065
25066
25067
25068
25069
25070
25071
25072
25073
25074
25075
25076
25077
25078
25079
25080
25081
25082
25083
25084
25085
25086
25087
25088
25089
25090
25091
25092
25093
25094
25095
25096
25097
25098
25099
25100
25101
25102
25103
25104
25105
25106
25107
25108
25109
25110
25111
25112
25113
25114
25115
25116
25117
25118
25119
25120
25121
25122
25123
25124
25125
25126
25127
25128
25129
25130
25131
25132
25133
25134
25135
25136
25137
25138
25139
25140
25141
25142
25143
25144
25145
25146
25147
25148
25149
25150
25151
25152
25153
25154
25155
25156
25157
25158
25159
25160
25161
25162
25163
25164
.....
25661
25662
25663
25664
25665
25666
25667
25668
25669
25670
25671
25672
25673
25674
25675
.....
29137
29138
29139
29140
29141
29142
29143
29144
29145
29146
29147
29148
29149
29150
29151
29152
29153
29154
29155
29156
29157
29158

    ( … )
        <<- ->> […]                 && Pour indiquer une troncature de texte, on utilise usuellement des crochets.
        <<- ~>> *

    (  [re|ré]  )  *WORD
    [  [re|ré]  ]  *WORD
        <<- space(\3, 0, 0) ~1:3>>  *

    [  *NUM  ]
    [  …  ]
        <<- ~>> *

    **  [  *WORD  ]  **
        <<- space(\1, 1, 3) and space(\-2, 1, 3) >>>
        <<- morph(\3, ":G") ~2:4>> |\2|
        <<- __else__ ~2:4>> *

    ## chapitres, références
    (  [*WORD|*NUM]  ,  *NUM  )
    [  [*WORD|*NUM]  ,  *NUM  ]
    {  [*WORD|*NUM]  ,  *NUM  }
        <<- ~>> *

TEST: ce chien […] ne {{semblez}} pas en forme.
TEST: ce chat {{(…)}} ne {{ressemblez}} pas aux autres.

TEST: Allons (re)voir ce film
TEST: et ce malgré [une] condamnation pénale.



!!
!!
!!!! Virgules                                                                                     !!
!!
!!
................................................................................
        <<- /conf/ morph(<1, "<start>|:C|>,/")
        --1>> m’a                                   && Confusion : “ma” est un déterminant possessif féminin. Pour le verbe “avoir” à la 3ᵉ personne précédé du pronom “me”, écrivez “m’a”.

    [ne|n’]  [ma|mas]
        <<- /conf/ --1>> m’a                        && Confusion : “ma” est un déterminant possessif féminin. Pour le verbe “avoir” à la 3ᵉ personne précédé du pronom “me”, écrivez “m’a”.

    ça  [ma|mas]  *WORD
        <<- /conf/ morph(<1, "<start>|:C|>,/") and analyse(\-1, ":(?:Q|V1.*:Y)", ":N.*:[fe]")
        -2>> m’a                                    && Confusion : “ma” est un déterminant possessif féminin. Pour le verbe “avoir” à la 3ᵉ personne précédé du pronom “me”, écrivez “m’a”.

    qui ma  *WORD
        <<- /conf/ analyse(\-1, ":(?:Q|V1.*:Y)", ":N.*:[fe]")
        -2>> m’a                                    && Confusion : “ma” est un déterminant possessif féminin. Pour le verbe “avoir” à la 3ᵉ personne précédé du pronom “me”, écrivez “m’a”.

    ma  @:(?:Q.*:e:i|V1.*:Y)¬:f:s
        <<- /conf/ -1>> m’a                         && Confusion probable : “ma” est un déterminant possessif féminin. Pour le verbe “avoir” à la 3ᵉ personne précédé du pronom “me”, écrivez “m’a”.

TEST: tu {{ma}} prise par surprise                          ->> m’as
TEST: il {{ma}} tuée                                        ->> m’a
................................................................................

__infi_de_bon_ton_de__
    [>être|>rester|>demeurer|>paraître|>paraitre|>sembler] ?[pas|plus|jamais|guère]¿ ?*WORD¿ de bon ton [de|d’] ?[ne|n’|le|la|l’|les|en|me|m’|te|t’|se|s’|nous|vous|lui|leur|y]¿      ~(?:é?es?|ez|ai[ts]?)$
    [>être|>rester|>demeurer|>paraître|>paraitre|>sembler] ?[pas|plus|jamais|guère]¿ ?*WORD¿ de bon ton [de|d’] ?[ne|n’]¿   [le|la|l’|les|en|me|m’|te|t’|se|s’|nous|vous|lui|leur|y]  ~(?:é?es?|ez|ai[ts]?)$
    [>être|>rester|>demeurer|>paraître|>paraitre|>sembler] ?[pas|plus|jamais|guère]¿ ?*WORD¿ de bon ton [de|d’] ?[ne|n’]¿   [me|m’|te|t’|se|s’|nous|vous]   [le|la|l’|les|en|y]       ~(?:é?es?|ez|ai[ts]?)$
    [>être|>rester|>demeurer|>paraître|>paraitre|>sembler] ?[pas|plus|jamais|guère]¿ ?*WORD¿ de bon ton [de|d’] ?[ne|n’]¿   [le|la|l’|les]                  [lui|leur|en|y]           ~(?:é?es?|ez|ai[ts]?)$
    [>être|>rester|>demeurer|>paraître|>paraitre|>sembler] ?[pas|plus|jamais|guère]¿ ?*WORD¿ de bon ton [de|d’] ?[ne|n’]¿   [lui|leur|y]                    en                        ~(?:é?es?|ez|ai[ts]?)$
        <<- /infi/ analyse(\-1, ":V") --1>> =suggVerbInfi(\-1)                                      && Incohérence. Après “de bon ton de [faire quelque chose]”, le verbe doit être à l’infinitif.

TEST: il est souvent de bon ton de {{pensée}} calmement à ces choses avant de s’engager tête baissée.


__imp_ne_infinitif_negadv!3__
    [<start>|,|(]  [ne|n’]  @:V1.*:Y  [pas|plus|jamais]
        <<- /imp/ -3>> =suggVerbTense(\3, ":E", ":2p")                                              && Confusion probable : “\3” est un verbe à l’infinitif. Si vous vouliez utiliser l’impératif, écrivez :
................................................................................
TEST: cette fosse {{sceptique}} est pleine.
TEST: Je suis {{septique}} !


## se / ce
__conf_ce_se_nom__
    [de|par|pour|sans]  se  *WORD
        <<- /conf/ analyse(\3, ":N.*:[me]:[si]", ":Y") -2>> ce                  && Confusion probable. Si “\-1” est bien un nom ou un adjectif, alors écrivez “ce”.

    <start>  se  *WORD  [ne|n’|me|m’|te|t’|se|s’]
    <start>  se  *WORD  [le|la|l’|les|en|nous|vous|lui|leur|y]  @:(?:[123][sp]|P)¬:G
    <start>  se  *WORD  [nous|vous]     [le|la|l’|les|en|y]     @:(?:[123][sp]|P)
    <start>  se  *WORD  [le|la|l’|les]  [lui|leur|en|y]         @:(?:[123][sp]|P)
    <start>  se  *WORD  [lui|leur|y]    en                      @:(?:[123][sp]|P)
    <start>  se  *WORD  @:(?:[123][sp]|P)¬:G
        <<- /conf/ analyse(\3, ":[NA]", ":Y") -2>> ce                           && Confusion probable. Si “\3” est bien un nom ou un adjectif, alors écrivez “ce”.

TEST: que sais-tu de {{se}} {{type}}
TEST: {{se}} type nous emmerde.                                         ->> ce
TEST: se doit d’être fort, ce con, sinon c’est la fin pour lui.


## soit / soie / soi
................................................................................
__infi_loc_à_verbe__
    >avoir ?un¿ intérêt à   ?[le|l’|la|leur|les|nous|vous|lui]¿     ~..(?:ée?s?|ez|ai[st]?)$
    >avoir tendance à       ?[le|l’|la|leur|les|nous|vous|lui]¿     ~..(?:ée?s?|ez|ai[st]?)$
    >avoir du mal à         ?[le|l’|la|leur|les|nous|vous|lui]¿     ~..(?:ée?s?|ez|ai[st]?)$
    n’ >avoir qu’ à         ?[le|l’|la|leur|les|nous|vous|lui]¿     ~..(?:ée?s?|ez|ai[st]?)$
    de [façon|manière] à    ?[le|l’|la|leur|les|nous|vous|lui]¿     ~..(?:ée?s?|ez|ai[st]?)$
    enclin à                ?[le|l’|la|leur|les|nous|vous|lui]¿     ~..(?:ée?s?|ez|ai[st]?)$
        <<- /infi/ analyse(\-1, ":V", ":M") and not (\-1.endswith("ez") and value(>1, "|vous|"))
        --1>> =suggVerbInfi(\-1)                                                                    && S’il s’agit d’une action à accomplir, le verbe devrait être à l’infinitif.

TEST: de manière à {{obligé}} ces gens
TEST: ils ont intérêt à {{obligés}} ces gens
TEST: Tous ceux qui ont du mal à {{obligé}} ces gens
TEST: elles n’ont qu’à la {{brimée}} un peu plus

................................................................................
    [par|pour|sans]  [lui]        en                          ~..(?:ée?s?|ez|ai[st]?)$
        <<- /infi/ morph(\-1, ":V1.*:(?:Q|[12][sp])", ":N") --1>> =suggVerbInfi(\-1)                && Après la préposition “\1”, le verbe devrait probablement être à l’infinitif.

    [par|pour|sans]  [nous|vous|lui]  ~(?:ée?s?|ez)$
        <<- /infi/ morph(\3, ":V1", ":M") -3>> =suggVerbInfi(\3)                                    && Après la préposition “\1”, le verbe devrait probablement être à l’infinitif.

    [par|sans]  ~..(?:ée?s?|ez|ai[st]?)$
        <<- /infi/ analyse(\-1, ":V1.*:(?:Q|[123][sp])", ":[NM]") --1>> =suggVerbInfi(\-1)          && Après la préposition “\1”, le verbe devrait être à l’infinitif.

    pour  ~..(?:ée?s?|ez|ai[st]?)$
        <<- /infi/ not morph(<1, ">(?:passer|tenir)/") and analyse(\-1, ":V1.*:(?:Q|[123][sp])", ":[NM]")
        --1>> =suggVerbInfi(\-1)                                                                    && Après la préposition “\1”, le verbe devrait être à l’infinitif.

    sans pour autant ?[le|la|l’|les|en|me|m’|te|t’|se|s’|nous|vous|lui|leur|y]¿  ~..(?:ée?s?|ez|ai[st]?)$
    sans pour autant [me|m’|te|t’|se|s’|nous|vous]   [le|la|l’|les|en|y]         ~..(?:ée?s?|ez|ai[st]?)$
    sans pour autant [le|la|l’|les]                  [lui|leur|en|y]             ~..(?:ée?s?|ez|ai[st]?)$
    sans pour autant [lui|leur|y]                    en                          ~..(?:ée?s?|ez|ai[st]?)$
        <<- /infi/ morph(\-1, ":V1.*:(?:Q|[123][sp])") --1>> =suggVerbInfi(\-1)                     && Après la préposition “\1”, le verbe devrait être à l’infinitif.|https://fr.wiktionary.org/wiki/sans_pour_autant
................................................................................
TEST: une de perdue, dix de retrouvées
TEST: 25 € de gagnés


__infi_verbe_de_verbe__
    [>accuser|>arrêter|>cesser|>choisir|>commander|>continuer|>craindre|>décider|>défendre|>demander|>envisager|>essayer|>éviter|>exiger|>interdire|>jurer|>omettre|>oublier|>permettre|>prévoir|>promettre|>refuser|>suggérer|>tenter]
        || [de|d’]  ?[le|l’|la|leur|les|nous|vous|lui]¿  *WORD
        <<- /infi/ not morph(\1, ":N") and (analyse(\-1, ":V1.*:Q", ":(?:M|Oo)") or analyse(\-1, ":[123][sp]", ":[MNGA]"))
        --1>> =suggVerbInfi(\-1)                                                                    && Après “\1 de”, le verbe devrait être à l’infinitif.

TEST: cessez d’{{anesthésié}} ces gens !
TEST: arrête d’y {{consacré}} autant de temps.
TEST: Il tentait de {{raisonné}} en homme libre
TEST: Le menu Format contient de nombreuses commandes de mise en forme.
TEST: Le commandant de zone…
................................................................................
TEST: il suffit de cela.


__infi_qqch_de__
    afin                                        [de|d’]  ?[le|l’|la|leur|les|nous|vous|lui]¿  ~..ée?s?$
    avant ?même¿                                [de|d’]  ?[le|l’|la|leur|les|nous|vous|lui]¿  ~..ée?s?$
    marre                                       [de|d’]  ?[le|l’|la|leur|les|nous|vous|lui]¿  ~..ée?s?$
        <<- /infi/ analyse(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                && Après “\1 de”, le verbe devrait être à l’infinitif.

    à [condition|défaut|dessein|fin|force|même] [de|d’]  ?[le|l’|la|leur|les|nous|vous|lui]¿  ~..ée?s?$
        <<- /infi/ analyse(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                && Après “à \2 de”, le verbe devrait être à l’infinitif.

    à deux doigts                               [de|d’]  ?[le|l’|la|leur|les|nous|vous|lui]¿  ~..ée?s?$
        <<- /infi/ analyse(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                && Après “à deux doigts de”, le verbe devrait être à l’infinitif.

    à >seul >fin                                [de|d’]  ?[le|l’|la|leur|les|nous|vous|lui]¿  ~..ée?s?$
        <<- /infi/ analyse(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                && Après “à seule fin de”, le verbe devrait être à l’infinitif.

    au␣lieu                                     [de|d’]  ?[le|les|nous|vous|lui]¿  ~..ée?s?$
        <<- /infi/ analyse(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                && Après “au lieu de”, le verbe devrait être à l’infinitif.

    au␣lieu                                     [de|d’]  [l’|la|leur]              ~..ée?s?$
        <<- /infi/ analyse(\-1, ":Q", ":[MN]") --1>> =suggVerbInfi(\-1)                             && Après “au lieu de”, le verbe devrait être à l’infinitif.

    >avoir l’ air                               [de|d’]  ?[le|l’|la|leur|les|nous|vous|lui]¿  ~..ée?s?$
        <<- /infi/ analyse(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                && Après “avoir l’air de”, le verbe devrait être à l’infinitif.

    >avoir la chance                            [de|d’]  ?[le|l’|la|leur|les|nous|vous|lui]¿  ~..ée?s?$
        <<- /infi/ analyse(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                && Après “avoir la chance de”, le verbe devrait être à l’infinitif.

    >avoir le droit                             [de|d’]  ?[le|l’|la|leur|les|nous|vous|lui]¿  ~..ée?s?$
        <<- /infi/ analyse(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                && Après “avoir le droit de”, le verbe devrait être à l’infinitif.

    >avoir ?toute¿ hâte                         [de|d’]  ?[le|l’|la|leur|les|nous|vous|lui]¿  ~..ée?s?$
        <<- /infi/ analyse(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                && Après “avoir hâte de”, le verbe devrait être à l’infinitif.

    >avoir ?tout¿ lieu                          [de|d’]  ?[le|l’|la|leur|les|nous|vous|lui]¿  ~..ée?s?$
        <<- /infi/ analyse(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                && Après “avoir lieu de”, le verbe devrait être à l’infinitif.

    >avoir ?tout¿ loisir                        [de|d’]  ?[le|l’|la|leur|les|nous|vous|lui]¿  ~..ée?s?$
        <<- /infi/ analyse(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                && Après “avoir loisir de”, le verbe devrait être à l’infinitif.

    >avoir tôt fait                             [de|d’]  ?[le|l’|la|leur|les|nous|vous|lui]¿  ~..ée?s?$
        <<- /infi/ analyse(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                && Après “avoir tôt fait de”, le verbe devrait être à l’infinitif.|https://fr.wiktionary.org/wiki/avoir_t%C3%B4t_fait_de

    >avoir besoin                               [de|d’]  [le|les|nous|vous|lui]    ~..ée?s?$
        <<- /infi/ analyse(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                && Après “avoir besoin de”, le verbe devrait être à l’infinitif.

    >avoir besoin                               [de|d’]  ?[l’|la|leur]¿            ~..ée?s?$
        <<- /infi/ analyse(\-1, ":Q", ":[MN]") --1>> =suggVerbInfi(\-1)                             && Après “avoir besoin de”, le verbe devrait être à l’infinitif.

    >avoir d’ >autre choix [que|qu’]            ?[de|d’]¿  ?[le|l’|la|leur|les|nous|vous|lui]¿  ~..ée?s?$
        <<- /infi/ analyse(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                && Après “avoir d’autre choix que”, le verbe devrait être à l’infinitif.

    >avoir la présence d’ esprit                [de|d’]  ?[le|l’|la|leur|les|nous|vous|lui]¿  ~..ée?s?$
        <<- /infi/ analyse(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                && Après “avoir vite fait de”, le verbe devrait être à l’infinitif.

    >avoir [peur|raison]                        [de|d’]  ?[le|les|nous|vous|lui]¿  ~..ée?s?$
        <<- /infi/ analyse(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                && Après “avoir \2 de”, le verbe devrait être à l’infinitif.

    >avoir [peur|raison]                        [de|d’]  [l’|la|leur]              ~..ée?s?$
        <<- /infi/ analyse(\-1, ":Q", ":[MN]") --1>> =suggVerbInfi(\-1)                             && Après “avoir \2 de”, le verbe devrait être à l’infinitif.

    point [ne|n’] >être besoin                  [de|d’]  ?[le|les|nous|vous|lui]¿  ~..ée?s?$
        <<- /infi/ analyse(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                && Après “point n’est besoin de”, le verbe devrait être à l’infinitif.

    point [ne|n’] >être besoin                  [de|d’]  [l’|la|leur]              ~..ée?s?$
        <<- /infi/ analyse(\-1, ":Q", ":[MN]") --1>> =suggVerbInfi(\-1)                             && Après “point n’est besoin de”, le verbe devrait être à l’infinitif.

    >avoir vite fait                            [de|d’]  ?[le|l’|la|leur|les|nous|vous|lui]¿  ~..ée?s?$
        <<- /infi/ analyse(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                && Après “avoir vite fait de”, le verbe devrait être à l’infinitif.

    n’ >avoir de cesse                          [de|d’]  ?[le|l’|la|leur|les|nous|vous|lui]¿  ~..ée?s?$
        <<- /infi/ analyse(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                && Après “n’avoir de cesse de”, le verbe devrait être à l’infinitif.|https://fr.wiktionary.org/wiki/n%E2%80%99avoir_de_cesse

    [de|d’]  crainte                            [de|d’]  ?[le|les|nous|vous|lui]¿  ~..ée?s?$
        <<- /infi/ analyse(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                && Après “de crainte de”, le verbe devrait être à l’infinitif.

    [de|d’]  crainte                            [de|d’]  [l’|la|leur]              ~..ée?s?$
        <<- /infi/ analyse(\-1, ":Q", ":[MN]") --1>> =suggVerbInfi(\-1)                             && Après “de crainte de”, le verbe devrait être à l’infinitif.

    en  [droit|état|mesure|train|vue]           [de|d’]  ?[le|l’|la|leur|les|nous|vous|lui]¿  ~..ée?s?$
        <<- /infi/ analyse(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                && Après “\1 \2 de”, le verbe devrait être à l’infinitif.

    >faire  [exprès|semblant|mine]              [de|d’]  ?[le|l’|la|leur|les|nous|vous|lui]¿  ~..ée?s?$
        <<- /infi/ analyse(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                && Après “faire \2 de”, le verbe devrait être à l’infinitif.

    >faire  fort                                [de|d’]  ?[le|l’|la|leur|les|nous|vous|lui]¿  ~..ée?s?$
        <<- /infi/ analyse(\-1, ":Q", ":M") and (value(<1, "|me|m’|te|t’|se|s’|") or (value(<1, "|nous|") and value(<2, "|nous|")) or (value(<1, "|vous|") and value(<2, "|vous|")))
        --1>> =suggVerbInfi(\-1)                                                                    && Après “se faire fort de”, le verbe devrait être à l’infinitif.

    [>façon|>manière]                           [de|d’]  ?[le|l’|la|leur|les|nous|vous|lui]¿  ~..ée?s?$
    [>intention|>volonté]                       [de|d’]  ?[le|l’|la|leur|les|nous|vous|lui]¿  ~..ée?s?$
        <<- /infi/ analyse(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                && Après “\1 de”, le verbe devrait être à l’infinitif s’il s’agit bien de décrire une action.

    hors d’ état                                [de|d’]  ?[le|l’|la|leur|les|nous|vous|lui]¿  ~..ée?s?$
        <<- /infi/ analyse(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                && Après “hors d’état de”, le verbe devrait être à l’infinitif.

    hors de question                            [de|d’]  ?[le|l’|la|leur|les|nous|vous|lui]¿  ~..ée?s?$
        <<- /infi/ analyse(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                && Après “hors de question de”, le verbe devrait être à l’infinitif.

    il >être [temps|admissible|inadmissible|absurde|contraignant|libérateur|difficile|facile|impossible|indispensable|nécessaire|possible|utile|inutile]
        || [de|d’]  ?[le|l’|la|leur|les|nous|vous|lui]¿  ~..ée?s?$
        <<- /infi/ analyse(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                && Après “il est \3 de”, le verbe devrait être à l’infinitif.

    il ?n’¿ >être question                      [de|d’]  ?[le|les|nous|vous|lui]¿  ~..ée?s?$
        <<- /infi/ analyse(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                && Après “il (n’)est (pas) question de”, le verbe devrait être à l’infinitif.

    il ?n’¿ >être question                      [de|d’]  [l’|la|leur]              ~..ée?s?$
        <<- /infi/ analyse(\-1, ":Q", ":[MN]") --1>> =suggVerbInfi(\-1)                             && Après “il (n’)est (pas) question de”, le verbe devrait être à l’infinitif.

    pas question                                [de|d’]  ?[le|l’|la|leur|les|nous|vous|lui]¿  ~..ée?s?$
        <<- /infi/ analyse(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                && Après “pas question de”, le verbe devrait être à l’infinitif.

    [<start>|,|(] [>capable|>incapable|impossible|inutile|>libre]  [de|d’]  ?[le|l’|la|leur|les|nous|vous|lui]¿  ~..ée?s?$
        <<- /infi/ analyse(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                && Après “\2 de”, le verbe devrait être à l’infinitif.

    [<start>|,|(] >libre  à [moi|toi|lui|elle|soi|nous|vous|eux|elles]  [de|d’]  ?[le|l’|la|leur|les|nous|vous|lui]¿  ~..ée?s?$
        <<- /infi/ analyse(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                && Après “\2 de”, le verbe devrait être à l’infinitif.

    force [est|était|fut|serait|sera]           [de|d’]  ?[le|l’|la|leur|les|nous|vous|lui]¿  ~..ée?s?$
        <<- /infi/ not value(<1, "|une|la|cette|ma|ta|sa|notre|votre|leur|quelle|de|d’|") and analyse(\-1, ":Q", ":M")
        --1>> =suggVerbInfi(\-1)                                                                    && Après “force est de”, le verbe devrait être à l’infinitif.

    non >content                                [de|d’]  ?[le|les|nous|vous|lui]¿  ~..ée?s?$
        <<- /infi/ analyse(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                && Après “non content de”, le verbe devrait être à l’infinitif.

    non >content                                [de|d’]  [l’|la|leur]              ~..ée?s?$
        <<- /infi/ analyse(\-1, ":Q", ":[MN]") --1>> =suggVerbInfi(\-1)                             && Après “non content de”, le verbe devrait être à l’infinitif.

    >prendre garde                              [de|d’]  ?[le|l’|la|leur|les|nous|vous|lui]¿  ~..ée?s?$
        <<- /infi/ analyse(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                && Après “prendre garde de”, le verbe devrait être à l’infinitif.

    sous peine                                  [de|d’]  ?[le|l’|la|leur|les|nous|vous|lui]¿  ~..ée?s?$
        <<- /infi/ analyse(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                && Après “sous peine de”, le verbe devrait être à l’infinitif.

TEST: à deux doigts de la {{dénoncée}} aux autorités                                                ->> dénoncer
TEST: afin de leur {{percée}} une ouverture                                                         ->> percer
TEST: en train de {{percées}}                                                                       ->> percer
TEST: au lieu de la {{travaillée}}, elle restait les bras ballants                                  ->> travailler
TEST: au lieu de nous {{données}} du travail, il bavassait sans cesse                               ->> donner
TEST: elle tricha à seule fin d’{{allée}} à l’université                                            ->> aller
................................................................................

__infi_mieux_valoir__
    mieux  ?[ne|n’]¿  >valoir  ?[ne|n’|le|la|l’|les|en|me|m’|te|t’|se|s’|nous|vous|lui|leur|y]¿      ~..(?:ée?s?|ez|ai[ts]?)$
    mieux  ?[ne|n’]¿  >valoir  ?[ne|n’]¿   [le|la|l’|les|en|me|m’|te|t’|se|s’|nous|vous|lui|leur|y]  ~..(?:ée?s?|ez|ai[ts]?)$
    mieux  ?[ne|n’]¿  >valoir  ?[ne|n’]¿   [me|m’|te|t’|se|s’|nous|vous]   [le|la|l’|les|en|y]       ~..(?:ée?s?|ez|ai[ts]?)$
    mieux  ?[ne|n’]¿  >valoir  ?[ne|n’]¿   [le|la|l’|les]                  [lui|leur|en|y]           ~..(?:ée?s?|ez|ai[ts]?)$
    mieux  ?[ne|n’]¿  >valoir  ?[ne|n’]¿   [lui|leur|y]                    en                        ~..(?:ée?s?|ez|ai[ts]?)$
        <<- /infi/ analyse(\-1, ":V1.*:(?:Q|[123][sp])", ":[GM]")
        --1>> =suggVerbInfi(\-1)                                                                    && Après “mieux vaut…”, le verbe devrait être à l’infinitif.

TEST: Mieux vaut {{consacré}} son temps à des occupations utiles.
TEST: Mieux ne vaut pas {{arrivé}} en retard.
TEST: il eût mieux valu {{oublié}} cette affaire plutôt que réveiller ce dragon endormi.


................................................................................
    <start>  [ne|n’]  ?[le|la|l’|les|en|me|m’|te|t’|nous|vous|lui|leur|y]¿  ~\w\w+t$
    <start>  [ne|n’]  [me|m’|te|t’|nous|vous]  [le|la|l’|les|en|y]          ~\w\w+t$
    <start>  [ne|n’]  [le|la|l’|les]           [lui|leur|en|y]              ~\w\w+t$
    <start>  [ne|n’]  [lui|leur]               en                           ~\w\w+t$
        <<- /imp/ not value(>1, "|il|elle|on|ils|elles|iel|iels|")
            and not value(\-1, "|provient|")
            and not (value(\-1, "|vient|dit|surgit|survient|périt|") and morph(>1, ":(?:[MD]|Oo)|>[A-Z]/"))
            and morph(\-1, ":V[23].*:Ip.*:3s", ":G|>(?:devoir|suffire|para[îi]tre)/") and analyseWord(\-1[:-1]+"s", ":E:2s")
        --1>> =\-1[:-1]+"s"                                                         && S’il s’agit d’un impératif, la terminaison est “s”, non “t”.

    <start>  ~\w\w+t$
        <<- /imp/ not value(>1, "|il|elle|on|ils|elles|iel|iels|")
            and not value(\-1, "|provient|")
            and not (value(\-1, "|vient|dit|surgit|survient|périt|") and morph(>1, ":(?:[MDR]|Oo)|>[A-Z]/"))
            and morph(\-1, ":V[23].*:Ip.*:3s", ":[GNA]|>(?:devoir|suffire|para[îi]tre)/") and analyseWord(\-1[:-1]+"s", ":E:2s")
        --1>> =\-1[:-1]+"s"                                                         && S’il s’agit d’un impératif, la terminaison est “s”, non “t”.

TEST: {{Finit}} ton assiette.                                           ->> Finis
TEST: Ne {{pourrit}} pas l’ambiance.                                    ->> pourris
TEST: Ne {{finit}} pas ce devoir.
TEST: {{Finit}} cette tarte.
TEST: Ne me {{choisit}} pas.







|





|
|
|
|









>


>







 







|



|







 







|







 







|







|







 







|







 







|


|







 







|







 







|


|


|


|


|


|


|


|


|


|


|


|


|


|


|


|


|


|


|


|


|


|


|


|


|


|


|


|
|



|


|


|



|


|


|


|


|


|


|



|


|


|


|







 







|







 







|






|







1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
.....
10946
10947
10948
10949
10950
10951
10952
10953
10954
10955
10956
10957
10958
10959
10960
10961
10962
10963
10964
.....
14073
14074
14075
14076
14077
14078
14079
14080
14081
14082
14083
14084
14085
14086
14087
.....
21696
21697
21698
21699
21700
21701
21702
21703
21704
21705
21706
21707
21708
21709
21710
21711
21712
21713
21714
21715
21716
21717
21718
.....
24846
24847
24848
24849
24850
24851
24852
24853
24854
24855
24856
24857
24858
24859
24860
.....
24875
24876
24877
24878
24879
24880
24881
24882
24883
24884
24885
24886
24887
24888
24889
24890
24891
24892
.....
24995
24996
24997
24998
24999
25000
25001
25002
25003
25004
25005
25006
25007
25008
25009
.....
25025
25026
25027
25028
25029
25030
25031
25032
25033
25034
25035
25036
25037
25038
25039
25040
25041
25042
25043
25044
25045
25046
25047
25048
25049
25050
25051
25052
25053
25054
25055
25056
25057
25058
25059
25060
25061
25062
25063
25064
25065
25066
25067
25068
25069
25070
25071
25072
25073
25074
25075
25076
25077
25078
25079
25080
25081
25082
25083
25084
25085
25086
25087
25088
25089
25090
25091
25092
25093
25094
25095
25096
25097
25098
25099
25100
25101
25102
25103
25104
25105
25106
25107
25108
25109
25110
25111
25112
25113
25114
25115
25116
25117
25118
25119
25120
25121
25122
25123
25124
25125
25126
25127
25128
25129
25130
25131
25132
25133
25134
25135
25136
25137
25138
25139
25140
25141
25142
25143
25144
25145
25146
25147
25148
25149
25150
25151
25152
25153
25154
25155
25156
25157
25158
25159
25160
25161
25162
25163
25164
25165
25166
.....
25663
25664
25665
25666
25667
25668
25669
25670
25671
25672
25673
25674
25675
25676
25677
.....
29139
29140
29141
29142
29143
29144
29145
29146
29147
29148
29149
29150
29151
29152
29153
29154
29155
29156
29157
29158
29159
29160

    ( … )
        <<- ->> […]                 && Pour indiquer une troncature de texte, on utilise usuellement des crochets.
        <<- ~>> *

    (  [re|ré]  )  *WORD
    [  [re|ré]  ]  *WORD
        <<- space(<1, 1) and space(\3, 0, 0) ~1:3>>  *

    [  *NUM  ]
    [  …  ]
        <<- ~>> *

    [  *WORD  ]
        <<- space(<1, 1, 3) and space(\-1, 1, 3) >>>
        <<- morph(\2, ":G") ~>> |\2|
        <<- __else__ ~>> *

    ## chapitres, références
    (  [*WORD|*NUM]  ,  *NUM  )
    [  [*WORD|*NUM]  ,  *NUM  ]
    {  [*WORD|*NUM]  ,  *NUM  }
        <<- ~>> *

TEST: ce chien […] ne {{semblez}} pas en forme.
TEST: ce chat {{(…)}} ne {{ressemblez}} pas aux autres.
TEST: un homme [las] {{devaient}} retrouver la joie de vivre
TEST: Allons (re)voir ce film
TEST: et ce malgré [une] condamnation pénale.



!!
!!
!!!! Virgules                                                                                     !!
!!
!!
................................................................................
        <<- /conf/ morph(<1, "<start>|:C|>,/")
        --1>> m’a                                   && Confusion : “ma” est un déterminant possessif féminin. Pour le verbe “avoir” à la 3ᵉ personne précédé du pronom “me”, écrivez “m’a”.

    [ne|n’]  [ma|mas]
        <<- /conf/ --1>> m’a                        && Confusion : “ma” est un déterminant possessif féminin. Pour le verbe “avoir” à la 3ᵉ personne précédé du pronom “me”, écrivez “m’a”.

    ça  [ma|mas]  *WORD
        <<- /conf/ morph(<1, "<start>|:C|>,/") and morph0(\-1, ":(?:Q|V1.*:Y)", ":N.*:[fe]")
        -2>> m’a                                    && Confusion : “ma” est un déterminant possessif féminin. Pour le verbe “avoir” à la 3ᵉ personne précédé du pronom “me”, écrivez “m’a”.

    qui ma  *WORD
        <<- /conf/ morph0(\-1, ":(?:Q|V1.*:Y)", ":N.*:[fe]")
        -2>> m’a                                    && Confusion : “ma” est un déterminant possessif féminin. Pour le verbe “avoir” à la 3ᵉ personne précédé du pronom “me”, écrivez “m’a”.

    ma  @:(?:Q.*:e:i|V1.*:Y)¬:f:s
        <<- /conf/ -1>> m’a                         && Confusion probable : “ma” est un déterminant possessif féminin. Pour le verbe “avoir” à la 3ᵉ personne précédé du pronom “me”, écrivez “m’a”.

TEST: tu {{ma}} prise par surprise                          ->> m’as
TEST: il {{ma}} tuée                                        ->> m’a
................................................................................

__infi_de_bon_ton_de__
    [>être|>rester|>demeurer|>paraître|>paraitre|>sembler] ?[pas|plus|jamais|guère]¿ ?*WORD¿ de bon ton [de|d’] ?[ne|n’|le|la|l’|les|en|me|m’|te|t’|se|s’|nous|vous|lui|leur|y]¿      ~(?:é?es?|ez|ai[ts]?)$
    [>être|>rester|>demeurer|>paraître|>paraitre|>sembler] ?[pas|plus|jamais|guère]¿ ?*WORD¿ de bon ton [de|d’] ?[ne|n’]¿   [le|la|l’|les|en|me|m’|te|t’|se|s’|nous|vous|lui|leur|y]  ~(?:é?es?|ez|ai[ts]?)$
    [>être|>rester|>demeurer|>paraître|>paraitre|>sembler] ?[pas|plus|jamais|guère]¿ ?*WORD¿ de bon ton [de|d’] ?[ne|n’]¿   [me|m’|te|t’|se|s’|nous|vous]   [le|la|l’|les|en|y]       ~(?:é?es?|ez|ai[ts]?)$
    [>être|>rester|>demeurer|>paraître|>paraitre|>sembler] ?[pas|plus|jamais|guère]¿ ?*WORD¿ de bon ton [de|d’] ?[ne|n’]¿   [le|la|l’|les]                  [lui|leur|en|y]           ~(?:é?es?|ez|ai[ts]?)$
    [>être|>rester|>demeurer|>paraître|>paraitre|>sembler] ?[pas|plus|jamais|guère]¿ ?*WORD¿ de bon ton [de|d’] ?[ne|n’]¿   [lui|leur|y]                    en                        ~(?:é?es?|ez|ai[ts]?)$
        <<- /infi/ morph0(\-1, ":V") --1>> =suggVerbInfi(\-1)                                       && Incohérence. Après “de bon ton de [faire quelque chose]”, le verbe doit être à l’infinitif.

TEST: il est souvent de bon ton de {{pensée}} calmement à ces choses avant de s’engager tête baissée.


__imp_ne_infinitif_negadv!3__
    [<start>|,|(]  [ne|n’]  @:V1.*:Y  [pas|plus|jamais]
        <<- /imp/ -3>> =suggVerbTense(\3, ":E", ":2p")                                              && Confusion probable : “\3” est un verbe à l’infinitif. Si vous vouliez utiliser l’impératif, écrivez :
................................................................................
TEST: cette fosse {{sceptique}} est pleine.
TEST: Je suis {{septique}} !


## se / ce
__conf_ce_se_nom__
    [de|par|pour|sans]  se  *WORD
        <<- /conf/ morph0(\3, ":N.*:[me]:[si]", ":Y") -2>> ce                   && Confusion probable. Si “\-1” est bien un nom ou un adjectif, alors écrivez “ce”.

    <start>  se  *WORD  [ne|n’|me|m’|te|t’|se|s’]
    <start>  se  *WORD  [le|la|l’|les|en|nous|vous|lui|leur|y]  @:(?:[123][sp]|P)¬:G
    <start>  se  *WORD  [nous|vous]     [le|la|l’|les|en|y]     @:(?:[123][sp]|P)
    <start>  se  *WORD  [le|la|l’|les]  [lui|leur|en|y]         @:(?:[123][sp]|P)
    <start>  se  *WORD  [lui|leur|y]    en                      @:(?:[123][sp]|P)
    <start>  se  *WORD  @:(?:[123][sp]|P)¬:G
        <<- /conf/ morph0(\3, ":[NA]", ":Y") -2>> ce                            && Confusion probable. Si “\3” est bien un nom ou un adjectif, alors écrivez “ce”.

TEST: que sais-tu de {{se}} {{type}}
TEST: {{se}} type nous emmerde.                                         ->> ce
TEST: se doit d’être fort, ce con, sinon c’est la fin pour lui.


## soit / soie / soi
................................................................................
__infi_loc_à_verbe__
    >avoir ?un¿ intérêt à   ?[le|l’|la|leur|les|nous|vous|lui]¿     ~..(?:ée?s?|ez|ai[st]?)$
    >avoir tendance à       ?[le|l’|la|leur|les|nous|vous|lui]¿     ~..(?:ée?s?|ez|ai[st]?)$
    >avoir du mal à         ?[le|l’|la|leur|les|nous|vous|lui]¿     ~..(?:ée?s?|ez|ai[st]?)$
    n’ >avoir qu’ à         ?[le|l’|la|leur|les|nous|vous|lui]¿     ~..(?:ée?s?|ez|ai[st]?)$
    de [façon|manière] à    ?[le|l’|la|leur|les|nous|vous|lui]¿     ~..(?:ée?s?|ez|ai[st]?)$
    enclin à                ?[le|l’|la|leur|les|nous|vous|lui]¿     ~..(?:ée?s?|ez|ai[st]?)$
        <<- /infi/ morph0(\-1, ":V", ":M") and not (\-1.endswith("ez") and value(>1, "|vous|"))
        --1>> =suggVerbInfi(\-1)                                                                    && S’il s’agit d’une action à accomplir, le verbe devrait être à l’infinitif.

TEST: de manière à {{obligé}} ces gens
TEST: ils ont intérêt à {{obligés}} ces gens
TEST: Tous ceux qui ont du mal à {{obligé}} ces gens
TEST: elles n’ont qu’à la {{brimée}} un peu plus

................................................................................
    [par|pour|sans]  [lui]        en                          ~..(?:ée?s?|ez|ai[st]?)$
        <<- /infi/ morph(\-1, ":V1.*:(?:Q|[12][sp])", ":N") --1>> =suggVerbInfi(\-1)                && Après la préposition “\1”, le verbe devrait probablement être à l’infinitif.

    [par|pour|sans]  [nous|vous|lui]  ~(?:ée?s?|ez)$
        <<- /infi/ morph(\3, ":V1", ":M") -3>> =suggVerbInfi(\3)                                    && Après la préposition “\1”, le verbe devrait probablement être à l’infinitif.

    [par|sans]  ~..(?:ée?s?|ez|ai[st]?)$
        <<- /infi/ morph0(\-1, ":V1.*:(?:Q|[123][sp])", ":[NM]") --1>> =suggVerbInfi(\-1)           && Après la préposition “\1”, le verbe devrait être à l’infinitif.

    pour  ~..(?:ée?s?|ez|ai[st]?)$
        <<- /infi/ not morph(<1, ">(?:passer|tenir)/") and morph0(\-1, ":V1.*:(?:Q|[123][sp])", ":[NM]")
        --1>> =suggVerbInfi(\-1)                                                                    && Après la préposition “\1”, le verbe devrait être à l’infinitif.

    sans pour autant ?[le|la|l’|les|en|me|m’|te|t’|se|s’|nous|vous|lui|leur|y]¿  ~..(?:ée?s?|ez|ai[st]?)$
    sans pour autant [me|m’|te|t’|se|s’|nous|vous]   [le|la|l’|les|en|y]         ~..(?:ée?s?|ez|ai[st]?)$
    sans pour autant [le|la|l’|les]                  [lui|leur|en|y]             ~..(?:ée?s?|ez|ai[st]?)$
    sans pour autant [lui|leur|y]                    en                          ~..(?:ée?s?|ez|ai[st]?)$
        <<- /infi/ morph(\-1, ":V1.*:(?:Q|[123][sp])") --1>> =suggVerbInfi(\-1)                     && Après la préposition “\1”, le verbe devrait être à l’infinitif.|https://fr.wiktionary.org/wiki/sans_pour_autant
................................................................................
TEST: une de perdue, dix de retrouvées
TEST: 25 € de gagnés


__infi_verbe_de_verbe__
    [>accuser|>arrêter|>cesser|>choisir|>commander|>continuer|>craindre|>décider|>défendre|>demander|>envisager|>essayer|>éviter|>exiger|>interdire|>jurer|>omettre|>oublier|>permettre|>prévoir|>promettre|>refuser|>suggérer|>tenter]
        || [de|d’]  ?[le|l’|la|leur|les|nous|vous|lui]¿  *WORD
        <<- /infi/ not morph(\1, ":N") and (morph0(\-1, ":V1.*:Q", ":(?:M|Oo)") or morph0(\-1, ":[123][sp]", ":[MNGA]"))
        --1>> =suggVerbInfi(\-1)                                                                    && Après “\1 de”, le verbe devrait être à l’infinitif.

TEST: cessez d’{{anesthésié}} ces gens !
TEST: arrête d’y {{consacré}} autant de temps.
TEST: Il tentait de {{raisonné}} en homme libre
TEST: Le menu Format contient de nombreuses commandes de mise en forme.
TEST: Le commandant de zone…
................................................................................
TEST: il suffit de cela.


__infi_qqch_de__
    afin                                        [de|d’]  ?[le|l’|la|leur|les|nous|vous|lui]¿  ~..ée?s?$
    avant ?même¿                                [de|d’]  ?[le|l’|la|leur|les|nous|vous|lui]¿  ~..ée?s?$
    marre                                       [de|d’]  ?[le|l’|la|leur|les|nous|vous|lui]¿  ~..ée?s?$
        <<- /infi/ morph0(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                 && Après “\1 de”, le verbe devrait être à l’infinitif.

    à [condition|défaut|dessein|fin|force|même] [de|d’]  ?[le|l’|la|leur|les|nous|vous|lui]¿  ~..ée?s?$
        <<- /infi/ morph0(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                 && Après “à \2 de”, le verbe devrait être à l’infinitif.

    à deux doigts                               [de|d’]  ?[le|l’|la|leur|les|nous|vous|lui]¿  ~..ée?s?$
        <<- /infi/ morph0(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                 && Après “à deux doigts de”, le verbe devrait être à l’infinitif.

    à >seul >fin                                [de|d’]  ?[le|l’|la|leur|les|nous|vous|lui]¿  ~..ée?s?$
        <<- /infi/ morph0(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                 && Après “à seule fin de”, le verbe devrait être à l’infinitif.

    au␣lieu                                     [de|d’]  ?[le|les|nous|vous|lui]¿  ~..ée?s?$
        <<- /infi/ morph0(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                 && Après “au lieu de”, le verbe devrait être à l’infinitif.

    au␣lieu                                     [de|d’]  [l’|la|leur]              ~..ée?s?$
        <<- /infi/ morph0(\-1, ":Q", ":[MN]") --1>> =suggVerbInfi(\-1)                              && Après “au lieu de”, le verbe devrait être à l’infinitif.

    >avoir l’ air                               [de|d’]  ?[le|l’|la|leur|les|nous|vous|lui]¿  ~..ée?s?$
        <<- /infi/ morph0(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                 && Après “avoir l’air de”, le verbe devrait être à l’infinitif.

    >avoir la chance                            [de|d’]  ?[le|l’|la|leur|les|nous|vous|lui]¿  ~..ée?s?$
        <<- /infi/ morph0(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                 && Après “avoir la chance de”, le verbe devrait être à l’infinitif.

    >avoir le droit                             [de|d’]  ?[le|l’|la|leur|les|nous|vous|lui]¿  ~..ée?s?$
        <<- /infi/ morph0(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                 && Après “avoir le droit de”, le verbe devrait être à l’infinitif.

    >avoir ?toute¿ hâte                         [de|d’]  ?[le|l’|la|leur|les|nous|vous|lui]¿  ~..ée?s?$
        <<- /infi/ morph0(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                 && Après “avoir hâte de”, le verbe devrait être à l’infinitif.

    >avoir ?tout¿ lieu                          [de|d’]  ?[le|l’|la|leur|les|nous|vous|lui]¿  ~..ée?s?$
        <<- /infi/ morph0(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                 && Après “avoir lieu de”, le verbe devrait être à l’infinitif.

    >avoir ?tout¿ loisir                        [de|d’]  ?[le|l’|la|leur|les|nous|vous|lui]¿  ~..ée?s?$
        <<- /infi/ morph0(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                 && Après “avoir loisir de”, le verbe devrait être à l’infinitif.

    >avoir tôt fait                             [de|d’]  ?[le|l’|la|leur|les|nous|vous|lui]¿  ~..ée?s?$
        <<- /infi/ morph0(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                 && Après “avoir tôt fait de”, le verbe devrait être à l’infinitif.|https://fr.wiktionary.org/wiki/avoir_t%C3%B4t_fait_de

    >avoir besoin                               [de|d’]  [le|les|nous|vous|lui]    ~..ée?s?$
        <<- /infi/ morph0(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                 && Après “avoir besoin de”, le verbe devrait être à l’infinitif.

    >avoir besoin                               [de|d’]  ?[l’|la|leur]¿            ~..ée?s?$
        <<- /infi/ morph0(\-1, ":Q", ":[MN]") --1>> =suggVerbInfi(\-1)                              && Après “avoir besoin de”, le verbe devrait être à l’infinitif.

    >avoir d’ >autre choix [que|qu’]            ?[de|d’]¿  ?[le|l’|la|leur|les|nous|vous|lui]¿  ~..ée?s?$
        <<- /infi/ morph0(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                 && Après “avoir d’autre choix que”, le verbe devrait être à l’infinitif.

    >avoir la présence d’ esprit                [de|d’]  ?[le|l’|la|leur|les|nous|vous|lui]¿  ~..ée?s?$
        <<- /infi/ morph0(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                 && Après “avoir vite fait de”, le verbe devrait être à l’infinitif.

    >avoir [peur|raison]                        [de|d’]  ?[le|les|nous|vous|lui]¿  ~..ée?s?$
        <<- /infi/ morph0(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                 && Après “avoir \2 de”, le verbe devrait être à l’infinitif.

    >avoir [peur|raison]                        [de|d’]  [l’|la|leur]              ~..ée?s?$
        <<- /infi/ morph0(\-1, ":Q", ":[MN]") --1>> =suggVerbInfi(\-1)                              && Après “avoir \2 de”, le verbe devrait être à l’infinitif.

    point [ne|n’] >être besoin                  [de|d’]  ?[le|les|nous|vous|lui]¿  ~..ée?s?$
        <<- /infi/ morph0(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                 && Après “point n’est besoin de”, le verbe devrait être à l’infinitif.

    point [ne|n’] >être besoin                  [de|d’]  [l’|la|leur]              ~..ée?s?$
        <<- /infi/ morph0(\-1, ":Q", ":[MN]") --1>> =suggVerbInfi(\-1)                              && Après “point n’est besoin de”, le verbe devrait être à l’infinitif.

    >avoir vite fait                            [de|d’]  ?[le|l’|la|leur|les|nous|vous|lui]¿  ~..ée?s?$
        <<- /infi/ morph0(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                 && Après “avoir vite fait de”, le verbe devrait être à l’infinitif.

    n’ >avoir de cesse                          [de|d’]  ?[le|l’|la|leur|les|nous|vous|lui]¿  ~..ée?s?$
        <<- /infi/ morph0(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                 && Après “n’avoir de cesse de”, le verbe devrait être à l’infinitif.|https://fr.wiktionary.org/wiki/n%E2%80%99avoir_de_cesse

    [de|d’]  crainte                            [de|d’]  ?[le|les|nous|vous|lui]¿  ~..ée?s?$
        <<- /infi/ morph0(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                 && Après “de crainte de”, le verbe devrait être à l’infinitif.

    [de|d’]  crainte                            [de|d’]  [l’|la|leur]              ~..ée?s?$
        <<- /infi/ morph0(\-1, ":Q", ":[MN]") --1>> =suggVerbInfi(\-1)                              && Après “de crainte de”, le verbe devrait être à l’infinitif.

    en  [droit|état|mesure|train|vue]           [de|d’]  ?[le|l’|la|leur|les|nous|vous|lui]¿  ~..ée?s?$
        <<- /infi/ morph0(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                 && Après “\1 \2 de”, le verbe devrait être à l’infinitif.

    >faire  [exprès|semblant|mine]              [de|d’]  ?[le|l’|la|leur|les|nous|vous|lui]¿  ~..ée?s?$
        <<- /infi/ morph0(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                 && Après “faire \2 de”, le verbe devrait être à l’infinitif.

    >faire  fort                                [de|d’]  ?[le|l’|la|leur|les|nous|vous|lui]¿  ~..ée?s?$
        <<- /infi/ morph0(\-1, ":Q", ":M") and (value(<1, "|me|m’|te|t’|se|s’|") or (value(<1, "|nous|") and value(<2, "|nous|")) or (value(<1, "|vous|") and value(<2, "|vous|")))
        --1>> =suggVerbInfi(\-1)                                                                     && Après “se faire fort de”, le verbe devrait être à l’infinitif.

    [>façon|>manière]                           [de|d’]  ?[le|l’|la|leur|les|nous|vous|lui]¿  ~..ée?s?$
    [>intention|>volonté]                       [de|d’]  ?[le|l’|la|leur|les|nous|vous|lui]¿  ~..ée?s?$
        <<- /infi/ morph0(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                 && Après “\1 de”, le verbe devrait être à l’infinitif s’il s’agit bien de décrire une action.

    hors d’ état                                [de|d’]  ?[le|l’|la|leur|les|nous|vous|lui]¿  ~..ée?s?$
        <<- /infi/ morph0(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                 && Après “hors d’état de”, le verbe devrait être à l’infinitif.

    hors de question                            [de|d’]  ?[le|l’|la|leur|les|nous|vous|lui]¿  ~..ée?s?$
        <<- /infi/ morph0(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                 && Après “hors de question de”, le verbe devrait être à l’infinitif.

    il >être [temps|admissible|inadmissible|absurde|contraignant|libérateur|difficile|facile|impossible|indispensable|nécessaire|possible|utile|inutile]
        || [de|d’]  ?[le|l’|la|leur|les|nous|vous|lui]¿  ~..ée?s?$
        <<- /infi/ morph0(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                 && Après “il est \3 de”, le verbe devrait être à l’infinitif.

    il ?n’¿ >être question                      [de|d’]  ?[le|les|nous|vous|lui]¿  ~..ée?s?$
        <<- /infi/ morph0(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                 && Après “il (n’)est (pas) question de”, le verbe devrait être à l’infinitif.

    il ?n’¿ >être question                      [de|d’]  [l’|la|leur]              ~..ée?s?$
        <<- /infi/ morph0(\-1, ":Q", ":[MN]") --1>> =suggVerbInfi(\-1)                              && Après “il (n’)est (pas) question de”, le verbe devrait être à l’infinitif.

    pas question                                [de|d’]  ?[le|l’|la|leur|les|nous|vous|lui]¿  ~..ée?s?$
        <<- /infi/ morph0(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                 && Après “pas question de”, le verbe devrait être à l’infinitif.

    [<start>|,|(] [>capable|>incapable|impossible|inutile|>libre]  [de|d’]  ?[le|l’|la|leur|les|nous|vous|lui]¿  ~..ée?s?$
        <<- /infi/ morph0(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                 && Après “\2 de”, le verbe devrait être à l’infinitif.

    [<start>|,|(] >libre  à [moi|toi|lui|elle|soi|nous|vous|eux|elles]  [de|d’]  ?[le|l’|la|leur|les|nous|vous|lui]¿  ~..ée?s?$
        <<- /infi/ morph0(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                 && Après “\2 de”, le verbe devrait être à l’infinitif.

    force [est|était|fut|serait|sera]           [de|d’]  ?[le|l’|la|leur|les|nous|vous|lui]¿  ~..ée?s?$
        <<- /infi/ not value(<1, "|une|la|cette|ma|ta|sa|notre|votre|leur|quelle|de|d’|") and morph0(\-1, ":Q", ":M")
        --1>> =suggVerbInfi(\-1)                                                                    && Après “force est de”, le verbe devrait être à l’infinitif.

    non >content                                [de|d’]  ?[le|les|nous|vous|lui]¿  ~..ée?s?$
        <<- /infi/ morph0(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                 && Après “non content de”, le verbe devrait être à l’infinitif.

    non >content                                [de|d’]  [l’|la|leur]              ~..ée?s?$
        <<- /infi/ morph0(\-1, ":Q", ":[MN]") --1>> =suggVerbInfi(\-1)                              && Après “non content de”, le verbe devrait être à l’infinitif.

    >prendre garde                              [de|d’]  ?[le|l’|la|leur|les|nous|vous|lui]¿  ~..ée?s?$
        <<- /infi/ morph0(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                 && Après “prendre garde de”, le verbe devrait être à l’infinitif.

    sous peine                                  [de|d’]  ?[le|l’|la|leur|les|nous|vous|lui]¿  ~..ée?s?$
        <<- /infi/ morph0(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                 && Après “sous peine de”, le verbe devrait être à l’infinitif.

TEST: à deux doigts de la {{dénoncée}} aux autorités                                                ->> dénoncer
TEST: afin de leur {{percée}} une ouverture                                                         ->> percer
TEST: en train de {{percées}}                                                                       ->> percer
TEST: au lieu de la {{travaillée}}, elle restait les bras ballants                                  ->> travailler
TEST: au lieu de nous {{données}} du travail, il bavassait sans cesse                               ->> donner
TEST: elle tricha à seule fin d’{{allée}} à l’université                                            ->> aller
................................................................................

__infi_mieux_valoir__
    mieux  ?[ne|n’]¿  >valoir  ?[ne|n’|le|la|l’|les|en|me|m’|te|t’|se|s’|nous|vous|lui|leur|y]¿      ~..(?:ée?s?|ez|ai[ts]?)$
    mieux  ?[ne|n’]¿  >valoir  ?[ne|n’]¿   [le|la|l’|les|en|me|m’|te|t’|se|s’|nous|vous|lui|leur|y]  ~..(?:ée?s?|ez|ai[ts]?)$
    mieux  ?[ne|n’]¿  >valoir  ?[ne|n’]¿   [me|m’|te|t’|se|s’|nous|vous]   [le|la|l’|les|en|y]       ~..(?:ée?s?|ez|ai[ts]?)$
    mieux  ?[ne|n’]¿  >valoir  ?[ne|n’]¿   [le|la|l’|les]                  [lui|leur|en|y]           ~..(?:ée?s?|ez|ai[ts]?)$
    mieux  ?[ne|n’]¿  >valoir  ?[ne|n’]¿   [lui|leur|y]                    en                        ~..(?:ée?s?|ez|ai[ts]?)$
        <<- /infi/ morph0(\-1, ":V1.*:(?:Q|[123][sp])", ":[GM]")
        --1>> =suggVerbInfi(\-1)                                                                    && Après “mieux vaut…”, le verbe devrait être à l’infinitif.

TEST: Mieux vaut {{consacré}} son temps à des occupations utiles.
TEST: Mieux ne vaut pas {{arrivé}} en retard.
TEST: il eût mieux valu {{oublié}} cette affaire plutôt que réveiller ce dragon endormi.


................................................................................
    <start>  [ne|n’]  ?[le|la|l’|les|en|me|m’|te|t’|nous|vous|lui|leur|y]¿  ~\w\w+t$
    <start>  [ne|n’]  [me|m’|te|t’|nous|vous]  [le|la|l’|les|en|y]          ~\w\w+t$
    <start>  [ne|n’]  [le|la|l’|les]           [lui|leur|en|y]              ~\w\w+t$
    <start>  [ne|n’]  [lui|leur]               en                           ~\w\w+t$
        <<- /imp/ not value(>1, "|il|elle|on|ils|elles|iel|iels|")
            and not value(\-1, "|provient|")
            and not (value(\-1, "|vient|dit|surgit|survient|périt|") and morph(>1, ":(?:[MD]|Oo)|>[A-Z]/"))
            and morph(\-1, ":V[23].*:Ip.*:3s", ":G|>(?:devoir|suffire|para[îi]tre)/") and analyse(\-1[:-1]+"s", ":E:2s")
        --1>> =\-1[:-1]+"s"                                                         && S’il s’agit d’un impératif, la terminaison est “s”, non “t”.

    <start>  ~\w\w+t$
        <<- /imp/ not value(>1, "|il|elle|on|ils|elles|iel|iels|")
            and not value(\-1, "|provient|")
            and not (value(\-1, "|vient|dit|surgit|survient|périt|") and morph(>1, ":(?:[MDR]|Oo)|>[A-Z]/"))
            and morph(\-1, ":V[23].*:Ip.*:3s", ":[GNA]|>(?:devoir|suffire|para[îi]tre)/") and analyse(\-1[:-1]+"s", ":E:2s")
        --1>> =\-1[:-1]+"s"                                                         && S’il s’agit d’un impératif, la terminaison est “s”, non “t”.

TEST: {{Finit}} ton assiette.                                           ->> Finis
TEST: Ne {{pourrit}} pas l’ambiance.                                    ->> pourris
TEST: Ne {{finit}} pas ce devoir.
TEST: {{Finit}} cette tarte.
TEST: Ne me {{choisit}} pas.

Modified misc/grammalecte.sublime-syntax from [9d23c91bd9] to [575daf5fb0].

56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
    # other.
    - match: '\b(?:if|else|and|or|not|in)\b'
      scope: keyword.python

    - match: '\b(?:True|False|None)\b'
      scope: constant.language

    - match: '\b(?:spell|morph(?:VC|)|stem|tag|value|space|textarea0?\w*|before0?\w*|after0?\w*|word|option|define(?:from|)|select|exclude|setmeta|analyse\w*|tag(?:after|before)|apposition|is[A-Z]\w+|agreement|rewrite|checkD\w+|getD\w+|has[A-Z]\w+|sugg[A-Z]\w+|switch[A-Z]\w+|ceOrCet|formatN\w+|mbUnit)\b'
      scope: entity.name.function

    - match: '\b(?:replace|endswith|startswith|search|upper|lower|capitalize|strip|rstrip|is(?:alpha|upper|lower|digit|title))\b'
      scope: support.function

    - match: '\becho\b'
      scope: support.function.debug







|







56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
    # other.
    - match: '\b(?:if|else|and|or|not|in)\b'
      scope: keyword.python

    - match: '\b(?:True|False|None)\b'
      scope: constant.language

    - match: '\b(?:spell|morph(?:VC|)|stem|tag|value|space|textarea0?\w*|before0?\w*|after0?\w*|word|option|define(?:from|)|select|exclude|setmeta|analyse|tag(?:after|before)|apposition|is[A-Z]\w+|agreement|rewrite|checkD\w+|getD\w+|has[A-Z]\w+|sugg[A-Z]\w+|switch[A-Z]\w+|ceOrCet|formatN\w+|mbUnit)\b'
      scope: entity.name.function

    - match: '\b(?:replace|endswith|startswith|search|upper|lower|capitalize|strip|rstrip|is(?:alpha|upper|lower|digit|title))\b'
      scope: support.function

    - match: '\becho\b'
      scope: support.function.debug