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,1001 @@
1
+ {
2
+ "displayName": "V",
3
+ "fileTypes": [
4
+ ".v",
5
+ ".vh",
6
+ ".vsh",
7
+ ".vv",
8
+ "v.mod"
9
+ ],
10
+ "name": "v",
11
+ "patterns": [
12
+ {
13
+ "include": "#comments"
14
+ },
15
+ {
16
+ "include": "#function-decl"
17
+ },
18
+ {
19
+ "include": "#as-is"
20
+ },
21
+ {
22
+ "include": "#attributes"
23
+ },
24
+ {
25
+ "include": "#assignment"
26
+ },
27
+ {
28
+ "include": "#module-decl"
29
+ },
30
+ {
31
+ "include": "#import-decl"
32
+ },
33
+ {
34
+ "include": "#hash-decl"
35
+ },
36
+ {
37
+ "include": "#brackets"
38
+ },
39
+ {
40
+ "include": "#builtin-fix"
41
+ },
42
+ {
43
+ "include": "#escaped-fix"
44
+ },
45
+ {
46
+ "include": "#operators"
47
+ },
48
+ {
49
+ "include": "#function-limited-overload-decl"
50
+ },
51
+ {
52
+ "include": "#function-extend-decl"
53
+ },
54
+ {
55
+ "include": "#function-exist"
56
+ },
57
+ {
58
+ "include": "#generic"
59
+ },
60
+ {
61
+ "include": "#constants"
62
+ },
63
+ {
64
+ "include": "#type"
65
+ },
66
+ {
67
+ "include": "#enum"
68
+ },
69
+ {
70
+ "include": "#interface"
71
+ },
72
+ {
73
+ "include": "#struct"
74
+ },
75
+ {
76
+ "include": "#keywords"
77
+ },
78
+ {
79
+ "include": "#storage"
80
+ },
81
+ {
82
+ "include": "#numbers"
83
+ },
84
+ {
85
+ "include": "#strings"
86
+ },
87
+ {
88
+ "include": "#types"
89
+ },
90
+ {
91
+ "include": "#punctuations"
92
+ },
93
+ {
94
+ "include": "#variable-assign"
95
+ },
96
+ {
97
+ "include": "#function-decl"
98
+ }
99
+ ],
100
+ "repository": {
101
+ "as-is": {
102
+ "begin": "\\s+(as|is)\\s+",
103
+ "beginCaptures": {
104
+ "1": {
105
+ "name": "keyword.$1.v"
106
+ }
107
+ },
108
+ "end": "([\\w.]*)",
109
+ "endCaptures": {
110
+ "1": {
111
+ "name": "entity.name.alias.v"
112
+ }
113
+ }
114
+ },
115
+ "assignment": {
116
+ "captures": {
117
+ "1": {
118
+ "patterns": [
119
+ {
120
+ "include": "#operators"
121
+ }
122
+ ]
123
+ }
124
+ },
125
+ "match": "\\s+((?:\\:|\\+|\\-|\\*|/|\\%|\\&|\\||\\^)?=)\\s+",
126
+ "name": "meta.definition.variable.v"
127
+ },
128
+ "attributes": {
129
+ "captures": {
130
+ "1": {
131
+ "name": "meta.function.attribute.v"
132
+ },
133
+ "2": {
134
+ "name": "punctuation.definition.begin.bracket.square.v"
135
+ },
136
+ "3": {
137
+ "name": "storage.modifier.attribute.v"
138
+ },
139
+ "4": {
140
+ "name": "punctuation.definition.end.bracket.square.v"
141
+ }
142
+ },
143
+ "match": "^\\s*((\\[)(deprecated|unsafe|console|heap|manualfree|typedef|live|inline|flag|ref_only|direct_array_access|callconv)(\\]))",
144
+ "name": "meta.definition.attribute.v"
145
+ },
146
+ "brackets": {
147
+ "patterns": [
148
+ {
149
+ "begin": "{",
150
+ "beginCaptures": {
151
+ "0": {
152
+ "name": "punctuation.definition.bracket.curly.begin.v"
153
+ }
154
+ },
155
+ "end": "}",
156
+ "endCaptures": {
157
+ "0": {
158
+ "name": "punctuation.definition.bracket.curly.end.v"
159
+ }
160
+ },
161
+ "patterns": [
162
+ {
163
+ "include": "$self"
164
+ }
165
+ ]
166
+ },
167
+ {
168
+ "begin": "\\(",
169
+ "beginCaptures": {
170
+ "0": {
171
+ "name": "punctuation.definition.bracket.round.begin.v"
172
+ }
173
+ },
174
+ "end": "\\)",
175
+ "endCaptures": {
176
+ "0": {
177
+ "name": "punctuation.definition.bracket.round.end.v"
178
+ }
179
+ },
180
+ "patterns": [
181
+ {
182
+ "include": "$self"
183
+ }
184
+ ]
185
+ },
186
+ {
187
+ "begin": "\\[",
188
+ "beginCaptures": {
189
+ "0": {
190
+ "name": "punctuation.definition.bracket.square.begin.v"
191
+ }
192
+ },
193
+ "end": "\\]",
194
+ "endCaptures": {
195
+ "0": {
196
+ "name": "punctuation.definition.bracket.square.end.v"
197
+ }
198
+ },
199
+ "patterns": [
200
+ {
201
+ "include": "$self"
202
+ }
203
+ ]
204
+ }
205
+ ]
206
+ },
207
+ "builtin-fix": {
208
+ "patterns": [
209
+ {
210
+ "patterns": [
211
+ {
212
+ "match": "(const)(?=\\s*\\()",
213
+ "name": "storage.modifier.v"
214
+ },
215
+ {
216
+ "match": "\\b(fn|type|enum|struct|union|interface|map|assert|sizeof|typeof|__offsetof)\\b(?=\\s*\\()",
217
+ "name": "keyword.$1.v"
218
+ }
219
+ ]
220
+ },
221
+ {
222
+ "patterns": [
223
+ {
224
+ "match": "(\\$if|\\$else)(?=\\s*\\()",
225
+ "name": "keyword.control.v"
226
+ },
227
+ {
228
+ "match": "\\b(as|in|is|or|break|continue|default|unsafe|match|if|else|for|go|spawn|goto|defer|return|shared|select|rlock|lock|atomic|asm)\\b(?=\\s*\\()",
229
+ "name": "keyword.control.v"
230
+ }
231
+ ]
232
+ },
233
+ {
234
+ "patterns": [
235
+ {
236
+ "captures": {
237
+ "1": {
238
+ "name": "storage.type.numeric.v"
239
+ }
240
+ },
241
+ "match": "(?<!.)(i?(?:8|16|nt|64|128)|u?(?:16|32|64|128)|f?(?:32|64))(?=\\s*\\()",
242
+ "name": "meta.expr.numeric.cast.v"
243
+ },
244
+ {
245
+ "captures": {
246
+ "1": {
247
+ "name": "storage.type.$1.v"
248
+ }
249
+ },
250
+ "match": "(bool|byte|byteptr|charptr|voidptr|string|rune|size_t|[ui]size)(?=\\s*\\()",
251
+ "name": "meta.expr.bool.cast.v"
252
+ }
253
+ ]
254
+ }
255
+ ]
256
+ },
257
+ "comments": {
258
+ "patterns": [
259
+ {
260
+ "begin": "/\\*",
261
+ "beginCaptures": {
262
+ "0": {
263
+ "name": "punctuation.definition.comment.begin.v"
264
+ }
265
+ },
266
+ "end": "\\*/",
267
+ "endCaptures": {
268
+ "0": {
269
+ "name": "punctuation.definition.comment.end.v"
270
+ }
271
+ },
272
+ "name": "comment.block.documentation.v",
273
+ "patterns": [
274
+ {
275
+ "include": "#comments"
276
+ }
277
+ ]
278
+ },
279
+ {
280
+ "begin": "//",
281
+ "beginCaptures": {
282
+ "0": {
283
+ "name": "punctuation.definition.comment.begin.v"
284
+ }
285
+ },
286
+ "end": "$",
287
+ "name": "comment.line.double-slash.v"
288
+ }
289
+ ]
290
+ },
291
+ "constants": {
292
+ "match": "\\b(true|false|none)\\b",
293
+ "name": "constant.language.v"
294
+ },
295
+ "enum": {
296
+ "captures": {
297
+ "1": {
298
+ "name": "storage.modifier.$1.v"
299
+ },
300
+ "2": {
301
+ "name": "storage.type.enum.v"
302
+ },
303
+ "3": {
304
+ "name": "entity.name.enum.v"
305
+ }
306
+ },
307
+ "match": "^\\s*(?:(pub)?\\s+)?(enum)\\s+(?:\\w+\\.)?(\\w*)",
308
+ "name": "meta.definition.enum.v"
309
+ },
310
+ "function-decl": {
311
+ "captures": {
312
+ "1": {
313
+ "name": "storage.modifier.v"
314
+ },
315
+ "2": {
316
+ "name": "keyword.fn.v"
317
+ },
318
+ "3": {
319
+ "name": "entity.name.function.v"
320
+ },
321
+ "4": {
322
+ "patterns": [
323
+ {
324
+ "include": "#generic"
325
+ }
326
+ ]
327
+ }
328
+ },
329
+ "match": "^(\\bpub\\b\\s+)?(\\bfn\\b)\\s+(?:\\([^\\)]+\\)\\s+)?(?:(?:C\\.)?)(\\w+)\\s*((?<=[\\w\\s+])(\\<)(\\w+)(\\>))?",
330
+ "name": "meta.definition.function.v"
331
+ },
332
+ "function-exist": {
333
+ "captures": {
334
+ "0": {
335
+ "name": "meta.function.call.v"
336
+ },
337
+ "1": {
338
+ "patterns": [
339
+ {
340
+ "include": "#illegal-name"
341
+ },
342
+ {
343
+ "match": "\\w+",
344
+ "name": "entity.name.function.v"
345
+ }
346
+ ]
347
+ },
348
+ "2": {
349
+ "patterns": [
350
+ {
351
+ "include": "#generic"
352
+ }
353
+ ]
354
+ }
355
+ },
356
+ "match": "(\\w+)((?<=[\\w\\s+])(\\<)(\\w+)(\\>))?(?=\\s*\\()",
357
+ "name": "meta.support.function.v"
358
+ },
359
+ "function-extend-decl": {
360
+ "captures": {
361
+ "1": {
362
+ "name": "storage.modifier.v"
363
+ },
364
+ "2": {
365
+ "name": "keyword.fn.v"
366
+ },
367
+ "3": {
368
+ "name": "punctuation.definition.bracket.round.begin.v"
369
+ },
370
+ "4": {
371
+ "patterns": [
372
+ {
373
+ "include": "#brackets"
374
+ },
375
+ {
376
+ "include": "#storage"
377
+ },
378
+ {
379
+ "include": "#generic"
380
+ },
381
+ {
382
+ "include": "#types"
383
+ },
384
+ {
385
+ "include": "#punctuation"
386
+ }
387
+ ]
388
+ },
389
+ "5": {
390
+ "name": "punctuation.definition.bracket.round.end.v"
391
+ },
392
+ "6": {
393
+ "patterns": [
394
+ {
395
+ "include": "#illegal-name"
396
+ },
397
+ {
398
+ "match": "\\w+",
399
+ "name": "entity.name.function.v"
400
+ }
401
+ ]
402
+ },
403
+ "7": {
404
+ "patterns": [
405
+ {
406
+ "include": "#generic"
407
+ }
408
+ ]
409
+ }
410
+ },
411
+ "match": "^\\s*(pub)?\\s*(fn)\\s*(\\()([^\\)]*)(\\))\\s*(?:(?:C\\.)?)(\\w+)\\s*((?<=[\\w\\s+])(\\<)(\\w+)(\\>))?",
412
+ "name": "meta.definition.function.v"
413
+ },
414
+ "function-limited-overload-decl": {
415
+ "captures": {
416
+ "1": {
417
+ "name": "storage.modifier.v"
418
+ },
419
+ "10": {
420
+ "patterns": [
421
+ {
422
+ "include": "#illegal-name"
423
+ },
424
+ {
425
+ "match": "\\w+",
426
+ "name": "entity.name.function.v"
427
+ }
428
+ ]
429
+ },
430
+ "2": {
431
+ "name": "keyword.fn.v"
432
+ },
433
+ "3": {
434
+ "name": "punctuation.definition.bracket.round.begin.v"
435
+ },
436
+ "4": {
437
+ "patterns": [
438
+ {
439
+ "include": "#brackets"
440
+ },
441
+ {
442
+ "include": "#storage"
443
+ },
444
+ {
445
+ "include": "#generic"
446
+ },
447
+ {
448
+ "include": "#types"
449
+ },
450
+ {
451
+ "include": "#punctuation"
452
+ }
453
+ ]
454
+ },
455
+ "5": {
456
+ "name": "punctuation.definition.bracket.round.end.v"
457
+ },
458
+ "6": {
459
+ "patterns": [
460
+ {
461
+ "include": "#operators"
462
+ }
463
+ ]
464
+ },
465
+ "7": {
466
+ "name": "punctuation.definition.bracket.round.begin.v"
467
+ },
468
+ "8": {
469
+ "patterns": [
470
+ {
471
+ "include": "#brackets"
472
+ },
473
+ {
474
+ "include": "#storage"
475
+ },
476
+ {
477
+ "include": "#generic"
478
+ },
479
+ {
480
+ "include": "#types"
481
+ },
482
+ {
483
+ "include": "#punctuation"
484
+ }
485
+ ]
486
+ },
487
+ "9": {
488
+ "name": "punctuation.definition.bracket.round.end.v"
489
+ }
490
+ },
491
+ "match": "^\\s*(pub)?\\s*(fn)\\s*(\\()([^\\)]*)(\\))\\s*([\\+\\-\\*\\/])?\\s*(\\()([^\\)]*)(\\))\\s*(?:(?:C\\.)?)(\\w+)",
492
+ "name": "meta.definition.function.v"
493
+ },
494
+ "generic": {
495
+ "patterns": [
496
+ {
497
+ "captures": {
498
+ "1": {
499
+ "name": "punctuation.definition.bracket.angle.begin.v"
500
+ },
501
+ "2": {
502
+ "patterns": [
503
+ {
504
+ "include": "#illegal-name"
505
+ },
506
+ {
507
+ "match": "\\w+",
508
+ "name": "entity.name.generic.v"
509
+ }
510
+ ]
511
+ },
512
+ "3": {
513
+ "name": "punctuation.definition.bracket.angle.end.v"
514
+ }
515
+ },
516
+ "match": "(?<=[\\w\\s+])(\\<)(\\w+)(\\>)",
517
+ "name": "meta.definition.generic.v"
518
+ }
519
+ ]
520
+ },
521
+ "hash-decl": {
522
+ "begin": "^\\s*(#)",
523
+ "end": "$",
524
+ "name": "markup.bold.v"
525
+ },
526
+ "illegal-name": {
527
+ "match": "\\d\\w+",
528
+ "name": "invalid.illegal.v"
529
+ },
530
+ "import-decl": {
531
+ "begin": "^\\s*(import)\\s+",
532
+ "beginCaptures": {
533
+ "1": {
534
+ "name": "keyword.import.v"
535
+ }
536
+ },
537
+ "end": "([\\w.]+)",
538
+ "endCaptures": {
539
+ "1": {
540
+ "name": "entity.name.import.v"
541
+ }
542
+ },
543
+ "name": "meta.import.v"
544
+ },
545
+ "interface": {
546
+ "captures": {
547
+ "1": {
548
+ "name": "storage.modifier.$1.v"
549
+ },
550
+ "2": {
551
+ "name": "keyword.interface.v"
552
+ },
553
+ "3": {
554
+ "patterns": [
555
+ {
556
+ "include": "#illegal-name"
557
+ },
558
+ {
559
+ "match": "\\w+",
560
+ "name": "entity.name.interface.v"
561
+ }
562
+ ]
563
+ }
564
+ },
565
+ "match": "^\\s*(?:(pub)?\\s+)?(interface)\\s+(\\w*)",
566
+ "name": "meta.definition.interface.v"
567
+ },
568
+ "keywords": {
569
+ "patterns": [
570
+ {
571
+ "match": "(\\$if|\\$else)",
572
+ "name": "keyword.control.v"
573
+ },
574
+ {
575
+ "match": "(?<!@)\\b(as|it|is|in|or|break|continue|default|unsafe|match|if|else|for|go|spawn|goto|defer|return|shared|select|rlock|lock|atomic|asm)\\b",
576
+ "name": "keyword.control.v"
577
+ },
578
+ {
579
+ "match": "(?<!@)\\b(fn|type|typeof|enum|struct|interface|map|assert|sizeof|__offsetof)\\b",
580
+ "name": "keyword.$1.v"
581
+ }
582
+ ]
583
+ },
584
+ "module-decl": {
585
+ "begin": "^\\s*(module)\\s+",
586
+ "beginCaptures": {
587
+ "1": {
588
+ "name": "keyword.module.v"
589
+ }
590
+ },
591
+ "end": "([\\w.]+)",
592
+ "endCaptures": {
593
+ "1": {
594
+ "name": "entity.name.module.v"
595
+ }
596
+ },
597
+ "name": "meta.module.v"
598
+ },
599
+ "numbers": {
600
+ "patterns": [
601
+ {
602
+ "match": "([0-9]+(_?))+(\\.)([0-9]+[eE][-+]?[0-9]+)",
603
+ "name": "constant.numeric.exponential.v"
604
+ },
605
+ {
606
+ "match": "([0-9]+(_?))+(\\.)([0-9]+)",
607
+ "name": "constant.numeric.float.v"
608
+ },
609
+ {
610
+ "match": "(?:0b)(?:(?:[0-1]+)(?:_?))+",
611
+ "name": "constant.numeric.binary.v"
612
+ },
613
+ {
614
+ "match": "(?:0o)(?:(?:[0-7]+)(?:_?))+",
615
+ "name": "constant.numeric.octal.v"
616
+ },
617
+ {
618
+ "match": "(?:0x)(?:(?:[0-9a-fA-F]+)(?:_?))+",
619
+ "name": "constant.numeric.hex.v"
620
+ },
621
+ {
622
+ "match": "(?:(?:[0-9]+)(?:[_]?))+",
623
+ "name": "constant.numeric.integer.v"
624
+ }
625
+ ]
626
+ },
627
+ "operators": {
628
+ "patterns": [
629
+ {
630
+ "match": "(\\+|\\-|\\*|\\/|\\%|\\+\\+|\\-\\-|\\>\\>|\\<\\<)",
631
+ "name": "keyword.operator.arithmetic.v"
632
+ },
633
+ {
634
+ "match": "(\\=\\=|\\!\\=|\\>|\\<|\\>\\=|\\<\\=)",
635
+ "name": "keyword.operator.relation.v"
636
+ },
637
+ {
638
+ "match": "(\\:\\=|\\=|\\+\\=|\\-\\=|\\*\\=|\\/\\=|\\%\\=|\\&\\=|\\|\\=|\\^\\=|\\~\\=|\\&\\&\\=|\\|\\|\\=|\\>\\>\\=|\\<\\<\\=)",
639
+ "name": "keyword.operator.assignment.v"
640
+ },
641
+ {
642
+ "match": "(\\&|\\||\\^|\\~|<(?!<)|>(?!>))",
643
+ "name": "keyword.operator.bitwise.v"
644
+ },
645
+ {
646
+ "match": "(\\&\\&|\\|\\||\\!)",
647
+ "name": "keyword.operator.logical.v"
648
+ },
649
+ {
650
+ "match": "\\?",
651
+ "name": "keyword.operator.optional.v"
652
+ }
653
+ ]
654
+ },
655
+ "punctuation": {
656
+ "patterns": [
657
+ {
658
+ "match": "\\.",
659
+ "name": "punctuation.delimiter.period.dot.v"
660
+ },
661
+ {
662
+ "match": ",",
663
+ "name": "punctuation.delimiter.comma.v"
664
+ },
665
+ {
666
+ "match": ":",
667
+ "name": "punctuation.separator.key-value.colon.v"
668
+ },
669
+ {
670
+ "match": ";",
671
+ "name": "punctuation.definition.other.semicolon.v"
672
+ },
673
+ {
674
+ "match": "\\?",
675
+ "name": "punctuation.definition.other.questionmark.v"
676
+ },
677
+ {
678
+ "match": "#",
679
+ "name": "punctuation.hash.v"
680
+ }
681
+ ]
682
+ },
683
+ "punctuations": {
684
+ "patterns": [
685
+ {
686
+ "match": "(?:\\.)",
687
+ "name": "punctuation.accessor.v"
688
+ },
689
+ {
690
+ "match": "(?:,)",
691
+ "name": "punctuation.separator.comma.v"
692
+ }
693
+ ]
694
+ },
695
+ "storage": {
696
+ "match": "\\b(const|mut|pub)\\b",
697
+ "name": "storage.modifier.v"
698
+ },
699
+ "string-escaped-char": {
700
+ "patterns": [
701
+ {
702
+ "match": "\\\\([0-7]{3}|[\\$abfnrtv\\\\'\"]|x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8})",
703
+ "name": "constant.character.escape.v"
704
+ },
705
+ {
706
+ "match": "\\\\[^0-7\\$xuUabfnrtv\\'\"]",
707
+ "name": "invalid.illegal.unknown-escape.v"
708
+ }
709
+ ]
710
+ },
711
+ "string-interpolation": {
712
+ "captures": {
713
+ "1": {
714
+ "patterns": [
715
+ {
716
+ "match": "\\$\\d[\\.\\w]+",
717
+ "name": "invalid.illegal.v"
718
+ },
719
+ {
720
+ "match": "\\$([\\.\\w]+|\\{.*?\\})",
721
+ "name": "variable.other.interpolated.v"
722
+ }
723
+ ]
724
+ }
725
+ },
726
+ "match": "(\\$([\\w.]+|\\{.*?\\}))",
727
+ "name": "meta.string.interpolation.v"
728
+ },
729
+ "string-placeholder": {
730
+ "match": "%(\\[\\d+\\])?([\\+#\\-0\\x20]{,2}((\\d+|\\*)?(\\.?(\\d+|\\*|(\\[\\d+\\])\\*?)?(\\[\\d+\\])?)?))?[vT%tbcdoqxXUbeEfFgGsp]",
731
+ "name": "constant.other.placeholder.v"
732
+ },
733
+ "strings": {
734
+ "patterns": [
735
+ {
736
+ "begin": "`",
737
+ "end": "`",
738
+ "name": "string.quoted.rune.v",
739
+ "patterns": [
740
+ {
741
+ "include": "#string-escaped-char"
742
+ },
743
+ {
744
+ "include": "#string-interpolation"
745
+ },
746
+ {
747
+ "include": "#string-placeholder"
748
+ }
749
+ ]
750
+ },
751
+ {
752
+ "begin": "(r)'",
753
+ "beginCaptures": {
754
+ "1": {
755
+ "name": "storage.type.string.v"
756
+ }
757
+ },
758
+ "end": "'",
759
+ "name": "string.quoted.raw.v",
760
+ "patterns": [
761
+ {
762
+ "include": "#string-interpolation"
763
+ },
764
+ {
765
+ "include": "#string-placeholder"
766
+ }
767
+ ]
768
+ },
769
+ {
770
+ "begin": "(r)\"",
771
+ "beginCaptures": {
772
+ "1": {
773
+ "name": "storage.type.string.v"
774
+ }
775
+ },
776
+ "end": "\"",
777
+ "name": "string.quoted.raw.v",
778
+ "patterns": [
779
+ {
780
+ "include": "#string-interpolation"
781
+ },
782
+ {
783
+ "include": "#string-placeholder"
784
+ }
785
+ ]
786
+ },
787
+ {
788
+ "begin": "(c?)'",
789
+ "beginCaptures": {
790
+ "1": {
791
+ "name": "storage.type.string.v"
792
+ }
793
+ },
794
+ "end": "'",
795
+ "name": "string.quoted.v",
796
+ "patterns": [
797
+ {
798
+ "include": "#string-escaped-char"
799
+ },
800
+ {
801
+ "include": "#string-interpolation"
802
+ },
803
+ {
804
+ "include": "#string-placeholder"
805
+ }
806
+ ]
807
+ },
808
+ {
809
+ "begin": "(c?)\"",
810
+ "beginCaptures": {
811
+ "1": {
812
+ "name": "storage.type.string.v"
813
+ }
814
+ },
815
+ "end": "\"",
816
+ "name": "string.quoted.v",
817
+ "patterns": [
818
+ {
819
+ "include": "#string-escaped-char"
820
+ },
821
+ {
822
+ "include": "#string-interpolation"
823
+ },
824
+ {
825
+ "include": "#string-placeholder"
826
+ }
827
+ ]
828
+ }
829
+ ]
830
+ },
831
+ "struct": {
832
+ "patterns": [
833
+ {
834
+ "begin": "^\\s*(?:(mut|pub(?:\\s+mut)?|__global)\\s+)?(struct|union)\\s+([\\w.]+)\\s*|({)",
835
+ "beginCaptures": {
836
+ "1": {
837
+ "name": "storage.modifier.$1.v"
838
+ },
839
+ "2": {
840
+ "name": "storage.type.struct.v"
841
+ },
842
+ "3": {
843
+ "name": "entity.name.type.v"
844
+ },
845
+ "4": {
846
+ "name": "punctuation.definition.bracket.curly.begin.v"
847
+ }
848
+ },
849
+ "end": "\\s*|(})",
850
+ "endCaptures": {
851
+ "1": {
852
+ "name": "punctuation.definition.bracket.curly.end.v"
853
+ }
854
+ },
855
+ "name": "meta.definition.struct.v",
856
+ "patterns": [
857
+ {
858
+ "include": "#struct-access-modifier"
859
+ },
860
+ {
861
+ "captures": {
862
+ "1": {
863
+ "name": "variable.other.property.v"
864
+ },
865
+ "2": {
866
+ "patterns": [
867
+ {
868
+ "include": "#numbers"
869
+ },
870
+ {
871
+ "include": "#brackets"
872
+ },
873
+ {
874
+ "include": "#types"
875
+ },
876
+ {
877
+ "match": "\\w+",
878
+ "name": "storage.type.other.v"
879
+ }
880
+ ]
881
+ },
882
+ "3": {
883
+ "name": "keyword.operator.assignment.v"
884
+ },
885
+ "4": {
886
+ "patterns": [
887
+ {
888
+ "include": "$self"
889
+ }
890
+ ]
891
+ }
892
+ },
893
+ "match": "\\b(\\w+)\\s+([\\w\\[\\]\\*&.]+)(?:\\s*(=)\\s*((?:.(?=$|//|/\\*))*+))?"
894
+ },
895
+ {
896
+ "include": "#types"
897
+ },
898
+ {
899
+ "include": "$self"
900
+ }
901
+ ]
902
+ },
903
+ {
904
+ "captures": {
905
+ "1": {
906
+ "name": "storage.modifier.$1.v"
907
+ },
908
+ "2": {
909
+ "name": "storage.type.struct.v"
910
+ },
911
+ "3": {
912
+ "name": "entity.name.struct.v"
913
+ }
914
+ },
915
+ "match": "^\\s*(?:(mut|pub(?:\\s+mut)?|__global))\\s+?(struct)\\s+(?:\\s+([\\w.]+))?",
916
+ "name": "meta.definition.struct.v"
917
+ }
918
+ ]
919
+ },
920
+ "struct-access-modifier": {
921
+ "captures": {
922
+ "1": {
923
+ "name": "storage.modifier.$1.v"
924
+ },
925
+ "2": {
926
+ "name": "punctuation.separator.struct.key-value.v"
927
+ }
928
+ },
929
+ "match": "(?<=\\s|^)(mut|pub(?:\\s+mut)?|__global)(:|\\b)"
930
+ },
931
+ "type": {
932
+ "captures": {
933
+ "1": {
934
+ "name": "storage.modifier.$1.v"
935
+ },
936
+ "2": {
937
+ "name": "storage.type.type.v"
938
+ },
939
+ "3": {
940
+ "patterns": [
941
+ {
942
+ "include": "#illegal-name"
943
+ },
944
+ {
945
+ "include": "#types"
946
+ },
947
+ {
948
+ "match": "\\w+",
949
+ "name": "entity.name.type.v"
950
+ }
951
+ ]
952
+ },
953
+ "4": {
954
+ "patterns": [
955
+ {
956
+ "include": "#illegal-name"
957
+ },
958
+ {
959
+ "include": "#types"
960
+ },
961
+ {
962
+ "match": "\\w+",
963
+ "name": "entity.name.type.v"
964
+ }
965
+ ]
966
+ }
967
+ },
968
+ "match": "^\\s*(?:(pub)?\\s+)?(type)\\s+(\\w*)\\s+(?:\\w+\\.+)?(\\w*)",
969
+ "name": "meta.definition.type.v"
970
+ },
971
+ "types": {
972
+ "patterns": [
973
+ {
974
+ "match": "(?<!\\.)\\b(i(8|16|nt|64|128)|u(8|16|32|64|128)|f(32|64))\\b",
975
+ "name": "storage.type.numeric.v"
976
+ },
977
+ {
978
+ "match": "(?<!\\.)\\b(bool|byte|byteptr|charptr|voidptr|string|ustring|rune)\\b",
979
+ "name": "storage.type.$1.v"
980
+ }
981
+ ]
982
+ },
983
+ "variable-assign": {
984
+ "captures": {
985
+ "0": {
986
+ "patterns": [
987
+ {
988
+ "match": "[a-zA-Z_]\\w*",
989
+ "name": "variable.other.assignment.v"
990
+ },
991
+ {
992
+ "include": "#punctuation"
993
+ }
994
+ ]
995
+ }
996
+ },
997
+ "match": "[a-zA-Z_]\\w*(?:,\\s*[a-zA-Z_]\\w*)*(?=\\s*(?:=|:=))"
998
+ }
999
+ },
1000
+ "scopeName": "source.v"
1001
+ }