Index: compile_rules_graph.py ================================================================== --- compile_rules_graph.py +++ compile_rules_graph.py @@ -204,11 +204,11 @@ sAction = sAction[m.end():].strip() if nPriority == -1: nPriority = dOptPriority.get(sOption, 4) # valid action? - m = re.search(r"(?P[-~=/%>])(?P-?\d+\.?|)(?P:\.?-?\d+|)(?P:|)>>", sAction) + m = re.search(r"(?P[-~=/!>])(?P-?\d+\.?|)(?P:\.?-?\d+|)(?P:|)>>", sAction) if not m: print(" # Error. No action found at: ", sActionId) return None # Condition @@ -280,11 +280,11 @@ 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) @@ -302,11 +302,11 @@ 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): @@ -361,11 +361,11 @@ 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: Index: gc_core/js/lang_core/gc_engine.js ================================================================== --- gc_core/js/lang_core/gc_engine.js +++ gc_core/js/lang_core/gc_engine.js @@ -608,11 +608,11 @@ 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 == "-") { @@ -673,11 +673,11 @@ 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]; Index: gc_core/py/lang_core/gc_engine.py ================================================================== --- gc_core/py/lang_core/gc_engine.py +++ gc_core/py/lang_core/gc_engine.py @@ -517,11 +517,11 @@ 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 == "-": @@ -569,11 +569,11 @@ 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] Index: gc_lang/fr/rules.grx ================================================================== --- gc_lang/fr/rules.grx +++ gc_lang/fr/rules.grx @@ -2102,11 +2102,11 @@ 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$ @@ -2223,42 +2223,42 @@ __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>> @@@@ @@@@ @@ -4982,11 +4982,11 @@ !! !! __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) @@ -5037,11 +5037,11 @@ TEST: me revoilà __loc_notre_père_qui_es_au_cieux__ notre père qui [es|est] aux cieux - <<- %4>> + <<- !4>> <<- ~3:0>> * !! !! @@ -7345,11 +7345,11 @@ # 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”. @@ -8685,11 +8685,11 @@ # 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 @@ -8847,11 +8847,11 @@ # 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 @@ -8873,11 +8873,11 @@ # 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”. @@ -8910,11 +8910,11 @@ # 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|") @@ -9562,11 +9562,11 @@ __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] @@ -14750,11 +14750,11 @@ <<- /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] @@ -16891,15 +16891,15 @@ ## 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>> _ @@ -16998,18 +16998,18 @@ __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]¿ @@ -17569,11 +17569,11 @@ || ([>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}} @@ -17610,11 +17610,11 @@ || ([>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}}. @@ -18064,11 +18064,11 @@ !! !! __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|") Index: misc/grammalecte.sublime-syntax ================================================================== --- misc/grammalecte.sublime-syntax +++ misc/grammalecte.sublime-syntax @@ -123,11 +123,11 @@ 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