Grammalecte  Check-in [d167d2a710]

Overview
Comment:[core][fr][misc] change immunity tag (% -> !)
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk | fr | core | misc
Files: files | file ages | folders
SHA3-256: d167d2a710bc3df83154c29c4da2c69fcf38017ad86b64cdc39c03b84d2e15f4
User & Date: olr on 2019-05-14 13:27:18
Other Links: manifest | tags
Context
2019-05-14
15:19
[graphspell][js][bug] fix wrong method check-in: fbecdf6a89 user: olr tags: trunk, graphspell
13:27
[core][fr][misc] change immunity tag (% -> !) check-in: d167d2a710 user: olr tags: trunk, fr, core, misc
12:58
[graphspell][fx][js] add default suggestions module check-in: c3cdee9c76 user: olr tags: trunk, fx, graphspell
Changes

Modified compile_rules_graph.py from [0b0b0ccb6f] to [685dd97f4d].

202
203
204
205
206
207
208
209

210
211
212
213
214
215
216
202
203
204
205
206
207
208

209
210
211
212
213
214
215
216







-
+







    if m:
        sOption = m.group(1)
        sAction = sAction[m.end():].strip()
    if nPriority == -1:
        nPriority = dOptPriority.get(sOption, 4)

    # valid action?
    m = re.search(r"(?P<action>[-~=/%>])(?P<start>-?\d+\.?|)(?P<end>:\.?-?\d+|)(?P<casing>:|)>>", sAction)
    m = re.search(r"(?P<action>[-~=/!>])(?P<start>-?\d+\.?|)(?P<end>:\.?-?\d+|)(?P<casing>:|)>>", sAction)
    if not m:
        print(" # Error. No action found at: ", sActionId)
        return None

    # Condition
    sCondition = sAction[:m.start()].strip()
    if sCondition:
278
279
280
281
282
283
284
285

286
287
288
289
290
291
292
278
279
280
281
282
283
284

285
286
287
288
289
290
291
292







-
+







    # checking consistancy
    checkTokenNumbers(sAction, sActionId, nToken)

    if cAction == ">":
        ## no action, break loop if condition is False
        return [sOption, sCondition, cAction, ""]

    if not sAction and cAction != "%":
    if not sAction and cAction != "!":
        print("# Error in action at line " + sActionId + ":  This action is empty.")

    if sAction[0:1] != "=" and cAction != "=":
        checkIfThereIsCode(sAction, sActionId)

    if cAction == "-":
        ## error detected --> suggestion
300
301
302
303
304
305
306
307

308
309
310
311
312
313
314
300
301
302
303
304
305
306

307
308
309
310
311
312
313
314







-
+







    if cAction == "~":
        ## text processor
        if sAction[0:1] == "=":
            sAction = createFunction("tp", sAction, True)
        elif sAction.startswith('"') and sAction.endswith('"'):
            sAction = sAction[1:-1]
        return [sOption, sCondition, cAction, sAction, iStartAction, iEndAction, bCaseSensitivity]
    if cAction in "%/":
    if cAction in "!/":
        ## tags
        return [sOption, sCondition, cAction, sAction, iStartAction, iEndAction]
    if cAction == "=":
        ## disambiguator
        if "define(" in sAction and not re.search(r"define\(\\-?\d+ *, *\[.*\] *\)", sAction):
            print("# Error in action at line " + sActionId + ": second argument for <define> must be a list of strings")
        sAction = createFunction("da", sAction)
359
360
361
362
363
364
365
366

367
368
369
370
371
372
373
359
360
361
362
363
364
365

366
367
368
369
370
371
372
373







-
+







                    exit()
                iActionBlock = 1
                nPriority = int(m.group(2)[1:]) if m.group(2)  else -1
            else:
                print("Syntax error in rule group: ", sLine, " -- line:", i)
                exit()
        elif re.search("^    +<<- ", sLine) or (sLine.startswith("        ") and not sLine.startswith("        ||")) \
                or re.search("^    +#", sLine) or re.search(r"[-~=>/%](?:-?\d\.?(?::\.?-?\d+|)|)>> ", sLine) :
                or re.search("^    +#", sLine) or re.search(r"[-~=>/!](?:-?\d\.?(?::\.?-?\d+|)|)>> ", sLine) :
            # actions
            sActions += " " + sLine.strip()
        elif re.match("[  ]*$", sLine):
            # empty line to end merging
            if not lTokenLine:
                continue
            if not sActions:

Modified gc_core/js/lang_core/gc_engine.js from [3be7b763d3] to [5635a63c4b].

606
607
608
609
610
611
612
613

614
615
616
617
618
619
620
606
607
608
609
610
611
612

613
614
615
616
617
618
619
620







