Grammalecte  Check-in [d167d2a710]

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

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 2019-05-14 13:27:18
Context
2019-05-14
15:19
[graphspell][js][bug] fix wrong method check-in: fbecdf6a89 user: olr tags: graphspell, trunk
13:27
[core][fr][misc] change immunity tag (% -> !) check-in: d167d2a710 user: olr tags: core, fr, misc, trunk
12:58
[graphspell][fx][js] add default suggestions module check-in: c3cdee9c76 user: olr tags: fx, graphspell, trunk
Changes

Changes to compile_rules_graph.py.

   202    202       if m:
   203    203           sOption = m.group(1)
   204    204           sAction = sAction[m.end():].strip()
   205    205       if nPriority == -1:
   206    206           nPriority = dOptPriority.get(sOption, 4)
   207    207   
   208    208       # valid action?
   209         -    m = re.search(r"(?P<action>[-~=/%>])(?P<start>-?\d+\.?|)(?P<end>:\.?-?\d+|)(?P<casing>:|)>>", sAction)
          209  +    m = re.search(r"(?P<action>[-~=/!>])(?P<start>-?\d+\.?|)(?P<end>:\.?-?\d+|)(?P<casing>:|)>>", sAction)
   210    210       if not m:
   211    211           print(" # Error. No action found at: ", sActionId)
   212    212           return None
   213    213   
   214    214       # Condition
   215    215       sCondition = sAction[:m.start()].strip()
   216    216       if sCondition:
................................................................................
   278    278       # checking consistancy
   279    279       checkTokenNumbers(sAction, sActionId, nToken)
   280    280   
   281    281       if cAction == ">":
   282    282           ## no action, break loop if condition is False
   283    283           return [sOption, sCondition, cAction, ""]
   284    284   
   285         -    if not sAction and cAction != "%":
          285  +    if not sAction and cAction != "!":
   286    286           print("# Error in action at line " + sActionId + ":  This action is empty.")
   287    287   
   288    288       if sAction[0:1] != "=" and cAction != "=":
   289    289           checkIfThereIsCode(sAction, sActionId)
   290    290   
   291    291       if cAction == "-":
   292    292           ## error detected --> suggestion
................................................................................
   300    300       if cAction == "~":
   301    301           ## text processor
   302    302           if sAction[0:1] == "=":
   303    303               sAction = createFunction("tp", sAction, True)
   304    304           elif sAction.startswith('"') and sAction.endswith('"'):
   305    305               sAction = sAction[1:-1]
   306    306           return [sOption, sCondition, cAction, sAction, iStartAction, iEndAction, bCaseSensitivity]
   307         -    if cAction in "%/":
          307  +    if cAction in "!/":
   308    308           ## tags
   309    309           return [sOption, sCondition, cAction, sAction, iStartAction, iEndAction]
   310    310       if cAction == "=":
   311    311           ## disambiguator
   312    312           if "define(" in sAction and not re.search(r"define\(\\-?\d+ *, *\[.*\] *\)", sAction):
   313    313               print("# Error in action at line " + sActionId + ": second argument for <define> must be a list of strings")
   314    314           sAction = createFunction("da", sAction)
................................................................................
   359    359                       exit()
   360    360                   iActionBlock = 1
   361    361                   nPriority = int(m.group(2)[1:]) if m.group(2)  else -1
   362    362               else:
   363    363                   print("Syntax error in rule group: ", sLine, " -- line:", i)
   364    364                   exit()
   365    365           elif re.search("^    +<<- ", sLine) or (sLine.startswith("        ") and not sLine.startswith("        ||")) \
   366         -                or re.search("^    +#", sLine) or re.search(r"[-~=>/%](?:-?\d\.?(?::\.?-?\d+|)|)>> ", sLine) :
          366  +                or re.search("^    +#", sLine) or re.search(r"[-~=>/!](?:-?\d\.?(?::\.?-?\d+|)|)>> ", sLine) :
   367    367               # actions
   368    368               sActions += " " + sLine.strip()
   369    369           elif re.match("[  ]*$", sLine):
   370    370               # empty line to end merging
   371    371               if not lTokenLine:
   372    372                   continue
   373    373               if not sActions:

