@codingame/monaco-editor-wrapper 1.5.0 → 1.8.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 (41) hide show
  1. package/dist/JavaScript.tmLanguage.js +0 -49
  2. package/dist/JavaScriptReact.tmLanguage.js +0 -49
  3. package/dist/TypeScript.tmLanguage.js +0 -49
  4. package/dist/TypeScriptReact.tmLanguage.js +0 -49
  5. package/dist/cobol-snippets.js +2017 -0
  6. package/dist/codeblock3.js +18 -18
  7. package/dist/coffeescript-coffeescript.code-snippets.js +18 -0
  8. package/dist/cpp-c.code-snippets.js +18 -0
  9. package/dist/cpp-cpp.code-snippets.js +18 -0
  10. package/dist/cpptools.js +2 -2
  11. package/dist/elixir-snippets.js +184 -0
  12. package/dist/features/extensionConfigurations.js +3 -3
  13. package/dist/fsharp-fsharp.code-snippets.js +18 -0
  14. package/dist/groovy-groovy.code-snippets.js +229 -0
  15. package/dist/index.d.ts +2 -2
  16. package/dist/java.js +11 -0
  17. package/dist/java2.js +1 -1
  18. package/dist/javascript-javascript.code-snippets.js +196 -0
  19. package/dist/keybindings/index.d.ts +2 -1
  20. package/dist/keybindings/keybindingHelper.d.ts +1 -1
  21. package/dist/languages/index.d.ts +2 -1
  22. package/dist/languages/textMate/index.d.ts +1 -1
  23. package/dist/main.js +75 -145
  24. package/dist/markdown-basics-markdown.code-snippets.js +121 -0
  25. package/dist/php-php.code-snippets.js +265 -0
  26. package/dist/powershell-powershell.code-snippets.js +18 -0
  27. package/dist/r2.js +1 -1
  28. package/dist/scalameta.js +6 -1
  29. package/dist/svlangserver-systemverilog.js +395 -0
  30. package/dist/svlangserver.js +85 -0
  31. package/dist/swift-swift.code-snippets.js +183 -0
  32. package/dist/systemverilog.js +41 -7
  33. package/dist/systemverilog.tmLanguage.js +676 -496
  34. package/dist/typescript-basics-typescript.code-snippets.js +312 -0
  35. package/dist/vb-vb.code-snippets.js +88 -0
  36. package/dist/verilog.js +85 -3
  37. package/dist/vscode-R-r-snippets.js +534 -0
  38. package/dist/vscode-R-rmarkdown.js +91 -0
  39. package/dist/vscode-python.js +9 -0
  40. package/package.json +2 -3
  41. package/stats.html +1 -1
@@ -1,30 +1,114 @@
1
+ var name = "SystemVerilog";
2
+ var scopeName = "source.systemverilog";
1
3
  var fileTypes = [
2
- "sv",
3
- "SV",
4
4
  "v",
5
- "V",
6
- "svh",
7
- "SVH",
8
5
  "vh",
9
- "VH"
6
+ "sv",
7
+ "svh"
10
8
  ];
