[OCaml] Mobile-friendly clone of cgit.
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π\\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
}