Changes to gc_core/js/lang_core/gc_engine.js.

   606    606                           console.log("   >TRY: " + sRuleId + " " + sLineId);
   607    607                       }
   608    608                       let [sOption, sFuncCond, cActionType, sWhat, ...eAct] = gc_rules_graph.dRule[sRuleId];
   609    609                       // Suggestion    [ option, condition, "-", replacement/suggestion/action, iTokenStart, iTokenEnd, cStartLimit, cEndLimit, bCaseSvty, nPriority, sMessage, sURL ]
   610    610                       // TextProcessor [ option, condition, "~", replacement/suggestion/action, iTokenStart, iTokenEnd, bCaseSvty ]
   611    611                       // Disambiguator [ option, condition, "=", replacement/suggestion/action ]
   612    612                       // Tag           [ option, condition, "/", replacement/suggestion/action, iTokenStart, iTokenEnd ]
   613         -                    // Immunity      [ option, condition, "%", "",                            iTokenStart, iTokenEnd ]
          613  +                    // Immunity      [ option, condition, "!", "",                            iTokenStart, iTokenEnd ]
   614    614                       // Test          [ option, condition, ">", "" ]
   615    615                       if (!sOption || dOptions.gl_get(sOption, false)) {
   616    616                           bCondMemo = !sFuncCond || oEvalFunc[sFuncCond](this.lToken, nTokenOffset, nLastToken, sCountry, bCondMemo, this.dTags, this.sSentence, this.sSentence0);
   617    617                           if (bCondMemo) {
   618    618                               if (cActionType == "-") {
   619    619                                   // grammar error
   620    620                                   let [iTokenStart, iTokenEnd, cStartLimit, cEndLimit, bCaseSvty, nPriority, sMessage, sURL] = eAct;
................................................................................
   671    671                                   }
   672    672                                   if (!this.dTags.has(sWhat)) {
   673    673                                       this.dTags.set(sWhat, [nTokenStart, nTokenStart]);
   674    674                                   } else {
   675    675                                       this.dTags.set(sWhat, [Math.min(nTokenStart, this.dTags.get(sWhat)[0]), Math.max(nTokenEnd, this.dTags.get(sWhat)[1])]);
   676    676                                   }
   677    677                               }
   678         -                            else if (cActionType == "%") {
          678  +                            else if (cActionType == "!") {
   679    679                                   // immunity
   680    680                                   if (bDebug) {
   681    681                                       console.log("    IMMUNITY: " + _rules_graph.dRule[sRuleId]);
   682    682                                   }
   683    683                                   let nTokenStart = (eAct[0] > 0) ? nTokenOffset + eAct[0] : nLastToken + eAct[0];
   684    684                                   let nTokenEnd = (eAct[1] > 0) ? nTokenOffset + eAct[1] : nLastToken + eAct[1];
   685    685                                   if (nTokenEnd - nTokenStart == 0) {

Changes to gc_core/py/lang_core/gc_engine.py.

   515    515                       if bDebug:
   516    516                           echo("   >TRY: " + sRuleId + " " + sLineId)
   517    517                       sOption, sFuncCond, cActionType, sWhat, *eAct = _rules_graph.dRule[sRuleId]
   518    518                       # Suggestion    [ option, condition, "-", replacement/suggestion/action, iTokenStart, iTokenEnd, cStartLimit, cEndLimit, bCaseSvty, nPriority, sMessage, sURL ]
   519    519                       # TextProcessor [ option, condition, "~", replacement/suggestion/action, iTokenStart, iTokenEnd, bCaseSvty ]
   520    520                       # Disambiguator [ option, condition, "=", replacement/suggestion/action ]
   521    521                       # Tag           [ option, condition, "/", replacement/suggestion/action, iTokenStart, iTokenEnd ]
   522         -                    # Immunity      [ option, condition, "%", "",                            iTokenStart, iTokenEnd ]
          522  +                    # Immunity      [ option, condition, "!", "",                            iTokenStart, iTokenEnd ]
   523    523                       # Test          [ option, condition, ">", "" ]
   524    524                       if not sOption or dOptions.get(sOption, False):
   525    525                           bCondMemo = not sFuncCond or globals()[sFuncCond](self.lToken, nTokenOffset, nLastToken, sCountry, bCondMemo, self.dTags, self.sSentence, self.sSentence0)
   526    526                           if bCondMemo:
   527    527                               if cActionType == "-":
   528    528                                   # grammar error
   529    529                                   iTokenStart, iTokenEnd, cStartLimit, cEndLimit, bCaseSvty, nPriority, sMessage, sURL = eAct
................................................................................
   567    567                                   if bDebug:
   568    568                                       echo("    TAG: {} >  [{}:{}]".format(sWhat, self.lToken[nTokenStart]["sValue"], self.lToken[nTokenEnd]["sValue"]))
   569    569                                   if sWhat not in self.dTags:
   570    570                                       self.dTags[sWhat] = [nTokenStart, nTokenStart]
   571    571                                   else:
   572    572                                       self.dTags[sWhat][0] = min(nTokenStart, self.dTags[sWhat][0])
   573    573                                       self.dTags[sWhat][1] = max(nTokenEnd, self.dTags[sWhat][1])
   574         -                            elif cActionType == "%":
          574  +                            elif cActionType == "!":
   575    575                                   # immunity
   576    576                                   if bDebug:
   577    577                                       echo("    IMMUNITY: " + _rules_graph.dRule[sRuleId])
   578    578                                   nTokenStart = nTokenOffset + eAct[0]  if eAct[0] > 0  else nLastToken + eAct[0]
   579    579                                   nTokenEnd = nTokenOffset + eAct[1]  if eAct[1] > 0  else nLastToken + eAct[1]
   580    580                                   if nTokenEnd - nTokenStart == 0:
   581    581                                       self.lToken[nTokenStart]["bImmune"] = True

Changes to gc_lang/fr/rules.grx.

  2100   2100   __inte_rendez_vous__
  2101   2101       ne [le|la|les] [lui|leur]   rendez-vous
  2102   2102       ne me [le|la|les]           rendez-vous
  2103   2103       ne [lui|leur] en            rendez-vous
  2104   2104       ne [le|la|les|lui|leur]     rendez-vous
  2105   2105       [me|ne|nous|vous|lui]       rendez-vous
  2106   2106           <<- =>> define(\-1, [":VCi1:2p"])
  2107         -        <<- %-1>>
         2107  +        <<- !-1>>
  2108   2108   
  2109   2109   
  2110   2110   __inte_verbes_composés_impératifs__
  2111   2111       ~\w-l(?:es?|a)-(?:[mt]oi|nous|leur)$
  2112   2112       ~\w-(?:[nv]ous|lui|leur)-en$
  2113   2113       ~\w-[mt]’en$
  2114   2114       ~\w-[mt]’y$
................................................................................
  2221   2221           <<- morph(<1, ":D.*:[mp]") ~>> ␣
  2222   2222           <<- __also__ =>> define(\1, [":N:m:i"])
  2223   2223   
  2224   2224   
  2225   2225   __immunités__
  2226   2226       il y a
  2227   2227       il n’ y a
  2228         -        <<- %-1>>
         2228  +        <<- !-1>>
  2229   2229   
  2230   2230       à l’ arrache
  2231         -        <<- %3>>
         2231  +        <<- !3>>
  2232   2232   
  2233   2233       à ce point
  2234   2234       en tout point
  2235         -        <<- %3>>
         2235  +        <<- !3>>
  2236   2236   
  2237   2237       au  [bas|bras|côté|milieu|sein|sommet|faîte] [duquel|desquels|desquelles]
  2238   2238       au  [bas|bras|côté|milieu|sein|sommet|faîte] de laquelle
  2239   2239       aux [côtés] [duquel|desquels|desquelles]
  2240   2240       aux [côtés] de laquelle
  2241         -        <<- %3>>
         2241  +        <<- !3>>
  2242   2242   
  2243   2243       au lieu des
  2244         -        <<- %3>>
         2244  +        <<- !3>>
  2245   2245   
  2246   2246       au sortir [de|des|du|d’]
  2247   2247           <<- ~2>> _
  2248   2248   
  2249   2249       en tout et pour tout
  2250         -        <<- %-1>>
         2250  +        <<- !-1>>
  2251   2251   
  2252   2252       jusqu’ à
  2253         -        <<- %2>>
         2253  +        <<- !2>>
  2254   2254   
  2255   2255       [comme|que|qu’|lorsque|lorsqu’|puisque|puisqu’|quand|pourquoi|qui|quoi]  ?[ne|n’]¿  ?[se|s’]¿  (*WORD)  ?à¿  [le|la|l’|les]  @:Y  @:M
  2256         -        <<- morph(\1, ":V") %-2>>
         2256  +        <<- morph(\1, ":V") !-2>>
  2257   2257   
  2258   2258       soit pour soit contre
  2259         -        <<- %3>>
         2259  +        <<- !3>>
  2260   2260   
  2261   2261   
  2262   2262   
  2263   2263   @@@@
  2264   2264   @@@@
  2265   2265   @@@@
  2266   2266   @@@@
................................................................................
  4980   4980   !!
  4981   4981   !!!! Pronoms + incohérences                                                                       !!
  4982   4982   !!
  4983   4983   !!
  4984   4984   
  4985   4985   __m_enfin__
  4986   4986       m’ enfin
  4987         -        <<- %2>>
         4987  +        <<- !2>>
  4988   4988           <<- ~>> *
  4989   4989   
  4990   4990   
  4991   4991   __non_verbe_après_préverbes__
  4992   4992       [ne|n’]     [le|la|l’|les]      [lui|leur|en|y]         @:¬:(?:[123][sp]|Y|P|Ov|X)
  4993   4993       [ne|n’]     [lui|leur]          en                      @:¬:(?:[123][sp]|Y|P|Ov|X)
  4994   4994           <<- /conf/ -4>> =suggSimil(\4, ":(?:[123][sp]|Y)", False)                                   # Incohérence avec « \1 \2 \3 » : « \4 » devrait être un verbe.
................................................................................
  5035   5035   TEST: c’est vous les journalistes qui l’avez écrit
  5036   5036   TEST: C’est nous les patrons
  5037   5037   TEST: me revoilà
  5038   5038   
  5039   5039   
  5040   5040   __loc_notre_père_qui_es_au_cieux__
  5041   5041       notre père qui [es|est] aux cieux
  5042         -        <<- %4>>
         5042  +        <<- !4>>
  5043   5043           <<- ~3:0>> *
  5044   5044   
  5045   5045   
  5046   5046   !!
  5047   5047   !!
  5048   5048   !!!! Formes verbales sans sujet                                                                   !!
  5049   5049   !!
................................................................................
  7343   7343   TEST: ils ont oublié leur {{laisser-passer}}.
  7344   7344   TEST: il faut en finir avec le {{laissez-aller}}.
  7345   7345   
  7346   7346   
  7347   7347   # la / là
  7348   7348   __conf_la_là!7__
  7349   7349       la ou les
  7350         -        <<- %1>>
         7350  +        <<- !1>>
  7351   7351   
  7352   7352       la  [l’|d’|n’|m’|t’|s’|c’|ç’|j’|qu’|lorsqu’|puisqu’|quoiqu’]
  7353   7353       la  @:G¬:(?:[NA]:[ef]|W|V)|>(?:lui|leur|votre|notre|voilà|voici|plupart|quell?e?s?|tout|toute)/
  7354   7354           <<- /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”.
  7355   7355   
  7356   7356       [ce|cet|cette|ces]  /-la
  7357   7357           <<- /conf/ -2>> =\2[:-2]+"là"                                                               # Confusion. Écrivez “là” soudé au nom pour désigner un objet précis.
................................................................................
  8683   8683   TEST: Je propse que, par {{voix}} de conséquence, nous partions immédiatement.
  8684   8684   TEST: C’est une {{voix}} interdite.
  8685   8685   
  8686   8686   
  8687   8687   # voir / voire
  8688   8688   __conf_voir_voire__
  8689   8689       voir [grand|petit|rouge]
  8690         -        <<- %2>>
         8690  +        <<- !2>>
  8691   8691   
  8692   8692       voir  @:A¬:[NGM]
  8693   8693           <<- /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|à)/")
  8694   8694               and not before("(?i)\\b[ndmts](?:e |’(?:en |y ))(?:pas |jamais |) *$")
  8695   8695           -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
  8696   8696   
  8697   8697       [comme|lorque|puisque|quand|que|quoique|si]                                 voire
................................................................................
  8845   8845   TEST: Nous vous donnons rendez-vous {{Mercredi}} le 18.
  8846   8846   
  8847   8847   
  8848   8848   # Les mois
  8849   8849   __maj_mois__
  8850   8850       monarchie de Juillet
  8851   8851       révolution d’ Octobre
  8852         -        <<- %3>>
         8852  +        <<- !3>>
  8853   8853   
  8854   8854       *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]
  8855   8855           <<- /maj/ not morph(\1, ":M1") and not \2.isupper() -2:>> =\2.lower()
  8856   8856           # 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
  8857   8857   
  8858   8858       [*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]
  8859   8859       ,    [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   8871   TEST: le comité d’éthique qui statuera dans les meilleurs délais sur la situation de Véronique Avril
  8872   8872   TEST: VENDREDI 23 NOVEMBRE 2018 À 18:09
  8873   8873   
  8874   8874   
  8875   8875   # Les États
  8876   8876   __maj_État__
  8877   8877       en fonction de l’ état
  8878         -        <<- %5>>
         8878  +        <<- !5>>
  8879   8879   
  8880   8880       é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]
  8881   8881       état de droit
  8882   8882           <<- /maj/ \1 == "état" -1>> État                            # Majuscule manquante : si vous parlez de l’institution dirigeante d’une nation, écrivez “État”.
  8883   8883   
  8884   8884       é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]
  8885   8885       états de droit
................................................................................
  8908   8908   
  8909   8909   
  8910   8910   # gentilés / ethnonymes
  8911   8911   __maj_gentilés__
  8912   8912       océan Indien
  8913   8913       [îles|iles] Britanniques
  8914   8914       à [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]
  8915         -        <<- %-1>>
         8915  +        <<- !-1>>
  8916   8916   
  8917   8917       [>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]
  8918   8918           <<- /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.
  8919   8919           <<- /maj/ \1.islower() and not \1.startswith("canadienne") and
  8920   8920               ( value(<1, "|certains|certaines|ce|cet|cette|ces|des|les|nos|vos|leurs|quelques|plusieurs|chaque|une|aux|la|ma|ta|sa|")
  8921   8921               or ( morph(<1, ":B") and not morph(<2, ">numéro/") )
  8922   8922               or ( value(<1, "|l’|") and morph(\1, ":N.*:f:[si]") )
................................................................................
  9560   9560   
  9561   9561   TODO: comme
  9562   9562   
  9563   9563   
  9564   9564   __purge_locutions_latines__
  9565   9565       [a|à]       [priori|postériori|posteriori|contrario|cappella|minima]
  9566   9566           <<- ~>> *
  9567         -        <<- %1>>
         9567  +        <<- !1>>
  9568   9568   
  9569   9569       ab          [absurdo|initio]
  9570   9570       ad          [hoc|hominem|infinitum|nauseam|valorem|patres]
  9571   9571       ad          vitam æternam
  9572   9572       ex          [nihilo|cathedra|absurdo|abrupto]
  9573   9573       id          est
  9574   9574       in          [abstracto|extenso|extremis|fine|petto|situ|utero|vitro|vivo]
................................................................................
 14748  14748   __conf_cour_cours_court_courre__
 14749  14749       au [cour|court|courre|courres|courts] [de|d’|des|du]
 14750  14750           <<- /conf/ -2>> cours                               # Confusion. Locution “au cours de”. Une cour… Un cours… Adjectif : court(e).
 14751  14751   
 14752  14752       en cour martiale
 14753  14753       en cour [de|d’] [cassation|justice]
 14754  14754       en cour d’ [>assise]
 14755         -        <<- %1:2>>
        14755  +        <<- !1:2>>
 14756  14756   
 14757  14757       en cour
 14758  14758           <<- /conf/ ->> en cours                             # Confusion probable. Une cour… Un cours… Adjectif : court(e).
 14759  14759   
 14760  14760       >couper [cour|cours|courre|courres|courts]
 14761  14761           <<- /conf/ -2>> court                               # “Couper court” qui signifie écourter. Une cour… Un cours… Adjectif : court(e).
 14762  14762   
................................................................................
 16889  16889   TEST: t’étais vraiment cinglé à cette époque.
 16890  16890   TEST: il m’était évident que cette mission était à durée déterminée
 16891  16891   
 16892  16892   
 16893  16893   ## se rendre compte
 16894  16894   __ppas_s_être_rendu_compte__
 16895  16895       >être  rendu  compte
 16896         -        <<- %2:3>>
        16896  +        <<- !2:3>>
 16897  16897           <<- ~2:3>> _
 16898  16898   
 16899  16899       /VCint  rendu  compte
 16900         -        <<- morphVC(\1, ">être/") %2:3>>
        16900  +        <<- morphVC(\1, ">être/") !2:3>>
 16901  16901           <<- ~2:3>> _
 16902  16902   
 16903  16903       >être  [rendue|rendus|rendues]  compte
 16904  16904           <<- /ppas/ -2>> rendu                                                                       # Accord erroné : dans l’expression “se rendre compte”, “rendu” est invariable.
 16905  16905           <<- ~2:3>> _
 16906  16906   
 16907  16907       /VCint  [rendue|rendus|rendues]  compte
................................................................................
 16996  16996   TEST: tu deviens vraiment très {{forts}} à ce jeu.
 16997  16997   TEST: je voudrais bien être dans ses souliers
 16998  16998   
 16999  16999   
 17000  17000   __ppas_3sg_mas_verbe_état__
 17001  17001       [ce|ça|ceci|cela|c’|ç’] >avoir été >seule               [que|qu’]
 17002  17002       [ce|ça|ceci|cela|c’|ç’] >avoir été @:[AQ].*:f¬:[GWYme]  @:N.*:f
 17003         -        <<- %4>>
        17003  +        <<- !4>>
 17004  17004   
 17005  17005       [ce|ça|ceci|cela|c’|ç’] >être >seule                    [que|qu’]
 17006  17006       [ce|ça|ceci|cela|c’|ç’] >être @:[AQ].*:f¬:[GWYme]       @:N.*:f
 17007         -        <<- %3>>
        17007  +        <<- !3>>
 17008  17008   
 17009  17009       tout en [étant|semblant|devenant|restant|demeurant|redevenant|paraissant] @:A
 17010         -        <<- %4>>
        17010  +        <<- !4>>
 17011  17011   
 17012  17012       ([il|ce|c’|ç’|quiconque]) ?[ne|n’]¿ ?[en|y]¿ ([>être|>sembler|>devenir|>rester|>demeurer|>redevenir|>paraître|>paraitre])               [@:[NA].*:p¬:[GWYsi]|@:[AQ].*:f¬:[GWYme]]
 17013  17013       ([il|ce|c’|ç’|quiconque]) ?[ne|n’]¿ ?[en|y]¿ (>avoir) [été|semblé|paru]                                                                 [@:[NA].*:p¬:[GWYsi]|@:[AQ].*:f¬:[GWYme]]
 17014  17014       ([il|ce|c’|ç’|quiconque]) ?[ne|n’]¿ ?[en|y]¿ ([>être|>sembler]) [devenu|redevenu|resté|demeuré]                                         [@:[NA].*:p¬:[GWYsi]|@:[AQ].*:f¬:[GWYme]]
 17015  17015       ([il|ce|c’|ç’|quiconque]) ?[ne|n’]¿ ?[en|y]¿
 17016  17016           || ([>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])
 17017  17017           || [être|devenir|redevenir|rester]                                                                                                  [@:[NA].*:p¬:[GWYsi]|@:[AQ].*:f¬:[GWYme]]
................................................................................
 17567  17567           || [être|devenir|redevenir|rester]                                                          *WORD
 17568  17568       *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’]¿
 17569  17569           || ([>affirmer|>croire|>déclarer|>désirer|>détester|>dire|>estimer|>imaginer|>penser|>préférer|>savoir|>souhaiter|>vouloir])
 17570  17570           || être [devenu|redevenu|resté|demeuré|devenue|redevenue|restée|demeurée]                   *WORD
 17571  17571       *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’]¿
 17572  17572           || ([>affirmer|>croire|>déclarer|>désirer|>détester|>dire|>estimer|>imaginer|>penser|>préférer|>savoir|>souhaiter|>vouloir])
 17573  17573           || avoir [été|semblé|paru]                                                                  *WORD
 17574         -        <<- /ppas/ checkAgreement(\1, \-1) %-1>>
        17574  +        <<- /ppas/ checkAgreement(\1, \-1) !-1>>
 17575  17575   
 17576  17576   TEST: la danse est {{fini}}…
 17577  17577   TEST: Un orage est {{annoncée}}.
 17578  17578   TEST: Une averse est {{annoncé}}.
 17579  17579   TEST: Le chien ne sera pas {{oubliés}}
 17580  17580   TEST: les femmes sont vraiment {{partis}}                                         ->> parties
 17581  17581   TEST: les hommes ne sont pas tout à fait {{fâché}}                                ->> fâchés
