tm-grammars 0.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (181) hide show
  1. package/LICENSE +22 -0
  2. package/NOTICE +6565 -0
  3. package/README.md +211 -0
  4. package/grammars/abap.json +380 -0
  5. package/grammars/actionscript-3.json +951 -0
  6. package/grammars/ada.json +3874 -0
  7. package/grammars/apache.json +562 -0
  8. package/grammars/apex.json +3203 -0
  9. package/grammars/apl.json +1479 -0
  10. package/grammars/applescript.json +1406 -0
  11. package/grammars/ara.json +428 -0
  12. package/grammars/asm.json +1741 -0
  13. package/grammars/astro.json +776 -0
  14. package/grammars/awk.json +388 -0
  15. package/grammars/ballerina.json +3768 -0
  16. package/grammars/bat.json +783 -0
  17. package/grammars/beancount.json +831 -0
  18. package/grammars/berry.json +172 -0
  19. package/grammars/bibtex.json +315 -0
  20. package/grammars/bicep.json +239 -0
  21. package/grammars/blade.json +3870 -0
  22. package/grammars/c.json +3552 -0
  23. package/grammars/cadence.json +738 -0
  24. package/grammars/clarity.json +877 -0
  25. package/grammars/clojure.json +426 -0
  26. package/grammars/cmake.json +143 -0
  27. package/grammars/cobol.json +1124 -0
  28. package/grammars/codeql.json +1540 -0
  29. package/grammars/coffee.json +1311 -0
  30. package/grammars/cpp-macro.json +9498 -0
  31. package/grammars/cpp.json +16635 -0
  32. package/grammars/crystal.json +1866 -0
  33. package/grammars/csharp.json +5722 -0
  34. package/grammars/css.json +1860 -0
  35. package/grammars/csv.json +46 -0
  36. package/grammars/cue.json +1128 -0
  37. package/grammars/cypher.json +353 -0
  38. package/grammars/d.json +3185 -0
  39. package/grammars/dart.json +522 -0
  40. package/grammars/dax.json +185 -0
  41. package/grammars/diff.json +155 -0
  42. package/grammars/docker.json +97 -0
  43. package/grammars/dream-maker.json +640 -0
  44. package/grammars/elixir.json +1014 -0
  45. package/grammars/elm.json +751 -0
  46. package/grammars/erb.json +156 -0
  47. package/grammars/erlang.json +1757 -0
  48. package/grammars/fish.json +189 -0
  49. package/grammars/fsharp.json +1831 -0
  50. package/grammars/gdresource.json +290 -0
  51. package/grammars/gdscript.json +969 -0
  52. package/grammars/gdshader.json +405 -0
  53. package/grammars/gherkin.json +133 -0
  54. package/grammars/git-commit.json +85 -0
  55. package/grammars/git-rebase.json +56 -0
  56. package/grammars/glimmer-js.json +98 -0
  57. package/grammars/glimmer-ts.json +98 -0
  58. package/grammars/glsl.json +57 -0
  59. package/grammars/gnuplot.json +892 -0
  60. package/grammars/go.json +1012 -0
  61. package/grammars/graphql.json +1295 -0
  62. package/grammars/groovy.json +1378 -0
  63. package/grammars/hack.json +2650 -0
  64. package/grammars/haml.json +598 -0
  65. package/grammars/handlebars.json +848 -0
  66. package/grammars/haskell.json +2431 -0
  67. package/grammars/hcl.json +787 -0
  68. package/grammars/hjson.json +821 -0
  69. package/grammars/hlsl.json +212 -0
  70. package/grammars/html.json +93 -0
  71. package/grammars/imba.json +2696 -0
  72. package/grammars/ini.json +108 -0
  73. package/grammars/java.json +1885 -0
  74. package/grammars/javascript.json +5984 -0
  75. package/grammars/jinja-html.json +16 -0
  76. package/grammars/jinja.json +345 -0
  77. package/grammars/jison.json +715 -0
  78. package/grammars/jsdoc.json +21 -0
  79. package/grammars/json.json +208 -0
  80. package/grammars/json5.json +244 -0
  81. package/grammars/jsonc.json +208 -0
  82. package/grammars/jsonl.json +208 -0
  83. package/grammars/jsonnet.json +211 -0
  84. package/grammars/jssm.json +159 -0
  85. package/grammars/jsx.json +5984 -0
  86. package/grammars/julia.json +1061 -0
  87. package/grammars/kotlin.json +580 -0
  88. package/grammars/kusto.json +687 -0
  89. package/grammars/latex.json +2395 -0
  90. package/grammars/less.json +5012 -0
  91. package/grammars/liquid.json +990 -0
  92. package/grammars/lisp.json +121 -0
  93. package/grammars/logo.json +55 -0
  94. package/grammars/lua.json +956 -0
  95. package/grammars/make.json +629 -0
  96. package/grammars/markdown.json +3066 -0
  97. package/grammars/marko.json +1344 -0
  98. package/grammars/matlab.json +1131 -0
  99. package/grammars/mdc.json +571 -0
  100. package/grammars/mdx.json +5629 -0
  101. package/grammars/mermaid.json +1382 -0
  102. package/grammars/mojo.json +4153 -0
  103. package/grammars/narrat.json +227 -0
  104. package/grammars/nextflow.json +298 -0
  105. package/grammars/nginx.json +2121 -0
  106. package/grammars/nim.json +1522 -0
  107. package/grammars/nix.json +1200 -0
  108. package/grammars/nushell.json +1047 -0
  109. package/grammars/objective-c.json +3750 -0
  110. package/grammars/objective-cpp.json +7242 -0
  111. package/grammars/ocaml.json +2967 -0
  112. package/grammars/pascal.json +154 -0
  113. package/grammars/perl.json +2971 -0
  114. package/grammars/php.json +4024 -0
  115. package/grammars/plsql.json +241 -0
  116. package/grammars/postcss.json +377 -0
  117. package/grammars/powerquery.json +349 -0
  118. package/grammars/powershell.json +1024 -0
  119. package/grammars/prisma.json +443 -0
  120. package/grammars/prolog.json +298 -0
  121. package/grammars/proto.json +507 -0
  122. package/grammars/pug.json +1033 -0
  123. package/grammars/puppet.json +777 -0
  124. package/grammars/purescript.json +871 -0
  125. package/grammars/python.json +4208 -0
  126. package/grammars/r.json +637 -0
  127. package/grammars/raku.json +310 -0
  128. package/grammars/razor.json +1813 -0
  129. package/grammars/reg.json +136 -0
  130. package/grammars/rel.json +200 -0
  131. package/grammars/riscv.json +298 -0
  132. package/grammars/rst.json +734 -0
  133. package/grammars/ruby.json +2769 -0
  134. package/grammars/rust.json +1171 -0
  135. package/grammars/sas.json +302 -0
  136. package/grammars/sass.json +618 -0
  137. package/grammars/scala.json +1313 -0
  138. package/grammars/scheme.json +384 -0
  139. package/grammars/scss.json +1874 -0
  140. package/grammars/shaderlab.json +199 -0
  141. package/grammars/shellscript.json +2025 -0
  142. package/grammars/shellsession.json +33 -0
  143. package/grammars/smalltalk.json +235 -0
  144. package/grammars/solidity.json +1210 -0
  145. package/grammars/sparql.json +45 -0
  146. package/grammars/splunk.json +91 -0
  147. package/grammars/sql.json +631 -0
  148. package/grammars/ssh-config.json +88 -0
  149. package/grammars/stata.json +3050 -0
  150. package/grammars/stylus.json +1208 -0
  151. package/grammars/svelte.json +1171 -0
  152. package/grammars/swift.json +4203 -0
  153. package/grammars/system-verilog.json +1063 -0
  154. package/grammars/tasl.json +292 -0
  155. package/grammars/tcl.json +291 -0
  156. package/grammars/tex.json +281 -0
  157. package/grammars/toml.json +431 -0
  158. package/grammars/tsx.json +5984 -0
  159. package/grammars/turtle.json +261 -0
  160. package/grammars/twig.json +1394 -0
  161. package/grammars/typescript.json +5735 -0
  162. package/grammars/v.json +1001 -0
  163. package/grammars/vb.json +232 -0
  164. package/grammars/verilog.json +305 -0
  165. package/grammars/vhdl.json +1484 -0
  166. package/grammars/viml.json +445 -0
  167. package/grammars/vue-html.json +559 -0
  168. package/grammars/vue.json +1237 -0
  169. package/grammars/vyper.json +5415 -0
  170. package/grammars/wasm.json +831 -0
  171. package/grammars/wenyan.json +129 -0
  172. package/grammars/wgsl.json +391 -0
  173. package/grammars/wolfram.json +2370 -0
  174. package/grammars/xml.json +382 -0
  175. package/grammars/xsl.json +89 -0
  176. package/grammars/yaml.json +616 -0
  177. package/grammars/zenscript.json +257 -0
  178. package/grammars/zig.json +312 -0
  179. package/index.d.ts +18 -0
  180. package/index.js +2165 -0
  181. package/package.json +46 -0
