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: trunk, fr, core, build
07:12
[build][core][fr][doc] rename functions check-in: b316995bfc user: olr tags: trunk, fr, core, build, doc
2020-11-25
22:59
[build][core][fr][doc] rename functions check-in: b695f86d1e user: olr tags: trunk, fr, core, build, doc
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
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(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(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(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"\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"\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

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
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])`
`morph0(n, "regex"[, "neg_regex"][, trim_left=0][, trim_right=0])`

>   Same action with `morph()` and `morph0()` for regex rules.
>   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
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) {
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
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):
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
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







-
+





-
-
-
-
+
+
+
+









+


+








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

    (  [re|ré]  )  *WORD
    [  [re|ré]  ]  *WORD
        <<- space(\3, 0, 0) ~1:3>>  *
        <<- space(<1, 1) and 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>> *
    [  *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                                                                                     !!
!!
!!
10944
10945
10946
10947
10948
10949
10950
10951

10952
10953
10954
10955

10956
10957
10958
10959
10960
10961
10962
10946
10947
10948
10949
10950
10951
10952

10953
10954
10955
10956

10957
10958
10959
10960
10961
10962
10963
10964







-
+



-
+







        <<- /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]")
        <<- /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/ analyse(\-1, ":(?:Q|V1.*:Y)", ":N.*:[fe]")
        <<- /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
14071
14072
14073
14074
14075
14076
14077
14078

14079
14080
14081
14082
14083
14084
14085
14073
14074
14075
14076
14077
14078
14079

14080
14081
14082
14083
14084
14085
14086
14087







-
+








__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.
        <<- /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 :
21694
21695
21696
21697
21698
21699
21700
21701

21702
21703
21704
21705
21706
21707
21708
21709

21710
21711
21712
21713
21714
21715
21716
21696
21697
21698
21699
21700
21701
21702

21703
21704
21705
21706
21707
21708
21709
21710

21711
21712
21713
21714
21715
21716
21717
21718







-
+







-
+







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”.
        <<- /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/ analyse(\3, ":[NA]", ":Y") -2>> ce                           && Confusion probable. Si “\3” est bien un nom ou un adjectif, alors écrivez “ce”.
        <<- /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
24844
24845
24846
24847
24848
24849
24850
24851

24852
24853
24854
24855
24856
24857
24858
24846
24847
24848
24849
24850
24851
24852

24853
24854
24855
24856
24857
24858
24859
24860







-
+







__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|"))
        <<- /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

24873
24874
24875
24876
24877
24878
24879
24880

24881
24882
24883

24884
24885
24886
24887
24888
24889
24890
24875
24876
24877
24878
24879
24880
24881

24882
24883
24884

24885
24886
24887
24888
24889
24890
24891
24892







-
+


-
+







    [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.
        <<- /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 analyse(\-1, ":V1.*:(?:Q|[123][sp])", ":[NM]")
        <<- /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
24993
24994
24995
24996
24997
24998
24999
25000

25001
25002
25003
25004
25005
25006
25007
24995
24996
24997
24998
24999
25000
25001

25002
25003
25004
25005
25006
25007
25008
25009







-
+







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]"))
        <<- /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…
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
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







-
+


-
+


-
+


-
+


-
+


-
+


-
+


-
+


-
+


-
+


-
+


-
+


-
+


-
+


-
+


-
+


-
+


-
+


-
+


-
+


-
+


-
+


-
+


-
+


-
+


-
+


-
+


-
-
+
+



-
+


-
+


-
+



-
+


-
+


-
+


-
+


-
+


-
+


-
+



-
+


-
+


-
+


-
+







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.
        <<- /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/ analyse(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                && Après “à \2 de”, le verbe devrait être à l’infinitif.
        <<- /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/ analyse(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                && Après “à deux doigts de”, le verbe devrait être à l’infinitif.
        <<- /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/ analyse(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                && Après “à seule fin de”, le verbe devrait être à l’infinitif.
        <<- /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/ analyse(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                && Après “au lieu de”, le verbe devrait être à l’infinitif.
        <<- /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/ analyse(\-1, ":Q", ":[MN]") --1>> =suggVerbInfi(\-1)                             && Après “au lieu de”, le verbe devrait être à l’infinitif.
        <<- /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/ analyse(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                && Après “avoir l’air de”, le verbe devrait être à l’infinitif.
        <<- /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/ analyse(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                && Après “avoir la chance de”, le verbe devrait être à l’infinitif.
        <<- /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/ analyse(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                && Après “avoir le droit de”, le verbe devrait être à l’infinitif.
        <<- /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/ analyse(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                && Après “avoir hâte de”, le verbe devrait être à l’infinitif.
        <<- /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/ analyse(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                && Après “avoir lieu de”, le verbe devrait être à l’infinitif.
        <<- /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/ analyse(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                && Après “avoir loisir de”, le verbe devrait être à l’infinitif.
        <<- /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/ 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
        <<- /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/ analyse(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                && Après “avoir besoin de”, le verbe devrait être à l’infinitif.
        <<- /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/ analyse(\-1, ":Q", ":[MN]") --1>> =suggVerbInfi(\-1)                             && Après “avoir besoin de”, le verbe devrait être à l’infinitif.
        <<- /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/ analyse(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                && Après “avoir d’autre choix que”, le verbe devrait être à l’infinitif.
        <<- /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/ analyse(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                && Après “avoir vite fait de”, le verbe devrait être à l’infinitif.
        <<- /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/ analyse(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                && Après “avoir \2 de”, le verbe devrait être à l’infinitif.
        <<- /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/ analyse(\-1, ":Q", ":[MN]") --1>> =suggVerbInfi(\-1)                             && Après “avoir \2 de”, le verbe devrait être à l’infinitif.
        <<- /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/ analyse(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                && Après “point n’est besoin de”, le verbe devrait être à l’infinitif.
        <<- /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/ analyse(\-1, ":Q", ":[MN]") --1>> =suggVerbInfi(\-1)                             && Après “point n’est besoin de”, le verbe devrait être à l’infinitif.
        <<- /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/ analyse(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                && Après “avoir vite fait de”, le verbe devrait être à l’infinitif.
        <<- /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/ 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
        <<- /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/ analyse(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                && Après “de crainte de”, le verbe devrait être à l’infinitif.
        <<- /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/ analyse(\-1, ":Q", ":[MN]") --1>> =suggVerbInfi(\-1)                             && Après “de crainte de”, le verbe devrait être à l’infinitif.
        <<- /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/ analyse(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                && Après “\1 \2 de”, le verbe devrait être à l’infinitif.
        <<- /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/ analyse(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                && Après “faire \2 de”, le verbe devrait être à l’infinitif.
        <<- /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/ 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.
        <<- /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/ 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.
        <<- /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/ analyse(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                && Après “hors d’état de”, le verbe devrait être à l’infinitif.
        <<- /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/ analyse(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                && Après “hors de question de”, le verbe devrait être à l’infinitif.
        <<- /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/ analyse(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                && Après “il est \3 de”, le verbe devrait être à l’infinitif.
        <<- /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/ analyse(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                && Après “il (n’)est (pas) question de”, le verbe devrait être à l’infinitif.
        <<- /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/ analyse(\-1, ":Q", ":[MN]") --1>> =suggVerbInfi(\-1)                             && Après “il (n’)est (pas) question de”, le verbe devrait être à l’infinitif.
        <<- /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/ analyse(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                && Après “pas question de”, le verbe devrait être à l’infinitif.
        <<- /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/ analyse(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                && Après “\2 de”, le verbe devrait être à l’infinitif.
        <<- /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/ analyse(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                && Après “\2 de”, le verbe devrait être à l’infinitif.
        <<- /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 analyse(\-1, ":Q", ":M")
        <<- /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/ analyse(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                && Après “non content de”, le verbe devrait être à l’infinitif.
        <<- /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/ analyse(\-1, ":Q", ":[MN]") --1>> =suggVerbInfi(\-1)                             && Après “non content de”, le verbe devrait être à l’infinitif.
        <<- /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/ analyse(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                && Après “prendre garde de”, le verbe devrait être à l’infinitif.
        <<- /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/ analyse(\-1, ":Q", ":M") --1>> =suggVerbInfi(\-1)                                && Après “sous peine de”, le verbe devrait être à l’infinitif.
        <<- /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
25661
25662
25663
25664
25665
25666
25667
25668

25669
25670
25671
25672
25673
25674
25675
25663
25664
25665
25666
25667
25668
25669

25670
25671
25672
25673
25674
25675
25676
25677







-
+








__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]")
        <<- /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.


29137
29138
29139
29140
29141
29142
29143
29144

29145
29146
29147
29148
29149
29150
29151

29152
29153
29154
29155
29156
29157
29158
29139
29140
29141
29142
29143
29144
29145

29146
29147
29148
29149
29150
29151
29152

29153
29154
29155
29156
29157
29158
29159
29160







-
+






-
+







    <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")
            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 analyseWord(\-1[:-1]+"s", ":E:2s")
            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
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'
    - 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