................................................................................
 17608  17608           || [être|devenir|redevenir|rester]                                                          *WORD
 17609  17609       (*WORD)  [que|qu’]  (@:M)  ?[ne|n’]¿
 17610  17610           || ([>affirmer|>croire|>déclarer|>désirer|>détester|>dire|>estimer|>imaginer|>penser|>préférer|>savoir|>souhaiter|>vouloir])
 17611  17611           || être [devenu|redevenu|resté|demeuré|devenue|redevenue|restée|demeurée]                   *WORD
 17612  17612       (*WORD)  [que|qu’]  (@:M)  ?[ne|n’]¿
 17613  17613           || ([>affirmer|>croire|>déclarer|>désirer|>détester|>dire|>estimer|>imaginer|>penser|>préférer|>savoir|>souhaiter|>vouloir])
 17614  17614           || avoir [été|semblé|paru]                                                                  *WORD
 17615         -        <<- /ppas/ checkAgreement(\1, \-1) %-1>>
        17615  +        <<- /ppas/ checkAgreement(\1, \-1) !-1>>
 17616  17616   
 17617  17617   TEST: Antoine est {{mariée}}.
 17618  17618   TEST: Antoine n’est pas {{mariés}}.
 17619  17619   TEST: Antoine est peut-être {{fatiguée}}.
 17620  17620   TEST: Éric n’est pas très {{fatiguée}}.
 17621  17621   TEST: Martine est {{marié}}.
 17622  17622   TEST: Martine n’est pas {{marié}}.