@@ -0,0 +1,1757 @@
1
+ {
2
+ "displayName": "Erlang",
3
+ "fileTypes": [
4
+ "erl",
5
+ "escript",
6
+ "hrl",
7
+ "xrl",
8
+ "yrl"
9
+ ],
10
+ "name": "erlang",
11
+ "patterns": [
12
+ {
13
+ "include": "#module-directive"
14
+ },
15
+ {
16
+ "include": "#import-export-directive"
17
+ },
18
+ {
19
+ "include": "#behaviour-directive"
20
+ },
21
+ {
22
+ "include": "#record-directive"
23
+ },
24
+ {
25
+ "include": "#define-directive"
26
+ },
27
+ {
28
+ "include": "#macro-directive"
29
+ },
30
+ {
31
+ "include": "#directive"
32
+ },
33
+ {
34
+ "include": "#function"
35
+ },
36
+ {
37
+ "include": "#everything-else"
38
+ }
39
+ ],
40
+ "repository": {
41
+ "atom": {
42
+ "patterns": [
43
+ {
44
+ "begin": "(')",
45
+ "beginCaptures": {
46
+ "1": {
47
+ "name": "punctuation.definition.symbol.begin.erlang"
48
+ }
49
+ },
50
+ "end": "(')",
51
+ "endCaptures": {
52
+ "1": {
53
+ "name": "punctuation.definition.symbol.end.erlang"
54
+ }
55
+ },
56
+ "name": "constant.other.symbol.quoted.single.erlang",
57
+ "patterns": [
58
+ {
59
+ "captures": {
60
+ "1": {
61
+ "name": "punctuation.definition.escape.erlang"
62
+ },
63
+ "3": {
64
+ "name": "punctuation.definition.escape.erlang"
65
+ }
66
+ },
67
+ "match": "(\\\\)([bdefnrstv\\\\'\"]|(\\^)[@-_a-z]|[0-7]{1,3}|x[\\da-fA-F]{2})",
68
+ "name": "constant.other.symbol.escape.erlang"
69
+ },
70
+ {
71
+ "match": "\\\\\\^?.?",
72
+ "name": "invalid.illegal.atom.erlang"
73
+ }
74
+ ]
75
+ },
76
+ {
77
+ "match": "[a-z][a-zA-Z\\d@_]*+",
78
+ "name": "constant.other.symbol.unquoted.erlang"
79
+ }
80
+ ]
81
+ },
82
+ "behaviour-directive": {
83
+ "captures": {
84
+ "1": {
85
+ "name": "punctuation.section.directive.begin.erlang"
86
+ },
87
+ "2": {
88
+ "name": "keyword.control.directive.behaviour.erlang"
89
+ },
90
+ "3": {
91
+ "name": "punctuation.definition.parameters.begin.erlang"
92
+ },
93
+ "4": {
94
+ "name": "entity.name.type.class.behaviour.definition.erlang"
95
+ },
96
+ "5": {
97
+ "name": "punctuation.definition.parameters.end.erlang"
98
+ },
99
+ "6": {
100
+ "name": "punctuation.section.directive.end.erlang"
101
+ }
102
+ },
103
+ "match": "^\\s*+(-)\\s*+(behaviour)\\s*+(\\()\\s*+([a-z][a-zA-Z\\d@_]*+)\\s*+(\\))\\s*+(\\.)",
104
+ "name": "meta.directive.behaviour.erlang"
105
+ },
106
+ "binary": {
107
+ "begin": "(<<)",
108
+ "beginCaptures": {
109
+ "1": {
110
+ "name": "punctuation.definition.binary.begin.erlang"
111
+ }
112
+ },
113
+ "end": "(>>)",
114
+ "endCaptures": {
115
+ "1": {
116
+ "name": "punctuation.definition.binary.end.erlang"
117
+ }
118
+ },
119
+ "name": "meta.structure.binary.erlang",
120
+ "patterns": [
121
+ {
122
+ "captures": {
123
+ "1": {
124
+ "name": "punctuation.separator.binary.erlang"
125
+ },
126
+ "2": {
127
+ "name": "punctuation.separator.value-size.erlang"
128
+ }
129
+ },
130
+ "match": "(,)|(:)"
131
+ },
132
+ {
133
+ "include": "#internal-type-specifiers"
134
+ },
135
+ {
136
+ "include": "#everything-else"
137
+ }
138
+ ]
139
+ },
140
+ "character": {
141
+ "patterns": [
142
+ {
143
+ "captures": {
144
+ "1": {
145
+ "name": "punctuation.definition.character.erlang"
146
+ },
147
+ "2": {
148
+ "name": "constant.character.escape.erlang"
149
+ },
150
+ "3": {
151
+ "name": "punctuation.definition.escape.erlang"
152
+ },
153
+ "5": {
154
+ "name": "punctuation.definition.escape.erlang"
155
+ }
156
+ },
157
+ "match": "(\\$)((\\\\)([bdefnrstv\\\\'\"]|(\\^)[@-_a-z]|[0-7]{1,3}|x[\\da-fA-F]{2}))",
158
+ "name": "constant.character.erlang"
159
+ },
160
+ {
161
+ "match": "\\$\\\\\\^?.?",
162
+ "name": "invalid.illegal.character.erlang"
163
+ },
164
+ {
165
+ "captures": {
166
+ "1": {
167
+ "name": "punctuation.definition.character.erlang"
168
+ }
169
+ },
170
+ "match": "(\\$)[ \\S]",
171
+ "name": "constant.character.erlang"
172
+ },
173
+ {
174
+ "match": "\\$.?",
175
+ "name": "invalid.illegal.character.erlang"
176
+ }
177
+ ]
178
+ },
179
+ "comment": {
180
+ "begin": "(^[ \\t]+)?(?=%)",
181
+ "beginCaptures": {
182
+ "1": {
183
+ "name": "punctuation.whitespace.comment.leading.erlang"
184
+ }
185
+ },
186
+ "end": "(?!\\G)",
187
+ "patterns": [
188
+ {
189
+ "begin": "%",
190
+ "beginCaptures": {
191
+ "0": {
192
+ "name": "punctuation.definition.comment.erlang"
193
+ }
194
+ },
195
+ "end": "\\n",
196
+ "name": "comment.line.percentage.erlang"
197
+ }
198
+ ]
199
+ },
200
+ "define-directive": {
201
+ "patterns": [
202
+ {
203
+ "begin": "^\\s*+(-)\\s*+(define)\\s*+(\\()\\s*+([a-zA-Z\\d@_]++)\\s*+",
204
+ "beginCaptures": {
205
+ "1": {
206
+ "name": "punctuation.section.directive.begin.erlang"
207
+ },
208
+ "2": {
209
+ "name": "keyword.control.directive.define.erlang"
210
+ },
211
+ "3": {
212
+ "name": "punctuation.definition.parameters.begin.erlang"
213
+ },
214
+ "4": {
215
+ "name": "entity.name.function.macro.definition.erlang"
216
+ }
217
+ },
218
+ "end": "(\\))\\s*+(\\.)",
219
+ "endCaptures": {
220
+ "1": {
221
+ "name": "punctuation.definition.parameters.end.erlang"
222
+ },
223
+ "2": {
224
+ "name": "punctuation.section.directive.end.erlang"
225
+ }
226
+ },
227
+ "name": "meta.directive.define.erlang",
228
+ "patterns": [
229
+ {
230
+ "include": "#everything-else"
231
+ }
232
+ ]
233
+ },
234
+ {
235
+ "begin": "(?=^\\s*+-\\s*+define\\s*+\\(\\s*+[a-zA-Z\\d@_]++\\s*+\\()",
236
+ "end": "(\\))\\s*+(\\.)",
237
+ "endCaptures": {
238
+ "1": {
239
+ "name": "punctuation.definition.parameters.end.erlang"
240
+ },
241
+ "2": {
242
+ "name": "punctuation.section.directive.end.erlang"
243
+ }
244
+ },
245
+ "name": "meta.directive.define.erlang",
246
+ "patterns": [
247
+ {
248
+ "begin": "^\\s*+(-)\\s*+(define)\\s*+(\\()\\s*+([a-zA-Z\\d@_]++)\\s*+(\\()",
249
+ "beginCaptures": {
250
+ "1": {
251
+ "name": "punctuation.section.directive.begin.erlang"
252
+ },
253
+ "2": {
254
+ "name": "keyword.control.directive.define.erlang"
255
+ },
256
+ "3": {
257
+ "name": "punctuation.definition.parameters.begin.erlang"
258
+ },
259
+ "4": {
260
+ "name": "entity.name.function.macro.definition.erlang"
261
+ },
262
+ "5": {
263
+ "name": "punctuation.definition.parameters.begin.erlang"
264
+ }
265
+ },
266
+ "end": "(\\))\\s*(,)",
267
+ "endCaptures": {
268
+ "1": {
269
+ "name": "punctuation.definition.parameters.end.erlang"
270
+ },
271
+ "2": {
272
+ "name": "punctuation.separator.parameters.erlang"
273
+ }
274
+ },
275
+ "patterns": [
276
+ {
277
+ "match": ",",
278
+ "name": "punctuation.separator.parameters.erlang"
279
+ },
280
+ {
281
+ "include": "#everything-else"
282
+ }
283
+ ]
284
+ },
285
+ {
286
+ "match": "\\|\\||\\||:|;|,|\\.|->",
287
+ "name": "punctuation.separator.define.erlang"
288
+ },
289
+ {
290
+ "include": "#everything-else"
291
+ }
292
+ ]
293
+ }
294
+ ]
295
+ },
296
+ "directive": {
297
+ "patterns": [
298
+ {
299
+ "begin": "^\\s*+(-)\\s*+([a-z][a-zA-Z\\d@_]*+)\\s*+(\\(?)",
300
+ "beginCaptures": {
301
+ "1": {
302
+ "name": "punctuation.section.directive.begin.erlang"
303
+ },
304
+ "2": {
305
+ "name": "keyword.control.directive.erlang"
306
+ },
307
+ "3": {
308
+ "name": "punctuation.definition.parameters.begin.erlang"
309
+ }
310
+ },
311
+ "end": "(\\)?)\\s*+(\\.)",
312
+ "endCaptures": {
313
+ "1": {
314
+ "name": "punctuation.definition.parameters.end.erlang"
315
+ },
316
+ "2": {
317
+ "name": "punctuation.section.directive.end.erlang"
318
+ }
319
+ },
320
+ "name": "meta.directive.erlang",
321
+ "patterns": [
322
+ {
323
+ "include": "#everything-else"
324
+ }
325
+ ]
326
+ },
327
+ {
328
+ "captures": {
329
+ "1": {
330
+ "name": "punctuation.section.directive.begin.erlang"
331
+ },
332
+ "2": {
333
+ "name": "keyword.control.directive.erlang"
334
+ },
335
+ "3": {
336
+ "name": "punctuation.section.directive.end.erlang"
337
+ }
338
+ },
339
+ "match": "^\\s*+(-)\\s*+([a-z][a-zA-Z\\d@_]*+)\\s*+(\\.)",
340
+ "name": "meta.directive.erlang"
341
+ }
342
+ ]
343
+ },
344
+ "everything-else": {
345
+ "patterns": [
346
+ {
347
+ "include": "#comment"
348
+ },
349
+ {
350
+ "include": "#record-usage"
351
+ },
352
+ {
353
+ "include": "#macro-usage"
354
+ },
355
+ {
356
+ "include": "#expression"
357
+ },
358
+ {
359
+ "include": "#keyword"
360
+ },
361
+ {
362
+ "include": "#textual-operator"
363
+ },
364
+ {
365
+ "include": "#language-constant"
366
+ },
367
+ {
368
+ "include": "#function-call"
369
+ },
370
+ {
371
+ "include": "#tuple"
372
+ },
373
+ {
374
+ "include": "#list"
375
+ },
376
+ {
377
+ "include": "#binary"
378
+ },
379
+ {
380
+ "include": "#parenthesized-expression"
381
+ },
382
+ {
383
+ "include": "#character"
384
+ },
385
+ {
386
+ "include": "#number"
387
+ },
388
+ {
389
+ "include": "#atom"
390
+ },
391
+ {
392
+ "include": "#string"
393
+ },
394
+ {
395
+ "include": "#symbolic-operator"
396
+ },
397
+ {
398
+ "include": "#variable"
399
+ }
400
+ ]
401
+ },
402
+ "expression": {
403
+ "patterns": [
404
+ {
405
+ "begin": "\\b(if)\\b",
406
+ "beginCaptures": {
407
+ "1": {
408
+ "name": "keyword.control.if.erlang"
409
+ }
410
+ },
411
+ "end": "\\b(end)\\b",
412
+ "endCaptures": {
413
+ "1": {
414
+ "name": "keyword.control.end.erlang"
415
+ }
416
+ },
417
+ "name": "meta.expression.if.erlang",
418
+ "patterns": [
419
+ {
420
+ "include": "#internal-expression-punctuation"
421
+ },
422
+ {
423
+ "include": "#everything-else"
424
+ }
425
+ ]
426
+ },
427
+ {
428
+ "begin": "\\b(case)\\b",
429
+ "beginCaptures": {
430
+ "1": {
431
+ "name": "keyword.control.case.erlang"
432
+ }
433
+ },
434
+ "end": "\\b(end)\\b",
435
+ "endCaptures": {
436
+ "1": {
437
+ "name": "keyword.control.end.erlang"
438
+ }
439
+ },
440
+ "name": "meta.expression.case.erlang",
441
+ "patterns": [
442
+ {
443
+ "include": "#internal-expression-punctuation"
444
+ },
445
+ {
446
+ "include": "#everything-else"
447
+ }
448
+ ]
449
+ },
450
+ {
451
+ "begin": "\\b(receive)\\b",
452
+ "beginCaptures": {
453
+ "1": {
454
+ "name": "keyword.control.receive.erlang"
455
+ }
456
+ },
457
+ "end": "\\b(end)\\b",
458
+ "endCaptures": {
459
+ "1": {
460
+ "name": "keyword.control.end.erlang"
461
+ }
462
+ },
463
+ "name": "meta.expression.receive.erlang",
464
+ "patterns": [
465
+ {
466
+ "include": "#internal-expression-punctuation"
467
+ },
468
+ {
469
+ "include": "#everything-else"
470
+ }
471
+ ]
472
+ },
473
+ {
474
+ "captures": {
475
+ "1": {
476
+ "name": "keyword.control.fun.erlang"
477
+ },
478
+ "10": {
479
+ "name": "punctuation.separator.function-arity.erlang"
480
+ },
481
+ "4": {
482
+ "name": "entity.name.type.class.module.erlang"
483
+ },
484
+ "5": {
485
+ "name": "variable.other.erlang"
486
+ },
487
+ "6": {
488
+ "name": "punctuation.separator.module-function.erlang"
489
+ },
490
+ "8": {
491
+ "name": "entity.name.function.erlang"
492
+ },
493
+ "9": {
494
+ "name": "variable.other.erlang"
495
+ }
496
+ },
497
+ "comment": "Implicit function expression with optional module qualifier when both module and function can be atom or variable",
498
+ "match": "\\b(fun)\\s+((([a-z][a-zA-Z\\d@_]*+)|(_[a-zA-Z\\d@_]++|[A-Z][a-zA-Z\\d@_]*+))\\s*+(:)\\s*+)?(([a-z][a-zA-Z\\d@_]*+|'[^']*+')|(_[a-zA-Z\\d@_]++|[A-Z][a-zA-Z\\d@_]*+))\\s*(/)",
499
+ "name": "meta.expression.fun.implicit.erlang"
500
+ },
501
+ {
502
+ "begin": "\\b(fun)\\s+(([a-z][a-zA-Z\\d@_]*+)|(_[a-zA-Z\\d@_]++|[A-Z][a-zA-Z\\d@_]*+))\\s*+(:)",
503
+ "beginCaptures": {
504
+ "1": {
505
+ "name": "keyword.control.fun.erlang"
506
+ },
507
+ "3": {
508
+ "name": "entity.name.type.class.module.erlang"
509
+ },
510
+ "4": {
511
+ "name": "variable.other.erlang"
512
+ },
513
+ "5": {
514
+ "name": "punctuation.separator.module-function.erlang"
515
+ }
516
+ },
517
+ "comment": "Implicit function expression with module qualifier when module can be atom or variable and function can by anything",
518
+ "end": "(/)",
519
+ "endCaptures": {
520
+ "1": {
521
+ "name": "punctuation.separator.function-arity.erlang"
522
+ }
523
+ },
524
+ "name": "meta.expression.fun.implicit.erlang",
525
+ "patterns": [
526
+ {
527
+ "include": "#everything-else"
528
+ }
529
+ ]
530
+ },
531
+ {
532
+ "begin": "\\b(fun)\\s+(?!\\()",
533
+ "beginCaptures": {
534
+ "1": {
535
+ "name": "keyword.control.fun.erlang"
536
+ }
537
+ },
538
+ "comment": "Implicit function expression when both module and function can by anything",
539
+ "end": "(/)",
540
+ "endCaptures": {
541
+ "1": {
542
+ "name": "punctuation.separator.function-arity.erlang"
543
+ }
544
+ },
545
+ "name": "meta.expression.fun.implicit.erlang",
546
+ "patterns": [
547
+ {
548
+ "include": "#everything-else"
549
+ }
550
+ ]
551
+ },
552
+ {
553
+ "begin": "\\b(fun)\\s*+(\\()(?=(\\s*+\\())",
554
+ "beginCaptures": {
555
+ "1": {
556
+ "name": "entity.name.function.erlang"
557
+ },
558
+ "2": {
559
+ "name": "punctuation.definition.parameters.begin.erlang"
560
+ }
561
+ },
562
+ "comment": "Function type in type specification",
563
+ "end": "(\\))",
564
+ "endCaptures": {
565
+ "1": {
566
+ "name": "punctuation.definition.parameters.end.erlang"
567
+ }
568
+ },
569
+ "patterns": [
570
+ {
571
+ "include": "#everything-else"
572
+ }
573
+ ]
574
+ },
575
+ {
576
+ "begin": "\\b(fun)\\b",
577
+ "beginCaptures": {
578
+ "1": {
579
+ "name": "keyword.control.fun.erlang"
580
+ }
581
+ },
582
+ "comment": "Explicit function expression",
583
+ "end": "\\b(end)\\b",
584
+ "endCaptures": {
585
+ "1": {
586
+ "name": "keyword.control.end.erlang"
587
+ }
588
+ },
589
+ "name": "meta.expression.fun.erlang",
590
+ "patterns": [
591
+ {
592
+ "begin": "(?=\\()",
593
+ "end": "(;)|(?=\\bend\\b)",
594
+ "endCaptures": {
595
+ "1": {
596
+ "name": "punctuation.separator.clauses.erlang"
597
+ }
598
+ },
599
+ "patterns": [
600
+ {
601
+ "include": "#internal-function-parts"
602
+ }
603
+ ]
604
+ },
605
+ {
606
+ "include": "#everything-else"
607
+ }
608
+ ]
609
+ },
610
+ {
611
+ "begin": "\\b(try)\\b",
612
+ "beginCaptures": {
613
+ "1": {
614
+ "name": "keyword.control.try.erlang"
615
+ }
616
+ },
617
+ "end": "\\b(end)\\b",
618
+ "endCaptures": {
619
+ "1": {
620
+ "name": "keyword.control.end.erlang"
621
+ }
622
+ },
623
+ "name": "meta.expression.try.erlang",
624
+ "patterns": [
625
+ {
626
+ "include": "#internal-expression-punctuation"
627
+ },
628
+ {
629
+ "include": "#everything-else"
630
+ }
631
+ ]
632
+ },
633
+ {
634
+ "begin": "\\b(begin)\\b",
635
+ "beginCaptures": {
636
+ "1": {
637
+ "name": "keyword.control.begin.erlang"
638
+ }
639
+ },
640
+ "end": "\\b(end)\\b",
641
+ "endCaptures": {
642
+ "1": {
643
+ "name": "keyword.control.end.erlang"
644
+ }
645
+ },
646
+ "name": "meta.expression.begin.erlang",
647
+ "patterns": [
648
+ {
649
+ "include": "#internal-expression-punctuation"
650
+ },
651
+ {
652
+ "include": "#everything-else"
653
+ }
654
+ ]
655
+ },
656
+ {
657
+ "begin": "\\b(maybe)\\b",
658
+ "beginCaptures": {
659
+ "1": {
660
+ "name": "keyword.control.maybe.erlang"
661
+ }
662
+ },
663
+ "end": "\\b(end)\\b",
664
+ "endCaptures": {
665
+ "1": {
666
+ "name": "keyword.control.end.erlang"
667
+ }
668
+ },
669
+ "name": "meta.expression.maybe.erlang",
670
+ "patterns": [
671
+ {
672
+ "include": "#internal-expression-punctuation"
673
+ },
674
+ {
675
+ "include": "#everything-else"
676
+ }
677
+ ]
678
+ }
679
+ ]
680
+ },
681
+ "function": {
682
+ "begin": "^\\s*+([a-z][a-zA-Z\\d@_]*+|'[^']*+')\\s*+(?=\\()",
683
+ "beginCaptures": {
684
+ "1": {
685
+ "name": "entity.name.function.definition.erlang"
686
+ }
687
+ },
688
+ "end": "(\\.)",
689
+ "endCaptures": {
690
+ "1": {
691
+ "name": "punctuation.terminator.function.erlang"
692
+ }
693
+ },
694
+ "name": "meta.function.erlang",
695
+ "patterns": [
696
+ {
697
+ "captures": {
698
+ "1": {
699
+ "name": "entity.name.function.erlang"
700
+ }
701
+ },
702
+ "match": "^\\s*+([a-z][a-zA-Z\\d@_]*+|'[^']*+')\\s*+(?=\\()"
703
+ },
704
+ {
705
+ "begin": "(?=\\()",
706
+ "end": "(;)|(?=\\.)",
707
+ "endCaptures": {
708
+ "1": {
709
+ "name": "punctuation.separator.clauses.erlang"
710
+ }
711
+ },
712
+ "patterns": [
713
+ {
714
+ "include": "#parenthesized-expression"
715
+ },
716
+ {
717
+ "include": "#internal-function-parts"
718
+ }
719
+ ]
720
+ },
721
+ {
722
+ "include": "#everything-else"
723
+ }
724
+ ]
725
+ },
726
+ "function-call": {
727
+ "begin": "(?=([a-z][a-zA-Z\\d@_]*+|'[^']*+'|_[a-zA-Z\\d@_]++|[A-Z][a-zA-Z\\d@_]*+)\\s*+(\\(|:\\s*+([a-z][a-zA-Z\\d@_]*+|'[^']*+'|_[a-zA-Z\\d@_]++|[A-Z][a-zA-Z\\d@_]*+)\\s*+\\())",
728
+ "end": "(\\))",
729
+ "endCaptures": {
730
+ "1": {
731
+ "name": "punctuation.definition.parameters.end.erlang"
732
+ }
733
+ },
734
+ "name": "meta.function-call.erlang",
735
+ "patterns": [
736
+ {
737
+ "begin": "((erlang)\\s*+(:)\\s*+)?(is_atom|is_binary|is_constant|is_float|is_function|is_integer|is_list|is_number|is_pid|is_port|is_reference|is_tuple|is_record|abs|element|hd|length|node|round|self|size|tl|trunc)\\s*+(\\()",
738
+ "beginCaptures": {
739
+ "2": {
740
+ "name": "entity.name.type.class.module.erlang"
741
+ },
742
+ "3": {
743
+ "name": "punctuation.separator.module-function.erlang"
744
+ },
745
+ "4": {
746
+ "name": "entity.name.function.guard.erlang"
747
+ },
748
+ "5": {
749
+ "name": "punctuation.definition.parameters.begin.erlang"
750
+ }
751
+ },
752
+ "end": "(?=\\))",
753
+ "patterns": [
754
+ {
755
+ "match": ",",
756
+ "name": "punctuation.separator.parameters.erlang"
757
+ },
758
+ {
759
+ "include": "#everything-else"
760
+ }
761
+ ]
762
+ },
763
+ {
764
+ "begin": "((([a-z][a-zA-Z\\d@_]*+|'[^']*+')|(_[a-zA-Z\\d@_]++|[A-Z][a-zA-Z\\d@_]*+))\\s*+(:)\\s*+)?(([a-z][a-zA-Z\\d@_]*+|'[^']*+')|(_[a-zA-Z\\d@_]++|[A-Z][a-zA-Z\\d@_]*+))\\s*+(\\()",
765
+ "beginCaptures": {
766
+ "3": {
767
+ "name": "entity.name.type.class.module.erlang"
768
+ },
769
+ "4": {
770
+ "name": "variable.other.erlang"
771
+ },
772
+ "5": {
773
+ "name": "punctuation.separator.module-function.erlang"
774
+ },
775
+ "7": {
776
+ "name": "entity.name.function.erlang"
777
+ },
778
+ "8": {
779
+ "name": "variable.other.erlang"
780
+ },
781
+ "9": {
782
+ "name": "punctuation.definition.parameters.begin.erlang"
783
+ }
784
+ },
785
+ "end": "(?=\\))",
786
+ "patterns": [
787
+ {
788
+ "match": ",",
789
+ "name": "punctuation.separator.parameters.erlang"
790
+ },
791
+ {
792
+ "include": "#everything-else"
793
+ }
794
+ ]
795
+ }
796
+ ]
797
+ },
798
+ "import-export-directive": {
799
+ "patterns": [
800
+ {
801
+ "begin": "^\\s*+(-)\\s*+(import)\\s*+(\\()\\s*+([a-z][a-zA-Z\\d@_]*+|'[^']*+')\\s*+(,)",
802
+ "beginCaptures": {
803
+ "1": {
804
+ "name": "punctuation.section.directive.begin.erlang"
805
+ },
806
+ "2": {
807
+ "name": "keyword.control.directive.import.erlang"
808
+ },
809
+ "3": {
810
+ "name": "punctuation.definition.parameters.begin.erlang"
811
+ },
812
+ "4": {
813
+ "name": "entity.name.type.class.module.erlang"
814
+ },
815
+ "5": {
816
+ "name": "punctuation.separator.parameters.erlang"
817
+ }
818
+ },
819
+ "end": "(\\))\\s*+(\\.)",
820
+ "endCaptures": {
821
+ "1": {
822
+ "name": "punctuation.definition.parameters.end.erlang"
823
+ },
824
+ "2": {
825
+ "name": "punctuation.section.directive.end.erlang"
826
+ }
827
+ },
828
+ "name": "meta.directive.import.erlang",
829
+ "patterns": [
830
+ {
831
+ "include": "#internal-function-list"
832
+ }
833
+ ]
834
+ },
835
+ {
836
+ "begin": "^\\s*+(-)\\s*+(export)\\s*+(\\()",
837
+ "beginCaptures": {
838
+ "1": {
839
+ "name": "punctuation.section.directive.begin.erlang"
840
+ },
841
+ "2": {
842
+ "name": "keyword.control.directive.export.erlang"
843
+ },
844
+ "3": {
845
+ "name": "punctuation.definition.parameters.begin.erlang"
846
+ }
847
+ },
848
+ "end": "(\\))\\s*+(\\.)",
849
+ "endCaptures": {
850
+ "1": {
851
+ "name": "punctuation.definition.parameters.end.erlang"
852
+ },
853
+ "2": {
854
+ "name": "punctuation.section.directive.end.erlang"
855
+ }
856
+ },
857
+ "name": "meta.directive.export.erlang",
858
+ "patterns": [
859
+ {
860
+ "include": "#internal-function-list"
861
+ }
862
+ ]
863
+ }
864
+ ]
865
+ },
866
+ "internal-expression-punctuation": {
867
+ "captures": {
868
+ "1": {
869
+ "name": "punctuation.separator.clause-head-body.erlang"
870
+ },
871
+ "2": {
872
+ "name": "punctuation.separator.clauses.erlang"
873
+ },
874
+ "3": {
875
+ "name": "punctuation.separator.expressions.erlang"
876
+ }
877
+ },
878
+ "match": "(->)|(;)|(,)"
879
+ },
880
+ "internal-function-list": {
881
+ "begin": "(\\[)",
882
+ "beginCaptures": {
883
+ "1": {
884
+ "name": "punctuation.definition.list.begin.erlang"
885
+ }
886
+ },
887
+ "end": "(\\])",
888
+ "endCaptures": {
889
+ "1": {
890
+ "name": "punctuation.definition.list.end.erlang"
891
+ }
892
+ },
893
+ "name": "meta.structure.list.function.erlang",
894
+ "patterns": [
895
+ {
896
+ "begin": "([a-z][a-zA-Z\\d@_]*+|'[^']*+')\\s*+(/)",
897
+ "beginCaptures": {
898
+ "1": {
899
+ "name": "entity.name.function.erlang"
900
+ },
901
+ "2": {
902
+ "name": "punctuation.separator.function-arity.erlang"
903
+ }
904
+ },
905
+ "end": "(,)|(?=\\])",
906
+ "endCaptures": {
907
+ "1": {
908
+ "name": "punctuation.separator.list.erlang"
909
+ }
910
+ },
911
+ "patterns": [
912
+ {
913
+ "include": "#everything-else"
914
+ }
915
+ ]
916
+ },
917
+ {
918
+ "include": "#everything-else"
919
+ }
920
+ ]
921
+ },
922
+ "internal-function-parts": {
923
+ "patterns": [
924
+ {
925
+ "begin": "(?=\\()",
926
+ "end": "(->)",
927
+ "endCaptures": {
928
+ "1": {
929
+ "name": "punctuation.separator.clause-head-body.erlang"
930
+ }
931
+ },
932
+ "patterns": [
933
+ {
934
+ "begin": "(\\()",
935
+ "beginCaptures": {
936
+ "1": {
937
+ "name": "punctuation.definition.parameters.begin.erlang"
938
+ }
939
+ },
940
+ "end": "(\\))",
941
+ "endCaptures": {
942
+ "1": {
943
+ "name": "punctuation.definition.parameters.end.erlang"
944
+ }
945
+ },
946
+ "patterns": [
947
+ {
948
+ "match": ",",
949
+ "name": "punctuation.separator.parameters.erlang"
950
+ },
951
+ {
952
+ "include": "#everything-else"
953
+ }
954
+ ]
955
+ },
956
+ {
957
+ "match": ",|;",
958
+ "name": "punctuation.separator.guards.erlang"
959
+ },
960
+ {
961
+ "include": "#everything-else"
962
+ }
963
+ ]
964
+ },
965
+ {
966
+ "match": ",",
967
+ "name": "punctuation.separator.expressions.erlang"
968
+ },
969
+ {
970
+ "include": "#everything-else"
971
+ }
972
+ ]
973
+ },
974
+ "internal-record-body": {
975
+ "begin": "(\\{)",
976
+ "beginCaptures": {
977
+ "1": {
978
+ "name": "punctuation.definition.class.record.begin.erlang"
979
+ }
980
+ },
981
+ "end": "(\\})",
982
+ "endCaptures": {
983
+ "1": {
984
+ "name": "punctuation.definition.class.record.end.erlang"
985
+ }
986
+ },
987
+ "name": "meta.structure.record.erlang",
988
+ "patterns": [
989
+ {
990
+ "begin": "(([a-z][a-zA-Z\\d@_]*+|'[^']*+')|(_))",
991
+ "beginCaptures": {
992
+ "2": {
993
+ "name": "variable.other.field.erlang"
994
+ },
995
+ "3": {
996
+ "name": "variable.language.omitted.field.erlang"
997
+ }
998
+ },
999
+ "end": "(,)|(?=\\})",
1000
+ "endCaptures": {
1001
+ "1": {
1002
+ "name": "punctuation.separator.class.record.erlang"
1003
+ }
1004
+ },
1005
+ "patterns": [
1006
+ {
1007
+ "include": "#everything-else"
1008
+ }
1009
+ ]
1010
+ },
1011
+ {
1012
+ "include": "#everything-else"
1013
+ }
1014
+ ]
1015
+ },
1016
+ "internal-type-specifiers": {
1017
+ "begin": "(/)",
1018
+ "beginCaptures": {
1019
+ "1": {
1020
+ "name": "punctuation.separator.value-type.erlang"
1021
+ }
1022
+ },
1023
+ "end": "(?=,|:|>>)",
1024
+ "patterns": [
1025
+ {
1026
+ "captures": {
1027
+ "1": {
1028
+ "name": "storage.type.erlang"
1029
+ },
1030
+ "2": {
1031
+ "name": "storage.modifier.signedness.erlang"
1032
+ },
1033
+ "3": {
1034
+ "name": "storage.modifier.endianness.erlang"
1035
+ },
1036
+ "4": {
1037
+ "name": "storage.modifier.unit.erlang"
1038
+ },
1039
+ "5": {
1040
+ "name": "punctuation.separator.unit-specifiers.erlang"
1041
+ },
1042
+ "6": {
1043
+ "name": "constant.numeric.integer.decimal.erlang"
1044
+ },
1045
+ "7": {
1046
+ "name": "punctuation.separator.type-specifiers.erlang"
1047
+ }
1048
+ },
1049
+ "match": "(integer|float|binary|bytes|bitstring|bits|utf8|utf16|utf32)|(signed|unsigned)|(big|little|native)|(unit)(:)(\\d++)|(-)"
1050
+ }
1051
+ ]
1052
+ },
1053
+ "keyword": {
1054
+ "match": "\\b(after|begin|case|catch|cond|end|fun|if|let|of|try|receive|when|maybe|else)\\b",
1055
+ "name": "keyword.control.erlang"
1056
+ },
1057
+ "language-constant": {
1058
+ "match": "\\b(false|true|undefined)\\b",
1059
+ "name": "constant.language"
1060
+ },
1061
+ "list": {
1062
+ "begin": "(\\[)",
1063
+ "beginCaptures": {
1064
+ "1": {
1065
+ "name": "punctuation.definition.list.begin.erlang"
1066
+ }
1067
+ },
1068
+ "end": "(\\])",
1069
+ "endCaptures": {
1070
+ "1": {
1071
+ "name": "punctuation.definition.list.end.erlang"
1072
+ }
1073
+ },
1074
+ "name": "meta.structure.list.erlang",
1075
+ "patterns": [
1076
+ {
1077
+ "match": "\\||\\|\\||,",
1078
+ "name": "punctuation.separator.list.erlang"
1079
+ },
1080
+ {
1081
+ "include": "#everything-else"
1082
+ }
1083
+ ]
1084
+ },
1085
+ "macro-directive": {
1086
+ "patterns": [
1087
+ {
1088
+ "captures": {
1089
+ "1": {
1090
+ "name": "punctuation.section.directive.begin.erlang"
1091
+ },
1092
+ "2": {
1093
+ "name": "keyword.control.directive.ifdef.erlang"
1094
+ },
1095
+ "3": {
1096
+ "name": "punctuation.definition.parameters.begin.erlang"
1097
+ },
1098
+ "4": {
1099
+ "name": "entity.name.function.macro.erlang"
1100
+ },
1101
+ "5": {
1102
+ "name": "punctuation.definition.parameters.end.erlang"
1103
+ },
1104
+ "6": {
1105
+ "name": "punctuation.section.directive.end.erlang"
1106
+ }
1107
+ },
1108
+ "match": "^\\s*+(-)\\s*+(ifdef)\\s*+(\\()\\s*+([a-zA-z\\d@_]++)\\s*+(\\))\\s*+(\\.)",
1109
+ "name": "meta.directive.ifdef.erlang"
1110
+ },
1111
+ {
1112
+ "captures": {
1113
+ "1": {
1114
+ "name": "punctuation.section.directive.begin.erlang"
1115
+ },
1116
+ "2": {
1117
+ "name": "keyword.control.directive.ifndef.erlang"
1118
+ },
1119
+ "3": {
1120
+ "name": "punctuation.definition.parameters.begin.erlang"
1121
+ },
1122
+ "4": {
1123
+ "name": "entity.name.function.macro.erlang"
1124
+ },
1125
+ "5": {
1126
+ "name": "punctuation.definition.parameters.end.erlang"
1127
+ },
1128
+ "6": {
1129
+ "name": "punctuation.section.directive.end.erlang"
1130
+ }
1131
+ },
1132
+ "match": "^\\s*+(-)\\s*+(ifndef)\\s*+(\\()\\s*+([a-zA-z\\d@_]++)\\s*+(\\))\\s*+(\\.)",
1133
+ "name": "meta.directive.ifndef.erlang"
1134
+ },
1135
+ {
1136
+ "captures": {
1137
+ "1": {
1138
+ "name": "punctuation.section.directive.begin.erlang"
1139
+ },
1140
+ "2": {
1141
+ "name": "keyword.control.directive.undef.erlang"
1142
+ },
1143
+ "3": {
1144
+ "name": "punctuation.definition.parameters.begin.erlang"
1145
+ },
1146
+ "4": {
1147
+ "name": "entity.name.function.macro.erlang"
1148
+ },
1149
+ "5": {
1150
+ "name": "punctuation.definition.parameters.end.erlang"
1151
+ },
1152
+ "6": {
1153
+ "name": "punctuation.section.directive.end.erlang"
1154
+ }
1155
+ },
1156
+ "match": "^\\s*+(-)\\s*+(undef)\\s*+(\\()\\s*+([a-zA-z\\d@_]++)\\s*+(\\))\\s*+(\\.)",
1157
+ "name": "meta.directive.undef.erlang"
1158
+ }
1159
+ ]
1160
+ },
1161
+ "macro-usage": {
1162
+ "captures": {
1163
+ "1": {
1164
+ "name": "keyword.operator.macro.erlang"
1165
+ },
1166
+ "2": {
1167
+ "name": "entity.name.function.macro.erlang"
1168
+ }
1169
+ },
1170
+ "match": "(\\?\\??)\\s*+([a-zA-Z\\d@_]++)",
1171
+ "name": "meta.macro-usage.erlang"
1172
+ },
1173
+ "module-directive": {
1174
+ "captures": {
1175
+ "1": {
1176
+ "name": "punctuation.section.directive.begin.erlang"
1177
+ },
1178
+ "2": {
1179
+ "name": "keyword.control.directive.module.erlang"
1180
+ },
1181
+ "3": {
1182
+ "name": "punctuation.definition.parameters.begin.erlang"
1183
+ },
1184
+ "4": {
1185
+ "name": "entity.name.type.class.module.definition.erlang"
1186
+ },
1187
+ "5": {
1188
+ "name": "punctuation.definition.parameters.end.erlang"
1189
+ },
1190
+ "6": {
1191
+ "name": "punctuation.section.directive.end.erlang"
1192
+ }
1193
+ },
1194
+ "match": "^\\s*+(-)\\s*+(module)\\s*+(\\()\\s*+([a-z][a-zA-Z\\d@_]*+)\\s*+(\\))\\s*+(\\.)",
1195
+ "name": "meta.directive.module.erlang"
1196
+ },
1197
+ "number": {
1198
+ "begin": "(?=\\d)",
1199
+ "end": "(?!\\d)",
1200
+ "patterns": [
1201
+ {
1202
+ "captures": {
1203
+ "1": {
1204
+ "name": "punctuation.separator.integer-float.erlang"
1205
+ },
1206
+ "2": {
1207
+ "name": "punctuation.separator.float-exponent.erlang"
1208
+ }
1209
+ },
1210
+ "match": "\\d++(\\.)\\d++([eE][\\+\\-]?\\d++)?",
1211
+ "name": "constant.numeric.float.erlang"
1212
+ },
1213
+ {
1214
+ "captures": {
1215
+ "1": {
1216
+ "name": "punctuation.separator.base-integer.erlang"
1217
+ }
1218
+ },
1219
+ "match": "2(#)([0-1]++_)*[0-1]++",
1220
+ "name": "constant.numeric.integer.binary.erlang"
1221
+ },
1222
+ {
1223
+ "captures": {
1224
+ "1": {
1225
+ "name": "punctuation.separator.base-integer.erlang"
1226
+ }
1227
+ },
1228
+ "match": "3(#)([0-2]++_)*[0-2]++",
1229
+ "name": "constant.numeric.integer.base-3.erlang"
1230
+ },
1231
+ {
1232
+ "captures": {
1233
+ "1": {
1234
+ "name": "punctuation.separator.base-integer.erlang"
1235
+ }
1236
+ },
1237
+ "match": "4(#)([0-3]++_)*[0-3]++",
1238
+ "name": "constant.numeric.integer.base-4.erlang"
1239
+ },
1240
+ {
1241
+ "captures": {
1242
+ "1": {
1243
+ "name": "punctuation.separator.base-integer.erlang"
1244
+ }
1245
+ },
1246
+ "match": "5(#)([0-4]++_)*[0-4]++",
1247
+ "name": "constant.numeric.integer.base-5.erlang"
1248
+ },
1249
+ {
1250
+ "captures": {
1251
+ "1": {
1252
+ "name": "punctuation.separator.base-integer.erlang"
1253
+ }
1254
+ },
1255
+ "match": "6(#)([0-5]++_)*[0-5]++",
1256
+ "name": "constant.numeric.integer.base-6.erlang"
1257
+ },
1258
+ {
1259
+ "captures": {
1260
+ "1": {
1261
+ "name": "punctuation.separator.base-integer.erlang"
1262
+ }
1263
+ },
1264
+ "match": "7(#)([0-6]++_)*[0-6]++",
1265
+ "name": "constant.numeric.integer.base-7.erlang"
1266
+ },
1267
+ {
1268
+ "captures": {
1269
+ "1": {
1270
+ "name": "punctuation.separator.base-integer.erlang"
1271
+ }
1272
+ },
1273
+ "match": "8(#)([0-7]++_)*[0-7]++",
1274
+ "name": "constant.numeric.integer.octal.erlang"
1275
+ },
1276
+ {
1277
+ "captures": {
1278
+ "1": {
1279
+ "name": "punctuation.separator.base-integer.erlang"
1280
+ }
1281
+ },
1282
+ "match": "9(#)([0-8]++_)*[0-8]++",
1283
+ "name": "constant.numeric.integer.base-9.erlang"
1284
+ },
1285
+ {
1286
+ "captures": {
1287
+ "1": {
1288
+ "name": "punctuation.separator.base-integer.erlang"
1289
+ }
1290
+ },
1291
+ "match": "10(#)(\\d++_)*\\d++",
1292
+ "name": "constant.numeric.integer.decimal.erlang"
1293
+ },
1294
+ {
1295
+ "captures": {
1296
+ "1": {
1297
+ "name": "punctuation.separator.base-integer.erlang"
1298
+ }
1299
+ },
1300
+ "match": "11(#)([\\daA]++_)*[\\daA]++",
1301
+ "name": "constant.numeric.integer.base-11.erlang"
1302
+ },
1303
+ {
1304
+ "captures": {
1305
+ "1": {
1306
+ "name": "punctuation.separator.base-integer.erlang"
1307
+ }
1308
+ },
1309
+ "match": "12(#)([\\da-bA-B]++_)*[\\da-bA-B]++",
1310
+ "name": "constant.numeric.integer.base-12.erlang"
1311
+ },
1312
+ {
1313
+ "captures": {
1314
+ "1": {
1315
+ "name": "punctuation.separator.base-integer.erlang"
1316
+ }
1317
+ },
1318
+ "match": "13(#)([\\da-cA-C]++_)*[\\da-cA-C]++",
1319
+ "name": "constant.numeric.integer.base-13.erlang"
1320
+ },
1321
+ {
1322
+ "captures": {
1323
+ "1": {
1324
+ "name": "punctuation.separator.base-integer.erlang"
1325
+ }
1326
+ },
1327
+ "match": "14(#)([\\da-dA-D]++_)*[\\da-dA-D]++",
1328
+ "name": "constant.numeric.integer.base-14.erlang"
1329
+ },
1330
+ {
1331
+ "captures": {
1332
+ "1": {
1333
+ "name": "punctuation.separator.base-integer.erlang"
1334
+ }
1335
+ },
1336
+ "match": "15(#)([\\da-eA-E]++_)*[\\da-eA-E]++",
1337
+ "name": "constant.numeric.integer.base-15.erlang"
1338
+ },
1339
+ {
1340
+ "captures": {
1341
+ "1": {
1342
+ "name": "punctuation.separator.base-integer.erlang"
1343
+ }
1344
+ },
1345
+ "match": "16(#)([\\da-fA-F]++_)*[\\da-fA-F]++",
1346
+ "name": "constant.numeric.integer.hexadecimal.erlang"
1347
+ },
1348
+ {
1349
+ "captures": {
1350
+ "1": {
1351
+ "name": "punctuation.separator.base-integer.erlang"
1352
+ }
1353
+ },
1354
+ "match": "17(#)([\\da-gA-G]++_)*[\\da-gA-G]++",
1355
+ "name": "constant.numeric.integer.base-17.erlang"
1356
+ },
1357
+ {
1358
+ "captures": {
1359
+ "1": {
1360
+ "name": "punctuation.separator.base-integer.erlang"
1361
+ }
1362
+ },
1363
+ "match": "18(#)([\\da-hA-H]++_)*[\\da-hA-H]++",
1364
+ "name": "constant.numeric.integer.base-18.erlang"
1365
+ },
1366
+ {
1367
+ "captures": {
1368
+ "1": {
1369
+ "name": "punctuation.separator.base-integer.erlang"
1370
+ }
1371
+ },
1372
+ "match": "19(#)([\\da-iA-I]++_)*[\\da-iA-I]++",
1373
+ "name": "constant.numeric.integer.base-19.erlang"
1374
+ },
1375
+ {
1376
+ "captures": {
1377
+ "1": {
1378
+ "name": "punctuation.separator.base-integer.erlang"
1379
+ }
1380
+ },
1381
+ "match": "20(#)([\\da-jA-J]++_)*[\\da-jA-J]++",
1382
+ "name": "constant.numeric.integer.base-20.erlang"
1383
+ },
1384
+ {
1385
+ "captures": {
1386
+ "1": {
1387
+ "name": "punctuation.separator.base-integer.erlang"
1388
+ }
1389
+ },
1390
+ "match": "21(#)([\\da-kA-K]++_)*[\\da-kA-K]++",
1391
+ "name": "constant.numeric.integer.base-21.erlang"
1392
+ },
1393
+ {
1394
+ "captures": {
1395
+ "1": {
1396
+ "name": "punctuation.separator.base-integer.erlang"
1397
+ }
1398
+ },
1399
+ "match": "22(#)([\\da-lA-L]++_)*[\\da-lA-L]++",
1400
+ "name": "constant.numeric.integer.base-22.erlang"
1401
+ },
1402
+ {
1403
+ "captures": {
1404
+ "1": {
1405
+ "name": "punctuation.separator.base-integer.erlang"
1406
+ }
1407
+ },
1408
+ "match": "23(#)([\\da-mA-M]++_)*[\\da-mA-M]++",
1409
+ "name": "constant.numeric.integer.base-23.erlang"
1410
+ },
1411
+ {
1412
+ "captures": {
1413
+ "1": {
1414
+ "name": "punctuation.separator.base-integer.erlang"
1415
+ }
1416
+ },
1417
+ "match": "24(#)([\\da-nA-N]++_)*[\\da-nA-N]++",
1418
+ "name": "constant.numeric.integer.base-24.erlang"
1419
+ },
1420
+ {
1421
+ "captures": {
1422
+ "1": {
1423
+ "name": "punctuation.separator.base-integer.erlang"
1424
+ }
1425
+ },
1426
+ "match": "25(#)([\\da-oA-O]++_)*[\\da-oA-O]++",
1427
+ "name": "constant.numeric.integer.base-25.erlang"
1428
+ },
1429
+ {
1430
+ "captures": {
1431
+ "1": {
1432
+ "name": "punctuation.separator.base-integer.erlang"
1433
+ }
1434
+ },
1435
+ "match": "26(#)([\\da-pA-P]++_)*[\\da-pA-P]++",
1436
+ "name": "constant.numeric.integer.base-26.erlang"
1437
+ },
1438
+ {
1439
+ "captures": {
1440
+ "1": {
1441
+ "name": "punctuation.separator.base-integer.erlang"
1442
+ }
1443
+ },
1444
+ "match": "27(#)([\\da-qA-Q]++_)*[\\da-qA-Q]++",
1445
+ "name": "constant.numeric.integer.base-27.erlang"
1446
+ },
1447
+ {
1448
+ "captures": {
1449
+ "1": {
1450
+ "name": "punctuation.separator.base-integer.erlang"
1451
+ }
1452
+ },
1453
+ "match": "28(#)([\\da-rA-R]++_)*[\\da-rA-R]++",
1454
+ "name": "constant.numeric.integer.base-28.erlang"
1455
+ },
1456
+ {
1457
+ "captures": {
1458
+ "1": {
1459
+ "name": "punctuation.separator.base-integer.erlang"
1460
+ }
1461
+ },
1462
+ "match": "29(#)([\\da-sA-S]++_)*[\\da-sA-S]++",
1463
+ "name": "constant.numeric.integer.base-29.erlang"
1464
+ },
1465
+ {
1466
+ "captures": {
1467
+ "1": {
1468
+ "name": "punctuation.separator.base-integer.erlang"
1469
+ }
1470
+ },
1471
+ "match": "30(#)([\\da-tA-T]++_)*[\\da-tA-T]++",
1472
+ "name": "constant.numeric.integer.base-30.erlang"
1473
+ },
1474
+ {
1475
+ "captures": {
1476
+ "1": {
1477
+ "name": "punctuation.separator.base-integer.erlang"
1478
+ }
1479
+ },
1480
+ "match": "31(#)([\\da-uA-U]++_)*[\\da-uA-U]++",
1481
+ "name": "constant.numeric.integer.base-31.erlang"
1482
+ },
1483
+ {
1484
+ "captures": {
1485
+ "1": {
1486
+ "name": "punctuation.separator.base-integer.erlang"
1487
+ }
1488
+ },
1489
+ "match": "32(#)([\\da-vA-V]++_)*[\\da-vA-V]++",
1490
+ "name": "constant.numeric.integer.base-32.erlang"
1491
+ },
1492
+ {
1493
+ "captures": {
1494
+ "1": {
1495
+ "name": "punctuation.separator.base-integer.erlang"
1496
+ }
1497
+ },
1498
+ "match": "33(#)([\\da-wA-W]++_)*[\\da-wA-W]++",
1499
+ "name": "constant.numeric.integer.base-33.erlang"
1500
+ },
1501
+ {
1502
+ "captures": {
1503
+ "1": {
1504
+ "name": "punctuation.separator.base-integer.erlang"
1505
+ }
1506
+ },
1507
+ "match": "34(#)([\\da-xA-X]++_)*[\\da-xA-X]++",
1508
+ "name": "constant.numeric.integer.base-34.erlang"
1509
+ },
1510
+ {
1511
+ "captures": {
1512
+ "1": {
1513
+ "name": "punctuation.separator.base-integer.erlang"
1514
+ }
1515
+ },
1516
+ "match": "35(#)([\\da-yA-Y]++_)*[\\da-yA-Y]++",
1517
+ "name": "constant.numeric.integer.base-35.erlang"
1518
+ },
1519
+ {
1520
+ "captures": {
1521
+ "1": {
1522
+ "name": "punctuation.separator.base-integer.erlang"
1523
+ }
1524
+ },
1525
+ "match": "36(#)([\\da-zA-Z]++_)*[\\da-zA-Z]++",
1526
+ "name": "constant.numeric.integer.base-36.erlang"
1527
+ },
1528
+ {
1529
+ "match": "\\d++#([\\da-zA-Z]++_)*[\\da-zA-Z]++",
1530
+ "name": "invalid.illegal.integer.erlang"
1531
+ },
1532
+ {
1533
+ "match": "(\\d++_)*\\d++",
1534
+ "name": "constant.numeric.integer.decimal.erlang"
1535
+ }
1536
+ ]
1537
+ },
1538
+ "parenthesized-expression": {
1539
+ "begin": "(\\()",
1540
+ "beginCaptures": {
1541
+ "1": {
1542
+ "name": "punctuation.section.expression.begin.erlang"
1543
+ }
1544
+ },
1545
+ "end": "(\\))",
1546
+ "endCaptures": {
1547
+ "1": {
1548
+ "name": "punctuation.section.expression.end.erlang"
1549
+ }
1550
+ },
1551
+ "name": "meta.expression.parenthesized",
1552
+ "patterns": [
1553
+ {
1554
+ "include": "#everything-else"
1555
+ }
1556
+ ]
1557
+ },
1558
+ "record-directive": {
1559
+ "begin": "^\\s*+(-)\\s*+(record)\\s*+(\\()\\s*+([a-z][a-zA-Z\\d@_]*+|'[^']*+')\\s*+(,)",
1560
+ "beginCaptures": {
1561
+ "1": {
1562
+ "name": "punctuation.section.directive.begin.erlang"
1563
+ },
1564
+ "2": {
1565
+ "name": "keyword.control.directive.import.erlang"
1566
+ },
1567
+ "3": {
1568
+ "name": "punctuation.definition.parameters.begin.erlang"
1569
+ },
1570
+ "4": {
1571
+ "name": "entity.name.type.class.record.definition.erlang"
1572
+ },
1573
+ "5": {
1574
+ "name": "punctuation.separator.parameters.erlang"
1575
+ }
1576
+ },
1577
+ "end": "(\\))\\s*+(\\.)",
1578
+ "endCaptures": {
1579
+ "1": {
1580
+ "name": "punctuation.definition.parameters.end.erlang"
1581
+ },
1582
+ "2": {
1583
+ "name": "punctuation.section.directive.end.erlang"
1584
+ }
1585
+ },
1586
+ "name": "meta.directive.record.erlang",
1587
+ "patterns": [
1588
+ {
1589
+ "include": "#internal-record-body"
1590
+ },
1591
+ {
1592
+ "include": "#comment"
1593
+ }
1594
+ ]
1595
+ },
1596
+ "record-usage": {
1597
+ "patterns": [
1598
+ {
1599
+ "captures": {
1600
+ "1": {
1601
+ "name": "keyword.operator.record.erlang"
1602
+ },
1603
+ "2": {
1604
+ "name": "entity.name.type.class.record.erlang"
1605
+ },
1606
+ "3": {
1607
+ "name": "punctuation.separator.record-field.erlang"
1608
+ },
1609
+ "4": {
1610
+ "name": "variable.other.field.erlang"
1611
+ }
1612
+ },
1613
+ "match": "(#)\\s*+([a-z][a-zA-Z\\d@_]*+|'[^']*+')\\s*+(\\.)\\s*+([a-z][a-zA-Z\\d@_]*+|'[^']*+')",
1614
+ "name": "meta.record-usage.erlang"
1615
+ },
1616
+ {
1617
+ "begin": "(#)\\s*+([a-z][a-zA-Z\\d@_]*+|'[^']*+')",
1618
+ "beginCaptures": {
1619
+ "1": {
1620
+ "name": "keyword.operator.record.erlang"
1621
+ },
1622
+ "2": {
1623
+ "name": "entity.name.type.class.record.erlang"
1624
+ }
1625
+ },
1626
+ "end": "(?<=\\})",
1627
+ "name": "meta.record-usage.erlang",
1628
+ "patterns": [
1629
+ {
1630
+ "include": "#internal-record-body"
1631
+ }
1632
+ ]
1633
+ }
1634
+ ]
1635
+ },
1636
+ "string": {
1637
+ "begin": "(\")",
1638
+ "beginCaptures": {
1639
+ "1": {
1640
+ "name": "punctuation.definition.string.begin.erlang"
1641
+ }
1642
+ },
1643
+ "end": "(\")",
1644
+ "endCaptures": {
1645
+ "1": {
1646
+ "name": "punctuation.definition.string.end.erlang"
1647
+ }
1648
+ },
1649
+ "name": "string.quoted.double.erlang",
1650
+ "patterns": [
1651
+ {
1652
+ "captures": {
1653
+ "1": {
1654
+ "name": "punctuation.definition.escape.erlang"
1655
+ },
1656
+ "3": {
1657
+ "name": "punctuation.definition.escape.erlang"
1658
+ }
1659
+ },
1660
+ "match": "(\\\\)([bdefnrstv\\\\'\"]|(\\^)[@-_a-z]|[0-7]{1,3}|x[\\da-fA-F]{2})",
1661
+ "name": "constant.character.escape.erlang"
1662
+ },
1663
+ {
1664
+ "match": "\\\\\\^?.?",
1665
+ "name": "invalid.illegal.string.erlang"
1666
+ },
1667
+ {
1668
+ "captures": {
1669
+ "1": {
1670
+ "name": "punctuation.definition.placeholder.erlang"
1671
+ },
1672
+ "10": {
1673
+ "name": "punctuation.separator.placeholder-parts.erlang"
1674
+ },
1675
+ "12": {
1676
+ "name": "punctuation.separator.placeholder-parts.erlang"
1677
+ },
1678
+ "3": {
1679
+ "name": "punctuation.separator.placeholder-parts.erlang"
1680
+ },
1681
+ "4": {
1682
+ "name": "punctuation.separator.placeholder-parts.erlang"
1683
+ },
1684
+ "6": {
1685
+ "name": "punctuation.separator.placeholder-parts.erlang"
1686
+ },
1687
+ "8": {
1688
+ "name": "punctuation.separator.placeholder-parts.erlang"
1689
+ }
1690
+ },
1691
+ "match": "(~)((\\-)?\\d++|(\\*))?((\\.)(\\d++|(\\*)))?((\\.)((\\*)|.))?[~cfegswpWPBX#bx\\+ni]",
1692
+ "name": "constant.other.placeholder.erlang"
1693
+ },
1694
+ {
1695
+ "captures": {
1696
+ "1": {
1697
+ "name": "punctuation.definition.placeholder.erlang"
1698
+ },
1699
+ "2": {
1700
+ "name": "punctuation.separator.placeholder-parts.erlang"
1701
+ }
1702
+ },
1703
+ "match": "(~)(\\*)?(\\d++)?[~du\\-#fsacl]",
1704
+ "name": "constant.other.placeholder.erlang"
1705
+ },
1706
+ {
1707
+ "match": "~[^\"]?",
1708
+ "name": "invalid.illegal.string.erlang"
1709
+ }
1710
+ ]
1711
+ },
1712
+ "symbolic-operator": {
1713
+ "match": "\\+\\+|\\+|--|-|\\*|/=|/|=/=|=:=|==|=<|=|<-|<|>=|>|!|::|\\?=",
1714
+ "name": "keyword.operator.symbolic.erlang"
1715
+ },
1716
+ "textual-operator": {
1717
+ "match": "\\b(andalso|band|and|bxor|xor|bor|orelse|or|bnot|not|bsl|bsr|div|rem)\\b",
1718
+ "name": "keyword.operator.textual.erlang"
1719
+ },
1720
+ "tuple": {
1721
+ "begin": "(\\{)",
1722
+ "beginCaptures": {
1723
+ "1": {
1724
+ "name": "punctuation.definition.tuple.begin.erlang"
1725
+ }
1726
+ },
1727
+ "end": "(\\})",
1728
+ "endCaptures": {
1729
+ "1": {
1730
+ "name": "punctuation.definition.tuple.end.erlang"
1731
+ }
1732
+ },
1733
+ "name": "meta.structure.tuple.erlang",
1734
+ "patterns": [
1735
+ {
1736
+ "match": ",",
1737
+ "name": "punctuation.separator.tuple.erlang"
1738
+ },
1739
+ {
1740
+ "include": "#everything-else"
1741
+ }
1742
+ ]
1743
+ },
1744
+ "variable": {
1745
+ "captures": {
1746
+ "1": {
1747
+ "name": "variable.other.erlang"
1748
+ },
1749
+ "2": {
1750
+ "name": "variable.language.omitted.erlang"
1751
+ }
1752
+ },
1753
+ "match": "(_[a-zA-Z\\d@_]++|[A-Z][a-zA-Z\\d@_]*+)|(_)"
1754
+ }
1755
+ },
1756
+ "scopeName": "source.erlang"
1757
+ }