PluginProbe
Code Block Pro – Beautiful Syntax Highlighting / 1.7.0
Code Block Pro – Beautiful Syntax Highlighting v1.7.0
1.27.1 1.27.2 1.27.3 1.27.4 1.27.5 1.27.6 1.27.7 1.28.0 1.3.0 1.4.0 1.5.0 1.5.1 1.5.2 1.6.0 1.7.0 1.8.0 1.9.0 1.9.1 1.9.2 1.9.3 trunk 1.1.0 1.10.0 1.11.0 1.11.1 All 63 releases
code-block-pro / build / shiki / languages / ada.tmLanguage.json

ada.tmLanguage.json in Code Block Pro – Beautiful Syntax Highlighting 1.7.0, at build/shiki/languages/ada.tmLanguage.json

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