................................................................................
 18062  18062   !!
 18063  18063   !!!! Participes passés après “avoir”                                                              !!
 18064  18064   !!
 18065  18065   !!
 18066  18066   
 18067  18067   __immu_les_avoir_fait_vinfi__
 18068  18068       les >avoir fait ?[me|m’|te|t’|se|s’|nous|vous|leur]¿ @:Y
 18069         -        <<- %3>>
        18069  +        <<- !3>>
 18070  18070   
 18071  18071   
 18072  18072   __ppas_pronom_avoir__
 18073  18073       [je|j’|tu|il|elle|on|ils|elles|et|qui]  ?[ne|n’]¿  ?[lui|leur]¿  >avoir  *WORD
 18074  18074           <<- /ppas/ not value(\-1, "|barre|confiance|cours|envie|peine|prise|crainte|cure|affaire|hâte|force|recours|")
 18075  18075               and value(<1, "|<start>|,|comme|comment|et|lorsque|lorsqu’|mais|où|ou|quand|qui|pourquoi|puisque|puisqu’|quoique|quoiqu’|si|s’|sinon|")
 18076  18076               and \-1.islower() and morph(\-1, ":(?:[123][sp]|Q.*:[fp])", ":(?:G|W|Q.*:m:[si])")

Changes to misc/grammalecte.sublime-syntax.

   121    121           1: keyword.textprocessor.group
   122    122       - match: '=>>'
   123    123         scope: keyword.disambiguator
   124    124       - match: '/(-?\d*(?::-?\d+|))>>'
   125    125         scope: keyword.tag
   126    126         captures:
   127    127           1: keyword.tag.group
   128         -    - match: '%(-?\d*(?::-?\d+|))>>'
          128  +    - match: '!(-?\d*(?::-?\d+|))>>'
   129    129         scope: keyword.tag
   130    130         captures:
   131    131           1: keyword.tag.group
   132    132   
   133    133       # Tokens
   134    134       - match: '(>)[\w-]+'
   135    135         scope: string.lemma