View raw

1 { 2 "comment": "This grammar is used by Atom (Oniguruma), GitHub (PCRE), and VSCode (Oniguruma),\nso all regexps must be compatible with both engines.\n\nSpecs:\n- https://github.com/kkos/oniguruma/blob/master/doc/RE\n- https://www.pcre.org/current/doc/html/", 3 "fileTypes": [ 4 "jl" 5 ], 6 "scopeName": "source.julia", 7 "firstLineMatch": "^#!.*\\bjulia\\s*$", 8 "name": "Julia", 9 "patterns": [ 10 { 11 "include": "#operator" 12 }, 13 { 14 "include": "#array" 15 }, 16 { 17 "include": "#string" 18 }, 19 { 20 "include": "#parentheses" 21 }, 22 { 23 "include": "#bracket" 24 }, 25 { 26 "include": "#function_decl" 27 }, 28 { 29 "include": "#function_call" 30 }, 31 { 32 "include": "#for_block" 33 }, 34 { 35 "include": "#keyword" 36 }, 37 { 38 "include": "#number" 39 }, 40 { 41 "include": "#comment" 42 }, 43 { 44 "include": "#type_decl" 45 }, 46 { 47 "include": "#symbol" 48 }, 49 { 50 "include": "#punctuation" 51 } 52 ], 53 "repository": { 54 "array": { 55 "patterns": [ 56 { 57 "begin": "\\[", 58 "beginCaptures": { 59 "0": { 60 "name": "meta.bracket.julia" 61 } 62 }, 63 "end": "(\\])((?:\\.)?'*)", 64 "endCaptures": { 65 "1": { 66 "name": "meta.bracket.julia" 67 }, 68 "2": { 69 "name": "keyword.operator.transpose.julia" 70 } 71 }, 72 "name": "meta.array.julia", 73 "patterns": [ 74 { 75 "match": "\\bbegin\\b", 76 "name": "constant.numeric.julia" 77 }, 78 { 79 "match": "\\bend\\b", 80 "name": "constant.numeric.julia" 81 }, 82 { 83 "include": "#self_no_for_block" 84 } 85 ] 86 } 87 ] 88 }, 89 "parentheses": { 90 "patterns": [ 91 { 92 "begin": "\\(", 93 "beginCaptures": { 94 "0": { 95 "name": "meta.bracket.julia" 96 } 97 }, 98 "end": "(\\))((?:\\.)?'*)", 99 "endCaptures": { 100 "1": { 101 "name": "meta.bracket.julia" 102 }, 103 "2": { 104 "name": "keyword.operator.transpose.julia" 105 } 106 }, 107 "patterns": [ 108 { 109 "include": "#self_no_for_block" 110 } 111 ] 112 } 113 ] 114 }, 115 "bracket": { 116 "patterns": [ 117 { 118 "begin": "\\{", 119 "beginCaptures": { 120 "0": { 121 "name": "meta.bracket.julia" 122 } 123 }, 124 "end": "(\\})((?:\\.)?'*)", 125 "endCaptures": { 126 "1": { 127 "name": "meta.bracket.julia" 128 }, 129 "2": { 130 "name": "keyword.operator.transpose.julia" 131 } 132 }, 133 "patterns": [ 134 { 135 "include": "#self_no_for_block" 136 } 137 ] 138 } 139 ] 140 }, 141 "comment_tags": { 142 "patterns": [ 143 { 144 "match": "\\bTODO\\b", 145 "name": "keyword.other.comment-annotation.julia" 146 }, 147 { 148 "match": "\\bFIXME\\b", 149 "name": "keyword.other.comment-annotation.julia" 150 }, 151 { 152 "match": "\\bCHANGED\\b", 153 "name": "keyword.other.comment-annotation.julia" 154 }, 155 { 156 "match": "\\bXXX\\b", 157 "name": "keyword.other.comment-annotation.julia" 158 } 159 ] 160 }, 161 "comment": { 162 "patterns": [ 163 { 164 "include": "#comment_block" 165 }, 166 { 167 "begin": "#", 168 "beginCaptures": { 169 "0": { 170 "name": "punctuation.definition.comment.julia" 171 } 172 }, 173 "end": "\\n", 174 "name": "comment.line.number-sign.julia", 175 "patterns": [ 176 { 177 "include": "#comment_tags" 178 } 179 ] 180 } 181 ] 182 }, 183 "comment_block": { 184 "patterns": [ 185 { 186 "begin": "#=", 187 "beginCaptures": { 188 "0": { 189 "name": "punctuation.definition.comment.begin.julia" 190 } 191 }, 192 "end": "=#", 193 "endCaptures": { 194 "0": { 195 "name": "punctuation.definition.comment.end.julia" 196 } 197 }, 198 "name": "comment.block.number-sign-equals.julia", 199 "patterns": [ 200 { 201 "include": "#comment_tags" 202 }, 203 { 204 "include": "#comment_block" 205 } 206 ] 207 } 208 ] 209 }, 210 "function_call": { 211 "patterns": [ 212 { 213 "begin": "((?:[[:alpha:]_\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{So}←-⇿])(?:[[:word:]_!\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{Mn}\u0001-¡]|[^\\P{Mc}\u0001-¡]|[^\\P{Nd}\u0001-¡]|[^\\P{Pc}\u0001-¡]|[^\\P{Sk}\u0001-¡]|[^\\P{Me}\u0001-¡]|[^\\P{No}\u0001-¡]|[′-‷⁗]|[^\\P{So}←-⇿])*)({(?:[^{}]|{(?:[^{}]|{[^{}]*})*})*})?\\.?(\\()", 214 "beginCaptures": { 215 "1": { 216 "name": "support.function.julia" 217 }, 218 "2": { 219 "name": "support.type.julia" 220 }, 221 "3": { 222 "name": "meta.bracket.julia" 223 } 224 }, 225 "end": "\\)(('|(\\.'))*\\.?')?", 226 "endCaptures": { 227 "0": { 228 "name": "meta.bracket.julia" 229 }, 230 "1": { 231 "name": "keyword.operator.transposed-func.julia" 232 } 233 }, 234 "patterns": [ 235 { 236 "include": "#self_no_for_block" 237 } 238 ] 239 } 240 ] 241 }, 242 "function_decl": { 243 "patterns": [ 244 { 245 "captures": { 246 "1": { 247 "name": "entity.name.function.julia" 248 }, 249 "2": { 250 "name": "support.type.julia" 251 } 252 }, 253 "match": "((?:[[:alpha:]_\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{So}←-⇿])(?:[[:word:]_!\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{Mn}\u0001-¡]|[^\\P{Mc}\u0001-¡]|[^\\P{Nd}\u0001-¡]|[^\\P{Pc}\u0001-¡]|[^\\P{Sk}\u0001-¡]|[^\\P{Me}\u0001-¡]|[^\\P{No}\u0001-¡]|[′-‷⁗]|[^\\P{So}←-⇿])*)({(?:[^{}]|{(?:[^{}]|{[^{}]*})*})*})?(?=\\([^#]*\\)(::[^\\s]+)?(\\s*\\bwhere\\b\\s+.+?)?\\s*?=(?![=>]))", 254 "comment": "first group is function name\nSecond group is type parameters (e.g. {T<:Number, S})\nThen open parens\nThen a lookahead ensures that we are followed by:\n - anything (function arguments)\n - 0 or more spaces\n - Finally an equal sign\nNegative lookahead ensures we don't have another equal sign (not `==`)" 255 }, 256 { 257 "captures": { 258 "1": { 259 "name": "keyword.other.julia" 260 }, 261 "2": { 262 "name": "keyword.operator.dots.julia" 263 }, 264 "3": { 265 "name": "entity.name.function.julia" 266 }, 267 "4": { 268 "name": "support.type.julia" 269 } 270 }, 271 "match": "\\b(function|macro)(?:\\s+(?:(?:[[:alpha:]_\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{So}←-⇿])(?:[[:word:]_!\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{Mn}\u0001-¡]|[^\\P{Mc}\u0001-¡]|[^\\P{Nd}\u0001-¡]|[^\\P{Pc}\u0001-¡]|[^\\P{Sk}\u0001-¡]|[^\\P{Me}\u0001-¡]|[^\\P{No}\u0001-¡]|[′-‷⁗]|[^\\P{So}←-⇿])*(\\.))?((?:[[:alpha:]_\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{So}←-⇿])(?:[[:word:]_!\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{Mn}\u0001-¡]|[^\\P{Mc}\u0001-¡]|[^\\P{Nd}\u0001-¡]|[^\\P{Pc}\u0001-¡]|[^\\P{Sk}\u0001-¡]|[^\\P{Me}\u0001-¡]|[^\\P{No}\u0001-¡]|[′-‷⁗]|[^\\P{So}←-⇿])*)({(?:[^{}]|{(?:[^{}]|{[^{}]*})*})*})?|\\s*)(?=\\()", 272 "comment": "similar regex to previous, but with keyword not 1-line syntax" 273 } 274 ] 275 }, 276 "for_block": { 277 "comment": "for blocks need to be special-cased to support tokenizing 'outer' properly", 278 "patterns": [ 279 { 280 "begin": "\\b(for)\\b", 281 "beginCaptures": { 282 "0": { 283 "name": "keyword.control.julia" 284 } 285 }, 286 "end": "(?<!,|\\s)(\\s*\\n)", 287 "patterns": [ 288 { 289 "match": "\\bouter\\b", 290 "name": "keyword.other.julia" 291 }, 292 { 293 "include": "$self" 294 } 295 ] 296 } 297 ] 298 }, 299 "keyword": { 300 "patterns": [ 301 { 302 "match": "\\b(?<![:_\\.])(?:function|mutable\\s+struct|struct|macro|quote|abstract\\s+type|primitive\\s+type|typegroup|module|baremodule|where)\\b", 303 "name": "keyword.other.julia" 304 }, 305 { 306 "match": "\\b(?<![:_])(?:if|else|elseif|for|while|begin|let|do|try|catch|finally|return|break|continue)\\b", 307 "name": "keyword.control.julia" 308 }, 309 { 310 "match": "\\b(?<![:_])end\\b", 311 "name": "keyword.control.end.julia" 312 }, 313 { 314 "match": "\\b(?<![:_])(?:global|local|const)\\b", 315 "name": "keyword.storage.modifier.julia" 316 }, 317 { 318 "match": "\\b(?<![:_])(?:export)\\b", 319 "name": "keyword.control.export.julia" 320 }, 321 { 322 "match": "^(?:public)\\b", 323 "name": "keyword.control.public.julia" 324 }, 325 { 326 "match": "\\b(?<![:_])(?:import)\\b", 327 "name": "keyword.control.import.julia" 328 }, 329 { 330 "match": "\\b(?<![:_])(?:using)\\b", 331 "name": "keyword.control.using.julia" 332 }, 333 { 334 "match": "(?<=\\S\\s+)\\b(as)\\b(?=\\s+\\S)", 335 "name": "keyword.control.as.julia" 336 }, 337 { 338 "match": "@(\\.|(?:[[:alpha:]_\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{So}←-⇿])(?:[[:word:]_!\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{Mn}\u0001-¡]|[^\\P{Mc}\u0001-¡]|[^\\P{Nd}\u0001-¡]|[^\\P{Pc}\u0001-¡]|[^\\P{Sk}\u0001-¡]|[^\\P{Me}\u0001-¡]|[^\\P{No}\u0001-¡]|[′-‷⁗]|[^\\P{So}←-⇿])*|[\\p{S}\\p{P}&&[^\\s@]]+)", 339 "name": "support.function.macro.julia" 340 } 341 ] 342 }, 343 "number": { 344 "patterns": [ 345 { 346 "match": "((?<!(?:[[:word:]_!\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{Mn}\u0001-¡]|[^\\P{Mc}\u0001-¡]|[^\\P{Nd}\u0001-¡]|[^\\P{Pc}\u0001-¡]|[^\\P{Sk}\u0001-¡]|[^\\P{Me}\u0001-¡]|[^\\P{No}\u0001-¡]|[′-‷⁗]|[^\\P{So}←-⇿]))(?:(?:\\b0(?:x|X)[0-9a-fA-F](?:_?[0-9a-fA-F])*)|(?:\\b0o[0-7](?:_?[0-7])*)|(?:\\b0b[0-1](?:_?[0-1])*)|(?:(?:\\b[0-9](?:_?[0-9])*\\.?(?!\\.)(?:[_0-9]*))|(?:\\b\\.[0-9](?:_?[0-9])*))(?:[efE][+-]?[0-9](?:_?[0-9])*)?(?:im\\b|Inf(?:16|32|64)?\\b|NaN(?:16|32|64)?\\b|π\\b|pi\\b|ℯ\\b)?|\\b[0-9]+|\\bInf(?:16|32|64)?\\b|\\bNaN(?:16|32|64)?\\b|\\\\b|\\bpi\\b|\\bℯ\\b))('*)", 347 "captures": { 348 "1": { 349 "name": "constant.numeric.julia" 350 }, 351 "2": { 352 "name": "keyword.operator.conjugate-number.julia" 353 } 354 } 355 }, 356 { 357 "match": "\\bARGS\\b|\\bC_NULL\\b|\\bDEPOT_PATH\\b|\\bENDIAN_BOM\\b|\\bENV\\b|\\bLOAD_PATH\\b|\\bPROGRAM_FILE\\b|\\bstdin\\b|\\bstdout\\b|\\bstderr\\b|\\bVERSION\\b|\\bdevnull\\b", 358 "name": "constant.global.julia" 359 }, 360 { 361 "match": "\\btrue\\b|\\bfalse\\b|\\bnothing\\b|\\bmissing\\b", 362 "name": "constant.language.julia" 363 } 364 ] 365 }, 366 "operator": { 367 "patterns": [ 368 { 369 "match": "\\.?(?:<-->|->|-->|<--|←|→|↔|↚|↛|↞|↠|↢|↣|↦|↤|↮|⇎|⇍|⇏|⇐|⇒|⇔|⇴|⇶|⇷|⇸|⇹|⇺|⇻|⇼|⇽|⇾|⇿|⟵|⟶|⟷|⟹|⟺|⟻|⟼|⟽|⟾|⟿|⤀|⤁|⤂|⤃|⤄|⤅|⤆|⤇|⤌|⤍|⤎|⤏|⤐|⤑|⤔|⤕|⤖|⤗|⤘|⤝|⤞|⤟|⤠|⥄|⥅|⥆|⥇|⥈|⥊|⥋|⥎|⥐|⥒|⥓|⥖|⥗|⥚|⥛|⥞|⥟|⥢|⥤|⥦|⥧|⥨|⥩|⥪|⥫|⥬|⥭|⥰|⧴|⬱|⬰|⬲|⬳|⬴|⬵|⬶|⬷|⬸|⬹|⬺|⬻|⬼|⬽|⬾|⬿|⭀|⭁|⭂|⭃|⥷|⭄|⥺|⭇|⭈|⭉|⭊|⭋|⭌|←|→|⇜|⇝|↜|↝|↩|↪|↫|↬|↼|↽|⇀|⇁|⇄|⇆|⇇|⇉|⇋|⇌|⇚|⇛|⇠|⇢|↷|↶|↺|↻|=>)", 370 "name": "keyword.operator.arrow.julia" 371 }, 372 { 373 "match": "(?::=|\\+=|-=|\\*=|//=|/=|\\.//=|\\./=|\\.\\*=|\\\\=|\\.\\\\=|\\^=|\\.\\^=|%=|\\.%=|÷=|\\.÷=|\\|=|&=|\\.&=|⊻=|\\.⊻=|\\$=|<<=|>>=|>>>=|=(?!=))", 374 "name": "keyword.operator.update.julia" 375 }, 376 { 377 "match": "(?:<<|>>>|>>|\\.>>>|\\.>>|\\.<<)", 378 "name": "keyword.operator.shift.julia" 379 }, 380 { 381 "match": "(?:\\s*(::|>:|<:)\\s*((?:(?:Union)?\\([^)]*\\)|[[:alpha:]_$∇][[:word:]⁺-ₜ!′\\.]*(?:(?:{(?:[^{}]|{(?:[^{}]|{[^{}]*})*})*})|(?:\".+?(?<!\\\\)\"))?)))(?:\\.\\.\\.)?((?:\\.)?'*)", 382 "captures": { 383 "1": { 384 "name": "keyword.operator.relation.types.julia" 385 }, 386 "2": { 387 "name": "support.type.julia" 388 }, 389 "3": { 390 "name": "keyword.operator.transpose.julia" 391 } 392 } 393 }, 394 { 395 "match": "(\\.?((?<!<)<=|(?<!>)>=|>|<|≥|≤|===|==|≡|!=|≠|!==|≢|∈|∉|∋|∌|⊆|⊈|⊂|⊄|⊊|∝|∊|∍|∥|∦|∷|∺|∻|∽|∾|≁|≃|≂|≄|≅|≆|≇|≈|≉|≊|≋|≌|≍|≎|≐|≑|≒|≓|≖|≗|≘|≙|≚|≛|≜|≝|≞|≟|≣|≦|≧|≨|≩|≪|≫|≬|≭|≮|≯|≰|≱|≲|≳|≴|≵|≶|≷|≸|≹|≺|≻|≼|≽|≾|≿|⊀|⊁|⊃|⊅|⊇|⊉|⊋|⊏|⊐|⊑|⊒|⊜|⊩|⊬|⊮|⊰|⊱|⊲|⊳|⊴|⊵|⊶|⊷|⋍|⋐|⋑|⋕|⋖|⋗|⋘|⋙|⋚|⋛|⋜|⋝|⋞|⋟|⋠|⋡|⋢|⋣|⋤|⋥|⋦|⋧|⋨|⋩|⋪|⋫|⋬|⋭|⋲|⋳|⋴|⋵|⋶|⋷|⋸|⋹|⋺|⋻|⋼|⋽|⋾|⋿|⟈|⟉|⟒|⦷|⧀|⧁|⧡|⧣|⧤|⧥|⩦|⩧|⩪|⩫|⩬|⩭|⩮|⩯|⩰|⩱|⩲|⩳|⩵|⩶|⩷|⩸|⩹|⩺|⩻|⩼|⩽|⩾|⩿|⪀|⪁|⪂|⪃|⪄|⪅|⪆|⪇|⪈|⪉|⪊|⪋|⪌|⪍|⪎|⪏|⪐|⪑|⪒|⪓|⪔|⪕|⪖|⪗|⪘|⪙|⪚|⪛|⪜|⪝|⪞|⪟|⪠|⪡|⪢|⪣|⪤|⪥|⪦|⪧|⪨|⪩|⪪|⪫|⪬|⪭|⪮|⪯|⪰|⪱|⪲|⪳|⪴|⪵|⪶|⪷|⪸|⪹|⪺|⪻|⪼|⪽|⪾|⪿|⫀|⫁|⫂|⫃|⫄|⫅|⫆|⫇|⫈|⫉|⫊|⫋|⫌|⫍|⫎|⫏|⫐|⫑|⫒|⫓|⫔|⫕|⫖|⫗|⫘|⫙|⫷|⫸|⫹|⫺|⊢|⊣|⟂|⫪|⫫|<:|>:))", 396 "name": "keyword.operator.relation.julia" 397 }, 398 { 399 "match": "(?<=\\s)(?:\\?)(?=\\s)", 400 "name": "keyword.operator.ternary.julia" 401 }, 402 { 403 "match": "(?<=\\s)(?:\\:)(?=\\s)", 404 "name": "keyword.operator.ternary.julia" 405 }, 406 { 407 "match": "(?:\\|\\||&&|(?<!(?:[[:word:]_!\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{Mn}\u0001-¡]|[^\\P{Mc}\u0001-¡]|[^\\P{Nd}\u0001-¡]|[^\\P{Pc}\u0001-¡]|[^\\P{Sk}\u0001-¡]|[^\\P{Me}\u0001-¡]|[^\\P{No}\u0001-¡]|[′-‷⁗]|[^\\P{So}←-⇿]))!)", 408 "name": "keyword.operator.boolean.julia" 409 }, 410 { 411 "match": "(?<=[[:word:]⁺-ₜ!′∇\\)\\]\\}])(?::)", 412 "name": "keyword.operator.range.julia" 413 }, 414 { 415 "match": "(?:\\|>)", 416 "name": "keyword.operator.applies.julia" 417 }, 418 { 419 "match": "(?:\\||\\.\\||\\&|\\.\\&|~|¬|\\.~|⊻|\\.⊻)", 420 "name": "keyword.operator.bitwise.julia" 421 }, 422 { 423 "match": "\\.?(?:\\+\\+|\\-\\-|\\+|\\-|−|¦|\\||⊕|⊖|⊞|⊟|∪|∨|⊔|±|∓|∔|∸|≏|⊎|⊻|⊽|⋎|⋓|⟇|⧺|⧻|⨈|⨢|⨣|⨤|⨥|⨦|⨧|⨨|⨩|⨪|⨫|⨬|⨭|⨮|⨹|⨺|⩁|⩂|⩅|⩊|⩌|⩏|⩐|⩒|⩔|⩖|⩗|⩛|⩝|⩡|⩢|⩣|\\*|//?|⌿|÷|%|&|·|·|⋅|∘|×|\\\\|∩|∧|⊗|⊘|⊙|⊚|⊛|⊠|⊡|⊓|∗|∙|∤|⅋|≀|⊼|⋄|⋆|⋇|⋉|⋊|⋋|⋌|⋏|⋒|⟑|⦸|⦼|⦾|⦿|⧶|⧷|⨇|⨰|⨱|⨲|⨳|⨴|⨵|⨶|⨷|⨸|⨻|⨼|⨽|⩀|⩃|⩄|⩋|⩍|⩎|⩑|⩓|⩕|⩘|⩚|⩜|⩞|⩟|⩠|⫛|⊍|▷|⨝|⟕|⟖|⟗|⨟|\\^|↑|↓|⇵|⟰|⟱|⤈|⤉|⤊|⤋|⤒|⤓|⥉|⥌|⥍|⥏|⥑|⥔|⥕|⥘|⥙|⥜|⥝|⥠|⥡|⥣|⥥|⥮|⥯|↑|↓|√|∛|∜|⋆|±|∓)", 424 "name": "keyword.operator.arithmetic.julia" 425 }, 426 { 427 "match": "(?:∘)", 428 "name": "keyword.operator.compose.julia" 429 }, 430 { 431 "match": "(?:::|(?<=\\s)isa(?=\\s))", 432 "name": "keyword.operator.isa.julia" 433 }, 434 { 435 "match": "(?:(?<=\\s)in(?=\\s))", 436 "name": "keyword.operator.relation.in.julia" 437 }, 438 { 439 "match": "(?:\\.(?=(?:@|_|\\p{L}))|\\.\\.+|…|⁝|⋮|⋱|⋰|⋯)", 440 "name": "keyword.operator.dots.julia" 441 }, 442 { 443 "match": "(?:\\$)(?=.+)", 444 "name": "keyword.operator.interpolation.julia" 445 }, 446 { 447 "captures": { 448 "2": { 449 "name": "keyword.operator.transposed-variable.julia" 450 } 451 }, 452 "match": "((?:[[:alpha:]_\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{So}←-⇿])(?:[[:word:]_!\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{Mn}\u0001-¡]|[^\\P{Mc}\u0001-¡]|[^\\P{Nd}\u0001-¡]|[^\\P{Pc}\u0001-¡]|[^\\P{Sk}\u0001-¡]|[^\\P{Me}\u0001-¡]|[^\\P{No}\u0001-¡]|[′-‷⁗]|[^\\P{So}←-⇿])*)(('|(\\.'))*\\.?')" 453 }, 454 { 455 "captures": { 456 "1": { 457 "name": "bracket.end.julia" 458 }, 459 "2": { 460 "name": "keyword.operator.transposed-matrix.julia" 461 } 462 }, 463 "match": "(\\])((?:'|(?:\\.'))*\\.?')" 464 }, 465 { 466 "captures": { 467 "1": { 468 "name": "bracket.end.julia" 469 }, 470 "2": { 471 "name": "keyword.operator.transposed-parens.julia" 472 } 473 }, 474 "match": "(\\))((?:'|(?:\\.'))*\\.?')" 475 } 476 ] 477 }, 478 "string": { 479 "patterns": [ 480 { 481 "begin": "(?:(@doc)\\s((?:doc)?\"\"\")|(doc\"\"\"))", 482 "beginCaptures": { 483 "1": { 484 "name": "support.function.macro.julia" 485 }, 486 "2": { 487 "name": "punctuation.definition.string.begin.julia" 488 } 489 }, 490 "end": "(\"\"\") ?(->)?", 491 "endCaptures": { 492 "1": { 493 "name": "punctuation.definition.string.end.julia" 494 }, 495 "2": { 496 "name": "keyword.operator.arrow.julia" 497 } 498 }, 499 "name": "string.docstring.julia", 500 "patterns": [ 501 { 502 "include": "#string_escaped_char" 503 }, 504 { 505 "include": "#string_dollar_sign_interpolate" 506 } 507 ] 508 }, 509 { 510 "begin": "(i?cxx)(\"\"\")", 511 "beginCaptures": { 512 "1": { 513 "name": "support.function.macro.julia" 514 }, 515 "2": { 516 "name": "punctuation.definition.string.begin.julia" 517 } 518 }, 519 "end": "\"\"\"", 520 "endCaptures": { 521 "0": { 522 "name": "punctuation.definition.string.end.julia" 523 } 524 }, 525 "name": "embed.cxx.julia", 526 "contentName": "source.cpp", 527 "patterns": [ 528 { 529 "include": "source.cpp" 530 }, 531 { 532 "include": "#string_dollar_sign_interpolate" 533 } 534 ] 535 }, 536 { 537 "begin": "(py)(\"\"\")", 538 "beginCaptures": { 539 "1": { 540 "name": "support.function.macro.julia" 541 }, 542 "2": { 543 "name": "punctuation.definition.string.begin.julia" 544 } 545 }, 546 "end": "([\\s\\w]*)(\"\"\")", 547 "endCaptures": { 548 "2": { 549 "name": "punctuation.definition.string.end.julia" 550 } 551 }, 552 "name": "embed.python.julia", 553 "contentName": "source.python", 554 "patterns": [ 555 { 556 "include": "source.python" 557 }, 558 { 559 "include": "#string_dollar_sign_interpolate" 560 } 561 ] 562 }, 563 { 564 "begin": "(js)(\"\"\")", 565 "beginCaptures": { 566 "1": { 567 "name": "support.function.macro.julia" 568 }, 569 "2": { 570 "name": "punctuation.definition.string.begin.julia" 571 } 572 }, 573 "end": "\"\"\"", 574 "endCaptures": { 575 "0": { 576 "name": "punctuation.definition.string.end.julia" 577 } 578 }, 579 "name": "embed.js.julia", 580 "contentName": "source.js", 581 "patterns": [ 582 { 583 "include": "source.js" 584 }, 585 { 586 "include": "#string_dollar_sign_interpolate" 587 } 588 ] 589 }, 590 { 591 "begin": "(R)(\"\"\")", 592 "beginCaptures": { 593 "1": { 594 "name": "support.function.macro.julia" 595 }, 596 "2": { 597 "name": "punctuation.definition.string.begin.julia" 598 } 599 }, 600 "end": "\"\"\"", 601 "endCaptures": { 602 "0": { 603 "name": "punctuation.definition.string.end.julia" 604 } 605 }, 606 "name": "embed.R.julia", 607 "contentName": "source.r", 608 "patterns": [ 609 { 610 "include": "source.r" 611 }, 612 { 613 "include": "#string_dollar_sign_interpolate" 614 } 615 ] 616 }, 617 { 618 "begin": "(raw)(\"\"\")", 619 "beginCaptures": { 620 "1": { 621 "name": "support.function.macro.julia" 622 }, 623 "2": { 624 "name": "punctuation.definition.string.begin.julia" 625 } 626 }, 627 "end": "\"\"\"", 628 "name": "string.quoted.other.julia", 629 "endCaptures": { 630 "0": { 631 "name": "punctuation.definition.string.end.julia" 632 } 633 }, 634 "patterns": [ 635 { 636 "include": "#string_escaped_char_raw" 637 } 638 ] 639 }, 640 { 641 "begin": "(raw)(\")", 642 "beginCaptures": { 643 "1": { 644 "name": "support.function.macro.julia" 645 }, 646 "2": { 647 "name": "punctuation.definition.string.begin.julia" 648 } 649 }, 650 "end": "\"", 651 "name": "string.quoted.other.julia", 652 "endCaptures": { 653 "0": { 654 "name": "punctuation.definition.string.end.julia" 655 } 656 }, 657 "patterns": [ 658 { 659 "include": "#string_escaped_char_raw" 660 } 661 ] 662 }, 663 { 664 "begin": "(sql)(\"\"\")", 665 "beginCaptures": { 666 "1": { 667 "name": "support.function.macro.julia" 668 }, 669 "2": { 670 "name": "punctuation.definition.string.begin.julia" 671 } 672 }, 673 "end": "\"\"\"", 674 "endCaptures": { 675 "0": { 676 "name": "punctuation.definition.string.end.julia" 677 } 678 }, 679 "name": "embed.sql.julia", 680 "contentName": "meta.embedded.inline.sql", 681 "patterns": [ 682 { 683 "include": "source.sql" 684 }, 685 { 686 "include": "#string_dollar_sign_interpolate" 687 } 688 ] 689 }, 690 { 691 "begin": "var\"\"\"", 692 "end": "\"\"\"", 693 "name": "constant.other.symbol.julia", 694 "patterns": [ 695 { 696 "include": "#string_escaped_char" 697 } 698 ] 699 }, 700 { 701 "begin": "var\"", 702 "end": "\"", 703 "name": "constant.other.symbol.julia", 704 "patterns": [ 705 { 706 "include": "#string_escaped_char" 707 } 708 ] 709 }, 710 { 711 "begin": "^\\s?(doc)?(\"\"\")\\s?$", 712 "beginCaptures": { 713 "1": { 714 "name": "support.function.macro.julia" 715 }, 716 "2": { 717 "name": "punctuation.definition.string.begin.julia" 718 } 719 }, 720 "end": "(\"\"\")", 721 "endCaptures": { 722 "1": { 723 "name": "punctuation.definition.string.end.julia" 724 } 725 }, 726 "name": "string.docstring.julia", 727 "comment": "This only matches docstrings that start and end with triple quotes on\ntheir own line in the void", 728 "patterns": [ 729 { 730 "include": "#string_escaped_char" 731 }, 732 { 733 "include": "#string_dollar_sign_interpolate" 734 } 735 ] 736 }, 737 { 738 "begin": "'", 739 "beginCaptures": { 740 "0": { 741 "name": "punctuation.definition.string.begin.julia" 742 } 743 }, 744 "end": "'(?!')", 745 "endCaptures": { 746 "0": { 747 "name": "punctuation.definition.string.end.julia" 748 } 749 }, 750 "name": "string.quoted.single.julia", 751 "patterns": [ 752 { 753 "include": "#string_escaped_char" 754 } 755 ] 756 }, 757 { 758 "begin": "\"\"\"", 759 "beginCaptures": { 760 "0": { 761 "name": "punctuation.definition.string.multiline.begin.julia" 762 } 763 }, 764 "end": "\"\"\"", 765 "endCaptures": { 766 "0": { 767 "name": "punctuation.definition.string.multiline.end.julia" 768 } 769 }, 770 "name": "string.quoted.triple.double.julia", 771 "comment": "multi-line string with triple double quotes", 772 "patterns": [ 773 { 774 "include": "#string_escaped_char" 775 }, 776 { 777 "include": "#string_dollar_sign_interpolate" 778 } 779 ] 780 }, 781 { 782 "name": "string.quoted.double.julia", 783 "begin": "\"(?!\"\")", 784 "beginCaptures": { 785 "0": { 786 "name": "punctuation.definition.string.begin.julia" 787 } 788 }, 789 "end": "\"", 790 "endCaptures": { 791 "0": { 792 "name": "punctuation.definition.string.end.julia" 793 } 794 }, 795 "comment": "String with single pair of double quotes. Regex matches isolated double quote", 796 "patterns": [ 797 { 798 "include": "#string_escaped_char" 799 }, 800 { 801 "include": "#string_dollar_sign_interpolate" 802 } 803 ] 804 }, 805 { 806 "begin": "r\"\"\"", 807 "beginCaptures": { 808 "0": { 809 "name": "punctuation.definition.string.regexp.begin.julia" 810 } 811 }, 812 "end": "(\"\"\")([imsx]{0,4})?", 813 "endCaptures": { 814 "1": { 815 "name": "punctuation.definition.string.regexp.end.julia" 816 }, 817 "2": { 818 "comment": "I took this scope name from python regex grammar", 819 "name": "keyword.other.option-toggle.regexp.julia" 820 } 821 }, 822 "name": "string.regexp.julia", 823 "patterns": [ 824 { 825 "include": "#string_escaped_char" 826 } 827 ] 828 }, 829 { 830 "begin": "r\"", 831 "beginCaptures": { 832 "0": { 833 "name": "punctuation.definition.string.regexp.begin.julia" 834 } 835 }, 836 "end": "(\")([imsx]{0,4})?", 837 "endCaptures": { 838 "1": { 839 "name": "punctuation.definition.string.regexp.end.julia" 840 }, 841 "2": { 842 "comment": "I took this scope name from python regex grammar", 843 "name": "keyword.other.option-toggle.regexp.julia" 844 } 845 }, 846 "name": "string.regexp.julia", 847 "patterns": [ 848 { 849 "include": "#string_escaped_char" 850 } 851 ] 852 }, 853 { 854 "begin": "(?<!\")((?:[[:alpha:]_\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{So}←-⇿])(?:[[:word:]_!\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{Mn}\u0001-¡]|[^\\P{Mc}\u0001-¡]|[^\\P{Nd}\u0001-¡]|[^\\P{Pc}\u0001-¡]|[^\\P{Sk}\u0001-¡]|[^\\P{Me}\u0001-¡]|[^\\P{No}\u0001-¡]|[′-‷⁗]|[^\\P{So}←-⇿])*)\"\"\"", 855 "beginCaptures": { 856 "0": { 857 "name": "punctuation.definition.string.begin.julia" 858 }, 859 "1": { 860 "name": "support.function.macro.julia" 861 } 862 }, 863 "end": "(\"\"\")((?:[[:alpha:]_\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{So}←-⇿])(?:[[:word:]_!\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{Mn}\u0001-¡]|[^\\P{Mc}\u0001-¡]|[^\\P{Nd}\u0001-¡]|[^\\P{Pc}\u0001-¡]|[^\\P{Sk}\u0001-¡]|[^\\P{Me}\u0001-¡]|[^\\P{No}\u0001-¡]|[′-‷⁗]|[^\\P{So}←-⇿])*)?", 864 "endCaptures": { 865 "1": { 866 "name": "punctuation.definition.string.end.julia" 867 }, 868 "2": { 869 "name": "support.function.macro.julia" 870 } 871 }, 872 "name": "string.quoted.other.julia", 873 "patterns": [ 874 { 875 "include": "#string_escaped_char" 876 } 877 ] 878 }, 879 { 880 "begin": "(?<!\")((?:[[:alpha:]_\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{So}←-⇿])(?:[[:word:]_!\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{Mn}\u0001-¡]|[^\\P{Mc}\u0001-¡]|[^\\P{Nd}\u0001-¡]|[^\\P{Pc}\u0001-¡]|[^\\P{Sk}\u0001-¡]|[^\\P{Me}\u0001-¡]|[^\\P{No}\u0001-¡]|[′-‷⁗]|[^\\P{So}←-⇿])*)\"", 881 "beginCaptures": { 882 "0": { 883 "name": "punctuation.definition.string.begin.julia" 884 }, 885 "1": { 886 "name": "support.function.macro.julia" 887 } 888 }, 889 "end": "(?<![^\\\\]\\\\)(\")((?:[[:alpha:]_\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{So}←-⇿])(?:[[:word:]_!\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{Mn}\u0001-¡]|[^\\P{Mc}\u0001-¡]|[^\\P{Nd}\u0001-¡]|[^\\P{Pc}\u0001-¡]|[^\\P{Sk}\u0001-¡]|[^\\P{Me}\u0001-¡]|[^\\P{No}\u0001-¡]|[′-‷⁗]|[^\\P{So}←-⇿])*)?", 890 "endCaptures": { 891 "1": { 892 "name": "punctuation.definition.string.end.julia" 893 }, 894 "2": { 895 "name": "support.function.macro.julia" 896 } 897 }, 898 "name": "string.quoted.other.julia", 899 "patterns": [ 900 { 901 "include": "#string_escaped_char" 902 } 903 ] 904 }, 905 { 906 "begin": "(?<!`)((?:[[:alpha:]_\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{So}←-⇿])(?:[[:word:]_!\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{Mn}\u0001-¡]|[^\\P{Mc}\u0001-¡]|[^\\P{Nd}\u0001-¡]|[^\\P{Pc}\u0001-¡]|[^\\P{Sk}\u0001-¡]|[^\\P{Me}\u0001-¡]|[^\\P{No}\u0001-¡]|[′-‷⁗]|[^\\P{So}←-⇿])*)?```", 907 "beginCaptures": { 908 "0": { 909 "name": "punctuation.definition.string.begin.julia" 910 }, 911 "1": { 912 "name": "support.function.macro.julia" 913 } 914 }, 915 "end": "(```)((?:[[:alpha:]_\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{So}←-⇿])(?:[[:word:]_!\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{Mn}\u0001-¡]|[^\\P{Mc}\u0001-¡]|[^\\P{Nd}\u0001-¡]|[^\\P{Pc}\u0001-¡]|[^\\P{Sk}\u0001-¡]|[^\\P{Me}\u0001-¡]|[^\\P{No}\u0001-¡]|[′-‷⁗]|[^\\P{So}←-⇿])*)?", 916 "endCaptures": { 917 "1": { 918 "name": "punctuation.definition.string.end.julia" 919 }, 920 "2": { 921 "name": "support.function.macro.julia" 922 } 923 }, 924 "name": "string.interpolated.backtick.julia", 925 "patterns": [ 926 { 927 "include": "#string_escaped_char" 928 }, 929 { 930 "include": "#string_dollar_sign_interpolate" 931 } 932 ] 933 }, 934 { 935 "begin": "(?<!`)((?:[[:alpha:]_\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{So}←-⇿])(?:[[:word:]_!\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{Mn}\u0001-¡]|[^\\P{Mc}\u0001-¡]|[^\\P{Nd}\u0001-¡]|[^\\P{Pc}\u0001-¡]|[^\\P{Sk}\u0001-¡]|[^\\P{Me}\u0001-¡]|[^\\P{No}\u0001-¡]|[′-‷⁗]|[^\\P{So}←-⇿])*)?`", 936 "beginCaptures": { 937 "0": { 938 "name": "punctuation.definition.string.begin.julia" 939 }, 940 "1": { 941 "name": "support.function.macro.julia" 942 } 943 }, 944 "end": "(?<![^\\\\]\\\\)(`)((?:[[:alpha:]_\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{So}←-⇿])(?:[[:word:]_!\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{Mn}\u0001-¡]|[^\\P{Mc}\u0001-¡]|[^\\P{Nd}\u0001-¡]|[^\\P{Pc}\u0001-¡]|[^\\P{Sk}\u0001-¡]|[^\\P{Me}\u0001-¡]|[^\\P{No}\u0001-¡]|[′-‷⁗]|[^\\P{So}←-⇿])*)?", 945 "endCaptures": { 946 "1": { 947 "name": "punctuation.definition.string.end.julia" 948 }, 949 "2": { 950 "name": "support.function.macro.julia" 951 } 952 }, 953 "name": "string.interpolated.backtick.julia", 954 "patterns": [ 955 { 956 "include": "#string_escaped_char" 957 }, 958 { 959 "include": "#string_dollar_sign_interpolate" 960 } 961 ] 962 } 963 ] 964 }, 965 "string_escaped_char": { 966 "patterns": [ 967 { 968 "match": "\\\\(\\\\|[0-3]\\d{,2}|[4-7]\\d?|x[a-fA-F0-9]{,2}|u[a-fA-F0-9]{,4}|U[a-fA-F0-9]{,8}|.)", 969 "name": "constant.character.escape.julia" 970 } 971 ] 972 }, 973 "string_escaped_char_raw": { 974 "comment": "In raw strings, backslashes only escape anything when preceding a quote. An even number of backslashes causes all of them to be escaped and the quote to be literal; an odd number escapes all backslashes (except for the one preceding the quote) and the quote.", 975 "patterns": [ 976 { 977 "match": "(\\\\\\\\)*\\\\\"", 978 "name": "constant.character.escape.julia" 979 }, 980 { 981 "match": "(\\\\\\\\)+(?=\")", 982 "name": "constant.character.escape.julia" 983 } 984 ] 985 }, 986 "string_dollar_sign_interpolate": { 987 "patterns": [ 988 { 989 "match": "\\$(?:[[:alpha:]_\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{So}←-⇿]|[^\\p{^Sc}$])(?:[[:word:]_!\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{Mn}\u0001-¡]|[^\\P{Mc}\u0001-¡]|[^\\P{Nd}\u0001-¡]|[^\\P{Pc}\u0001-¡]|[^\\P{Sk}\u0001-¡]|[^\\P{Me}\u0001-¡]|[^\\P{No}\u0001-¡]|[′-‷⁗]|[^\\P{So}←-⇿]|[^\\p{^Sc}$])*", 990 "name": "variable.interpolation.julia" 991 }, 992 { 993 "begin": "\\$(\\()", 994 "beginCaptures": { 995 "1": { 996 "name": "meta.bracket.julia" 997 } 998 }, 999 "end": "\\)", 1000 "endCaptures": { 1001 "0": { 1002 "name": "meta.bracket.julia" 1003 } 1004 }, 1005 "name": "variable.interpolation.julia", 1006 "comment": "`punctuation.section.embedded`, `constant.escape`,\n& `meta.embedded.line` were considered but appear to have even spottier\nsupport among popular syntaxes.", 1007 "patterns": [ 1008 { 1009 "include": "#self_no_for_block" 1010 } 1011 ] 1012 } 1013 ] 1014 }, 1015 "symbol": { 1016 "patterns": [ 1017 { 1018 "match": "(?<![[:word:]⁺-ₜ!′∇\\)\\]\\}]):(?:(?:[[:alpha:]_\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{So}←-⇿])(?:[[:word:]_!\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{Mn}\u0001-¡]|[^\\P{Mc}\u0001-¡]|[^\\P{Nd}\u0001-¡]|[^\\P{Pc}\u0001-¡]|[^\\P{Sk}\u0001-¡]|[^\\P{Me}\u0001-¡]|[^\\P{No}\u0001-¡]|[′-‷⁗]|[^\\P{So}←-⇿])*)(?!(?:[[:word:]_!\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{Mn}\u0001-¡]|[^\\P{Mc}\u0001-¡]|[^\\P{Nd}\u0001-¡]|[^\\P{Pc}\u0001-¡]|[^\\P{Sk}\u0001-¡]|[^\\P{Me}\u0001-¡]|[^\\P{No}\u0001-¡]|[′-‷⁗]|[^\\P{So}←-⇿]))(?![\"`])", 1019 "name": "constant.other.symbol.julia", 1020 "comment": "This is string.quoted.symbol.julia in tpoisot's package" 1021 } 1022 ] 1023 }, 1024 "type_decl": { 1025 "patterns": [ 1026 { 1027 "captures": { 1028 "1": { 1029 "name": "entity.name.type.julia" 1030 }, 1031 "2": { 1032 "name": "entity.other.inherited-class.julia" 1033 }, 1034 "3": { 1035 "name": "punctuation.separator.inheritance.julia" 1036 } 1037 }, 1038 "match": "(?>!:_)(?:struct|mutable\\s+struct|abstract\\s+type|primitive\\s+type)\\s+((?:[[:alpha:]_\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{So}←-⇿])(?:[[:word:]_!\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{Mn}\u0001-¡]|[^\\P{Mc}\u0001-¡]|[^\\P{Nd}\u0001-¡]|[^\\P{Pc}\u0001-¡]|[^\\P{Sk}\u0001-¡]|[^\\P{Me}\u0001-¡]|[^\\P{No}\u0001-¡]|[′-‷⁗]|[^\\P{So}←-⇿])*)(\\s*(<:)\\s*(?:[[:alpha:]_\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{So}←-⇿])(?:[[:word:]_!\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{Mn}\u0001-¡]|[^\\P{Mc}\u0001-¡]|[^\\P{Nd}\u0001-¡]|[^\\P{Pc}\u0001-¡]|[^\\P{Sk}\u0001-¡]|[^\\P{Me}\u0001-¡]|[^\\P{No}\u0001-¡]|[′-‷⁗]|[^\\P{So}←-⇿])*(?:{.*})?)?", 1039 "name": "meta.type.julia" 1040 } 1041 ] 1042 }, 1043 "self_no_for_block": { 1044 "comment": "Same as $self, but does not contain #for_block. 'outer' is not valid in some contexts (e.g. generators, comprehensions, indexing), so use this when matching those in begin/end patterns. Keep this up-to-date with $self!", 1045 "patterns": [ 1046 { 1047 "include": "#operator" 1048 }, 1049 { 1050 "include": "#array" 1051 }, 1052 { 1053 "include": "#string" 1054 }, 1055 { 1056 "include": "#parentheses" 1057 }, 1058 { 1059 "include": "#bracket" 1060 }, 1061 { 1062 "include": "#function_decl" 1063 }, 1064 { 1065 "include": "#function_call" 1066 }, 1067 { 1068 "include": "#keyword" 1069 }, 1070 { 1071 "include": "#number" 1072 }, 1073 { 1074 "include": "#comment" 1075 }, 1076 { 1077 "include": "#type_decl" 1078 }, 1079 { 1080 "include": "#symbol" 1081 }, 1082 { 1083 "include": "#punctuation" 1084 } 1085 ] 1086 }, 1087 "punctuation": { 1088 "patterns": [ 1089 { 1090 "match": ",", 1091 "name": "punctuation.separator.comma.julia" 1092 }, 1093 { 1094 "match": ";", 1095 "name": "punctuation.separator.semicolon.julia" 1096 } 1097 ] 1098 } 1099 } 1100 }