11
- var hidden = true;
12
- var name = "SystemVerilog";
13
9
  var patterns = [
14
10
  {
15
- begin: "\\s*\\b(function|task)\\b(\\s+automatic)?",
11
+ include: "#comments"
12
+ },
13
+ {
14
+ include: "#strings"
15
+ },
16
+ {
17
+ include: "#parameter"
18
+ },
19
+ {
20
+ include: "#port-declaration"
21
+ },
22
+ {
23
+ include: "#module-declaration"
24
+ },
25
+ {
26
+ include: "#class-declaration"
27
+ },
28
+ {
29
+ include: "#function-task"
30
+ },
31
+ {
32
+ include: "#sequence"
33
+ },
34
+ {
35
+ include: "#keywords"
36
+ },
37
+ {
38
+ include: "#all-types"
39
+ },
40
+ {
41
+ include: "#module-parameters"
42
+ },
43
+ {
44
+ include: "#module-no-parameters"
45
+ },
46
+ {
47
+ include: "#system-tf"
48
+ },
49
+ {
50
+ include: "#typedef-complex"
51
+ },
52
+ {
53
+ include: "#typedef-simple"
54
+ },
55
+ {
56
+ include: "#assertion"
57
+ },
58
+ {
59
+ include: "#bind-directive"
60
+ },
61
+ {
62
+ include: "#cast-operator"
63
+ },
64
+ {
65
+ include: "#storage-scope"
66
+ },
67
+ {
68
+ include: "#attributes"
69
+ },
70
+ {
71
+ include: "#imports"
72
+ },
73
+ {
74
+ include: "#operators"
75
+ },
76
+ {
77
+ include: "#constants"
78
+ },
79
+ {
80
+ include: "#functions"
81
+ },
82
+ {
83
+ include: "#identifiers"
84
+ },
85
+ {
86
+ include: "#selects"
87
+ }
88
+ ];
89
+ var repository = {
90
+ "function-task": {
91
+ begin: "[ \\t\\n]*(?:\\b(virtual)[ \\t\\n]+)?(?:\\b(function|task)\\b)(?:[ \\t\\n]+\\b(static|automatic)\\b)?",
16
92
  beginCaptures: {
17
93
  "1": {
18
- name: "keyword.control.systemverilog"
94
+ name: "storage.modifier.systemverilog"
19
95
  },
20
96
  "2": {
21
- name: "keyword.control.systemverilog"
97
+ name: "storage.type.function.systemverilog"
98
+ },
99
+ "3": {
100
+ name: "storage.modifier.systemverilog"
22
101
  }
23
102
  },
24
103
  end: ";",
104
+ endCaptures: {
105
+ "0": {
106
+ name: "punctuation.definition.function.end.systemverilog"
107
+ }
108
+ },
25
109
  patterns: [
26
110
  {
27
- match: "\\b([a-zA-Z_][a-zA-Z0-9_]*\\s+)?([a-zA-Z_][a-zA-Z0-9_:]*)\\s*(?=\\(|;)",
111
+ match: "\\b([a-zA-Z_][a-zA-Z0-9_$]*[ \\t\\n]+)?([a-zA-Z_][a-zA-Z0-9_:]*)[ \\t\\n]*(?=\\(|;)",
28
112
  captures: {
29
113
  "1": {
30
114
  name: "storage.type.systemverilog"
@@ -35,31 +119,22 @@ var patterns = [
35
119
  }
36
120
  },
37
121
  {
38
- include: "#port-dir"
122
+ include: "#port-declaration"
123
+ },
124
+ {
125
+ include: "#keywords"
39
126
  },
40
127
  {
41
128
  include: "#base-grammar"
129
+ },
130
+ {
131
+ include: "#identifiers"
42
132
  }
43
133
  ],
44
134
  name: "meta.function.systemverilog"
45
135
  },
46
- {
47
- match: "\\s*\\b(task)\\s+(automatic)?\\s*(\\w+)\\s*;",
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
- name: "meta.task.simple.systemverilog"
60
- },
61
- {
62
- begin: "\\s*\\b(typedef\\s+(struct|enum|union)\\b)\\s*(packed)?\\s*([a-zA-Z_][a-zA-Z0-9_]*)?",
136
+ "typedef-complex": {
137
+ begin: "[ \\t\\n]*\\b(typedef)[ \\t\\n]+(enum|struct|union|class|interface[ \\t\\n]+class)(?:[ \\t\\n]+(packed))?(?:[ \\t\\n]+([a-zA-Z_][a-zA-Z0-9_$]*)(?=[ \\t\\n]*(\\[[a-zA-Z0-9_:$\\-\\+` \\t\\n\\[\\]]*\\])?))?(?=[ \\t\\n]*{)",
63
138
  beginCaptures: {
64
139
  "1": {
65
140
  name: "keyword.control.systemverilog"
@@ -74,53 +149,58 @@ var patterns = [
74
149
  name: "storage.type.systemverilog"
75
150
  }
76
151
  },
77
- end: "(})\\s*([a-zA-Z_][a-zA-Z0-9_]*)\\s*;",
152
+ end: "(?<=})(?:[ \\t\\n]*([a-zA-Z_][a-zA-Z0-9_$]*))(?:[ \\t\\n]*(\\[[a-zA-Z0-9_:$\\-\\+` \\t\\n\\[\\]]*\\])?)[ \\t\\n]*;",
78
153
  endCaptures: {
79
154
  "1": {
80
- name: "keyword.operator.other.systemverilog"
155
+ name: "storage.type.systemverilog"
81
156
  },
82
157
  "2": {
83
- name: "entity.name.function.systemverilog"
158
+ patterns: [
159
+ {
160
+ include: "#selects"
161
+ }
162
+ ]
84
163
  }
85
164
  },
86
165
  patterns: [
87
166
  {
88
- include: "#struct-anonymous"
167
+ include: "#keywords"
89
168
  },
90
169
  {
91
170
  include: "#base-grammar"
171
+ },
172
+ {
173
+ include: "#identifiers"
92
174
  }
93
175
  ],
94
- name: "meta.typedef.struct.systemverilog"
176
+ name: "meta.typedef.complex.systemverilog"
95
177
  },
96
- {
97
- match: "\\s*\\b(typedef\\s+class)\\s+([a-zA-Z_][a-zA-Z0-9_]*)\\s*;",
98
- captures: {
178
+ "typedef-simple": {
179
+ begin: "[ \\t\\n]*\\b(typedef)[ \\t\\n]+(enum|struct|union|class|interface[ \\t\\n]+class)\\b",
180
+ beginCaptures: {
99
181
  "1": {
100
182
  name: "keyword.control.systemverilog"
101
183
  },
102
184
  "2": {
103
- name: "entity.name.declaration.systemverilog"
104
- }
105
- },
106
- name: "meta.typedef.class.systemverilog"
107
- },
108
- {
109
- begin: "\\s*\\b(typedef)\\b",
110
- beginCaptures: {
111
- "1": {
112
185
  name: "keyword.control.systemverilog"
113
186
  }
114
187
  },
115
- end: "([a-zA-Z_][a-zA-Z0-9_]*)\\s*(?=(\\[[a-zA-Z0-9_:\\$\\-\\+]*\\])?;)",
188
+ end: "(?:[ \\t\\n]*([a-zA-Z_][a-zA-Z0-9_$]*))(?:[ \\t\\n]*(\\[[a-zA-Z0-9_:$\\-\\+` \\t\\n\\[\\]]*\\])?)[ \\t\\n]*;",
116
189
  endCaptures: {
117
190
  "1": {
118
- name: "entity.name.function.systemverilog"
191
+ name: "storage.type.systemverilog"
192
+ },
193
+ "2": {
194
+ patterns: [
195
+ {
196
+ include: "#selects"
197
+ }
198
+ ]
119
199
  }
120
200
  },
121
201
  patterns: [
122
202
  {
123
- match: "\\b([a-zA-Z_]\\w*)\\s*(#)\\(",
203
+ match: "[ \\t\\n]+\\b([a-zA-Z_][a-zA-Z0-9_$]*)[ \\t\\n]*(#)\\(",
124
204
  captures: {
125
205
  "1": {
126
206
  name: "storage.type.userdefined.systemverilog"
@@ -136,48 +216,56 @@ var patterns = [
136
216
  },
137
217
  {
138
218
  include: "#module-binding"
219
+ },
220
+ {
221
+ include: "#identifiers"
139
222
  }
140
223
  ],
141
224
  name: "meta.typedef.simple.systemverilog"
142
225
  },
143
- {
144
- begin: "\\s*(module)\\s+\\b([a-zA-Z_][a-zA-Z0-9_]*)\\b",
226
+ "module-declaration": {
227
+ begin: "[ \\t\\n]*\\b((?:macro)?module|interface|program|package)[ \\t\\n]+(?:(static|automatic)[ \\t\\n]+)?([a-zA-Z_][a-zA-Z0-9_$]*)\\b",
145
228
  beginCaptures: {
146
229
  "1": {
147
230
  name: "keyword.control.systemverilog"
148
231
  },
149
232
  "2": {
233
+ name: "storage.modifier.systemverilog"
234
+ },
235
+ "3": {
150
236
  name: "entity.name.type.module.systemverilog"
151
237
  }
152
238
  },
153
239
  end: ";",
154
240
  endCaptures: {
155
- "1": {
156
- name: "entity.name.function.systemverilog"
241
+ "0": {
242
+ name: "punctuation.definition.module.end.systemverilog"
157
243
  }
158
244
  },
159
245
  patterns: [
160
246
  {
161
- include: "#port-dir"
247
+ include: "#parameter"
162
248
  },
163
249
  {
164
- match: "\\s*(parameter)",
165
- name: "keyword.other.systemverilog"
250
+ include: "#port-declaration"
166
251
  },
167
252
  {
168
- include: "#base-grammar"
253
+ include: "#interface-port"
254
+ },
255
+ {
256
+ include: "#imports"
169
257
  },
170
258
  {
171
- include: "#ifmodport"
259
+ include: "#base-grammar"
172
260
  },
173
261
  {
174
- match: "\\$\\b([a-zA-Z_][a-zA-Z0-9_]*)\\b",
175
- name: "support.function.systemverilog"
262
+ include: "#identifiers"
176
263
  }
177
264
  ],
178
265
  name: "meta.module.systemverilog"
179
266
  },
180
- {
267
+ sequence: {
268
+ match: "[ \\t\\n]*\\b(sequence)[ \\t\\n]+([a-zA-Z_][a-zA-Z0-9_$]*)\\b",
181
269
  captures: {
182
270
  "1": {
183
271
  name: "keyword.control.systemverilog"
@@ -186,51 +274,25 @@ var patterns = [
186
274
  name: "entity.name.function.systemverilog"
187
275
  }
188
276
  },
189
- match: "\\b(sequence)\\s+([a-zA-Z_][a-zA-Z0-9_]*)",
190
277
  name: "meta.sequence.systemverilog"
191
278
  },
192
- {
193
- match: "\\b(bind)\\s+([a-zA-Z_][a-zA-Z0-9_\\.]*)\\b",
279
+ "bind-directive": {
280
+ match: "[ \\t\\n]*\\b(bind)[ \\t\\n]+([a-zA-Z_][a-zA-Z0-9_$\\.]*)\\b",
194
281
  captures: {
195
282
  "1": {
196
283
  name: "keyword.control.systemverilog"
197
- }
198
- }
199
- },
200
- {
201
- captures: {
202
- "0": {
203
- name: "meta.section.begin.systemverilog"
204
- },
205
- "1": {
206
- name: "keyword.other.block.systemverilog"
207
284
  },
208
- "3": {
209
- name: "keyword.operator.systemverilog"
210
- },
211
- "4": {
212
- name: "entity.name.section.systemverilog"
285
+ "2": {
286
+ name: "entity.name.type.module.systemverilog"
213
287
  }
214
288
  },
215
- match: "\\s*(begin|fork)\\s*((:)\\s*([a-zA-Z_][a-zA-Z0-9_]*))\\b",
216
289
  name: "meta.definition.systemverilog"
217
290
  },
218
- {
219
- match: "\\b(property)\\s+(\\w+)",
291
+ assertion: {
292
+ match: "\\b([a-zA-Z_][a-zA-Z0-9_$]*)[ \\t\\n]*(:)[ \\t\\n]*(assert|assume|cover|restrict)\\b",
220
293
  captures: {
221
294
  "1": {
222
- name: "keyword.sva.systemverilog"
223
- },
224
- "2": {
225
- name: "entity.name.sva.systemverilog"
226
- }
227
- }
228
- },
229
- {
230
- match: "\\b(\\w+)\\s*(:)\\s*(assert)\\b",
231
- captures: {
232
- "1": {
233
- name: "entity.name.sva.systemverilog"
295
+ name: "entity.name.goto-label.php"
234
296
  },
235
297
  "2": {
236
298
  name: "keyword.operator.systemverilog"
@@ -240,173 +302,144 @@ var patterns = [
240
302
  }
241
303
  }
242
304
  },
243
- {
244
- begin: "\\s*(//)\\s*(psl)\\s+((\\w+)\\s*(:))?\\s*(default|assert|assume)",
245
- beginCaptures: {
246
- "0": {
247
- name: "meta.psl.systemverilog"
248
- },
249
- "1": {
250
- name: "comment.line.double-slash.systemverilog"
251
- },
252
- "2": {
253
- name: "keyword.psl.systemverilog"
254
- },
255
- "4": {
256
- name: "entity.psl.name.systemverilog"
257
- },
258
- "5": {
259
- name: "keyword.operator.systemverilog"
260
- },
261
- "6": {
262
- name: "keyword.psl.systemverilog"
263
- }
264
- },
265
- end: ";",
305
+ "compiler-directives": {
266
306
  patterns: [
267
307
  {
268
- match: "\\b(never|always|default|clock|within|rose|fell|stable|until|before|next|eventually|abort|posedge)\\b",
269
- name: "keyword.psl.systemverilog"
270
- },
271
- {
272
- include: "#operators"
273
- },
274
- {
275
- include: "#functions"
276
- },
277
- {
278
- include: "#constants"
279
- }
280
- ],
281
- name: "meta.psl.systemverilog"
282
- },
283
- {
284
- begin: "\\s*(/\\*)\\s*(psl)",
285
- beginCaptures: {
286
- "0": {
287
- name: "meta.psl.systemverilog"
288
- },
289
- "1": {
290
- name: "comment.block.systemverilog"
308
+ match: "(`)(else|endif|endcelldefine|celldefine|nounconnected_drive|resetall|undefineall|end_keywords|__FILE__|__LINE__)\\b",
309
+ captures: {
310
+ "1": {
311
+ name: "punctuation.definition.directive.systemverilog"
312
+ },
313
+ "2": {
314
+ name: "string.regexp.systemverilog"
315
+ }
316
+ }
291
317
  },
292
- "2": {
293
- name: "keyword.psl.systemverilog"
294
- }
295
- },
296
- end: "(\\*/)",
297
- endCaptures: {
298
- "1": {
299
- name: "comment.block.systemverilog"
300
- }
301
- },
302
- patterns: [
303
318
  {
304
- match: "^\\s*((\\w+)\\s*(:))?\\s*(default|assert|assume)",
319
+ match: "(`)(ifdef|ifndef|elsif|define|undef|pragma)[ \\t\\n]+([a-zA-Z_][a-zA-Z0-9_$]*)\\b",
305
320
  captures: {
306
- "0": {
307
- name: "meta.psl.systemverilog"
321
+ "1": {
322
+ name: "punctuation.definition.directive.systemverilog"
308
323
  },
309
324
  "2": {
310
- name: "entity.psl.name.systemverilog"
325
+ name: "string.regexp.systemverilog"
311
326
  },
312
327
  "3": {
313
- name: "keyword.operator.systemverilog"
328
+ name: "entity.name.function.preprocessor.systemverilog"
329
+ }
330
+ }
331
+ },
332
+ {
333
+ match: "(`)(include|timescale|default_nettype|unconnected_drive|line|begin_keywords)\\b",
334
+ captures: {
335
+ "1": {
336
+ name: "punctuation.definition.directive.systemverilog"
314
337
  },
315
- "4": {
316
- name: "keyword.psl.systemverilog"
338
+ "2": {
339
+ name: "string.regexp.systemverilog"
317
340
  }
318
341
  }
319
342
  },
320
343
  {
321
- match: "\\b(property)\\s+(\\w+)",
344
+ match: "(`)([a-zA-Z_][a-zA-Z0-9_$]*)\\b",
322
345
  captures: {
323
346
  "1": {
324
- name: "keyword.psl.systemverilog"
347
+ name: "punctuation.definition.directive.systemverilog"
325
348
  },
326
349
  "2": {
327
- name: "entity.psl.name.systemverilog"
350
+ name: "entity.name.function.preprocessor.systemverilog"
351
+ }
352
+ }
353
+ }
354
+ ],
355
+ name: "meta.preprocessor.systemverilog"
356
+ },
357
+ keywords: {
358
+ patterns: [
359
+ {
360
+ match: "\\b(edge|negedge|posedge|cell|config|deassign|defparam|design|disable|endgenerate|endspecify|endtable|event|generate|genvar|ifnone|incdir|instance|liblist|library|noshowcancelled|pulsestyle_onevent|pulsestyle_ondetect|scalared|showcancelled|specify|specparam|table|use|vectored)\\b",
361
+ captures: {
362
+ "1": {
363
+ name: "keyword.other.systemverilog"
328
364
  }
329
365
  }
330
366
  },
331
367
  {
332
- match: "\\b(never|always|default|clock|within|rose|fell|stable|until|before|next|eventually|abort|posedge|negedge)\\b",
333
- name: "keyword.psl.systemverilog"
368
+ include: "#sv-control"
334
369
  },
335
370
  {
336
- include: "#operators"
371
+ include: "#sv-control-begin"
337
372
  },
338
373
  {
339
- include: "#functions"
374
+ include: "#sv-control-end"
340
375
  },
341
376
  {
342
- include: "#constants"
343
- }
344
- ],
345
- name: "meta.psl.systemverilog"
346
- },
347
- {
348
- 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",
349
- captures: {
350
- "1": {
351
- name: "keyword.other.systemverilog"
377
+ include: "#sv-definition"
378
+ },
379
+ {
380
+ include: "#sv-cover-cross"
381
+ },
382
+ {
383
+ include: "#sv-std"
384
+ },
385
+ {
386
+ include: "#sv-option"
387
+ },
388
+ {
389
+ include: "#sv-local"
390
+ },
391
+ {
392
+ include: "#sv-rand"
393
+ },
394
+ {
395
+ include: "#sv-support"
352
396
  }
353
- }
397
+ ]
354
398
  },
355
- {
356
- 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",
399
+ "sv-control": {
400
+ match: "[ \\t\\n]*\\b(initial|wait|force|release|assign|always|always_comb|always_ff|always_latch|forever|repeat|while|for|if|iff|else|case|casex|casez|default|endcase|return|break|continue|do|foreach|with|clocking|coverpoint|property|bins|binsof|illegal_bins|ignore_bins|randcase|modport|matches|solve|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|context|pure|intersect|wildcard|typedef|new|forkjoin|unique|unique0|priority)\\b",
357
401
  captures: {
358
402
  "1": {
359
403
  name: "keyword.control.systemverilog"
360
404
  }
361
405
  }
362
406
  },
363
- {
364
- 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+))?",
407
+ "sv-control-begin": {
408
+ match: "[ \\t\\n]*\\b(begin|fork)\\b(?:[ \\t\\n]*(:)[ \\t\\n]*([a-zA-Z_][a-zA-Z0-9_$]*))?",
365
409
  captures: {
366
410
  "1": {
367
411
  name: "keyword.control.systemverilog"
368
412
  },
369
- "3": {
370
- name: "keyword.operator.systemverilog"
413
+ "2": {
414
+ name: "punctuation.definition.label.systemverilog"
371
415
  },
372
- "4": {
373
- name: "entity.label.systemverilog"
416
+ "3": {
417
+ name: "entity.name.section.systemverilog"
374
418
  }
375
419
  },
376
- name: "meta.object.end.systemverilog"
420
+ name: "meta.item.begin.systemverilog"
377
421
  },
378
- {
379
- match: "\\b(std)\\b::",
380
- name: "support.class.systemverilog"
381
- },
382
- {
422
+ "sv-control-end": {
423
+ match: "[ \\t\\n]*\\b(end|endmodule|endinterface|endprogram|endchecker|endclass|endpackage|endconfig|endfunction|endtask|endproperty|endsequence|endgroup|endprimitive|endclocking|join|join_any|join_none)\\b(?:[ \\t\\n]*(:)[ \\t\\n]*([a-zA-Z_][a-zA-Z0-9_$]*))?",
383
424
  captures: {
384
425
  "1": {
385
- name: "constant.other.define.systemverilog"
426
+ name: "keyword.control.systemverilog"
386
427
  },
387
428
  "2": {
388
- name: "entity.name.type.define.systemverilog"
389
- }
390
- },
391
- match: "^\\s*(`define)\\s+([a-zA-Z_][a-zA-Z0-9_]*)",
392
- name: "meta.define.systemverilog"
393
- },
394
- {
395
- captures: {
396
- "1": {
397
- name: "constant.other.undef.systemverilog"
429
+ name: "punctuation.definition.label.systemverilog"
398
430
  },
399
- "2": {
400
- name: "entity.name.type.undef.systemverilog"
431
+ "3": {
432
+ name: "entity.name.section.systemverilog"
401
433
  }
402
434
  },
403
- match: "^\\s*(`undef)\\s+([a-zA-Z_][a-zA-Z0-9_]*)",
404
- name: "meta.undef.systemverilog"
435
+ name: "meta.item.end.systemverilog"
405
436
  },
406
- {
407
- include: "#comments"
437
+ "sv-std": {
438
+ match: "\\b(std)\\b::",
439
+ name: "support.class.systemverilog"
408
440
  },
409
- {
441
+ "sv-definition": {
442
+ match: "[ \\t\\n]*\\b(primitive|package|constraint|interface|covergroup|program)[ \\t\\n]+\\b([a-zA-Z_][a-zA-Z0-9_$]*)\\b",
410
443
  captures: {
411
444
  "1": {
412
445
  name: "keyword.control.systemverilog"
@@ -415,10 +448,10 @@ var patterns = [
415
448
  name: "entity.name.type.class.systemverilog"
416
449
  }
417
450
  },
418
- match: "\\s*(primitive|package|constraint|interface|covergroup|program)\\s+\\b([a-zA-Z_][a-zA-Z0-9_]*)\\b",
419
451
  name: "meta.definition.systemverilog"
420
452
  },
421
- {
453
+ "sv-cover-cross": {
454
+ match: "(([a-zA-Z_][a-zA-Z0-9_$]*)[ \\t\\n]*(:))?[ \\t\\n]*(coverpoint|cross)[ \\t\\n]+([a-zA-Z_][a-zA-Z0-9_$]*)",
422
455
  captures: {
423
456
  "2": {
424
457
  name: "entity.name.type.class.systemverilog"
@@ -430,279 +463,288 @@ var patterns = [
430
463
  name: "keyword.control.systemverilog"
431
464
  }
432
465
  },
433
- match: "(([a-zA-Z_][a-zA-Z0-9_]*)\\s*(:))?\\s*(coverpoint|cross)\\s+([a-zA-Z_][a-zA-Z0-9_]*)",
434
466
  name: "meta.definition.systemverilog"
435
467
  },
436
- {
437
- captures: {
468
+ "class-declaration": {
469
+ begin: "[ \\t\\n]*\\b(virtual[ \\t\\n]+)?(class)(?:[ \\t\\n]+(static|automatic))?[ \\t\\n]+([a-zA-Z_][a-zA-Z0-9_$:]*)(?:[ \\t\\n]+(extends|implements)[ \\t\\n]+([a-zA-Z_][a-zA-Z0-9_$:]*))?",
470
+ beginCaptures: {
438
471
  "1": {
439
- name: "keyword.control.systemverilog"
472
+ name: "storage.modifier.systemverilog"
440
473
  },
441
474
  "2": {
442
- name: "keyword.control.systemverilog"
475
+ name: "storage.type.class.systemverilog"
443
476
  },
444
477
  "3": {
478
+ name: "storage.modifier.systemverilog"
479
+ },
480
+ "4": {
445
481
  name: "entity.name.type.class.systemverilog"
446
- }
447
- },
448
- match: "\\b(virtual\\s+)?(class)\\s+\\b([a-zA-Z_][a-zA-Z0-9_]*)\\b",
449
- name: "meta.definition.class.systemverilog"
450
- },
451
- {
452
- captures: {
453
- "1": {
482
+ },
483
+ "5": {
454
484
  name: "keyword.control.systemverilog"
455
485
  },
456
- "2": {
457
- name: "entity.other.inherited-class.systemverilog"
486
+ "6": {
487
+ name: "entity.name.type.class.systemverilog"
458
488
  }
459
489
  },
460
- match: "\\b(extends)\\s+([a-zA-Z_][a-zA-Z0-9_]*)\\b",
461
- name: "meta.definition.systemverilog"
462
- },
463
- {
464
- include: "#all-types"
465
- },
466
- {
467
- include: "#operators"
468
- },
469
- {
470
- include: "#port-dir"
490
+ end: ";",
491
+ endCaptures: {
492
+ "0": {
493
+ name: "punctuation.definition.class.end.systemverilog"
494
+ }
495
+ },
496
+ patterns: [
497
+ {
498
+ match: "[ \\t\\n]+\\b(extends|implements)[ \\t\\n]+([a-zA-Z_][a-zA-Z0-9_$:]*)(?:[ \\t\\n]*,[ \\t\\n]*([a-zA-Z_][a-zA-Z0-9_$:]*))*",
499
+ captures: {
500
+ "1": {
501
+ name: "keyword.control.systemverilog"
502
+ },
503
+ "2": {
504
+ name: "entity.name.type.class.systemverilog"
505
+ },
506
+ "3": {
507
+ name: "entity.name.type.class.systemverilog"
508
+ }
509
+ }
510
+ },
511
+ {
512
+ match: "[ \\t\\n]+\\b([a-zA-Z_][a-zA-Z0-9_$]*)[ \\t\\n]*(#)\\(",
513
+ captures: {
514
+ "1": {
515
+ name: "storage.type.userdefined.systemverilog"
516
+ },
517
+ "2": {
518
+ name: "keyword.operator.param.systemverilog"
519
+ }
520
+ },
521
+ name: "meta.typedef.class.systemverilog"
522
+ },
523
+ {
524
+ include: "#parameter"
525
+ },
526
+ {
527
+ include: "#port-declaration"
528
+ },
529
+ {
530
+ include: "#interface-port"
531
+ },
532
+ {
533
+ include: "#base-grammar"
534
+ },
535
+ {
536
+ include: "#module-binding"
537
+ },
538
+ {
539
+ include: "#identifiers"
540
+ }
541
+ ],
542
+ name: "meta.class.systemverilog"
471
543
  },
472
- {
544
+ "sv-support": {
473
545
  match: "\\b(and|nand|nor|or|xor|xnor|buf|not|bufif[01]|notif[01]|r?[npc]mos|tran|r?tranif[01]|pullup|pulldown)\\b",
474
546
  name: "support.type.systemverilog"
475
547
  },
476
- {
477
- include: "#strings"
478
- },
479
- {
480
- match: "\\$\\b([a-zA-Z_][a-zA-Z0-9_]*)\\b",
548
+ "system-tf": {
549
+ match: "\\$[a-zA-Z0-9_$][a-zA-Z0-9_$]*\\b",
481
550
  name: "support.function.systemverilog"
482
551
  },
483
- {
484
- match: "\\b([a-zA-Z_][a-zA-Z0-9_]*)(')(?=\\()",
485
- name: "meta.cast.systemverilog",
552
+ "cast-operator": {
553
+ match: "[ \\t\\n]*([a-zA-Z_][a-zA-Z0-9_$]*)(')(?=\\()",
486
554
  captures: {
487
555
  "1": {
488
- name: "storage.type.systemverilog"
556
+ name: "storage.type.interface.systemverilog"
489
557
  },
490
558
  "2": {
491
559
  name: "keyword.operator.cast.systemverilog"
492
560
  }
493
- }
494
- },
495
- {
496
- match: "^\\s*(localparam|parameter)\\s+([A-Z_][A-Z0-9_]*)\\b\\s*(?=(=))",
497
- name: "meta.param.systemverilog",
498
- captures: {
499
- "1": {
500
- name: "keyword.other.systemverilog"
501
- },
502
- "2": {
503
- name: "constant.other.systemverilog"
504
- }
505
- }
561
+ },
562
+ name: "meta.cast.systemverilog"
506
563
  },
507
- {
508
- match: "^\\s*(localparam|parameter)\\s+([a-zA-Z_][a-zA-Z0-9_]*)\\b\\s*(?=(=))",
509
- name: "meta.param.systemverilog",
510
- captures: {
511
- "1": {
512
- name: "keyword.other.systemverilog"
513
- }
514
- }
515
- },
516
- {
517
- 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\\[\\]']*)(;|,|=|'\\{))",
518
- name: "meta.userdefined.systemverilog",
564
+ parameter: {
565
+ match: "[ \\t\\n]*(localparam|parameter)[ \\t\\n]+([a-zA-Z_][a-zA-Z0-9_$:]*[ \\t\\n]+)?(?:((?:un)?signed)[ \\t\\n]+)?(?:(\\[[a-zA-Z0-9_:$\\-\\+` \\t\\n\\[\\]]*\\])[ \\t\\n]*)?([a-zA-Z_][a-zA-Z0-9_$]*)(?:[ \\t\\n]*(\\[[a-zA-Z0-9_:$\\-\\+` \\t\\n\\[\\]]*\\]))?[ \\t\\n]*(?==)",
519
566
  captures: {
520
567
  "1": {
521
568
  name: "keyword.other.systemverilog"
522
569
  },
523
570
  "2": {
524
- name: "keyword.other.systemverilog"
571
+ patterns: [
572
+ {
573
+ include: "#storage-scope"
574
+ }
575
+ ],
576
+ name: "storage.type.built-in.systemverilog"
525
577
  },
526
578
  "3": {
527
- name: "storage.type.rand.systemverilog"
579
+ name: "storage.modifier.systemverilog"
580
+ },
581
+ "4": {
582
+ patterns: [
583
+ {
584
+ include: "#selects"
585
+ }
586
+ ]
528
587
  },
529
588
  "5": {
530
- name: "support.type.scope.systemverilog"
589
+ name: "constant.other.systemverilog"
531
590
  },
532
591
  "6": {
533
- name: "keyword.operator.scope.systemverilog"
534
- },
535
- "7": {
536
- name: "storage.type.userdefined.systemverilog"
592
+ patterns: [
593
+ {
594
+ include: "#selects"
595
+ }
596
+ ]
537
597
  }
538
- }
598
+ },
599
+ name: "meta.param.systemverilog"
539
600
  },
540
- {
541
- match: "\\s*\\b(option)\\.",
601
+ "sv-option": {
602
+ match: "[ \\t\\n]*\\b(option)\\.",
542
603
  captures: {
543
604
  "1": {
544
605
  name: "keyword.cover.systemverilog"
545
606
  }
546
607
  }
547
608
  },
548
- {
549
- match: "\\s*\\b(local|const|protected|virtual|localparam|parameter)\\b",
609
+ "sv-local": {
610
+ match: "[ \\t\\n]*\\b(const|static|protected|virtual|localparam|parameter|local)\\b",
550
611
  captures: {
551
612
  "1": {
552
613
  name: "keyword.other.systemverilog"
553
614
  }
554
615
  }
555
616
  },
556
- {
557
- match: "\\s*\\b(rand|randc)\\b",
617
+ "sv-rand": {
618
+ match: "[ \\t\\n]*\\b(?:rand|randc)\\b",
558
619
  name: "storage.type.rand.systemverilog"
559
620
  },
560
- {
561
- begin: "^(\\s*(bind)\\s+([a-zA-Z_][\\w\\.]*))?\\s*([a-zA-Z_][a-zA-Z0-9_]*)\\s*(?=#[^#])",
621
+ "module-parameters": {
622
+ begin: "[ \\t\\n]*\\b(?:(bind)[ \\t\\n]+([a-zA-Z_][a-zA-Z0-9_$\\.]*)[ \\t\\n]+)?([a-zA-Z_][a-zA-Z0-9_$]*)[ \\t\\n]+(?!intersect|and|or|throughout|within)(?=#[^#])",
562
623
  beginCaptures: {
563
- "2": {
624
+ "1": {
564
625
  name: "keyword.control.systemverilog"
565
626
  },
566
- "4": {
567
- name: "storage.module.systemverilog"
627
+ "2": {
628
+ name: "entity.name.type.module.systemverilog"
629
+ },
630
+ "3": {
631
+ name: "entity.name.type.module.systemverilog"
632
+ }
633
+ },
634
+ end: ";",
635
+ endCaptures: {
636
+ "0": {
637
+ name: "punctuation.module.instantiation.end.systemverilog"
568
638
  }
569
639
  },
570
- end: "(?=;|=|:)",
571
640
  patterns: [
572
641
  {
573
642
  include: "#module-binding"
574
643
  },
575
644
  {
576
- include: "#module-param"
645
+ include: "#parameters"
577
646
  },
578
647
  {
579
648
  include: "#comments"
580
- },
581
- {
582
- include: "#operators"
583
- },
584
- {
585
- include: "#constants"
586
- },
587
- {
588
- include: "#strings"
589
- },
590
- {
591
- match: "\\b([a-zA-Z_][a-zA-Z0-9_]*)\\b(?=\\s*(\\(|$))",
592
- name: "entity.name.type.module.systemverilog"
593
- }
594
- ],
595
- name: "meta.module.inst.param.systemverilog"
596
- },
597
- {
598
- 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*(\\(|$)",
599
- beginCaptures: {
600
- "1": {
601
- name: "storage.module.systemverilog"
602
- },
603
- "2": {
604
- name: "entity.name.type.module.systemverilog"
605
- },
606
- "4": {
607
- name: "constant.numeric.systemverilog"
608
- },
609
- "6": {
610
- name: "constant.numeric.systemverilog"
611
- }
612
- },
613
- end: ";",
614
- patterns: [
649
+ },
615
650
  {
616
- include: "#module-binding"
651
+ include: "#operators"
617
652
  },
618
653
  {
619
- include: "#comments"
654
+ include: "#constants"
620
655
  },
621
656
  {
622
657
  include: "#strings"
623
658
  },
624
659
  {
625
- include: "#operators"
660
+ include: "#port-declaration"
626
661
  },
627
662
  {
628
- include: "#constants"
663
+ match: "\\b([a-zA-Z_][a-zA-Z0-9_$]*)\\b(?=[ \\t\\n]*(\\(|$))",
664
+ name: "variable.other.module.systemverilog"
665
+ },
666
+ {
667
+ include: "#identifiers"
629
668
  }
630
669
  ],
631
- name: "meta.module.inst.systemverilog"
670
+ name: "meta.module.parameters.systemverilog"
632
671
  },
633
- {
634
- name: "meta.struct.assign.systemverilog",
635
- begin: "\\b\\s+(<?=)\\s*(\\'{)",
672
+ "module-no-parameters": {
673
+ begin: "[ \\t\\n]*\\b(?:(bind)[ \\t\\n]+([a-zA-Z_][a-zA-Z0-9_$\\.]*)[ \\t\\n]+)?([a-zA-Z_][a-zA-Z0-9_$]*)[ \\t\\n]+(?!intersect|and|or|throughout|within)([a-zA-Z_][a-zA-Z0-9_$]*)(?:[ \\t\\n]*(\\[[a-zA-Z0-9_:$\\-\\+` \\t\\n\\[\\]]*\\])?)[ \\t\\n]*(?=\\(|;)",
636
674
  beginCaptures: {
637
675
  "1": {
638
- name: "keyword.operator.other.systemverilog"
676
+ name: "keyword.control.systemverilog"
639
677
  },
640
678
  "2": {
641
- name: "keyword.operator.other.systemverilog"
679
+ name: "entity.name.type.module.systemverilog"
642
680
  },
643
681
  "3": {
644
- name: "keyword.operator.other.systemverilog"
682
+ name: "entity.name.type.module.systemverilog"
683
+ },
684
+ "4": {
685
+ name: "variable.other.module.systemverilog"
686
+ },
687
+ "5": {
688
+ patterns: [
689
+ {
690
+ include: "#selects"
691
+ }
692
+ ]
645
693
  }
646
694
  },
647
695
  end: ";",
696
+ endCaptures: {
697
+ "0": {
698
+ name: "punctuation.module.instantiation.end.systemverilog"
699
+ }
700
+ },
648
701
  patterns: [
649
702
  {
650
- match: "\\b(\\w+)\\s*(:)(?!:)",
651
- captures: {
652
- "1": {
653
- name: "support.function.field.systemverilog"
654
- },
655
- "2": {
656
- name: "keyword.operator.other.systemverilog"
657
- }
658
- }
703
+ include: "#module-binding"
659
704
  },
660
705
  {
661
706
  include: "#comments"
662
707
  },
708
+ {
709
+ include: "#operators"
710
+ },
711
+ {
712
+ include: "#constants"
713
+ },
663
714
  {
664
715
  include: "#strings"
665
716
  },
666
717
  {
667
- include: "#operators"
718
+ include: "#port-declaration"
668
719
  },
669
720
  {
670
- include: "#constants"
721
+ match: "\\b([a-zA-Z_][a-zA-Z0-9_$]*)\\b(?=[ \\t\\n]*(\\(|$))",
722
+ name: "variable.other.module.systemverilog"
671
723
  },
672
724
  {
673
- include: "#storage-scope-systemverilog"
725
+ include: "#identifiers"
674
726
  }
675
- ]
676
- },
677
- {
678
- include: "#storage-scope-systemverilog"
679
- },
680
- {
681
- include: "#functions"
727
+ ],
728
+ name: "meta.module.no_parameters.systemverilog"
682
729
  },
683
- {
684
- include: "#constants"
685
- }
686
- ];
687
- var repository = {
688
730
  functions: {
689
- match: "\\b(\\w+)(?=\\s*\\()",
690
- name: "support.function.generic.systemverilog"
731
+ match: "[ \\t\\n]*\\b([a-zA-Z_][a-zA-Z0-9_$]*)(?=[ \\t\\n]*\\()",
732
+ name: "entity.name.function.systemverilog"
691
733
  },
692
734
  "all-types": {
693
735
  patterns: [
694
736
  {
695
- include: "#storage-type-systemverilog"
737
+ include: "#built-ins"
696
738
  },
697
739
  {
698
- include: "#storage-modifier-systemverilog"
740
+ include: "#modifiers"
699
741
  }
700
742
  ]
701
743
  },
702
744
  constants: {
703
745
  patterns: [
704
746
  {
705
- 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)",
747
+ match: "(\\b[1-9][0-9_]*)?'([sS]?[bB][ \\t\\n]*[0-1xXzZ?][0-1_xXzZ?]*|[sS]?[oO][ \\t\\n]*[0-7xXzZ?][0-7_xXzZ?]*|[sS]?[dD][ \\t\\n]*[0-9xXzZ?][0-9_xXzZ?]*|[sS]?[hH][ \\t\\n]*[0-9a-fA-FxXzZ?][0-9a-fA-F_xXzZ?]*)((e|E)(\\+|-)?[0-9]+)?(?!'|\\w)",
706
748
  name: "constant.numeric.systemverilog"
707
749
  },
708
750
  {
@@ -710,67 +752,79 @@ var repository = {
710
752
  name: "constant.numeric.bit.systemverilog"
711
753
  },
712
754
  {
713
- match: "\\b((\\d[\\d_]*)(e|E)(\\+|-)?[0-9]+)\\b",
755
+ match: "\\b(?:\\d[\\d_\\.]*(?<!\\.)(?:e|E)(?:\\+|-)?[0-9]+)\\b",
714
756
  name: "constant.numeric.exp.systemverilog"
715
757
  },
716
758
  {
717
- match: "\\b(\\d[\\d_]*)\\b",
759
+ match: "\\b(?:\\d[\\d_\\.]*(?!(?:[\\d\\.]|[ \\t\\n]*(?:e|E|fs|ps|ns|us|ms|s))))\\b",
718
760
  name: "constant.numeric.decimal.systemverilog"
719
761
  },
720
762
  {
721
- match: "\\b(\\d+(fs|ps|ns|us|ms|s)?)\\b",
763
+ match: "\\b(?:\\d[\\d\\.]*[ \\t\\n]*(?:fs|ps|ns|us|ms|s))\\b",
722
764
  name: "constant.numeric.time.systemverilog"
723
765
  },
724
766
  {
725
- match: "\\b([A-Z][A-Z0-9_]*)\\b",
726
- name: "constant.other.net.systemverilog"
767
+ include: "#compiler-directives"
727
768
  },
728
769
  {
729
- match: "(`ifdef|`ifndef|`default_nettype)\\s+(\\w+)",
730
- captures: {
731
- "1": {
732
- name: "constant.other.preprocessor.systemverilog"
733
- },
734
- "2": {
735
- name: "support.variable.systemverilog"
736
- }
737
- }
770
+ match: "\\b(?:this|super|null)\\b",
771
+ name: "constant.language.systemverilog"
738
772
  },
739
773
  {
740
- match: "`(celldefine|else|elsif|endcelldefine|endif|include|line|nounconnected_drive|resetall|timescale|unconnected_drive|undef|begin_\\w+|end_\\w+|remove_\\w+|restore_\\w+)\\b",
741
- name: "constant.other.preprocessor.systemverilog"
774
+ match: "\\b([A-Z][A-Z0-9_]*)\\b",
775
+ name: "constant.other.net.systemverilog"
742
776
  },
743
777
  {
744
- match: "`\\b([a-zA-Z_][a-zA-Z0-9_]*)\\b",
745
- name: "constant.other.define.systemverilog"
778
+ match: "\\b(?<!\\.)([A-Z_0-9]+)(?!\\.)\\b",
779
+ name: "constant.numeric.parameter.uppercase.systemverilog"
746
780
  },
747
781
  {
748
- match: "\\b(null)\\b",
749
- name: "support.constant.systemverilog"
782
+ match: "\\.\\*",
783
+ name: "keyword.operator.quantifier.regexp"
750
784
  }
751
785
  ]
752
786
  },
753
787
  operators: {
754
788
  patterns: [
755
789
  {
756
- match: "(=|==|===|!=|!==|<=|>=|<|>)",
757
- name: "keyword.operator.comparison.systemverilog"
790
+ match: "\\+=|-=|/=|\\*=|%=|&=|\\|=|\\^=|>>>=|>>=|<<<=|<<=|<=|=",
791
+ name: "keyword.operator.assignment.systemverilog"
792
+ },
793
+ {
794
+ match: "\\+\\+",
795
+ name: "keyword.operator.increment.systemverilog"
758
796
  },
759
797
  {
760
- match: "(\\-|\\+|\\*|\\/|%)",
798
+ match: "--",
799
+ name: "keyword.operator.decrement.systemverilog"
800
+ },
801
+ {
802
+ match: "\\+|-|\\*\\*|\\*|/|%",
761
803
  name: "keyword.operator.arithmetic.systemverilog"
762
804
  },
763
805
  {
764
- match: "(!|&&|\\|\\||\\bor\\b)",
806
+ match: "!|&&|\\|\\|",
765
807
  name: "keyword.operator.logical.systemverilog"
766
808
  },
767
809
  {
768
- match: "(&|\\||\\^|~|{|'{|}|<<|>>|\\?|:)",
810
+ match: "<<<|<<|>>>|>>",
811
+ name: "keyword.operator.bitwise.shift.systemverilog"
812
+ },
813
+ {
814
+ match: "~&|~\\||~|\\^~|~\\^|&|\\||\\^|{|''{|}|:|\\?",
769
815
  name: "keyword.operator.bitwise.systemverilog"
770
816
  },
771
817
  {
772
- match: "(#|@)",
773
- name: "keyword.operator.other.systemverilog"
818
+ match: "<=|<|>=|>|==\\?|!=\\?|===|!==|==|!=",
819
+ name: "keyword.operator.comparison.systemverilog"
820
+ },
821
+ {
822
+ match: "@|#|->|<->",
823
+ name: "keyword.operator.channel.systemverilog"
824
+ },
825
+ {
826
+ match: "\\b(?:dist|inside|or|and)\\b|:=|:/|\\|->|\\|=>|#-#|#=#",
827
+ name: "keyword.operator.logical.systemverilog"
774
828
  }
775
829
  ]
776
830
  },
@@ -778,64 +832,100 @@ var repository = {
778
832
  patterns: [
779
833
  {
780
834
  begin: "/\\*",
781
- captures: {
835
+ beginCaptures: {
782
836
  "0": {
783
837
  name: "punctuation.definition.comment.systemverilog"
784
838
  }
785
839
  },
786
840
  end: "\\*/",
841
+ endCaptures: {
842
+ "0": {
843
+ name: "punctuation.definition.comment.systemverilog"
844
+ }
845
+ },
846
+ patterns: [
847
+ {
848
+ include: "#fixme-todo"
849
+ }
850
+ ],
787
851
  name: "comment.block.systemverilog"
788
852
  },
789
853
  {
790
- captures: {
791
- "1": {
854
+ begin: "//",
855
+ beginCaptures: {
856
+ "0": {
792
857
  name: "punctuation.definition.comment.systemverilog"
793
858
  }
794
859
  },
795
- match: "(//).*$\\n?",
860
+ end: "$\\n?",
861
+ patterns: [
862
+ {
863
+ include: "#fixme-todo"
864
+ }
865
+ ],
796
866
  name: "comment.line.double-slash.systemverilog"
797
867
  }
798
868
  ]
799
869
  },
800
- "port-dir": {
870
+ "fixme-todo": {
801
871
  patterns: [
802
872
  {
803
- 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]*)",
873
+ match: "(?i:fixme)",
874
+ name: "invalid.broken.fixme.systemverilog"
875
+ },
876
+ {
877
+ match: "(?i:todo)",
878
+ name: "invalid.unimplemented.todo.systemverilog"
879
+ }
880
+ ]
881
+ },
882
+ "port-declaration": {
883
+ patterns: [
884
+ {
885
+ match: ",?[ \\t\\n]*\\b(output|input|inout|ref)\\b[ \\t\\n]+(?:\\b([a-zA-Z_][a-zA-Z0-9_$]*)(::))?([a-zA-Z_][a-zA-Z0-9_$]*\\b)?(?:[ \\t\\n]*(\\[[a-zA-Z0-9_:$\\-\\+` \\t\\n\\[\\]]*\\])?)(?:[ \\t\\n]*\\b([a-zA-Z_][a-zA-Z0-9_$]*)\\b)(?:[ \\t\\n]*(\\[[a-zA-Z0-9_:$\\-\\+` \\t\\n\\[\\]]*\\])?)(?:[ \\t\\n]*(,|;))?",
804
886
  captures: {
805
887
  "1": {
806
888
  name: "support.type.systemverilog"
807
889
  },
808
- "3": {
890
+ "2": {
809
891
  name: "support.type.scope.systemverilog"
810
892
  },
811
- "4": {
893
+ "3": {
812
894
  name: "keyword.operator.scope.systemverilog"
813
895
  },
896
+ "4": {
897
+ patterns: [
898
+ {
899
+ include: "#built-ins"
900
+ }
901
+ ]
902
+ },
814
903
  "5": {
815
- name: "storage.type.interface.systemverilog"
816
- }
817
- }
818
- },
819
- {
820
- 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]*)",
821
- captures: {
822
- "1": {
823
- name: "support.type.systemverilog"
904
+ patterns: [
905
+ {
906
+ include: "#selects"
907
+ }
908
+ ]
824
909
  },
825
- "3": {
826
- name: "support.type.scope.systemverilog"
910
+ "6": {
911
+ patterns: [
912
+ {
913
+ include: "#identifiers"
914
+ }
915
+ ]
827
916
  },
828
- "4": {
829
- name: "keyword.operator.scope.systemverilog"
917
+ "7": {
918
+ patterns: [
919
+ {
920
+ include: "#selects"
921
+ }
922
+ ]
830
923
  },
831
- "5": {
832
- name: "storage.type.interface.systemverilog"
924
+ "8": {
925
+ name: "punctuation.terminator.port.systemverilog"
833
926
  }
834
- }
835
- },
836
- {
837
- match: "\\s*\\b(output|input|inout|ref)\\b",
838
- name: "support.type.systemverilog"
927
+ },
928
+ name: "meta.port.declaration.systemverilog"
839
929
  }
840
930
  ]
841
931
  },
@@ -857,7 +947,7 @@ var repository = {
857
947
  include: "#strings"
858
948
  },
859
949
  {
860
- match: "^\\s*([a-zA-Z_][a-zA-Z0-9_]*)\\s+[a-zA-Z_][a-zA-Z0-9_,=\\s]*",
950
+ match: "[ \\t\\n]*\\b([a-zA-Z_][a-zA-Z0-9_$]*)[ \\t\\n]+[a-zA-Z_][a-zA-Z0-9_,= \\t\\n]*",
861
951
  captures: {
862
952
  "1": {
863
953
  name: "storage.type.interface.systemverilog"
@@ -865,24 +955,28 @@ var repository = {
865
955
  }
866
956
  },
867
957
  {
868
- include: "#storage-scope-systemverilog"
958
+ include: "#storage-scope"
869
959
  }
870
960
  ]
871
961
  },
872
- "storage-type-systemverilog": {
962
+ "built-ins": {
873
963
  patterns: [
874
964
  {
875
- 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",
876
- name: "storage.type.systemverilog"
965
+ match: "[ \\t\\n]*\\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",
966
+ name: "storage.type.built-in.systemverilog"
877
967
  },
878
968
  {
879
- 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",
969
+ match: "[ \\t\\n]*\\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",
880
970
  name: "storage.type.uvm.systemverilog"
881
971
  }
882
972
  ]
883
973
  },
884
- "storage-scope-systemverilog": {
885
- match: "\\b([a-zA-Z_][a-zA-Z0-9_]*)(::)",
974
+ modifiers: {
975
+ match: "[ \\t\\n]*\\b(?:(?:un)?signed|small|medium|large|supply[01]|strong[01]|pull[01]|weak[01]|highz[01])\\b",
976
+ name: "storage.modifier.systemverilog"
977
+ },
978
+ "storage-scope": {
979
+ match: "\\b([a-zA-Z_][a-zA-Z0-9_$]*)(::)",
886
980
  captures: {
887
981
  "1": {
888
982
  name: "support.type.systemverilog"
@@ -893,31 +987,35 @@ var repository = {
893
987
  },
894
988
  name: "meta.scope.systemverilog"
895
989
  },
896
- "storage-modifier-systemverilog": {
897
- match: "\\b(signed|unsigned|small|medium|large|supply[01]|strong[01]|pull[01]|weak[01]|highz[01])\\b",
898
- name: "storage.modifier.systemverilog"
899
- },
900
- ifmodport: {
901
- 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",
990
+ "interface-port": {
991
+ match: "[ \\t\\n]*\\b([a-zA-Z_][a-zA-Z0-9_$]*)(?:\\.([a-zA-Z_][a-zA-Z0-9_$]*))?[ \\t\\n]+([a-zA-Z_][a-zA-Z0-9_$]*)\\b",
902
992
  captures: {
903
993
  "1": {
904
994
  name: "storage.type.interface.systemverilog"
905
995
  },
906
996
  "2": {
907
997
  name: "support.modport.systemverilog"
998
+ },
999
+ "3": {
1000
+ patterns: [
1001
+ {
1002
+ include: "#identifiers"
1003
+ }
1004
+ ]
908
1005
  }
909
- }
1006
+ },
1007
+ name: "meta.interface-port.declaration.systemverilog"
910
1008
  },
911
1009
  strings: {
912
1010
  patterns: [
913
1011
  {
914
- begin: "\"",
1012
+ begin: "`?\"",
915
1013
  beginCaptures: {
916
1014
  "0": {
917
1015
  name: "punctuation.definition.string.begin.systemverilog"
918
1016
  }
919
1017
  },
920
- end: "\"",
1018
+ end: "\"`?",
921
1019
  endCaptures: {
922
1020
  "0": {
923
1021
  name: "punctuation.definition.string.end.systemverilog"
@@ -926,29 +1024,47 @@ var repository = {
926
1024
  name: "string.quoted.double.systemverilog",
927
1025
  patterns: [
928
1026
  {
929
- match: "\\\\.",
1027
+ match: "\\\\(?:[nt\\\\\"vfa]|[0-7]{3}|x[0-9a-fA-F]{2})",
930
1028
  name: "constant.character.escape.systemverilog"
931
1029
  },
932
1030
  {
933
- 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 ",
934
- name: "constant.other.placeholder.systemverilog"
1031
+ match: "(?x)%\n(\\d+\\$)? # field (argument #)\n['\\-+0 #]* # flags\n[,;:_]? # separator character\n((-?\\d+)|\\*(-?\\d+\\$)?)? # minimum field width\n(\\.((-?\\d+)|\\*(-?\\d+\\$)?)?)? # precision\n(hh|h|ll|l|j|z|t|L)? # length modifier\n[xXhHdDoObBcClLvVmMpPsStTuUzZeEfFgG%] # conversion type",
1032
+ name: "constant.character.format.placeholder.systemverilog"
935
1033
  },
936
1034
  {
937
1035
  match: "%",
938
1036
  name: "invalid.illegal.placeholder.systemverilog"
1037
+ },
1038
+ {
1039
+ include: "#fixme-todo"
939
1040
  }
940
1041
  ]
1042
+ },
1043
+ {
1044
+ begin: "(?<=include)[ \\t\\n]*(<)",
1045
+ beginCaptures: {
1046
+ "1": {
1047
+ name: "punctuation.definition.string.begin.systemverilog"
1048
+ }
1049
+ },
1050
+ end: ">",
1051
+ endCaptures: {
1052
+ "0": {
1053
+ name: "punctuation.definition.string.end.systemverilog"
1054
+ }
1055
+ },
1056
+ name: "string.quoted.other.lt-gt.include.systemverilog"
941
1057
  }
942
1058
  ]
943
1059
  },
944
1060
  "module-binding": {
945
- begin: "\\.([a-zA-Z_][a-zA-Z0-9_]*)\\s*\\(",
1061
+ begin: "\\.([a-zA-Z_][a-zA-Z0-9_$]*)[ \\t\\n]*\\(",
946
1062
  beginCaptures: {
947
1063
  "1": {
948
1064
  name: "support.function.port.systemverilog"
949
1065
  }
950
1066
  },
951
- end: "\\)",
1067
+ end: "\\),?",
952
1068
  patterns: [
953
1069
  {
954
1070
  include: "#constants"
@@ -966,52 +1082,40 @@ var repository = {
966
1082
  include: "#constants"
967
1083
  },
968
1084
  {
969
- match: "\\b([a-zA-Z_]\\w*)(::)",
970
- captures: {
971
- "1": {
972
- name: "support.type.scope.systemverilog"
973
- },
974
- "2": {
975
- name: "keyword.operator.scope.systemverilog"
976
- }
977
- }
1085
+ include: "#storage-scope"
978
1086
  },
979
1087
  {
980
- match: "\\b([a-zA-Z_]\\w*)(')",
981
- captures: {
982
- "1": {
983
- name: "storage.type.interface.systemverilog"
984
- },
985
- "2": {
986
- name: "keyword.operator.cast.systemverilog"
987
- }
988
- }
1088
+ include: "#cast-operator"
989
1089
  },
990
1090
  {
991
- match: "\\$\\b([a-zA-Z_][a-zA-Z0-9_]*)\\b",
992
- name: "support.function.systemverilog"
1091
+ include: "#system-tf"
993
1092
  },
994
1093
  {
995
- match: "\\b(virtual)\\b",
1094
+ match: "\\bvirtual\\b",
996
1095
  name: "keyword.control.systemverilog"
1096
+ },
1097
+ {
1098
+ include: "#identifiers"
997
1099
  }
998
1100
  ],
999
- match: "\\.([a-zA-Z_][a-zA-Z0-9_]*)\\s*",
1000
- captures: {
1001
- "1": {
1002
- name: "support.function.port.implicit.systemverilog"
1003
- }
1004
- }
1101
+ name: "meta.port.binding.systemverilog"
1005
1102
  },
1006
- "module-param": {
1007
- name: "meta.module-param.systemverilog",
1008
- begin: "(#)\\s*\\(",
1103
+ parameters: {
1104
+ begin: "(#)[ \\t\\n]*(\\()",
1009
1105
  beginCaptures: {
1010
1106
  "1": {
1011
- name: "keyword.operator.param.systemverilog"
1107
+ name: "keyword.operator.channel.systemverilog"
1108
+ },
1109
+ "2": {
1110
+ name: "punctuation.section.parameters.begin"
1012
1111
  }
1013
1112
  },
1014
1113
  end: "\\)",
1114
+ endCaptures: {
1115
+ "0": {
1116
+ name: "punctuation.section.parameters.end"
1117
+ }
1118
+ },
1015
1119
  patterns: [
1016
1120
  {
1017
1121
  include: "#comments"
@@ -1029,51 +1133,127 @@ var repository = {
1029
1133
  include: "#module-binding"
1030
1134
  },
1031
1135
  {
1032
- match: "\\b(virtual)\\b",
1136
+ match: "\\bvirtual\\b",
1033
1137
  name: "keyword.control.systemverilog"
1034
1138
  }
1139
+ ],
1140
+ name: "meta.parameters.systemverilog"
1141
+ },
1142
+ identifiers: {
1143
+ patterns: [
1144
+ {
1145
+ match: "\\b[a-zA-Z_][a-zA-Z0-9_$]*\\b",
1146
+ name: "variable.other.identifier.systemverilog"
1147
+ },
1148
+ {
1149
+ match: "(?<=^|[ \\t\\n])\\\\[!-~]+",
1150
+ name: "variable.other.identifier.systemverilog"
1151
+ }
1035
1152
  ]
1036
1153
  },
1037
- "struct-anonymous": {
1038
- begin: "\\s*\\b(struct|union)\\s*(packed)?\\s*",
1154
+ selects: {
1155
+ begin: "\\[",
1039
1156
  beginCaptures: {
1040
- "1": {
1041
- name: "keyword.control.systemverilog"
1157
+ "0": {
1158
+ name: "punctuation.slice.brackets.begin"
1159
+ }
1160
+ },
1161
+ end: "\\]",
1162
+ endCaptures: {
1163
+ "0": {
1164
+ name: "punctuation.slice.brackets.end"
1165
+ }
1166
+ },
1167
+ patterns: [
1168
+ {
1169
+ match: "\\$",
1170
+ name: "constant.language.systemverilog"
1042
1171
  },
1043
- "2": {
1044
- name: "keyword.control.systemverilog"
1172
+ {
1173
+ include: "#constants"
1174
+ },
1175
+ {
1176
+ include: "#operators"
1177
+ },
1178
+ {
1179
+ match: "[a-zA-Z0-9_$]+",
1180
+ name: "meta.index.systemverilog"
1181
+ }
1182
+ ],
1183
+ name: "meta.brackets.select.systemverilog"
1184
+ },
1185
+ attributes: {
1186
+ begin: "(?<!@[ \\t\\n]?)\\(\\*",
1187
+ beginCaptures: {
1188
+ "0": {
1189
+ name: "punctuation.attribute.rounds.begin"
1045
1190
  }
1046
1191
  },
1047
- end: "(})\\s*([a-zA-Z_]\\w*)\\s*;",
1192
+ end: "\\*\\)",
1048
1193
  endCaptures: {
1049
- "1": {
1050
- name: "keyword.operator.other.systemverilog"
1194
+ "0": {
1195
+ name: "punctuation.attribute.rounds.end"
1051
1196
  }
1052
1197
  },
1053
1198
  patterns: [
1054
1199
  {
1055
- include: "#base-grammar"
1200
+ match: "([a-zA-Z_][a-zA-Z0-9_$]*)(?:[ \\t\\n]*(=)[ \\t\\n]*)?",
1201
+ captures: {
1202
+ "1": {
1203
+ name: "keyword.control.systemverilog"
1204
+ },
1205
+ "2": {
1206
+ name: "keyword.operator.assignment.systemverilog"
1207
+ }
1208
+ }
1209
+ },
1210
+ {
1211
+ include: "#constants"
1212
+ },
1213
+ {
1214
+ include: "#strings"
1056
1215
  }
1057
1216
  ],
1058
- name: "meta.struct.anonymous.systemverilog"
1217
+ name: "meta.attribute.systemverilog"
1218
+ },
1219
+ imports: {
1220
+ match: "[ \\t\\n]*\\b(import|export)[ \\t\\n]+([a-zA-Z_][a-zA-Z0-9_$]*|\\*)[ \\t\\n]*(::)[ \\t\\n]*([a-zA-Z_][a-zA-Z0-9_$]*|\\*)[ \\t\\n]*(,|;)",
1221
+ captures: {
1222
+ "1": {
1223
+ name: "keyword.control.systemverilog"
1224
+ },
1225
+ "2": {
1226
+ name: "support.type.systemverilog"
1227
+ },
1228
+ "3": {
1229
+ name: "keyword.operator.scope.systemverilog"
1230
+ },
1231
+ "4": {
1232
+ patterns: [
1233
+ {
1234
+ include: "#operators"
1235
+ },
1236
+ {
1237
+ include: "#identifiers"
1238
+ }
1239
+ ]
1240
+ }
1241
+ },
1242
+ name: "meta.import.systemverilog"
1059
1243
  }
1060
1244
  };
1061
- var scopeName = "source.systemverilog";
1062
- var uuid = "789be04c-8b74-352e-8f37-63d336001277";
1063
1245
  var information_for_contributors = [
1064
- "This file has been converted from https://github.com/mshr-h/vscode-verilog-hdl-support/blob/master/",
1246
+ "This file has been converted from https://github.com/codingame/svlangserver/blob/master/",
1065
1247
  "If you want to provide a fix or improvement, please create a pull request against the original repository.",
1066
1248
  "Once accepted there, we are happy to receive an update request."
1067
1249
  ];
1068
1250
  var systemverilog_tmLanguage = {
1069
- fileTypes: fileTypes,
1070
- hidden: hidden,
1071
1251
  name: name,
1252
+ scopeName: scopeName,
1253
+ fileTypes: fileTypes,
1072
1254
  patterns: patterns,
1073
1255
  repository: repository,
1074
- scopeName: scopeName,
1075
- uuid: uuid,
1076
1256
  information_for_contributors: information_for_contributors
1077
1257
  };
1078
1258
 
1079
- export { systemverilog_tmLanguage as default, fileTypes, hidden, information_for_contributors, name, patterns, repository, scopeName, uuid };
1259
+ export { systemverilog_tmLanguage as default, fileTypes, information_for_contributors, name, patterns, repository, scopeName };