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,1131 @@
1
+ {
2
+ "displayName": "MATLAB",
3
+ "fileTypes": [
4
+ "m"
5
+ ],
6
+ "name": "matlab",
7
+ "patterns": [
8
+ {
9
+ "comment": "This and #all_after_command_dual are split out so #command_dual can be excluded in things like (), {}, []",
10
+ "include": "#all_before_command_dual"
11
+ },
12
+ {
13
+ "include": "#command_dual"
14
+ },
15
+ {
16
+ "include": "#all_after_command_dual"
17
+ }
18
+ ],
19
+ "repository": {
20
+ "all_after_command_dual": {
21
+ "patterns": [
22
+ {
23
+ "include": "#string"
24
+ },
25
+ {
26
+ "include": "#line_continuation"
27
+ },
28
+ {
29
+ "include": "#comments"
30
+ },
31
+ {
32
+ "include": "#conjugate_transpose"
33
+ },
34
+ {
35
+ "include": "#transpose"
36
+ },
37
+ {
38
+ "include": "#constants"
39
+ },
40
+ {
41
+ "include": "#variables"
42
+ },
43
+ {
44
+ "include": "#numbers"
45
+ },
46
+ {
47
+ "include": "#operators"
48
+ }
49
+ ]
50
+ },
51
+ "all_before_command_dual": {
52
+ "patterns": [
53
+ {
54
+ "include": "#classdef"
55
+ },
56
+ {
57
+ "include": "#function"
58
+ },
59
+ {
60
+ "include": "#blocks"
61
+ },
62
+ {
63
+ "include": "#control_statements"
64
+ },
65
+ {
66
+ "include": "#global_persistent"
67
+ },
68
+ {
69
+ "include": "#parens"
70
+ },
71
+ {
72
+ "include": "#square_brackets"
73
+ },
74
+ {
75
+ "include": "#indexing_curly_brackets"
76
+ },
77
+ {
78
+ "include": "#curly_brackets"
79
+ }
80
+ ]
81
+ },
82
+ "blocks": {
83
+ "patterns": [
84
+ {
85
+ "begin": "\\s*(?:^|[\\s,;])(for)\\b",
86
+ "beginCaptures": {
87
+ "1": {
88
+ "name": "keyword.control.for.matlab"
89
+ }
90
+ },
91
+ "end": "\\s*(?:^|[\\s,;])(end)\\b",
92
+ "endCaptures": {
93
+ "1": {
94
+ "name": "keyword.control.end.for.matlab"
95
+ }
96
+ },
97
+ "name": "meta.for.matlab",
98
+ "patterns": [
99
+ {
100
+ "include": "$self"
101
+ }
102
+ ]
103
+ },
104
+ {
105
+ "begin": "\\s*(?:^|[\\s,;])(if)\\b",
106
+ "beginCaptures": {
107
+ "1": {
108
+ "name": "keyword.control.if.matlab"
109
+ }
110
+ },
111
+ "end": "\\s*(?:^|[\\s,;])(end)\\b",
112
+ "endCaptures": {
113
+ "1": {
114
+ "name": "keyword.control.end.if.matlab"
115
+ },
116
+ "2": {
117
+ "patterns": [
118
+ {
119
+ "include": "$self"
120
+ }
121
+ ]
122
+ }
123
+ },
124
+ "name": "meta.if.matlab",
125
+ "patterns": [
126
+ {
127
+ "captures": {
128
+ "2": {
129
+ "name": "keyword.control.elseif.matlab"
130
+ },
131
+ "3": {
132
+ "patterns": [
133
+ {
134
+ "include": "$self"
135
+ }
136
+ ]
137
+ }
138
+ },
139
+ "end": "^",
140
+ "match": "(\\s*)(?:^|[\\s,;])(elseif)\\b(.*)$\\n?",
141
+ "name": "meta.elseif.matlab"
142
+ },
143
+ {
144
+ "captures": {
145
+ "2": {
146
+ "name": "keyword.control.else.matlab"
147
+ },
148
+ "3": {
149
+ "patterns": [
150
+ {
151
+ "include": "$self"
152
+ }
153
+ ]
154
+ }
155
+ },
156
+ "end": "^",
157
+ "match": "(\\s*)(?:^|[\\s,;])(else)\\b(.*)?$\\n?",
158
+ "name": "meta.else.matlab"
159
+ },
160
+ {
161
+ "include": "$self"
162
+ }
163
+ ]
164
+ },
165
+ {
166
+ "begin": "\\s*(?:^|[\\s,;])(parfor)\\b",
167
+ "beginCaptures": {
168
+ "1": {
169
+ "name": "keyword.control.for.matlab"
170
+ }
171
+ },
172
+ "end": "\\s*(?:^|[\\s,;])(end)\\b",
173
+ "endCaptures": {
174
+ "1": {
175
+ "name": "keyword.control.end.for.matlab"
176
+ }
177
+ },
178
+ "name": "meta.parfor.matlab",
179
+ "patterns": [
180
+ {
181
+ "begin": "\\G(?!$)",
182
+ "end": "$\\n?",
183
+ "name": "meta.parfor-quantity.matlab",
184
+ "patterns": [
185
+ {
186
+ "include": "$self"
187
+ }
188
+ ]
189
+ },
190
+ {
191
+ "include": "$self"
192
+ }
193
+ ]
194
+ },
195
+ {
196
+ "begin": "\\s*(?:^|[\\s,;])(spmd)\\b",
197
+ "beginCaptures": {
198
+ "1": {
199
+ "name": "keyword.control.spmd.matlab"
200
+ }
201
+ },
202
+ "end": "\\s*(?:^|[\\s,;])(end)\\b",
203
+ "endCaptures": {
204
+ "1": {
205
+ "name": "keyword.control.end.spmd.matlab"
206
+ }
207
+ },
208
+ "name": "meta.spmd.matlab",
209
+ "patterns": [
210
+ {
211
+ "begin": "\\G(?!$)",
212
+ "end": "$\\n?",
213
+ "name": "meta.spmd-statement.matlab",
214
+ "patterns": [
215
+ {
216
+ "include": "$self"
217
+ }
218
+ ]
219
+ },
220
+ {
221
+ "include": "$self"
222
+ }
223
+ ]
224
+ },
225
+ {
226
+ "begin": "\\s*(?:^|[\\s,;])(switch)\\b",
227
+ "beginCaptures": {
228
+ "1": {
229
+ "name": "keyword.control.switch.matlab"
230
+ }
231
+ },
232
+ "end": "\\s*(?:^|[\\s,;])(end)\\b",
233
+ "endCaptures": {
234
+ "1": {
235
+ "name": "keyword.control.end.switch.matlab"
236
+ }
237
+ },
238
+ "name": "meta.switch.matlab",
239
+ "patterns": [
240
+ {
241
+ "captures": {
242
+ "2": {
243
+ "name": "keyword.control.case.matlab"
244
+ },
245
+ "3": {
246
+ "patterns": [
247
+ {
248
+ "include": "$self"
249
+ }
250
+ ]
251
+ }
252
+ },
253
+ "end": "^",
254
+ "match": "(\\s*)(?:^|[\\s,;])(case)\\b(.*)$\\n?",
255
+ "name": "meta.case.matlab"
256
+ },
257
+ {
258
+ "captures": {
259
+ "2": {
260
+ "name": "keyword.control.otherwise.matlab"
261
+ },
262
+ "3": {
263
+ "patterns": [
264
+ {
265
+ "include": "$self"
266
+ }
267
+ ]
268
+ }
269
+ },
270
+ "end": "^",
271
+ "match": "(\\s*)(?:^|[\\s,;])(otherwise)\\b(.*)?$\\n?",
272
+ "name": "meta.otherwise.matlab"
273
+ },
274
+ {
275
+ "include": "$self"
276
+ }
277
+ ]
278
+ },
279
+ {
280
+ "begin": "\\s*(?:^|[\\s,;])(try)\\b",
281
+ "beginCaptures": {
282
+ "1": {
283
+ "name": "keyword.control.try.matlab"
284
+ }
285
+ },
286
+ "end": "\\s*(?:^|[\\s,;])(end)\\b",
287
+ "endCaptures": {
288
+ "1": {
289
+ "name": "keyword.control.end.try.matlab"
290
+ }
291
+ },
292
+ "name": "meta.try.matlab",
293
+ "patterns": [
294
+ {
295
+ "captures": {
296
+ "2": {
297
+ "name": "keyword.control.catch.matlab"
298
+ },
299
+ "3": {
300
+ "patterns": [
301
+ {
302
+ "include": "$self"
303
+ }
304
+ ]
305
+ }
306
+ },
307
+ "end": "^",
308
+ "match": "(\\s*)(?:^|[\\s,;])(catch)\\b(.*)?$\\n?",
309
+ "name": "meta.catch.matlab"
310
+ },
311
+ {
312
+ "include": "$self"
313
+ }
314
+ ]
315
+ },
316
+ {
317
+ "begin": "\\s*(?:^|[\\s,;])(while)\\b",
318
+ "beginCaptures": {
319
+ "1": {
320
+ "name": "keyword.control.while.matlab"
321
+ }
322
+ },
323
+ "end": "\\s*(?:^|[\\s,;])(end)\\b",
324
+ "endCaptures": {
325
+ "1": {
326
+ "name": "keyword.control.end.while.matlab"
327
+ }
328
+ },
329
+ "name": "meta.while.matlab",
330
+ "patterns": [
331
+ {
332
+ "include": "$self"
333
+ }
334
+ ]
335
+ }
336
+ ]
337
+ },
338
+ "braced_validator_list": {
339
+ "begin": "\\s*({)\\s*",
340
+ "beginCaptures": {
341
+ "1": {
342
+ "name": "storage.type.matlab"
343
+ }
344
+ },
345
+ "comment": "Validator functions. Treated as a recursive group to permit nested brackets, quotes, etc.",
346
+ "end": "(})",
347
+ "endCaptures": {
348
+ "1": {
349
+ "name": "storage.type.matlab"
350
+ }
351
+ },
352
+ "patterns": [
353
+ {
354
+ "include": "#braced_validator_list"
355
+ },
356
+ {
357
+ "include": "#validator_strings"
358
+ },
359
+ {
360
+ "include": "#line_continuation"
361
+ },
362
+ {
363
+ "captures": {
364
+ "1": {
365
+ "name": "storage.type.matlab"
366
+ }
367
+ },
368
+ "match": "([^{}}'\"\\.]+)"
369
+ },
370
+ {
371
+ "match": "\\.",
372
+ "name": "storage.type.matlab"
373
+ }
374
+ ]
375
+ },
376
+ "classdef": {
377
+ "patterns": [
378
+ {
379
+ "begin": "(?x)\n\t\t\t\t\t\t\t(^\\s*)\t\t\t\t\t\t\t\t# Leading whitespace\n\t\t\t\t\t\t\t(classdef)\n\t\t\t\t\t\t\t\\b\\s*\n\t\t\t\t\t\t\t(.*)\n\t\t\t\t\t",
380
+ "beginCaptures": {
381
+ "2": {
382
+ "name": "storage.type.class.matlab"
383
+ },
384
+ "3": {
385
+ "patterns": [
386
+ {
387
+ "captures": {
388
+ "1": {
389
+ "patterns": [
390
+ {
391
+ "match": "[a-zA-Z][a-zA-Z0-9_]*",
392
+ "name": "variable.parameter.class.matlab"
393
+ },
394
+ {
395
+ "begin": "=\\s*",
396
+ "end": ",|(?=\\))",
397
+ "patterns": [
398
+ {
399
+ "match": "true|false",
400
+ "name": "constant.language.boolean.matlab"
401
+ },
402
+ {
403
+ "include": "#string"
404
+ }
405
+ ]
406
+ }
407
+ ]
408
+ },
409
+ "2": {
410
+ "name": "meta.class-declaration.matlab"
411
+ },
412
+ "3": {
413
+ "name": "entity.name.section.class.matlab"
414
+ },
415
+ "4": {
416
+ "name": "keyword.operator.other.matlab"
417
+ },
418
+ "5": {
419
+ "patterns": [
420
+ {
421
+ "match": "[a-zA-Z][a-zA-Z0-9_]*(\\.[a-zA-Z][a-zA-Z0-9_]*)*",
422
+ "name": "entity.other.inherited-class.matlab"
423
+ },
424
+ {
425
+ "match": "&",
426
+ "name": "keyword.operator.other.matlab"
427
+ }
428
+ ]
429
+ },
430
+ "6": {
431
+ "patterns": [
432
+ {
433
+ "include": "$self"
434
+ }
435
+ ]
436
+ }
437
+ },
438
+ "match": "(?x)\n\t\t\t\t\t\t\t\t\t\t(\t\t\t\t\t\t\t\t\t# Optional attributes\n\t\t\t\t\t\t\t\t\t\t\t \\( [^)]* \\)\n\t\t\t\t\t\t\t\t\t\t)?\n\t\t\t\t\t\t\t\t\t\t\\s*\n\t\t\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t\t\t([a-zA-Z][a-zA-Z0-9_]*)\t\t\t# Class name\n\t\t\t\t\t\t\t\t\t\t\t(?:\t\t\t\t\t\t\t\t# Optional inheritance\n\t\t\t\t\t\t\t\t\t\t\t\t\\s*\n\t\t\t\t\t\t\t\t\t\t\t\t(<)\n\t\t\t\t\t\t\t\t\t\t\t\t\\s*\n\t\t\t\t\t\t\t\t\t\t\t\t([^%]*)\n\t\t\t\t\t\t\t\t\t\t\t)?\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\\s*($|(?=(%|...)).*)\n\t\t\t\t\t\t\t\t\t"
439
+ }
440
+ ]
441
+ }
442
+ },
443
+ "end": "\\s*(?:^|[\\s,;])(end)\\b",
444
+ "endCaptures": {
445
+ "1": {
446
+ "name": "keyword.control.end.class.matlab"
447
+ }
448
+ },
449
+ "name": "meta.class.matlab",
450
+ "patterns": [
451
+ {
452
+ "begin": "(?x)\n\t\t\t\t\t\t\t\t\t(^\\s*)\t\t\t\t\t\t\t\t# Leading whitespace\n\t\t\t\t\t\t\t\t\t(properties)\\b([^%]*)\n\t\t\t\t\t\t\t\t\t\\s*\n\t\t\t\t\t\t\t\t\t(\t\t\t\t\t\t\t\t\t# Optional attributes\n\t\t\t\t\t\t\t\t\t\t\\( [^)]* \\)\n\t\t\t\t\t\t\t\t\t)?\n\t\t\t\t\t\t\t\t\t\\s*($|(?=%))\n\t\t\t\t\t\t\t\t",
453
+ "beginCaptures": {
454
+ "2": {
455
+ "name": "keyword.control.properties.matlab"
456
+ },
457
+ "3": {
458
+ "patterns": [
459
+ {
460
+ "match": "[a-zA-Z][a-zA-Z0-9_]*",
461
+ "name": "variable.parameter.properties.matlab"
462
+ },
463
+ {
464
+ "begin": "=\\s*",
465
+ "end": ",|(?=\\))",
466
+ "patterns": [
467
+ {
468
+ "match": "true|false",
469
+ "name": "constant.language.boolean.matlab"
470
+ },
471
+ {
472
+ "match": "public|protected|private",
473
+ "name": "constant.language.access.matlab"
474
+ }
475
+ ]
476
+ }
477
+ ]
478
+ }
479
+ },
480
+ "end": "\\s*(?:^|[\\s,;])(end)\\b",
481
+ "endCaptures": {
482
+ "1": {
483
+ "name": "keyword.control.end.properties.matlab"
484
+ }
485
+ },
486
+ "name": "meta.properties.matlab",
487
+ "patterns": [
488
+ {
489
+ "include": "#validators"
490
+ },
491
+ {
492
+ "include": "$self"
493
+ }
494
+ ]
495
+ },
496
+ {
497
+ "begin": "(?x)\n\t\t\t\t\t\t\t\t\t(^\\s*)\t\t\t\t\t\t\t\t# Leading whitespace\n\t\t\t\t\t\t\t\t\t(methods)\\b([^%]*)\n\t\t\t\t\t\t\t\t\t\\s*\n\t\t\t\t\t\t\t\t\t(\t\t\t\t\t\t\t\t\t# Optional attributes\n\t\t\t\t\t\t\t\t\t\t\\( [^)]* \\)\n\t\t\t\t\t\t\t\t\t)?\n\t\t\t\t\t\t\t\t\t\\s*($|(?=%))\n\t\t\t\t\t\t\t\t",
498
+ "beginCaptures": {
499
+ "2": {
500
+ "name": "keyword.control.methods.matlab"
501
+ },
502
+ "3": {
503
+ "patterns": [
504
+ {
505
+ "match": "[a-zA-Z][a-zA-Z0-9_]*",
506
+ "name": "variable.parameter.methods.matlab"
507
+ },
508
+ {
509
+ "begin": "=\\s*",
510
+ "end": ",|(?=\\))",
511
+ "patterns": [
512
+ {
513
+ "match": "true|false",
514
+ "name": "constant.language.boolean.matlab"
515
+ },
516
+ {
517
+ "match": "public|protected|private",
518
+ "name": "constant.language.access.matlab"
519
+ }
520
+ ]
521
+ }
522
+ ]
523
+ }
524
+ },
525
+ "end": "\\s*(?:^|[\\s,;])(end)\\b",
526
+ "endCaptures": {
527
+ "1": {
528
+ "name": "keyword.control.end.methods.matlab"
529
+ }
530
+ },
531
+ "name": "meta.methods.matlab",
532
+ "patterns": [
533
+ {
534
+ "include": "$self"
535
+ }
536
+ ]
537
+ },
538
+ {
539
+ "begin": "(?x)\n\t\t\t\t\t\t\t\t\t(^\\s*)\t\t\t\t\t\t\t\t# Leading whitespace\n\t\t\t\t\t\t\t\t\t(events)\\b([^%]*)\n\t\t\t\t\t\t\t\t\t\\s*\n\t\t\t\t\t\t\t\t\t(\t\t\t\t\t\t\t\t\t# Optional attributes\n\t\t\t\t\t\t\t\t\t\t\\( [^)]* \\)\n\t\t\t\t\t\t\t\t\t)?\n\t\t\t\t\t\t\t\t\t\\s*($|(?=%))\n\t\t\t\t\t\t\t\t",
540
+ "beginCaptures": {
541
+ "2": {
542
+ "name": "keyword.control.events.matlab"
543
+ },
544
+ "3": {
545
+ "patterns": [
546
+ {
547
+ "match": "[a-zA-Z][a-zA-Z0-9_]*",
548
+ "name": "variable.parameter.events.matlab"
549
+ },
550
+ {
551
+ "begin": "=\\s*",
552
+ "end": ",|(?=\\))",
553
+ "patterns": [
554
+ {
555
+ "match": "true|false",
556
+ "name": "constant.language.boolean.matlab"
557
+ },
558
+ {
559
+ "match": "public|protected|private",
560
+ "name": "constant.language.access.matlab"
561
+ }
562
+ ]
563
+ }
564
+ ]
565
+ }
566
+ },
567
+ "end": "\\s*(?:^|[\\s,;])(end)\\b",
568
+ "endCaptures": {
569
+ "1": {
570
+ "name": "keyword.control.end.events.matlab"
571
+ }
572
+ },
573
+ "name": "meta.events.matlab",
574
+ "patterns": [
575
+ {
576
+ "include": "$self"
577
+ }
578
+ ]
579
+ },
580
+ {
581
+ "begin": "(?x)\n\t\t\t\t\t\t\t\t\t(^\\s*)\t\t\t\t\t\t\t\t# Leading whitespace\n\t\t\t\t\t\t\t\t\t(enumeration)\\b([^%]*)\n\t\t\t\t\t\t\t\t\t\\s*($|(?=%))\n\t\t\t\t\t\t\t\t",
582
+ "beginCaptures": {
583
+ "2": {
584
+ "name": "keyword.control.enumeration.matlab"
585
+ }
586
+ },
587
+ "end": "\\s*(?:^|[\\s,;])(end)\\b",
588
+ "endCaptures": {
589
+ "1": {
590
+ "name": "keyword.control.end.enumeration.matlab"
591
+ }
592
+ },
593
+ "name": "meta.enumeration.matlab",
594
+ "patterns": [
595
+ {
596
+ "include": "$self"
597
+ }
598
+ ]
599
+ },
600
+ {
601
+ "include": "$self"
602
+ }
603
+ ]
604
+ }
605
+ ]
606
+ },
607
+ "command_dual": {
608
+ "captures": {
609
+ "1": {
610
+ "name": "string.interpolated.matlab"
611
+ },
612
+ "2": {
613
+ "name": "variable.other.command.matlab"
614
+ },
615
+ "28": {
616
+ "name": "comment.line.percentage.matlab"
617
+ }
618
+ },
619
+ "comment": " 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1516 17 18 19 20 21 22 23 24 25 26 27 28",
620
+ "match": "^\\s*((?# A> )([b-df-hk-moq-zA-HJ-MO-Z]\\w*|a|an|a([A-Za-mo-z0-9_]\\w*|n[A-Za-rt-z0-9_]\\w*|ns\\w+)|e|ep|e([A-Za-oq-z0-9_]\\w*|p[A-Za-rt-z0-9_]\\w*|ps\\w+)|in|i([A-Za-mo-z0-9_]\\w*|n[A-Za-eg-z0-9_]\\w*|nf\\w+)|I|In|I([A-Za-mo-z0-9_]\\w*|n[A-Za-eg-z0-9_]\\w*|nf\\w+)|j\\w+|N|Na|N([A-Zb-z0-9_]\\w*|a[A-MO-Za-z0-9_]\\w*|aN\\w+)|n|na|nar|narg|nargi|nargo|nargou|n([A-Zb-z0-9_]\\w*|a([A-Za-mo-qs-z0-9_]\\w*|n\\w+|r([A-Za-fh-z0-9_]\\w*|g([A-Za-hj-nq-z0-9_]\\w*|i([A-Za-mo-z0-9_]\\w*|n\\w+)|o([A-Za-tv-z0-9_]\\w*|u([A-Za-su-z]\\w*|t\\w+))))))|p|p[A-Za-hj-z0-9_]\\w*|pi\\w+)(?# <A )\\s+(((?# B> )([^\\s;,%()=.{&|~<>:+\\-*/\\\\@^'\"]|(?=')|(?=\"))(?# <B )|(?# C> )(\\.\\^|\\.\\*|\\./|\\.\\\\|\\.'|\\.\\(|&&|==|\\|\\||&(?=[^&])|\\|(?=[^\\|])|~=|<=|>=|~(?!=)|<(?!=)|>(?!=)|:|\\+|-|\\*|/|\\\\|@|\\^)(?# <C )(?# D> )([^\\s]|\\s*(?=%)|\\s+$|\\s+(,|;|\\)|}|\\]|&|\\||<|>|=|:|\\*|/|\\\\|\\^|@|(\\.[^\\d.]|\\.\\.[^.])))(?# <D )|(?# E> )(\\.[^^*/\\\\'(\\sA-Za-z])(?# <E ))(?# F> )([^%]|'[^']*'|\"[^\"]*\")*(?# <F )|(?# X> )(\\.(?=\\s)|\\.[A-Za-z]|(?={))(?# <X )(?# Y> )([^(=\\'\"%]|==|'[^']*'|\"[^\"]*\"|\\(|\\([^)%]*\\)|\\[|\\[[^\\]%]*\\]|{|{[^}%]*})*(\\.\\.\\.[^%]*)?((?=%)|$)(?# <Y )))(%.*)?$"
621
+ },
622
+ "comment_block": {
623
+ "begin": "(^[\\s]*)%\\{[^\\n\\S]*+\\n",
624
+ "beginCaptures": {
625
+ "1": {
626
+ "name": "punctuation.definition.comment.matlab"
627
+ }
628
+ },
629
+ "end": "^[\\s]*%\\}[^\\n\\S]*+(?:\\n|$)",
630
+ "name": "comment.block.percentage.matlab",
631
+ "patterns": [
632
+ {
633
+ "include": "#comment_block"
634
+ },
635
+ {
636
+ "match": "^[^\\n]*\\n"
637
+ }
638
+ ]
639
+ },
640
+ "comments": {
641
+ "patterns": [
642
+ {
643
+ "begin": "(^[ \\t]+)?(?=%%\\s)",
644
+ "beginCaptures": {
645
+ "1": {
646
+ "name": "punctuation.whitespace.comment.leading.matlab"
647
+ }
648
+ },
649
+ "end": "(?!\\G)",
650
+ "patterns": [
651
+ {
652
+ "begin": "%%",
653
+ "beginCaptures": {
654
+ "0": {
655
+ "name": "punctuation.definition.comment.matlab"
656
+ }
657
+ },
658
+ "end": "\\n",
659
+ "name": "comment.line.double-percentage.matlab",
660
+ "patterns": [
661
+ {
662
+ "begin": "\\G[^\\S\\n]*(?![\\n\\s])",
663
+ "contentName": "meta.cell.matlab",
664
+ "end": "(?=\\n)"
665
+ }
666
+ ]
667
+ }
668
+ ]
669
+ },
670
+ {
671
+ "include": "#comment_block"
672
+ },
673
+ {
674
+ "begin": "(^[ \\t]+)?(?=%)",
675
+ "beginCaptures": {
676
+ "1": {
677
+ "name": "punctuation.whitespace.comment.leading.matlab"
678
+ }
679
+ },
680
+ "end": "(?!\\G)",
681
+ "patterns": [
682
+ {
683
+ "begin": "%",
684
+ "beginCaptures": {
685
+ "0": {
686
+ "name": "punctuation.definition.comment.matlab"
687
+ }
688
+ },
689
+ "end": "\\n",
690
+ "name": "comment.line.percentage.matlab"
691
+ }
692
+ ]
693
+ }
694
+ ]
695
+ },
696
+ "conjugate_transpose": {
697
+ "match": "((?<=[^\\s])|(?<=\\])|(?<=\\))|(?<=\\}))'",
698
+ "name": "keyword.operator.transpose.matlab"
699
+ },
700
+ "constants": {
701
+ "comment": "MATLAB Constants",
702
+ "match": "(?<!\\.)\\b(eps|false|Inf|inf|intmax|intmin|namelengthmax|NaN|nan|on|off|realmax|realmin|true|pi)\\b",
703
+ "name": "constant.language.matlab"
704
+ },
705
+ "control_statements": {
706
+ "captures": {
707
+ "1": {
708
+ "name": "keyword.control.matlab"
709
+ }
710
+ },
711
+ "match": "\\s*(?:^|[\\s,;])(break|continue|return)\\b",
712
+ "name": "meta.control.matlab"
713
+ },
714
+ "curly_brackets": {
715
+ "begin": "\\{",
716
+ "comment": "We don't include $self here to avoid matching command syntax inside (), [], {}",
717
+ "end": "\\}",
718
+ "patterns": [
719
+ {
720
+ "include": "#end_in_parens"
721
+ },
722
+ {
723
+ "include": "#all_before_command_dual"
724
+ },
725
+ {
726
+ "include": "#all_after_command_dual"
727
+ },
728
+ {
729
+ "include": "#end_in_parens"
730
+ },
731
+ {
732
+ "comment": "These block keywords pick up any such missed keywords when the block matching for things like (), if-end, etc. don't work. Useful for when someone has partially written",
733
+ "include": "#block_keywords"
734
+ }
735
+ ]
736
+ },
737
+ "end_in_parens": {
738
+ "comment": "end as operator symbol",
739
+ "match": "\\bend\\b",
740
+ "name": "keyword.operator.symbols.matlab"
741
+ },
742
+ "function": {
743
+ "patterns": [
744
+ {
745
+ "begin": "(?x)\n\t\t\t\t\t\t\t(^\\s*)\t\t\t\t\t\t\t\t\t\t\t\t# Leading whitespace\n\t\t\t\t\t\t\t(function)\n\t\t\t\t\t\t\t\\s+\n\t\t\t\t\t\t\t(?:\t\t\t\t\t\t\t\t\t\t\t\t\t# Optional\n\t\t\t\t\t\t\t\t(?:\n\t\t\t\t\t\t\t\t\t(\\[) ([^\\]]*) (\\])\n\t\t\t\t\t\t\t\t | ([a-zA-Z][a-zA-Z0-9_]*)\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\\s* = \\s*\n\t\t\t\t\t\t\t)?\n\t\t\t\t\t\t\t([a-zA-Z][a-zA-Z0-9_]*(\\.[a-zA-Z][a-zA-Z0-9_]*)*)\t# Function name\n\t\t\t\t\t\t\t\\s*\t\t\t\t\t\t\t\t\t\t\t\t\t# Trailing space\n\t\t\t\t\t\t",
746
+ "beginCaptures": {
747
+ "2": {
748
+ "name": "storage.type.function.matlab"
749
+ },
750
+ "3": {
751
+ "name": "punctuation.definition.arguments.begin.matlab"
752
+ },
753
+ "4": {
754
+ "patterns": [
755
+ {
756
+ "match": "\\w+",
757
+ "name": "variable.parameter.output.matlab"
758
+ }
759
+ ]
760
+ },
761
+ "5": {
762
+ "name": "punctuation.definition.arguments.end.matlab"
763
+ },
764
+ "6": {
765
+ "name": "variable.parameter.output.function.matlab"
766
+ },
767
+ "7": {
768
+ "name": "entity.name.function.matlab"
769
+ }
770
+ },
771
+ "end": "\\s*(?:^|[\\s,;])(end)\\b(\\s*\\n)?",
772
+ "endCaptures": {
773
+ "1": {
774
+ "name": "keyword.control.end.function.matlab"
775
+ }
776
+ },
777
+ "name": "meta.function.matlab",
778
+ "patterns": [
779
+ {
780
+ "begin": "\\G\\(",
781
+ "end": "\\)",
782
+ "name": "meta.arguments.function.matlab",
783
+ "patterns": [
784
+ {
785
+ "include": "#line_continuation"
786
+ },
787
+ {
788
+ "match": "\\w+",
789
+ "name": "variable.parameter.input.matlab"
790
+ }
791
+ ]
792
+ },
793
+ {
794
+ "begin": "(?x)\n\t\t\t\t\t\t\t\t\t(^\\s*)\t\t\t\t\t\t\t\t# Leading whitespace\n\t\t\t\t\t\t\t\t\t(arguments)\\b([^%]*)\n\t\t\t\t\t\t\t\t\t\\s*\n\t\t\t\t\t\t\t\t\t(\t\t\t\t\t\t\t\t\t# Optional attributes\n\t\t\t\t\t\t\t\t\t\t\\( [^)]* \\)\n\t\t\t\t\t\t\t\t\t)?\n\t\t\t\t\t\t\t\t\t\\s*($|(?=%))\n\t\t\t\t\t\t\t\t",
795
+ "beginCaptures": {
796
+ "2": {
797
+ "name": "keyword.control.arguments.matlab"
798
+ },
799
+ "3": {
800
+ "patterns": [
801
+ {
802
+ "match": "[a-zA-Z][a-zA-Z0-9_]*",
803
+ "name": "variable.parameter.arguments.matlab"
804
+ }
805
+ ]
806
+ }
807
+ },
808
+ "end": "\\s*(?:^|[\\s,;])(end)\\b",
809
+ "endCaptures": {
810
+ "1": {
811
+ "name": "keyword.control.end.arguments.matlab"
812
+ }
813
+ },
814
+ "name": "meta.arguments.matlab",
815
+ "patterns": [
816
+ {
817
+ "include": "#validators"
818
+ },
819
+ {
820
+ "include": "$self"
821
+ }
822
+ ]
823
+ },
824
+ {
825
+ "include": "$self"
826
+ }
827
+ ]
828
+ }
829
+ ]
830
+ },
831
+ "global_persistent": {
832
+ "captures": {
833
+ "1": {
834
+ "name": "keyword.control.globalpersistent.matlab"
835
+ }
836
+ },
837
+ "match": "^\\s*(global|persistent)\\b",
838
+ "name": "meta.globalpersistent.matlab"
839
+ },
840
+ "indexing_curly_brackets": {
841
+ "Comment": "Match identifier{idx, idx, } and stop at newline without ... This helps with partially written code like x{idx ",
842
+ "begin": "([a-zA-Z][a-zA-Z0-9_\\.]*\\s*)\\{",
843
+ "beginCaptures": {
844
+ "1": {
845
+ "patterns": [
846
+ {
847
+ "include": "$self"
848
+ }
849
+ ]
850
+ }
851
+ },
852
+ "comment": "We don't include $self here to avoid matching command syntax inside (), [], {}",
853
+ "end": "(\\}|(?<!\\.\\.\\.).\\n)",
854
+ "patterns": [
855
+ {
856
+ "include": "#end_in_parens"
857
+ },
858
+ {
859
+ "include": "#all_before_command_dual"
860
+ },
861
+ {
862
+ "include": "#all_after_command_dual"
863
+ },
864
+ {
865
+ "include": "#end_in_parens"
866
+ },
867
+ {
868
+ "comment": "These block keywords pick up any such missed keywords when the block matching for things like (), if-end, etc. don't work. Useful for when someone has partially written",
869
+ "include": "#block_keywords"
870
+ }
871
+ ]
872
+ },
873
+ "line_continuation": {
874
+ "captures": {
875
+ "1": {
876
+ "name": "keyword.operator.symbols.matlab"
877
+ },
878
+ "2": {
879
+ "name": "comment.line.continuation.matlab"
880
+ }
881
+ },
882
+ "comment": "Line continuations",
883
+ "match": "(\\.\\.\\.)(.*)$",
884
+ "name": "meta.linecontinuation.matlab"
885
+ },
886
+ "numbers": {
887
+ "comment": "Valid numbers: 1, .1, 1.1, .1e1, 1.1e1, 1e1, 1i, 1j, 1e2j",
888
+ "match": "(?<=[\\s\\-\\+\\*\\/\\\\=:\\[\\(\\{,]|^)\\d*\\.?\\d+([eE][+-]?\\d)?([0-9&&[^\\.]])*(i|j)?\\b",
889
+ "name": "constant.numeric.matlab"
890
+ },
891
+ "operators": {
892
+ "comment": "Operator symbols",
893
+ "match": "(?<=\\s)(==|~=|>|>=|<|<=|&|&&|:|\\||\\|\\||\\+|-|\\*|\\.\\*|/|\\./|\\\\|\\.\\\\|\\^|\\.\\^)(?=\\s)",
894
+ "name": "keyword.operator.symbols.matlab"
895
+ },
896
+ "parens": {
897
+ "begin": "\\(",
898
+ "comment": "We don't include $self here to avoid matching command syntax inside (), [], {}",
899
+ "end": "(\\)|(?<!\\.\\.\\.).\\n)",
900
+ "patterns": [
901
+ {
902
+ "include": "#end_in_parens"
903
+ },
904
+ {
905
+ "include": "#all_before_command_dual"
906
+ },
907
+ {
908
+ "include": "#all_after_command_dual"
909
+ },
910
+ {
911
+ "comment": "These block keywords pick up any such missed keywords when the block matching for things like (), if-end, etc. don't work. Useful for when someone has partially written",
912
+ "include": "#block_keywords"
913
+ }
914
+ ]
915
+ },
916
+ "square_brackets": {
917
+ "begin": "\\[",
918
+ "comment": "We don't include $self here to avoid matching command syntax inside (), [], {}",
919
+ "end": "\\]",
920
+ "patterns": [
921
+ {
922
+ "include": "#all_before_command_dual"
923
+ },
924
+ {
925
+ "include": "#all_after_command_dual"
926
+ },
927
+ {
928
+ "comment": "These block keywords pick up any such missed keywords when the block matching for things like (), if-end, etc. don't work. Useful for when someone has partially written",
929
+ "include": "#block_keywords"
930
+ }
931
+ ]
932
+ },
933
+ "string": {
934
+ "patterns": [
935
+ {
936
+ "captures": {
937
+ "1": {
938
+ "name": "string.interpolated.matlab"
939
+ },
940
+ "2": {
941
+ "name": "punctuation.definition.string.begin.matlab"
942
+ }
943
+ },
944
+ "comment": "Shell command",
945
+ "match": "^\\s*((!).*$\\n?)"
946
+ },
947
+ {
948
+ "begin": "((?<=(\\[|\\(|\\{|=|\\s|;|:|,|~|<|>|&|\\||-|\\+|\\*|/|\\\\|\\.|\\^))|^)'",
949
+ "beginCaptures": {
950
+ "0": {
951
+ "name": "punctuation.definition.string.begin.matlab"
952
+ }
953
+ },
954
+ "comment": "Character vector literal (single-quoted)",
955
+ "end": "'(?=(\\[|\\(|\\{|\\]|\\)|\\}|=|~|<|>|&|\\||-|\\+|\\*|/|\\\\|\\.|\\^|\\s|;|:|,))",
956
+ "endCaptures": {
957
+ "0": {
958
+ "name": "punctuation.definition.string.end.matlab"
959
+ }
960
+ },
961
+ "name": "string.quoted.single.matlab",
962
+ "patterns": [
963
+ {
964
+ "match": "''",
965
+ "name": "constant.character.escape.matlab"
966
+ },
967
+ {
968
+ "match": "'(?=.)",
969
+ "name": "invalid.illegal.unescaped-quote.matlab"
970
+ },
971
+ {
972
+ "comment": "Operator symbols",
973
+ "match": "((\\%([\\+\\-0]?\\d{0,3}(\\.\\d{1,3})?)(c|d|e|E|f|g|G|s|((b|t)?(o|u|x|X))))|\\%\\%|\\\\(b|f|n|r|t|\\\\))",
974
+ "name": "constant.character.escape.matlab"
975
+ }
976
+ ]
977
+ },
978
+ {
979
+ "begin": "((?<=(\\[|\\(|\\{|=|\\s|;|:|,|~|<|>|&|\\||-|\\+|\\*|/|\\\\|\\.|\\^))|^)\"",
980
+ "beginCaptures": {
981
+ "0": {
982
+ "name": "punctuation.definition.string.begin.matlab"
983
+ }
984
+ },
985
+ "comment": "String literal (double-quoted)",
986
+ "end": "\"(?=(\\[|\\(|\\{|\\]|\\)|\\}|=|~|<|>|&|\\||-|\\+|\\*|/|\\\\|\\.|\\^|\\||\\s|;|:|,))",
987
+ "endCaptures": {
988
+ "0": {
989
+ "name": "punctuation.definition.string.end.matlab"
990
+ }
991
+ },
992
+ "name": "string.quoted.double.matlab",
993
+ "patterns": [
994
+ {
995
+ "match": "\"\"",
996
+ "name": "constant.character.escape.matlab"
997
+ },
998
+ {
999
+ "match": "\"(?=.)",
1000
+ "name": "invalid.illegal.unescaped-quote.matlab"
1001
+ }
1002
+ ]
1003
+ }
1004
+ ]
1005
+ },
1006
+ "transpose": {
1007
+ "match": "\\.'",
1008
+ "name": "keyword.operator.transpose.matlab"
1009
+ },
1010
+ "validator_strings": {
1011
+ "comment": "Simplified string patterns nested inside validator functions which don't change scopes of matches.",
1012
+ "patterns": [
1013
+ {
1014
+ "patterns": [
1015
+ {
1016
+ "begin": "((?<=(\\[|\\(|\\{|=|\\s|;|:|,|~|<|>|&|\\||-|\\+|\\*|/|\\\\|\\.|\\^))|^)'",
1017
+ "comment": "Character vector literal (single-quoted)",
1018
+ "end": "'(?=(\\[|\\(|\\{|\\]|\\)|\\}|=|~|<|>|&|\\||-|\\+|\\*|/|\\\\|\\.|\\^|\\s|;|:|,))",
1019
+ "name": "storage.type.matlab",
1020
+ "patterns": [
1021
+ {
1022
+ "match": "''"
1023
+ },
1024
+ {
1025
+ "match": "'(?=.)"
1026
+ },
1027
+ {
1028
+ "match": "([^']+)"
1029
+ }
1030
+ ]
1031
+ },
1032
+ {
1033
+ "begin": "((?<=(\\[|\\(|\\{|=|\\s|;|:|,|~|<|>|&|\\||-|\\+|\\*|/|\\\\|\\.|\\^))|^)\"",
1034
+ "comment": "String literal (double-quoted)",
1035
+ "end": "\"(?=(\\[|\\(|\\{|\\]|\\)|\\}|=|~|<|>|&|\\||-|\\+|\\*|/|\\\\|\\.|\\^|\\||\\s|;|:|,))",
1036
+ "name": "storage.type.matlab",
1037
+ "patterns": [
1038
+ {
1039
+ "match": "\"\""
1040
+ },
1041
+ {
1042
+ "match": "\"(?=.)"
1043
+ },
1044
+ {
1045
+ "match": "[^\"]+"
1046
+ }
1047
+ ]
1048
+ }
1049
+ ]
1050
+ }
1051
+ ]
1052
+ },
1053
+ "validators": {
1054
+ "begin": "\\s*[;]?\\s*([a-zA-Z][a-zA-Z0-9_\\.\\?]*)",
1055
+ "comment": "Property and argument validation. Match an identifier allowing . and ?.",
1056
+ "end": "([;\\n%=].*)",
1057
+ "endCaptures": {
1058
+ "1": {
1059
+ "patterns": [
1060
+ {
1061
+ "captures": {
1062
+ "1": {
1063
+ "patterns": [
1064
+ {
1065
+ "include": "$self"
1066
+ }
1067
+ ]
1068
+ }
1069
+ },
1070
+ "comment": "Match comments",
1071
+ "match": "([%].*)"
1072
+ },
1073
+ {
1074
+ "captures": {
1075
+ "1": {
1076
+ "patterns": [
1077
+ {
1078
+ "include": "$self"
1079
+ }
1080
+ ]
1081
+ }
1082
+ },
1083
+ "comment": "Handle things like arg = val; nextArg",
1084
+ "match": "(=[^;]*)"
1085
+ },
1086
+ {
1087
+ "captures": {
1088
+ "1": {
1089
+ "patterns": [
1090
+ {
1091
+ "include": "#validators"
1092
+ }
1093
+ ]
1094
+ }
1095
+ },
1096
+ "comment": "End of property/argument patterns which start a new property/argument. Look for beginning of identifier after semicolon. Otherwise treat as regular code.",
1097
+ "match": "([\\n;]\\s*[a-zA-Z].*)"
1098
+ },
1099
+ {
1100
+ "include": "$self"
1101
+ }
1102
+ ]
1103
+ }
1104
+ },
1105
+ "patterns": [
1106
+ {
1107
+ "include": "#line_continuation"
1108
+ },
1109
+ {
1110
+ "comment": "Size declaration",
1111
+ "match": "\\s*(\\([^\\)]*\\))",
1112
+ "name": "storage.type.matlab"
1113
+ },
1114
+ {
1115
+ "comment": "Type declaration",
1116
+ "match": "([a-zA-Z][a-zA-Z0-9_\\.]*)",
1117
+ "name": "storage.type.matlab"
1118
+ },
1119
+ {
1120
+ "include": "#braced_validator_list"
1121
+ }
1122
+ ]
1123
+ },
1124
+ "variables": {
1125
+ "comment": "MATLAB variables",
1126
+ "match": "(?<!\\.)\\b(nargin|nargout|varargin|varargout)\\b",
1127
+ "name": "variable.other.function.matlab"
1128
+ }
1129
+ },
1130
+ "scopeName": "source.matlab"
1131
+ }