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,3874 @@
1
+ {
2
+ "displayName": "Ada",
3
+ "name": "ada",
4
+ "patterns": [
5
+ {
6
+ "include": "#library_unit"
7
+ },
8
+ {
9
+ "include": "#comment"
10
+ },
11
+ {
12
+ "include": "#use_clause"
13
+ },
14
+ {
15
+ "include": "#with_clause"
16
+ },
17
+ {
18
+ "include": "#pragma"
19
+ },
20
+ {
21
+ "include": "#keyword"
22
+ }
23
+ ],
24
+ "repository": {
25
+ "abort_statement": {
26
+ "begin": "(?i)\\babort\\b",
27
+ "beginCaptures": {
28
+ "0": {
29
+ "name": "keyword.control.ada"
30
+ }
31
+ },
32
+ "end": ";",
33
+ "endCaptures": {
34
+ "0": {
35
+ "name": "punctuation.ada"
36
+ }
37
+ },
38
+ "name": "meta.statement.abort.ada",
39
+ "patterns": [
40
+ {
41
+ "match": ",",
42
+ "name": "punctuation.ada"
43
+ },
44
+ {
45
+ "match": "\\b(\\w|\\d|\\.|_)+\\b",
46
+ "name": "entity.name.task.ada"
47
+ }
48
+ ]
49
+ },
50
+ "accept_statement": {
51
+ "begin": "(?i)\\b(accept)\\s+((?:\\w|\\d|\\.|_)+)\\b",
52
+ "beginCaptures": {
53
+ "1": {
54
+ "name": "keyword.control.ada"
55
+ },
56
+ "2": {
57
+ "name": "entity.name.accept.ada"
58
+ }
59
+ },
60
+ "end": "(?i)(?:\\b(end)\\s*(\\s\\2)?\\s*)?(;)",
61
+ "endCaptures": {
62
+ "1": {
63
+ "name": "keyword.control.ada"
64
+ },
65
+ "2": {
66
+ "name": "entity.name.accept.ada"
67
+ },
68
+ "3": {
69
+ "name": "punctuation.ada"
70
+ }
71
+ },
72
+ "name": "meta.statement.accept.ada",
73
+ "patterns": [
74
+ {
75
+ "begin": "(?i)\\bdo\\b",
76
+ "beginCaptures": {
77
+ "0": {
78
+ "name": "keyword.control.ada"
79
+ }
80
+ },
81
+ "end": "(?i)\\b(?=end)\\b",
82
+ "patterns": [
83
+ {
84
+ "include": "#statement"
85
+ }
86
+ ]
87
+ },
88
+ {
89
+ "include": "#parameter_profile"
90
+ }
91
+ ]
92
+ },
93
+ "access_definition": {
94
+ "captures": {
95
+ "1": {
96
+ "name": "storage.visibility.ada"
97
+ },
98
+ "2": {
99
+ "name": "storage.visibility.ada"
100
+ },
101
+ "3": {
102
+ "name": "storage.modifier.ada"
103
+ },
104
+ "4": {
105
+ "name": "entity.name.type.ada"
106
+ }
107
+ },
108
+ "match": "(?i)(not\\s+null\\s+)?(access)\\s+(constant\\s+)?((?:\\w|\\d|\\.|_)+)\\b",
109
+ "name": "meta.declaration.access.definition.ada"
110
+ },
111
+ "access_type_definition": {
112
+ "begin": "(?i)\\b(not\\s+null\\s+)?(access)\\b",
113
+ "beginCaptures": {
114
+ "1": {
115
+ "name": "storage.visibility.ada"
116
+ },
117
+ "2": {
118
+ "name": "storage.visibility.ada"
119
+ }
120
+ },
121
+ "end": "(?i)(?=(with|;))",
122
+ "name": "meta.declaration.type.definition.access.ada",
123
+ "patterns": [
124
+ {
125
+ "match": "(?i)\\ball\\b",
126
+ "name": "storage.visibility.ada"
127
+ },
128
+ {
129
+ "match": "(?i)\\bconstant\\b",
130
+ "name": "storage.modifier.ada"
131
+ },
132
+ {
133
+ "include": "#subtype_mark"
134
+ }
135
+ ]
136
+ },
137
+ "actual_parameter_part": {
138
+ "begin": "\\(",
139
+ "captures": {
140
+ "0": {
141
+ "name": "punctuation.ada"
142
+ }
143
+ },
144
+ "end": "\\)",
145
+ "patterns": [
146
+ {
147
+ "match": ",",
148
+ "name": "punctuation.ada"
149
+ },
150
+ {
151
+ "include": "#parameter_association"
152
+ }
153
+ ]
154
+ },
155
+ "adding_operator": {
156
+ "match": "(\\+|-|\\&)",
157
+ "name": "keyword.operator.adding.ada"
158
+ },
159
+ "array_aggregate": {
160
+ "begin": "\\(",
161
+ "captures": {
162
+ "0": {
163
+ "name": "punctuation.ada"
164
+ }
165
+ },
166
+ "end": "\\)",
167
+ "name": "meta.definition.array.aggregate.ada",
168
+ "patterns": [
169
+ {
170
+ "match": ",",
171
+ "name": "punctuation.ada"
172
+ },
173
+ {
174
+ "include": "#positional_array_aggregate"
175
+ },
176
+ {
177
+ "include": "#array_component_association"
178
+ }
179
+ ]
180
+ },
181
+ "array_component_association": {
182
+ "captures": {
183
+ "1": {
184
+ "name": "variable.name.ada"
185
+ },
186
+ "2": {
187
+ "name": "keyword.other.ada"
188
+ },
189
+ "3": {
190
+ "patterns": [
191
+ {
192
+ "match": "<>",
193
+ "name": "keyword.modifier.unknown.ada"
194
+ },
195
+ {
196
+ "include": "#expression"
197
+ }
198
+ ]
199
+ }
200
+ },
201
+ "match": "(?i)\\b([^(=>)]*)\\s*(=>)\\s*([^,\\)]+)",
202
+ "name": "meta.definition.array.aggregate.component.ada"
203
+ },
204
+ "array_dimensions": {
205
+ "begin": "\\(",
206
+ "captures": {
207
+ "0": {
208
+ "name": "punctuation.ada"
209
+ }
210
+ },
211
+ "end": "\\)",
212
+ "name": "meta.declaration.type.definition.array.dimensions.ada",
213
+ "patterns": [
214
+ {
215
+ "match": ",",
216
+ "name": "punctuation.ada"
217
+ },
218
+ {
219
+ "match": "(?i)\\brange\\b",
220
+ "name": "storage.modifier.ada"
221
+ },
222
+ {
223
+ "match": "<>",
224
+ "name": "keyword.modifier.unknown.ada"
225
+ },
226
+ {
227
+ "match": "\\.\\.",
228
+ "name": "keyword.ada"
229
+ },
230
+ {
231
+ "include": "#expression"
232
+ },
233
+ {
234
+ "patterns": [
235
+ {
236
+ "include": "#subtype_mark"
237
+ }
238
+ ]
239
+ }
240
+ ]
241
+ },
242
+ "array_type_definition": {
243
+ "begin": "(?i)\\barray\\b",
244
+ "beginCaptures": {
245
+ "0": {
246
+ "name": "storage.modifier.ada"
247
+ }
248
+ },
249
+ "end": "(?i)(?=(with|;))",
250
+ "name": "meta.declaration.type.definition.array.ada",
251
+ "patterns": [
252
+ {
253
+ "include": "#array_dimensions"
254
+ },
255
+ {
256
+ "match": "(?i)\\bof\\b",
257
+ "name": "storage.modifier.ada"
258
+ },
259
+ {
260
+ "match": "(?i)\\baliased\\b",
261
+ "name": "storage.visibility.ada"
262
+ },
263
+ {
264
+ "include": "#access_definition"
265
+ },
266
+ {
267
+ "include": "#subtype_mark"
268
+ }
269
+ ]
270
+ },
271
+ "aspect_clause": {
272
+ "begin": "(?i)\\b(for)\\b",
273
+ "beginCaptures": {
274
+ "1": {
275
+ "name": "keyword.ada"
276
+ },
277
+ "2": {
278
+ "patterns": [
279
+ {
280
+ "include": "#subtype_mark"
281
+ }
282
+ ]
283
+ },
284
+ "3": {
285
+ "name": "punctuation.ada"
286
+ },
287
+ "5": {
288
+ "name": "keyword.ada"
289
+ }
290
+ },
291
+ "end": ";",
292
+ "endCaptures": {
293
+ "0": {
294
+ "name": "punctuation.ada"
295
+ }
296
+ },
297
+ "name": "meta.aspect.clause.ada",
298
+ "patterns": [
299
+ {
300
+ "begin": "(?i)\\buse\\b",
301
+ "beginCaptures": {
302
+ "0": {
303
+ "name": "keyword.ada"
304
+ }
305
+ },
306
+ "end": "(?=;)",
307
+ "endCaptures": {
308
+ "0": {
309
+ "name": "punctuation.ada"
310
+ }
311
+ },
312
+ "patterns": [
313
+ {
314
+ "include": "#record_representation_clause"
315
+ },
316
+ {
317
+ "include": "#array_aggregate"
318
+ },
319
+ {
320
+ "include": "#expression"
321
+ }
322
+ ]
323
+ },
324
+ {
325
+ "begin": "(?i)(?<=for)",
326
+ "captures": {
327
+ "0": {
328
+ "name": "keyword.ada"
329
+ }
330
+ },
331
+ "end": "(?i)(?=use)",
332
+ "patterns": [
333
+ {
334
+ "captures": {
335
+ "1": {
336
+ "patterns": [
337
+ {
338
+ "include": "#subtype_mark"
339
+ }
340
+ ]
341
+ },
342
+ "2": {
343
+ "patterns": [
344
+ {
345
+ "include": "#attribute"
346
+ }
347
+ ]
348
+ }
349
+ },
350
+ "match": "((?:\\w|\\d|_)+)('((?:\\w|\\d|_)+))?"
351
+ }
352
+ ]
353
+ }
354
+ ]
355
+ },
356
+ "aspect_definition": {
357
+ "begin": "=>",
358
+ "beginCaptures": {
359
+ "0": {
360
+ "name": "keyword.other.ada"
361
+ }
362
+ },
363
+ "end": "(?i)(?=(,|;|\\bis\\b))",
364
+ "name": "meta.aspect.definition.ada",
365
+ "patterns": [
366
+ {
367
+ "include": "#expression"
368
+ }
369
+ ]
370
+ },
371
+ "aspect_mark": {
372
+ "captures": {
373
+ "1": {
374
+ "name": "keyword.control.directive.ada"
375
+ },
376
+ "2": {
377
+ "name": "punctuation.ada"
378
+ },
379
+ "3": {
380
+ "name": "entity.other.attribute-name.ada"
381
+ }
382
+ },
383
+ "match": "(?i)\\b((?:\\w|\\d|\\.|_)+)(?:(')(class))?\\b",
384
+ "name": "meta.aspect.mark.ada"
385
+ },
386
+ "aspect_specification": {
387
+ "begin": "(?i)\\bwith\\b",
388
+ "beginCaptures": {
389
+ "0": {
390
+ "name": "keyword.ada"
391
+ }
392
+ },
393
+ "end": "(?i)(?=(;|\\bis\\b))",
394
+ "name": "meta.aspect.specification.ada",
395
+ "patterns": [
396
+ {
397
+ "match": ",",
398
+ "name": "punctuation.ada"
399
+ },
400
+ {
401
+ "captures": {
402
+ "1": {
403
+ "name": "storage.modifier.ada"
404
+ },
405
+ "2": {
406
+ "name": "storage.modifier.ada"
407
+ }
408
+ },
409
+ "match": "(?i)\\b(null)\\s+(record)\\b"
410
+ },
411
+ {
412
+ "begin": "(?i)\\brecord\\b",
413
+ "beginCaptures": {
414
+ "0": {
415
+ "name": "storage.modifier.ada"
416
+ }
417
+ },
418
+ "end": "(?i)\\b(end)\\s+(record)\\b",
419
+ "endCaptures": {
420
+ "1": {
421
+ "name": "keyword.ada"
422
+ },
423
+ "2": {
424
+ "name": "storage.modifier.ada"
425
+ }
426
+ },
427
+ "patterns": [
428
+ {
429
+ "include": "#component_item"
430
+ }
431
+ ]
432
+ },
433
+ {
434
+ "captures": {
435
+ "0": {
436
+ "name": "storage.visibility.ada"
437
+ }
438
+ },
439
+ "match": "(?i)\\bprivate\\b"
440
+ },
441
+ {
442
+ "include": "#aspect_definition"
443
+ },
444
+ {
445
+ "include": "#aspect_mark"
446
+ },
447
+ {
448
+ "include": "#comment"
449
+ }
450
+ ]
451
+ },
452
+ "assignment_statement": {
453
+ "begin": "\\b((?:\\w|\\d|\\.|_|\\(|\\)|\"|'|\\s)+)\\s*(:=)",
454
+ "beginCaptures": {
455
+ "1": {
456
+ "patterns": [
457
+ {
458
+ "match": "((?:\\w|\\d|\\.|_)+)",
459
+ "name": "variable.name.ada"
460
+ },
461
+ {
462
+ "begin": "\\(",
463
+ "captures": {
464
+ "0": {
465
+ "name": "punctuation.ada"
466
+ }
467
+ },
468
+ "end": "\\)",
469
+ "patterns": [
470
+ {
471
+ "include": "#expression"
472
+ }
473
+ ]
474
+ }
475
+ ]
476
+ },
477
+ "2": {
478
+ "name": "keyword.operator.new.ada"
479
+ }
480
+ },
481
+ "end": ";",
482
+ "endCaptures": {
483
+ "0": {
484
+ "name": "punctuation.ada"
485
+ }
486
+ },
487
+ "name": "meta.statement.assignment.ada",
488
+ "patterns": [
489
+ {
490
+ "include": "#expression"
491
+ },
492
+ {
493
+ "include": "#comment"
494
+ }
495
+ ]
496
+ },
497
+ "attribute": {
498
+ "captures": {
499
+ "1": {
500
+ "name": "punctuation.ada"
501
+ },
502
+ "2": {
503
+ "name": "entity.other.attribute-name.ada"
504
+ }
505
+ },
506
+ "match": "(')((?:\\w|\\d|_)+)\\b",
507
+ "name": "meta.attribute.ada"
508
+ },
509
+ "based_literal": {
510
+ "captures": {
511
+ "1": {
512
+ "name": "constant.numeric.base.ada"
513
+ },
514
+ "2": {
515
+ "name": "punctuation.ada"
516
+ },
517
+ "3": {
518
+ "name": "punctuation.ada"
519
+ },
520
+ "4": {
521
+ "name": "punctuation.radix-point.ada"
522
+ },
523
+ "5": {
524
+ "name": "punctuation.ada"
525
+ },
526
+ "6": {
527
+ "name": "constant.numeric.base.ada"
528
+ },
529
+ "7": {
530
+ "patterns": [
531
+ {
532
+ "include": "#exponent_part"
533
+ }
534
+ ]
535
+ }
536
+ },
537
+ "match": "(?i)(\\d(?:(_)?\\d)*#)[0-9a-f](?:(_)?[0-9a-f])*(?:(\\.)[0-9a-f](?:(_)?[0-9a-f])*)?(#)([eE](?:\\+|\\-)?\\d(?:_?\\d)*)?",
538
+ "name": "constant.numeric.ada"
539
+ },
540
+ "basic_declaration": {
541
+ "patterns": [
542
+ {
543
+ "include": "#type_declaration"
544
+ },
545
+ {
546
+ "include": "#subtype_declaration"
547
+ },
548
+ {
549
+ "include": "#exception_declaration"
550
+ },
551
+ {
552
+ "include": "#object_declaration"
553
+ },
554
+ {
555
+ "include": "#single_protected_declaration"
556
+ },
557
+ {
558
+ "include": "#single_task_declaration"
559
+ },
560
+ {
561
+ "include": "#subprogram_specification"
562
+ },
563
+ {
564
+ "include": "#package_declaration"
565
+ },
566
+ {
567
+ "include": "#pragma"
568
+ },
569
+ {
570
+ "include": "#comment"
571
+ }
572
+ ]
573
+ },
574
+ "basic_declarative_item": {
575
+ "patterns": [
576
+ {
577
+ "include": "#basic_declaration"
578
+ },
579
+ {
580
+ "include": "#aspect_clause"
581
+ },
582
+ {
583
+ "include": "#use_clause"
584
+ },
585
+ {
586
+ "include": "#keyword"
587
+ }
588
+ ]
589
+ },
590
+ "block_statement": {
591
+ "begin": "(?i)\\bdeclare\\b",
592
+ "beginCaptures": {
593
+ "0": {
594
+ "name": "keyword.ada"
595
+ }
596
+ },
597
+ "end": "(?i)\\b(end)(\\s+(?:\\w|\\d|_)+)?\\s*(;)",
598
+ "endCaptures": {
599
+ "1": {
600
+ "name": "keyword.ada"
601
+ },
602
+ "2": {
603
+ "name": "entity.name.label.ada"
604
+ },
605
+ "3": {
606
+ "name": "punctuation.ada"
607
+ }
608
+ },
609
+ "name": "meta.statement.block.ada",
610
+ "patterns": [
611
+ {
612
+ "begin": "(?i)(?<=declare)",
613
+ "end": "(?i)\\bbegin\\b",
614
+ "endCaptures": {
615
+ "0": {
616
+ "name": "keyword.ada"
617
+ }
618
+ },
619
+ "patterns": [
620
+ {
621
+ "include": "#body"
622
+ },
623
+ {
624
+ "include": "#basic_declarative_item"
625
+ }
626
+ ]
627
+ },
628
+ {
629
+ "begin": "(?i)(?<=begin)",
630
+ "end": "(?i)(?=end)",
631
+ "patterns": [
632
+ {
633
+ "include": "#statement"
634
+ }
635
+ ]
636
+ }
637
+ ]
638
+ },
639
+ "body": {
640
+ "patterns": [
641
+ {
642
+ "include": "#subprogram_body"
643
+ },
644
+ {
645
+ "include": "#package_body"
646
+ },
647
+ {
648
+ "include": "#task_body"
649
+ },
650
+ {
651
+ "include": "#protected_body"
652
+ }
653
+ ]
654
+ },
655
+ "case_statement": {
656
+ "begin": "(?i)\\bcase\\b",
657
+ "beginCaptures": {
658
+ "0": {
659
+ "name": "keyword.control.ada"
660
+ }
661
+ },
662
+ "end": "(?i)\\b(end)\\s+(case)\\s*(;)",
663
+ "endCaptures": {
664
+ "1": {
665
+ "name": "keyword.control.ada"
666
+ },
667
+ "2": {
668
+ "name": "keyword.control.ada"
669
+ },
670
+ "3": {
671
+ "name": "punctuation.ada"
672
+ }
673
+ },
674
+ "name": "meta.statement.case.ada",
675
+ "patterns": [
676
+ {
677
+ "begin": "(?i)(?<=case)\\b",
678
+ "end": "(?i)\\bis\\b",
679
+ "endCaptures": {
680
+ "0": {
681
+ "name": "keyword.control.ada"
682
+ }
683
+ },
684
+ "patterns": [
685
+ {
686
+ "include": "#expression"
687
+ }
688
+ ]
689
+ },
690
+ {
691
+ "begin": "(?i)\\bwhen\\b",
692
+ "beginCaptures": {
693
+ "0": {
694
+ "name": "keyword.control.ada"
695
+ }
696
+ },
697
+ "end": "=>",
698
+ "endCaptures": {
699
+ "0": {
700
+ "name": "punctuation.ada"
701
+ }
702
+ },
703
+ "name": "meta.statement.case.alternative.ada",
704
+ "patterns": [
705
+ {
706
+ "match": "(?i)\\bothers\\b",
707
+ "name": "keyword.modifier.unknown.ada"
708
+ },
709
+ {
710
+ "match": "\\|",
711
+ "name": "punctuation.ada"
712
+ },
713
+ {
714
+ "include": "#expression"
715
+ }
716
+ ]
717
+ },
718
+ {
719
+ "include": "#statement"
720
+ }
721
+ ]
722
+ },
723
+ "character_literal": {
724
+ "captures": {
725
+ "0": {
726
+ "patterns": [
727
+ {
728
+ "match": "'",
729
+ "name": "punctuation.definition.string.ada"
730
+ }
731
+ ]
732
+ }
733
+ },
734
+ "match": "'.'",
735
+ "name": "string.quoted.single.ada"
736
+ },
737
+ "comment": {
738
+ "patterns": [
739
+ {
740
+ "include": "#preprocessor"
741
+ },
742
+ {
743
+ "include": "#comment-section"
744
+ },
745
+ {
746
+ "include": "#comment-doc"
747
+ },
748
+ {
749
+ "include": "#comment-line"
750
+ }
751
+ ]
752
+ },
753
+ "comment-doc": {
754
+ "captures": {
755
+ "1": {
756
+ "name": "comment.line.double-dash.ada"
757
+ },
758
+ "2": {
759
+ "name": "punctuation.definition.tag.ada"
760
+ },
761
+ "3": {
762
+ "name": "entity.name.tag.ada"
763
+ },
764
+ "4": {
765
+ "name": "comment.line.double-dash.ada"
766
+ }
767
+ },
768
+ "match": "(--)\\s*(@)(\\w+)\\s+(.*)$",
769
+ "name": "comment.block.documentation.ada"
770
+ },
771
+ "comment-line": {
772
+ "match": "--.*$",
773
+ "name": "comment.line.double-dash.ada"
774
+ },
775
+ "comment-section": {
776
+ "captures": {
777
+ "1": {
778
+ "name": "entity.name.section.ada"
779
+ }
780
+ },
781
+ "match": "--\\s*([^-].*?[^-])\\s*--\\s*$",
782
+ "name": "comment.line.double-dash.ada"
783
+ },
784
+ "component_clause": {
785
+ "begin": "(?i)\\b((?:\\w|\\d|_)+)\\b",
786
+ "beginCaptures": {
787
+ "0": {
788
+ "name": "variable.name.ada"
789
+ }
790
+ },
791
+ "end": ";",
792
+ "endCaptures": {
793
+ "0": {
794
+ "name": "punctuation.ada"
795
+ }
796
+ },
797
+ "name": "meta.aspect.clause.record.representation.component.ada",
798
+ "patterns": [
799
+ {
800
+ "begin": "(?i)\\bat\\b",
801
+ "beginCaptures": {
802
+ "0": {
803
+ "name": "storage.modifier.ada"
804
+ }
805
+ },
806
+ "end": "(?i)\\b(?=range)\\b",
807
+ "patterns": [
808
+ {
809
+ "include": "#expression"
810
+ }
811
+ ]
812
+ },
813
+ {
814
+ "include": "#range_constraint"
815
+ }
816
+ ]
817
+ },
818
+ "component_declaration": {
819
+ "begin": "(?i)\\b((?:\\w|\\d|_)+(?:\\s*,\\s*(?:\\w|\\d|_)+)?)\\s*(:)",
820
+ "beginCaptures": {
821
+ "1": {
822
+ "patterns": [
823
+ {
824
+ "match": ",",
825
+ "name": "punctuation.ada"
826
+ },
827
+ {
828
+ "match": "\\b(\\w|\\d|_)+\\b",
829
+ "name": "variable.name.ada"
830
+ }
831
+ ]
832
+ },
833
+ "2": {
834
+ "name": "punctuation.ada"
835
+ }
836
+ },
837
+ "end": ";",
838
+ "endCaptures": {
839
+ "0": {
840
+ "name": "punctuation.ada"
841
+ }
842
+ },
843
+ "name": "meta.declaration.type.definition.record.component.ada",
844
+ "patterns": [
845
+ {
846
+ "patterns": [
847
+ {
848
+ "match": ":=",
849
+ "name": "keyword.operator.new.ada"
850
+ },
851
+ {
852
+ "include": "#expression"
853
+ }
854
+ ]
855
+ },
856
+ {
857
+ "include": "#component_definition"
858
+ }
859
+ ]
860
+ },
861
+ "component_definition": {
862
+ "patterns": [
863
+ {
864
+ "match": "(?i)\\baliased\\b",
865
+ "name": "storage.visibility.ada"
866
+ },
867
+ {
868
+ "match": "(?i)\\brange\\b",
869
+ "name": "storage.modifier.ada"
870
+ },
871
+ {
872
+ "match": "\\.\\.",
873
+ "name": "keyword.ada"
874
+ },
875
+ {
876
+ "include": "#access_definition"
877
+ },
878
+ {
879
+ "include": "#subtype_mark"
880
+ }
881
+ ]
882
+ },
883
+ "component_item": {
884
+ "patterns": [
885
+ {
886
+ "include": "#component_declaration"
887
+ },
888
+ {
889
+ "include": "#variant_part"
890
+ },
891
+ {
892
+ "include": "#comment"
893
+ },
894
+ {
895
+ "include": "#aspect_clause"
896
+ },
897
+ {
898
+ "captures": {
899
+ "1": {
900
+ "name": "keyword.ada"
901
+ },
902
+ "2": {
903
+ "name": "punctuation.ada"
904
+ }
905
+ },
906
+ "match": "(?i)\\b(null)\\s*(;)"
907
+ }
908
+ ]
909
+ },
910
+ "composite_constraint": {
911
+ "begin": "\\(",
912
+ "captures": {
913
+ "0": {
914
+ "name": "punctuation.ada"
915
+ }
916
+ },
917
+ "end": "\\)",
918
+ "name": "meta.declaration.constraint.composite.ada",
919
+ "patterns": [
920
+ {
921
+ "match": ",",
922
+ "name": "punctuation.ada"
923
+ },
924
+ {
925
+ "match": "\\.\\.",
926
+ "name": "keyword.ada"
927
+ },
928
+ {
929
+ "captures": {
930
+ "1": {
931
+ "name": "variable.name.ada"
932
+ },
933
+ "2": {
934
+ "name": "keyword.other.ada"
935
+ },
936
+ "3": {
937
+ "patterns": [
938
+ {
939
+ "include": "#expression"
940
+ }
941
+ ]
942
+ }
943
+ },
944
+ "match": "(?i)\\b((?:\\w|\\d|_)+)\\s*(=>)\\s*([^,\\)])+\\b"
945
+ },
946
+ {
947
+ "include": "#expression"
948
+ }
949
+ ]
950
+ },
951
+ "decimal_literal": {
952
+ "captures": {
953
+ "1": {
954
+ "name": "punctuation.ada"
955
+ },
956
+ "2": {
957
+ "name": "punctuation.radix-point.ada"
958
+ },
959
+ "3": {
960
+ "name": "punctuation.ada"
961
+ },
962
+ "4": {
963
+ "patterns": [
964
+ {
965
+ "include": "#exponent_part"
966
+ }
967
+ ]
968
+ }
969
+ },
970
+ "match": "\\d(?:(_)?\\d)*(?:(\\.)\\d(?:(_)?\\d)*)?([eE](?:\\+|\\-)?\\d(?:_?\\d)*)?",
971
+ "name": "constant.numeric.ada"
972
+ },
973
+ "declarative_item": {
974
+ "patterns": [
975
+ {
976
+ "include": "#body"
977
+ },
978
+ {
979
+ "include": "#basic_declarative_item"
980
+ }
981
+ ]
982
+ },
983
+ "delay_relative_statement": {
984
+ "begin": "(?i)\\b(delay)\\b",
985
+ "beginCaptures": {
986
+ "1": {
987
+ "name": "keyword.control.ada"
988
+ }
989
+ },
990
+ "end": ";",
991
+ "endCaptures": {
992
+ "0": {
993
+ "name": "punctuation.ada"
994
+ }
995
+ },
996
+ "patterns": [
997
+ {
998
+ "include": "#expression"
999
+ }
1000
+ ]
1001
+ },
1002
+ "delay_statement": {
1003
+ "patterns": [
1004
+ {
1005
+ "include": "#delay_until_statement"
1006
+ },
1007
+ {
1008
+ "include": "#delay_relative_statement"
1009
+ }
1010
+ ]
1011
+ },
1012
+ "delay_until_statement": {
1013
+ "begin": "(?i)\\b(delay)\\s+(until)\\b",
1014
+ "beginCaptures": {
1015
+ "1": {
1016
+ "name": "keyword.control.ada"
1017
+ },
1018
+ "2": {
1019
+ "name": "keyword.control.ada"
1020
+ }
1021
+ },
1022
+ "end": ";",
1023
+ "endCaptures": {
1024
+ "0": {
1025
+ "name": "punctuation.ada"
1026
+ }
1027
+ },
1028
+ "name": "meta.statement.delay.until.ada",
1029
+ "patterns": [
1030
+ {
1031
+ "include": "#expression"
1032
+ }
1033
+ ]
1034
+ },
1035
+ "derived_type_definition": {
1036
+ "name": "meta.declaration.type.definition.derived.ada",
1037
+ "patterns": [
1038
+ {
1039
+ "begin": "(?i)\\bnew\\b",
1040
+ "beginCaptures": {
1041
+ "0": {
1042
+ "name": "storage.modifier.ada"
1043
+ }
1044
+ },
1045
+ "end": "(?i)(?=(\\bwith\\b|;))",
1046
+ "patterns": [
1047
+ {
1048
+ "match": "(?i)\\band\\b",
1049
+ "name": "storage.modifier.ada"
1050
+ },
1051
+ {
1052
+ "include": "#subtype_mark"
1053
+ }
1054
+ ]
1055
+ },
1056
+ {
1057
+ "match": "(?i)\\b(abstract|and|limited|tagged)\\b",
1058
+ "name": "storage.modifier.ada"
1059
+ },
1060
+ {
1061
+ "match": "(?i)\\bprivate\\b",
1062
+ "name": "storage.visibility.ada"
1063
+ },
1064
+ {
1065
+ "include": "#subtype_mark"
1066
+ }
1067
+ ]
1068
+ },
1069
+ "discriminant_specification": {
1070
+ "begin": "(?i)\\b((?:\\w|\\d|_)+(?:\\s*,\\s*(?:\\w|\\d|_)+)?)\\s*(:)",
1071
+ "beginCaptures": {
1072
+ "1": {
1073
+ "patterns": [
1074
+ {
1075
+ "match": ",",
1076
+ "name": "punctuation.ada"
1077
+ },
1078
+ {
1079
+ "match": "\\b(\\w|\\d|_)+\\b",
1080
+ "name": "variable.name.ada"
1081
+ }
1082
+ ]
1083
+ },
1084
+ "2": {
1085
+ "name": "punctuation.ada"
1086
+ }
1087
+ },
1088
+ "end": "(?=(;|\\)))",
1089
+ "patterns": [
1090
+ {
1091
+ "begin": ":=",
1092
+ "beginCaptures": {
1093
+ "0": {
1094
+ "name": "keyword.operator.new.ada"
1095
+ }
1096
+ },
1097
+ "end": "(?=(;|\\)))",
1098
+ "patterns": [
1099
+ {
1100
+ "include": "#expression"
1101
+ }
1102
+ ]
1103
+ },
1104
+ {
1105
+ "captures": {
1106
+ "1": {
1107
+ "name": "storage.visibility.ada"
1108
+ },
1109
+ "2": {
1110
+ "patterns": [
1111
+ {
1112
+ "include": "#subtype_mark"
1113
+ }
1114
+ ]
1115
+ }
1116
+ },
1117
+ "match": "(?i)(not\\s+null\\s+)?((?:\\w|\\d|\\.|_)+)\\b"
1118
+ },
1119
+ {
1120
+ "include": "#access_definition"
1121
+ }
1122
+ ]
1123
+ },
1124
+ "entry_body": {
1125
+ "begin": "(?i)\\b(entry)\\s+((?:\\w|\\d|_)+)\\b",
1126
+ "beginCaptures": {
1127
+ "1": {
1128
+ "name": "keyword.ada"
1129
+ },
1130
+ "2": {
1131
+ "name": "entity.name.entry.ada"
1132
+ }
1133
+ },
1134
+ "end": "(?i)\\b(end)\\s*(\\s\\2)\\s*(;)",
1135
+ "endCaptures": {
1136
+ "1": {
1137
+ "name": "keyword.ada"
1138
+ },
1139
+ "2": {
1140
+ "name": "entity.name.entry.ada"
1141
+ },
1142
+ "3": {
1143
+ "name": "punctuation.ada"
1144
+ }
1145
+ },
1146
+ "patterns": [
1147
+ {
1148
+ "begin": "(?i)\\bis\\b",
1149
+ "beginCaptures": {
1150
+ "0": {
1151
+ "name": "keyword.ada"
1152
+ }
1153
+ },
1154
+ "end": "(?i)\\b(?=begin)\\b",
1155
+ "patterns": [
1156
+ {
1157
+ "include": "#declarative_item"
1158
+ }
1159
+ ]
1160
+ },
1161
+ {
1162
+ "begin": "(?i)\\bbegin\\b",
1163
+ "beginCaptures": {
1164
+ "0": {
1165
+ "name": "keyword.ada"
1166
+ }
1167
+ },
1168
+ "end": "(?i)\\b(?=end)\\b",
1169
+ "patterns": [
1170
+ {
1171
+ "include": "#statement"
1172
+ }
1173
+ ]
1174
+ },
1175
+ {
1176
+ "begin": "(?i)\\bwhen\\b",
1177
+ "beginCaptures": {
1178
+ "0": {
1179
+ "name": "keyword.ada"
1180
+ }
1181
+ },
1182
+ "end": "(?i)\\b(?=is)\\b",
1183
+ "patterns": [
1184
+ {
1185
+ "include": "#expression"
1186
+ }
1187
+ ]
1188
+ },
1189
+ {
1190
+ "include": "#parameter_profile"
1191
+ }
1192
+ ]
1193
+ },
1194
+ "entry_declaration": {
1195
+ "begin": "(?i)\\b(?:(not)?\\s+(overriding)\\s+)?(entry)\\s+((?:\\w|\\d|_)+)\\b",
1196
+ "beginCaptures": {
1197
+ "1": {
1198
+ "name": "storage.modifier.ada"
1199
+ },
1200
+ "2": {
1201
+ "name": "storage.modifier.ada"
1202
+ },
1203
+ "3": {
1204
+ "name": "keyword.ada"
1205
+ },
1206
+ "4": {
1207
+ "name": "entity.name.entry.ada"
1208
+ }
1209
+ },
1210
+ "end": ";",
1211
+ "endCaptures": {
1212
+ "0": {
1213
+ "name": "punctuation.ada"
1214
+ }
1215
+ },
1216
+ "patterns": [
1217
+ {
1218
+ "include": "#parameter_profile"
1219
+ }
1220
+ ]
1221
+ },
1222
+ "enumeration_type_definition": {
1223
+ "begin": "\\(",
1224
+ "beginCaptures": {
1225
+ "0": {
1226
+ "name": "punctuation.ada"
1227
+ }
1228
+ },
1229
+ "end": "\\)",
1230
+ "endCaptures": {
1231
+ "0": {
1232
+ "name": "punctuation.ada"
1233
+ }
1234
+ },
1235
+ "name": "meta.declaration.type.definition.enumeration.ada",
1236
+ "patterns": [
1237
+ {
1238
+ "match": ",",
1239
+ "name": "punctuation.ada"
1240
+ },
1241
+ {
1242
+ "match": "\\b(\\w|\\d|_)+\\b",
1243
+ "name": "variable.name.ada"
1244
+ },
1245
+ {
1246
+ "include": "#comment"
1247
+ }
1248
+ ]
1249
+ },
1250
+ "exception_declaration": {
1251
+ "begin": "(?i)\\b((?:\\w|\\d|_)+(?:\\s*,\\s*(?:\\w|\\d|_)+)?)\\s*(:)\\s*(exception)",
1252
+ "beginCaptures": {
1253
+ "1": {
1254
+ "patterns": [
1255
+ {
1256
+ "match": ",",
1257
+ "name": "punctuation.ada"
1258
+ },
1259
+ {
1260
+ "match": "\\b(\\w|\\d|_)+\\b",
1261
+ "name": "entity.name.exception.ada"
1262
+ }
1263
+ ]
1264
+ },
1265
+ "2": {
1266
+ "name": "punctuation.ada"
1267
+ },
1268
+ "3": {
1269
+ "name": "storage.type.ada"
1270
+ }
1271
+ },
1272
+ "end": ";",
1273
+ "endCaptures": {
1274
+ "0": {
1275
+ "name": "punctuation.ada"
1276
+ }
1277
+ },
1278
+ "name": "meta.declaration.exception.ada",
1279
+ "patterns": [
1280
+ {
1281
+ "match": "(?i)\\b(renames)\\s+((\\w|\\d|_|\\.)+)",
1282
+ "name": "entity.name.exception.ada"
1283
+ }
1284
+ ]
1285
+ },
1286
+ "exit_statement": {
1287
+ "begin": "(?i)\\bexit\\b",
1288
+ "beginCaptures": {
1289
+ "0": {
1290
+ "name": "keyword.control.ada"
1291
+ }
1292
+ },
1293
+ "end": ";",
1294
+ "endCaptures": {
1295
+ "0": {
1296
+ "name": "punctuation.ada"
1297
+ }
1298
+ },
1299
+ "name": "meta.statement.exit.ada",
1300
+ "patterns": [
1301
+ {
1302
+ "begin": "(?i)\\bwhen\\b",
1303
+ "beginCaptures": {
1304
+ "0": {
1305
+ "name": "keyword.control.ada"
1306
+ }
1307
+ },
1308
+ "end": "(?=;)",
1309
+ "patterns": [
1310
+ {
1311
+ "include": "#expression"
1312
+ }
1313
+ ]
1314
+ },
1315
+ {
1316
+ "match": "(?:\\w|\\d|_)+",
1317
+ "name": "entity.name.label.ada"
1318
+ }
1319
+ ]
1320
+ },
1321
+ "exponent_part": {
1322
+ "captures": {
1323
+ "1": {
1324
+ "name": "punctuation.exponent-mark.ada"
1325
+ },
1326
+ "2": {
1327
+ "name": "keyword.operator.unary.ada"
1328
+ },
1329
+ "3": {
1330
+ "name": "punctuation.ada"
1331
+ }
1332
+ },
1333
+ "match": "([eE])(\\+|\\-)?\\d(?:(_)?\\d)*"
1334
+ },
1335
+ "expression": {
1336
+ "name": "meta.expression.ada",
1337
+ "patterns": [
1338
+ {
1339
+ "match": "(?i)\\bnull\\b",
1340
+ "name": "constant.language.ada"
1341
+ },
1342
+ {
1343
+ "match": "=>(\\+)?",
1344
+ "name": "keyword.other.ada"
1345
+ },
1346
+ {
1347
+ "begin": "\\(",
1348
+ "captures": {
1349
+ "0": {
1350
+ "name": "punctuation.ada"
1351
+ }
1352
+ },
1353
+ "end": "\\)",
1354
+ "patterns": [
1355
+ {
1356
+ "include": "#expression"
1357
+ }
1358
+ ]
1359
+ },
1360
+ {
1361
+ "match": ",",
1362
+ "name": "punctuation.ada"
1363
+ },
1364
+ {
1365
+ "match": "\\.\\.",
1366
+ "name": "keyword.ada"
1367
+ },
1368
+ {
1369
+ "include": "#value"
1370
+ },
1371
+ {
1372
+ "include": "#attribute"
1373
+ },
1374
+ {
1375
+ "include": "#comment"
1376
+ },
1377
+ {
1378
+ "include": "#operator"
1379
+ },
1380
+ {
1381
+ "match": "(?i)\\b(and|or|xor)\\b",
1382
+ "name": "keyword.ada"
1383
+ },
1384
+ {
1385
+ "match": "(?i)\\b(if|then|else|elsif|in|for|(?<!\\.)all|some|\\.\\.|delta|with)\\b",
1386
+ "name": "keyword.ada"
1387
+ }
1388
+ ]
1389
+ },
1390
+ "for_loop_statement": {
1391
+ "begin": "(?i)\\bfor\\b",
1392
+ "beginCaptures": {
1393
+ "0": {
1394
+ "name": "keyword.control.ada"
1395
+ }
1396
+ },
1397
+ "end": "(?i)\\b(end)\\s+(loop)(\\s+(?:\\w|\\d|_)+)?\\s*(;)",
1398
+ "endCaptures": {
1399
+ "1": {
1400
+ "name": "keyword.control.ada"
1401
+ },
1402
+ "2": {
1403
+ "name": "keyword.control.ada"
1404
+ },
1405
+ "3": {
1406
+ "name": "entity.name.label.ada"
1407
+ },
1408
+ "4": {
1409
+ "name": "punctuation.ada"
1410
+ }
1411
+ },
1412
+ "name": "meta.statement.loop.for.ada",
1413
+ "patterns": [
1414
+ {
1415
+ "begin": "(?i)(?<=for)",
1416
+ "end": "(?i)\\bloop\\b",
1417
+ "endCaptures": {
1418
+ "0": {
1419
+ "name": "keyword.control.ada"
1420
+ }
1421
+ },
1422
+ "patterns": [
1423
+ {
1424
+ "captures": {
1425
+ "1": {
1426
+ "name": "variable.name.ada"
1427
+ },
1428
+ "2": {
1429
+ "name": "keyword.control.ada"
1430
+ },
1431
+ "3": {
1432
+ "name": "keyword.control.ada"
1433
+ }
1434
+ },
1435
+ "match": "(?i)\\b((?:\\w|\\d|_)+)\\s+(in)(\\s+reverse)?\\b"
1436
+ },
1437
+ {
1438
+ "captures": {
1439
+ "1": {
1440
+ "name": "variable.name.ada"
1441
+ },
1442
+ "2": {
1443
+ "name": "punctuation.ada"
1444
+ },
1445
+ "3": {
1446
+ "patterns": [
1447
+ {
1448
+ "include": "#subtype_mark"
1449
+ }
1450
+ ]
1451
+ },
1452
+ "4": {
1453
+ "name": "keyword.control.ada"
1454
+ },
1455
+ "5": {
1456
+ "name": "keyword.control.ada"
1457
+ }
1458
+ },
1459
+ "match": "(?i)\\b((?:\\w|\\d|_)+)(?:\\s*(:)\\s*((?:\\w|\\d|\\.|_)+))?\\s+(of)(\\s+reverse)?\\b"
1460
+ },
1461
+ {
1462
+ "include": "#expression"
1463
+ }
1464
+ ]
1465
+ },
1466
+ {
1467
+ "include": "#statement"
1468
+ }
1469
+ ]
1470
+ },
1471
+ "full_type_declaration": {
1472
+ "patterns": [
1473
+ {
1474
+ "include": "#task_type_declaration"
1475
+ },
1476
+ {
1477
+ "include": "#regular_type_declaration"
1478
+ }
1479
+ ]
1480
+ },
1481
+ "function_body": {
1482
+ "begin": "(?i)\\b(overriding\\s+)?(function)\\s+(?:((?:\\w|\\d|\\.|_)+\\b)|(\".+\"))",
1483
+ "beginCaptures": {
1484
+ "1": {
1485
+ "name": "storage.visibility.ada"
1486
+ },
1487
+ "2": {
1488
+ "name": "keyword.ada"
1489
+ },
1490
+ "3": {
1491
+ "name": "entity.name.function.ada"
1492
+ },
1493
+ "4": {
1494
+ "patterns": [
1495
+ {
1496
+ "include": "#string_literal"
1497
+ }
1498
+ ]
1499
+ }
1500
+ },
1501
+ "end": "(?i)(?:\\b(end)\\s+(\\3|\\4)\\s*)?(;)",
1502
+ "endCaptures": {
1503
+ "1": {
1504
+ "name": "keyword.ada"
1505
+ },
1506
+ "2": {
1507
+ "name": "entity.name.function.ada"
1508
+ },
1509
+ "3": {
1510
+ "name": "punctuation.ada"
1511
+ }
1512
+ },
1513
+ "name": "meta.declaration.function.body.ada",
1514
+ "patterns": [
1515
+ {
1516
+ "begin": "(?i)\\bbegin\\b",
1517
+ "beginCaptures": {
1518
+ "0": {
1519
+ "name": "keyword.ada"
1520
+ }
1521
+ },
1522
+ "end": "(?i)(?=end)",
1523
+ "patterns": [
1524
+ {
1525
+ "include": "#handled_sequence_of_statements"
1526
+ }
1527
+ ]
1528
+ },
1529
+ {
1530
+ "include": "#aspect_specification"
1531
+ },
1532
+ {
1533
+ "include": "#result_profile"
1534
+ },
1535
+ {
1536
+ "include": "#subprogram_renaming_declaration"
1537
+ },
1538
+ {
1539
+ "include": "#parameter_profile"
1540
+ },
1541
+ {
1542
+ "begin": "(?i)\\bis\\b",
1543
+ "beginCaptures": {
1544
+ "0": {
1545
+ "name": "keyword.ada"
1546
+ }
1547
+ },
1548
+ "end": "(?i)(?=(with|begin|;))",
1549
+ "name": "meta.function.body.spec_part.ada",
1550
+ "patterns": [
1551
+ {
1552
+ "begin": "(?i)\\bnew\\b",
1553
+ "beginCaptures": {
1554
+ "0": {
1555
+ "name": "keyword.operator.new.ada"
1556
+ }
1557
+ },
1558
+ "end": "(?=;)",
1559
+ "name": "meta.declaration.package.generic.ada",
1560
+ "patterns": [
1561
+ {
1562
+ "match": "((?:\\w|\\d|\\.|_)+)",
1563
+ "name": "entity.name.function.ada"
1564
+ },
1565
+ {
1566
+ "include": "#actual_parameter_part"
1567
+ }
1568
+ ]
1569
+ },
1570
+ {
1571
+ "captures": {
1572
+ "0": {
1573
+ "name": "storage.modifier.ada"
1574
+ }
1575
+ },
1576
+ "match": "(?i)\\babstract\\b",
1577
+ "name": "meta.declaration.function.abstract.ada"
1578
+ },
1579
+ {
1580
+ "include": "#declarative_item"
1581
+ },
1582
+ {
1583
+ "include": "#subprogram_renaming_declaration"
1584
+ },
1585
+ {
1586
+ "include": "#expression"
1587
+ }
1588
+ ]
1589
+ }
1590
+ ]
1591
+ },
1592
+ "function_specification": {
1593
+ "patterns": [
1594
+ {
1595
+ "include": "#function_body"
1596
+ }
1597
+ ]
1598
+ },
1599
+ "goto_statement": {
1600
+ "begin": "(?i)\\bgoto\\b",
1601
+ "beginCaptures": {
1602
+ "0": {
1603
+ "name": "keyword.control.goto.ada"
1604
+ }
1605
+ },
1606
+ "end": ";",
1607
+ "endCaptures": {
1608
+ "0": {
1609
+ "name": "punctuation.ada"
1610
+ }
1611
+ },
1612
+ "name": "meta.statement.goto.ada",
1613
+ "patterns": [
1614
+ {
1615
+ }
1616
+ ]
1617
+ },
1618
+ "guard": {
1619
+ "begin": "(?i)\\bwhen\\b",
1620
+ "beginCaptures": {
1621
+ "0": {
1622
+ "name": "keyword.control.ada"
1623
+ }
1624
+ },
1625
+ "end": "=>",
1626
+ "endCaptures": {
1627
+ "0": {
1628
+ "name": "keyword.other.ada"
1629
+ }
1630
+ },
1631
+ "patterns": [
1632
+ {
1633
+ "include": "#expression"
1634
+ }
1635
+ ]
1636
+ },
1637
+ "handled_sequence_of_statements": {
1638
+ "patterns": [
1639
+ {
1640
+ "begin": "(?i)\\bexception\\b",
1641
+ "beginCaptures": {
1642
+ "0": {
1643
+ "name": "keyword.ada"
1644
+ }
1645
+ },
1646
+ "end": "(?i)\\b(?=end)\\b",
1647
+ "name": "meta.handler.exception.ada",
1648
+ "patterns": [
1649
+ {
1650
+ "begin": "(?i)\\bwhen\\b",
1651
+ "beginCaptures": {
1652
+ "0": {
1653
+ "name": "keyword.ada"
1654
+ }
1655
+ },
1656
+ "end": "=>",
1657
+ "endCaptures": {
1658
+ "0": {
1659
+ "name": "keyword.other.ada"
1660
+ }
1661
+ },
1662
+ "patterns": [
1663
+ {
1664
+ "captures": {
1665
+ "1": {
1666
+ "name": "variable.name.ada"
1667
+ },
1668
+ "2": {
1669
+ "name": "punctuation.ada"
1670
+ }
1671
+ },
1672
+ "match": "\\b((?:\\w|\\d|\\.|_)+)\\s*(:)"
1673
+ },
1674
+ {
1675
+ "match": "\\|",
1676
+ "name": "punctuation.ada"
1677
+ },
1678
+ {
1679
+ "match": "(?i)\\bothers\\b",
1680
+ "name": "keyword.ada"
1681
+ },
1682
+ {
1683
+ "match": "(?:\\w|\\d|\\.|_)+",
1684
+ "name": "entity.name.exception.ada"
1685
+ }
1686
+ ]
1687
+ },
1688
+ {
1689
+ "include": "#statement"
1690
+ }
1691
+ ]
1692
+ },
1693
+ {
1694
+ "include": "#statement"
1695
+ }
1696
+ ]
1697
+ },
1698
+ "highest_precedence_operator": {
1699
+ "match": "(?i)(\\*\\*|\\babs\\b|\\bnot\\b)",
1700
+ "name": "keyword.operator.highest-precedence.ada"
1701
+ },
1702
+ "if_statement": {
1703
+ "begin": "(?i)\\bif\\b",
1704
+ "beginCaptures": {
1705
+ "0": {
1706
+ "name": "keyword.control.ada"
1707
+ }
1708
+ },
1709
+ "end": "(?i)\\b(end)\\s+(if)\\s*(;)",
1710
+ "endCaptures": {
1711
+ "1": {
1712
+ "name": "keyword.control.ada"
1713
+ },
1714
+ "2": {
1715
+ "name": "keyword.control.ada"
1716
+ },
1717
+ "3": {
1718
+ "name": "punctuation.ada"
1719
+ }
1720
+ },
1721
+ "name": "meta.statement.if.ada",
1722
+ "patterns": [
1723
+ {
1724
+ "begin": "(?i)\\belsif\\b",
1725
+ "beginCaptures": {
1726
+ "0": {
1727
+ "name": "keyword.control.ada"
1728
+ }
1729
+ },
1730
+ "end": "(?i)(?:(?<!\\sand)\\s+(?=then))",
1731
+ "patterns": [
1732
+ {
1733
+ "include": "#expression"
1734
+ }
1735
+ ]
1736
+ },
1737
+ {
1738
+ "begin": "(?i)\\belse\\b",
1739
+ "beginCaptures": {
1740
+ "0": {
1741
+ "name": "keyword.control.ada"
1742
+ }
1743
+ },
1744
+ "end": "(?i)(?=end)",
1745
+ "patterns": [
1746
+ {
1747
+ "include": "#statement"
1748
+ }
1749
+ ]
1750
+ },
1751
+ {
1752
+ "begin": "(?i)(?<=if)\\b",
1753
+ "end": "(?i)(?:(?<!\\sand)\\s+(?=then))",
1754
+ "endCaptures": {
1755
+ "0": {
1756
+ "name": "keyword.control.ada"
1757
+ }
1758
+ },
1759
+ "patterns": [
1760
+ {
1761
+ "include": "#expression"
1762
+ }
1763
+ ]
1764
+ },
1765
+ {
1766
+ "begin": "(?i)\\bthen\\b",
1767
+ "beginCaptures": {
1768
+ "0": {
1769
+ "name": "keyword.control.ada"
1770
+ }
1771
+ },
1772
+ "end": "(?i)(?=(elsif|else|end))",
1773
+ "patterns": [
1774
+ {
1775
+ "include": "#statement"
1776
+ }
1777
+ ]
1778
+ }
1779
+ ]
1780
+ },
1781
+ "integer_type_definition": {
1782
+ "name": "meta.declaration.type.definition.integer.ada",
1783
+ "patterns": [
1784
+ {
1785
+ "include": "#signed_integer_type_definition"
1786
+ },
1787
+ {
1788
+ "include": "#modular_type_definition"
1789
+ }
1790
+ ]
1791
+ },
1792
+ "interface_type_definition": {
1793
+ "begin": "(?i)\\b(?:(limited|task|protected|synchronized)\\s+)?(interface)",
1794
+ "beginCaptures": {
1795
+ "1": {
1796
+ "name": "storage.modifier.ada"
1797
+ },
1798
+ "2": {
1799
+ "name": "storage.modifier.ada"
1800
+ }
1801
+ },
1802
+ "end": "(?i)(?=(with|;))",
1803
+ "name": "meta.declaration.type.definition.interface.ada",
1804
+ "patterns": [
1805
+ {
1806
+ "match": "(?i)\\band\\b",
1807
+ "name": "storage.modifier.ada"
1808
+ },
1809
+ {
1810
+ "include": "#subtype_mark"
1811
+ }
1812
+ ]
1813
+ },
1814
+ "keyword": {
1815
+ "patterns": [
1816
+ {
1817
+ "match": "(?i)\\b(abort|abs|accept|all|and|at|begin|body|declare|delay|end|entry|exception|function|generic|in|is|mod|new|not|null|of|or|others|out|package|pragma|procedure|range|record|rem|renames|requeue|reverse|select|separate|some|subtype|then|type|use|when|with|xor)\\b",
1818
+ "name": "keyword.ada"
1819
+ },
1820
+ {
1821
+ "match": "(?i)\\b(case|do|else|elsif|exit|for|goto|if|loop|raise|return|terminate|until|while)\\b",
1822
+ "name": "keyword.control.ada"
1823
+ },
1824
+ {
1825
+ "match": "(?i)\\b(abstract|access|aliased|array|constant|delta|digits|interface|limited|protected|synchronized|tagged|task)\\b",
1826
+ "name": "storage.modifier.ada"
1827
+ },
1828
+ {
1829
+ "match": "(?i)\\b(private|overriding)\\b",
1830
+ "name": "storage.visibility.ada"
1831
+ },
1832
+ {
1833
+ "match": "<>",
1834
+ "name": "keyword.modifier.unknown.ada"
1835
+ },
1836
+ {
1837
+ "match": "(\\+|-|\\*|/)",
1838
+ "name": "keyword.operator.arithmetic.ada"
1839
+ },
1840
+ {
1841
+ "match": ":=",
1842
+ "name": "keyword.operator.assignment.ada"
1843
+ },
1844
+ {
1845
+ "match": "(=|/=|<|>|<=|>=)",
1846
+ "name": "keyword.operator.logic.ada"
1847
+ },
1848
+ {
1849
+ "match": "\\&",
1850
+ "name": "keyword.operator.concatenation.ada"
1851
+ }
1852
+ ]
1853
+ },
1854
+ "known_discriminant_part": {
1855
+ "begin": "\\(",
1856
+ "captures": {
1857
+ "0": {
1858
+ "name": "punctuation.ada"
1859
+ }
1860
+ },
1861
+ "end": "\\)",
1862
+ "name": "meta.declaration.type.discriminant.ada",
1863
+ "patterns": [
1864
+ {
1865
+ "match": ";",
1866
+ "name": "punctuation.ada"
1867
+ },
1868
+ {
1869
+ "include": "#discriminant_specification"
1870
+ }
1871
+ ]
1872
+ },
1873
+ "label": {
1874
+ "captures": {
1875
+ "1": {
1876
+ "name": "punctuation.label.ada"
1877
+ },
1878
+ "2": {
1879
+ "name": "entity.name.label.ada"
1880
+ },
1881
+ "3": {
1882
+ "name": "punctuation.label.ada"
1883
+ }
1884
+ },
1885
+ "match": "(<<)?((?:\\w|\\d|_)+)\\s*(:[^=]|>>)",
1886
+ "name": "meta.label.ada"
1887
+ },
1888
+ "library_unit": {
1889
+ "name": "meta.library.unit.ada",
1890
+ "patterns": [
1891
+ {
1892
+ "include": "#package_body"
1893
+ },
1894
+ {
1895
+ "include": "#package_specification"
1896
+ },
1897
+ {
1898
+ "include": "#subprogram_body"
1899
+ }
1900
+ ]
1901
+ },
1902
+ "loop_statement": {
1903
+ "patterns": [
1904
+ {
1905
+ "include": "#simple_loop_statement"
1906
+ },
1907
+ {
1908
+ "include": "#while_loop_statement"
1909
+ },
1910
+ {
1911
+ "include": "#for_loop_statement"
1912
+ }
1913
+ ]
1914
+ },
1915
+ "modular_type_definition": {
1916
+ "begin": "(?i)\\b(mod)\\b",
1917
+ "beginCaptures": {
1918
+ "1": {
1919
+ "name": "storage.modifier.ada"
1920
+ }
1921
+ },
1922
+ "end": "(?i)(?=(with|;))",
1923
+ "patterns": [
1924
+ {
1925
+ "match": "<>",
1926
+ "name": "keyword.modifier.unknown.ada"
1927
+ },
1928
+ {
1929
+ "include": "#expression"
1930
+ }
1931
+ ]
1932
+ },
1933
+ "multiplying_operator": {
1934
+ "match": "(?i)(\\*|/|\\bmod\\b|\\brem\\b)",
1935
+ "name": "keyword.operator.multiplying.ada"
1936
+ },
1937
+ "null_statement": {
1938
+ "captures": {
1939
+ "1": {
1940
+ "name": "keyword.ada"
1941
+ },
1942
+ "2": {
1943
+ "name": "punctuation.ada"
1944
+ }
1945
+ },
1946
+ "match": "(?i)\\b(null)\\s*(;)",
1947
+ "name": "meta.statement.null.ada"
1948
+ },
1949
+ "object_declaration": {
1950
+ "begin": "(?i)\\b((?:\\w|\\d|_)+(?:\\s*,\\s*(?:\\w|\\d|_)+)*)\\s*(:)",
1951
+ "beginCaptures": {
1952
+ "1": {
1953
+ "patterns": [
1954
+ {
1955
+ "match": ",",
1956
+ "name": "punctuation.ada"
1957
+ },
1958
+ {
1959
+ "match": "\\b(\\w|\\d|_)+\\b",
1960
+ "name": "variable.name.ada"
1961
+ }
1962
+ ]
1963
+ },
1964
+ "2": {
1965
+ "name": "punctuation.ada"
1966
+ }
1967
+ },
1968
+ "end": "(;)",
1969
+ "endCaptures": {
1970
+ "0": {
1971
+ "name": "punctuation.ada"
1972
+ }
1973
+ },
1974
+ "name": "meta.declaration.object.ada",
1975
+ "patterns": [
1976
+ {
1977
+ "begin": "(?<=:)",
1978
+ "end": "(?:(?=;)|(:=)|(\\brenames\\b))",
1979
+ "endCaptures": {
1980
+ "1": {
1981
+ "name": "keyword.operator.new.ada"
1982
+ },
1983
+ "2": {
1984
+ "name": "keyword.ada"
1985
+ }
1986
+ },
1987
+ "patterns": [
1988
+ {
1989
+ "match": "(?i)\\bconstant\\b",
1990
+ "name": "storage.modifier.ada"
1991
+ },
1992
+ {
1993
+ "match": "(?i)\\baliased\\b",
1994
+ "name": "storage.visibility.ada"
1995
+ },
1996
+ {
1997
+ "include": "#aspect_specification"
1998
+ },
1999
+ {
2000
+ "include": "#subtype_mark"
2001
+ }
2002
+ ]
2003
+ },
2004
+ {
2005
+ "begin": "(?<=:=)",
2006
+ "end": "(?=;)",
2007
+ "patterns": [
2008
+ {
2009
+ "include": "#aspect_specification"
2010
+ },
2011
+ {
2012
+ "include": "#expression"
2013
+ }
2014
+ ]
2015
+ },
2016
+ {
2017
+ "begin": "(?<=renames)",
2018
+ "end": "(?=;)",
2019
+ "patterns": [
2020
+ {
2021
+ "include": "#aspect_specification"
2022
+ }
2023
+ ]
2024
+ }
2025
+ ]
2026
+ },
2027
+ "operator": {
2028
+ "patterns": [
2029
+ {
2030
+ "include": "#highest_precedence_operator"
2031
+ },
2032
+ {
2033
+ "include": "#multiplying_operator"
2034
+ },
2035
+ {
2036
+ "include": "#adding_operator"
2037
+ },
2038
+ {
2039
+ "include": "#relational_operator"
2040
+ },
2041
+ {
2042
+ "include": "#logical_operator"
2043
+ }
2044
+ ]
2045
+ },
2046
+ "package_body": {
2047
+ "begin": "(?i)\\b(package)\\s+(body)\\s+((?:\\w|\\d|\\.|_)+)\\b",
2048
+ "beginCaptures": {
2049
+ "1": {
2050
+ "name": "keyword.ada"
2051
+ },
2052
+ "2": {
2053
+ "name": "keyword.ada"
2054
+ },
2055
+ "3": {
2056
+ "patterns": [
2057
+ {
2058
+ "include": "#package_mark"
2059
+ }
2060
+ ]
2061
+ }
2062
+ },
2063
+ "end": "(?i)\\b(end)\\s+(\\3)\\s*(;)",
2064
+ "endCaptures": {
2065
+ "1": {
2066
+ "name": "keyword.ada"
2067
+ },
2068
+ "2": {
2069
+ "patterns": [
2070
+ {
2071
+ "include": "#package_mark"
2072
+ }
2073
+ ]
2074
+ },
2075
+ "3": {
2076
+ "name": "punctuation.ada"
2077
+ }
2078
+ },
2079
+ "name": "meta.declaration.package.body.ada",
2080
+ "patterns": [
2081
+ {
2082
+ "begin": "(?i)\\bbegin\\b",
2083
+ "beginCaptures": {
2084
+ "0": {
2085
+ "name": "keyword.ada"
2086
+ }
2087
+ },
2088
+ "end": "(?i)\\b(?=end)\\b",
2089
+ "patterns": [
2090
+ {
2091
+ "include": "#handled_sequence_of_statements"
2092
+ }
2093
+ ]
2094
+ },
2095
+ {
2096
+ "begin": "(?i)\\bis\\b",
2097
+ "beginCaptures": {
2098
+ "0": {
2099
+ "name": "keyword.ada"
2100
+ }
2101
+ },
2102
+ "end": "(?i)(?=(\\bbegin\\b|\\bend\\b))",
2103
+ "patterns": [
2104
+ {
2105
+ "match": "(?i)\\bprivate\\b",
2106
+ "name": "keyword.ada"
2107
+ },
2108
+ {
2109
+ "include": "#declarative_item"
2110
+ },
2111
+ {
2112
+ "include": "#comment"
2113
+ }
2114
+ ]
2115
+ },
2116
+ {
2117
+ "include": "#aspect_specification"
2118
+ }
2119
+ ]
2120
+ },
2121
+ "package_declaration": {
2122
+ "patterns": [
2123
+ {
2124
+ "include": "#package_specification"
2125
+ }
2126
+ ]
2127
+ },
2128
+ "package_mark": {
2129
+ "match": "\\b(\\w|\\d|\\.|_)+\\b",
2130
+ "name": "entity.name.package.ada"
2131
+ },
2132
+ "package_specification": {
2133
+ "begin": "(?i)\\b(package)\\s+((?:\\w|\\d|\\.|_)+)\\b",
2134
+ "beginCaptures": {
2135
+ "1": {
2136
+ "name": "keyword.ada"
2137
+ },
2138
+ "2": {
2139
+ "patterns": [
2140
+ {
2141
+ "include": "#package_mark"
2142
+ }
2143
+ ]
2144
+ }
2145
+ },
2146
+ "end": "(?i)(?:\\b(end)\\s+(\\2)\\s*)?(;)",
2147
+ "endCaptures": {
2148
+ "1": {
2149
+ "name": "keyword.ada"
2150
+ },
2151
+ "2": {
2152
+ "patterns": [
2153
+ {
2154
+ "include": "#package_mark"
2155
+ }
2156
+ ]
2157
+ },
2158
+ "3": {
2159
+ "name": "punctuation.ada"
2160
+ }
2161
+ },
2162
+ "name": "meta.declaration.package.specification.ada",
2163
+ "patterns": [
2164
+ {
2165
+ "begin": "(?i)\\bis\\b",
2166
+ "beginCaptures": {
2167
+ "0": {
2168
+ "name": "keyword.ada"
2169
+ }
2170
+ },
2171
+ "end": "(?=(end|;))",
2172
+ "patterns": [
2173
+ {
2174
+ "begin": "(?i)\\bnew\\b",
2175
+ "beginCaptures": {
2176
+ "0": {
2177
+ "name": "keyword.operator.new.ada"
2178
+ }
2179
+ },
2180
+ "end": "(?=;)",
2181
+ "name": "meta.declaration.package.generic.ada",
2182
+ "patterns": [
2183
+ {
2184
+ "include": "#package_mark"
2185
+ },
2186
+ {
2187
+ "include": "#actual_parameter_part"
2188
+ }
2189
+ ]
2190
+ },
2191
+ {
2192
+ "match": "(?i)\\bprivate\\b",
2193
+ "name": "keyword.ada"
2194
+ },
2195
+ {
2196
+ "include": "#basic_declarative_item"
2197
+ },
2198
+ {
2199
+ "include": "#comment"
2200
+ }
2201
+ ]
2202
+ },
2203
+ {
2204
+ "include": "#aspect_specification"
2205
+ }
2206
+ ]
2207
+ },
2208
+ "parameter_association": {
2209
+ "patterns": [
2210
+ {
2211
+ "captures": {
2212
+ "1": {
2213
+ "name": "variable.parameter.ada"
2214
+ },
2215
+ "2": {
2216
+ "name": "keyword.other.ada"
2217
+ }
2218
+ },
2219
+ "match": "((?:\\w|\\d|_)+)\\s*(=>)"
2220
+ },
2221
+ {
2222
+ "include": "#expression"
2223
+ }
2224
+ ]
2225
+ },
2226
+ "parameter_profile": {
2227
+ "begin": "\\(",
2228
+ "captures": {
2229
+ "0": {
2230
+ "name": "punctuation.ada"
2231
+ }
2232
+ },
2233
+ "end": "\\)",
2234
+ "patterns": [
2235
+ {
2236
+ "match": ";",
2237
+ "name": "punctuation.ada"
2238
+ },
2239
+ {
2240
+ "include": "#parameter_specification"
2241
+ }
2242
+ ]
2243
+ },
2244
+ "parameter_specification": {
2245
+ "patterns": [
2246
+ {
2247
+ "begin": ":(?!=)",
2248
+ "beginCaptures": {
2249
+ "0": {
2250
+ "name": "punctuation.ada"
2251
+ }
2252
+ },
2253
+ "end": "(?=[:;)])",
2254
+ "name": "meta.type.annotation.ada",
2255
+ "patterns": [
2256
+ {
2257
+ "match": "(?i)\\b(in|out)\\b",
2258
+ "name": "keyword.ada"
2259
+ },
2260
+ {
2261
+ "include": "#subtype_mark"
2262
+ }
2263
+ ]
2264
+ },
2265
+ {
2266
+ "begin": ":=",
2267
+ "beginCaptures": {
2268
+ "0": {
2269
+ "name": "keyword.operator.new.ada"
2270
+ }
2271
+ },
2272
+ "end": "(?=[:;)])",
2273
+ "patterns": [
2274
+ {
2275
+ "include": "#expression"
2276
+ }
2277
+ ]
2278
+ },
2279
+ {
2280
+ "match": ",",
2281
+ "name": "punctuation.ada"
2282
+ },
2283
+ {
2284
+ "match": "\\b(?:\\w|\\d|\\.|_)+\\b",
2285
+ "name": "variable.parameter.ada"
2286
+ },
2287
+ {
2288
+ "include": "#comment"
2289
+ }
2290
+ ]
2291
+ },
2292
+ "positional_array_aggregate": {
2293
+ "name": "meta.definition.array.aggregate.positional.ada",
2294
+ "patterns": [
2295
+ {
2296
+ "captures": {
2297
+ "1": {
2298
+ "name": "keyword.ada"
2299
+ },
2300
+ "2": {
2301
+ "name": "keyword.other.ada"
2302
+ },
2303
+ "3": {
2304
+ "patterns": [
2305
+ {
2306
+ "match": "<>",
2307
+ "name": "keyword.modifier.unknown.ada"
2308
+ },
2309
+ {
2310
+ "include": "#expression"
2311
+ }
2312
+ ]
2313
+ }
2314
+ },
2315
+ "match": "(?i)\\b(others)\\s*(=>)\\s*([^,\\)]+)"
2316
+ },
2317
+ {
2318
+ "include": "#expression"
2319
+ }
2320
+ ]
2321
+ },
2322
+ "pragma": {
2323
+ "begin": "(?i)\\b(pragma)\\s+((?:\\w|\\d|_)+)\\b",
2324
+ "beginCaptures": {
2325
+ "1": {
2326
+ "name": "keyword.ada"
2327
+ },
2328
+ "2": {
2329
+ "name": "keyword.control.directive.ada"
2330
+ }
2331
+ },
2332
+ "end": "(;)",
2333
+ "endCaptures": {
2334
+ "1": {
2335
+ "name": "punctuation.ada"
2336
+ }
2337
+ },
2338
+ "name": "meta.pragma.ada",
2339
+ "patterns": [
2340
+ {
2341
+ "include": "#expression"
2342
+ }
2343
+ ]
2344
+ },
2345
+ "preprocessor": {
2346
+ "name": "meta.preprocessor.ada",
2347
+ "patterns": [
2348
+ {
2349
+ "captures": {
2350
+ "1": {
2351
+ "name": "punctuation.definition.directive.ada"
2352
+ },
2353
+ "2": {
2354
+ "name": "keyword.control.directive.conditional.ada"
2355
+ },
2356
+ "3": {
2357
+ "patterns": [
2358
+ {
2359
+ "include": "#expression"
2360
+ }
2361
+ ]
2362
+ }
2363
+ },
2364
+ "match": "^\\s*(#)(if|elsif)\\s+(.*)$"
2365
+ },
2366
+ {
2367
+ "captures": {
2368
+ "1": {
2369
+ "name": "punctuation.definition.directive.ada"
2370
+ },
2371
+ "2": {
2372
+ "name": "keyword.control.directive.conditional"
2373
+ },
2374
+ "3": {
2375
+ "name": "punctuation.ada"
2376
+ }
2377
+ },
2378
+ "match": "^\\s*(#)(end if)(;)"
2379
+ },
2380
+ {
2381
+ "captures": {
2382
+ "1": {
2383
+ "name": "punctuation.definition.directive.ada"
2384
+ },
2385
+ "2": {
2386
+ "name": "keyword.control.directive.conditional"
2387
+ }
2388
+ },
2389
+ "match": "^\\s*(#)(else)"
2390
+ }
2391
+ ]
2392
+ },
2393
+ "procedure_body": {
2394
+ "begin": "(?i)\\b(overriding\\s+)?(procedure)\\s+((?:\\w|\\d|\\.|_)+)\\b",
2395
+ "beginCaptures": {
2396
+ "1": {
2397
+ "name": "storage.visibility.ada"
2398
+ },
2399
+ "2": {
2400
+ "name": "keyword.ada"
2401
+ },
2402
+ "3": {
2403
+ "name": "entity.name.function.ada"
2404
+ }
2405
+ },
2406
+ "end": "(?i)(?:\\b(end)\\s+(\\3)\\s*)?(;)",
2407
+ "endCaptures": {
2408
+ "1": {
2409
+ "name": "keyword.ada"
2410
+ },
2411
+ "2": {
2412
+ "name": "entity.name.function.ada"
2413
+ },
2414
+ "3": {
2415
+ "name": "punctuation.ada"
2416
+ }
2417
+ },
2418
+ "name": "meta.declaration.procedure.body.ada",
2419
+ "patterns": [
2420
+ {
2421
+ "begin": "(?i)\\bis\\b",
2422
+ "beginCaptures": {
2423
+ "0": {
2424
+ "name": "keyword.ada"
2425
+ }
2426
+ },
2427
+ "end": "(?i)(?=(with|begin|;))",
2428
+ "patterns": [
2429
+ {
2430
+ "begin": "(?i)\\bnew\\b",
2431
+ "beginCaptures": {
2432
+ "0": {
2433
+ "name": "keyword.operator.new.ada"
2434
+ }
2435
+ },
2436
+ "end": "(?=;)",
2437
+ "name": "meta.declaration.package.generic.ada",
2438
+ "patterns": [
2439
+ {
2440
+ "match": "((?:\\w|\\d|\\.|_)+)",
2441
+ "name": "entity.name.function.ada"
2442
+ },
2443
+ {
2444
+ "include": "#actual_parameter_part"
2445
+ }
2446
+ ]
2447
+ },
2448
+ {
2449
+ "match": "(?i)\\b(null|abstract)\\b",
2450
+ "name": "storage.modifier.ada"
2451
+ },
2452
+ {
2453
+ "include": "#declarative_item"
2454
+ }
2455
+ ]
2456
+ },
2457
+ {
2458
+ "begin": "(?i)\\bbegin\\b",
2459
+ "beginCaptures": {
2460
+ "0": {
2461
+ "name": "keyword.ada"
2462
+ }
2463
+ },
2464
+ "end": "(?i)(?=\\bend\\b)",
2465
+ "patterns": [
2466
+ {
2467
+ "include": "#handled_sequence_of_statements"
2468
+ }
2469
+ ]
2470
+ },
2471
+ {
2472
+ "include": "#subprogram_renaming_declaration"
2473
+ },
2474
+ {
2475
+ "include": "#aspect_specification"
2476
+ },
2477
+ {
2478
+ "include": "#parameter_profile"
2479
+ },
2480
+ {
2481
+ "include": "#comment"
2482
+ }
2483
+ ]
2484
+ },
2485
+ "procedure_call_statement": {
2486
+ "begin": "(?i)\\b((?:\\w|\\d|_|\\.)+)\\b",
2487
+ "beginCaptures": {
2488
+ "1": {
2489
+ "name": "entity.name.function.ada"
2490
+ }
2491
+ },
2492
+ "end": ";",
2493
+ "endCaptures": {
2494
+ "0": {
2495
+ "name": "punctuation.ada"
2496
+ }
2497
+ },
2498
+ "name": "meta.statement.call.ada",
2499
+ "patterns": [
2500
+ {
2501
+ "include": "#attribute"
2502
+ },
2503
+ {
2504
+ "include": "#actual_parameter_part"
2505
+ },
2506
+ {
2507
+ "include": "#comment"
2508
+ }
2509
+ ]
2510
+ },
2511
+ "procedure_specification": {
2512
+ "patterns": [
2513
+ {
2514
+ "include": "#procedure_body"
2515
+ }
2516
+ ]
2517
+ },
2518
+ "protected_body": {
2519
+ "begin": "(?i)\\b(protected)\\s+(body)\\s+((?:\\w|\\d|\\.|_)+)\\b",
2520
+ "beginCaptures": {
2521
+ "1": {
2522
+ "name": "storage.modifier.ada"
2523
+ },
2524
+ "2": {
2525
+ "name": "keyword.ada"
2526
+ },
2527
+ "3": {
2528
+ "name": "entity.name.body.ada"
2529
+ }
2530
+ },
2531
+ "end": "(?i)(?:\\b(end)\\s*(\\s\\3)\\s*)(;)",
2532
+ "endCaptures": {
2533
+ "1": {
2534
+ "name": "keyword.ada"
2535
+ },
2536
+ "2": {
2537
+ "name": "entity.name.body.ada"
2538
+ },
2539
+ "3": {
2540
+ "name": "punctuation.ada"
2541
+ }
2542
+ },
2543
+ "name": "meta.declaration.procedure.body.ada",
2544
+ "patterns": [
2545
+ {
2546
+ "begin": "(?i)\\bis\\b",
2547
+ "beginCaptures": {
2548
+ "0": {
2549
+ "name": "keyword.ada"
2550
+ }
2551
+ },
2552
+ "end": "(?i)\\b(?=end)\\b",
2553
+ "patterns": [
2554
+ {
2555
+ "include": "#protected_operation_item"
2556
+ }
2557
+ ]
2558
+ }
2559
+ ]
2560
+ },
2561
+ "protected_element_declaration": {
2562
+ "patterns": [
2563
+ {
2564
+ "include": "#subprogram_specification"
2565
+ },
2566
+ {
2567
+ "include": "#aspect_clause"
2568
+ },
2569
+ {
2570
+ "include": "#entry_declaration"
2571
+ },
2572
+ {
2573
+ "include": "#component_declaration"
2574
+ },
2575
+ {
2576
+ "include": "#pragma"
2577
+ }
2578
+ ]
2579
+ },
2580
+ "protected_operation_item": {
2581
+ "patterns": [
2582
+ {
2583
+ "include": "#subprogram_specification"
2584
+ },
2585
+ {
2586
+ "include": "#subprogram_body"
2587
+ },
2588
+ {
2589
+ "include": "#aspect_clause"
2590
+ },
2591
+ {
2592
+ "include": "#entry_body"
2593
+ }
2594
+ ]
2595
+ },
2596
+ "raise_expression": {
2597
+ "begin": "(?i)\\braise\\b",
2598
+ "beginCaptures": {
2599
+ "0": {
2600
+ "name": "keyword.control.ada"
2601
+ }
2602
+ },
2603
+ "end": "(?=;)",
2604
+ "name": "meta.expression.raise.ada",
2605
+ "patterns": [
2606
+ {
2607
+ "begin": "(?i)\\bwith\\b",
2608
+ "beginCaptures": {
2609
+ "0": {
2610
+ "name": "keyword.ada"
2611
+ }
2612
+ },
2613
+ "end": "(?=(;|\\))",
2614
+ "patterns": [
2615
+ {
2616
+ "include": "#expression"
2617
+ }
2618
+ ]
2619
+ },
2620
+ {
2621
+ "match": "\\b(\\w|\\d|_)+\\b",
2622
+ "name": "entity.name.exception.ada"
2623
+ }
2624
+ ]
2625
+ },
2626
+ "raise_statement": {
2627
+ "begin": "(?i)\\braise\\b",
2628
+ "beginCaptures": {
2629
+ "0": {
2630
+ "name": "keyword.control.ada"
2631
+ }
2632
+ },
2633
+ "end": ";",
2634
+ "endCaptures": {
2635
+ "0": {
2636
+ "name": "punctuation.ada"
2637
+ }
2638
+ },
2639
+ "name": "meta.statement.raise.ada",
2640
+ "patterns": [
2641
+ {
2642
+ "begin": "(?i)\\bwith\\b",
2643
+ "beginCaptures": {
2644
+ "0": {
2645
+ "name": "keyword.control.ada"
2646
+ }
2647
+ },
2648
+ "end": "(?=;)",
2649
+ "patterns": [
2650
+ {
2651
+ "include": "#expression"
2652
+ }
2653
+ ]
2654
+ },
2655
+ {
2656
+ "match": "\\b(\\w|\\d|\\.|_)+\\b",
2657
+ "name": "entity.name.exception.ada"
2658
+ }
2659
+ ]
2660
+ },
2661
+ "range_constraint": {
2662
+ "begin": "(?i)\\brange\\b",
2663
+ "beginCaptures": {
2664
+ "0": {
2665
+ "name": "storage.modifier.ada"
2666
+ }
2667
+ },
2668
+ "end": "(?=(\\bwith\\b|;))",
2669
+ "patterns": [
2670
+ {
2671
+ "match": "\\.\\.",
2672
+ "name": "keyword.ada"
2673
+ },
2674
+ {
2675
+ "match": "<>",
2676
+ "name": "keyword.modifier.unknown.ada"
2677
+ },
2678
+ {
2679
+ "include": "#expression"
2680
+ }
2681
+ ]
2682
+ },
2683
+ "real_type_definition": {
2684
+ "name": "meta.declaration.type.definition.real-type.ada",
2685
+ "patterns": [
2686
+ {
2687
+ "include": "#scalar_constraint"
2688
+ }
2689
+ ]
2690
+ },
2691
+ "record_representation_clause": {
2692
+ "begin": "(?i)\\b(record)\\b",
2693
+ "beginCaptures": {
2694
+ "1": {
2695
+ "name": "storage.modifier.ada"
2696
+ }
2697
+ },
2698
+ "end": "(?i)\\b(end)\\s+(record)\\b",
2699
+ "endCaptures": {
2700
+ "1": {
2701
+ "name": "keyword.ada"
2702
+ },
2703
+ "2": {
2704
+ "name": "storage.modifier.ada"
2705
+ }
2706
+ },
2707
+ "name": "meta.aspect.clause.record.representation.ada",
2708
+ "patterns": [
2709
+ {
2710
+ "include": "#component_clause"
2711
+ },
2712
+ {
2713
+ "include": "#comment"
2714
+ }
2715
+ ]
2716
+ },
2717
+ "record_type_definition": {
2718
+ "patterns": [
2719
+ {
2720
+ "captures": {
2721
+ "1": {
2722
+ "name": "storage.modifier.ada"
2723
+ },
2724
+ "2": {
2725
+ "name": "storage.modifier.ada"
2726
+ },
2727
+ "3": {
2728
+ "name": "storage.modifier.ada"
2729
+ },
2730
+ "4": {
2731
+ "name": "storage.modifier.ada"
2732
+ },
2733
+ "5": {
2734
+ "name": "storage.modifier.ada"
2735
+ }
2736
+ },
2737
+ "match": "(?i)\\b(?:(abstract)\\s+)?(?:(tagged)\\s+)?(?:(limited)\\s+)?(null)\\s+(record)\\b",
2738
+ "name": "meta.declaration.type.definition.record.null.ada",
2739
+ "patterns": [
2740
+ {
2741
+ "include": "#component_item"
2742
+ }
2743
+ ]
2744
+ },
2745
+ {
2746
+ "begin": "(?i)\\b(?:(abstract)\\s+)?(?:(tagged)\\s+)?(?:(limited)\\s+)?(record)\\b",
2747
+ "beginCaptures": {
2748
+ "1": {
2749
+ "name": "storage.modifier.ada"
2750
+ },
2751
+ "2": {
2752
+ "name": "storage.modifier.ada"
2753
+ },
2754
+ "3": {
2755
+ "name": "storage.modifier.ada"
2756
+ },
2757
+ "4": {
2758
+ "name": "storage.modifier.ada"
2759
+ }
2760
+ },
2761
+ "end": "(?i)\\b(end)\\s+(record)\\b",
2762
+ "endCaptures": {
2763
+ "1": {
2764
+ "name": "keyword.ada"
2765
+ },
2766
+ "2": {
2767
+ "name": "storage.modifier.ada"
2768
+ }
2769
+ },
2770
+ "name": "meta.declaration.type.definition.record.ada",
2771
+ "patterns": [
2772
+ {
2773
+ "include": "#component_item"
2774
+ }
2775
+ ]
2776
+ }
2777
+ ]
2778
+ },
2779
+ "regular_type_declaration": {
2780
+ "begin": "(?i)\\b(type)\\b",
2781
+ "beginCaptures": {
2782
+ "1": {
2783
+ "name": "keyword.ada"
2784
+ }
2785
+ },
2786
+ "end": ";",
2787
+ "endCaptures": {
2788
+ "0": {
2789
+ "name": "punctuation.ada"
2790
+ }
2791
+ },
2792
+ "name": "meta.declaration.type.definition.regular.ada",
2793
+ "patterns": [
2794
+ {
2795
+ "begin": "(?i)\\bis\\b",
2796
+ "beginCaptures": {
2797
+ "0": {
2798
+ "name": "keyword.ada"
2799
+ }
2800
+ },
2801
+ "end": "(?i)(?=(with(?!\\s+(private))|;))",
2802
+ "patterns": [
2803
+ {
2804
+ "include": "#type_definition"
2805
+ }
2806
+ ]
2807
+ },
2808
+ {
2809
+ "begin": "(?i)\\b(?<=type)\\b",
2810
+ "end": "(?i)(?=(is|;))",
2811
+ "patterns": [
2812
+ {
2813
+ "include": "#known_discriminant_part"
2814
+ },
2815
+ {
2816
+ "include": "#subtype_mark"
2817
+ }
2818
+ ]
2819
+ },
2820
+ {
2821
+ "include": "#aspect_specification"
2822
+ }
2823
+ ]
2824
+ },
2825
+ "relational_operator": {
2826
+ "match": "(=|/=|<|<=|>|>=)",
2827
+ "name": "keyword.operator.relational.ada"
2828
+ },
2829
+ "requeue_statement": {
2830
+ "begin": "(?i)\\brequeue\\b",
2831
+ "beginCaptures": {
2832
+ "0": {
2833
+ "name": "keyword.control.ada"
2834
+ }
2835
+ },
2836
+ "end": ";",
2837
+ "endCaptures": {
2838
+ "0": {
2839
+ "name": "punctuation.ada"
2840
+ }
2841
+ },
2842
+ "name": "meta.statement.requeue.ada",
2843
+ "patterns": [
2844
+ {
2845
+ "match": "(?i)\\b(with|abort)\\b",
2846
+ "name": "keyword.control.ada"
2847
+ },
2848
+ {
2849
+ "match": "\\b(\\w|\\d|\\.|_)+\\b",
2850
+ "name": "entity.name.function.ada"
2851
+ }
2852
+ ]
2853
+ },
2854
+ "result_profile": {
2855
+ "begin": "(?i)\\breturn\\b",
2856
+ "beginCaptures": {
2857
+ "0": {
2858
+ "name": "keyword.ada"
2859
+ }
2860
+ },
2861
+ "end": "(?=(is|with|renames|;))",
2862
+ "patterns": [
2863
+ {
2864
+ "include": "#subtype_mark"
2865
+ }
2866
+ ]
2867
+ },
2868
+ "return_statement": {
2869
+ "begin": "(?i)\\breturn\\b",
2870
+ "beginCaptures": {
2871
+ "0": {
2872
+ "name": "keyword.control.ada"
2873
+ }
2874
+ },
2875
+ "end": ";",
2876
+ "endCaptures": {
2877
+ "0": {
2878
+ "name": "punctuation.ada"
2879
+ }
2880
+ },
2881
+ "name": "meta.statement.return.ada",
2882
+ "patterns": [
2883
+ {
2884
+ "begin": "(?i)\\bdo\\b",
2885
+ "beginCaptures": {
2886
+ "0": {
2887
+ "name": "keyword.control.ada"
2888
+ }
2889
+ },
2890
+ "end": "(?i)\\b(end)\\s+(return)\\s*(?=;)",
2891
+ "endCaptures": {
2892
+ "1": {
2893
+ "name": "keyword.control.ada"
2894
+ },
2895
+ "2": {
2896
+ "name": "keyword.control.ada"
2897
+ }
2898
+ },
2899
+ "patterns": [
2900
+ {
2901
+ "include": "#label"
2902
+ },
2903
+ {
2904
+ "include": "#statement"
2905
+ }
2906
+ ]
2907
+ },
2908
+ {
2909
+ "captures": {
2910
+ "1": {
2911
+ "name": "variable.name.ada"
2912
+ },
2913
+ "2": {
2914
+ "name": "punctuation.ada"
2915
+ },
2916
+ "3": {
2917
+ "name": "entity.name.type.ada"
2918
+ }
2919
+ },
2920
+ "match": "\\b((?:\\w|\\d|_)+)\\s*(:)\\s*((?:\\w|\\d|\\.|_)+)\\b"
2921
+ },
2922
+ {
2923
+ "match": ":=",
2924
+ "name": "keyword.operator.new.ada"
2925
+ },
2926
+ {
2927
+ "include": "#expression"
2928
+ }
2929
+ ]
2930
+ },
2931
+ "scalar_constraint": {
2932
+ "name": "meta.declaration.constraint.scalar.ada",
2933
+ "patterns": [
2934
+ {
2935
+ "begin": "(?i)\\b(digits|delta)\\b",
2936
+ "beginCaptures": {
2937
+ "1": {
2938
+ "name": "storage.modifier.ada"
2939
+ }
2940
+ },
2941
+ "end": "(?i)(?=\\brange\\b|\\bdigits\\b|\\bwith\\b|;)",
2942
+ "patterns": [
2943
+ {
2944
+ "include": "#expression"
2945
+ }
2946
+ ]
2947
+ },
2948
+ {
2949
+ "include": "#range_constraint"
2950
+ },
2951
+ {
2952
+ "include": "#expression"
2953
+ }
2954
+ ]
2955
+ },
2956
+ "select_alternative": {
2957
+ "patterns": [
2958
+ {
2959
+ "begin": "(?i)\\bterminate\\b",
2960
+ "beginCaptures": {
2961
+ "0": {
2962
+ "name": "keyword.control.ada"
2963
+ }
2964
+ },
2965
+ "end": ";",
2966
+ "endCaptures": {
2967
+ "0": {
2968
+ "name": "punctuation.ada"
2969
+ }
2970
+ }
2971
+ },
2972
+ {
2973
+ "include": "#statement"
2974
+ }
2975
+ ]
2976
+ },
2977
+ "select_statement": {
2978
+ "begin": "(?i)\\bselect\\b",
2979
+ "beginCaptures": {
2980
+ "0": {
2981
+ "name": "keyword.control.ada"
2982
+ }
2983
+ },
2984
+ "end": "(?i)\\b(end)\\s+(select)\\b",
2985
+ "endCaptures": {
2986
+ "1": {
2987
+ "name": "keyword.control.ada"
2988
+ },
2989
+ "2": {
2990
+ "name": "keyword.control.ada"
2991
+ }
2992
+ },
2993
+ "name": "meta.statement.select.ada",
2994
+ "patterns": [
2995
+ {
2996
+ "begin": "(?i)\\b(?:(or)|(?<=select))\\b",
2997
+ "beginCaptures": {
2998
+ "1": {
2999
+ "name": "keyword.control.ada"
3000
+ }
3001
+ },
3002
+ "end": "(?i)\\b(?=(or|else|end))\\b",
3003
+ "patterns": [
3004
+ {
3005
+ "include": "#guard"
3006
+ },
3007
+ {
3008
+ "include": "#select_alternative"
3009
+ }
3010
+ ]
3011
+ },
3012
+ {
3013
+ "begin": "(?i)\\belse\\b",
3014
+ "beginCaptures": {
3015
+ "0": {
3016
+ "name": "keyword.control.ada"
3017
+ }
3018
+ },
3019
+ "end": "(?i)\\b(?=end)\\b",
3020
+ "patterns": [
3021
+ {
3022
+ "include": "#statement"
3023
+ }
3024
+ ]
3025
+ }
3026
+ ]
3027
+ },
3028
+ "signed_integer_type_definition": {
3029
+ "patterns": [
3030
+ {
3031
+ "include": "#range_constraint"
3032
+ }
3033
+ ]
3034
+ },
3035
+ "simple_loop_statement": {
3036
+ "begin": "(?i)\\bloop\\b",
3037
+ "beginCaptures": {
3038
+ "0": {
3039
+ "name": "keyword.control.ada"
3040
+ }
3041
+ },
3042
+ "end": "(?i)\\b(end)\\s+(loop)(\\s+(?:\\w|\\d|_)+)?\\s*(;)",
3043
+ "endCaptures": {
3044
+ "1": {
3045
+ "name": "keyword.control.ada"
3046
+ },
3047
+ "2": {
3048
+ "name": "keyword.control.ada"
3049
+ },
3050
+ "3": {
3051
+ "name": "entity.name.label.ada"
3052
+ },
3053
+ "4": {
3054
+ "name": "punctuation.ada"
3055
+ }
3056
+ },
3057
+ "name": "meta.statement.loop.ada",
3058
+ "patterns": [
3059
+ {
3060
+ "include": "#statement"
3061
+ }
3062
+ ]
3063
+ },
3064
+ "single_protected_declaration": {
3065
+ "begin": "(?i)\\b(protected)\\s+((?:\\w|\\d|_)+)\\b",
3066
+ "beginCaptures": {
3067
+ "1": {
3068
+ "name": "keyword.ada"
3069
+ },
3070
+ "2": {
3071
+ "name": "entity.name.protected.ada"
3072
+ }
3073
+ },
3074
+ "end": "(?i)(?:\\b(end)\\s*(\\s\\2)?\\s*)?(;)",
3075
+ "endCaptures": {
3076
+ "1": {
3077
+ "name": "keyword.ada"
3078
+ },
3079
+ "2": {
3080
+ "name": "entity.name.protected.ada"
3081
+ },
3082
+ "3": {
3083
+ "name": "punctuation.ada"
3084
+ }
3085
+ },
3086
+ "name": "meta.declaration.protected.ada",
3087
+ "patterns": [
3088
+ {
3089
+ "begin": "(?i)\\bis\\b",
3090
+ "beginCaptures": {
3091
+ "0": {
3092
+ "name": "keyword.ada"
3093
+ }
3094
+ },
3095
+ "end": "(?i)(?=(\\bend\\b|;))",
3096
+ "patterns": [
3097
+ {
3098
+ "begin": "(?i)\\bnew\\b",
3099
+ "captures": {
3100
+ "0": {
3101
+ "name": "keyword.ada"
3102
+ }
3103
+ },
3104
+ "end": "(?i)\\bwith\\b",
3105
+ "patterns": [
3106
+ {
3107
+ "match": "(?i)\\band\\b",
3108
+ "name": "keyword.ada"
3109
+ },
3110
+ {
3111
+ "include": "#subtype_mark"
3112
+ },
3113
+ {
3114
+ "include": "#comment"
3115
+ }
3116
+ ]
3117
+ },
3118
+ {
3119
+ "match": "(?i)\\bprivate\\b",
3120
+ "name": "keyword.ada"
3121
+ },
3122
+ {
3123
+ "include": "#protected_element_declaration"
3124
+ },
3125
+ {
3126
+ "include": "#comment"
3127
+ }
3128
+ ]
3129
+ },
3130
+ {
3131
+ "include": "#comment"
3132
+ }
3133
+ ]
3134
+ },
3135
+ "single_task_declaration": {
3136
+ "begin": "(?i)\\b(task)\\s+((?:\\w|\\d|_)+)\\b",
3137
+ "beginCaptures": {
3138
+ "1": {
3139
+ "name": "keyword.ada"
3140
+ },
3141
+ "2": {
3142
+ "name": "entity.name.task.ada"
3143
+ }
3144
+ },
3145
+ "end": "(?i)(?:\\b(end)\\s*(\\s\\2)?\\s*)?(;)",
3146
+ "endCaptures": {
3147
+ "1": {
3148
+ "name": "keyword.ada"
3149
+ },
3150
+ "2": {
3151
+ "name": "entity.name.task.ada"
3152
+ },
3153
+ "3": {
3154
+ "name": "punctuation.ada"
3155
+ }
3156
+ },
3157
+ "patterns": [
3158
+ {
3159
+ "begin": "(?i)\\bis\\b",
3160
+ "beginCaptures": {
3161
+ "0": {
3162
+ "name": "keyword.ada"
3163
+ }
3164
+ },
3165
+ "end": "(?i)\\b(?=end)\\b",
3166
+ "patterns": [
3167
+ {
3168
+ "begin": "(?i)\\bnew\\b",
3169
+ "captures": {
3170
+ "0": {
3171
+ "name": "keyword.ada"
3172
+ }
3173
+ },
3174
+ "end": "(?i)\\bwith\\b",
3175
+ "patterns": [
3176
+ {
3177
+ "match": "(?i)\\band\\b",
3178
+ "name": "keyword.ada"
3179
+ },
3180
+ {
3181
+ "include": "#subtype_mark"
3182
+ },
3183
+ {
3184
+ "include": "#comment"
3185
+ }
3186
+ ]
3187
+ },
3188
+ {
3189
+ "match": "(?i)\\bprivate\\b",
3190
+ "name": "keyword.ada"
3191
+ },
3192
+ {
3193
+ "include": "#task_item"
3194
+ },
3195
+ {
3196
+ "include": "#comment"
3197
+ }
3198
+ ]
3199
+ },
3200
+ {
3201
+ "include": "#comment"
3202
+ }
3203
+ ]
3204
+ },
3205
+ "statement": {
3206
+ "patterns": [
3207
+ {
3208
+ "begin": "(?i)\\bbegin\\b",
3209
+ "beginCaptures": {
3210
+ "0": {
3211
+ "name": "keyword.ada"
3212
+ }
3213
+ },
3214
+ "end": "(?i)\\b(end)\\s*(;)",
3215
+ "endCaptures": {
3216
+ "1": {
3217
+ "name": "keyword.ada"
3218
+ },
3219
+ "2": {
3220
+ "name": "punctuation.ada"
3221
+ }
3222
+ },
3223
+ "patterns": [
3224
+ {
3225
+ "include": "#handled_sequence_of_statements"
3226
+ }
3227
+ ]
3228
+ },
3229
+ {
3230
+ "include": "#label"
3231
+ },
3232
+ {
3233
+ "include": "#null_statement"
3234
+ },
3235
+ {
3236
+ "include": "#return_statement"
3237
+ },
3238
+ {
3239
+ "include": "#assignment_statement"
3240
+ },
3241
+ {
3242
+ "include": "#exit_statement"
3243
+ },
3244
+ {
3245
+ "include": "#goto_statement"
3246
+ },
3247
+ {
3248
+ "include": "#requeue_statement"
3249
+ },
3250
+ {
3251
+ "include": "#delay_statement"
3252
+ },
3253
+ {
3254
+ "include": "#abort_statement"
3255
+ },
3256
+ {
3257
+ "include": "#raise_statement"
3258
+ },
3259
+ {
3260
+ "include": "#if_statement"
3261
+ },
3262
+ {
3263
+ "include": "#case_statement"
3264
+ },
3265
+ {
3266
+ "include": "#loop_statement"
3267
+ },
3268
+ {
3269
+ "include": "#block_statement"
3270
+ },
3271
+ {
3272
+ "include": "#select_statement"
3273
+ },
3274
+ {
3275
+ "include": "#accept_statement"
3276
+ },
3277
+ {
3278
+ "include": "#pragma"
3279
+ },
3280
+ {
3281
+ "include": "#procedure_call_statement"
3282
+ },
3283
+ {
3284
+ "include": "#comment"
3285
+ }
3286
+ ]
3287
+ },
3288
+ "string_literal": {
3289
+ "captures": {
3290
+ "1": {
3291
+ "name": "punctuation.definition.string.ada"
3292
+ },
3293
+ "2": {
3294
+ "name": "punctuation.definition.string.ada"
3295
+ }
3296
+ },
3297
+ "match": "(\").*?(\")",
3298
+ "name": "string.quoted.double.ada"
3299
+ },
3300
+ "subprogram_body": {
3301
+ "name": "meta.declaration.subprogram.body.ada",
3302
+ "patterns": [
3303
+ {
3304
+ "include": "#procedure_body"
3305
+ },
3306
+ {
3307
+ "include": "#function_body"
3308
+ }
3309
+ ]
3310
+ },
3311
+ "subprogram_renaming_declaration": {
3312
+ "begin": "(?i)\\brenames\\b",
3313
+ "beginCaptures": {
3314
+ "0": {
3315
+ "name": "keyword.ada"
3316
+ }
3317
+ },
3318
+ "end": "(?=(with|;))",
3319
+ "patterns": [
3320
+ {
3321
+ "match": "(?:\\w|\\d|_|\\.)+",
3322
+ "name": "entity.name.function.ada"
3323
+ }
3324
+ ]
3325
+ },
3326
+ "subprogram_specification": {
3327
+ "name": "meta.declaration.subprogram.specification.ada",
3328
+ "patterns": [
3329
+ {
3330
+ "include": "#procedure_specification"
3331
+ },
3332
+ {
3333
+ "include": "#function_specification"
3334
+ }
3335
+ ]
3336
+ },
3337
+ "subtype_declaration": {
3338
+ "begin": "(?i)\\bsubtype\\b",
3339
+ "beginCaptures": {
3340
+ "0": {
3341
+ "name": "keyword.ada"
3342
+ }
3343
+ },
3344
+ "end": ";",
3345
+ "endCaptures": {
3346
+ "0": {
3347
+ "name": "punctuation.ada"
3348
+ }
3349
+ },
3350
+ "name": "meta.declaration.subtype.ada",
3351
+ "patterns": [
3352
+ {
3353
+ "begin": "(?i)\\bis\\b",
3354
+ "beginCaptures": {
3355
+ "0": {
3356
+ "name": "keyword.ada"
3357
+ }
3358
+ },
3359
+ "end": "(?=;)",
3360
+ "patterns": [
3361
+ {
3362
+ "match": "(?i)\\b(not\\s+null)\\b",
3363
+ "name": "storage.modifier.ada"
3364
+ },
3365
+ {
3366
+ "include": "#composite_constraint"
3367
+ },
3368
+ {
3369
+ "include": "#aspect_specification"
3370
+ },
3371
+ {
3372
+ "include": "#subtype_indication"
3373
+ }
3374
+ ]
3375
+ },
3376
+ {
3377
+ "begin": "(?i)(?<=subtype)",
3378
+ "end": "(?i)\\b(?=is)\\b",
3379
+ "patterns": [
3380
+ {
3381
+ "include": "#subtype_mark"
3382
+ }
3383
+ ]
3384
+ }
3385
+ ]
3386
+ },
3387
+ "subtype_indication": {
3388
+ "name": "meta.declaration.indication.subtype.ada",
3389
+ "patterns": [
3390
+ {
3391
+ "include": "#scalar_constraint"
3392
+ },
3393
+ {
3394
+ "include": "#subtype_mark"
3395
+ }
3396
+ ]
3397
+ },
3398
+ "subtype_mark": {
3399
+ "patterns": [
3400
+ {
3401
+ "match": "(?i)\\b(access|aliased|not\\s+null|constant)\\b",
3402
+ "name": "storage.visibility.ada"
3403
+ },
3404
+ {
3405
+ "include": "#attribute"
3406
+ },
3407
+ {
3408
+ "include": "#actual_parameter_part"
3409
+ },
3410
+ {
3411
+ "begin": "(?i)\\b(procedure|function)\\b",
3412
+ "beginCaptures": {
3413
+ "0": {
3414
+ "name": "keyword.ada"
3415
+ }
3416
+ },
3417
+ "end": "(?=(;|\\)))",
3418
+ "patterns": [
3419
+ {
3420
+ "include": "#parameter_profile"
3421
+ },
3422
+ {
3423
+ "begin": "(?i)\\breturn\\b",
3424
+ "beginCaptures": {
3425
+ "0": {
3426
+ "name": "keyword.ada"
3427
+ }
3428
+ },
3429
+ "end": "(?=(;|\\)))",
3430
+ "patterns": [
3431
+ {
3432
+ "include": "#subtype_mark"
3433
+ }
3434
+ ]
3435
+ }
3436
+ ]
3437
+ },
3438
+ {
3439
+ "captures": {
3440
+ "0": {
3441
+ "patterns": [
3442
+ {
3443
+ "match": "[_.]",
3444
+ "name": "punctuation.ada"
3445
+ }
3446
+ ]
3447
+ }
3448
+ },
3449
+ "match": "\\b(?:\\w|\\d|\\.|_)+\\b",
3450
+ "name": "entity.name.type.ada"
3451
+ },
3452
+ {
3453
+ "include": "#comment"
3454
+ }
3455
+ ]
3456
+ },
3457
+ "task_body": {
3458
+ "begin": "(?i)\\b(task)\\s+(body)\\s+((\\w|\\d|\\.|_)+)\\b",
3459
+ "beginCaptures": {
3460
+ "1": {
3461
+ "name": "keyword.ada"
3462
+ },
3463
+ "2": {
3464
+ "name": "keyword.ada"
3465
+ },
3466
+ "3": {
3467
+ "name": "entity.name.task.ada"
3468
+ }
3469
+ },
3470
+ "end": "(?i)(?:\\b(end)\\s*(?:\\s(\\3))?\\s*)?(;)",
3471
+ "endCaptures": {
3472
+ "1": {
3473
+ "name": "keyword.ada"
3474
+ },
3475
+ "2": {
3476
+ "name": "entity.name.task.ada"
3477
+ },
3478
+ "3": {
3479
+ "name": "punctuation.ada"
3480
+ }
3481
+ },
3482
+ "name": "meta.declaration.task.body.ada",
3483
+ "patterns": [
3484
+ {
3485
+ "begin": "(?i)\\bbegin\\b",
3486
+ "beginCaptures": {
3487
+ "0": {
3488
+ "name": "keyword.ada"
3489
+ }
3490
+ },
3491
+ "end": "(?i)(?=end)",
3492
+ "patterns": [
3493
+ {
3494
+ "include": "#handled_sequence_of_statements"
3495
+ }
3496
+ ]
3497
+ },
3498
+ {
3499
+ "include": "#aspect_specification"
3500
+ },
3501
+ {
3502
+ "begin": "(?i)\\bis\\b",
3503
+ "beginCaptures": {
3504
+ "0": {
3505
+ "name": "keyword.ada"
3506
+ }
3507
+ },
3508
+ "end": "(?i)(?=(with|begin))",
3509
+ "patterns": [
3510
+ {
3511
+ "include": "#declarative_item"
3512
+ }
3513
+ ]
3514
+ }
3515
+ ]
3516
+ },
3517
+ "task_item": {
3518
+ "patterns": [
3519
+ {
3520
+ "include": "#aspect_clause"
3521
+ },
3522
+ {
3523
+ "include": "#entry_declaration"
3524
+ }
3525
+ ]
3526
+ },
3527
+ "task_type_declaration": {
3528
+ "begin": "(?i)\\b(task)\\s+(type)\\s+((\\w|\\d|\\.|_)+)\\b",
3529
+ "beginCaptures": {
3530
+ "1": {
3531
+ "name": "storage.modifier.ada"
3532
+ },
3533
+ "2": {
3534
+ "name": "keyword.ada"
3535
+ },
3536
+ "3": {
3537
+ "name": "entity.name.task.ada"
3538
+ }
3539
+ },
3540
+ "end": "(?i)(?:\\b(end)\\s*(?:\\s(\\3))?\\s*)?(;)",
3541
+ "endCaptures": {
3542
+ "1": {
3543
+ "name": "keyword.ada"
3544
+ },
3545
+ "2": {
3546
+ "name": "entity.name.task.ada"
3547
+ },
3548
+ "3": {
3549
+ "name": "punctuation.ada"
3550
+ }
3551
+ },
3552
+ "name": "meta.declaration.type.task.ada",
3553
+ "patterns": [
3554
+ {
3555
+ "include": "#known_discriminant_part"
3556
+ },
3557
+ {
3558
+ "begin": "(?i)\\bis\\b",
3559
+ "beginCaptures": {
3560
+ "0": {
3561
+ "name": "keyword.ada"
3562
+ }
3563
+ },
3564
+ "end": "(?i)\\b(?=end)\\b",
3565
+ "patterns": [
3566
+ {
3567
+ "begin": "(?i)\\bnew\\b",
3568
+ "captures": {
3569
+ "0": {
3570
+ "name": "keyword.ada"
3571
+ }
3572
+ },
3573
+ "end": "(?i)\\bwith\\b",
3574
+ "patterns": [
3575
+ {
3576
+ "match": "(?i)\\band\\b",
3577
+ "name": "keyword.ada"
3578
+ },
3579
+ {
3580
+ "include": "#subtype_mark"
3581
+ },
3582
+ {
3583
+ "include": "#comment"
3584
+ }
3585
+ ]
3586
+ },
3587
+ {
3588
+ "match": "(?i)\\bprivate\\b",
3589
+ "name": "keyword.ada"
3590
+ },
3591
+ {
3592
+ "include": "#task_item"
3593
+ },
3594
+ {
3595
+ "include": "#comment"
3596
+ }
3597
+ ]
3598
+ },
3599
+ {
3600
+ "include": "#comment"
3601
+ }
3602
+ ]
3603
+ },
3604
+ "type_declaration": {
3605
+ "name": "meta.declaration.type.ada",
3606
+ "patterns": [
3607
+ {
3608
+ "include": "#full_type_declaration"
3609
+ }
3610
+ ]
3611
+ },
3612
+ "type_definition": {
3613
+ "name": "meta.declaration.type.definition.ada",
3614
+ "patterns": [
3615
+ {
3616
+ "include": "#enumeration_type_definition"
3617
+ },
3618
+ {
3619
+ "include": "#integer_type_definition"
3620
+ },
3621
+ {
3622
+ "include": "#real_type_definition"
3623
+ },
3624
+ {
3625
+ "include": "#array_type_definition"
3626
+ },
3627
+ {
3628
+ "include": "#record_type_definition"
3629
+ },
3630
+ {
3631
+ "include": "#access_type_definition"
3632
+ },
3633
+ {
3634
+ "include": "#interface_type_definition"
3635
+ },
3636
+ {
3637
+ "include": "#derived_type_definition"
3638
+ }
3639
+ ]
3640
+ },
3641
+ "use_clause": {
3642
+ "name": "meta.context.use.ada",
3643
+ "patterns": [
3644
+ {
3645
+ "include": "#use_type_clause"
3646
+ },
3647
+ {
3648
+ "include": "#use_package_clause"
3649
+ }
3650
+ ]
3651
+ },
3652
+ "use_package_clause": {
3653
+ "begin": "(?i)\\buse\\b",
3654
+ "beginCaptures": {
3655
+ "0": {
3656
+ "name": "keyword.other.using.ada"
3657
+ }
3658
+ },
3659
+ "end": ";",
3660
+ "endCaptures": {
3661
+ "0": {
3662
+ "name": "punctuation.ada"
3663
+ }
3664
+ },
3665
+ "name": "meta.context.use.package.ada",
3666
+ "patterns": [
3667
+ {
3668
+ "match": ",",
3669
+ "name": "punctuation.ada"
3670
+ },
3671
+ {
3672
+ "include": "#package_mark"
3673
+ }
3674
+ ]
3675
+ },
3676
+ "use_type_clause": {
3677
+ "begin": "(?i)\\b(use)\\s+(?:(all)\\s+)?(type)\\b",
3678
+ "beginCaptures": {
3679
+ "1": {
3680
+ "name": "keyword.other.using.ada"
3681
+ },
3682
+ "2": {
3683
+ "name": "keyword.modifier.ada"
3684
+ },
3685
+ "3": {
3686
+ "name": "keyword.modifier.ada"
3687
+ }
3688
+ },
3689
+ "end": ";",
3690
+ "endCaptures": {
3691
+ "0": {
3692
+ "name": "punctuation.ada"
3693
+ }
3694
+ },
3695
+ "name": "meta.context.use.type.ada",
3696
+ "patterns": [
3697
+ {
3698
+ "match": ",",
3699
+ "name": "punctuation.ada"
3700
+ },
3701
+ {
3702
+ "include": "#subtype_mark"
3703
+ }
3704
+ ]
3705
+ },
3706
+ "value": {
3707
+ "patterns": [
3708
+ {
3709
+ "include": "#based_literal"
3710
+ },
3711
+ {
3712
+ "include": "#decimal_literal"
3713
+ },
3714
+ {
3715
+ "include": "#character_literal"
3716
+ },
3717
+ {
3718
+ "include": "#string_literal"
3719
+ }
3720
+ ]
3721
+ },
3722
+ "variant_part": {
3723
+ "begin": "(?i)\\bcase\\b",
3724
+ "beginCaptures": {
3725
+ "0": {
3726
+ "name": "keyword.ada"
3727
+ }
3728
+ },
3729
+ "end": "(?i)\\b(end)\\s+(case);",
3730
+ "endCaptures": {
3731
+ "1": {
3732
+ "name": "keyword.ada"
3733
+ },
3734
+ "2": {
3735
+ "name": "keyword.ada"
3736
+ },
3737
+ "3": {
3738
+ "name": "punctuation.ada"
3739
+ }
3740
+ },
3741
+ "name": "meta.declaration.variant.ada",
3742
+ "patterns": [
3743
+ {
3744
+ "begin": "(?i)\\b(?<=case)\\b",
3745
+ "end": "(?i)\\bis\\b",
3746
+ "endCaptures": {
3747
+ "0": {
3748
+ "name": "keyword.ada"
3749
+ }
3750
+ },
3751
+ "patterns": [
3752
+ {
3753
+ "match": "(?:\\w|\\d|_)+",
3754
+ "name": "variable.name.ada"
3755
+ },
3756
+ {
3757
+ "include": "#comment"
3758
+ }
3759
+ ]
3760
+ },
3761
+ {
3762
+ "begin": "(?i)\\b(?<=is)\\b",
3763
+ "end": "(?i)\\b(?=end)\\b",
3764
+ "patterns": [
3765
+ {
3766
+ "begin": "(?i)\\bwhen\\b",
3767
+ "beginCaptures": {
3768
+ "0": {
3769
+ "name": "keyword.ada"
3770
+ }
3771
+ },
3772
+ "end": "=>",
3773
+ "endCaptures": {
3774
+ "0": {
3775
+ "name": "keyword.other.ada"
3776
+ }
3777
+ },
3778
+ "patterns": [
3779
+ {
3780
+ "match": "\\|",
3781
+ "name": "punctuation.ada"
3782
+ },
3783
+ {
3784
+ "match": "(?i)\\bothers\\b",
3785
+ "name": "keyword.ada"
3786
+ },
3787
+ {
3788
+ "include": "#expression"
3789
+ }
3790
+ ]
3791
+ },
3792
+ {
3793
+ "include": "#component_item"
3794
+ }
3795
+ ]
3796
+ }
3797
+ ]
3798
+ },
3799
+ "while_loop_statement": {
3800
+ "begin": "(?i)\\bwhile\\b",
3801
+ "beginCaptures": {
3802
+ "0": {
3803
+ "name": "keyword.control.ada"
3804
+ }
3805
+ },
3806
+ "end": "(?i)\\b(end)\\s+(loop)(\\s+(?:\\w|\\d|_)+)?\\s*(;)",
3807
+ "endCaptures": {
3808
+ "1": {
3809
+ "name": "keyword.control.ada"
3810
+ },
3811
+ "2": {
3812
+ "name": "keyword.control.ada"
3813
+ },
3814
+ "3": {
3815
+ "name": "entity.name.label.ada"
3816
+ },
3817
+ "4": {
3818
+ "name": "punctuation.ada"
3819
+ }
3820
+ },
3821
+ "name": "meta.statement.loop.while.ada",
3822
+ "patterns": [
3823
+ {
3824
+ "begin": "(?i)(?<=while)\\b",
3825
+ "end": "(?i)\\bloop\\b",
3826
+ "endCaptures": {
3827
+ "0": {
3828
+ "name": "keyword.control.ada"
3829
+ }
3830
+ },
3831
+ "patterns": [
3832
+ {
3833
+ "include": "#expression"
3834
+ }
3835
+ ]
3836
+ },
3837
+ {
3838
+ "include": "#statement"
3839
+ }
3840
+ ]
3841
+ },
3842
+ "with_clause": {
3843
+ "begin": "(?i)\\b(?:(limited)\\s+)?(?:(private)\\s+)?(with)\\b",
3844
+ "beginCaptures": {
3845
+ "1": {
3846
+ "name": "keyword.modifier.ada"
3847
+ },
3848
+ "2": {
3849
+ "name": "storage.visibility.ada"
3850
+ },
3851
+ "3": {
3852
+ "name": "keyword.other.using.ada"
3853
+ }
3854
+ },
3855
+ "end": ";",
3856
+ "endCaptures": {
3857
+ "0": {
3858
+ "name": "punctuation.ada"
3859
+ }
3860
+ },
3861
+ "name": "meta.context.with.ada",
3862
+ "patterns": [
3863
+ {
3864
+ "match": ",",
3865
+ "name": "punctuation.ada"
3866
+ },
3867
+ {
3868
+ "include": "#package_mark"
3869
+ }
3870
+ ]
3871
+ }
3872
+ },
3873
+ "scopeName": "source.ada"
3874
+ }