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,1063 @@
1
+ {
2
+ "displayName": "SystemVerilog",
3
+ "fileTypes": [
4
+ "sv",
5
+ "SV",
6
+ "v",
7
+ "V",
8
+ "svh",
9
+ "SVH",
10
+ "vh",
11
+ "VH"
12
+ ],
13
+ "name": "system-verilog",
14
+ "patterns": [
15
+ {
16
+ "begin": "\\s*\\b(function|task)\\b(\\s+automatic)?",
17
+ "beginCaptures": {
18
+ "1": {
19
+ "name": "keyword.control.systemverilog"
20
+ },
21
+ "2": {
22
+ "name": "keyword.control.systemverilog"
23
+ }
24
+ },
25
+ "end": ";",
26
+ "name": "meta.function.systemverilog",
27
+ "patterns": [
28
+ {
29
+ "captures": {
30
+ "1": {
31
+ "name": "storage.type.systemverilog"
32
+ },
33
+ "2": {
34
+ "name": "entity.name.function.systemverilog"
35
+ }
36
+ },
37
+ "match": "\\b([a-zA-Z_][a-zA-Z0-9_]*\\s+)?([a-zA-Z_][a-zA-Z0-9_:]*)\\s*(?=\\(|;)"
38
+ },
39
+ {
40
+ "include": "#port-dir"
41
+ },
42
+ {
43
+ "include": "#base-grammar"
44
+ }
45
+ ]
46
+ },
47
+ {
48
+ "captures": {
49
+ "1": {
50
+ "name": "keyword.control.systemverilog"
51
+ },
52
+ "2": {
53
+ "name": "keyword.control.systemverilog"
54
+ },
55
+ "3": {
56
+ "name": "entity.name.function.systemverilog"
57
+ }
58
+ },
59
+ "match": "\\s*\\b(task)\\s+(automatic)?\\s*(\\w+)\\s*;",
60
+ "name": "meta.task.simple.systemverilog"
61
+ },
62
+ {
63
+ "begin": "\\s*\\b(typedef\\s+(struct|enum|union)\\b)\\s*(packed)?\\s*([a-zA-Z_][a-zA-Z0-9_]*)?",
64
+ "beginCaptures": {
65
+ "1": {
66
+ "name": "keyword.control.systemverilog"
67
+ },
68
+ "2": {
69
+ "name": "keyword.control.systemverilog"
70
+ },
71
+ "3": {
72
+ "name": "keyword.control.systemverilog"
73
+ },
74
+ "4": {
75
+ "name": "storage.type.systemverilog"
76
+ }
77
+ },
78
+ "end": "(})\\s*([a-zA-Z_][a-zA-Z0-9_]*)\\s*;",
79
+ "endCaptures": {
80
+ "1": {
81
+ "name": "keyword.operator.other.systemverilog"
82
+ },
83
+ "2": {
84
+ "name": "entity.name.function.systemverilog"
85
+ }
86
+ },
87
+ "name": "meta.typedef.struct.systemverilog",
88
+ "patterns": [
89
+ {
90
+ "include": "#struct-anonymous"
91
+ },
92
+ {
93
+ "include": "#base-grammar"
94
+ }
95
+ ]
96
+ },
97
+ {
98
+ "captures": {
99
+ "1": {
100
+ "name": "keyword.control.systemverilog"
101
+ },
102
+ "2": {
103
+ "name": "entity.name.declaration.systemverilog"
104
+ }
105
+ },
106
+ "match": "\\s*\\b(typedef\\s+class)\\s+([a-zA-Z_][a-zA-Z0-9_]*)\\s*;",
107
+ "name": "meta.typedef.class.systemverilog"
108
+ },
109
+ {
110
+ "begin": "\\s*\\b(typedef)\\b",
111
+ "beginCaptures": {
112
+ "1": {
113
+ "name": "keyword.control.systemverilog"
114
+ }
115
+ },
116
+ "end": "([a-zA-Z_][a-zA-Z0-9_]*)\\s*(?=(\\[[a-zA-Z0-9_:\\$\\-\\+]*\\])?;)",
117
+ "endCaptures": {
118
+ "1": {
119
+ "name": "entity.name.function.systemverilog"
120
+ }
121
+ },
122
+ "name": "meta.typedef.simple.systemverilog",
123
+ "patterns": [
124
+ {
125
+ "captures": {
126
+ "1": {
127
+ "name": "storage.type.userdefined.systemverilog"
128
+ },
129
+ "2": {
130
+ "name": "keyword.operator.param.systemverilog"
131
+ }
132
+ },
133
+ "match": "\\b([a-zA-Z_]\\w*)\\s*(#)\\(",
134
+ "name": "meta.typedef.class.systemverilog"
135
+ },
136
+ {
137
+ "include": "#base-grammar"
138
+ },
139
+ {
140
+ "include": "#module-binding"
141
+ }
142
+ ]
143
+ },
144
+ {
145
+ "begin": "\\s*(module)\\s+\\b([a-zA-Z_][a-zA-Z0-9_]*)\\b",
146
+ "beginCaptures": {
147
+ "1": {
148
+ "name": "keyword.control.systemverilog"
149
+ },
150
+ "2": {
151
+ "name": "entity.name.type.module.systemverilog"
152
+ }
153
+ },
154
+ "end": ";",
155
+ "endCaptures": {
156
+ "1": {
157
+ "name": "entity.name.function.systemverilog"
158
+ }
159
+ },
160
+ "name": "meta.module.systemverilog",
161
+ "patterns": [
162
+ {
163
+ "include": "#port-dir"
164
+ },
165
+ {
166
+ "match": "\\s*(parameter)",
167
+ "name": "keyword.other.systemverilog"
168
+ },
169
+ {
170
+ "include": "#base-grammar"
171
+ },
172
+ {
173
+ "include": "#ifmodport"
174
+ },
175
+ {
176
+ "match": "\\$\\b([a-zA-Z_][a-zA-Z0-9_]*)\\b",
177
+ "name": "support.function.systemverilog"
178
+ }
179
+ ]
180
+ },
181
+ {
182
+ "captures": {
183
+ "1": {
184
+ "name": "keyword.control.systemverilog"
185
+ },
186
+ "2": {
187
+ "name": "entity.name.function.systemverilog"
188
+ }
189
+ },
190
+ "match": "\\b(sequence)\\s+([a-zA-Z_][a-zA-Z0-9_]*)",
191
+ "name": "meta.sequence.systemverilog"
192
+ },
193
+ {
194
+ "captures": {
195
+ "1": {
196
+ "name": "keyword.control.systemverilog"
197
+ }
198
+ },
199
+ "match": "\\b(bind)\\s+([a-zA-Z_][a-zA-Z0-9_\\.]*)\\b"
200
+ },
201
+ {
202
+ "captures": {
203
+ "0": {
204
+ "name": "meta.section.begin.systemverilog"
205
+ },
206
+ "1": {
207
+ "name": "keyword.other.block.systemverilog"
208
+ },
209
+ "3": {
210
+ "name": "keyword.operator.systemverilog"
211
+ },
212
+ "4": {
213
+ "name": "entity.name.section.systemverilog"
214
+ }
215
+ },
216
+ "match": "\\s*(begin|fork)\\s*((:)\\s*([a-zA-Z_][a-zA-Z0-9_]*))\\b",
217
+ "name": "meta.definition.systemverilog"
218
+ },
219
+ {
220
+ "captures": {
221
+ "1": {
222
+ "name": "keyword.sva.systemverilog"
223
+ },
224
+ "2": {
225
+ "name": "entity.name.sva.systemverilog"
226
+ }
227
+ },
228
+ "match": "\\b(asset|cover)\\s(property)\\s+(\\w+)"
229
+ },
230
+ {
231
+ "captures": {
232
+ "1": {
233
+ "name": "entity.name.sva.systemverilog"
234
+ },
235
+ "2": {
236
+ "name": "keyword.operator.systemverilog"
237
+ },
238
+ "3": {
239
+ "name": "keyword.sva.systemverilog"
240
+ }
241
+ },
242
+ "match": "\\b(\\w+)\\s*(:)\\s*(assert)\\b"
243
+ },
244
+ {
245
+ "begin": "\\s*(//)\\s*(psl)\\s+((\\w+)\\s*(:))?\\s*(default|assert|assume)",
246
+ "beginCaptures": {
247
+ "0": {
248
+ "name": "meta.psl.systemverilog"
249
+ },
250
+ "1": {
251
+ "name": "comment.line.double-slash.systemverilog"
252
+ },
253
+ "2": {
254
+ "name": "keyword.psl.systemverilog"
255
+ },
256
+ "4": {
257
+ "name": "entity.psl.name.systemverilog"
258
+ },
259
+ "5": {
260
+ "name": "keyword.operator.systemverilog"
261
+ },
262
+ "6": {
263
+ "name": "keyword.psl.systemverilog"
264
+ }
265
+ },
266
+ "end": ";",
267
+ "name": "meta.psl.systemverilog",
268
+ "patterns": [
269
+ {
270
+ "match": "\\b(never|always|default|clock|within|rose|fell|stable|until|before|next|eventually|abort|posedge)\\b",
271
+ "name": "keyword.psl.systemverilog"
272
+ },
273
+ {
274
+ "include": "#operators"
275
+ },
276
+ {
277
+ "include": "#functions"
278
+ },
279
+ {
280
+ "include": "#constants"
281
+ }
282
+ ]
283
+ },
284
+ {
285
+ "begin": "\\s*(/\\*)\\s*(psl)",
286
+ "beginCaptures": {
287
+ "0": {
288
+ "name": "meta.psl.systemverilog"
289
+ },
290
+ "1": {
291
+ "name": "comment.block.systemverilog"
292
+ },
293
+ "2": {
294
+ "name": "keyword.psl.systemverilog"
295
+ }
296
+ },
297
+ "end": "(\\*/)",
298
+ "endCaptures": {
299
+ "1": {
300
+ "name": "comment.block.systemverilog"
301
+ }
302
+ },
303
+ "name": "meta.psl.systemverilog",
304
+ "patterns": [
305
+ {
306
+ "captures": {
307
+ "0": {
308
+ "name": "meta.psl.systemverilog"
309
+ },
310
+ "2": {
311
+ "name": "entity.psl.name.systemverilog"
312
+ },
313
+ "3": {
314
+ "name": "keyword.operator.systemverilog"
315
+ },
316
+ "4": {
317
+ "name": "keyword.psl.systemverilog"
318
+ }
319
+ },
320
+ "match": "^\\s*((\\w+)\\s*(:))?\\s*(default|assert|assume)"
321
+ },
322
+ {
323
+ "captures": {
324
+ "1": {
325
+ "name": "keyword.psl.systemverilog"
326
+ },
327
+ "2": {
328
+ "name": "entity.psl.name.systemverilog"
329
+ }
330
+ },
331
+ "match": "\\b(asset|cover)\\s+(property)\\s+(\\w+)"
332
+ },
333
+ {
334
+ "match": "\\b(never|always|default|clock|within|rose|fell|stable|until|before|next|eventually|abort|posedge|negedge)\\b",
335
+ "name": "keyword.psl.systemverilog"
336
+ },
337
+ {
338
+ "include": "#operators"
339
+ },
340
+ {
341
+ "include": "#functions"
342
+ },
343
+ {
344
+ "include": "#constants"
345
+ }
346
+ ]
347
+ },
348
+ {
349
+ "captures": {
350
+ "1": {
351
+ "name": "keyword.other.systemverilog"
352
+ }
353
+ },
354
+ "match": "\\s*\\b(automatic|cell|config|deassign|defparam|design|disable|edge|endconfig|endgenerate|endspecify|endtable|event|generate|genvar|ifnone|incdir|instance|liblist|library|macromodule|negedge|noshowcancelled|posedge|pulsestyle_onevent|pulsestyle_ondetect|scalared|showcancelled|specify|specparam|table|use|vectored)\\b"
355
+ },
356
+ {
357
+ "captures": {
358
+ "1": {
359
+ "name": "keyword.control.systemverilog"
360
+ }
361
+ },
362
+ "match": "\\s*\\b(initial|always|wait|force|release|assign|always_comb|always_ff|always_latch|forever|repeat|while|for|if|iff|else|case|casex|casez|default|endcase|return|break|continue|do|foreach|with|inside|dist|clocking|cover|coverpoint|property|bins|binsof|illegal_bins|ignore_bins|randcase|modport|matches|solve|static|assert|assume|before|expect|cross|ref|first_match|srandom|struct|packed|final|chandle|alias|tagged|extern|throughout|timeprecision|timeunit|priority|type|union|uwire|wait_order|triggered|randsequence|import|export|context|pure|intersect|wildcard|within|new|typedef|enum|this|super|begin|fork|forkjoin|unique|unique0|priority)\\b"
363
+ },
364
+ {
365
+ "captures": {
366
+ "1": {
367
+ "name": "keyword.control.systemverilog"
368
+ },
369
+ "3": {
370
+ "name": "keyword.operator.systemverilog"
371
+ },
372
+ "4": {
373
+ "name": "entity.label.systemverilog"
374
+ }
375
+ },
376
+ "match": "\\s*\\b(end|endtask|endmodule|endfunction|endprimitive|endclass|endpackage|endsequence|endprogram|endclocking|endproperty|endgroup|endinterface|join|join_any|join_none)\\b(\\s*(:)\\s*(\\w+))?",
377
+ "name": "meta.object.end.systemverilog"
378
+ },
379
+ {
380
+ "match": "\\b(std)\\b::",
381
+ "name": "support.class.systemverilog"
382
+ },
383
+ {
384
+ "captures": {
385
+ "1": {
386
+ "name": "constant.other.define.systemverilog"
387
+ },
388
+ "2": {
389
+ "name": "entity.name.type.define.systemverilog"
390
+ }
391
+ },
392
+ "match": "^\\s*(`define)\\s+([a-zA-Z_][a-zA-Z0-9_]*)",
393
+ "name": "meta.define.systemverilog"
394
+ },
395
+ {
396
+ "captures": {
397
+ "1": {
398
+ "name": "constant.other.undef.systemverilog"
399
+ },
400
+ "2": {
401
+ "name": "entity.name.type.undef.systemverilog"
402
+ }
403
+ },
404
+ "match": "^\\s*(`undef)\\s+([a-zA-Z_][a-zA-Z0-9_]*)",
405
+ "name": "meta.undef.systemverilog"
406
+ },
407
+ {
408
+ "include": "#comments"
409
+ },
410
+ {
411
+ "captures": {
412
+ "1": {
413
+ "name": "keyword.control.systemverilog"
414
+ },
415
+ "2": {
416
+ "name": "entity.name.type.class.systemverilog"
417
+ }
418
+ },
419
+ "match": "\\s*(primitive|package|constraint|interface|covergroup|program)\\s+\\b([a-zA-Z_][a-zA-Z0-9_]*)\\b",
420
+ "name": "meta.definition.systemverilog"
421
+ },
422
+ {
423
+ "captures": {
424
+ "2": {
425
+ "name": "entity.name.type.class.systemverilog"
426
+ },
427
+ "3": {
428
+ "name": "keyword.operator.other.systemverilog"
429
+ },
430
+ "4": {
431
+ "name": "keyword.control.systemverilog"
432
+ }
433
+ },
434
+ "match": "(([a-zA-Z_][a-zA-Z0-9_]*)\\s*(:))?\\s*(coverpoint|cross)\\s+([a-zA-Z_][a-zA-Z0-9_]*)",
435
+ "name": "meta.definition.systemverilog"
436
+ },
437
+ {
438
+ "captures": {
439
+ "1": {
440
+ "name": "keyword.control.systemverilog"
441
+ },
442
+ "2": {
443
+ "name": "keyword.control.systemverilog"
444
+ },
445
+ "3": {
446
+ "name": "entity.name.type.class.systemverilog"
447
+ }
448
+ },
449
+ "match": "\\b(virtual\\s+)?(class)\\s+\\b([a-zA-Z_][a-zA-Z0-9_]*)\\b",
450
+ "name": "meta.definition.class.systemverilog"
451
+ },
452
+ {
453
+ "captures": {
454
+ "1": {
455
+ "name": "keyword.control.systemverilog"
456
+ },
457
+ "2": {
458
+ "name": "entity.other.inherited-class.systemverilog"
459
+ }
460
+ },
461
+ "match": "\\b(extends)\\s+([a-zA-Z_][a-zA-Z0-9_]*)\\b",
462
+ "name": "meta.definition.systemverilog"
463
+ },
464
+ {
465
+ "include": "#all-types"
466
+ },
467
+ {
468
+ "include": "#operators"
469
+ },
470
+ {
471
+ "include": "#port-dir"
472
+ },
473
+ {
474
+ "match": "\\b(and|nand|nor|or|xor|xnor|buf|not|bufif[01]|notif[01]|r?[npc]mos|tran|r?tranif[01]|pullup|pulldown)\\b",
475
+ "name": "support.type.systemverilog"
476
+ },
477
+ {
478
+ "include": "#strings"
479
+ },
480
+ {
481
+ "match": "\\$\\b([a-zA-Z_][a-zA-Z0-9_]*)\\b",
482
+ "name": "support.function.systemverilog"
483
+ },
484
+ {
485
+ "captures": {
486
+ "1": {
487
+ "name": "storage.type.systemverilog"
488
+ },
489
+ "2": {
490
+ "name": "keyword.operator.cast.systemverilog"
491
+ }
492
+ },
493
+ "match": "\\b([a-zA-Z_][a-zA-Z0-9_]*)(')(?=\\()",
494
+ "name": "meta.cast.systemverilog"
495
+ },
496
+ {
497
+ "captures": {
498
+ "1": {
499
+ "name": "keyword.other.systemverilog"
500
+ },
501
+ "2": {
502
+ "name": "constant.other.systemverilog"
503
+ }
504
+ },
505
+ "match": "^\\s*(localparam|parameter)\\s+([A-Z_][A-Z0-9_]*)\\b\\s*(?=(=))",
506
+ "name": "meta.param.systemverilog"
507
+ },
508
+ {
509
+ "captures": {
510
+ "1": {
511
+ "name": "keyword.other.systemverilog"
512
+ }
513
+ },
514
+ "match": "^\\s*(localparam|parameter)\\s+([a-zA-Z_][a-zA-Z0-9_]*)\\b\\s*(?=(=))",
515
+ "name": "meta.param.systemverilog"
516
+ },
517
+ {
518
+ "captures": {
519
+ "1": {
520
+ "name": "keyword.other.systemverilog"
521
+ },
522
+ "2": {
523
+ "name": "keyword.other.systemverilog"
524
+ },
525
+ "3": {
526
+ "name": "storage.type.rand.systemverilog"
527
+ },
528
+ "5": {
529
+ "name": "support.type.scope.systemverilog"
530
+ },
531
+ "6": {
532
+ "name": "keyword.operator.scope.systemverilog"
533
+ },
534
+ "7": {
535
+ "name": "storage.type.userdefined.systemverilog"
536
+ }
537
+ },
538
+ "match": "^\\s*(local\\s+|protected\\s+|localparam\\s+|parameter\\s+)?(const\\s+|virtual\\s+)?(rand\\s+|randc\\s+)?(([a-zA-Z_][a-zA-Z0-9_]*)(::))?([a-zA-Z_][a-zA-Z0-9_]*)\\b\\s*(?=(#\\s*\\([\\w,]+\\)\\s*)?([a-zA-Z][a-zA-Z0-9_\\s\\[\\]']*)(;|,|=|'\\{))",
539
+ "name": "meta.userdefined.systemverilog"
540
+ },
541
+ {
542
+ "captures": {
543
+ "1": {
544
+ "name": "keyword.cover.systemverilog"
545
+ }
546
+ },
547
+ "match": "\\s*\\b(option)\\."
548
+ },
549
+ {
550
+ "captures": {
551
+ "1": {
552
+ "name": "keyword.other.systemverilog"
553
+ }
554
+ },
555
+ "match": "\\s*\\b(local|const|protected|virtual|localparam|parameter)\\b"
556
+ },
557
+ {
558
+ "match": "\\s*\\b(rand|randc)\\b",
559
+ "name": "storage.type.rand.systemverilog"
560
+ },
561
+ {
562
+ "begin": "^(\\s*(bind)\\s+([a-zA-Z_][\\w\\.]*))?\\s*([a-zA-Z_][a-zA-Z0-9_]*)\\s*(?=#[^#])",
563
+ "beginCaptures": {
564
+ "2": {
565
+ "name": "keyword.control.systemverilog"
566
+ },
567
+ "4": {
568
+ "name": "storage.module.systemverilog"
569
+ }
570
+ },
571
+ "end": "(?=;|=|:)",
572
+ "name": "meta.module.inst.param.systemverilog",
573
+ "patterns": [
574
+ {
575
+ "include": "#module-binding"
576
+ },
577
+ {
578
+ "include": "#module-param"
579
+ },
580
+ {
581
+ "include": "#comments"
582
+ },
583
+ {
584
+ "include": "#operators"
585
+ },
586
+ {
587
+ "include": "#constants"
588
+ },
589
+ {
590
+ "include": "#strings"
591
+ },
592
+ {
593
+ "match": "\\b([a-zA-Z_][a-zA-Z0-9_]*)\\b(?=\\s*(\\(|$))",
594
+ "name": "entity.name.type.module.systemverilog"
595
+ }
596
+ ]
597
+ },
598
+ {
599
+ "begin": "\\b([a-zA-Z_][a-zA-Z0-9_]*)\\s+(?!intersect|and|or|throughout|within)([a-zA-Z_][a-zA-Z0-9_]*)\\s*(\\[(\\d+)(\\:(\\d+))?\\])?\\s*(\\(|$)",
600
+ "beginCaptures": {
601
+ "1": {
602
+ "name": "storage.module.systemverilog"
603
+ },
604
+ "2": {
605
+ "name": "entity.name.type.module.systemverilog"
606
+ },
607
+ "4": {
608
+ "name": "constant.numeric.systemverilog"
609
+ },
610
+ "6": {
611
+ "name": "constant.numeric.systemverilog"
612
+ }
613
+ },
614
+ "end": ";",
615
+ "name": "meta.module.inst.systemverilog",
616
+ "patterns": [
617
+ {
618
+ "include": "#module-binding"
619
+ },
620
+ {
621
+ "include": "#comments"
622
+ },
623
+ {
624
+ "include": "#strings"
625
+ },
626
+ {
627
+ "include": "#operators"
628
+ },
629
+ {
630
+ "include": "#constants"
631
+ }
632
+ ]
633
+ },
634
+ {
635
+ "begin": "\\b\\s+(<?=)\\s*(\\'{)",
636
+ "beginCaptures": {
637
+ "1": {
638
+ "name": "keyword.operator.other.systemverilog"
639
+ },
640
+ "2": {
641
+ "name": "keyword.operator.other.systemverilog"
642
+ },
643
+ "3": {
644
+ "name": "keyword.operator.other.systemverilog"
645
+ }
646
+ },
647
+ "end": ";",
648
+ "name": "meta.struct.assign.systemverilog",
649
+ "patterns": [
650
+ {
651
+ "captures": {
652
+ "1": {
653
+ "name": "support.function.field.systemverilog"
654
+ },
655
+ "2": {
656
+ "name": "keyword.operator.other.systemverilog"
657
+ }
658
+ },
659
+ "match": "\\b(\\w+)\\s*(:)(?!:)"
660
+ },
661
+ {
662
+ "include": "#comments"
663
+ },
664
+ {
665
+ "include": "#strings"
666
+ },
667
+ {
668
+ "include": "#operators"
669
+ },
670
+ {
671
+ "include": "#constants"
672
+ },
673
+ {
674
+ "include": "#storage-scope-systemverilog"
675
+ }
676
+ ]
677
+ },
678
+ {
679
+ "include": "#storage-scope-systemverilog"
680
+ },
681
+ {
682
+ "include": "#functions"
683
+ },
684
+ {
685
+ "include": "#constants"
686
+ }
687
+ ],
688
+ "repository": {
689
+ "all-types": {
690
+ "patterns": [
691
+ {
692
+ "include": "#storage-type-systemverilog"
693
+ },
694
+ {
695
+ "include": "#storage-modifier-systemverilog"
696
+ }
697
+ ]
698
+ },
699
+ "base-grammar": {
700
+ "patterns": [
701
+ {
702
+ "include": "#all-types"
703
+ },
704
+ {
705
+ "include": "#comments"
706
+ },
707
+ {
708
+ "include": "#operators"
709
+ },
710
+ {
711
+ "include": "#constants"
712
+ },
713
+ {
714
+ "include": "#strings"
715
+ },
716
+ {
717
+ "captures": {
718
+ "1": {
719
+ "name": "storage.type.interface.systemverilog"
720
+ }
721
+ },
722
+ "match": "^\\s*([a-zA-Z_][a-zA-Z0-9_]*)\\s+[a-zA-Z_][a-zA-Z0-9_,=\\s]*"
723
+ },
724
+ {
725
+ "include": "#storage-scope-systemverilog"
726
+ }
727
+ ]
728
+ },
729
+ "comments": {
730
+ "patterns": [
731
+ {
732
+ "begin": "/\\*",
733
+ "captures": {
734
+ "0": {
735
+ "name": "punctuation.definition.comment.systemverilog"
736
+ }
737
+ },
738
+ "end": "\\*/",
739
+ "name": "comment.block.systemverilog"
740
+ },
741
+ {
742
+ "captures": {
743
+ "1": {
744
+ "name": "punctuation.definition.comment.systemverilog"
745
+ }
746
+ },
747
+ "match": "(//).*$\\n?",
748
+ "name": "comment.line.double-slash.systemverilog"
749
+ }
750
+ ]
751
+ },
752
+ "constants": {
753
+ "patterns": [
754
+ {
755
+ "match": "(\\b\\d+)?'(s?[bB]\\s*[0-1xXzZ?][0-1_xXzZ?]*|s?[oO]\\s*[0-7xXzZ?][0-7_xXzZ?]*|s?[dD]\\s*[0-9xXzZ?][0-9_xXzZ?]*|s?[hH]\\s*[0-9a-fA-FxXzZ?][0-9a-fA-F_xXzZ?]*)((e|E)(\\+|-)?[0-9]+)?(?!'|\\w)",
756
+ "name": "constant.numeric.systemverilog"
757
+ },
758
+ {
759
+ "match": "'[01xXzZ]",
760
+ "name": "constant.numeric.bit.systemverilog"
761
+ },
762
+ {
763
+ "match": "\\b((\\d[\\d_]*)(e|E)(\\+|-)?[0-9]+)\\b",
764
+ "name": "constant.numeric.exp.systemverilog"
765
+ },
766
+ {
767
+ "match": "\\b(\\d[\\d_]*)\\b",
768
+ "name": "constant.numeric.decimal.systemverilog"
769
+ },
770
+ {
771
+ "match": "\\b(\\d+(fs|ps|ns|us|ms|s)?)\\b",
772
+ "name": "constant.numeric.time.systemverilog"
773
+ },
774
+ {
775
+ "match": "\\b([A-Z][A-Z0-9_]*)\\b",
776
+ "name": "constant.other.net.systemverilog"
777
+ },
778
+ {
779
+ "captures": {
780
+ "1": {
781
+ "name": "constant.other.preprocessor.systemverilog"
782
+ },
783
+ "2": {
784
+ "name": "support.variable.systemverilog"
785
+ }
786
+ },
787
+ "match": "(`ifdef|`ifndef|`default_nettype)\\s+(\\w+)"
788
+ },
789
+ {
790
+ "match": "`(celldefine|else|elsif|endcelldefine|endif|include|line|nounconnected_drive|resetall|timescale|unconnected_drive|undef|begin_\\w+|end_\\w+|remove_\\w+|restore_\\w+)\\b",
791
+ "name": "constant.other.preprocessor.systemverilog"
792
+ },
793
+ {
794
+ "match": "`\\b([a-zA-Z_][a-zA-Z0-9_]*)\\b",
795
+ "name": "constant.other.define.systemverilog"
796
+ },
797
+ {
798
+ "match": "\\b(null)\\b",
799
+ "name": "support.constant.systemverilog"
800
+ }
801
+ ]
802
+ },
803
+ "functions": {
804
+ "match": "\\b(\\w+)(?=\\s*\\()",
805
+ "name": "support.function.generic.systemverilog"
806
+ },
807
+ "ifmodport": {
808
+ "captures": {
809
+ "1": {
810
+ "name": "storage.type.interface.systemverilog"
811
+ },
812
+ "2": {
813
+ "name": "support.modport.systemverilog"
814
+ }
815
+ },
816
+ "match": "\\b([a-zA-Z_][a-zA-Z0-9_]*)\\.([a-zA-Z_][a-zA-Z0-9_]*)\\s+([a-zA-Z_][a-zA-Z0-9_]*)\\b"
817
+ },
818
+ "module-binding": {
819
+ "begin": "\\.([a-zA-Z_][a-zA-Z0-9_]*)\\s*\\(",
820
+ "beginCaptures": {
821
+ "1": {
822
+ "name": "support.function.port.systemverilog"
823
+ }
824
+ },
825
+ "captures": {
826
+ "1": {
827
+ "name": "support.function.port.implicit.systemverilog"
828
+ }
829
+ },
830
+ "end": "\\)",
831
+ "match": "\\.([a-zA-Z_][a-zA-Z0-9_]*)\\s*",
832
+ "patterns": [
833
+ {
834
+ "include": "#constants"
835
+ },
836
+ {
837
+ "include": "#comments"
838
+ },
839
+ {
840
+ "include": "#operators"
841
+ },
842
+ {
843
+ "include": "#strings"
844
+ },
845
+ {
846
+ "include": "#constants"
847
+ },
848
+ {
849
+ "captures": {
850
+ "1": {
851
+ "name": "support.type.scope.systemverilog"
852
+ },
853
+ "2": {
854
+ "name": "keyword.operator.scope.systemverilog"
855
+ }
856
+ },
857
+ "match": "\\b([a-zA-Z_]\\w*)(::)"
858
+ },
859
+ {
860
+ "captures": {
861
+ "1": {
862
+ "name": "storage.type.interface.systemverilog"
863
+ },
864
+ "2": {
865
+ "name": "keyword.operator.cast.systemverilog"
866
+ }
867
+ },
868
+ "match": "\\b([a-zA-Z_]\\w*)(')"
869
+ },
870
+ {
871
+ "match": "\\$\\b([a-zA-Z_][a-zA-Z0-9_]*)\\b",
872
+ "name": "support.function.systemverilog"
873
+ },
874
+ {
875
+ "match": "\\b(virtual)\\b",
876
+ "name": "keyword.control.systemverilog"
877
+ }
878
+ ]
879
+ },
880
+ "module-param": {
881
+ "begin": "(#)\\s*\\(",
882
+ "beginCaptures": {
883
+ "1": {
884
+ "name": "keyword.operator.param.systemverilog"
885
+ }
886
+ },
887
+ "end": "\\)",
888
+ "name": "meta.module-param.systemverilog",
889
+ "patterns": [
890
+ {
891
+ "include": "#comments"
892
+ },
893
+ {
894
+ "include": "#constants"
895
+ },
896
+ {
897
+ "include": "#operators"
898
+ },
899
+ {
900
+ "include": "#strings"
901
+ },
902
+ {
903
+ "include": "#module-binding"
904
+ },
905
+ {
906
+ "match": "\\b(virtual)\\b",
907
+ "name": "keyword.control.systemverilog"
908
+ }
909
+ ]
910
+ },
911
+ "operators": {
912
+ "patterns": [
913
+ {
914
+ "match": "(=|==|===|!=|!==|<=|>=|<|>)",
915
+ "name": "keyword.operator.comparison.systemverilog"
916
+ },
917
+ {
918
+ "match": "(\\-|\\+|\\*|\\/|%)",
919
+ "name": "keyword.operator.arithmetic.systemverilog"
920
+ },
921
+ {
922
+ "match": "(!|&&|\\|\\||\\bor\\b)",
923
+ "name": "keyword.operator.logical.systemverilog"
924
+ },
925
+ {
926
+ "match": "(&|\\||\\^|~|{|'{|}|<<|>>|\\?|:)",
927
+ "name": "keyword.operator.bitwise.systemverilog"
928
+ },
929
+ {
930
+ "match": "(#|@)",
931
+ "name": "keyword.operator.other.systemverilog"
932
+ }
933
+ ]
934
+ },
935
+ "port-dir": {
936
+ "patterns": [
937
+ {
938
+ "captures": {
939
+ "1": {
940
+ "name": "support.type.systemverilog"
941
+ },
942
+ "3": {
943
+ "name": "support.type.scope.systemverilog"
944
+ },
945
+ "4": {
946
+ "name": "keyword.operator.scope.systemverilog"
947
+ },
948
+ "5": {
949
+ "name": "storage.type.interface.systemverilog"
950
+ }
951
+ },
952
+ "match": "\\s*\\b(output|input|inout|ref)\\s+(([a-zA-Z_][a-zA-Z0-9_]*)(::))?([a-zA-Z_][a-zA-Z0-9_]*)?\\s+(?=\\[[a-zA-Z0-9_\\-\\+]*:[a-zA-Z0-9_\\-\\+]*\\]\\s+[a-zA-Z_][a-zA-Z0-9_\\s]*)"
953
+ },
954
+ {
955
+ "captures": {
956
+ "1": {
957
+ "name": "support.type.systemverilog"
958
+ },
959
+ "3": {
960
+ "name": "support.type.scope.systemverilog"
961
+ },
962
+ "4": {
963
+ "name": "keyword.operator.scope.systemverilog"
964
+ },
965
+ "5": {
966
+ "name": "storage.type.interface.systemverilog"
967
+ }
968
+ },
969
+ "match": "\\s*\\b(output|input|inout|ref)\\s+(([a-zA-Z_][a-zA-Z0-9_]*)(::))?([a-zA-Z_][a-zA-Z0-9_]*)?\\s+(?=[a-zA-Z_][a-zA-Z0-9_\\s]*)"
970
+ },
971
+ {
972
+ "match": "\\s*\\b(output|input|inout|ref)\\b",
973
+ "name": "support.type.systemverilog"
974
+ }
975
+ ]
976
+ },
977
+ "storage-modifier-systemverilog": {
978
+ "match": "\\b(signed|unsigned|small|medium|large|supply[01]|strong[01]|pull[01]|weak[01]|highz[01])\\b",
979
+ "name": "storage.modifier.systemverilog"
980
+ },
981
+ "storage-scope-systemverilog": {
982
+ "captures": {
983
+ "1": {
984
+ "name": "support.type.systemverilog"
985
+ },
986
+ "2": {
987
+ "name": "keyword.operator.scope.systemverilog"
988
+ }
989
+ },
990
+ "match": "\\b([a-zA-Z_][a-zA-Z0-9_]*)(::)",
991
+ "name": "meta.scope.systemverilog"
992
+ },
993
+ "storage-type-systemverilog": {
994
+ "patterns": [
995
+ {
996
+ "match": "\\s*\\b(var|wire|tri|tri[01]|supply[01]|wand|triand|wor|trior|trireg|reg|integer|int|longint|shortint|logic|bit|byte|shortreal|string|time|realtime|real|process|void)\\b",
997
+ "name": "storage.type.systemverilog"
998
+ },
999
+ {
1000
+ "match": "\\s*\\b(uvm_transaction|uvm_component|uvm_monitor|uvm_driver|uvm_test|uvm_env|uvm_object|uvm_agent|uvm_sequence_base|uvm_sequence|uvm_sequence_item|uvm_sequence_state|uvm_sequencer|uvm_sequencer_base|uvm_component_registry|uvm_analysis_imp|uvm_analysis_port|uvm_analysis_export|uvm_config_db|uvm_active_passive_enum|uvm_phase|uvm_verbosity|uvm_tlm_analysis_fifo|uvm_tlm_fifo|uvm_report_server|uvm_objection|uvm_recorder|uvm_domain|uvm_reg_field|uvm_reg|uvm_reg_block|uvm_bitstream_t|uvm_radix_enum|uvm_printer|uvm_packer|uvm_comparer|uvm_scope_stack)\\b",
1001
+ "name": "storage.type.uvm.systemverilog"
1002
+ }
1003
+ ]
1004
+ },
1005
+ "strings": {
1006
+ "patterns": [
1007
+ {
1008
+ "begin": "\"",
1009
+ "beginCaptures": {
1010
+ "0": {
1011
+ "name": "punctuation.definition.string.begin.systemverilog"
1012
+ }
1013
+ },
1014
+ "end": "\"",
1015
+ "endCaptures": {
1016
+ "0": {
1017
+ "name": "punctuation.definition.string.end.systemverilog"
1018
+ }
1019
+ },
1020
+ "name": "string.quoted.double.systemverilog",
1021
+ "patterns": [
1022
+ {
1023
+ "match": "\\\\.",
1024
+ "name": "constant.character.escape.systemverilog"
1025
+ },
1026
+ {
1027
+ "match": "(?x)%\n (\\d+\\$)? # field (argument #)\n [#0\\- +']* # flags\n [,;:_]? # separator character (AltiVec)\n ((-?\\d+)|\\*(-?\\d+\\$)?)? # minimum field width\n (\\.((-?\\d+)|\\*(-?\\d+\\$)?)?)? # precision\n (hh|h|ll|l|j|t|z|q|L|vh|vl|v|hv|hl)? # length modifier\n [bdiouxXhHDOUeEfFgGaACcSspnmt%] # conversion type\n ",
1028
+ "name": "constant.other.placeholder.systemverilog"
1029
+ },
1030
+ {
1031
+ "match": "%",
1032
+ "name": "invalid.illegal.placeholder.systemverilog"
1033
+ }
1034
+ ]
1035
+ }
1036
+ ]
1037
+ },
1038
+ "struct-anonymous": {
1039
+ "begin": "\\s*\\b(struct|union)\\s*(packed)?\\s*",
1040
+ "beginCaptures": {
1041
+ "1": {
1042
+ "name": "keyword.control.systemverilog"
1043
+ },
1044
+ "2": {
1045
+ "name": "keyword.control.systemverilog"
1046
+ }
1047
+ },
1048
+ "end": "(})\\s*([a-zA-Z_]\\w*)\\s*;",
1049
+ "endCaptures": {
1050
+ "1": {
1051
+ "name": "keyword.operator.other.systemverilog"
1052
+ }
1053
+ },
1054
+ "name": "meta.struct.anonymous.systemverilog",
1055
+ "patterns": [
1056
+ {
1057
+ "include": "#base-grammar"
1058
+ }
1059
+ ]
1060
+ }
1061
+ },
1062
+ "scopeName": "source.systemverilog"
1063
+ }