PluginProbe
Code Block Pro – Beautiful Syntax Highlighting / 1.8.0
Code Block Pro – Beautiful Syntax Highlighting v1.8.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 / d.tmLanguage.json

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

3,154 lines 72.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 {
2 "fileTypes": ["d", "di", "dpp"],
3 "name": "d",
4 "scopeName": "source.d",
5 "patterns": [
6 {
7 "include": "#comment"
8 },
9 {
10 "include": "#type"
11 },
12 {
13 "include": "#statement"
14 },
15 {
16 "include": "#expression"
17 }
18 ],
19 "repository": {
20 "type": {
21 "patterns": [
22 {
23 "include": "#typeof"
24 },
25 {
26 "include": "#base-type"
27 },
28 {
29 "include": "#type-ctor"
30 },
31 {
32 "begin": "!\\(",
33 "end": "\\)",
34 "patterns": [
35 {
36 "include": "#type"
37 },
38 {
39 "include": "#expression"
40 }
41 ]
42 }
43 ]
44 },
45 "base-type": {
46 "patterns": [
47 {
48 "match": "\\b(auto|bool|byte|ubyte|short|ushort|int|uint|long|ulong|char|wchar|dchar|float|double|real|ifloat|idouble|ireal|cfloat|cdouble|creal|void)\\b",
49 "name": "storage.type.basic-type.d"
50 },
51 {
52 "match": "\\b(string|wstring|dstring|size_t|ptrdiff_t)\\b(?!\\s*=)",
53 "name": "storage.type.basic-type.d"
54 }
55 ]
56 },
57 "extended-type": {
58 "patterns": [
59 {
60 "match": "\\b((\\.\\s*)?[_\\w][_\\d\\w]*)(\\s*\\.\\s*[_\\w][_\\d\\w]*)*\\b",
61 "name": "entity.name.type.d"
62 },
63 {
64 "begin": "\\[",
65 "beginCaptures": {
66 "0": {
67 "name": "storage.type.array.expression.begin.d"
68 }
69 },
70 "end": "\\]",
71 "endCaptures": {
72 "0": {
73 "name": "storage.type.array.expression.end.d"
74 }
75 },
76 "patterns": [
77 {
78 "match": "\\.\\.|\\$",
79 "name": "keyword.operator.slice.d"
80 },
81 {
82 "include": "#type"
83 },
84 {
85 "include": "#expression"
86 }
87 ]
88 }
89 ]
90 },
91 "type-ctor": {
92 "patterns": [
93 {
94 "match": "(const|immutable|inout|shared)\\b",
95 "name": "storage.type.modifier.d"
96 }
97 ]
98 },
99 "typeof": {
100 "begin": "typeof\\s*\\(",
101 "end": "\\)",
102 "name": "keyword.token.typeof.d",
103 "patterns": [
104 {
105 "match": "return",
106 "name": "keyword.control.return.d"
107 },
108 {
109 "include": "#expression"
110 }
111 ]
112 },
113 "expression": {
114 "patterns": [
115 {
116 "include": "#index-expression"
117 },
118 {
119 "include": "#expression-no-index"
120 }
121 ]
122 },
123 "expression-no-index": {
124 "patterns": [
125 {
126 "include": "#function-literal"
127 },
128 {
129 "include": "#assert-expression"
130 },
131 {
132 "include": "#assign-expression"
133 },
134 {
135 "include": "#mixin-expression"
136 },
137 {
138 "include": "#import-expression"
139 },
140 {
141 "include": "#traits-expression"
142 },
143 {
144 "include": "#is-expression"
145 },
146 {
147 "include": "#typeid-expression"
148 },
149 {
150 "include": "#shift-expression"
151 },
152 {
153 "include": "#logical-expression"
154 },
155 {
156 "include": "#rel-expression"
157 },
158 {
159 "include": "#bitwise-expression"
160 },
161 {
162 "include": "#identity-expression"
163 },
164 {
165 "include": "#in-expression"
166 },
167 {
168 "include": "#conditional-expression"
169 },
170 {
171 "include": "#arithmetic-expression"
172 },
173 {
174 "include": "#new-expression"
175 },
176 {
177 "include": "#delete-expression"
178 },
179 {
180 "include": "#cast-expression"
181 },
182 {
183 "include": "#type-specialization"
184 },
185 {
186 "include": "#comma"
187 },
188 {
189 "include": "#special-keyword"
190 },
191 {
192 "include": "#functions"
193 },
194 {
195 "include": "#type"
196 },
197 {
198 "include": "#parentheses-expression"
199 },
200 {
201 "include": "#lexical"
202 }
203 ]
204 },
205 "assign-expression": {
206 "patterns": [
207 {
208 "match": ">>>=|\\^\\^=|>>=|<<=|~=|\\^=|\\|=|&=|%=|/=|\\*=|-=|\\+=|=(?!>)",
209 "name": "keyword.operator.assign.d"
210 }
211 ]
212 },
213 "conditional-expression": {
214 "patterns": [
215 {
216 "match": "\\s(\\?|:)\\s",
217 "name": "keyword.operator.ternary.d"
218 }
219 ]
220 },
221 "logical-expression": {
222 "patterns": [
223 {
224 "match": "\\|\\||&&|==|!=|!",
225 "name": "keyword.operator.logical.d"
226 }
227 ]
228 },
229 "bitwise-expression": {
230 "patterns": [
231 {
232 "match": "\\||\\^|&",
233 "name": "keyword.operator.bitwise.d"
234 }
235 ]
236 },
237 "identity-expression": {
238 "patterns": [
239 {
240 "match": "\\b(is|!is)\\b",
241 "name": "keyword.operator.identity.d"
242 }
243 ]
244 },
245 "rel-expression": {
246 "patterns": [
247 {
248 "match": "!<>=|!<>|<>=|!>=|!<=|<=|>=|<>|!>|!<|<|>",
249 "name": "keyword.operator.rel.d"
250 }
251 ]
252 },
253 "in-expression": {
254 "patterns": [
255 {
256 "match": "\\b(in|!in)\\b",
257 "name": "keyword.operator.in.d"
258 }
259 ]
260 },
261 "shift-expression": {
262 "patterns": [
263 {
264 "match": "<<|>>|>>>",
265 "name": "keyword.operator.shift.d"
266 },
267 {
268 "include": "#add-expression"
269 }
270 ]
271 },
272 "arithmetic-expression": {
273 "patterns": [
274 {
275 "match": "\\^\\^|\\+\\+|--|(?<!/)\\+(?!/)|-|~|(?<!/)\\*(?!/)|(?<![+*/])/(?![+*/])|%",
276 "name": "keyword.operator.numeric.d"
277 }
278 ]
279 },
280 "new-expression": {
281 "patterns": [
282 {
283 "match": "\\bnew\\s+",
284 "name": "keyword.other.new.d"
285 }
286 ]
287 },
288 "delete-expression": {
289 "patterns": [
290 {
291 "match": "\\bdelete\\s+",
292 "name": "keyword.other.delete.d"
293 }
294 ]
295 },
296 "cast-expression": {
297 "patterns": [
298 {
299 "begin": "\\b(cast)\\s*(\\()",
300 "beginCaptures": {
301 "1": {
302 "name": "keyword.operator.cast.d"
303 },
304 "2": {
305 "name": "keyword.operator.cast.begin.d"
306 }
307 },
308 "end": "\\)",
309 "endCaptures": {
310 "0": {
311 "name": "keyword.operator.cast.end.d"
312 }
313 },
314 "patterns": [
315 {
316 "include": "#type"
317 },
318 {
319 "include": "#extended-type"
320 }
321 ]
322 }
323 ]
324 },
325 "index-expression": {
326 "patterns": [
327 {
328 "begin": "\\[",
329 "end": "\\]",
330 "patterns": [
331 {
332 "match": "\\.\\.|\\$",
333 "name": "keyword.operator.slice.d"
334 },
335 {
336 "include": "#expression-no-index"
337 }
338 ]
339 }
340 ]
341 },
342 "function-literal": {
343 "patterns": [
344 {
345 "match": "=>",
346 "name": "keyword.operator.lambda.d"
347 },
348 {
349 "match": "\\b(function|delegate)\\b",
350 "name": "keyword.other.function-literal.d"
351 },
352 {
353 "begin": "\\b([_\\w][_\\d\\w]*)\\s*(=>)",
354 "end": "(?=[\\);,\\]}])",
355 "beginCaptures": {
356 "1": {
357 "name": "variable.parameter.d"
358 },
359 "2": {
360 "name": "meta.lexical.token.symbolic.d"
361 }
362 },
363 "patterns": [
364 {
365 "include": "source.d"
366 }
367 ]
368 },
369 {
370 "begin": "(?<=\\)|\\()(\\s*)({)",
371 "beginCaptures": {
372 "1": {
373 "name": "source.d"
374 },
375 "2": {
376 "name": "source.d"
377 }
378 },
379 "end": "}",
380 "patterns": [
381 {
382 "include": "source.d"
383 }
384 ]
385 }
386 ]
387 },
388 "assert-expression": {
389 "patterns": [
390 {
391 "begin": "\\bassert\\s*\\(",
392 "beginCaptures": {
393 "0": {
394 "name": "keyword.other.assert.begin.d"
395 }
396 },
397 "end": "\\)",
398 "endCaptures": {
399 "0": {
400 "name": "keyword.other.assert.end.d"
401 }
402 },
403 "patterns": [
404 {
405 "include": "#comment"
406 },
407 {
408 "include": "#expression"
409 },
410 {
411 "include": "#comma"
412 }
413 ]
414 }
415 ]
416 },
417 "mixin-expression": {
418 "patterns": [
419 {
420 "begin": "\\bmixin\\s*\\(",
421 "beginCaptures": {
422 "0": {
423 "name": "keyword.other.mixin.begin.d"
424 }
425 },
426 "end": "\\)",
427 "endCaptures": {
428 "0": {
429 "name": "keyword.other.mixin.end.d"
430 }
431 },
432 "patterns": [
433 {
434 "include": "#comment"
435 },
436 {
437 "include": "#expression"
438 },
439 {
440 "include": "#comma"
441 }
442 ]
443 }
444 ]
445 },
446 "import-expression": {
447 "patterns": [
448 {
449 "begin": "\\b(import)\\s*(\\()",
450 "beginCaptures": {
451 "1": {
452 "name": "keyword.other.import.d"
453 },
454 "2": {
455 "name": "keyword.other.import.begin.d"
456 }
457 },
458 "end": "\\)",
459 "endCaptures": {
460 "0": {
461 "name": "keyword.other.import.end.d"
462 }
463 },
464 "patterns": [
465 {
466 "include": "#comment"
467 },
468 {
469 "include": "#expression"
470 },
471 {
472 "include": "#comma"
473 }
474 ]
475 }
476 ]
477 },
478 "typeid-expression": {
479 "patterns": [
480 {
481 "match": "\\btypeid\\s*(?=\\()",
482 "name": "keyword.other.typeid.d"
483 }
484 ]
485 },
486 "type-specialization": {
487 "patterns": [
488 {
489 "match": "\\b(struct|union|class|interface|enum|function|delegate|super|const|immutable|inout|shared|return|__parameters)\\b",
490 "name": "keyword.other.storage.type-specialization.d"
491 }
492 ]
493 },
494 "traits-expression": {
495 "patterns": [
496 {
497 "begin": "\\b__traits\\s*\\(",
498 "beginCaptures": {
499 "0": {
500 "name": "keyword.other.traits.begin.d"
501 }
502 },
503 "end": "\\)",
504 "endCaptures": {
505 "0": {
506 "name": "keyword.other.traits.end.d"
507 }
508 },
509 "patterns": [
510 {
511 "include": "#traits-keyword"
512 },
513 {
514 "include": "#comma"
515 },
516 {
517 "include": "#traits-argument"
518 }
519 ]
520 }
521 ]
522 },
523 "traits-keyword": {
524 "patterns": [
525 {
526 "match": "isAbstractClass|isArithmetic|isAssociativeArray|isFinalClass|isPOD|isNested|isFloating|isIntegral|isScalar|isStaticArray|isUnsigned|isVirtualFunction|isVirtualMethod|isAbstractFunction|isFinalFunction|isStaticFunction|isOverrideFunction|isRef|isOut|isLazy|hasMember|identifier|getAliasThis|getAttributes|getMember|getOverloads|getProtection|getVirtualFunctions|getVirtualMethods|getUnitTests|parent|classInstanceSize|getVirtualIndex|allMembers|derivedMembers|isSame|compiles",
527 "name": "support.constant.traits-keyword.d"
528 }
529 ]
530 },
531 "traits-arguments": {
532 "patterns": [
533 {
534 "include": "#traits-argument"
535 },
536 {
537 "include": "#comma"
538 }
539 ]
540 },
541 "traits-argument": {
542 "patterns": [
543 {
544 "include": "#expression"
545 },
546 {
547 "include": "#type"
548 }
549 ]
550 },
551 "special-keyword": {
552 "patterns": [
553 {
554 "match": "\\b(__FILE__|__FILE_FULL_PATH__|__MODULE__|__LINE__|__FUNCTION__|__PRETTY_FUNCTION__)\\b",
555 "name": "constant.language.special-keyword.d"
556 }
557 ]
558 },
559 "statement": {
560 "patterns": [
561 {
562 "include": "#non-block-statement"
563 },
564 {
565 "include": "#semi-colon"
566 }
567 ]
568 },
569 "non-block-statement": {
570 "patterns": [
571 {
572 "include": "#module-declaration"
573 },
574 {
575 "include": "#labeled-statement"
576 },
577 {
578 "include": "#if-statement"
579 },
580 {
581 "include": "#while-statement"
582 },
583 {
584 "include": "#do-statement"
585 },
586 {
587 "include": "#for-statement"
588 },
589 {
590 "include": "#static-foreach"
591 },
592 {
593 "include": "#foreach-statement"
594 },
595 {
596 "include": "#foreach-reverse-statement"
597 },
598 {
599 "include": "#switch-statement"
600 },
601 {
602 "include": "#final-switch-statement"
603 },
604 {
605 "include": "#case-statement"
606 },
607 {
608 "include": "#default-statement"
609 },
610 {
611 "include": "#continue-statement"
612 },
613 {
614 "include": "#break-statement"
615 },
616 {
617 "include": "#return-statement"
618 },
619 {
620 "include": "#goto-statement"
621 },
622 {
623 "include": "#with-statement"
624 },
625 {
626 "include": "#synchronized-statement"
627 },
628 {
629 "include": "#try-statement"
630 },
631 {
632 "include": "#catches"
633 },
634 {
635 "include": "#scope-guard-statement"
636 },
637 {
638 "include": "#throw-statement"
639 },
640 {
641 "include": "#finally-statement"
642 },
643 {
644 "include": "#asm-statement"
645 },
646 {
647 "include": "#pragma-statement"
648 },
649 {
650 "include": "#mixin-statement"
651 },
652 {
653 "include": "#conditional-statement"
654 },
655 {
656 "include": "#static-assert"
657 },
658 {
659 "include": "#deprecated-statement"
660 },
661 {
662 "include": "#unit-test"
663 },
664 {
665 "include": "#declaration-statement"
666 }
667 ]
668 },
669 "labeled-statement": {
670 "patterns": [
671 {
672 "match": "\\b(?!abstract|alias|align|asm|assert|auto|body|bool|break|byte|case|cast|catch|cdouble|cent|cfloat|char|class|const|continue|creal|dchar|debug|default|delegate|delete|deprecated|do|double|else|enum|export|extern|false|final|finally|float|for|foreach|foreach_reverse|function|goto|idouble|if|ifloat|immutable|import|in|inout|int|interface|invariant|ireal|is|lazy|long|macro|mixin|module|new|nothrow|null|out|override|package|pragma|private|protected|public|pure|real|ref|return|scope|shared|short|static|struct|super|switch|synchronized|template|this|throw|true|try|typedef|typeid|typeof|ubyte|ucent|uint|ulong|union|unittest|ushort|version|void|volatile|wchar|while|with|__FILE__|__MODULE__|__LINE__|__FUNCTION__|__PRETTY_FUNCTION__|__gshared|__traits|__vector|__parameters)[a-zA-Z_][a-zA-Z_0-9]*\\s*:",
673 "name": "entity.name.d"
674 }
675 ]
676 },
677 "declaration-statement": {
678 "patterns": [
679 {
680 "include": "#declaration"
681 }
682 ]
683 },
684 "if-statement": {
685 "patterns": [
686 {
687 "begin": "\\b(if)\\b\\s*",
688 "captures": {
689 "1": {
690 "name": "keyword.control.if.d"
691 }
692 },
693 "end": "(?<=\\))",
694 "patterns": [
695 {
696 "begin": "\\(",
697 "end": "\\)",
698 "patterns": [
699 {
700 "include": "source.d"
701 }
702 ]
703 }
704 ]
705 },
706 {
707 "match": "\\belse\\b\\s*",
708 "name": "keyword.control.else.d"
709 }
710 ]
711 },
712 "while-statement": {
713 "patterns": [
714 {
715 "begin": "\\b(while)\\b\\s*",
716 "captures": {
717 "1": {
718 "name": "keyword.control.while.d"
719 }
720 },
721 "end": "(?<=\\))",
722 "patterns": [
723 {
724 "begin": "\\(",
725 "end": "\\)",
726 "patterns": [
727 {
728 "include": "source.d"
729 }
730 ]
731 }
732 ]
733 }
734 ]
735 },
736 "do-statement": {
737 "patterns": [
738 {
739 "match": "\\bdo\\b",
740 "name": "keyword.control.do.d"
741 }
742 ]
743 },
744 "for-statement": {
745 "patterns": [
746 {
747 "begin": "\\b(for)\\b\\s*",
748 "captures": {
749 "1": {
750 "name": "keyword.control.for.d"
751 }
752 },
753 "end": "(?<=\\))",
754 "patterns": [
755 {
756 "begin": "\\(",
757 "end": "\\)",
758 "patterns": [
759 {
760 "include": "source.d"
761 }
762 ]
763 }
764 ]
765 }
766 ]
767 },
768 "foreach-statement": {
769 "patterns": [
770 {
771 "begin": "\\b(foreach)\\b\\s*",
772 "captures": {
773 "1": {
774 "name": "keyword.control.foreach.d"
775 }
776 },
777 "end": "(?<=\\))",
778 "patterns": [
779 {
780 "begin": "\\(",
781 "end": "\\)",
782 "patterns": [
783 {
784 "include": "source.d"
785 }
786 ]
787 }
788 ]
789 }
790 ]
791 },
792 "foreach-reverse-statement": {
793 "patterns": [
794 {
795 "begin": "\\b(foreach_reverse)\\b\\s*",
796 "captures": {
797 "1": {
798 "name": "keyword.control.foreach_reverse.d"
799 }
800 },
801 "end": "(?<=\\))",
802 "patterns": [
803 {
804 "begin": "\\(",
805 "end": "\\)",
806 "patterns": [
807 {
808 "include": "source.d"
809 }
810 ]
811 }
812 ]
813 }
814 ]
815 },
816 "switch-statement": {
817 "patterns": [
818 {
819 "begin": "\\b(switch)\\b\\s*",
820 "captures": {
821 "1": {
822 "name": "keyword.control.switch.d"
823 }
824 },
825 "end": "(?<=\\))",
826 "patterns": [
827 {
828 "begin": "\\(",
829 "end": "\\)",
830 "patterns": [
831 {
832 "include": "source.d"
833 }
834 ]
835 }
836 ]
837 }
838 ]
839 },
840 "case-statement": {
841 "patterns": [
842 {
843 "begin": "\\b(case)\\b\\s*",
844 "beginCaptures": {
845 "1": {
846 "name": "keyword.control.case.range.d"
847 }
848 },
849 "end": ":",
850 "endCaptures": {
851 "0": {
852 "name": "meta.case.end.d"
853 }
854 },
855 "patterns": [
856 {
857 "include": "#comment"
858 },
859 {
860 "include": "#expression"
861 },
862 {
863 "include": "#comma"
864 }
865 ]
866 }
867 ]
868 },
869 "default-statement": {
870 "patterns": [
871 {
872 "match": "\\b(default)\\s*(:)",
873 "captures": {
874 "1": {
875 "name": "keyword.control.case.default.d"
876 },
877 "2": {
878 "name": "meta.default.colon.d"
879 }
880 }
881 }
882 ]
883 },
884 "final-switch-statement": {
885 "patterns": [
886 {
887 "begin": "\\b(final\\s+switch)\\b\\s*",
888 "captures": {
889 "1": {
890 "name": "keyword.control.final.switch.d"
891 }
892 },
893 "end": "(?<=\\))",
894 "patterns": [
895 {
896 "begin": "\\(",
897 "end": "\\)",
898 "patterns": [
899 {
900 "include": "source.d"
901 }
902 ]
903 }
904 ]
905 }
906 ]
907 },
908 "continue-statement": {
909 "patterns": [
910 {
911 "match": "\\bcontinue\\b",
912 "name": "keyword.control.continue.d"
913 }
914 ]
915 },
916 "break-statement": {
917 "patterns": [
918 {
919 "match": "\\bbreak\\b",
920 "name": "keyword.control.break.d"
921 }
922 ]
923 },
924 "return-statement": {
925 "patterns": [
926 {
927 "match": "\\breturn\\b",
928 "name": "keyword.control.return.d"
929 }
930 ]
931 },
932 "goto-statement": {
933 "patterns": [
934 {
935 "match": "\\bgoto\\s+default\\b",
936 "name": "keyword.control.goto.d"
937 },
938 {
939 "match": "\\bgoto\\s+case\\b",
940 "name": "keyword.control.goto.d"
941 },
942 {
943 "match": "\\bgoto\\b",
944 "name": "keyword.control.goto.d"
945 }
946 ]
947 },
948 "with-statement": {
949 "patterns": [
950 {
951 "begin": "\\b(with)\\b\\s*(?=\\()",
952 "captures": {
953 "1": {
954 "name": "keyword.control.with.d"
955 }
956 },
957 "end": "(?<=\\))",
958 "patterns": [
959 {
960 "begin": "\\(",
961 "end": "\\)",
962 "patterns": [
963 {
964 "include": "source.d"
965 }
966 ]
967 }
968 ]
969 }
970 ]
971 },
972 "synchronized-statement": {
973 "patterns": [
974 {
975 "begin": "\\b(synchronized)\\b\\s*(?=\\()",
976 "captures": {
977 "1": {
978 "name": "keyword.control.synchronized.d"
979 }
980 },
981 "end": "(?<=\\))",
982 "patterns": [
983 {
984 "begin": "\\(",
985 "end": "\\)",
986 "patterns": [
987 {
988 "include": "source.d"
989 }
990 ]
991 }
992 ]
993 }
994 ]
995 },
996 "try-statement": {
997 "patterns": [
998 {
999 "match": "\\btry\\b",
1000 "name": "keyword.control.try.d"
1001 }
1002 ]
1003 },
1004 "catches": {
1005 "patterns": [
1006 {
1007 "include": "#catch"
1008 }
1009 ]
1010 },
1011 "catch": {
1012 "patterns": [
1013 {
1014 "begin": "\\b(catch)\\b\\s*(?=\\()",
1015 "captures": {
1016 "1": {
1017 "name": "keyword.control.catch.d"
1018 }
1019 },
1020 "end": "(?<=\\))",
1021 "patterns": [
1022 {
1023 "begin": "\\(",
1024 "end": "\\)",
1025 "patterns": [
1026 {
1027 "include": "source.d"
1028 }
1029 ]
1030 }
1031 ]
1032 }
1033 ]
1034 },
1035 "finally-statement": {
1036 "patterns": [
1037 {
1038 "match": "\\bfinally\\b",
1039 "name": "keyword.control.throw.d"
1040 }
1041 ]
1042 },
1043 "throw-statement": {
1044 "patterns": [
1045 {
1046 "match": "\\bthrow\\b",
1047 "name": "keyword.control.throw.d"
1048 }
1049 ]
1050 },
1051 "scope-guard-statement": {
1052 "patterns": [
1053 {
1054 "match": "\\bscope\\s*\\((exit|success|failure)\\)",
1055 "name": "keyword.control.scope.d"
1056 }
1057 ]
1058 },
1059 "asm-statement": {
1060 "patterns": [
1061 {
1062 "begin": "\\b(asm)\\b\\s*(?=\\{)",
1063 "captures": {
1064 "1": {
1065 "name": "keyword.control.switch.d"
1066 }
1067 },
1068 "end": "(?<=\\})",
1069 "patterns": [
1070 {
1071 "begin": "\\{",
1072 "end": "\\}",
1073 "beginCaptures": {
1074 "0": {
1075 "name": "keyword.control.asm.begin.d"
1076 }
1077 },
1078 "endCaptures": {
1079 "0": {
1080 "name": "keyword.control.asm.end.d"
1081 }
1082 },
1083 "contentName": "gfm.markup.raw.assembly.d",
1084 "patterns": [
1085 {
1086 "include": "#asm-instruction"
1087 }
1088 ]
1089 }
1090 ]
1091 }
1092 ]
1093 },
1094 "pragma-statement": {
1095 "patterns": [
1096 {
1097 "include": "#pragma"
1098 }
1099 ]
1100 },
1101 "mixin-statement": {
1102 "patterns": [
1103 {
1104 "begin": "\\bmixin\\s*\\(",
1105 "beginCaptures": {
1106 "0": {
1107 "name": "keyword.control.mixin.begin.d"
1108 }
1109 },
1110 "end": "\\)",
1111 "endCaptures": {
1112 "0": {
1113 "name": "keyword.control.mixin.end.d"
1114 }
1115 },
1116 "patterns": [
1117 {
1118 "include": "#comment"
1119 },
1120 {
1121 "include": "#expression"
1122 },
1123 {
1124 "include": "#comma"
1125 }
1126 ]
1127 }
1128 ]
1129 },
1130 "is-expression": {
1131 "patterns": [
1132 {
1133 "begin": "\\bis\\s*\\(",
1134 "beginCaptures": {
1135 "0": {
1136 "name": "keyword.token.is.begin.d"
1137 }
1138 },
1139 "end": "\\)",
1140 "endCaptures": {
1141 "0": {
1142 "name": "keyword.token.is.end.d"
1143 }
1144 },
1145 "patterns": [
1146 {
1147 "include": "#comment"
1148 },
1149 {
1150 "include": "#expression"
1151 },
1152 {
1153 "include": "#comma"
1154 }
1155 ]
1156 }
1157 ]
1158 },
1159 "parentheses-expression": {
1160 "patterns": [
1161 {
1162 "begin": "\\(",
1163 "end": "\\)",
1164 "patterns": [
1165 {
1166 "include": "#expression"
1167 }
1168 ]
1169 }
1170 ]
1171 },
1172 "deprecated-statement": {
1173 "patterns": [
1174 {
1175 "begin": "\\bdeprecated\\s*\\(",
1176 "beginCaptures": {
1177 "0": {
1178 "name": "keyword.other.deprecated.begin.d"
1179 }
1180 },
1181 "end": "\\)",
1182 "endCaptures": {
1183 "0": {
1184 "name": "keyword.other.deprecated.end.d"
1185 }
1186 },
1187 "patterns": [
1188 {
1189 "include": "#comment"
1190 },
1191 {
1192 "include": "#expression"
1193 },
1194 {
1195 "include": "#comma"
1196 }
1197 ]
1198 },
1199 {
1200 "match": "\\bdeprecated\\b\\s*(?!\\()",
1201 "name": "keyword.other.deprecated.plain.d"
1202 }
1203 ]
1204 },
1205 "asm-instruction": {
1206 "patterns": [
1207 {
1208 "include": "#comment"
1209 },
1210 {
1211 "match": "\\b(align|even|naked|db|ds|di|dl|df|dd|de)\\b|:",
1212 "name": "keyword.asm-instruction.d"
1213 },
1214 {
1215 "match": "\\b__LOCAL_SIZE\\b",
1216 "name": "constant.language.assembly.d"
1217 },
1218 {
1219 "match": "\\b(offsetof|seg)\\b",
1220 "name": "support.type.assembly.d"
1221 },
1222 {
1223 "include": "#asm-type-prefix"
1224 },
1225 {
1226 "include": "#asm-primary-expression"
1227 },
1228 {
1229 "include": "#operands"
1230 },
1231 {
1232 "include": "#register"
1233 },
1234 {
1235 "include": "#register-64"
1236 },
1237 {
1238 "include": "#float-literal"
1239 },
1240 {
1241 "include": "#integer-literal"
1242 },
1243 {
1244 "include": "#identifier"
1245 }
1246 ]
1247 },
1248 "operands": {
1249 "patterns": [
1250 {
1251 "match": "\\?|:",
1252 "name": "keyword.operator.ternary.assembly.d"
1253 },
1254 {
1255 "match": "\\]|\\[",
1256 "name": "keyword.operator.bracket.assembly.d"
1257 },
1258 {
1259 "match": ">>>|\\|\\||&&|==|!=|<=|>=|<<|>>|\\||\\^|&|<|>|\\+|-|\\*|/|%|~|!",
1260 "name": "keyword.operator.assembly.d"
1261 }
1262 ]
1263 },
1264 "asm-type-prefix": {
1265 "patterns": [
1266 {
1267 "match": "\\b((near\\s+ptr)|(far\\s+ptr)|(byte\\s+ptr)|(short\\s+ptr)|(int\\s+ptr)|(word\\s+ptr)|(dword\\s+ptr)|(qword\\s+ptr)|(float\\s+ptr)|(double\\s+ptr)|(real\\s+ptr))\\b",
1268 "name": "support.type.asm-type-prefix.d"
1269 }
1270 ]
1271 },
1272 "register": {
1273 "patterns": [
1274 {
1275 "match": "\\b(XMM0|XMM1|XMM2|XMM3|XMM4|XMM5|XMM6|XMM7|MM0|MM1|MM2|MM3|MM4|MM5|MM6|MM7|ST\\(0\\)|ST\\(1\\)|ST\\(2\\)|ST\\(3\\)|ST\\(4\\)|ST\\(5\\)|ST\\(6\\)|ST\\(7\\)|ST|TR1|TR2|TR3|TR4|TR5|TR6|TR7|DR0|DR1|DR2|DR3|DR4|DR5|DR6|DR7|CR0|CR2|CR3|CR4|EAX|EBX|ECX|EDX|EBP|ESP|EDI|ESI|AL|AH|AX|BL|BH|BX|CL|CH|CX|DL|DH|DX|BP|SP|DI|SI|ES|CS|SS|DS|GS|FS)\\b",
1276 "name": "storage.type.assembly.register.d"
1277 }
1278 ]
1279 },
1280 "register-64": {
1281 "patterns": [
1282 {
1283 "match": "\\b(RAX|RBX|RCX|RDX|BPL|RBP|SPL|RSP|DIL|RDI|SIL|RSI|R8B|R8W|R8D|R8|R9B|R9W|R9D|R9|R10B|R10W|R10D|R10|R11B|R11W|R11D|R11|R12B|R12W|R12D|R12|R13B|R13W|R13D|R13|R14B|R14W|R14D|R14|R15B|R15W|R15D|R15|XMM8|XMM9|XMM10|XMM11|XMM12|XMM13|XMM14|XMM15|YMM0|YMM1|YMM2|YMM3|YMM4|YMM5|YMM6|YMM7|YMM8|YMM9|YMM10|YMM11|YMM12|YMM13|YMM14|YMM15)\\b",
1284 "name": "storage.type.assembly.register-64.d"
1285 }
1286 ]
1287 },
1288 "declaration": {
1289 "patterns": [
1290 {
1291 "include": "#alias-declaration"
1292 },
1293 {
1294 "include": "#aggregate-declaration"
1295 },
1296 {
1297 "include": "#enum-declaration"
1298 },
1299 {
1300 "include": "#import-declaration"
1301 },
1302 {
1303 "include": "#storage-class"
1304 },
1305 {
1306 "include": "#void-initializer"
1307 },
1308 {
1309 "include": "#mixin-declaration"
1310 }
1311 ]
1312 },
1313 "alias-declaration": {
1314 "patterns": [
1315 {
1316 "begin": "\\b(alias)\\b\\s*",
1317 "beginCaptures": {
1318 "1": {
1319 "name": "keyword.other.alias.d"
1320 }
1321 },
1322 "end": ";",
1323 "endCaptures": {
1324 "0": {
1325 "name": "meta.alias.end.d"
1326 }
1327 },
1328 "patterns": [
1329 {
1330 "include": "#type"
1331 },
1332 {
1333 "match": "=(?![=>])",
1334 "name": "keyword.operator.equal.alias.d"
1335 },
1336 {
1337 "include": "#expression"
1338 }
1339 ]
1340 }
1341 ]
1342 },
1343 "storage-class": {
1344 "patterns": [
1345 {
1346 "match": "\\b(deprecated|enum|static|extern|abstract|final|override|synchronized|auto|scope|const|immutable|inout|shared|__gshared|nothrow|pure|ref)\\b",
1347 "name": "storage.class.d"
1348 },
1349 {
1350 "include": "#linkage-attribute"
1351 },
1352 {
1353 "include": "#align-attribute"
1354 },
1355 {
1356 "include": "#property"
1357 }
1358 ]
1359 },
1360 "void-initializer": {
1361 "patterns": [
1362 {
1363 "match": "\\bvoid\\b",
1364 "name": "support.type.void.d"
1365 }
1366 ]
1367 },
1368 "functions": {
1369 "patterns": [
1370 {
1371 "include": "#function-attribute"
1372 },
1373 {
1374 "include": "#function-prelude"
1375 }
1376 ]
1377 },
1378 "function-prelude": {
1379 "patterns": [
1380 {
1381 "match": "(?!typeof|typeid)((\\.\\s*)?[_\\w][_\\d\\w]*)(\\s*\\.\\s*[_\\w][_\\d\\w]*)*\\s*(?=\\()",
1382 "name": "entity.name.function.d"
1383 }
1384 ]
1385 },
1386 "class-members": {
1387 "patterns": [
1388 {
1389 "include": "#shared-static-constructor"
1390 },
1391 {
1392 "include": "#shared-static-destructor"
1393 },
1394 {
1395 "include": "#constructor"
1396 },
1397 {
1398 "include": "#destructor"
1399 },
1400 {
1401 "include": "#postblit"
1402 },
1403 {
1404 "include": "#invariant"
1405 },
1406 {
1407 "include": "#member-function-attribute"
1408 }
1409 ]
1410 },
1411 "function-attribute": {
1412 "patterns": [
1413 {
1414 "match": "\\b(nothrow|pure)\\b",
1415 "name": "storage.type.modifier.function-attribute.d"
1416 },
1417 {
1418 "include": "#property"
1419 }
1420 ]
1421 },
1422 "member-function-attribute": {
1423 "patterns": [
1424 {
1425 "match": "\\b(const|immutable|inout|shared)\\b",
1426 "name": "storage.type.modifier.member-function-attribute"
1427 }
1428 ]
1429 },
1430 "function-body": {
1431 "patterns": [
1432 {
1433 "include": "#in-statement"
1434 },
1435 {
1436 "include": "#out-statement"
1437 },
1438 {
1439 "include": "#body-statement"
1440 },
1441 {
1442 "include": "#block-statement"
1443 }
1444 ]
1445 },
1446 "in-statement": {
1447 "patterns": [
1448 {
1449 "match": "\\bin\\b",
1450 "name": "keyword.control.in.d"
1451 }
1452 ]
1453 },
1454 "out-statement": {
1455 "patterns": [
1456 {
1457 "begin": "\\bout\\s*\\(",
1458 "beginCaptures": {
1459 "0": {
1460 "name": "keyword.control.out.begin.d"
1461 }
1462 },
1463 "end": "\\)",
1464 "endCaptures": {
1465 "0": {
1466 "name": "keyword.control.out.end.d"
1467 }
1468 },
1469 "patterns": [
1470 {
1471 "include": "#identifier"
1472 }
1473 ]
1474 },
1475 {
1476 "match": "\\bout\\b",
1477 "name": "keyword.control.out.d"
1478 }
1479 ]
1480 },
1481 "body-statement": {
1482 "patterns": [
1483 {
1484 "match": "\\bbody\\b",
1485 "name": "keyword.control.body.d"
1486 }
1487 ]
1488 },
1489 "constructor": {
1490 "patterns": [
1491 {
1492 "match": "\\bthis\\b",
1493 "name": "entity.name.function.constructor.d"
1494 }
1495 ]
1496 },
1497 "destructor": {
1498 "patterns": [
1499 {
1500 "match": "\\b~this\\s*\\(\\s*\\)",
1501 "name": "entity.name.class.destructor.d"
1502 }
1503 ]
1504 },
1505 "postblit": {
1506 "patterns": [
1507 {
1508 "match": "\\bthis\\s*\\(\\s*this\\s*\\)\\s",
1509 "name": "entity.name.class.postblit.d"
1510 }
1511 ]
1512 },
1513 "invariant": {
1514 "patterns": [
1515 {
1516 "match": "\\binvariant\\s*\\(\\s*\\)",
1517 "name": "entity.name.class.invariant.d"
1518 }
1519 ]
1520 },
1521 "shared-static-constructor": {
1522 "patterns": [
1523 {
1524 "match": "\\b(shared\\s+)?static\\s+this\\s*\\(\\s*\\)",
1525 "name": "entity.name.class.constructor.shared-static.d"
1526 },
1527 {
1528 "include": "#function-body"
1529 }
1530 ]
1531 },
1532 "shared-static-destructor": {
1533 "patterns": [
1534 {
1535 "match": "\\b(shared\\s+)?static\\s+~this\\s*\\(\\s*\\)",
1536 "name": "entity.name.class.destructor.static.d"
1537 }
1538 ]
1539 },
1540 "aggregate-declaration": {
1541 "patterns": [
1542 {
1543 "include": "#class-declaration"
1544 },
1545 {
1546 "include": "#interface-declaration"
1547 },
1548 {
1549 "include": "#struct-declaration"
1550 },
1551 {
1552 "include": "#union-declaration"
1553 },
1554 {
1555 "include": "#mixin-template-declaration"
1556 },
1557 {
1558 "include": "#template-declaration"
1559 }
1560 ]
1561 },
1562 "class-declaration": {
1563 "patterns": [
1564 {
1565 "match": "\\b(class)(?:\\s+([A-Za-z_][\\w_\\d]*))?\\b",
1566 "captures": {
1567 "1": {
1568 "name": "storage.type.class.d"
1569 },
1570 "2": {
1571 "name": "entity.name.class.d"
1572 }
1573 }
1574 },
1575 {
1576 "include": "#protection-attribute"
1577 },
1578 {
1579 "include": "#class-members"
1580 }
1581 ]
1582 },
1583 "interface-declaration": {
1584 "patterns": [
1585 {
1586 "match": "\\b(interface)(?:\\s+([A-Za-z_][\\w_\\d]*))?\\b",
1587 "captures": {
1588 "1": {
1589 "name": "storage.type.interface.d"
1590 },
1591 "2": {
1592 "name": "entity.name.type.interface.d"
1593 }
1594 }
1595 }
1596 ]
1597 },
1598 "struct-declaration": {
1599 "patterns": [
1600 {
1601 "match": "\\b(struct)(?:\\s+([A-Za-z_][\\w_\\d]*))?\\b",
1602 "captures": {
1603 "1": {
1604 "name": "storage.type.struct.d"
1605 },
1606 "2": {
1607 "name": "entity.name.type.struct.d"
1608 }
1609 }
1610 }
1611 ]
1612 },
1613 "union-declaration": {
1614 "patterns": [
1615 {
1616 "match": "\\b(union)(?:\\s+([A-Za-z_][\\w_\\d]*))?\\b",
1617 "captures": {
1618 "1": {
1619 "name": "storage.type.union.d"
1620 },
1621 "2": {
1622 "name": "entity.name.type.union.d"
1623 }
1624 }
1625 }
1626 ]
1627 },
1628 "enum-declaration": {
1629 "patterns": [
1630 {
1631 "begin": "\\b(enum)\\b\\s+(?=.*[=;])",
1632 "end": "([A-Za-z_][\\w_\\d]*)\\s*(?=;|=|\\()(;)?",
1633 "beginCaptures": {
1634 "1": {
1635 "name": "storage.type.enum.d"
1636 }
1637 },
1638 "endCaptures": {
1639 "1": {
1640 "name": "entity.name.type.enum.d"
1641 },
1642 "2": {
1643 "name": "meta.enum.end.d"
1644 }
1645 },
1646 "patterns": [
1647 {
1648 "include": "#type"
1649 },
1650 {
1651 "include": "#extended-type"
1652 },
1653 {
1654 "match": "=(?![=>])",
1655 "name": "keyword.operator.equal.alias.d"
1656 }
1657 ]
1658 }
1659 ]
1660 },
1661 "template-declaration": {
1662 "patterns": [
1663 {
1664 "match": "\\b(template)(?:\\s+([A-Za-z_][\\w_\\d]*))?\\b",
1665 "captures": {
1666 "1": {
1667 "name": "storage.type.template.d"
1668 },
1669 "2": {
1670 "name": "entity.name.type.template.d"
1671 }
1672 }
1673 }
1674 ]
1675 },
1676 "mixin-template-declaration": {
1677 "patterns": [
1678 {
1679 "match": "\\b(mixin\\s*template)(?:\\s+([A-Za-z_][\\w_\\d]*))?\\b",
1680 "captures": {
1681 "1": {
1682 "name": "storage.type.mixintemplate.d"
1683 },
1684 "2": {
1685 "name": "entity.name.type.mixintemplate.d"
1686 }
1687 }
1688 }
1689 ]
1690 },
1691 "attribute": {
1692 "patterns": [
1693 {
1694 "include": "#linkage-attribute"
1695 },
1696 {
1697 "include": "#align-attribute"
1698 },
1699 {
1700 "include": "#deprecated-attribute"
1701 },
1702 {
1703 "include": "#protection-attribute"
1704 },
1705 {
1706 "include": "#pragma"
1707 },
1708 {
1709 "match": "\\b(static|extern|abstract|final|override|synchronized|auto|scope|const|immutable|inout|shared|__gshared|nothrow|pure|ref)\\b",
1710 "name": "entity.other.attribute-name.d"
1711 },
1712 {
1713 "include": "#property"
1714 }
1715 ]
1716 },
1717 "linkage-attribute": {
1718 "patterns": [
1719 {
1720 "begin": "\\bextern\\s*\\(\\s*C\\+\\+\\s*,",
1721 "beginCaptures": {
1722 "0": {
1723 "name": "keyword.other.extern.cplusplus.begin.d"
1724 }
1725 },
1726 "end": "\\)",
1727 "endCaptures": {
1728 "0": {
1729 "name": "keyword.other.extern.cplusplus.end.d"
1730 }
1731 },
1732 "patterns": [
1733 {
1734 "include": "#identifier"
1735 },
1736 {
1737 "include": "#comma"
1738 }
1739 ]
1740 },
1741 {
1742 "begin": "\\bextern\\s*\\(",
1743 "beginCaptures": {
1744 "0": {
1745 "name": "keyword.other.extern.begin.d"
1746 }
1747 },
1748 "end": "\\)",
1749 "endCaptures": {
1750 "0": {
1751 "name": "keyword.other.extern.end.d"
1752 }
1753 },
1754 "patterns": [
1755 {
1756 "include": "#linkage-type"
1757 }
1758 ]
1759 }
1760 ]
1761 },
1762 "linkage-type": {
1763 "patterns": [
1764 {
1765 "match": "C|C\\+\\+|D|Windows|Pascal|System",
1766 "name": "storage.modifier.linkage-type.d"
1767 }
1768 ]
1769 },
1770 "align-attribute": {
1771 "patterns": [
1772 {
1773 "begin": "\\balign\\s*\\(",
1774 "end": "\\)",
1775 "name": "storage.modifier.align-attribute.d",
1776 "patterns": [
1777 {
1778 "include": "#integer-literal"
1779 }
1780 ]
1781 },
1782 {
1783 "match": "\\balign\\b\\s*(?!\\()",
1784 "name": "storage.modifier.align-attribute.d"
1785 }
1786 ]
1787 },
1788 "protection-attribute": {
1789 "patterns": [
1790 {
1791 "match": "\\b(private|package|protected|public|export)\\b",
1792 "name": "keyword.other.protections.d"
1793 }
1794 ]
1795 },
1796 "property": {
1797 "patterns": [
1798 {
1799 "match": "@(property|safe|trusted|system|disable|nogc)\\b",
1800 "name": "entity.name.tag.property.d"
1801 },
1802 {
1803 "include": "#user-defined-attribute"
1804 }
1805 ]
1806 },
1807 "user-defined-attribute": {
1808 "patterns": [
1809 {
1810 "match": "@([_\\w][_\\d\\w]*)\\b",
1811 "name": "entity.name.tag.user-defined-property.d"
1812 },
1813 {
1814 "begin": "@([_\\w][_\\d\\w]*)?\\(",
1815 "end": "\\)",
1816 "name": "entity.name.tag.user-defined-property.d",
1817 "patterns": [
1818 {
1819 "include": "#expression"
1820 }
1821 ]
1822 }
1823 ]
1824 },
1825 "pragma": {
1826 "patterns": [
1827 {
1828 "match": "\\bpragma\\s*\\(\\s*[_\\w][_\\d\\w]*\\s*\\)",
1829 "name": "keyword.other.pragma.d"
1830 },
1831 {
1832 "begin": "\\bpragma\\s*\\(\\s*[_\\w][_\\d\\w]*\\s*,",
1833 "end": "\\)",
1834 "name": "keyword.other.pragma.d",
1835 "patterns": [
1836 {
1837 "include": "#expression"
1838 }
1839 ]
1840 },
1841 {
1842 "match": "^#!.+",
1843 "name": "gfm.markup.header.preprocessor.script-tag.d"
1844 }
1845 ]
1846 },
1847 "conditional-declaration": {
1848 "patterns": [
1849 {
1850 "include": "#condition"
1851 },
1852 {
1853 "match": "\\belse\\b",
1854 "name": "keyword.control.else.d"
1855 },
1856 {
1857 "include": "#colon"
1858 },
1859 {
1860 "include": "#decl-defs"
1861 }
1862 ]
1863 },
1864 "conditional-statement": {
1865 "patterns": [
1866 {
1867 "include": "#condition"
1868 },
1869 {
1870 "include": "#no-scope-non-empty-statement"
1871 },
1872 {
1873 "match": "\\belse\\b",
1874 "name": "keyword.control.else.d"
1875 }
1876 ]
1877 },
1878 "condition": {
1879 "patterns": [
1880 {
1881 "include": "#version-condition"
1882 },
1883 {
1884 "include": "#debug-condition"
1885 },
1886 {
1887 "include": "#static-if-condition"
1888 }
1889 ]
1890 },
1891 "version-condition": {
1892 "patterns": [
1893 {
1894 "match": "\\bversion\\s*\\(\\s*unittest\\s*\\)",
1895 "name": "keyword.other.version.unittest.d"
1896 },
1897 {
1898 "match": "\\bversion\\s*\\(\\s*assert\\s*\\)",
1899 "name": "keyword.other.version.assert.d"
1900 },
1901 {
1902 "begin": "\\bversion\\s*\\(",
1903 "beginCaptures": {
1904 "0": {
1905 "name": "keyword.other.version.identifier.begin.d"
1906 }
1907 },
1908 "end": "\\)",
1909 "endCaptures": {
1910 "0": {
1911 "name": "keyword.other.version.identifer.end.d"
1912 }
1913 },
1914 "patterns": [
1915 {
1916 "include": "#integer-literal"
1917 },
1918 {
1919 "include": "#identifier"
1920 }
1921 ]
1922 },
1923 {
1924 "include": "#version-specification"
1925 }
1926 ]
1927 },
1928 "debug-condition": {
1929 "patterns": [
1930 {
1931 "begin": "\\bdebug\\s*\\(",
1932 "beginCaptures": {
1933 "0": {
1934 "name": "keyword.other.debug.identifier.begin.d"
1935 }
1936 },
1937 "end": "\\)",
1938 "endCaptures": {
1939 "0": {
1940 "name": "keyword.other.debug.identifier.end.d"
1941 }
1942 },
1943 "patterns": [
1944 {
1945 "include": "#integer-literal"
1946 },
1947 {
1948 "include": "#identifier"
1949 }
1950 ]
1951 },
1952 {
1953 "match": "\\bdebug\\b\\s*(?!\\()",
1954 "name": "keyword.other.debug.plain.d"
1955 }
1956 ]
1957 },
1958 "version-specification": {
1959 "patterns": [
1960 {
1961 "match": "\\bversion\\b\\s*(?==)",
1962 "name": "keyword.other.version-specification.d"
1963 }
1964 ]
1965 },
1966 "debug-specification": {
1967 "patterns": [
1968 {
1969 "match": "\\bdebug\\b\\s*(?==)",
1970 "name": "keyword.other.debug-specification.d"
1971 }
1972 ]
1973 },
1974 "static-if-condition": {
1975 "patterns": [
1976 {
1977 "begin": "\\bstatic\\s+if\\b\\s*\\(",
1978 "beginCaptures": {
1979 "0": {
1980 "name": "keyword.control.static-if.begin.d"
1981 }
1982 },
1983 "end": "\\)",
1984 "endCaptures": {
1985 "0": {
1986 "name": "keyword.control.static-if.end.d"
1987 }
1988 },
1989 "patterns": [
1990 {
1991 "include": "#comment"
1992 },
1993 {
1994 "include": "#expression"
1995 }
1996 ]
1997 }
1998 ]
1999 },
2000 "static-assert": {
2001 "patterns": [
2002 {
2003 "begin": "\\bstatic\\s+assert\\b\\s*\\(",
2004 "beginCaptures": {
2005 "0": {
2006 "name": "keyword.other.static-assert.begin.d"
2007 }
2008 },
2009 "end": "\\)",
2010 "endCaptures": {
2011 "0": {
2012 "name": "keyword.other.static-assert.end.d"
2013 }
2014 },
2015 "patterns": [
2016 {
2017 "include": "#expression"
2018 }
2019 ]
2020 }
2021 ]
2022 },
2023 "static-foreach": {
2024 "patterns": [
2025 {
2026 "begin": "\\b(static\\s+foreach)\\b\\s*",
2027 "captures": {
2028 "1": {
2029 "name": "keyword.control.static-foreach.d"
2030 }
2031 },
2032 "end": "(?<=\\))",
2033 "patterns": [
2034 {
2035 "begin": "\\(",
2036 "end": "\\)",
2037 "patterns": [
2038 {
2039 "include": "source.d"
2040 }
2041 ]
2042 }
2043 ]
2044 }
2045 ]
2046 },
2047 "module": {
2048 "packages": [
2049 {
2050 "import": "#module-declaration"
2051 }
2052 ]
2053 },
2054 "module-declaration": {
2055 "patterns": [
2056 {
2057 "begin": "\\b(module)\\s+",
2058 "end": ";",
2059 "beginCaptures": {
2060 "1": {
2061 "name": "keyword.package.module.d"
2062 }
2063 },
2064 "endCaptures": {
2065 "0": {
2066 "name": "meta.module.end.d"
2067 }
2068 },
2069 "patterns": [
2070 {
2071 "include": "#module-identifier"
2072 },
2073 {
2074 "include": "#comment"
2075 }
2076 ]
2077 }
2078 ]
2079 },
2080 "import-declaration": {
2081 "patterns": [
2082 {
2083 "begin": "\\b(static\\s+)?(import)\\s+(?!\\()",
2084 "end": ";",
2085 "beginCaptures": {
2086 "1": {
2087 "name": "keyword.package.import.d"
2088 },
2089 "2": {
2090 "name": "keyword.package.import.d"
2091 }
2092 },
2093 "endCaptures": {
2094 "0": {
2095 "name": "meta.import.end.d"
2096 }
2097 },
2098 "patterns": [
2099 {
2100 "include": "#import-identifier"
2101 },
2102 {
2103 "include": "#comma"
2104 },
2105 {
2106 "include": "#comment"
2107 }
2108 ]
2109 }
2110 ]
2111 },
2112 "mixin-declaration": {
2113 "patterns": [
2114 {
2115 "begin": "\\bmixin\\s*\\(",
2116 "end": "\\)",
2117 "beginCaptures": {
2118 "0": {
2119 "name": "keyword.mixin.begin.d"
2120 }
2121 },
2122 "endCaptures": {
2123 "0": {
2124 "name": "keyword.mixin.end.d"
2125 }
2126 },
2127 "patterns": [
2128 {
2129 "include": "#comment"
2130 },
2131 {
2132 "include": "#expression"
2133 },
2134 {
2135 "include": "#comma"
2136 }
2137 ]
2138 }
2139 ]
2140 },
2141 "comma": {
2142 "patterns": [
2143 {
2144 "match": ",",
2145 "name": "keyword.operator.comma.d"
2146 }
2147 ]
2148 },
2149 "colon": {
2150 "patterns": [
2151 {
2152 "match": ":",
2153 "name": "support.type.colon.d"
2154 }
2155 ]
2156 },
2157 "equal": {
2158 "patterns": [
2159 {
2160 "match": "=(?![=>])",
2161 "name": "keyword.operator.equal.d"
2162 }
2163 ]
2164 },
2165 "semi-colon": {
2166 "patterns": [
2167 {
2168 "match": ";\\s*$",
2169 "name": "meta.statement.end.d"
2170 },
2171 {
2172 "match": ";",
2173 "name": "keyword.operator.semi-colon.d"
2174 }
2175 ]
2176 },
2177 "lexical": {
2178 "patterns": [
2179 {
2180 "include": "#comment"
2181 },
2182 {
2183 "include": "#string-literal"
2184 },
2185 {
2186 "include": "#character-literal"
2187 },
2188 {
2189 "include": "#float-literal"
2190 },
2191 {
2192 "include": "#integer-literal"
2193 },
2194 {
2195 "include": "#eof"
2196 },
2197 {
2198 "include": "#special-tokens"
2199 },
2200 {
2201 "include": "#special-token-sequence"
2202 },
2203 {
2204 "include": "#keyword"
2205 },
2206 {
2207 "include": "#identifier"
2208 }
2209 ]
2210 },
2211 "integer-literal": {
2212 "patterns": [
2213 {
2214 "include": "#decimal-integer"
2215 },
2216 {
2217 "include": "#binary-integer"
2218 },
2219 {
2220 "include": "#hexadecimal-integer"
2221 }
2222 ]
2223 },
2224 "decimal-integer": {
2225 "patterns": [
2226 {
2227 "match": "\\b(0(?=[^\\dxXbB]))|([1-9][0-9_]*)(Lu|LU|uL|UL|L|u|U)?\\b",
2228 "name": "constant.numeric.integer.decimal.d"
2229 }
2230 ]
2231 },
2232 "binary-integer": {
2233 "patterns": [
2234 {
2235 "match": "\\b(0b|0B)[0-1_]+(Lu|LU|uL|UL|L|u|U)?\\b",
2236 "name": "constant.numeric.integer.binary.d"
2237 }
2238 ]
2239 },
2240 "hexadecimal-integer": {
2241 "patterns": [
2242 {
2243 "match": "\\b(0x|0X)([0-9a-fA-F][0-9a-fA-F_]*)(Lu|LU|uL|UL|L|u|U)?\\b",
2244 "name": "constant.numeric.integer.hexadecimal.d"
2245 }
2246 ]
2247 },
2248 "float-literal": {
2249 "patterns": [
2250 {
2251 "include": "#decimal-float"
2252 },
2253 {
2254 "include": "#hexadecimal-float"
2255 }
2256 ]
2257 },
2258 "decimal-float": {
2259 "patterns": [
2260 {
2261 "match": "\\b((\\.[0-9])|(0\\.)|(([1-9]|(0[1-9_]))[0-9_]*\\.))[0-9_]*((e-|E-|e\\+|E\\+|e|E)[0-9][0-9_]*)?[LfF]?i?\\b",
2262 "name": "constant.numeric.float.decimal.d"
2263 }
2264 ]
2265 },
2266 "hexadecimal-float": {
2267 "patterns": [
2268 {
2269 "match": "\\b0[xX][0-9a-fA-F_]*(\\.[0-9a-fA-F_]*)?(p-|P-|p\\+|P\\+|p|P)[0-9][0-9_]*[LfF]?i?\\b",
2270 "name": "constant.numeric.float.hexadecimal.d"
2271 }
2272 ]
2273 },
2274 "string-literal": {
2275 "patterns": [
2276 {
2277 "include": "#wysiwyg-string"
2278 },
2279 {
2280 "include": "#alternate-wysiwyg-string"
2281 },
2282 {
2283 "include": "#hex-string"
2284 },
2285 {
2286 "include": "#arbitrary-delimited-string"
2287 },
2288 {
2289 "include": "#delimited-string"
2290 },
2291 {
2292 "include": "#double-quoted-string"
2293 },
2294 {
2295 "include": "#token-string"
2296 }
2297 ]
2298 },
2299 "wysiwyg-string": {
2300 "patterns": [
2301 {
2302 "begin": "r\\\"",
2303 "end": "\\\"[cwd]?",
2304 "name": "string.wysiwyg-string.d",
2305 "patterns": [
2306 {
2307 "include": "#wysiwyg-characters"
2308 }
2309 ]
2310 }
2311 ]
2312 },
2313 "alternate-wysiwyg-string": {
2314 "patterns": [
2315 {
2316 "begin": "`",
2317 "end": "`[cwd]?",
2318 "name": "string.alternate-wysiwyg-string.d",
2319 "patterns": [
2320 {
2321 "include": "#wysiwyg-characters"
2322 }
2323 ]
2324 }
2325 ]
2326 },
2327 "double-quoted-string": {
2328 "patterns": [
2329 {
2330 "begin": "\"",
2331 "end": "\"[cwd]?",
2332 "name": "string.double-quoted-string.d",
2333 "patterns": [
2334 {
2335 "include": "#double-quoted-characters"
2336 }
2337 ]
2338 }
2339 ]
2340 },
2341 "hex-string": {
2342 "patterns": [
2343 {
2344 "begin": "x\"",
2345 "end": "\"[cwd]?",
2346 "name": "string.hex-string.d",
2347 "patterns": [
2348 {
2349 "match": "[a-fA-F0-9_s]+",
2350 "name": "constant.character.hex-string.d"
2351 }
2352 ]
2353 }
2354 ]
2355 },
2356 "arbitrary-delimited-string": {
2357 "begin": "q\"(\\w+)",
2358 "end": "\\1\"",
2359 "name": "string.delimited.d",
2360 "patterns": [
2361 {
2362 "match": ".",
2363 "name": "string.delimited.d"
2364 }
2365 ]
2366 },
2367 "delimited-string": {
2368 "begin": "q\"",
2369 "end": "\"",
2370 "name": "string.delimited.d",
2371 "patterns": [
2372 {
2373 "include": "#delimited-string-bracket"
2374 },
2375 {
2376 "include": "#delimited-string-parens"
2377 },
2378 {
2379 "include": "#delimited-string-angle-brackets"
2380 },
2381 {
2382 "include": "#delimited-string-braces"
2383 }
2384 ]
2385 },
2386 "token-string": {
2387 "begin": "q\\{",
2388 "end": "\\}[cdw]?",
2389 "beginCaptures": {
2390 "0": {
2391 "name": "string.quoted.token.d"
2392 }
2393 },
2394 "endCaptures": {
2395 "0": {
2396 "name": "string.quoted.token.d"
2397 }
2398 },
2399 "patterns": [
2400 {
2401 "include": "#token-string-content"
2402 }
2403 ]
2404 },
2405 "delimited-string-bracket": {
2406 "patterns": [
2407 {
2408 "begin": "\\[",
2409 "end": "\\]",
2410 "name": "constant.characters.delimited.brackets.d",
2411 "patterns": [
2412 {
2413 "include": "#wysiwyg-characters"
2414 }
2415 ]
2416 }
2417 ]
2418 },
2419 "delimited-string-parens": {
2420 "patterns": [
2421 {
2422 "begin": "\\(",
2423 "end": "\\)",
2424 "name": "constant.character.delimited.parens.d",
2425 "patterns": [
2426 {
2427 "include": "#wysiwyg-characters"
2428 }
2429 ]
2430 }
2431 ]
2432 },
2433 "delimited-string-angle-brackets": {
2434 "patterns": [
2435 {
2436 "begin": "<",
2437 "end": ">",
2438 "name": "constant.character.angle-brackets.d",
2439 "patterns": [
2440 {
2441 "include": "#wysiwyg-characters"
2442 }
2443 ]
2444 }
2445 ]
2446 },
2447 "delimited-string-braces": {
2448 "patterns": [
2449 {
2450 "begin": "\\{",
2451 "end": "\\}",
2452 "name": "constant.character.delimited.braces.d",
2453 "patterns": [
2454 {
2455 "include": "#wysiwyg-characters"
2456 }
2457 ]
2458 }
2459 ]
2460 },
2461 "wysiwyg-characters": {
2462 "patterns": [
2463 {
2464 "include": "#character"
2465 },
2466 {
2467 "include": "#end-of-line"
2468 }
2469 ]
2470 },
2471 "double-quoted-characters": {
2472 "patterns": [
2473 {
2474 "include": "#character"
2475 },
2476 {
2477 "include": "#end-of-line"
2478 },
2479 {
2480 "include": "#escape-sequence"
2481 }
2482 ]
2483 },
2484 "escape-sequence": {
2485 "patterns": [
2486 {
2487 "match": "(\\\\(?:quot|amp|lt|gt|OElig|oelig|Scaron|scaron|Yuml|circ|tilde|ensp|emsp|thinsp|zwnj|zwj|lrm|rlm|ndash|mdash|lsquo|rsquo|sbquo|ldquo|rdquo|bdquo|dagger|Dagger|permil|lsaquo|rsaquo|euro|nbsp|iexcl|cent|pound|curren|yen|brvbar|sect|uml|copy|ordf|laquo|not|shy|reg|macr|deg|plusmn|sup2|sup3|acute|micro|para|middot|cedil|sup1|ordm|raquo|frac14|frac12|frac34|iquest|Agrave|Aacute|Acirc|Atilde|Auml|Aring|Aelig|Ccedil|egrave|eacute|ecirc|iuml|eth|ntilde|ograve|oacute|ocirc|otilde|ouml|divide|oslash|ugrave|uacute|ucirc|uuml|yacute|thorn|yuml|fnof|Alpha|Beta|Gamma|Delta|Epsilon|Zeta|Eta|Theta|Iota|Kappa|Lambda|Mu|Nu|Xi|Omicron|Pi|Rho|Sigma|Tau|Upsilon|Phi|Chi|Psi|Omega|alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigmaf|sigma|tau|upsilon|phi|chi|psi|omega|thetasym|upsih|piv|bull|hellip|prime|Prime|oline|frasl|weierp|image|real|trade|alefsym|larr|uarr|rarr|darr|harr|crarr|lArr|uArr|rArr|dArr|hArr|forall|part|exist|empty|nabla|isin|notin|ni|prod|sum|minux|lowast|radic|prop|infin|ang|and|or|cap|cup|int|there4|sim|cong|asymp|ne|equiv|le|ge|sub|sup|nsub|sube|supe|oplus|otimes|perp|sdot|lceil|rceil|lfloor|rfloor|loz|spades|clubs|hearts|diams|lang|rang))",
2488 "name": "constant.character.escape-sequence.entity.d"
2489 },
2490 {
2491 "match": "(\\\\x[0-9a-fA-F_]{2}|\\\\u[0-9a-fA-F_]{4}|\\\\U[0-9a-fA-F_]{8}|\\\\[0-7]{1,3})",
2492 "name": "constant.character.escape-sequence.number.d"
2493 },
2494 {
2495 "match": "(\\\\t|\\\\'|\\\\\"|\\\\\\?|\\\\0|\\\\a|\\\\b|\\\\f|\\\\n|\\\\r|\\\\v|\\\\\\\\)",
2496 "name": "constant.character.escape-sequence.d"
2497 }
2498 ]
2499 },
2500 "character-literal": {
2501 "patterns": [
2502 {
2503 "begin": "'",
2504 "end": "'",
2505 "name": "string.character-literal.d",
2506 "patterns": [
2507 {
2508 "include": "#character"
2509 },
2510 {
2511 "include": "#escape-sequence"
2512 }
2513 ]
2514 }
2515 ]
2516 },
2517 "character": {
2518 "patterns": [
2519 {
2520 "match": "[\\w\\s]+",
2521 "name": "string.character.d"
2522 }
2523 ]
2524 },
2525 "end-of-line": {
2526 "patterns": [
2527 {
2528 "match": "\\n+",
2529 "name": "string.character.end-of-line.d"
2530 }
2531 ]
2532 },
2533 "identifier-list": {
2534 "patterns": [
2535 {
2536 "match": ",",
2537 "name": "keyword.other.comma.d"
2538 },
2539 {
2540 "include": "#identifier"
2541 }
2542 ]
2543 },
2544 "identifier": {
2545 "patterns": [
2546 {
2547 "match": "\\b((\\.\\s*)?[_\\w][_\\d\\w]*)(\\s*\\.\\s*[_\\w][_\\d\\w]*)*\\b",
2548 "name": "variable.d"
2549 }
2550 ]
2551 },
2552 "module-identifier": {
2553 "patterns": [
2554 {
2555 "match": "([_a-zA-Z][_\\d\\w]*)(\\s*\\.\\s*[_a-zA-Z][_\\d\\w]*)*",
2556 "name": "variable.parameter.module.d"
2557 }
2558 ]
2559 },
2560 "import-identifier": {
2561 "patterns": [
2562 {
2563 "match": "([_a-zA-Z][_\\d\\w]*)(\\s*\\.\\s*[_a-zA-Z][_\\d\\w]*)*",
2564 "name": "variable.parameter.import.d"
2565 }
2566 ]
2567 },
2568 "eof": {
2569 "patterns": [
2570 {
2571 "begin": "__EOF__",
2572 "beginCaptures": {
2573 "0": {
2574 "name": "comment.block.documentation.eof.start.d"
2575 }
2576 },
2577 "end": "(?!__NEVER_MATCH__)__NEVER_MATCH__",
2578 "name": "text.eof.d"
2579 }
2580 ]
2581 },
2582 "comment": {
2583 "patterns": [
2584 {
2585 "include": "#block-comment"
2586 },
2587 {
2588 "include": "#line-comment"
2589 },
2590 {
2591 "include": "#nesting-block-comment"
2592 }
2593 ]
2594 },
2595 "block-comment": {
2596 "patterns": [
2597 {
2598 "begin": "/((?!\\*/)\\*)+",
2599 "beginCaptures": {
2600 "0": {
2601 "name": "comment.block.begin.d"
2602 }
2603 },
2604 "end": "\\*+/",
2605 "endCaptures": {
2606 "0": {
2607 "name": "comment.block.end.d"
2608 }
2609 },
2610 "name": "comment.block.content.d"
2611 }
2612 ]
2613 },
2614 "line-comment": {
2615 "patterns": [
2616 {
2617 "match": "//+.*$",
2618 "name": "comment.line.d"
2619 }
2620 ]
2621 },
2622 "nesting-block-comment": {
2623 "patterns": [
2624 {
2625 "begin": "/((?!\\+/)\\+)+",
2626 "beginCaptures": {
2627 "0": {
2628 "name": "comment.block.documentation.begin.d"
2629 }
2630 },
2631 "end": "\\++/",
2632 "endCaptures": {
2633 "0": {
2634 "name": "comment.block.documentation.end.d"
2635 }
2636 },
2637 "name": "comment.block.documentation.content.d",
2638 "patterns": [
2639 {
2640 "include": "#nesting-block-comment"
2641 }
2642 ]
2643 }
2644 ]
2645 },
2646 "token-string-content": {
2647 "patterns": [
2648 {
2649 "begin": "{",
2650 "end": "}",
2651 "patterns": [
2652 {
2653 "include": "#token-string-content"
2654 }
2655 ]
2656 },
2657 {
2658 "include": "#tokens"
2659 }
2660 ]
2661 },
2662 "tokens": {
2663 "patterns": [
2664 {
2665 "include": "#string-literal"
2666 },
2667 {
2668 "include": "#character-literal"
2669 },
2670 {
2671 "include": "#integer-literal"
2672 },
2673 {
2674 "include": "#float-literal"
2675 },
2676 {
2677 "include": "#keyword"
2678 },
2679 {
2680 "match": "~=|~|>>>|>>=|>>|>=|>|=>|==|=|<>|<=|<<|<|%=|%|#|&=|&&|&|\\$|\\|=|\\|\\||\\||\\+=|\\+\\+|\\+|\\^=|\\^\\^=|\\^\\^|\\^|\\*=|\\*|\\}|\\{|\\]|\\[|\\)|\\(|\\.\\.\\.|\\.\\.|\\.|\\?|\\!>=|\\!>|\\!=|\\!<>=|\\!<>|\\!<=|\\!<|\\!|/=|/|@|:|;|,|-=|--|-",
2681 "name": "meta.lexical.token.symbolic.d"
2682 },
2683 {
2684 "include": "#identifier"
2685 }
2686 ]
2687 },
2688 "keyword": {
2689 "patterns": [
2690 {
2691 "match": "\\babstract\\b",
2692 "name": "keyword.token.abstract.d"
2693 },
2694 {
2695 "match": "\\balias\\b",
2696 "name": "keyword.token.alias.d"
2697 },
2698 {
2699 "match": "\\balign\\b",
2700 "name": "keyword.token.align.d"
2701 },
2702 {
2703 "match": "\\basm\\b",
2704 "name": "keyword.token.asm.d"
2705 },
2706 {
2707 "match": "\\bassert\\b",
2708 "name": "keyword.token.assert.d"
2709 },
2710 {
2711 "match": "\\bauto\\b",
2712 "name": "keyword.token.auto.d"
2713 },
2714 {
2715 "match": "\\bbody\\b",
2716 "name": "keyword.token.body.d"
2717 },
2718 {
2719 "match": "\\bbool\\b",
2720 "name": "keyword.token.bool.d"
2721 },
2722 {
2723 "match": "\\bbreak\\b",
2724 "name": "keyword.token.break.d"
2725 },
2726 {
2727 "match": "\\bbyte\\b",
2728 "name": "keyword.token.byte.d"
2729 },
2730 {
2731 "match": "\\bcase\\b",
2732 "name": "keyword.token.case.d"
2733 },
2734 {
2735 "match": "\\bcast\\b",
2736 "name": "keyword.token.cast.d"
2737 },
2738 {
2739 "match": "\\bcatch\\b",
2740 "name": "keyword.token.catch.d"
2741 },
2742 {
2743 "match": "\\bcdouble\\b",
2744 "name": "keyword.token.cdouble.d"
2745 },
2746 {
2747 "match": "\\bcent\\b",
2748 "name": "keyword.token.cent.d"
2749 },
2750 {
2751 "match": "\\bcfloat\\b",
2752 "name": "keyword.token.cfloat.d"
2753 },
2754 {
2755 "match": "\\bchar\\b",
2756 "name": "keyword.token.char.d"
2757 },
2758 {
2759 "match": "\\bclass\\b",
2760 "name": "keyword.token.class.d"
2761 },
2762 {
2763 "match": "\\bconst\\b",
2764 "name": "keyword.token.const.d"
2765 },
2766 {
2767 "match": "\\bcontinue\\b",
2768 "name": "keyword.token.continue.d"
2769 },
2770 {
2771 "match": "\\bcreal\\b",
2772 "name": "keyword.token.creal.d"
2773 },
2774 {
2775 "match": "\\bdchar\\b",
2776 "name": "keyword.token.dchar.d"
2777 },
2778 {
2779 "match": "\\bdebug\\b",
2780 "name": "keyword.token.debug.d"
2781 },
2782 {
2783 "match": "\\bdefault\\b",
2784 "name": "keyword.token.default.d"
2785 },
2786 {
2787 "match": "\\bdelegate\\b",
2788 "name": "keyword.token.delegate.d"
2789 },
2790 {
2791 "match": "\\bdelete\\b",
2792 "name": "keyword.token.delete.d"
2793 },
2794 {
2795 "match": "\\bdeprecated\\b",
2796 "name": "keyword.token.deprecated.d"
2797 },
2798 {
2799 "match": "\\bdo\\b",
2800 "name": "keyword.token.do.d"
2801 },
2802 {
2803 "match": "\\bdouble\\b",
2804 "name": "keyword.token.double.d"
2805 },
2806 {
2807 "match": "\\belse\\b",
2808 "name": "keyword.token.else.d"
2809 },
2810 {
2811 "match": "\\benum\\b",
2812 "name": "keyword.token.enum.d"
2813 },
2814 {
2815 "match": "\\bexport\\b",
2816 "name": "keyword.token.export.d"
2817 },
2818 {
2819 "match": "\\bextern\\b",
2820 "name": "keyword.token.extern.d"
2821 },
2822 {
2823 "match": "\\bfalse\\b",
2824 "name": "constant.language.boolean.false.d"
2825 },
2826 {
2827 "match": "\\bfinal\\b",
2828 "name": "keyword.token.final.d"
2829 },
2830 {
2831 "match": "\\bfinally\\b",
2832 "name": "keyword.token.finally.d"
2833 },
2834 {
2835 "match": "\\bfloat\\b",
2836 "name": "keyword.token.float.d"
2837 },
2838 {
2839 "match": "\\bfor\\b",
2840 "name": "keyword.token.for.d"
2841 },
2842 {
2843 "match": "\\bforeach\\b",
2844 "name": "keyword.token.foreach.d"
2845 },
2846 {
2847 "match": "\\bforeach_reverse\\b",
2848 "name": "keyword.token.foreach_reverse.d"
2849 },
2850 {
2851 "match": "\\bfunction\\b",
2852 "name": "keyword.token.function.d"
2853 },
2854 {
2855 "match": "\\bgoto\\b",
2856 "name": "keyword.token.goto.d"
2857 },
2858 {
2859 "match": "\\bidouble\\b",
2860 "name": "keyword.token.idouble.d"
2861 },
2862 {
2863 "match": "\\bif\\b",
2864 "name": "keyword.token.if.d"
2865 },
2866 {
2867 "match": "\\bifloat\\b",
2868 "name": "keyword.token.ifloat.d"
2869 },
2870 {
2871 "match": "\\bimmutable\\b",
2872 "name": "keyword.token.immutable.d"
2873 },
2874 {
2875 "match": "\\bimport\\b",
2876 "name": "keyword.token.import.d"
2877 },
2878 {
2879 "match": "\\bin\\b",
2880 "name": "keyword.token.in.d"
2881 },
2882 {
2883 "match": "\\binout\\b",
2884 "name": "keyword.token.inout.d"
2885 },
2886 {
2887 "match": "\\bint\\b",
2888 "name": "keyword.token.int.d"
2889 },
2890 {
2891 "match": "\\binterface\\b",
2892 "name": "keyword.token.interface.d"
2893 },
2894 {
2895 "match": "\\binvariant\\b",
2896 "name": "keyword.token.invariant.d"
2897 },
2898 {
2899 "match": "\\bireal\\b",
2900 "name": "keyword.token.ireal.d"
2901 },
2902 {
2903 "match": "\\bis\\b",
2904 "name": "keyword.token.is.d"
2905 },
2906 {
2907 "match": "\\blazy\\b",
2908 "name": "keyword.token.lazy.d"
2909 },
2910 {
2911 "match": "\\blong\\b",
2912 "name": "keyword.token.long.d"
2913 },
2914 {
2915 "match": "\\bmacro\\b",
2916 "name": "keyword.token.macro.d"
2917 },
2918 {
2919 "match": "\\bmixin\\b",
2920 "name": "keyword.token.mixin.d"
2921 },
2922 {
2923 "match": "\\bmodule\\b",
2924 "name": "keyword.token.module.d"
2925 },
2926 {
2927 "match": "\\bnew\\b",
2928 "name": "keyword.token.new.d"
2929 },
2930 {
2931 "match": "\\bnothrow\\b",
2932 "name": "keyword.token.nothrow.d"
2933 },
2934 {
2935 "match": "\\bnull\\b",
2936 "name": "constant.language.null.d"
2937 },
2938 {
2939 "match": "\\bout\\b",
2940 "name": "keyword.token.out.d"
2941 },
2942 {
2943 "match": "\\boverride\\b",
2944 "name": "keyword.token.override.d"
2945 },
2946 {
2947 "match": "\\bpackage\\b",
2948 "name": "keyword.token.package.d"
2949 },
2950 {
2951 "match": "\\bpragma\\b",
2952 "name": "keyword.token.pragma.d"
2953 },
2954 {
2955 "match": "\\bprivate\\b",
2956 "name": "keyword.token.private.d"
2957 },
2958 {
2959 "match": "\\bprotected\\b",
2960 "name": "keyword.token.protected.d"
2961 },
2962 {
2963 "match": "\\bpublic\\b",
2964 "name": "keyword.token.public.d"
2965 },
2966 {
2967 "match": "\\bpure\\b",
2968 "name": "keyword.token.pure.d"
2969 },
2970 {
2971 "match": "\\breal\\b",
2972 "name": "keyword.token.real.d"
2973 },
2974 {
2975 "match": "\\bref\\b",
2976 "name": "keyword.token.ref.d"
2977 },
2978 {
2979 "match": "\\breturn\\b",
2980 "name": "keyword.token.return.d"
2981 },
2982 {
2983 "match": "\\bscope\\b",
2984 "name": "keyword.token.scope.d"
2985 },
2986 {
2987 "match": "\\bshared\\b",
2988 "name": "keyword.token.shared.d"
2989 },
2990 {
2991 "match": "\\bshort\\b",
2992 "name": "keyword.token.short.d"
2993 },
2994 {
2995 "match": "\\bstatic\\b",
2996 "name": "keyword.token.static.d"
2997 },
2998 {
2999 "match": "\\bstruct\\b",
3000 "name": "keyword.token.struct.d"
3001 },
3002 {
3003 "match": "\\bsuper\\b",
3004 "name": "keyword.token.super.d"
3005 },
3006 {
3007 "match": "\\bswitch\\b",
3008 "name": "keyword.token.switch.d"
3009 },
3010 {
3011 "match": "\\bsynchronized\\b",
3012 "name": "keyword.token.synchronized.d"
3013 },
3014 {
3015 "match": "\\btemplate\\b",
3016 "name": "keyword.token.template.d"
3017 },
3018 {
3019 "match": "\\bthis\\b",
3020 "name": "keyword.token.this.d"
3021 },
3022 {
3023 "match": "\\bthrow\\b",
3024 "name": "keyword.token.throw.d"
3025 },
3026 {
3027 "match": "\\btrue\\b",
3028 "name": "constant.language.boolean.true.d"
3029 },
3030 {
3031 "match": "\\btry\\b",
3032 "name": "keyword.token.try.d"
3033 },
3034 {
3035 "match": "\\btypedef\\b",
3036 "name": "keyword.token.typedef.d"
3037 },
3038 {
3039 "match": "\\btypeid\\b",
3040 "name": "keyword.token.typeid.d"
3041 },
3042 {
3043 "match": "\\btypeof\\b",
3044 "name": "keyword.token.typeof.d"
3045 },
3046 {
3047 "match": "\\bubyte\\b",
3048 "name": "keyword.token.ubyte.d"
3049 },
3050 {
3051 "match": "\\bucent\\b",
3052 "name": "keyword.token.ucent.d"
3053 },
3054 {
3055 "match": "\\buint\\b",
3056 "name": "keyword.token.uint.d"
3057 },
3058 {
3059 "match": "\\bulong\\b",
3060 "name": "keyword.token.ulong.d"
3061 },
3062 {
3063 "match": "\\bunion\\b",
3064 "name": "keyword.token.union.d"
3065 },
3066 {
3067 "match": "\\bunittest\\b",
3068 "name": "keyword.token.unittest.d"
3069 },
3070 {
3071 "match": "\\bushort\\b",
3072 "name": "keyword.token.ushort.d"
3073 },
3074 {
3075 "match": "\\bversion\\b",
3076 "name": "keyword.token.version.d"
3077 },
3078 {
3079 "match": "\\bvoid\\b",
3080 "name": "keyword.token.void.d"
3081 },
3082 {
3083 "match": "\\bvolatile\\b",
3084 "name": "keyword.token.volatile.d"
3085 },
3086 {
3087 "match": "\\bwchar\\b",
3088 "name": "keyword.token.wchar.d"
3089 },
3090 {
3091 "match": "\\bwhile\\b",
3092 "name": "keyword.token.while.d"
3093 },
3094 {
3095 "match": "\\bwith\\b",
3096 "name": "keyword.token.with.d"
3097 },
3098 {
3099 "match": "\\b__FILE__\\b",
3100 "name": "keyword.token.__FILE__.d"
3101 },
3102 {
3103 "match": "\\b__MODULE__\\b",
3104 "name": "keyword.token.__MODULE__.d"
3105 },
3106 {
3107 "match": "\\b__LINE__\\b",
3108 "name": "keyword.token.__LINE__.d"
3109 },
3110 {
3111 "match": "\\b__FUNCTION__\\b",
3112 "name": "keyword.token.__FUNCTION__.d"
3113 },
3114 {
3115 "match": "\\b__PRETTY_FUNCTION__\\b",
3116 "name": "keyword.token.__PRETTY_FUNCTION__.d"
3117 },
3118 {
3119 "match": "\\b__gshared\\b",
3120 "name": "keyword.token.__gshared.d"
3121 },
3122 {
3123 "match": "\\b__traits\\b",
3124 "name": "keyword.token.__traits.d"
3125 },
3126 {
3127 "match": "\\b__vector\\b",
3128 "name": "keyword.token.__vector.d"
3129 },
3130 {
3131 "match": "\\b__parameters\\b",
3132 "name": "keyword.token.__parameters.d"
3133 }
3134 ]
3135 },
3136 "special-token-sequence": {
3137 "patterns": [
3138 {
3139 "match": "#\\s*line.*",
3140 "name": "gfm.markup.italic.special-token-sequence.d"
3141 }
3142 ]
3143 },
3144 "special-tokens": {
3145 "patterns": [
3146 {
3147 "match": "\\b(__DATE__|__TIME__|__TIMESTAMP__|__VENDOR__|__VERSION__)\\b",
3148 "name": "gfm.markup.raw.special-tokens.d"
3149 }
3150 ]
3151 }
3152 }
3153 }
3154