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,1885 @@
1
+ {
2
+ "displayName": "Java",
3
+ "name": "java",
4
+ "patterns": [
5
+ {
6
+ "begin": "\\b(package)\\b\\s*",
7
+ "beginCaptures": {
8
+ "1": {
9
+ "name": "keyword.other.package.java"
10
+ }
11
+ },
12
+ "contentName": "storage.modifier.package.java",
13
+ "end": "\\s*(;)",
14
+ "endCaptures": {
15
+ "1": {
16
+ "name": "punctuation.terminator.java"
17
+ }
18
+ },
19
+ "name": "meta.package.java",
20
+ "patterns": [
21
+ {
22
+ "include": "#comments"
23
+ },
24
+ {
25
+ "match": "(?<=\\.)\\s*\\.|\\.(?=\\s*;)",
26
+ "name": "invalid.illegal.character_not_allowed_here.java"
27
+ },
28
+ {
29
+ "match": "(?<!_)_(?=\\s*(\\.|;))|\\b\\d+|-+",
30
+ "name": "invalid.illegal.character_not_allowed_here.java"
31
+ },
32
+ {
33
+ "match": "[A-Z]+",
34
+ "name": "invalid.deprecated.package_name_not_lowercase.java"
35
+ },
36
+ {
37
+ "match": "(?x)\\b(?<!\\$)\n(abstract|assert|boolean|break|byte|case|catch|char|class|\nconst|continue|default|do|double|else|enum|extends|final|\nfinally|float|for|goto|if|implements|import|instanceof|int|\ninterface|long|native|new|non-sealed|package|permits|private|protected|public|\nreturn|sealed|short|static|strictfp|super|switch|syncronized|this|\nthrow|throws|transient|try|void|volatile|while|yield|\ntrue|false|null)\\b",
38
+ "name": "invalid.illegal.character_not_allowed_here.java"
39
+ },
40
+ {
41
+ "match": "\\.",
42
+ "name": "punctuation.separator.java"
43
+ }
44
+ ]
45
+ },
46
+ {
47
+ "begin": "\\b(import)\\b\\s*\\b(static)?\\b\\s",
48
+ "beginCaptures": {
49
+ "1": {
50
+ "name": "keyword.other.import.java"
51
+ },
52
+ "2": {
53
+ "name": "storage.modifier.java"
54
+ }
55
+ },
56
+ "contentName": "storage.modifier.import.java",
57
+ "end": "\\s*(;)",
58
+ "endCaptures": {
59
+ "1": {
60
+ "name": "punctuation.terminator.java"
61
+ }
62
+ },
63
+ "name": "meta.import.java",
64
+ "patterns": [
65
+ {
66
+ "include": "#comments"
67
+ },
68
+ {
69
+ "match": "(?<=\\.)\\s*\\.|\\.(?=\\s*;)",
70
+ "name": "invalid.illegal.character_not_allowed_here.java"
71
+ },
72
+ {
73
+ "match": "(?<!\\.)\\s*\\*",
74
+ "name": "invalid.illegal.character_not_allowed_here.java"
75
+ },
76
+ {
77
+ "match": "(?<!_)_(?=\\s*(\\.|;))|\\b\\d+|-+",
78
+ "name": "invalid.illegal.character_not_allowed_here.java"
79
+ },
80
+ {
81
+ "match": "(?x)\\b(?<!\\$)\n(abstract|assert|boolean|break|byte|case|catch|char|class|\nconst|continue|default|do|double|else|enum|extends|final|\nfinally|float|for|goto|if|implements|import|instanceof|int|\ninterface|long|native|new|non-sealed|package|permits|private|protected|public|\nreturn|sealed|short|static|strictfp|super|switch|syncronized|this|\nthrow|throws|transient|try|void|volatile|while|yield|\ntrue|false|null)\\b",
82
+ "name": "invalid.illegal.character_not_allowed_here.java"
83
+ },
84
+ {
85
+ "match": "\\.",
86
+ "name": "punctuation.separator.java"
87
+ },
88
+ {
89
+ "match": "\\*",
90
+ "name": "variable.language.wildcard.java"
91
+ }
92
+ ]
93
+ },
94
+ {
95
+ "include": "#comments-javadoc"
96
+ },
97
+ {
98
+ "include": "#code"
99
+ },
100
+ {
101
+ "include": "#module"
102
+ }
103
+ ],
104
+ "repository": {
105
+ "all-types": {
106
+ "patterns": [
107
+ {
108
+ "include": "#primitive-arrays"
109
+ },
110
+ {
111
+ "include": "#primitive-types"
112
+ },
113
+ {
114
+ "include": "#object-types"
115
+ }
116
+ ]
117
+ },
118
+ "annotations": {
119
+ "patterns": [
120
+ {
121
+ "begin": "((@)\\s*([^\\s(]+))(\\()",
122
+ "beginCaptures": {
123
+ "2": {
124
+ "name": "punctuation.definition.annotation.java"
125
+ },
126
+ "3": {
127
+ "name": "storage.type.annotation.java"
128
+ },
129
+ "4": {
130
+ "name": "punctuation.definition.annotation-arguments.begin.bracket.round.java"
131
+ }
132
+ },
133
+ "end": "\\)",
134
+ "endCaptures": {
135
+ "0": {
136
+ "name": "punctuation.definition.annotation-arguments.end.bracket.round.java"
137
+ }
138
+ },
139
+ "name": "meta.declaration.annotation.java",
140
+ "patterns": [
141
+ {
142
+ "captures": {
143
+ "1": {
144
+ "name": "constant.other.key.java"
145
+ },
146
+ "2": {
147
+ "name": "keyword.operator.assignment.java"
148
+ }
149
+ },
150
+ "match": "(\\w*)\\s*(=)"
151
+ },
152
+ {
153
+ "include": "#code"
154
+ }
155
+ ]
156
+ },
157
+ {
158
+ "captures": {
159
+ "1": {
160
+ "name": "punctuation.definition.annotation.java"
161
+ },
162
+ "2": {
163
+ "name": "storage.modifier.java"
164
+ },
165
+ "3": {
166
+ "name": "storage.type.annotation.java"
167
+ },
168
+ "5": {
169
+ "name": "punctuation.definition.annotation.java"
170
+ },
171
+ "6": {
172
+ "name": "storage.type.annotation.java"
173
+ }
174
+ },
175
+ "match": "(@)(interface)\\s+(\\w*)|((@)\\s*(\\w+))",
176
+ "name": "meta.declaration.annotation.java"
177
+ }
178
+ ]
179
+ },
180
+ "anonymous-block-and-instance-initializer": {
181
+ "begin": "{",
182
+ "beginCaptures": {
183
+ "0": {
184
+ "name": "punctuation.section.block.begin.bracket.curly.java"
185
+ }
186
+ },
187
+ "end": "}",
188
+ "endCaptures": {
189
+ "0": {
190
+ "name": "punctuation.section.block.end.bracket.curly.java"
191
+ }
192
+ },
193
+ "patterns": [
194
+ {
195
+ "include": "#code"
196
+ }
197
+ ]
198
+ },
199
+ "anonymous-classes-and-new": {
200
+ "begin": "\\bnew\\b",
201
+ "beginCaptures": {
202
+ "0": {
203
+ "name": "keyword.control.new.java"
204
+ }
205
+ },
206
+ "end": "(?=;|\\)|\\]|\\.|,|\\?|:|}|\\+|\\-|\\*|\\/(?!\\/|\\*)|%|!|&|\\||\\^|=)",
207
+ "patterns": [
208
+ {
209
+ "include": "#comments"
210
+ },
211
+ {
212
+ "include": "#function-call"
213
+ },
214
+ {
215
+ "include": "#all-types"
216
+ },
217
+ {
218
+ "begin": "(?<=\\))",
219
+ "end": "(?=;|\\)|\\]|\\.|,|\\?|:|}|\\+|\\-|\\*|\\/(?!\\/|\\*)|%|!|&|\\||\\^|=)",
220
+ "patterns": [
221
+ {
222
+ "include": "#comments"
223
+ },
224
+ {
225
+ "begin": "{",
226
+ "beginCaptures": {
227
+ "0": {
228
+ "name": "punctuation.section.inner-class.begin.bracket.curly.java"
229
+ }
230
+ },
231
+ "end": "}",
232
+ "endCaptures": {
233
+ "0": {
234
+ "name": "punctuation.section.inner-class.end.bracket.curly.java"
235
+ }
236
+ },
237
+ "name": "meta.inner-class.java",
238
+ "patterns": [
239
+ {
240
+ "include": "#class-body"
241
+ }
242
+ ]
243
+ }
244
+ ]
245
+ },
246
+ {
247
+ "begin": "(?<=\\])",
248
+ "end": "(?=;|\\)|\\]|\\.|,|\\?|:|}|\\+|\\-|\\*|\\/(?!\\/|\\*)|%|!|&|\\||\\^|=)",
249
+ "patterns": [
250
+ {
251
+ "include": "#comments"
252
+ },
253
+ {
254
+ "begin": "{",
255
+ "beginCaptures": {
256
+ "0": {
257
+ "name": "punctuation.section.array-initializer.begin.bracket.curly.java"
258
+ }
259
+ },
260
+ "end": "}",
261
+ "endCaptures": {
262
+ "0": {
263
+ "name": "punctuation.section.array-initializer.end.bracket.curly.java"
264
+ }
265
+ },
266
+ "name": "meta.array-initializer.java",
267
+ "patterns": [
268
+ {
269
+ "include": "#code"
270
+ }
271
+ ]
272
+ }
273
+ ]
274
+ },
275
+ {
276
+ "include": "#parens"
277
+ }
278
+ ]
279
+ },
280
+ "assertions": {
281
+ "patterns": [
282
+ {
283
+ "begin": "\\b(assert)\\s",
284
+ "beginCaptures": {
285
+ "1": {
286
+ "name": "keyword.control.assert.java"
287
+ }
288
+ },
289
+ "end": "$",
290
+ "name": "meta.declaration.assertion.java",
291
+ "patterns": [
292
+ {
293
+ "match": ":",
294
+ "name": "keyword.operator.assert.expression-separator.java"
295
+ },
296
+ {
297
+ "include": "#code"
298
+ }
299
+ ]
300
+ }
301
+ ]
302
+ },
303
+ "class": {
304
+ "begin": "(?=\\w?[\\w\\s-]*\\b(?:class|(?<!@)interface|enum)\\s+[\\w$]+)",
305
+ "end": "}",
306
+ "endCaptures": {
307
+ "0": {
308
+ "name": "punctuation.section.class.end.bracket.curly.java"
309
+ }
310
+ },
311
+ "name": "meta.class.java",
312
+ "patterns": [
313
+ {
314
+ "include": "#storage-modifiers"
315
+ },
316
+ {
317
+ "include": "#generics"
318
+ },
319
+ {
320
+ "include": "#comments"
321
+ },
322
+ {
323
+ "captures": {
324
+ "1": {
325
+ "name": "storage.modifier.java"
326
+ },
327
+ "2": {
328
+ "name": "entity.name.type.class.java"
329
+ }
330
+ },
331
+ "match": "(class|(?<!@)interface|enum)\\s+([\\w$]+)",
332
+ "name": "meta.class.identifier.java"
333
+ },
334
+ {
335
+ "begin": "extends",
336
+ "beginCaptures": {
337
+ "0": {
338
+ "name": "storage.modifier.extends.java"
339
+ }
340
+ },
341
+ "end": "(?={|implements|permits)",
342
+ "name": "meta.definition.class.inherited.classes.java",
343
+ "patterns": [
344
+ {
345
+ "include": "#object-types-inherited"
346
+ },
347
+ {
348
+ "include": "#comments"
349
+ }
350
+ ]
351
+ },
352
+ {
353
+ "begin": "(implements)\\s",
354
+ "beginCaptures": {
355
+ "1": {
356
+ "name": "storage.modifier.implements.java"
357
+ }
358
+ },
359
+ "end": "(?=\\s*extends|permits|\\{)",
360
+ "name": "meta.definition.class.implemented.interfaces.java",
361
+ "patterns": [
362
+ {
363
+ "include": "#object-types-inherited"
364
+ },
365
+ {
366
+ "include": "#comments"
367
+ }
368
+ ]
369
+ },
370
+ {
371
+ "begin": "(permits)\\s",
372
+ "beginCaptures": {
373
+ "1": {
374
+ "name": "storage.modifier.permits.java"
375
+ }
376
+ },
377
+ "end": "(?=\\s*extends|implements|\\{)",
378
+ "name": "meta.definition.class.permits.classes.java",
379
+ "patterns": [
380
+ {
381
+ "include": "#object-types-inherited"
382
+ },
383
+ {
384
+ "include": "#comments"
385
+ }
386
+ ]
387
+ },
388
+ {
389
+ "begin": "{",
390
+ "beginCaptures": {
391
+ "0": {
392
+ "name": "punctuation.section.class.begin.bracket.curly.java"
393
+ }
394
+ },
395
+ "contentName": "meta.class.body.java",
396
+ "end": "(?=})",
397
+ "patterns": [
398
+ {
399
+ "include": "#class-body"
400
+ }
401
+ ]
402
+ }
403
+ ]
404
+ },
405
+ "class-body": {
406
+ "patterns": [
407
+ {
408
+ "include": "#comments-javadoc"
409
+ },
410
+ {
411
+ "include": "#comments"
412
+ },
413
+ {
414
+ "include": "#enums"
415
+ },
416
+ {
417
+ "include": "#class"
418
+ },
419
+ {
420
+ "include": "#generics"
421
+ },
422
+ {
423
+ "include": "#static-initializer"
424
+ },
425
+ {
426
+ "include": "#class-fields-and-methods"
427
+ },
428
+ {
429
+ "include": "#annotations"
430
+ },
431
+ {
432
+ "include": "#storage-modifiers"
433
+ },
434
+ {
435
+ "include": "#member-variables"
436
+ },
437
+ {
438
+ "include": "#code"
439
+ }
440
+ ]
441
+ },
442
+ "class-fields-and-methods": {
443
+ "patterns": [
444
+ {
445
+ "begin": "(?=\\=)",
446
+ "end": "(?=;)",
447
+ "patterns": [
448
+ {
449
+ "include": "#code"
450
+ }
451
+ ]
452
+ },
453
+ {
454
+ "include": "#methods"
455
+ }
456
+ ]
457
+ },
458
+ "code": {
459
+ "patterns": [
460
+ {
461
+ "include": "#annotations"
462
+ },
463
+ {
464
+ "include": "#comments"
465
+ },
466
+ {
467
+ "include": "#enums"
468
+ },
469
+ {
470
+ "include": "#class"
471
+ },
472
+ {
473
+ "include": "#record"
474
+ },
475
+ {
476
+ "include": "#anonymous-block-and-instance-initializer"
477
+ },
478
+ {
479
+ "include": "#try-catch-finally"
480
+ },
481
+ {
482
+ "include": "#assertions"
483
+ },
484
+ {
485
+ "include": "#parens"
486
+ },
487
+ {
488
+ "include": "#constants-and-special-vars"
489
+ },
490
+ {
491
+ "include": "#numbers"
492
+ },
493
+ {
494
+ "include": "#anonymous-classes-and-new"
495
+ },
496
+ {
497
+ "include": "#lambda-expression"
498
+ },
499
+ {
500
+ "include": "#keywords"
501
+ },
502
+ {
503
+ "include": "#storage-modifiers"
504
+ },
505
+ {
506
+ "include": "#method-call"
507
+ },
508
+ {
509
+ "include": "#function-call"
510
+ },
511
+ {
512
+ "include": "#variables"
513
+ },
514
+ {
515
+ "include": "#variables-local"
516
+ },
517
+ {
518
+ "include": "#objects"
519
+ },
520
+ {
521
+ "include": "#properties"
522
+ },
523
+ {
524
+ "include": "#strings"
525
+ },
526
+ {
527
+ "include": "#all-types"
528
+ },
529
+ {
530
+ "match": ",",
531
+ "name": "punctuation.separator.delimiter.java"
532
+ },
533
+ {
534
+ "match": "\\.",
535
+ "name": "punctuation.separator.period.java"
536
+ },
537
+ {
538
+ "match": ";",
539
+ "name": "punctuation.terminator.java"
540
+ }
541
+ ]
542
+ },
543
+ "comments": {
544
+ "patterns": [
545
+ {
546
+ "captures": {
547
+ "0": {
548
+ "name": "punctuation.definition.comment.java"
549
+ }
550
+ },
551
+ "match": "/\\*\\*/",
552
+ "name": "comment.block.empty.java"
553
+ },
554
+ {
555
+ "include": "#comments-inline"
556
+ }
557
+ ]
558
+ },
559
+ "comments-inline": {
560
+ "patterns": [
561
+ {
562
+ "begin": "/\\*",
563
+ "captures": {
564
+ "0": {
565
+ "name": "punctuation.definition.comment.java"
566
+ }
567
+ },
568
+ "end": "\\*/",
569
+ "name": "comment.block.java"
570
+ },
571
+ {
572
+ "begin": "(^[ \\t]+)?(?=//)",
573
+ "beginCaptures": {
574
+ "1": {
575
+ "name": "punctuation.whitespace.comment.leading.java"
576
+ }
577
+ },
578
+ "end": "(?!\\G)",
579
+ "patterns": [
580
+ {
581
+ "begin": "//",
582
+ "beginCaptures": {
583
+ "0": {
584
+ "name": "punctuation.definition.comment.java"
585
+ }
586
+ },
587
+ "end": "\\n",
588
+ "name": "comment.line.double-slash.java"
589
+ }
590
+ ]
591
+ }
592
+ ]
593
+ },
594
+ "comments-javadoc": {
595
+ "patterns": [
596
+ {
597
+ "begin": "^\\s*(/\\*\\*)(?!/)",
598
+ "beginCaptures": {
599
+ "1": {
600
+ "name": "punctuation.definition.comment.java"
601
+ }
602
+ },
603
+ "end": "\\*/",
604
+ "endCaptures": {
605
+ "0": {
606
+ "name": "punctuation.definition.comment.java"
607
+ }
608
+ },
609
+ "name": "comment.block.javadoc.java",
610
+ "patterns": [
611
+ {
612
+ "match": "@(author|deprecated|return|see|serial|since|version)\\b",
613
+ "name": "keyword.other.documentation.javadoc.java"
614
+ },
615
+ {
616
+ "captures": {
617
+ "1": {
618
+ "name": "keyword.other.documentation.javadoc.java"
619
+ },
620
+ "2": {
621
+ "name": "variable.parameter.java"
622
+ }
623
+ },
624
+ "match": "(@param)\\s+(\\S+)"
625
+ },
626
+ {
627
+ "captures": {
628
+ "1": {
629
+ "name": "keyword.other.documentation.javadoc.java"
630
+ },
631
+ "2": {
632
+ "name": "entity.name.type.class.java"
633
+ }
634
+ },
635
+ "match": "(@(?:exception|throws))\\s+(\\S+)"
636
+ },
637
+ {
638
+ "captures": {
639
+ "1": {
640
+ "name": "keyword.other.documentation.javadoc.java"
641
+ },
642
+ "2": {
643
+ "name": "entity.name.type.class.java"
644
+ },
645
+ "3": {
646
+ "name": "variable.parameter.java"
647
+ }
648
+ },
649
+ "match": "{(@link)\\s+(\\S+)?#([\\w$]+\\s*\\([^\\(\\)]*\\)).*?}"
650
+ }
651
+ ]
652
+ }
653
+ ]
654
+ },
655
+ "constants-and-special-vars": {
656
+ "patterns": [
657
+ {
658
+ "match": "\\b(true|false|null)\\b",
659
+ "name": "constant.language.java"
660
+ },
661
+ {
662
+ "match": "\\bthis\\b",
663
+ "name": "variable.language.this.java"
664
+ },
665
+ {
666
+ "match": "\\bsuper\\b",
667
+ "name": "variable.language.java"
668
+ }
669
+ ]
670
+ },
671
+ "enums": {
672
+ "begin": "^\\s*([\\w\\s]*)(enum)\\s+(\\w+)",
673
+ "beginCaptures": {
674
+ "1": {
675
+ "patterns": [
676
+ {
677
+ "include": "#storage-modifiers"
678
+ }
679
+ ]
680
+ },
681
+ "2": {
682
+ "name": "storage.modifier.java"
683
+ },
684
+ "3": {
685
+ "name": "entity.name.type.enum.java"
686
+ }
687
+ },
688
+ "end": "}",
689
+ "endCaptures": {
690
+ "0": {
691
+ "name": "punctuation.section.enum.end.bracket.curly.java"
692
+ }
693
+ },
694
+ "name": "meta.enum.java",
695
+ "patterns": [
696
+ {
697
+ "begin": "\\b(extends)\\b",
698
+ "beginCaptures": {
699
+ "1": {
700
+ "name": "storage.modifier.extends.java"
701
+ }
702
+ },
703
+ "end": "(?={|\\bimplements\\b)",
704
+ "name": "meta.definition.class.inherited.classes.java",
705
+ "patterns": [
706
+ {
707
+ "include": "#object-types-inherited"
708
+ },
709
+ {
710
+ "include": "#comments"
711
+ }
712
+ ]
713
+ },
714
+ {
715
+ "begin": "\\b(implements)\\b",
716
+ "beginCaptures": {
717
+ "1": {
718
+ "name": "storage.modifier.implements.java"
719
+ }
720
+ },
721
+ "end": "(?={|\\bextends\\b)",
722
+ "name": "meta.definition.class.implemented.interfaces.java",
723
+ "patterns": [
724
+ {
725
+ "include": "#object-types-inherited"
726
+ },
727
+ {
728
+ "include": "#comments"
729
+ }
730
+ ]
731
+ },
732
+ {
733
+ "begin": "{",
734
+ "beginCaptures": {
735
+ "0": {
736
+ "name": "punctuation.section.enum.begin.bracket.curly.java"
737
+ }
738
+ },
739
+ "end": "(?=})",
740
+ "patterns": [
741
+ {
742
+ "begin": "(?<={)",
743
+ "end": "(?=;|})",
744
+ "patterns": [
745
+ {
746
+ "include": "#comments-javadoc"
747
+ },
748
+ {
749
+ "include": "#comments"
750
+ },
751
+ {
752
+ "begin": "\\b(\\w+)\\b",
753
+ "beginCaptures": {
754
+ "1": {
755
+ "name": "constant.other.enum.java"
756
+ }
757
+ },
758
+ "end": "(,)|(?=;|})",
759
+ "endCaptures": {
760
+ "1": {
761
+ "name": "punctuation.separator.delimiter.java"
762
+ }
763
+ },
764
+ "patterns": [
765
+ {
766
+ "include": "#comments-javadoc"
767
+ },
768
+ {
769
+ "include": "#comments"
770
+ },
771
+ {
772
+ "begin": "\\(",
773
+ "beginCaptures": {
774
+ "0": {
775
+ "name": "punctuation.bracket.round.java"
776
+ }
777
+ },
778
+ "end": "\\)",
779
+ "endCaptures": {
780
+ "0": {
781
+ "name": "punctuation.bracket.round.java"
782
+ }
783
+ },
784
+ "patterns": [
785
+ {
786
+ "include": "#code"
787
+ }
788
+ ]
789
+ },
790
+ {
791
+ "begin": "{",
792
+ "beginCaptures": {
793
+ "0": {
794
+ "name": "punctuation.bracket.curly.java"
795
+ }
796
+ },
797
+ "end": "}",
798
+ "endCaptures": {
799
+ "0": {
800
+ "name": "punctuation.bracket.curly.java"
801
+ }
802
+ },
803
+ "patterns": [
804
+ {
805
+ "include": "#class-body"
806
+ }
807
+ ]
808
+ }
809
+ ]
810
+ }
811
+ ]
812
+ },
813
+ {
814
+ "include": "#class-body"
815
+ }
816
+ ]
817
+ }
818
+ ]
819
+ },
820
+ "function-call": {
821
+ "begin": "([A-Za-z_$][\\w$]*)\\s*(\\()",
822
+ "beginCaptures": {
823
+ "1": {
824
+ "name": "entity.name.function.java"
825
+ },
826
+ "2": {
827
+ "name": "punctuation.definition.parameters.begin.bracket.round.java"
828
+ }
829
+ },
830
+ "end": "\\)",
831
+ "endCaptures": {
832
+ "0": {
833
+ "name": "punctuation.definition.parameters.end.bracket.round.java"
834
+ }
835
+ },
836
+ "name": "meta.function-call.java",
837
+ "patterns": [
838
+ {
839
+ "include": "#code"
840
+ }
841
+ ]
842
+ },
843
+ "generics": {
844
+ "begin": "<",
845
+ "beginCaptures": {
846
+ "0": {
847
+ "name": "punctuation.bracket.angle.java"
848
+ }
849
+ },
850
+ "end": ">",
851
+ "endCaptures": {
852
+ "0": {
853
+ "name": "punctuation.bracket.angle.java"
854
+ }
855
+ },
856
+ "patterns": [
857
+ {
858
+ "match": "\\b(extends|super)\\b",
859
+ "name": "storage.modifier.$1.java"
860
+ },
861
+ {
862
+ "captures": {
863
+ "1": {
864
+ "name": "storage.type.java"
865
+ }
866
+ },
867
+ "match": "(?<!\\.)([a-zA-Z$_][a-zA-Z0-9$_]*)(?=\\s*<)"
868
+ },
869
+ {
870
+ "include": "#primitive-arrays"
871
+ },
872
+ {
873
+ "match": "[a-zA-Z$_][a-zA-Z0-9$_]*",
874
+ "name": "storage.type.generic.java"
875
+ },
876
+ {
877
+ "match": "\\?",
878
+ "name": "storage.type.generic.wildcard.java"
879
+ },
880
+ {
881
+ "match": "&",
882
+ "name": "punctuation.separator.types.java"
883
+ },
884
+ {
885
+ "match": ",",
886
+ "name": "punctuation.separator.delimiter.java"
887
+ },
888
+ {
889
+ "match": "\\.",
890
+ "name": "punctuation.separator.period.java"
891
+ },
892
+ {
893
+ "include": "#parens"
894
+ },
895
+ {
896
+ "include": "#generics"
897
+ },
898
+ {
899
+ "include": "#comments"
900
+ }
901
+ ]
902
+ },
903
+ "keywords": {
904
+ "patterns": [
905
+ {
906
+ "match": "\\bthrow\\b",
907
+ "name": "keyword.control.throw.java"
908
+ },
909
+ {
910
+ "match": "\\?|:",
911
+ "name": "keyword.control.ternary.java"
912
+ },
913
+ {
914
+ "match": "\\b(return|yield|break|case|continue|default|do|while|for|switch|if|else)\\b",
915
+ "name": "keyword.control.java"
916
+ },
917
+ {
918
+ "match": "\\b(instanceof)\\b",
919
+ "name": "keyword.operator.instanceof.java"
920
+ },
921
+ {
922
+ "match": "(<<|>>>?|~|\\^)",
923
+ "name": "keyword.operator.bitwise.java"
924
+ },
925
+ {
926
+ "match": "((&|\\^|\\||<<|>>>?)=)",
927
+ "name": "keyword.operator.assignment.bitwise.java"
928
+ },
929
+ {
930
+ "match": "(===?|!=|<=|>=|<>|<|>)",
931
+ "name": "keyword.operator.comparison.java"
932
+ },
933
+ {
934
+ "match": "([+*/%-]=)",
935
+ "name": "keyword.operator.assignment.arithmetic.java"
936
+ },
937
+ {
938
+ "match": "(=)",
939
+ "name": "keyword.operator.assignment.java"
940
+ },
941
+ {
942
+ "match": "(\\-\\-|\\+\\+)",
943
+ "name": "keyword.operator.increment-decrement.java"
944
+ },
945
+ {
946
+ "match": "(\\-|\\+|\\*|\\/|%)",
947
+ "name": "keyword.operator.arithmetic.java"
948
+ },
949
+ {
950
+ "match": "(!|&&|\\|\\|)",
951
+ "name": "keyword.operator.logical.java"
952
+ },
953
+ {
954
+ "match": "(\\||&)",
955
+ "name": "keyword.operator.bitwise.java"
956
+ },
957
+ {
958
+ "match": "\\b(const|goto)\\b",
959
+ "name": "keyword.reserved.java"
960
+ }
961
+ ]
962
+ },
963
+ "lambda-expression": {
964
+ "patterns": [
965
+ {
966
+ "match": "->",
967
+ "name": "storage.type.function.arrow.java"
968
+ }
969
+ ]
970
+ },
971
+ "member-variables": {
972
+ "begin": "(?=private|protected|public|native|synchronized|abstract|threadsafe|transient|static|final)",
973
+ "end": "(?=\\=|;)",
974
+ "patterns": [
975
+ {
976
+ "include": "#storage-modifiers"
977
+ },
978
+ {
979
+ "include": "#variables"
980
+ },
981
+ {
982
+ "include": "#primitive-arrays"
983
+ },
984
+ {
985
+ "include": "#object-types"
986
+ }
987
+ ]
988
+ },
989
+ "method-call": {
990
+ "begin": "(\\.)\\s*([A-Za-z_$][\\w$]*)\\s*(\\()",
991
+ "beginCaptures": {
992
+ "1": {
993
+ "name": "punctuation.separator.period.java"
994
+ },
995
+ "2": {
996
+ "name": "entity.name.function.java"
997
+ },
998
+ "3": {
999
+ "name": "punctuation.definition.parameters.begin.bracket.round.java"
1000
+ }
1001
+ },
1002
+ "end": "\\)",
1003
+ "endCaptures": {
1004
+ "0": {
1005
+ "name": "punctuation.definition.parameters.end.bracket.round.java"
1006
+ }
1007
+ },
1008
+ "name": "meta.method-call.java",
1009
+ "patterns": [
1010
+ {
1011
+ "include": "#code"
1012
+ }
1013
+ ]
1014
+ },
1015
+ "methods": {
1016
+ "begin": "(?!new)(?=[\\w<].*\\s+)(?=([^=/]|/(?!/))+\\()",
1017
+ "end": "(})|(?=;)",
1018
+ "endCaptures": {
1019
+ "1": {
1020
+ "name": "punctuation.section.method.end.bracket.curly.java"
1021
+ }
1022
+ },
1023
+ "name": "meta.method.java",
1024
+ "patterns": [
1025
+ {
1026
+ "include": "#storage-modifiers"
1027
+ },
1028
+ {
1029
+ "begin": "(\\w+)\\s*(\\()",
1030
+ "beginCaptures": {
1031
+ "1": {
1032
+ "name": "entity.name.function.java"
1033
+ },
1034
+ "2": {
1035
+ "name": "punctuation.definition.parameters.begin.bracket.round.java"
1036
+ }
1037
+ },
1038
+ "end": "\\)",
1039
+ "endCaptures": {
1040
+ "0": {
1041
+ "name": "punctuation.definition.parameters.end.bracket.round.java"
1042
+ }
1043
+ },
1044
+ "name": "meta.method.identifier.java",
1045
+ "patterns": [
1046
+ {
1047
+ "include": "#parameters"
1048
+ },
1049
+ {
1050
+ "include": "#parens"
1051
+ },
1052
+ {
1053
+ "include": "#comments"
1054
+ }
1055
+ ]
1056
+ },
1057
+ {
1058
+ "include": "#generics"
1059
+ },
1060
+ {
1061
+ "begin": "(?=\\w.*\\s+\\w+\\s*\\()",
1062
+ "end": "(?=\\s+\\w+\\s*\\()",
1063
+ "name": "meta.method.return-type.java",
1064
+ "patterns": [
1065
+ {
1066
+ "include": "#all-types"
1067
+ },
1068
+ {
1069
+ "include": "#parens"
1070
+ },
1071
+ {
1072
+ "include": "#comments"
1073
+ }
1074
+ ]
1075
+ },
1076
+ {
1077
+ "include": "#throws"
1078
+ },
1079
+ {
1080
+ "begin": "{",
1081
+ "beginCaptures": {
1082
+ "0": {
1083
+ "name": "punctuation.section.method.begin.bracket.curly.java"
1084
+ }
1085
+ },
1086
+ "contentName": "meta.method.body.java",
1087
+ "end": "(?=})",
1088
+ "patterns": [
1089
+ {
1090
+ "include": "#code"
1091
+ }
1092
+ ]
1093
+ },
1094
+ {
1095
+ "include": "#comments"
1096
+ }
1097
+ ]
1098
+ },
1099
+ "module": {
1100
+ "begin": "((open)\\s)?(module)\\s+(\\w+)",
1101
+ "beginCaptures": {
1102
+ "1": {
1103
+ "name": "storage.modifier.java"
1104
+ },
1105
+ "3": {
1106
+ "name": "storage.modifier.java"
1107
+ },
1108
+ "4": {
1109
+ "name": "entity.name.type.module.java"
1110
+ }
1111
+ },
1112
+ "end": "}",
1113
+ "endCaptures": {
1114
+ "0": {
1115
+ "name": "punctuation.section.module.end.bracket.curly.java"
1116
+ }
1117
+ },
1118
+ "name": "meta.module.java",
1119
+ "patterns": [
1120
+ {
1121
+ "begin": "{",
1122
+ "beginCaptures": {
1123
+ "0": {
1124
+ "name": "punctuation.section.module.begin.bracket.curly.java"
1125
+ }
1126
+ },
1127
+ "contentName": "meta.module.body.java",
1128
+ "end": "(?=})",
1129
+ "patterns": [
1130
+ {
1131
+ "include": "#comments"
1132
+ },
1133
+ {
1134
+ "include": "#comments-javadoc"
1135
+ },
1136
+ {
1137
+ "match": "\\b(requires|transitive|exports|opens|to|uses|provides|with)\\b",
1138
+ "name": "keyword.module.java"
1139
+ }
1140
+ ]
1141
+ }
1142
+ ]
1143
+ },
1144
+ "numbers": {
1145
+ "patterns": [
1146
+ {
1147
+ "match": "(?x)\n\\b(?<!\\$)\n0(x|X)\n(\n (?<!\\.)[0-9a-fA-F]([0-9a-fA-F_]*[0-9a-fA-F])?[Ll]?(?!\\.)\n |\n (\n [0-9a-fA-F]([0-9a-fA-F_]*[0-9a-fA-F])?\\.?\n |\n ([0-9a-fA-F]([0-9a-fA-F_]*[0-9a-fA-F])?)?\\.[0-9a-fA-F]([0-9a-fA-F_]*[0-9a-fA-F])?\n )\n [Pp][+-]?[0-9]([0-9_]*[0-9])?[FfDd]?\n)\n\\b(?!\\$)",
1148
+ "name": "constant.numeric.hex.java"
1149
+ },
1150
+ {
1151
+ "match": "\\b(?<!\\$)0(b|B)[01]([01_]*[01])?[Ll]?\\b(?!\\$)",
1152
+ "name": "constant.numeric.binary.java"
1153
+ },
1154
+ {
1155
+ "match": "\\b(?<!\\$)0[0-7]([0-7_]*[0-7])?[Ll]?\\b(?!\\$)",
1156
+ "name": "constant.numeric.octal.java"
1157
+ },
1158
+ {
1159
+ "match": "(?x)\n(?<!\\$)\n(\n \\b[0-9]([0-9_]*[0-9])?\\.\\B(?!\\.)\n |\n \\b[0-9]([0-9_]*[0-9])?\\.([Ee][+-]?[0-9]([0-9_]*[0-9])?)[FfDd]?\\b\n |\n \\b[0-9]([0-9_]*[0-9])?\\.([Ee][+-]?[0-9]([0-9_]*[0-9])?)?[FfDd]\\b\n |\n \\b[0-9]([0-9_]*[0-9])?\\.([0-9]([0-9_]*[0-9])?)([Ee][+-]?[0-9]([0-9_]*[0-9])?)?[FfDd]?\\b\n |\n (?<!\\.)\\B\\.[0-9]([0-9_]*[0-9])?([Ee][+-]?[0-9]([0-9_]*[0-9])?)?[FfDd]?\\b\n |\n \\b[0-9]([0-9_]*[0-9])?([Ee][+-]?[0-9]([0-9_]*[0-9])?)[FfDd]?\\b\n |\n \\b[0-9]([0-9_]*[0-9])?([Ee][+-]?[0-9]([0-9_]*[0-9])?)?[FfDd]\\b\n |\n \\b(0|[1-9]([0-9_]*[0-9])?)(?!\\.)[Ll]?\\b\n)\n(?!\\$)",
1160
+ "name": "constant.numeric.decimal.java"
1161
+ }
1162
+ ]
1163
+ },
1164
+ "object-types": {
1165
+ "patterns": [
1166
+ {
1167
+ "include": "#generics"
1168
+ },
1169
+ {
1170
+ "begin": "\\b((?:[A-Za-z_]\\w*\\s*\\.\\s*)*)([A-Z_]\\w*)\\s*(?=\\[)",
1171
+ "beginCaptures": {
1172
+ "1": {
1173
+ "patterns": [
1174
+ {
1175
+ "match": "[A-Za-z_]\\w*",
1176
+ "name": "storage.type.java"
1177
+ },
1178
+ {
1179
+ "match": "\\.",
1180
+ "name": "punctuation.separator.period.java"
1181
+ }
1182
+ ]
1183
+ },
1184
+ "2": {
1185
+ "name": "storage.type.object.array.java"
1186
+ }
1187
+ },
1188
+ "end": "(?!\\s*\\[)",
1189
+ "patterns": [
1190
+ {
1191
+ "include": "#comments"
1192
+ },
1193
+ {
1194
+ "include": "#parens"
1195
+ }
1196
+ ]
1197
+ },
1198
+ {
1199
+ "captures": {
1200
+ "1": {
1201
+ "patterns": [
1202
+ {
1203
+ "match": "[A-Za-z_]\\w*",
1204
+ "name": "storage.type.java"
1205
+ },
1206
+ {
1207
+ "match": "\\.",
1208
+ "name": "punctuation.separator.period.java"
1209
+ }
1210
+ ]
1211
+ }
1212
+ },
1213
+ "match": "\\b((?:[A-Za-z_]\\w*\\s*\\.\\s*)*[A-Z_]\\w*)\\s*(?=<)"
1214
+ },
1215
+ {
1216
+ "captures": {
1217
+ "1": {
1218
+ "patterns": [
1219
+ {
1220
+ "match": "[A-Za-z_]\\w*",
1221
+ "name": "storage.type.java"
1222
+ },
1223
+ {
1224
+ "match": "\\.",
1225
+ "name": "punctuation.separator.period.java"
1226
+ }
1227
+ ]
1228
+ }
1229
+ },
1230
+ "match": "\\b((?:[A-Za-z_]\\w*\\s*\\.\\s*)*[A-Z_]\\w*)\\b((?=\\s*[A-Za-z$_\\n])|(?=\\s*\\.\\.\\.))"
1231
+ }
1232
+ ]
1233
+ },
1234
+ "object-types-inherited": {
1235
+ "patterns": [
1236
+ {
1237
+ "include": "#generics"
1238
+ },
1239
+ {
1240
+ "captures": {
1241
+ "1": {
1242
+ "name": "punctuation.separator.period.java"
1243
+ }
1244
+ },
1245
+ "match": "\\b(?:[A-Z]\\w*\\s*(\\.)\\s*)*[A-Z]\\w*\\b",
1246
+ "name": "entity.other.inherited-class.java"
1247
+ },
1248
+ {
1249
+ "match": ",",
1250
+ "name": "punctuation.separator.delimiter.java"
1251
+ }
1252
+ ]
1253
+ },
1254
+ "objects": {
1255
+ "match": "(?<![\\w$])[a-zA-Z_$][\\w$]*(?=\\s*\\.\\s*[\\w$]+)",
1256
+ "name": "variable.other.object.java"
1257
+ },
1258
+ "parameters": {
1259
+ "patterns": [
1260
+ {
1261
+ "match": "\\bfinal\\b",
1262
+ "name": "storage.modifier.java"
1263
+ },
1264
+ {
1265
+ "include": "#annotations"
1266
+ },
1267
+ {
1268
+ "include": "#all-types"
1269
+ },
1270
+ {
1271
+ "include": "#strings"
1272
+ },
1273
+ {
1274
+ "match": "\\w+",
1275
+ "name": "variable.parameter.java"
1276
+ },
1277
+ {
1278
+ "match": ",",
1279
+ "name": "punctuation.separator.delimiter.java"
1280
+ },
1281
+ {
1282
+ "match": "\\.\\.\\.",
1283
+ "name": "punctuation.definition.parameters.varargs.java"
1284
+ }
1285
+ ]
1286
+ },
1287
+ "parens": {
1288
+ "patterns": [
1289
+ {
1290
+ "begin": "\\(",
1291
+ "beginCaptures": {
1292
+ "0": {
1293
+ "name": "punctuation.bracket.round.java"
1294
+ }
1295
+ },
1296
+ "end": "\\)",
1297
+ "endCaptures": {
1298
+ "0": {
1299
+ "name": "punctuation.bracket.round.java"
1300
+ }
1301
+ },
1302
+ "patterns": [
1303
+ {
1304
+ "include": "#code"
1305
+ }
1306
+ ]
1307
+ },
1308
+ {
1309
+ "begin": "\\[",
1310
+ "beginCaptures": {
1311
+ "0": {
1312
+ "name": "punctuation.bracket.square.java"
1313
+ }
1314
+ },
1315
+ "end": "\\]",
1316
+ "endCaptures": {
1317
+ "0": {
1318
+ "name": "punctuation.bracket.square.java"
1319
+ }
1320
+ },
1321
+ "patterns": [
1322
+ {
1323
+ "include": "#code"
1324
+ }
1325
+ ]
1326
+ },
1327
+ {
1328
+ "begin": "{",
1329
+ "beginCaptures": {
1330
+ "0": {
1331
+ "name": "punctuation.bracket.curly.java"
1332
+ }
1333
+ },
1334
+ "end": "}",
1335
+ "endCaptures": {
1336
+ "0": {
1337
+ "name": "punctuation.bracket.curly.java"
1338
+ }
1339
+ },
1340
+ "patterns": [
1341
+ {
1342
+ "include": "#code"
1343
+ }
1344
+ ]
1345
+ }
1346
+ ]
1347
+ },
1348
+ "primitive-arrays": {
1349
+ "patterns": [
1350
+ {
1351
+ "begin": "\\b(void|boolean|byte|char|short|int|float|long|double)\\b\\s*(?=\\[)",
1352
+ "beginCaptures": {
1353
+ "1": {
1354
+ "name": "storage.type.primitive.array.java"
1355
+ }
1356
+ },
1357
+ "end": "(?!\\s*\\[)",
1358
+ "patterns": [
1359
+ {
1360
+ "include": "#comments"
1361
+ },
1362
+ {
1363
+ "include": "#parens"
1364
+ }
1365
+ ]
1366
+ }
1367
+ ]
1368
+ },
1369
+ "primitive-types": {
1370
+ "match": "\\b(void|boolean|byte|char|short|int|float|long|double)\\b",
1371
+ "name": "storage.type.primitive.java"
1372
+ },
1373
+ "properties": {
1374
+ "patterns": [
1375
+ {
1376
+ "captures": {
1377
+ "1": {
1378
+ "name": "punctuation.separator.period.java"
1379
+ },
1380
+ "2": {
1381
+ "name": "keyword.control.new.java"
1382
+ }
1383
+ },
1384
+ "match": "(\\.)\\s*(new)"
1385
+ },
1386
+ {
1387
+ "captures": {
1388
+ "1": {
1389
+ "name": "punctuation.separator.period.java"
1390
+ },
1391
+ "2": {
1392
+ "name": "variable.other.object.property.java"
1393
+ }
1394
+ },
1395
+ "match": "(\\.)\\s*([a-zA-Z_$][\\w$]*)(?=\\s*\\.\\s*[a-zA-Z_$][\\w$]*)"
1396
+ },
1397
+ {
1398
+ "captures": {
1399
+ "1": {
1400
+ "name": "punctuation.separator.period.java"
1401
+ },
1402
+ "2": {
1403
+ "name": "variable.other.object.property.java"
1404
+ }
1405
+ },
1406
+ "match": "(\\.)\\s*([a-zA-Z_$][\\w$]*)"
1407
+ },
1408
+ {
1409
+ "captures": {
1410
+ "1": {
1411
+ "name": "punctuation.separator.period.java"
1412
+ },
1413
+ "2": {
1414
+ "name": "invalid.illegal.identifier.java"
1415
+ }
1416
+ },
1417
+ "match": "(\\.)\\s*([0-9][\\w$]*)"
1418
+ }
1419
+ ]
1420
+ },
1421
+ "record": {
1422
+ "begin": "(?=\\w?[\\w\\s]*\\b(?:record)\\s+[\\w$]+)",
1423
+ "end": "}",
1424
+ "endCaptures": {
1425
+ "0": {
1426
+ "name": "punctuation.section.class.end.bracket.curly.java"
1427
+ }
1428
+ },
1429
+ "name": "meta.record.java",
1430
+ "patterns": [
1431
+ {
1432
+ "include": "#storage-modifiers"
1433
+ },
1434
+ {
1435
+ "include": "#generics"
1436
+ },
1437
+ {
1438
+ "include": "#comments"
1439
+ },
1440
+ {
1441
+ "begin": "(record)\\s+([\\w$]+)(<[\\w$]+>)?(\\()",
1442
+ "beginCaptures": {
1443
+ "1": {
1444
+ "name": "storage.modifier.java"
1445
+ },
1446
+ "2": {
1447
+ "name": "entity.name.type.record.java"
1448
+ },
1449
+ "3": {
1450
+ "patterns": [
1451
+ {
1452
+ "include": "#generics"
1453
+ }
1454
+ ]
1455
+ },
1456
+ "4": {
1457
+ "name": "punctuation.definition.parameters.begin.bracket.round.java"
1458
+ }
1459
+ },
1460
+ "end": "\\)",
1461
+ "endCaptures": {
1462
+ "0": {
1463
+ "name": "punctuation.definition.parameters.end.bracket.round.java"
1464
+ }
1465
+ },
1466
+ "name": "meta.record.identifier.java",
1467
+ "patterns": [
1468
+ {
1469
+ "include": "#code"
1470
+ }
1471
+ ]
1472
+ },
1473
+ {
1474
+ "begin": "(implements)\\s",
1475
+ "beginCaptures": {
1476
+ "1": {
1477
+ "name": "storage.modifier.implements.java"
1478
+ }
1479
+ },
1480
+ "end": "(?=\\s*\\{)",
1481
+ "name": "meta.definition.class.implemented.interfaces.java",
1482
+ "patterns": [
1483
+ {
1484
+ "include": "#object-types-inherited"
1485
+ },
1486
+ {
1487
+ "include": "#comments"
1488
+ }
1489
+ ]
1490
+ },
1491
+ {
1492
+ "include": "#record-body"
1493
+ }
1494
+ ]
1495
+ },
1496
+ "record-body": {
1497
+ "begin": "{",
1498
+ "beginCaptures": {
1499
+ "0": {
1500
+ "name": "punctuation.section.class.begin.bracket.curly.java"
1501
+ }
1502
+ },
1503
+ "end": "(?=})",
1504
+ "name": "meta.record.body.java",
1505
+ "patterns": [
1506
+ {
1507
+ "include": "#record-constructor"
1508
+ },
1509
+ {
1510
+ "include": "#class-body"
1511
+ }
1512
+ ]
1513
+ },
1514
+ "record-constructor": {
1515
+ "begin": "(?!new)(?=[\\w<].*\\s+)(?=([^\\(=/]|/(?!/))+(?={))",
1516
+ "end": "(})|(?=;)",
1517
+ "endCaptures": {
1518
+ "1": {
1519
+ "name": "punctuation.section.method.end.bracket.curly.java"
1520
+ }
1521
+ },
1522
+ "name": "meta.method.java",
1523
+ "patterns": [
1524
+ {
1525
+ "include": "#storage-modifiers"
1526
+ },
1527
+ {
1528
+ "begin": "(\\w+)",
1529
+ "beginCaptures": {
1530
+ "1": {
1531
+ "name": "entity.name.function.java"
1532
+ }
1533
+ },
1534
+ "end": "(?=\\s*{)",
1535
+ "name": "meta.method.identifier.java",
1536
+ "patterns": [
1537
+ {
1538
+ "include": "#comments"
1539
+ }
1540
+ ]
1541
+ },
1542
+ {
1543
+ "include": "#comments"
1544
+ },
1545
+ {
1546
+ "begin": "{",
1547
+ "beginCaptures": {
1548
+ "0": {
1549
+ "name": "punctuation.section.method.begin.bracket.curly.java"
1550
+ }
1551
+ },
1552
+ "contentName": "meta.method.body.java",
1553
+ "end": "(?=})",
1554
+ "patterns": [
1555
+ {
1556
+ "include": "#code"
1557
+ }
1558
+ ]
1559
+ }
1560
+ ]
1561
+ },
1562
+ "static-initializer": {
1563
+ "patterns": [
1564
+ {
1565
+ "include": "#anonymous-block-and-instance-initializer"
1566
+ },
1567
+ {
1568
+ "match": "static",
1569
+ "name": "storage.modifier.java"
1570
+ }
1571
+ ]
1572
+ },
1573
+ "storage-modifiers": {
1574
+ "match": "\\b(public|private|protected|static|final|native|synchronized|abstract|threadsafe|transient|volatile|default|strictfp|sealed|non-sealed)\\b",
1575
+ "name": "storage.modifier.java"
1576
+ },
1577
+ "strings": {
1578
+ "patterns": [
1579
+ {
1580
+ "begin": "\"\"\"",
1581
+ "beginCaptures": {
1582
+ "0": {
1583
+ "name": "punctuation.definition.string.begin.java"
1584
+ }
1585
+ },
1586
+ "end": "\"\"\"",
1587
+ "endCaptures": {
1588
+ "0": {
1589
+ "name": "punctuation.definition.string.end.java"
1590
+ }
1591
+ },
1592
+ "name": "string.quoted.triple.java",
1593
+ "patterns": [
1594
+ {
1595
+ "match": "(\\\\\"\"\")(?!\")|(\\\\.)",
1596
+ "name": "constant.character.escape.java"
1597
+ }
1598
+ ]
1599
+ },
1600
+ {
1601
+ "begin": "\"",
1602
+ "beginCaptures": {
1603
+ "0": {
1604
+ "name": "punctuation.definition.string.begin.java"
1605
+ }
1606
+ },
1607
+ "end": "\"",
1608
+ "endCaptures": {
1609
+ "0": {
1610
+ "name": "punctuation.definition.string.end.java"
1611
+ }
1612
+ },
1613
+ "name": "string.quoted.double.java",
1614
+ "patterns": [
1615
+ {
1616
+ "match": "\\\\.",
1617
+ "name": "constant.character.escape.java"
1618
+ }
1619
+ ]
1620
+ },
1621
+ {
1622
+ "begin": "'",
1623
+ "beginCaptures": {
1624
+ "0": {
1625
+ "name": "punctuation.definition.string.begin.java"
1626
+ }
1627
+ },
1628
+ "end": "'",
1629
+ "endCaptures": {
1630
+ "0": {
1631
+ "name": "punctuation.definition.string.end.java"
1632
+ }
1633
+ },
1634
+ "name": "string.quoted.single.java",
1635
+ "patterns": [
1636
+ {
1637
+ "match": "\\\\.",
1638
+ "name": "constant.character.escape.java"
1639
+ }
1640
+ ]
1641
+ }
1642
+ ]
1643
+ },
1644
+ "throws": {
1645
+ "begin": "throws",
1646
+ "beginCaptures": {
1647
+ "0": {
1648
+ "name": "storage.modifier.java"
1649
+ }
1650
+ },
1651
+ "end": "(?={|;)",
1652
+ "name": "meta.throwables.java",
1653
+ "patterns": [
1654
+ {
1655
+ "match": ",",
1656
+ "name": "punctuation.separator.delimiter.java"
1657
+ },
1658
+ {
1659
+ "match": "[a-zA-Z$_][\\.a-zA-Z0-9$_]*",
1660
+ "name": "storage.type.java"
1661
+ },
1662
+ {
1663
+ "include": "#comments"
1664
+ }
1665
+ ]
1666
+ },
1667
+ "try-catch-finally": {
1668
+ "patterns": [
1669
+ {
1670
+ "begin": "\\btry\\b",
1671
+ "beginCaptures": {
1672
+ "0": {
1673
+ "name": "keyword.control.try.java"
1674
+ }
1675
+ },
1676
+ "end": "}",
1677
+ "endCaptures": {
1678
+ "0": {
1679
+ "name": "punctuation.section.try.end.bracket.curly.java"
1680
+ }
1681
+ },
1682
+ "name": "meta.try.java",
1683
+ "patterns": [
1684
+ {
1685
+ "begin": "\\(",
1686
+ "beginCaptures": {
1687
+ "0": {
1688
+ "name": "punctuation.section.try.resources.begin.bracket.round.java"
1689
+ }
1690
+ },
1691
+ "end": "\\)",
1692
+ "endCaptures": {
1693
+ "0": {
1694
+ "name": "punctuation.section.try.resources.end.bracket.round.java"
1695
+ }
1696
+ },
1697
+ "name": "meta.try.resources.java",
1698
+ "patterns": [
1699
+ {
1700
+ "include": "#code"
1701
+ }
1702
+ ]
1703
+ },
1704
+ {
1705
+ "begin": "{",
1706
+ "beginCaptures": {
1707
+ "0": {
1708
+ "name": "punctuation.section.try.begin.bracket.curly.java"
1709
+ }
1710
+ },
1711
+ "contentName": "meta.try.body.java",
1712
+ "end": "(?=})",
1713
+ "patterns": [
1714
+ {
1715
+ "include": "#code"
1716
+ }
1717
+ ]
1718
+ }
1719
+ ]
1720
+ },
1721
+ {
1722
+ "begin": "\\b(catch)\\b",
1723
+ "beginCaptures": {
1724
+ "1": {
1725
+ "name": "keyword.control.catch.java"
1726
+ }
1727
+ },
1728
+ "end": "}",
1729
+ "endCaptures": {
1730
+ "0": {
1731
+ "name": "punctuation.section.catch.end.bracket.curly.java"
1732
+ }
1733
+ },
1734
+ "name": "meta.catch.java",
1735
+ "patterns": [
1736
+ {
1737
+ "include": "#comments"
1738
+ },
1739
+ {
1740
+ "begin": "\\(",
1741
+ "beginCaptures": {
1742
+ "0": {
1743
+ "name": "punctuation.definition.parameters.begin.bracket.round.java"
1744
+ }
1745
+ },
1746
+ "contentName": "meta.catch.parameters.java",
1747
+ "end": "\\)",
1748
+ "endCaptures": {
1749
+ "0": {
1750
+ "name": "punctuation.definition.parameters.end.bracket.round.java"
1751
+ }
1752
+ },
1753
+ "patterns": [
1754
+ {
1755
+ "include": "#comments"
1756
+ },
1757
+ {
1758
+ "include": "#storage-modifiers"
1759
+ },
1760
+ {
1761
+ "begin": "[a-zA-Z$_][\\.a-zA-Z0-9$_]*",
1762
+ "beginCaptures": {
1763
+ "0": {
1764
+ "name": "storage.type.java"
1765
+ }
1766
+ },
1767
+ "end": "(\\|)|(?=\\))",
1768
+ "endCaptures": {
1769
+ "1": {
1770
+ "name": "punctuation.catch.separator.java"
1771
+ }
1772
+ },
1773
+ "patterns": [
1774
+ {
1775
+ "include": "#comments"
1776
+ },
1777
+ {
1778
+ "captures": {
1779
+ "0": {
1780
+ "name": "variable.parameter.java"
1781
+ }
1782
+ },
1783
+ "match": "\\w+"
1784
+ }
1785
+ ]
1786
+ }
1787
+ ]
1788
+ },
1789
+ {
1790
+ "begin": "{",
1791
+ "beginCaptures": {
1792
+ "0": {
1793
+ "name": "punctuation.section.catch.begin.bracket.curly.java"
1794
+ }
1795
+ },
1796
+ "contentName": "meta.catch.body.java",
1797
+ "end": "(?=})",
1798
+ "patterns": [
1799
+ {
1800
+ "include": "#code"
1801
+ }
1802
+ ]
1803
+ }
1804
+ ]
1805
+ },
1806
+ {
1807
+ "begin": "\\bfinally\\b",
1808
+ "beginCaptures": {
1809
+ "0": {
1810
+ "name": "keyword.control.finally.java"
1811
+ }
1812
+ },
1813
+ "end": "}",
1814
+ "endCaptures": {
1815
+ "0": {
1816
+ "name": "punctuation.section.finally.end.bracket.curly.java"
1817
+ }
1818
+ },
1819
+ "name": "meta.finally.java",
1820
+ "patterns": [
1821
+ {
1822
+ "begin": "{",
1823
+ "beginCaptures": {
1824
+ "0": {
1825
+ "name": "punctuation.section.finally.begin.bracket.curly.java"
1826
+ }
1827
+ },
1828
+ "contentName": "meta.finally.body.java",
1829
+ "end": "(?=})",
1830
+ "patterns": [
1831
+ {
1832
+ "include": "#code"
1833
+ }
1834
+ ]
1835
+ }
1836
+ ]
1837
+ }
1838
+ ]
1839
+ },
1840
+ "variables": {
1841
+ "begin": "(?x)\n(?=\n \\b\n (\n (void|boolean|byte|char|short|int|float|long|double)\n |\n (?>(\\w+\\.)*[A-Z_]+\\w*) # e.g. `javax.ws.rs.Response`, or `String`\n )\n \\b\n \\s*\n (\n <[\\w<>,\\.?\\s\\[\\]]*> # e.g. `HashMap<Integer, String>`, or `List<java.lang.String>`\n )?\n \\s*\n (\n (\\[\\])* # int[][]\n )?\n \\s+\n [A-Za-z_$][\\w$]* # At least one identifier after space\n ([\\w\\[\\],$][\\w\\[\\],\\s]*)? # possibly primitive array or additional identifiers\n \\s*(=|:|;)\n)",
1842
+ "end": "(?=\\=|:|;)",
1843
+ "name": "meta.definition.variable.java",
1844
+ "patterns": [
1845
+ {
1846
+ "captures": {
1847
+ "1": {
1848
+ "name": "variable.other.definition.java"
1849
+ }
1850
+ },
1851
+ "match": "([A-Za-z$_][\\w$]*)(?=\\s*(\\[\\])*\\s*(;|:|=|,))"
1852
+ },
1853
+ {
1854
+ "include": "#all-types"
1855
+ },
1856
+ {
1857
+ "include": "#code"
1858
+ }
1859
+ ]
1860
+ },
1861
+ "variables-local": {
1862
+ "begin": "(?=\\b(var)\\b\\s+[A-Za-z_$][\\w$]*\\s*(=|:|;))",
1863
+ "end": "(?=\\=|:|;)",
1864
+ "name": "meta.definition.variable.local.java",
1865
+ "patterns": [
1866
+ {
1867
+ "match": "\\bvar\\b",
1868
+ "name": "storage.type.local.java"
1869
+ },
1870
+ {
1871
+ "captures": {
1872
+ "1": {
1873
+ "name": "variable.other.definition.java"
1874
+ }
1875
+ },
1876
+ "match": "([A-Za-z$_][\\w$]*)(?=\\s*(\\[\\])*\\s*(=|:|;))"
1877
+ },
1878
+ {
1879
+ "include": "#code"
1880
+ }
1881
+ ]
1882
+ }
1883
+ },
1884
+ "scopeName": "source.java"
1885
+ }