Overview
Comment: | [build][misc][fr] antipatterns for token rules, +syntax for SublimeText, +ajustements |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk | fr | build | new_feature | misc |
Files: | files | file ages | folders |
SHA3-256: |
6d63ab4c8731d1b30ca23df347de2ad6 |
User & Date: | olr on 2019-07-19 16:47:11 |
Other Links: | manifest | tags |
Context
2019-07-22
| ||
06:55 | [core] listRules() check-in: 00c946ab84 user: olr tags: trunk, core | |
2019-07-19
| ||
16:47 | [build][misc][fr] antipatterns for token rules, +syntax for SublimeText, +ajustements check-in: 6d63ab4c87 user: olr tags: trunk, fr, build, new_feature, misc | |
13:47 | [build] remove print() check-in: 284ea35ba0 user: olr tags: trunk, build | |
Changes
Modified compile_rules_graph.py from [6934d9eabf] to [f2d0218e09].
︙ | ︙ | |||
9 10 11 12 13 14 15 16 17 18 19 20 21 22 | import compile_rules_js_convert as jsconv dACTIONS = {} dFUNCTIONS = {} dFUNCNAME = {} dDECLENSIONS = {} def createFunction (sType, sCode, bStartWithEqual=False): "create a function (stored in <dFUNCTIONS>) and return function name" sCode = prepareFunction(sCode) if sType not in dFUNCNAME: dFUNCNAME[sType] = {} | > | 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | import compile_rules_js_convert as jsconv dACTIONS = {} dFUNCTIONS = {} dFUNCNAME = {} dDECLENSIONS = {} dANTIPATTERNS = {} def createFunction (sType, sCode, bStartWithEqual=False): "create a function (stored in <dFUNCTIONS>) and return function name" sCode = prepareFunction(sCode) if sType not in dFUNCNAME: dFUNCNAME[sType] = {} |
︙ | ︙ | |||
152 153 154 155 156 157 158 | lToken.append(sToken) return lToken def createRule (iLine, sRuleName, sTokenLine, iActionBlock, sActions, nPriority, dOptPriority, dDef, dDecl): "generator: create rule as list" # print(iLine, "//", sRuleName, "//", sTokenLine, "//", sActions, "//", nPriority) | > > > > > | > > > > > > > | | | | | | | | | | | | | | | | | | | | | | | | | | | | 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 | lToken.append(sToken) return lToken def createRule (iLine, sRuleName, sTokenLine, iActionBlock, sActions, nPriority, dOptPriority, dDef, dDecl): "generator: create rule as list" # print(iLine, "//", sRuleName, "//", sTokenLine, "//", sActions, "//", nPriority) if sTokenLine.startswith("!!") and sTokenLine.endswith("¡¡"): # antipattern sTokenLine = sTokenLine[2:-2].strip() if sRuleName not in dANTIPATTERNS: dANTIPATTERNS[sRuleName]= [] for lToken in genTokenLines(sTokenLine, dDef, dDecl): dANTIPATTERNS[sRuleName].append(lToken) else: # pattern for lToken in genTokenLines(sTokenLine, dDef, dDecl): if sRuleName in dANTIPATTERNS and lToken in dANTIPATTERNS[sRuleName]: # <lToken> matches an antipattern -> discard continue # Calculate positions dPos = {} # key: iGroup, value: iToken iGroup = 0 #if iLine == 15818: # debug # print(" ".join(lToken)) for i, sToken in enumerate(lToken): if sToken.startswith("(") and sToken.endswith(")"): lToken[i] = sToken[1:-1] iGroup += 1 dPos[iGroup] = i + 1 # we add 1, for we count tokens from 1 to n (not from 0) # Parse actions for iAction, sAction in enumerate(sActions.split(" <<- ")): sAction = sAction.strip() if sAction: sActionId = sRuleName + "__b" + str(iActionBlock) + "_a" + str(iAction) aAction = createAction(sActionId, sAction, nPriority, dOptPriority, len(lToken), dPos) if aAction: sActionName = storeAction(sActionId, aAction) lResult = list(lToken) lResult.extend(["##"+str(iLine), sActionName]) #if iLine == 13341: # print(" ".join(lToken)) # print(sActionId, aAction) yield lResult else: print(" # Error on action at line:", iLine) print(sTokenLine, "\n", sActions) def changeReferenceToken (sText, dPos): "change group reference in <sText> with values in <dPos>" if "\\" not in sText: return sText for i in range(len(dPos), 0, -1): |
︙ | ︙ |
Modified gc_lang/fr/rules.grx from [1af7331c29] to [085272d919].
︙ | ︙ | |||
6103 6104 6105 6106 6107 6108 6109 | <<- /conf/ not tag_before(\1, "ce_que") -1>> à # Confusion probable : “a” est une forme conjugée de “avoir”. Pour la préposition, écrivez “à”. TEST: travailler {{a}} bonne distance des fourneaux. TEST: Il l’a fait {{a}} cause de toi. __conf_à_cor_et_à_cri__ | < < < < | > | 6103 6104 6105 6106 6107 6108 6109 6110 6111 6112 6113 6114 6115 6116 6117 6118 | <<- /conf/ not tag_before(\1, "ce_que") -1>> à # Confusion probable : “a” est une forme conjugée de “avoir”. Pour la préposition, écrivez “à”. TEST: travailler {{a}} bonne distance des fourneaux. TEST: Il l’a fait {{a}} cause de toi. __conf_à_cor_et_à_cri__ !! à cor et à cri ¡¡ [a|à] [corps|cor+s] [et|est|es|ait|ais|aies|é|è|ei|ai|aient] [à|a] [cri+s|crie+s|crit] <<- /conf/ ->> à cor et à cri # Locution adverbiale invariable. (Le cor est un instrument à vent utilisé pour la chasse.)|https://fr.wiktionary.org/wiki/%C3%A0_cor_et_%C3%A0_cri TEST: Elles hurlèrent {{à corps et à cris}}. TEST: manifester sa colère à cor et à cri. DEF: humain [administrateur|baron|chevalier|comte|contrôleur|dieu|duc|émir|époux|frère|grand-père|homme|maître|maitre|mari|ministre|monsieur|neveu|oncle|patron|père|président|prince|prophète|roi|sultan|tsar|vice-président] |
︙ | ︙ | |||
6158 6159 6160 6161 6162 6163 6164 | TEST: nous avons l’{{intention}} de la reine TEST: Ils ont l’intention de nous nuire TEST: Elles avaient bien l’intention d’en parler. TEST: J’ai mis ces trésors de côté spécialement à votre intention __conf_à_moindre_cout__ | | > > > > < | | > | < < > | < < | | < | | | 6155 6156 6157 6158 6159 6160 6161 6162 6163 6164 6165 6166 6167 6168 6169 6170 6171 6172 6173 6174 6175 6176 6177 6178 6179 6180 6181 6182 6183 6184 6185 6186 6187 6188 6189 6190 6191 6192 6193 6194 6195 6196 6197 6198 6199 6200 6201 6202 6203 6204 6205 6206 6207 6208 6209 6210 6211 6212 6213 6214 6215 6216 6217 6218 6219 | TEST: nous avons l’{{intention}} de la reine TEST: Ils ont l’intention de nous nuire TEST: Elles avaient bien l’intention d’en parler. TEST: J’ai mis ces trésors de côté spécialement à votre intention __conf_à_moindre_cout__ !! à moindre [cout|coût] ¡¡ [a|à] [moindre+s] [>cou|>coup|cout+s|coût+s] <<- /conf/ ->> à moindre coût # Confusion. Pour évoquer des dépenses, écrivez “coût”. TEST: {{à moindres coups}} TEST: tout acheter à moindre coût __conf_à_moindres_frais__ !! à moindres frais ¡¡ [a|à] [moindre+s] [frai+s|>frêt] <<- /conf/ ->> à moindres frais # Pour évoquer des dépenses, écrivez “frais” (pluriel). TEST: {{a moindre frais}} TEST: S’en sortir à moindres frais, pas si simple. __conf_à_parts_égales__ !! à parts égales ¡¡ [a|à] [part|parts|par|pare|pares] [égale+s] <<- /conf/ ->> à parts égales # Locution “à parts égales” (toujours au pluriel). TEST: {{à part égale}} TEST: un partage à parts égales __conf_à_peu_près__ !! à peu près ¡¡ [a|à] [peu|peux|peut] [près|>pré|>prête] <<- /conf/ ->> à peu près # Confusion.|https://fr.wiktionary.org/wiki/%C3%A0_peu_pr%C3%A8s <<- ~>> * TEST: C’est {{à peu prêt}} la même chose. TEST: elle est {{a peut près}} au point. TEST: C’est à peu près ça. __conf_à_pleines_dents__ !! à pleines dents ¡¡ [a|à] [>plaine|pleine+s] [dent+s|>dan] <<- /conf/ ->> à pleines dents # Locution “à pleines dents” (toujours au pluriel). TEST: Elle mord la vie {{à plaine dent}}. __conf_à_tire_d_aile__ à tire d’ >aile <<- /tu/ ->> à tire-d’aile # Trait d’union manquant. Locution “à tire-d’aile”.|https://fr.wiktionary.org/wiki/%C3%A0_tire-d%E2%80%99aile !! à tire-d’aile ¡¡ [a|à] [>tir|>tire] d’ [>aile|elle|elles|ail] [a|à] [tir-d’aile|tirs-d’aile|tir-d’ailes|tirs-d’ailes] <<- /conf/ ->> à tire-d’aile # Confusion. Locution “à tire-d’aile”.|https://fr.wiktionary.org/wiki/%C3%A0_tire-d%E2%80%99aile TEST: venir {{à tir d’ail}} jusqu’ici TEST: Elle arrivait à tire-d’aile. |
︙ | ︙ | |||
6230 6231 6232 6233 6234 6235 6236 6237 6238 | TEST: il gueulait {{à tir larigot}} TEST: Au nom du progrès, les Victoriens en mal de modernisation rasèrent à tire-larigot les églises et les bâtiments jugés trop anciens. __conf_à_vau_l_eau__ [a|à] [volo|vo-lo] [à|a] [>veau|>vau|vo|vos] l’ [o|os|au|aux|>eau] | > | | 6227 6228 6229 6230 6231 6232 6233 6234 6235 6236 6237 6238 6239 6240 6241 6242 6243 6244 | TEST: il gueulait {{à tir larigot}} TEST: Au nom du progrès, les Victoriens en mal de modernisation rasèrent à tire-larigot les églises et les bâtiments jugés trop anciens. __conf_à_vau_l_eau__ !! à vau-l’eau ¡¡ [a|à] [volo|vo-lo] [à|a] [>veau|>vau|vo|vos] l’ [o|os|au|aux|>eau] [a|à] [vau-l’eau|vaux-l’eau] <<- /conf/ ->> à vau-l’eau # Confusion. Locution “à vau-l’eau”, qui signifie “au fil de l’eau, sans contrôle”.|https://fr.wiktionary.org/wiki/%C3%A0_vau-l%E2%80%99eau TEST: tout part {{à veau l’eau}} TEST: On décida de tout laisser partir {{à vau l’o}} TEST: une dérive à vau-l’eau. |
︙ | ︙ | |||
6725 6726 6727 6728 6729 6730 6731 | <<- /conf/ -2>> au temps # Pour reconnaître son erreur, « au temps pour moi » est l’expression recommandée par l’Académie française. TEST: Je me suis trompé. {{Autant}} pour moi. TEST: Je me suis trompé. {{Au tan}} pour moi. __conf_autant_que_faire_se_peut!7__ | < < | | | | 6723 6724 6725 6726 6727 6728 6729 6730 6731 6732 6733 6734 6735 6736 6737 6738 6739 | <<- /conf/ -2>> au temps # Pour reconnaître son erreur, « au temps pour moi » est l’expression recommandée par l’Académie française. TEST: Je me suis trompé. {{Autant}} pour moi. TEST: Je me suis trompé. {{Au tan}} pour moi. __conf_autant_que_faire_se_peut!7__ !! autant que faire se peut ¡¡ [au|aux] [temps|tant|>tan] [que|qu’] [faire|ferre|ferres|>fer] [se|ce] [peu|peut|peux] [>autan|autant] [que|qu’] [faire|ferre|ferres|>fer] [se|ce] [peu|peut|peux] <<- /conf/ ->> autant que faire se peut # Locution adverbiale : « autant que faire se peut ».|https://fr.wiktionary.org/wiki/autant_que_faire_se_peut TEST: on va y arriver, {{au temps que faire se peu}}… TEST: autant que faire se peut, il faut éviter la confusion entre ces deux discours. # ça / çà / sa |
︙ | ︙ | |||
7031 7032 7033 7034 7035 7036 7037 | TEST: Elle a l’impression d’être laissée pour {{comte}}. TEST: C’est un règlement de {{comte}} entre voyous. TEST: on va lui régler son {{conte}}, à cet enculé. TEST: tout {{conte}} fait, ça reste un salopard. __conf_conte_de_fée__ | | | | | | 7027 7028 7029 7030 7031 7032 7033 7034 7035 7036 7037 7038 7039 7040 7041 7042 7043 7044 | TEST: Elle a l’impression d’être laissée pour {{comte}}. TEST: C’est un règlement de {{comte}} entre voyous. TEST: on va lui régler son {{conte}}, à cet enculé. TEST: tout {{conte}} fait, ça reste un salopard. __conf_conte_de_fée__ [comte+s|>compte] de bonne+s >femme [comte+s|>compte] de >fée [comte+s|>compte] [>allégorique|>fantastique|>littéraire|merveilleux|moral|moraux|oral|oraux|>populaire|>satirique|>traditionnelle] [comte+s|>compte] et >légende <<- /conf/ -1>> conte|contes # Confusion probable. Si vous parlez d’un récit, écrivez :|https://fr.wiktionary.org/wiki/conte TEST: Encore un {{comte}} de fée, assez de ces fadaises ! TEST: c’est un {{compte}} allégorique. TEST: {{Comptes}} et légendes des Terres du Milieu. TEST: ce sont des {{comptes}} de bonnes femmes TEST: Elle parla au comte d’amour, mais il fit mine de n’y rien entendre. |
︙ | ︙ | |||
7079 7080 7081 7082 7083 7084 7085 | TEST: L’hostie n’est pas le {{cor}} du Christ. TEST: elle détestait son nouveau garde du {{cor}} TEST: Elle souffla puissamment dans le {{corps}} de chasse. # cour / cours / court __conf_cour_cours_court_courre__ | | | 7075 7076 7077 7078 7079 7080 7081 7082 7083 7084 7085 7086 7087 7088 7089 | TEST: L’hostie n’est pas le {{cor}} du Christ. TEST: elle détestait son nouveau garde du {{cor}} TEST: Elle souffla puissamment dans le {{corps}} de chasse. # cour / cours / court __conf_cour_cours_court_courre__ au [cour|court+s|courre+s] [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>> |
︙ | ︙ | |||
7198 7199 7200 7201 7202 7203 7204 | TEST: tout ce qu’il apporte d’avantages pécuniaires. TEST: un certain nombre d’avantages sociaux. TEST: ils ont tant d’avantages. # de part en part __conf_de_part_en_part__ | | | < | | < | 7194 7195 7196 7197 7198 7199 7200 7201 7202 7203 7204 7205 7206 7207 7208 7209 7210 7211 7212 7213 7214 7215 7216 7217 7218 7219 | TEST: tout ce qu’il apporte d’avantages pécuniaires. TEST: un certain nombre d’avantages sociaux. TEST: ils ont tant d’avantages. # de part en part __conf_de_part_en_part__ !! de part en part ¡¡ [de|d’] [par|part|parts|pare|pares] [en|an] [par|part|parts|pare|pares] <<- /conf/ ->> de part en part # Confusion. Locution “de part en part”.|https://fr.wiktionary.org/wiki/de_part_en_part TEST: {{de par en par}} ->> de part en part TEST: ils essayèrent tout, de part en part. # de temps à autre __conf_de_temps_à_autre__ !! [de|d’] temps à autre ¡¡ [de|d’] [>tan|tant|temps] [à|a] [autre+s] <<- /conf/ ->> de temps à autre # Confusion. Locution “de temps à autre”.|https://fr.wiktionary.org/wiki/de_temps_%C3%A0_autre TEST: Il continuait son travail, mâchonnant de temps à autre une grosse chique qui tour à tour lui gonflait chaque joue. TEST: Il venait {{de temps à autres}}. TEST: {{de tan à autre}}, c’était correct de venir par ici. |
︙ | ︙ | |||
9484 9485 9486 9487 9488 9489 9490 9491 9492 9493 9494 9495 9496 9497 | # 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 TEST: 15 {{Septembre}} ->> septembre TEST: 23 {{Messidor}} ->> messidor TEST: ils viendront en {{Mars}}. ->> mars 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 # Assemblée __maj_Assemblée_nationale__ assemblée nationale <<- \1 == "assemblée" -1>> Assemblée # Majuscule manquante. | > > | 9478 9479 9480 9481 9482 9483 9484 9485 9486 9487 9488 9489 9490 9491 9492 9493 | # 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 TEST: 15 {{Septembre}} ->> septembre TEST: 23 {{Messidor}} ->> messidor TEST: ils viendront en {{Mars}}. ->> mars 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 TEST: André Juin était un sculpteur français. TODO: La bataille de Monte Cassino révèle le génie militaire du général Juin. # Assemblée __maj_Assemblée_nationale__ assemblée nationale <<- \1 == "assemblée" -1>> Assemblée # Majuscule manquante. |
︙ | ︙ | |||
12742 12743 12744 12745 12746 12747 12748 12749 12750 12751 12752 12753 12754 12755 | >compter à rebours >condamner à mort >couler à ?grands¿ flots >demander [assistance|audience|conseil|pardon] [>donner|>redonner] [naissance|sens|suite|vie] [>donner|>redonner] quartier libre >élire domicile >faire [allusion|assaut|attention|chaud|confiance|connaissance|compliqué|copain-copain|date|débat|défaut|demi-tour|écran|envie|erreur|état|exception|figure|froid|front|grève|halte|honte|illusion|mouche|office|part|peur|polémique|plaisir|preuve|rage|scandale|sens|signe|usage|volte-face] >faire amende honorable >faire bande à part >faire bon accueil >faire bonne figure >faire chou blanc >faire copain copain | > | 12738 12739 12740 12741 12742 12743 12744 12745 12746 12747 12748 12749 12750 12751 12752 | >compter à rebours >condamner à mort >couler à ?grands¿ flots >demander [assistance|audience|conseil|pardon] [>donner|>redonner] [naissance|sens|suite|vie] [>donner|>redonner] quartier libre >élire domicile >étouffer dans l’ œuf >faire [allusion|assaut|attention|chaud|confiance|connaissance|compliqué|copain-copain|date|débat|défaut|demi-tour|écran|envie|erreur|état|exception|figure|froid|front|grève|halte|honte|illusion|mouche|office|part|peur|polémique|plaisir|preuve|rage|scandale|sens|signe|usage|volte-face] >faire amende honorable >faire bande à part >faire bon accueil >faire bonne figure >faire chou blanc >faire copain copain |
︙ | ︙ | |||
22212 22213 22214 22215 22216 22217 22218 | TODO: Ils sont âgés de 4 et 1 ans. TODO: Mille neuf cent quatre-vingt. (dépend du contexte) TODO: La Mustang est une voiture. TODO: Il faut se bien connaître soi-même. TODO: C’est lui ou moi qui a gagné. TODO: Des copains plus vieux que moi qui fumaient. TODO: Des copains plus vieux que toi qui fumaient. | < < | 22209 22210 22211 22212 22213 22214 22215 22216 22217 22218 22219 22220 22221 22222 | TODO: Ils sont âgés de 4 et 1 ans. TODO: Mille neuf cent quatre-vingt. (dépend du contexte) TODO: La Mustang est une voiture. TODO: Il faut se bien connaître soi-même. TODO: C’est lui ou moi qui a gagné. TODO: Des copains plus vieux que moi qui fumaient. TODO: Des copains plus vieux que toi qui fumaient. TODO: Les côtes sont dans leur ensemble extrêmement découpées. !!! Indécidable !! TEST: Du sable fin grippe les rouages (accord avec ce qui précède). TEST: Du monde noir sortent les envahisseurs (accord avec ce qui suit). !!! Autres tests !! |
︙ | ︙ |
Modified misc/grammalecte.sublime-color-scheme from [7d086242cb] to [d7042c117d].
1 2 3 4 | { "name": "Grammalecte Color Scheme", "globals": { | | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | { "name": "Grammalecte Color Scheme", "globals": { "background": "hsl(210, 20%, 15%)", "foreground": "hsl(210, 20%, 95%)", "caret": "hsl(210, 20%, 80%)", "block_caret": "red", "line_highlight": "hsl(210, 60%, 25%)", "bracket_options": "underline bold", "selection": "hsl(210, 50%, 20%)", "selection_border": "hsl(210, 80%, 40%)", "selection_border_width": "1", "selection_corner_style": "cut", "selection_corner_radius": "4", |
︙ | ︙ | |||
25 26 27 28 29 30 31 | { "name": "Options command", "scope": "options.command", "foreground": "#50F0A0", "font_style": "bold", }, { "name": "Options parameter", "scope": "options.parameter", "foreground": "#70B0F0", "font_style": "bold", }, { "name": "Comment", "scope": "comment", "foreground": "hsl(210, 10%, 50%)" }, { "name": "Bookmark", "scope": "bookmark", "foreground": "#A0F0FF", "background": "#0050A0", }, { "name": "Graphline", "scope": "graphline", "foreground": "hsl(0, 100%, 80%)", "background": "hsl(0, 100%, 20%)", "font_style": "bold", }, { "name": "Error message", "scope": "string.message", "foreground": "hsl(0, 50%, 65%)", }, | > | | 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | { "name": "Options command", "scope": "options.command", "foreground": "#50F0A0", "font_style": "bold", }, { "name": "Options parameter", "scope": "options.parameter", "foreground": "#70B0F0", "font_style": "bold", }, { "name": "Comment", "scope": "comment", "foreground": "hsl(210, 10%, 50%)" }, { "name": "Bookmark", "scope": "bookmark", "foreground": "#A0F0FF", "background": "#0050A0", }, { "name": "Graphline", "scope": "graphline", "foreground": "hsl(0, 100%, 80%)", "background": "hsl(0, 100%, 20%)", "font_style": "bold", }, { "name": "Error message", "scope": "string.message", "foreground": "hsl(0, 50%, 65%)", }, { "name": "Error message esc", "scope": "string.message.esc", "foreground": "hsl(30, 100%, 65%)", "background": "hsl(60, 100%, 12%)", "font_style": "bold" }, { "name": "Error message URL", "scope": "string.message.url", "foreground": "hsl(180, 100%, 35%)", "background": "hsl(180, 100%, 12%)", }, { "name": "Test header", "scope": "test.header", "foreground": "hsl(150, 100%, 60%)", "font_style": "bold" }, { "name": "Test option", "scope": "test.error", "foreground": "hsl(0, 90%, 67%)", }, { "name": "Todo", "scope": "todo", "foreground": "hsl(20, 90%, 60%)", "font_style": "bold", }, { "name": "Entity brackets", "scope": "entity.brackets", "foreground": "#90A0A0", "background": "#203030", }, { "name": "Entity parenthesis", "scope": "entity.parenthesis", "foreground": "#A0A0C0", "background": "#303035", }, |
︙ | ︙ | |||
51 52 53 54 55 56 57 58 59 60 | { "name": "Rule options", "scope": "rule.options", "foreground": "#F0A020", "font_style": "bold", }, { "name": "Rule casing", "scope": "rule.casing", "foreground": "#30C0F0", "font_style": "bold", }, { "name": "Rule action option", "scope": "rule.actionoption", "foreground": "hsl(0, 50%, 50%)", "background": "hsl(330, 50%, 20%)", "font_style": "bold", }, { "name": "Rule option name", "scope": "rule.optionname", "foreground": "hsl(330, 80%, 80%)", "background": "hsl(330, 60%, 20%)", "font_style": "bold", }, { "name": "Rule name (regex)", "scope": "rule.rulename_regex", "foreground": "#A0A0A0", "font_style": "italic", }, { "name": "Rule name (graph)", "scope": "rule.rulename_graph", "foreground": "#F0D080", }, { "name": "Rule priority", "scope": "rule.priority", "foreground": "#F06060", }, { "name": "Entity Valid", "scope": "entity.valid", "foreground": "hsl(150, 100%, 80%)", "background": "hsl(150, 100%, 20%)", "font_style": "bold", }, { "name": "Entity Invalid", "scope": "entity.invalid", "foreground": "hsl(0, 100%, 80%)", "background": "hsl(0, 100%, 20%)", "font_style": "bold", }, | > > | | | | | | | | | | 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 | { "name": "Rule options", "scope": "rule.options", "foreground": "#F0A020", "font_style": "bold", }, { "name": "Rule casing", "scope": "rule.casing", "foreground": "#30C0F0", "font_style": "bold", }, { "name": "Rule action option", "scope": "rule.actionoption", "foreground": "hsl(0, 50%, 50%)", "background": "hsl(330, 50%, 20%)", "font_style": "bold", }, { "name": "Rule option name", "scope": "rule.optionname", "foreground": "hsl(330, 80%, 80%)", "background": "hsl(330, 60%, 20%)", "font_style": "bold", }, { "name": "Rule name (regex)", "scope": "rule.rulename_regex", "foreground": "#A0A0A0", "font_style": "italic", }, { "name": "Rule name (graph)", "scope": "rule.rulename_graph", "foreground": "#F0D080", }, { "name": "Rule priority", "scope": "rule.priority", "foreground": "#F06060", }, { "name": "Rule antipattern", "scope": "rule.antipattern", "foreground": "hsl(0, 80%, 60%)", "background": "hsl(0, 50%, 20%)" }, { "name": "Rule antipattern token", "scope": "rule.antipattern.token", "foreground": "hsl(0, 60%, 90%)", }, { "name": "Entity Valid", "scope": "entity.valid", "foreground": "hsl(150, 100%, 80%)", "background": "hsl(150, 100%, 20%)", "font_style": "bold", }, { "name": "Entity Invalid", "scope": "entity.invalid", "foreground": "hsl(0, 100%, 80%)", "background": "hsl(0, 100%, 20%)", "font_style": "bold", }, { "name": "Token meta", "scope": "string.meta", "foreground": "hsl(270, 100%, 90%)", "background": "hsl(270, 100%, 40%)", }, { "name": "Token token", "scope": "string.token", "foreground": "hsl(240, 50%, 90%)", "background": "hsl(240, 50%, 40%)", }, { "name": "Token Jumptoken", "scope": "string.jumptoken", "foreground": "hsl(0, 50%, 90%)", "background": "hsl(10, 50%, 40%)", }, { "name": "Token lemma", "scope": "string.lemma", "foreground": "hsl(210, 100%, 80%)", "background": "hsl(210, 100%, 15%)", }, { "name": "Token tag", "scope": "string.tag", "foreground": "hsl(30, 100%, 90%)", "background": "hsl(30, 100%, 20%)", }, { "name": "Token regex", "scope": "string.regex", "foreground": "hsl(60, 100%, 80%)", "background": "hsl(60, 100%, 10%)", }, { "name": "Token morph regex", "scope": "string.morph.regex", "foreground": "hsl(150, 80%, 90%)", "background": "hsl(150, 80%, 10%)", }, { "name": "Token morph negregex", "scope": "string.morph.negregex","foreground": "hsl(0, 80%, 90%)", "background": "hsl(0, 80%, 10%)", }, { "name": "Keyword Python", "scope": "keyword.python", "foreground": "#A0A0A0", }, { "name": "Keyword", "scope": "keyword - (source.c keyword.operator | source.c++ keyword.operator | source.objc keyword.operator | source.objc++ keyword.operator), keyword.operator.word", "foreground": "#F06070", }, { "name": "String", "scope": "string", "foreground": "hsl(40, 100%, 80%)", }, { "name": "Number", "scope": "constant.numeric", "foreground": "hsl(270, 100%, 70%)", "font_style": "bold", }, { "name": "Built-in constant", "scope": "constant.language", "foreground": "#AE81FF", "font_style": "italic", }, { "name": "User-defined constant", "scope": "constant.character, constant.other", "foreground": "#AE81FF", }, { "name": "Storage", "scope": "storage", "foreground": "#F92672", "font_style": "bold", }, |
︙ | ︙ |
Modified misc/grammalecte.sublime-syntax from [b81150a5bf] to [8396844b7b].
︙ | ︙ | |||
14 15 16 17 18 19 20 | #push: double_quoted_string # Comments begin with a '#' and finish at the end of the line - match: '^#.*' scope: comment # Error message | | > | | | 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | #push: double_quoted_string # Comments begin with a '#' and finish at the end of the line - match: '^#.*' scope: comment # Error message - match: '(?<= )# ' scope: string.message push: - meta_scope: string.message - match: '\\-?[0-9]+' scope: string.message.esc - match: '\| ?https?://[\w./%?&=#+-]+' scope: string.message.url - match: $ pop: true # Numbers - match: '\b(-)?[0-9.]+\b' scope: constant.numeric |
︙ | ︙ | |||
85 86 87 88 89 90 91 92 93 94 95 96 97 98 | 2: rule.priority - match: '/(\w+)/' scope: rule.actionoption captures: 1: rule.optionname # Definitions and options - match: '^OPT(?:GROUP|LANG|PRIORITY)/|^OPT(?:SOFTWARE|COLORTHEME):|^COLOR/' scope: options.command - match: '^OPT(?:LABEL|COLOR|)/' scope: options.parameter | > > > > > | 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 | 2: rule.priority - match: '/(\w+)/' scope: rule.actionoption captures: 1: rule.optionname - match: '!!(.+)¡¡' scope: rule.antipattern captures: 1: rule.antipattern.token # Definitions and options - match: '^OPT(?:GROUP|LANG|PRIORITY)/|^OPT(?:SOFTWARE|COLORTHEME):|^COLOR/' scope: options.command - match: '^OPT(?:LABEL|COLOR|)/' scope: options.parameter |
︙ | ︙ |