-
+







                        console.log("   >TRY: " + sRuleId + " " + sLineId);
                    }
                    let [sOption, sFuncCond, cActionType, sWhat, ...eAct] = gc_rules_graph.dRule[sRuleId];
                    // Suggestion    [ option, condition, "-", replacement/suggestion/action, iTokenStart, iTokenEnd, cStartLimit, cEndLimit, bCaseSvty, nPriority, sMessage, sURL ]
                    // TextProcessor [ option, condition, "~", replacement/suggestion/action, iTokenStart, iTokenEnd, bCaseSvty ]
                    // Disambiguator [ option, condition, "=", replacement/suggestion/action ]
                    // Tag           [ option, condition, "/", replacement/suggestion/action, iTokenStart, iTokenEnd ]
                    // Immunity      [ option, condition, "%", "",                            iTokenStart, iTokenEnd ]
                    // Immunity      [ option, condition, "!", "",                            iTokenStart, iTokenEnd ]
                    // Test          [ option, condition, ">", "" ]
                    if (!sOption || dOptions.gl_get(sOption, false)) {
                        bCondMemo = !sFuncCond || oEvalFunc[sFuncCond](this.lToken, nTokenOffset, nLastToken, sCountry, bCondMemo, this.dTags, this.sSentence, this.sSentence0);
                        if (bCondMemo) {
                            if (cActionType == "-") {
                                // grammar error
                                let [iTokenStart, iTokenEnd, cStartLimit, cEndLimit, bCaseSvty, nPriority, sMessage, sURL] = eAct;
671
672
673
674
675
676
677
678

679
680
681
682
683
684
685
671
672
673
674
675
676
677

678
679
680
681
682
683
684
685







-
+







                                }
                                if (!this.dTags.has(sWhat)) {
                                    this.dTags.set(sWhat, [nTokenStart, nTokenStart]);
                                } else {
                                    this.dTags.set(sWhat, [Math.min(nTokenStart, this.dTags.get(sWhat)[0]), Math.max(nTokenEnd, this.dTags.get(sWhat)[1])]);
                                }
                            }
                            else if (cActionType == "%") {
                            else if (cActionType == "!") {
                                // immunity
                                if (bDebug) {
                                    console.log("    IMMUNITY: " + _rules_graph.dRule[sRuleId]);
                                }
                                let nTokenStart = (eAct[0] > 0) ? nTokenOffset + eAct[0] : nLastToken + eAct[0];
                                let nTokenEnd = (eAct[1] > 0) ? nTokenOffset + eAct[1] : nLastToken + eAct[1];
                                if (nTokenEnd - nTokenStart == 0) {

Modified gc_core/py/lang_core/gc_engine.py from [cb1b186a08] to [2f0b34979e].

515
516
517
518
519
520
521
522

523
524
525
526
527
528
529
515
516
517
518
519
520
521

522
523
524
525
526
527
528
529







-
+







                    if bDebug:
                        echo("   >TRY: " + sRuleId + " " + sLineId)
                    sOption, sFuncCond, cActionType, sWhat, *eAct = _rules_graph.dRule[sRuleId]
                    # Suggestion    [ option, condition, "-", replacement/suggestion/action, iTokenStart, iTokenEnd, cStartLimit, cEndLimit, bCaseSvty, nPriority, sMessage, sURL ]
                    # TextProcessor [ option, condition, "~", replacement/suggestion/action, iTokenStart, iTokenEnd, bCaseSvty ]
                    # Disambiguator [ option, condition, "=", replacement/suggestion/action ]
                    # Tag           [ option, condition, "/", replacement/suggestion/action, iTokenStart, iTokenEnd ]
                    # Immunity      [ option, condition, "%", "",                            iTokenStart, iTokenEnd ]
                    # Immunity      [ option, condition, "!", "",                            iTokenStart, iTokenEnd ]
                    # Test          [ option, condition, ">", "" ]
                    if not sOption or dOptions.get(sOption, False):
                        bCondMemo = not sFuncCond or globals()[sFuncCond](self.lToken, nTokenOffset, nLastToken, sCountry, bCondMemo, self.dTags, self.sSentence, self.sSentence0)
                        if bCondMemo:
                            if cActionType == "-":
                                # grammar error
                                iTokenStart, iTokenEnd, cStartLimit, cEndLimit, bCaseSvty, nPriority, sMessage, sURL = eAct
567
568
569
570
571
572
573
574

575
576
577
578
579
580
581
567
568
569
570
571
572
573

574
575
576
577
578
579
580
581







-
+







                                if bDebug:
                                    echo("    TAG: {} >  [{}:{}]".format(sWhat, self.lToken[nTokenStart]["sValue"], self.lToken[nTokenEnd]["sValue"]))
                                if sWhat not in self.dTags:
                                    self.dTags[sWhat] = [nTokenStart, nTokenStart]
                                else:
                                    self.dTags[sWhat][0] = min(nTokenStart, self.dTags[sWhat][0])
                                    self.dTags[sWhat][1] = max(nTokenEnd, self.dTags[sWhat][1])
                            elif cActionType == "%":
                            elif cActionType == "!":
                                # immunity
                                if bDebug:
                                    echo("    IMMUNITY: " + _rules_graph.dRule[sRuleId])
                                nTokenStart = nTokenOffset + eAct[0]  if eAct[0] > 0  else nLastToken + eAct[0]
                                nTokenEnd = nTokenOffset + eAct[1]  if eAct[1] > 0  else nLastToken + eAct[1]
                                if nTokenEnd - nTokenStart == 0:
                                    self.lToken[nTokenStart]["bImmune"] = True

Modified gc_lang/fr/rules.grx from [b80cbf61fc] to [875f9144f8].

2100
2101
2102
2103
2104
2105
2106
2107

2108
2109
2110
2111
2112
2113
2114
2100
2101
2102
2103
2104
2105
2106

2107
2108
2109
2110
2111
2112
2113
2114







-
+







__inte_rendez_vous__
    ne [le|la|les] [lui|leur]   rendez-vous
    ne me [le|la|les]           rendez-vous
    ne [lui|leur] en            rendez-vous
    ne [le|la|les|lui|leur]     rendez-vous
    [me|ne|nous|vous|lui]       rendez-vous
        <<- =>> define(\-1, [":VCi1:2p"])
        <<- %-1>>
        <<- !-1>>


__inte_verbes_composés_impératifs__
    ~\w-l(?:es?|a)-(?:[mt]oi|nous|leur)$
    ~\w-(?:[nv]ous|lui|leur)-en$
    ~\w-[mt]’en$
    ~\w-[mt]’y$
2221
2222
2223
2224
2225
2226
2227
2228

2229
2230
2231

2232
2233
2234
2235

2236
2237
2238
2239
2240
2241

2242
2243
2244

2245
2246
2247
2248
2249
2250

2251
2252
2253

2254
2255
2256

2257
2258
2259

2260
2261
2262
2263
2264
2265
2266
2221
2222
2223
2224
2225
2226
2227

2228
2229
2230

2231
2232
2233
2234

2235
2236
2237
2238
2239
2240

2241
2242
2243

2244
2245
2246
2247
2248
2249

2250
2251
2252

2253
2254
2255

2256
2257
2258

2259
2260
2261
2262
2263
2264
2265
2266







-
+


-
+



-
+





-
+


-
+





-
+


-
+


-
+


-
+







        <<- morph(<1, ":D.*:[mp]") ~>> ␣
        <<- __also__ =>> define(\1, [":N:m:i"])


__immunités__
    il y a
    il n’ y a
        <<- %-1>>
        <<- !-1>>

    à l’ arrache
        <<- %3>>
        <<- !3>>

    à ce point
    en tout point
        <<- %3>>
        <<- !3>>

    au  [bas|bras|côté|milieu|sein|sommet|faîte] [duquel|desquels|desquelles]
    au  [bas|bras|côté|milieu|sein|sommet|faîte] de laquelle
    aux [côtés] [duquel|desquels|desquelles]
    aux [côtés] de laquelle
        <<- %3>>
        <<- !3>>

    au lieu des
        <<- %3>>
        <<- !3>>

    au sortir [de|des|du|d’]
        <<- ~2>> _

    en tout et pour tout
        <<- %-1>>
        <<- !-1>>

    jusqu’ à
        <<- %2>>
        <<- !2>>

    [comme|que|qu’|lorsque|lorsqu’|puisque|puisqu’|quand|pourquoi|qui|quoi]  ?[ne|n’]¿  ?[se|s’]¿  (*WORD)  ?à¿  [le|la|l’|les]  @:Y  @:M
        <<- morph(\1, ":V") %-2>>
        <<- morph(\1, ":V") !-2>>

    soit pour soit contre
        <<- %3>>
        <<- !3>>



@@@@
@@@@
@@@@
@@@@
4980
4981
4982
4983
4984
4985
4986
4987

4988
4989
4990
4991
4992
4993
4994
4980
4981
4982
4983
4984
4985
4986

4987
4988
4989
4990
4991
4992
4993
4994







-
+







!!
!!!! Pronoms + incohérences                                                                       !!
!!
!!

__m_enfin__
    m’ enfin
        <<- %2>>
        <<- !2>>
        <<- ~>> *


__non_verbe_après_préverbes__
    [ne|n’]     [le|la|l’|les]      [lui|leur|en|y]         @:¬:(?:[123][sp]|Y|P|Ov|X)
    [ne|n’]     [lui|leur]          en                      @:¬:(?:[123][sp]|Y|P|Ov|X)
        <<- /conf/ -4>> =suggSimil(\4, ":(?:[123][sp]|Y)", False)                                   # Incohérence avec « \1 \2 \3 » : « \4 » devrait être un verbe.
5035
5036
5037
5038
5039
5040
5041
5042

5043
5044
5045
5046
5047
5048
5049
5035
5036
5037
5038
5039
5040
5041

5042
5043
5044
5045
5046
5047
5048
5049







-
+







TEST: c’est vous les journalistes qui l’avez écrit
TEST: C’est nous les patrons
TEST: me revoilà


__loc_notre_père_qui_es_au_cieux__
    notre père qui [es|est] aux cieux
        <<- %4>>
        <<- !4>>
        <<- ~3:0>> *


!!
!!
!!!! Formes verbales sans sujet                                                                   !!
!!
7343
7344
7345
7346
7347
7348
7349
7350

7351
7352
7353
7354
7355
7356
7357
7343
7344
7345
7346
7347
7348
7349

7350
7351
7352
7353
7354
7355
7356
7357







-
+







TEST: ils ont oublié leur {{laisser-passer}}.
TEST: il faut en finir avec le {{laissez-aller}}.


# la / là
__conf_la_là!7__
    la ou les
        <<- %1>>
        <<- !1>>

    la  [l’|d’|n’|m’|t’|s’|c’|ç’|j’|qu’|lorsqu’|puisqu’|quoiqu’]
    la  @:G¬:(?:[NA]:[ef]|W|V)|>(?:lui|leur|votre|notre|voilà|voici|plupart|quell?e?s?|tout|toute)/
        <<- /conf/ not \1.isupper() and not \2.isupper() and not morph(<1, ":E|>le/") -1>> là       # Confusion probable. Écrivez “là” si vous voulez dire “ici”.

    [ce|cet|cette|ces]  /-la
        <<- /conf/ -2>> =\2[:-2]+"là"                                                               # Confusion. Écrivez “là” soudé au nom pour désigner un objet précis.
8683
8684
8685
8686
8687
8688
8689
8690

8691
8692
8693
8694
8695
8696
8697
8683
8684
8685
8686
8687
8688
8689

8690
8691
8692
8693
8694
8695
8696
8697







-
+







TEST: Je propse que, par {{voix}} de conséquence, nous partions immédiatement.
TEST: C’est une {{voix}} interdite.


# voir / voire
__conf_voir_voire__
    voir [grand|petit|rouge]
        <<- %2>>
        <<- !2>>

    voir  @:A¬:[NGM]
        <<- /conf/ not \2.istitle() and not morph(<1, ":O[os]|>(?:[ndmts]e|aller|falloir|pouvoir|savoir|vouloir|préférer|faire|penser|imaginer|souhaiter|désirer|de|à)/")
            and not before("(?i)\\b[ndmts](?:e |’(?:en |y ))(?:pas |jamais |) *$")
        -1>> voire                      # Confusion probable : “voir” est un verbe concernant la perception visuelle. Pour signifier “et même possiblement”, écrivez “voire”.|https://fr.wiktionary.org/wiki/voire

    [comme|lorque|puisque|quand|que|quoique|si]                                 voire
8845
8846
8847
8848
8849
8850
8851
8852

8853
8854
8855
8856
8857
8858
8859
8845
8846
8847
8848
8849
8850
8851

8852
8853
8854
8855
8856
8857
8858
8859







-
+







TEST: Nous vous donnons rendez-vous {{Mercredi}} le 18.


# Les mois
__maj_mois__
    monarchie de Juillet
    révolution d’ Octobre
        <<- %3>>
        <<- !3>>

    *WORD [Janvier|Février|Avril|Mai|Juin|Juillet|Août|Aout|Septembre|Octobre|Novembre|Décembre|Vendémiaire|Brumaire|Frimaire|Nivôse|Pluviôse|Ventôse|Germinal|Floréal|Prairial|Messidor|Thermidor|Fructidor]
        <<- /maj/ not morph(\1, ":M1") and not \2.isupper() -2:>> =\2.lower()
        # Pas de majuscule sur les mois.|http://www.academie-francaise.fr/la-langue-francaise/questions-de-langue#42_strong-em-jours-de-la-semaine-pluriel-et-majuscules-em-strong

    [*NUM|*WORD_ELIDED] [Janvier|Février|Avril|Mai|Juin|Juillet|Août|Aout|Septembre|Octobre|Novembre|Décembre|Vendémiaire|Brumaire|Frimaire|Nivôse|Pluviôse|Ventôse|Germinal|Floréal|Prairial|Messidor|Thermidor|Fructidor]
    ,    [Janvier|Février|Avril|Mai|Juin|Juillet|Août|Aout|Septembre|Octobre|Novembre|Décembre|Vendémiaire|Brumaire|Frimaire|Nivôse|Pluviôse|Ventôse|Germinal|Floréal|Prairial|Messidor|Thermidor|Fructidor]
8871
8872
8873
8874
8875
8876
8877
8878

8879
8880
8881
8882
8883
8884
8885
8871
8872
8873
8874
8875
8876
8877

8878
8879
8880
8881
8882
8883
8884
8885







-
+







TEST: le comité d’éthique qui statuera dans les meilleurs délais sur la situation de Véronique Avril
TEST: VENDREDI 23 NOVEMBRE 2018 À 18:09


# Les États
__maj_État__
    en fonction de l’ état
        <<- %5>>
        <<- !5>>

    état [français|belge|suisse|canadien|palestinien|souverain|américain|russe|anglais|allemand|espagnol|italien|mexicain|japonais|chinois|australien|polonais|membre|africain|européen|asiatique|voyou|démocratique|totalitaire|fédéral|fédéré|capitaliste|communiste|providence|nation]
    état de droit
        <<- /maj/ \1 == "état" -1>> État                            # Majuscule manquante : si vous parlez de l’institution dirigeante d’une nation, écrivez “État”.

    états [français|>belge|>suisse|canadien|canadiens|palestinien|palestiniens|souverain|souverains|>membre|américain|américains|africain|africains|européen|européens|>asiatique|>voyou|>démocratique|>totalitaire|>fédérale|>fédérée|>capitaliste|>communiste|>providence|>nation]
    états de droit
8908
8909
8910
8911
8912
8913
8914
8915

8916
8917
8918
8919
8920
8921
8922
8908
8909
8910
8911
8912
8913
8914

8915
8916
8917
8918
8919
8920
8921
8922







-
+









# gentilés / ethnonymes
__maj_gentilés__
    océan Indien
    [îles|iles] Britanniques
    à [la|l’] [afghane|albanaise|algérienne|allemande|américaine|andorrane|anglaise|angolaise|arabe|argentine|arménienne|australienne|autrichienne|asiatique|azerbaïdjanaise|bahamienne|bangladaise|bengladeshie|barbadienne|basque|belge|bélizienne|béninoise|bretonne|bhoutanaise|biélorusse|birmane|bolivienne|bosnienne|botswanaiso|brésilienne|britannique|brunéiene|bulgare|burkinabé|burundaise|cambodgienne|camerounaise|canadienne|capverdienne|centrafricaine|chilienne|chinoise|chypriote|colombienne|comorienne|congolaise|nord-coréenne|corse|costaricienne|croate|cubaine|danoise|djiboutienne|dominicaine|égyptienne|émiratie|équatorienne|érythréenne|estonienne|espagnole|étatsunienne|états-unienne|étasunienne|éthiopienne|fidjienne|finlandaise|formosane|française|gabonaise|gambienne|géorgienne|ghanéenne|grecque|grenadienne|guadeloupéenne|guatémaltèque|guinéenne|équato-guinéenne|guyanienne|haïtienne|honduriene|hollandaise|hongroise|indienne|indochinoise|indonésienne|irakienne|italienne|iranienne|irlandaise|islandaise|israélienne|ivoirienne|jamaïcaine|japonaise|jordanienne|kazakhe|kényane|kosovare|koweïtienne|laotienne|lapone|lettone|libanaise|libérienne|libyenne|liechtensteinoise|lituanienne|luxembourgeois|macédonienne|maghrébine|malgache|malaisienne|malawite|maldivienne|malienne|maltaise|maorie|marocaine|martienne|mauricienne|mauritanienne|mexicaine|micronésienne|moldave|monégasque|monténégrine|mongole|mozambicaine|namibiene|népalaise|nicaraguayenne|nigérienne|nigériane|néerlandaise|norvégienne|néo-zélandaise|ougandaise|ouzbèke|pakistanaise|palestinienne|panaméenne|paraguayenne|perse|péruvienne|philippine|polonaise|polynésienne|portugaise|québécoise|qatarie|roumaine|russe|rwandaise|saoudienne|scandinave|salvadorienne|sénégalaise|serbe|singapourienne|slovaque|slovène|somalienne|soudanaise|soviétique|srilankaise|suédoise|suisse|surinamaise|syrienne|sud-africaine|sud-coréenne|américaine|tadjike|tanzanienne|tchadienne|tchèque|thaïlandaise|togolaise|tahitienne|tunisiene|turkmène|turque|taïwanaise|ukrainienne|uruguayenne|vénézuélienne|vietnamienne|yéménite|yougoslave|zaïroise|zambienne|zimbabwéenne]
        <<- %-1>>
        <<- !-1>>

    [>afghane|>albanaise|>algérienne|>allemande|>américaine|>andorrane|>anglaise|>angolaise|>arabe|>argentine|>arménienne|>australienne|>autrichienne|>asiatique|>azerbaïdjanaise|>bahamienne|>bangladaise|>bengladeshie|>barbadienne|>basque|>belge|>bélizienne|>béninoise|>bretonne|>bhoutanaise|>biélorusse|>birmane|>bolivienne|>bosnienne|>botswanaiso|>brésilienne|>britannique|>brunéiene|>bulgare|>burkinabé|>burundaise|>cambodgienne|>camerounaise|>canadienne|>capverdienne|>centrafricaine|>chilienne|>chinoise|>chypriote|>colombienne|>comorienne|>congolaise|>nord-coréenne|>corse|>costaricienne|>croate|>cubaine|>danoise|>djiboutienne|>dominicaine|>égyptienne|>émiratie|>équatorienne|>érythréenne|>estonienne|>espagnole|>étatsunienne|>états-unienne|>étasunienne|>éthiopienne|>fidjienne|>finlandaise|>formosane|>française|>gabonaise|>gambienne|>géorgienne|>ghanéenne|>grecque|>grenadienne|>guadeloupéenne|>guatémaltèque|>guinéenne|>équato-guinéenne|>guyanienne|>haïtienne|>honduriene|>hollandaise|>hongroise|>indienne|>indochinoise|>indonésienne|>irakienne|>italienne|>iranienne|>irlandaise|>islandaise|>israélienne|>ivoirienne|>jamaïcaine|>japonaise|>jordanienne|>kazakhe|>kényane|>kosovare|>koweïtienne|>laotienne|>lapone|>lettone|>libanaise|>libérienne|>libyenne|>liechtensteinoise|>lituanienne|>luxembourgeois|>macédonienne|>maghrébine|>malgache|>malaisienne|>malawite|>maldivienne|>malienne|>maltaise|>maorie|>marocaine|>martienne|>mauricienne|>mauritanienne|>mexicaine|>micronésienne|>moldave|>monégasque|>monténégrine|>mongole|>mozambicaine|>namibiene|>népalaise|>nicaraguayenne|>nigérienne|>nigériane|>néerlandaise|>norvégienne|>néo-zélandaise|>ougandaise|>ouzbèke|>pakistanaise|>palestinienne|>panaméenne|>paraguayenne|>perse|>péruvienne|>philippine|>polonaise|>polynésienne|>portugaise|>québécoise|>qatarie|>roumaine|>russe|>rwandaise|>saoudienne|>scandinave|>salvadorienne|>sénégalaise|>serbe|>singapourienne|>slovaque|>slovène|>somalienne|>soudanaise|>soviétique|>srilankaise|>suédoise|>suisse|>surinamaise|>syrienne|>sud-africaine|>sud-coréenne|>américaine|>tadjike|>tanzanienne|>tchadienne|>tchèque|>thaïlandaise|>togolaise|>tahitienne|>tunisiene|>turkmène|>turque|>taïwanaise|>ukrainienne|>uruguayenne|>vénézuélienne|>vietnamienne|>yéménite|>yougoslave|>zaïroise|>zambienne|>zimbabwéenne]
        <<- /maj/ \1.istitle() and morph(<1, ":N", ":(?:A|V0e|D|R|B|X)") -1:>> =\1.lower()          # S’il s’agit d’un adjectif, ne mettez pas de majuscule.
        <<- /maj/ \1.islower() and not \1.startswith("canadienne") and
            ( value(<1, "|certains|certaines|ce|cet|cette|ces|des|les|nos|vos|leurs|quelques|plusieurs|chaque|une|aux|la|ma|ta|sa|")
            or ( morph(<1, ":B") and not morph(<2, ">numéro/") )
            or ( value(<1, "|l’|") and morph(\1, ":N.*:f:[si]") )
9560
9561
9562
9563
9564
9565
9566
9567

9568
9569
9570
9571
9572
9573
9574
9560
9561
9562
9563
9564
9565
9566

9567
9568
9569
9570
9571
9572
9573
9574







-
+








TODO: comme


__purge_locutions_latines__
    [a|à]       [priori|postériori|posteriori|contrario|cappella|minima]
        <<- ~>> *
        <<- %1>>
        <<- !1>>

    ab          [absurdo|initio]
    ad          [hoc|hominem|infinitum|nauseam|valorem|patres]
    ad          vitam æternam
    ex          [nihilo|cathedra|absurdo|abrupto]
    id          est
    in          [abstracto|extenso|extremis|fine|petto|situ|utero|vitro|vivo]
14748
14749
14750
14751
14752
14753
14754
14755

14756
14757
14758
14759
14760
14761
14762
14748
14749
14750
14751
14752
14753
14754

14755
14756
14757
14758
14759
14760
14761
14762







-
+







__conf_cour_cours_court_courre__
    au [cour|court|courre|courres|courts] [de|d’|des|du]
        <<- /conf/ -2>> cours                               # Confusion. Locution “au cours de”. Une cour… Un cours… Adjectif : court(e).

    en cour martiale
    en cour [de|d’] [cassation|justice]
    en cour d’ [>assise]
        <<- %1:2>>
        <<- !1:2>>

    en cour
        <<- /conf/ ->> en cours                             # Confusion probable. Une cour… Un cours… Adjectif : court(e).

    >couper [cour|cours|courre|courres|courts]
        <<- /conf/ -2>> court                               # “Couper court” qui signifie écourter. Une cour… Un cours… Adjectif : court(e).

16889
16890
16891
16892
16893
16894
16895
16896

16897
16898
16899
16900

16901
16902
16903
16904
16905
16906
16907
16889
16890
16891
16892
16893
16894
16895

16896
16897
16898
16899

16900
16901
16902
16903
16904
16905
16906
16907







-
+



-
+







TEST: t’étais vraiment cinglé à cette époque.
TEST: il m’était évident que cette mission était à durée déterminée


## se rendre compte
__ppas_s_être_rendu_compte__
    >être  rendu  compte
        <<- %2:3>>
        <<- !2:3>>
        <<- ~2:3>> _

    /VCint  rendu  compte
        <<- morphVC(\1, ">être/") %2:3>>
        <<- morphVC(\1, ">être/") !2:3>>
        <<- ~2:3>> _

    >être  [rendue|rendus|rendues]  compte
        <<- /ppas/ -2>> rendu                                                                       # Accord erroné : dans l’expression “se rendre compte”, “rendu” est invariable.
        <<- ~2:3>> _

    /VCint  [rendue|rendus|rendues]  compte
16996
16997
16998
16999
17000
17001
17002
17003

17004
17005
17006
17007

17008
17009
17010

17011
17012
17013
17014
17015
17016
17017
16996
16997
16998
16999
17000
17001
17002

17003
17004
17005
17006

17007
17008
17009

17010
17011
17012
17013
17014
17015
17016
17017







-
+



-
+


-
+







TEST: tu deviens vraiment très {{forts}} à ce jeu.
TEST: je voudrais bien être dans ses souliers


__ppas_3sg_mas_verbe_état__
    [ce|ça|ceci|cela|c’|ç’] >avoir été >seule               [que|qu’]
    [ce|ça|ceci|cela|c’|ç’] >avoir été @:[AQ].*:f¬:[GWYme]  @:N.*:f
        <<- %4>>
        <<- !4>>

    [ce|ça|ceci|cela|c’|ç’] >être >seule                    [que|qu’]
    [ce|ça|ceci|cela|c’|ç’] >être @:[AQ].*:f¬:[GWYme]       @:N.*:f
        <<- %3>>
        <<- !3>>

    tout en [étant|semblant|devenant|restant|demeurant|redevenant|paraissant] @:A
        <<- %4>>
        <<- !4>>

    ([il|ce|c’|ç’|quiconque]) ?[ne|n’]¿ ?[en|y]¿ ([>être|>sembler|>devenir|>rester|>demeurer|>redevenir|>paraître|>paraitre])               [@:[NA].*:p¬:[GWYsi]|@:[AQ].*:f¬:[GWYme]]
    ([il|ce|c’|ç’|quiconque]) ?[ne|n’]¿ ?[en|y]¿ (>avoir) [été|semblé|paru]                                                                 [@:[NA].*:p¬:[GWYsi]|@:[AQ].*:f¬:[GWYme]]
    ([il|ce|c’|ç’|quiconque]) ?[ne|n’]¿ ?[en|y]¿ ([>être|>sembler]) [devenu|redevenu|resté|demeuré]                                         [@:[NA].*:p¬:[GWYsi]|@:[AQ].*:f¬:[GWYme]]
    ([il|ce|c’|ç’|quiconque]) ?[ne|n’]¿ ?[en|y]¿
        || ([>aller|>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir])
        || [être|devenir|redevenir|rester]                                                                                                  [@:[NA].*:p¬:[GWYsi]|@:[AQ].*:f¬:[GWYme]]
17567
17568
17569
17570
17571
17572
17573
17574

17575
17576
17577
17578
17579
17580
17581
17567
17568
17569
17570
17571
17572
17573

17574
17575
17576
17577
17578
17579
17580
17581







-
+







        || [être|devenir|redevenir|rester]                                                          *WORD
    *WORD  [que|qu’]  [un|le|ce|cet|une|la|ma|ta|sa|cette|l’|mon|ton|son|notre|votre|leur|les|ces|mes|tes|ses|nos|vos|leurs|quelques|plusieurs]  *WORD  ?[ne|n’]¿
        || ([>affirmer|>croire|>déclarer|>désirer|>détester|>dire|>estimer|>imaginer|>penser|>préférer|>savoir|>souhaiter|>vouloir])
        || être [devenu|redevenu|resté|demeuré|devenue|redevenue|restée|demeurée]                   *WORD
    *WORD  [que|qu’]  [un|le|ce|cet|une|la|ma|ta|sa|cette|l’|mon|ton|son|notre|votre|leur|les|ces|mes|tes|ses|nos|vos|leurs|quelques|plusieurs]  *WORD  ?[ne|n’]¿
        || ([>affirmer|>croire|>déclarer|>désirer|>détester|>dire|>estimer|>imaginer|>penser|>préférer|>savoir|>souhaiter|>vouloir])
        || avoir [été|semblé|paru]                                                                  *WORD
        <<- /ppas/ checkAgreement(\1, \-1) %-1>>
        <<- /ppas/ checkAgreement(\1, \-1) !-1>>

TEST: la danse est {{fini}}…
TEST: Un orage est {{annoncée}}.
TEST: Une averse est {{annoncé}}.
TEST: Le chien ne sera pas {{oubliés}}
TEST: les femmes sont vraiment {{partis}}                                         ->> parties
TEST: les hommes ne sont pas tout à fait {{fâché}}                                ->> fâchés
17608
17609
17610
17611
17612
17613
17614
17615

17616
17617
17618
17619
17620
17621
17622
17608
17609
17610
17611
17612
17613
17614

17615
17616
17617
17618
17619
17620
17621
17622







-
+







        || [être|devenir|redevenir|rester]                                                          *WORD
    (*WORD)  [que|qu’]  (@:M)  ?[ne|n’]¿
        || ([>affirmer|>croire|>déclarer|>désirer|>détester|>dire|>estimer|>imaginer|>penser|>préférer|>savoir|>souhaiter|>vouloir])
        || être [devenu|redevenu|resté|demeuré|devenue|redevenue|restée|demeurée]                   *WORD
    (*WORD)  [que|qu’]  (@:M)  ?[ne|n’]¿
        || ([>affirmer|>croire|>déclarer|>désirer|>détester|>dire|>estimer|>imaginer|>penser|>préférer|>savoir|>souhaiter|>vouloir])
        || avoir [été|semblé|paru]                                                                  *WORD
        <<- /ppas/ checkAgreement(\1, \-1) %-1>>
        <<- /ppas/ checkAgreement(\1, \-1) !-1>>

TEST: Antoine est {{mariée}}.
TEST: Antoine n’est pas {{mariés}}.
TEST: Antoine est peut-être {{fatiguée}}.
TEST: Éric n’est pas très {{fatiguée}}.
TEST: Martine est {{marié}}.
TEST: Martine n’est pas {{marié}}.
18062
18063
18064
18065
18066
18067
18068
18069

18070
18071
18072
18073
18074
18075
18076
18062
18063
18064
18065
18066
18067
18068

18069
18070
18071
18072
18073
18074
18075
18076







-
+







!!
!!!! Participes passés après “avoir”                                                              !!
!!
!!

__immu_les_avoir_fait_vinfi__
    les >avoir fait ?[me|m’|te|t’|se|s’|nous|vous|leur]¿ @:Y
        <<- %3>>
        <<- !3>>


__ppas_pronom_avoir__
    [je|j’|tu|il|elle|on|ils|elles|et|qui]  ?[ne|n’]¿  ?[lui|leur]¿  >avoir  *WORD
        <<- /ppas/ not value(\-1, "|barre|confiance|cours|envie|peine|prise|crainte|cure|affaire|hâte|force|recours|")
            and value(<1, "|<start>|,|comme|comment|et|lorsque|lorsqu’|mais|où|ou|quand|qui|pourquoi|puisque|puisqu’|quoique|quoiqu’|si|s’|sinon|")
            and \-1.islower() and morph(\-1, ":(?:[123][sp]|Q.*:[fp])", ":(?:G|W|Q.*:m:[si])")

Modified misc/grammalecte.sublime-syntax from [15f97f9ddb] to [adc8923096].

121
122
123
124
125
126
127
128

129
130
131
132
133
134
135
121
122
123
124
125
126
127

128
129
130
131
132
133
134
135







-
+







        1: keyword.textprocessor.group
    - match: '=>>'
      scope: keyword.disambiguator
    - match: '/(-?\d*(?::-?\d+|))>>'
      scope: keyword.tag
      captures:
        1: keyword.tag.group
    - match: '%(-?\d*(?::-?\d+|))>>'
    - match: '!(-?\d*(?::-?\d+|))>>'
      scope: keyword.tag
      captures:
        1: keyword.tag.group

    # Tokens
    - match: '(>)[\w-]+'
      scope: string.lemma