PluginProbe
Code Block Pro – Beautiful Syntax Highlighting / 1.6.0
Code Block Pro – Beautiful Syntax Highlighting v1.6.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 / erlang.tmLanguage.json

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

1,731 lines 48.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 {
2 "comment": "The recognition of function definitions and compiler directives (such as module, record and macro definitions) requires that each of the aforementioned constructs must be the first string inside a line (except for whitespace). Also, the function/module/record/macro names must be given unquoted. -- desp",
3 "fileTypes": ["erl", "escript", "hrl", "xrl", "yrl"],
4 "keyEquivalent": "^~E",
5 "name": "erlang",
6 "patterns": [
7 {
8 "include": "#module-directive"
9 },
10 {
11 "include": "#import-export-directive"
12 },
13 {
14 "include": "#behaviour-directive"
15 },
16 {
17 "include": "#record-directive"
18 },
19 {
20 "include": "#define-directive"
21 },
22 {
23 "include": "#macro-directive"
24 },
25 {
26 "include": "#directive"
27 },
28 {
29 "include": "#function"
30 },
31 {
32 "include": "#everything-else"
33 }
34 ],
35 "repository": {
36 "atom": {
37 "patterns": [
38 {
39 "begin": "(')",
40 "beginCaptures": {
41 "1": {
42 "name": "punctuation.definition.symbol.begin.erlang"
43 }
44 },
45 "end": "(')",
46 "endCaptures": {
47 "1": {
48 "name": "punctuation.definition.symbol.end.erlang"
49 }
50 },
51 "name": "constant.other.symbol.quoted.single.erlang",
52 "patterns": [
53 {
54 "captures": {
55 "1": {
56 "name": "punctuation.definition.escape.erlang"
57 },
58 "3": {
59 "name": "punctuation.definition.escape.erlang"
60 }
61 },
62 "match": "(\\\\)([bdefnrstv\\\\'\"]|(\\^)[@-_a-z]|[0-7]{1,3}|x[\\da-fA-F]{2})",
63 "name": "constant.other.symbol.escape.erlang"
64 },
65 {
66 "match": "\\\\\\^?.?",
67 "name": "invalid.illegal.atom.erlang"
68 }
69 ]
70 },
71 {
72 "match": "[a-z][a-zA-Z\\d@_]*+",
73 "name": "constant.other.symbol.unquoted.erlang"
74 }
75 ]
76 },
77 "behaviour-directive": {
78 "captures": {
79 "1": {
80 "name": "punctuation.section.directive.begin.erlang"
81 },
82 "2": {
83 "name": "keyword.control.directive.behaviour.erlang"
84 },
85 "3": {
86 "name": "punctuation.definition.parameters.begin.erlang"
87 },
88 "4": {
89 "name": "entity.name.type.class.behaviour.definition.erlang"
90 },
91 "5": {
92 "name": "punctuation.definition.parameters.end.erlang"
93 },
94 "6": {
95 "name": "punctuation.section.directive.end.erlang"
96 }
97 },
98 "match": "^\\s*+(-)\\s*+(behaviour)\\s*+(\\()\\s*+([a-z][a-zA-Z\\d@_]*+)\\s*+(\\))\\s*+(\\.)",
99 "name": "meta.directive.behaviour.erlang"
100 },
101 "binary": {
102 "begin": "(<<)",
103 "beginCaptures": {
104 "1": {
105 "name": "punctuation.definition.binary.begin.erlang"
106 }
107 },
108 "end": "(>>)",
109 "endCaptures": {
110 "1": {
111 "name": "punctuation.definition.binary.end.erlang"
112 }
113 },
114 "name": "meta.structure.binary.erlang",
115 "patterns": [
116 {
117 "captures": {
118 "1": {
119 "name": "punctuation.separator.binary.erlang"
120 },
121 "2": {
122 "name": "punctuation.separator.value-size.erlang"
123 }
124 },
125 "match": "(,)|(:)"
126 },
127 {
128 "include": "#internal-type-specifiers"
129 },
130 {
131 "include": "#everything-else"
132 }
133 ]
134 },
135 "character": {
136 "patterns": [
137 {
138 "captures": {
139 "1": {
140 "name": "punctuation.definition.character.erlang"
141 },
142 "2": {
143 "name": "constant.character.escape.erlang"
144 },
145 "3": {
146 "name": "punctuation.definition.escape.erlang"
147 },
148 "5": {
149 "name": "punctuation.definition.escape.erlang"
150 }
151 },
152 "match": "(\\$)((\\\\)([bdefnrstv\\\\'\"]|(\\^)[@-_a-z]|[0-7]{1,3}|x[\\da-fA-F]{2}))",
153 "name": "constant.character.erlang"
154 },
155 {
156 "match": "\\$\\\\\\^?.?",
157 "name": "invalid.illegal.character.erlang"
158 },
159 {
160 "captures": {
161 "1": {
162 "name": "punctuation.definition.character.erlang"
163 }
164 },
165 "match": "(\\$)[ \\S]",
166 "name": "constant.character.erlang"
167 },
168 {
169 "match": "\\$.?",
170 "name": "invalid.illegal.character.erlang"
171 }
172 ]
173 },
174 "comment": {
175 "begin": "(^[ \\t]+)?(?=%)",
176 "beginCaptures": {
177 "1": {
178 "name": "punctuation.whitespace.comment.leading.erlang"
179 }
180 },
181 "end": "(?!\\G)",
182 "patterns": [
183 {
184 "begin": "%",
185 "beginCaptures": {
186 "0": {
187 "name": "punctuation.definition.comment.erlang"
188 }
189 },
190 "end": "\\n",
191 "name": "comment.line.percentage.erlang"
192 }
193 ]
194 },
195 "define-directive": {
196 "patterns": [
197 {
198 "begin": "^\\s*+(-)\\s*+(define)\\s*+(\\()\\s*+([a-zA-Z\\d@_]++)\\s*+",
199 "beginCaptures": {
200 "1": {
201 "name": "punctuation.section.directive.begin.erlang"
202 },
203 "2": {
204 "name": "keyword.control.directive.define.erlang"
205 },
206 "3": {
207 "name": "punctuation.definition.parameters.begin.erlang"
208 },
209 "4": {
210 "name": "entity.name.function.macro.definition.erlang"
211 }
212 },
213 "end": "(\\))\\s*+(\\.)",
214 "endCaptures": {
215 "1": {
216 "name": "punctuation.definition.parameters.end.erlang"
217 },
218 "2": {
219 "name": "punctuation.section.directive.end.erlang"
220 }
221 },
222 "name": "meta.directive.define.erlang",
223 "patterns": [
224 {
225 "include": "#everything-else"
226 }
227 ]
228 },
229 {
230 "begin": "(?=^\\s*+-\\s*+define\\s*+\\(\\s*+[a-zA-Z\\d@_]++\\s*+\\()",
231 "end": "(\\))\\s*+(\\.)",
232 "endCaptures": {
233 "1": {
234 "name": "punctuation.definition.parameters.end.erlang"
235 },
236 "2": {
237 "name": "punctuation.section.directive.end.erlang"
238 }
239 },
240 "name": "meta.directive.define.erlang",
241 "patterns": [
242 {
243 "begin": "^\\s*+(-)\\s*+(define)\\s*+(\\()\\s*+([a-zA-Z\\d@_]++)\\s*+(\\()",
244 "beginCaptures": {
245 "1": {
246 "name": "punctuation.section.directive.begin.erlang"
247 },
248 "2": {
249 "name": "keyword.control.directive.define.erlang"
250 },
251 "3": {
252 "name": "punctuation.definition.parameters.begin.erlang"
253 },
254 "4": {
255 "name": "entity.name.function.macro.definition.erlang"
256 },
257 "5": {
258 "name": "punctuation.definition.parameters.begin.erlang"
259 }
260 },
261 "end": "(\\))\\s*(,)",
262 "endCaptures": {
263 "1": {
264 "name": "punctuation.definition.parameters.end.erlang"
265 },
266 "2": {
267 "name": "punctuation.separator.parameters.erlang"
268 }
269 },
270 "patterns": [
271 {
272 "match": ",",
273 "name": "punctuation.separator.parameters.erlang"
274 },
275 {
276 "include": "#everything-else"
277 }
278 ]
279 },
280 {
281 "match": "\\|\\||\\||:|;|,|\\.|->",
282 "name": "punctuation.separator.define.erlang"
283 },
284 {
285 "include": "#everything-else"
286 }
287 ]
288 }
289 ]
290 },
291 "directive": {
292 "patterns": [
293 {
294 "begin": "^\\s*+(-)\\s*+([a-z][a-zA-Z\\d@_]*+)\\s*+(\\(?)",
295 "beginCaptures": {
296 "1": {
297 "name": "punctuation.section.directive.begin.erlang"
298 },
299 "2": {
300 "name": "keyword.control.directive.erlang"
301 },
302 "3": {
303 "name": "punctuation.definition.parameters.begin.erlang"
304 }
305 },
306 "end": "(\\)?)\\s*+(\\.)",
307 "endCaptures": {
308 "1": {
309 "name": "punctuation.definition.parameters.end.erlang"
310 },
311 "2": {
312 "name": "punctuation.section.directive.end.erlang"
313 }
314 },
315 "name": "meta.directive.erlang",
316 "patterns": [
317 {
318 "include": "#everything-else"
319 }
320 ]
321 },
322 {
323 "captures": {
324 "1": {
325 "name": "punctuation.section.directive.begin.erlang"
326 },
327 "2": {
328 "name": "keyword.control.directive.erlang"
329 },
330 "3": {
331 "name": "punctuation.section.directive.end.erlang"
332 }
333 },
334 "match": "^\\s*+(-)\\s*+([a-z][a-zA-Z\\d@_]*+)\\s*+(\\.)",
335 "name": "meta.directive.erlang"
336 }
337 ]
338 },
339 "everything-else": {
340 "patterns": [
341 {
342 "include": "#comment"
343 },
344 {
345 "include": "#record-usage"
346 },
347 {
348 "include": "#macro-usage"
349 },
350 {
351 "include": "#expression"
352 },
353 {
354 "include": "#keyword"
355 },
356 {
357 "include": "#textual-operator"
358 },
359 {
360 "include": "#language-constant"
361 },
362 {
363 "include": "#function-call"
364 },
365 {
366 "include": "#tuple"
367 },
368 {
369 "include": "#list"
370 },
371 {
372 "include": "#binary"
373 },
374 {
375 "include": "#parenthesized-expression"
376 },
377 {
378 "include": "#character"
379 },
380 {
381 "include": "#number"
382 },
383 {
384 "include": "#atom"
385 },
386 {
387 "include": "#string"
388 },
389 {
390 "include": "#symbolic-operator"
391 },
392 {
393 "include": "#variable"
394 }
395 ]
396 },
397 "expression": {
398 "patterns": [
399 {
400 "begin": "\\b(if)\\b",
401 "beginCaptures": {
402 "1": {
403 "name": "keyword.control.if.erlang"
404 }
405 },
406 "end": "\\b(end)\\b",
407 "endCaptures": {
408 "1": {
409 "name": "keyword.control.end.erlang"
410 }
411 },
412 "name": "meta.expression.if.erlang",
413 "patterns": [
414 {
415 "include": "#internal-expression-punctuation"
416 },
417 {
418 "include": "#everything-else"
419 }
420 ]
421 },
422 {
423 "begin": "\\b(case)\\b",
424 "beginCaptures": {
425 "1": {
426 "name": "keyword.control.case.erlang"
427 }
428 },
429 "end": "\\b(end)\\b",
430 "endCaptures": {
431 "1": {
432 "name": "keyword.control.end.erlang"
433 }
434 },
435 "name": "meta.expression.case.erlang",
436 "patterns": [
437 {
438 "include": "#internal-expression-punctuation"
439 },
440 {
441 "include": "#everything-else"
442 }
443 ]
444 },
445 {
446 "begin": "\\b(receive)\\b",
447 "beginCaptures": {
448 "1": {
449 "name": "keyword.control.receive.erlang"
450 }
451 },
452 "end": "\\b(end)\\b",
453 "endCaptures": {
454 "1": {
455 "name": "keyword.control.end.erlang"
456 }
457 },
458 "name": "meta.expression.receive.erlang",
459 "patterns": [
460 {
461 "include": "#internal-expression-punctuation"
462 },
463 {
464 "include": "#everything-else"
465 }
466 ]
467 },
468 {
469 "captures": {
470 "1": {
471 "name": "keyword.control.fun.erlang"
472 },
473 "4": {
474 "name": "entity.name.type.class.module.erlang"
475 },
476 "5": {
477 "name": "variable.other.erlang"
478 },
479 "6": {
480 "name": "punctuation.separator.module-function.erlang"
481 },
482 "8": {
483 "name": "entity.name.function.erlang"
484 },
485 "9": {
486 "name": "variable.other.erlang"
487 },
488 "10": {
489 "name": "punctuation.separator.function-arity.erlang"
490 }
491 },
492 "comment": "Implicit function expression with optional module qualifier when both module and function can be atom or variable",
493 "match": "\\b(fun)\\s+((([a-z][a-zA-Z\\d@_]*+)|(_[a-zA-Z\\d@_]++|[A-Z][a-zA-Z\\d@_]*+))\\s*+(:)\\s*+)?(([a-z][a-zA-Z\\d@_]*+|'[^']*+')|(_[a-zA-Z\\d@_]++|[A-Z][a-zA-Z\\d@_]*+))\\s*(/)",
494 "name": "meta.expression.fun.implicit.erlang"
495 },
496 {
497 "begin": "\\b(fun)\\s+(([a-z][a-zA-Z\\d@_]*+)|(_[a-zA-Z\\d@_]++|[A-Z][a-zA-Z\\d@_]*+))\\s*+(:)",
498 "beginCaptures": {
499 "1": {
500 "name": "keyword.control.fun.erlang"
501 },
502 "3": {
503 "name": "entity.name.type.class.module.erlang"
504 },
505 "4": {
506 "name": "variable.other.erlang"
507 },
508 "5": {
509 "name": "punctuation.separator.module-function.erlang"
510 }
511 },
512 "comment": "Implicit function expression with module qualifier when module can be atom or variable and function can by anything",
513 "end": "(/)",
514 "endCaptures": {
515 "1": {
516 "name": "punctuation.separator.function-arity.erlang"
517 }
518 },
519 "name": "meta.expression.fun.implicit.erlang",
520 "patterns": [
521 {
522 "include": "#everything-else"
523 }
524 ]
525 },
526 {
527 "begin": "\\b(fun)\\s+(?!\\()",
528 "beginCaptures": {
529 "1": {
530 "name": "keyword.control.fun.erlang"
531 }
532 },
533 "comment": "Implicit function expression when both module and function can by anything",
534 "end": "(/)",
535 "endCaptures": {
536 "1": {
537 "name": "punctuation.separator.function-arity.erlang"
538 }
539 },
540 "name": "meta.expression.fun.implicit.erlang",
541 "patterns": [
542 {
543 "include": "#everything-else"
544 }
545 ]
546 },
547 {
548 "begin": "\\b(fun)\\s*+(\\()(?=(\\s*+\\())",
549 "beginCaptures": {
550 "1": {
551 "name": "entity.name.function.erlang"
552 },
553 "2": {
554 "name": "punctuation.definition.parameters.begin.erlang"
555 }
556 },
557 "comment": "Function type in type specification",
558 "end": "(\\))",
559 "endCaptures": {
560 "1": {
561 "name": "punctuation.definition.parameters.end.erlang"
562 }
563 },
564 "patterns": [
565 {
566 "include": "#everything-else"
567 }
568 ]
569 },
570 {
571 "begin": "\\b(fun)\\b",
572 "beginCaptures": {
573 "1": {
574 "name": "keyword.control.fun.erlang"
575 }
576 },
577 "comment": "Explicit function expression",
578 "end": "\\b(end)\\b",
579 "endCaptures": {
580 "1": {
581 "name": "keyword.control.end.erlang"
582 }
583 },
584 "name": "meta.expression.fun.erlang",
585 "patterns": [
586 {
587 "begin": "(?=\\()",
588 "end": "(;)|(?=\\bend\\b)",
589 "endCaptures": {
590 "1": {
591 "name": "punctuation.separator.clauses.erlang"
592 }
593 },
594 "patterns": [
595 {
596 "include": "#internal-function-parts"
597 }
598 ]
599 },
600 {
601 "include": "#everything-else"
602 }
603 ]
604 },
605 {
606 "begin": "\\b(try)\\b",
607 "beginCaptures": {
608 "1": {
609 "name": "keyword.control.try.erlang"
610 }
611 },
612 "end": "\\b(end)\\b",
613 "endCaptures": {
614 "1": {
615 "name": "keyword.control.end.erlang"
616 }
617 },
618 "name": "meta.expression.try.erlang",
619 "patterns": [
620 {
621 "include": "#internal-expression-punctuation"
622 },
623 {
624 "include": "#everything-else"
625 }
626 ]
627 },
628 {
629 "begin": "\\b(begin)\\b",
630 "beginCaptures": {
631 "1": {
632 "name": "keyword.control.begin.erlang"
633 }
634 },
635 "end": "\\b(end)\\b",
636 "endCaptures": {
637 "1": {
638 "name": "keyword.control.end.erlang"
639 }
640 },
641 "name": "meta.expression.begin.erlang",
642 "patterns": [
643 {
644 "include": "#internal-expression-punctuation"
645 },
646 {
647 "include": "#everything-else"
648 }
649 ]
650 }
651 ]
652 },
653 "function": {
654 "begin": "^\\s*+([a-z][a-zA-Z\\d@_]*+|'[^']*+')\\s*+(?=\\()",
655 "beginCaptures": {
656 "1": {
657 "name": "entity.name.function.definition.erlang"
658 }
659 },
660 "end": "(\\.)",
661 "endCaptures": {
662 "1": {
663 "name": "punctuation.terminator.function.erlang"
664 }
665 },
666 "name": "meta.function.erlang",
667 "patterns": [
668 {
669 "captures": {
670 "1": {
671 "name": "entity.name.function.erlang"
672 }
673 },
674 "match": "^\\s*+([a-z][a-zA-Z\\d@_]*+|'[^']*+')\\s*+(?=\\()"
675 },
676 {
677 "begin": "(?=\\()",
678 "end": "(;)|(?=\\.)",
679 "endCaptures": {
680 "1": {
681 "name": "punctuation.separator.clauses.erlang"
682 }
683 },
684 "patterns": [
685 {
686 "include": "#parenthesized-expression"
687 },
688 {
689 "include": "#internal-function-parts"
690 }
691 ]
692 },
693 {
694 "include": "#everything-else"
695 }
696 ]
697 },
698 "function-call": {
699 "begin": "(?=([a-z][a-zA-Z\\d@_]*+|'[^']*+'|_[a-zA-Z\\d@_]++|[A-Z][a-zA-Z\\d@_]*+)\\s*+(\\(|:\\s*+([a-z][a-zA-Z\\d@_]*+|'[^']*+'|_[a-zA-Z\\d@_]++|[A-Z][a-zA-Z\\d@_]*+)\\s*+\\())",
700 "end": "(\\))",
701 "endCaptures": {
702 "1": {
703 "name": "punctuation.definition.parameters.end.erlang"
704 }
705 },
706 "name": "meta.function-call.erlang",
707 "patterns": [
708 {
709 "begin": "((erlang)\\s*+(:)\\s*+)?(is_atom|is_binary|is_constant|is_float|is_function|is_integer|is_list|is_number|is_pid|is_port|is_reference|is_tuple|is_record|abs|element|hd|length|node|round|self|size|tl|trunc)\\s*+(\\()",
710 "beginCaptures": {
711 "2": {
712 "name": "entity.name.type.class.module.erlang"
713 },
714 "3": {
715 "name": "punctuation.separator.module-function.erlang"
716 },
717 "4": {
718 "name": "entity.name.function.guard.erlang"
719 },
720 "5": {
721 "name": "punctuation.definition.parameters.begin.erlang"
722 }
723 },
724 "end": "(?=\\))",
725 "patterns": [
726 {
727 "match": ",",
728 "name": "punctuation.separator.parameters.erlang"
729 },
730 {
731 "include": "#everything-else"
732 }
733 ]
734 },
735 {
736 "begin": "((([a-z][a-zA-Z\\d@_]*+|'[^']*+')|(_[a-zA-Z\\d@_]++|[A-Z][a-zA-Z\\d@_]*+))\\s*+(:)\\s*+)?(([a-z][a-zA-Z\\d@_]*+|'[^']*+')|(_[a-zA-Z\\d@_]++|[A-Z][a-zA-Z\\d@_]*+))\\s*+(\\()",
737 "beginCaptures": {
738 "3": {
739 "name": "entity.name.type.class.module.erlang"
740 },
741 "4": {
742 "name": "variable.other.erlang"
743 },
744 "5": {
745 "name": "punctuation.separator.module-function.erlang"
746 },
747 "7": {
748 "name": "entity.name.function.erlang"
749 },
750 "8": {
751 "name": "variable.other.erlang"
752 },
753 "9": {
754 "name": "punctuation.definition.parameters.begin.erlang"
755 }
756 },
757 "end": "(?=\\))",
758 "patterns": [
759 {
760 "match": ",",
761 "name": "punctuation.separator.parameters.erlang"
762 },
763 {
764 "include": "#everything-else"
765 }
766 ]
767 }
768 ]
769 },
770 "import-export-directive": {
771 "patterns": [
772 {
773 "begin": "^\\s*+(-)\\s*+(import)\\s*+(\\()\\s*+([a-z][a-zA-Z\\d@_]*+|'[^']*+')\\s*+(,)",
774 "beginCaptures": {
775 "1": {
776 "name": "punctuation.section.directive.begin.erlang"
777 },
778 "2": {
779 "name": "keyword.control.directive.import.erlang"
780 },
781 "3": {
782 "name": "punctuation.definition.parameters.begin.erlang"
783 },
784 "4": {
785 "name": "entity.name.type.class.module.erlang"
786 },
787 "5": {
788 "name": "punctuation.separator.parameters.erlang"
789 }
790 },
791 "end": "(\\))\\s*+(\\.)",
792 "endCaptures": {
793 "1": {
794 "name": "punctuation.definition.parameters.end.erlang"
795 },
796 "2": {
797 "name": "punctuation.section.directive.end.erlang"
798 }
799 },
800 "name": "meta.directive.import.erlang",
801 "patterns": [
802 {
803 "include": "#internal-function-list"
804 }
805 ]
806 },
807 {
808 "begin": "^\\s*+(-)\\s*+(export)\\s*+(\\()",
809 "beginCaptures": {
810 "1": {
811 "name": "punctuation.section.directive.begin.erlang"
812 },
813 "2": {
814 "name": "keyword.control.directive.export.erlang"
815 },
816 "3": {
817 "name": "punctuation.definition.parameters.begin.erlang"
818 }
819 },
820 "end": "(\\))\\s*+(\\.)",
821 "endCaptures": {
822 "1": {
823 "name": "punctuation.definition.parameters.end.erlang"
824 },
825 "2": {
826 "name": "punctuation.section.directive.end.erlang"
827 }
828 },
829 "name": "meta.directive.export.erlang",
830 "patterns": [
831 {
832 "include": "#internal-function-list"
833 }
834 ]
835 }
836 ]
837 },
838 "internal-expression-punctuation": {
839 "captures": {
840 "1": {
841 "name": "punctuation.separator.clause-head-body.erlang"
842 },
843 "2": {
844 "name": "punctuation.separator.clauses.erlang"
845 },
846 "3": {
847 "name": "punctuation.separator.expressions.erlang"
848 }
849 },
850 "match": "(->)|(;)|(,)"
851 },
852 "internal-function-list": {
853 "begin": "(\\[)",
854 "beginCaptures": {
855 "1": {
856 "name": "punctuation.definition.list.begin.erlang"
857 }
858 },
859 "end": "(\\])",
860 "endCaptures": {
861 "1": {
862 "name": "punctuation.definition.list.end.erlang"
863 }
864 },
865 "name": "meta.structure.list.function.erlang",
866 "patterns": [
867 {
868 "begin": "([a-z][a-zA-Z\\d@_]*+|'[^']*+')\\s*+(/)",
869 "beginCaptures": {
870 "1": {
871 "name": "entity.name.function.erlang"
872 },
873 "2": {
874 "name": "punctuation.separator.function-arity.erlang"
875 }
876 },
877 "end": "(,)|(?=\\])",
878 "endCaptures": {
879 "1": {
880 "name": "punctuation.separator.list.erlang"
881 }
882 },
883 "patterns": [
884 {
885 "include": "#everything-else"
886 }
887 ]
888 },
889 {
890 "include": "#everything-else"
891 }
892 ]
893 },
894 "internal-function-parts": {
895 "patterns": [
896 {
897 "begin": "(?=\\()",
898 "end": "(->)",
899 "endCaptures": {
900 "1": {
901 "name": "punctuation.separator.clause-head-body.erlang"
902 }
903 },
904 "patterns": [
905 {
906 "begin": "(\\()",
907 "beginCaptures": {
908 "1": {
909 "name": "punctuation.definition.parameters.begin.erlang"
910 }
911 },
912 "end": "(\\))",
913 "endCaptures": {
914 "1": {
915 "name": "punctuation.definition.parameters.end.erlang"
916 }
917 },
918 "patterns": [
919 {
920 "match": ",",
921 "name": "punctuation.separator.parameters.erlang"
922 },
923 {
924 "include": "#everything-else"
925 }
926 ]
927 },
928 {
929 "match": ",|;",
930 "name": "punctuation.separator.guards.erlang"
931 },
932 {
933 "include": "#everything-else"
934 }
935 ]
936 },
937 {
938 "match": ",",
939 "name": "punctuation.separator.expressions.erlang"
940 },
941 {
942 "include": "#everything-else"
943 }
944 ]
945 },
946 "internal-record-body": {
947 "begin": "(\\{)",
948 "beginCaptures": {
949 "1": {
950 "name": "punctuation.definition.class.record.begin.erlang"
951 }
952 },
953 "end": "(\\})",
954 "endCaptures": {
955 "1": {
956 "name": "punctuation.definition.class.record.end.erlang"
957 }
958 },
959 "name": "meta.structure.record.erlang",
960 "patterns": [
961 {
962 "begin": "(([a-z][a-zA-Z\\d@_]*+|'[^']*+')|(_))",
963 "beginCaptures": {
964 "2": {
965 "name": "variable.other.field.erlang"
966 },
967 "3": {
968 "name": "variable.language.omitted.field.erlang"
969 }
970 },
971 "end": "(,)|(?=\\})",
972 "endCaptures": {
973 "1": {
974 "name": "punctuation.separator.class.record.erlang"
975 }
976 },
977 "patterns": [
978 {
979 "include": "#everything-else"
980 }
981 ]
982 },
983 {
984 "include": "#everything-else"
985 }
986 ]
987 },
988 "internal-type-specifiers": {
989 "begin": "(/)",
990 "beginCaptures": {
991 "1": {
992 "name": "punctuation.separator.value-type.erlang"
993 }
994 },
995 "end": "(?=,|:|>>)",
996 "patterns": [
997 {
998 "captures": {
999 "1": {
1000 "name": "storage.type.erlang"
1001 },
1002 "2": {
1003 "name": "storage.modifier.signedness.erlang"
1004 },
1005 "3": {
1006 "name": "storage.modifier.endianness.erlang"
1007 },
1008 "4": {
1009 "name": "storage.modifier.unit.erlang"
1010 },
1011 "5": {
1012 "name": "punctuation.separator.unit-specifiers.erlang"
1013 },
1014 "6": {
1015 "name": "constant.numeric.integer.decimal.erlang"
1016 },
1017 "7": {
1018 "name": "punctuation.separator.type-specifiers.erlang"
1019 }
1020 },
1021 "match": "(integer|float|binary|bytes|bitstring|bits|utf8|utf16|utf32)|(signed|unsigned)|(big|little|native)|(unit)(:)(\\d++)|(-)"
1022 }
1023 ]
1024 },
1025 "keyword": {
1026 "match": "\\b(after|begin|case|catch|cond|end|fun|if|let|of|try|receive|when)\\b",
1027 "name": "keyword.control.erlang"
1028 },
1029 "language-constant": {
1030 "match": "\\b(false|true|undefined)\\b",
1031 "name": "constant.language"
1032 },
1033 "list": {
1034 "begin": "(\\[)",
1035 "beginCaptures": {
1036 "1": {
1037 "name": "punctuation.definition.list.begin.erlang"
1038 }
1039 },
1040 "end": "(\\])",
1041 "endCaptures": {
1042 "1": {
1043 "name": "punctuation.definition.list.end.erlang"
1044 }
1045 },
1046 "name": "meta.structure.list.erlang",
1047 "patterns": [
1048 {
1049 "match": "\\||\\|\\||,",
1050 "name": "punctuation.separator.list.erlang"
1051 },
1052 {
1053 "include": "#everything-else"
1054 }
1055 ]
1056 },
1057 "macro-directive": {
1058 "patterns": [
1059 {
1060 "captures": {
1061 "1": {
1062 "name": "punctuation.section.directive.begin.erlang"
1063 },
1064 "2": {
1065 "name": "keyword.control.directive.ifdef.erlang"
1066 },
1067 "3": {
1068 "name": "punctuation.definition.parameters.begin.erlang"
1069 },
1070 "4": {
1071 "name": "entity.name.function.macro.erlang"
1072 },
1073 "5": {
1074 "name": "punctuation.definition.parameters.end.erlang"
1075 },
1076 "6": {
1077 "name": "punctuation.section.directive.end.erlang"
1078 }
1079 },
1080 "match": "^\\s*+(-)\\s*+(ifdef)\\s*+(\\()\\s*+([a-zA-z\\d@_]++)\\s*+(\\))\\s*+(\\.)",
1081 "name": "meta.directive.ifdef.erlang"
1082 },
1083 {
1084 "captures": {
1085 "1": {
1086 "name": "punctuation.section.directive.begin.erlang"
1087 },
1088 "2": {
1089 "name": "keyword.control.directive.ifndef.erlang"
1090 },
1091 "3": {
1092 "name": "punctuation.definition.parameters.begin.erlang"
1093 },
1094 "4": {
1095 "name": "entity.name.function.macro.erlang"
1096 },
1097 "5": {
1098 "name": "punctuation.definition.parameters.end.erlang"
1099 },
1100 "6": {
1101 "name": "punctuation.section.directive.end.erlang"
1102 }
1103 },
1104 "match": "^\\s*+(-)\\s*+(ifndef)\\s*+(\\()\\s*+([a-zA-z\\d@_]++)\\s*+(\\))\\s*+(\\.)",
1105 "name": "meta.directive.ifndef.erlang"
1106 },
1107 {
1108 "captures": {
1109 "1": {
1110 "name": "punctuation.section.directive.begin.erlang"
1111 },
1112 "2": {
1113 "name": "keyword.control.directive.undef.erlang"
1114 },
1115 "3": {
1116 "name": "punctuation.definition.parameters.begin.erlang"
1117 },
1118 "4": {
1119 "name": "entity.name.function.macro.erlang"
1120 },
1121 "5": {
1122 "name": "punctuation.definition.parameters.end.erlang"
1123 },
1124 "6": {
1125 "name": "punctuation.section.directive.end.erlang"
1126 }
1127 },
1128 "match": "^\\s*+(-)\\s*+(undef)\\s*+(\\()\\s*+([a-zA-z\\d@_]++)\\s*+(\\))\\s*+(\\.)",
1129 "name": "meta.directive.undef.erlang"
1130 }
1131 ]
1132 },
1133 "macro-usage": {
1134 "captures": {
1135 "1": {
1136 "name": "keyword.operator.macro.erlang"
1137 },
1138 "2": {
1139 "name": "entity.name.function.macro.erlang"
1140 }
1141 },
1142 "match": "(\\?\\??)\\s*+([a-zA-Z\\d@_]++)",
1143 "name": "meta.macro-usage.erlang"
1144 },
1145 "module-directive": {
1146 "captures": {
1147 "1": {
1148 "name": "punctuation.section.directive.begin.erlang"
1149 },
1150 "2": {
1151 "name": "keyword.control.directive.module.erlang"
1152 },
1153 "3": {
1154 "name": "punctuation.definition.parameters.begin.erlang"
1155 },
1156 "4": {
1157 "name": "entity.name.type.class.module.definition.erlang"
1158 },
1159 "5": {
1160 "name": "punctuation.definition.parameters.end.erlang"
1161 },
1162 "6": {
1163 "name": "punctuation.section.directive.end.erlang"
1164 }
1165 },
1166 "match": "^\\s*+(-)\\s*+(module)\\s*+(\\()\\s*+([a-z][a-zA-Z\\d@_]*+)\\s*+(\\))\\s*+(\\.)",
1167 "name": "meta.directive.module.erlang"
1168 },
1169 "number": {
1170 "begin": "(?=\\d)",
1171 "end": "(?!\\d)",
1172 "patterns": [
1173 {
1174 "captures": {
1175 "1": {
1176 "name": "punctuation.separator.integer-float.erlang"
1177 },
1178 "2": {
1179 "name": "punctuation.separator.float-exponent.erlang"
1180 }
1181 },
1182 "match": "\\d++(\\.)\\d++([eE][\\+\\-]?\\d++)?",
1183 "name": "constant.numeric.float.erlang"
1184 },
1185 {
1186 "captures": {
1187 "1": {
1188 "name": "punctuation.separator.base-integer.erlang"
1189 }
1190 },
1191 "match": "2(#)([0-1]++_)*[0-1]++",
1192 "name": "constant.numeric.integer.binary.erlang"
1193 },
1194 {
1195 "captures": {
1196 "1": {
1197 "name": "punctuation.separator.base-integer.erlang"
1198 }
1199 },
1200 "match": "3(#)([0-2]++_)*[0-2]++",
1201 "name": "constant.numeric.integer.base-3.erlang"
1202 },
1203 {
1204 "captures": {
1205 "1": {
1206 "name": "punctuation.separator.base-integer.erlang"
1207 }
1208 },
1209 "match": "4(#)([0-3]++_)*[0-3]++",
1210 "name": "constant.numeric.integer.base-4.erlang"
1211 },
1212 {
1213 "captures": {
1214 "1": {
1215 "name": "punctuation.separator.base-integer.erlang"
1216 }
1217 },
1218 "match": "5(#)([0-4]++_)*[0-4]++",
1219 "name": "constant.numeric.integer.base-5.erlang"
1220 },
1221 {
1222 "captures": {
1223 "1": {
1224 "name": "punctuation.separator.base-integer.erlang"
1225 }
1226 },
1227 "match": "6(#)([0-5]++_)*[0-5]++",
1228 "name": "constant.numeric.integer.base-6.erlang"
1229 },
1230 {
1231 "captures": {
1232 "1": {
1233 "name": "punctuation.separator.base-integer.erlang"
1234 }
1235 },
1236 "match": "7(#)([0-6]++_)*[0-6]++",
1237 "name": "constant.numeric.integer.base-7.erlang"
1238 },
1239 {
1240 "captures": {
1241 "1": {
1242 "name": "punctuation.separator.base-integer.erlang"
1243 }
1244 },
1245 "match": "8(#)([0-7]++_)*[0-7]++",
1246 "name": "constant.numeric.integer.octal.erlang"
1247 },
1248 {
1249 "captures": {
1250 "1": {
1251 "name": "punctuation.separator.base-integer.erlang"
1252 }
1253 },
1254 "match": "9(#)([0-8]++_)*[0-8]++",
1255 "name": "constant.numeric.integer.base-9.erlang"
1256 },
1257 {
1258 "captures": {
1259 "1": {
1260 "name": "punctuation.separator.base-integer.erlang"
1261 }
1262 },
1263 "match": "10(#)(\\d++_)*\\d++",
1264 "name": "constant.numeric.integer.decimal.erlang"
1265 },
1266 {
1267 "captures": {
1268 "1": {
1269 "name": "punctuation.separator.base-integer.erlang"
1270 }
1271 },
1272 "match": "11(#)([\\daA]++_)*[\\daA]++",
1273 "name": "constant.numeric.integer.base-11.erlang"
1274 },
1275 {
1276 "captures": {
1277 "1": {
1278 "name": "punctuation.separator.base-integer.erlang"
1279 }
1280 },
1281 "match": "12(#)([\\da-bA-B]++_)*[\\da-bA-B]++",
1282 "name": "constant.numeric.integer.base-12.erlang"
1283 },
1284 {
1285 "captures": {
1286 "1": {
1287 "name": "punctuation.separator.base-integer.erlang"
1288 }
1289 },
1290 "match": "13(#)([\\da-cA-C]++_)*[\\da-cA-C]++",
1291 "name": "constant.numeric.integer.base-13.erlang"
1292 },
1293 {
1294 "captures": {
1295 "1": {
1296 "name": "punctuation.separator.base-integer.erlang"
1297 }
1298 },
1299 "match": "14(#)([\\da-dA-D]++_)*[\\da-dA-D]++",
1300 "name": "constant.numeric.integer.base-14.erlang"
1301 },
1302 {
1303 "captures": {
1304 "1": {
1305 "name": "punctuation.separator.base-integer.erlang"
1306 }
1307 },
1308 "match": "15(#)([\\da-eA-E]++_)*[\\da-eA-E]++",
1309 "name": "constant.numeric.integer.base-15.erlang"
1310 },
1311 {
1312 "captures": {
1313 "1": {
1314 "name": "punctuation.separator.base-integer.erlang"
1315 }
1316 },
1317 "match": "16(#)([\\da-fA-F]++_)*[\\da-fA-F]++",
1318 "name": "constant.numeric.integer.hexadecimal.erlang"
1319 },
1320 {
1321 "captures": {
1322 "1": {
1323 "name": "punctuation.separator.base-integer.erlang"
1324 }
1325 },
1326 "match": "17(#)([\\da-gA-G]++_)*[\\da-gA-G]++",
1327 "name": "constant.numeric.integer.base-17.erlang"
1328 },
1329 {
1330 "captures": {
1331 "1": {
1332 "name": "punctuation.separator.base-integer.erlang"
1333 }
1334 },
1335 "match": "18(#)([\\da-hA-H]++_)*[\\da-hA-H]++",
1336 "name": "constant.numeric.integer.base-18.erlang"
1337 },
1338 {
1339 "captures": {
1340 "1": {
1341 "name": "punctuation.separator.base-integer.erlang"
1342 }
1343 },
1344 "match": "19(#)([\\da-iA-I]++_)*[\\da-iA-I]++",
1345 "name": "constant.numeric.integer.base-19.erlang"
1346 },
1347 {
1348 "captures": {
1349 "1": {
1350 "name": "punctuation.separator.base-integer.erlang"
1351 }
1352 },
1353 "match": "20(#)([\\da-jA-J]++_)*[\\da-jA-J]++",
1354 "name": "constant.numeric.integer.base-20.erlang"
1355 },
1356 {
1357 "captures": {
1358 "1": {
1359 "name": "punctuation.separator.base-integer.erlang"
1360 }
1361 },
1362 "match": "21(#)([\\da-kA-K]++_)*[\\da-kA-K]++",
1363 "name": "constant.numeric.integer.base-21.erlang"
1364 },
1365 {
1366 "captures": {
1367 "1": {
1368 "name": "punctuation.separator.base-integer.erlang"
1369 }
1370 },
1371 "match": "22(#)([\\da-lA-L]++_)*[\\da-lA-L]++",
1372 "name": "constant.numeric.integer.base-22.erlang"
1373 },
1374 {
1375 "captures": {
1376 "1": {
1377 "name": "punctuation.separator.base-integer.erlang"
1378 }
1379 },
1380 "match": "23(#)([\\da-mA-M]++_)*[\\da-mA-M]++",
1381 "name": "constant.numeric.integer.base-23.erlang"
1382 },
1383 {
1384 "captures": {
1385 "1": {
1386 "name": "punctuation.separator.base-integer.erlang"
1387 }
1388 },
1389 "match": "24(#)([\\da-nA-N]++_)*[\\da-nA-N]++",
1390 "name": "constant.numeric.integer.base-24.erlang"
1391 },
1392 {
1393 "captures": {
1394 "1": {
1395 "name": "punctuation.separator.base-integer.erlang"
1396 }
1397 },
1398 "match": "25(#)([\\da-oA-O]++_)*[\\da-oA-O]++",
1399 "name": "constant.numeric.integer.base-25.erlang"
1400 },
1401 {
1402 "captures": {
1403 "1": {
1404 "name": "punctuation.separator.base-integer.erlang"
1405 }
1406 },
1407 "match": "26(#)([\\da-pA-P]++_)*[\\da-pA-P]++",
1408 "name": "constant.numeric.integer.base-26.erlang"
1409 },
1410 {
1411 "captures": {
1412 "1": {
1413 "name": "punctuation.separator.base-integer.erlang"
1414 }
1415 },
1416 "match": "27(#)([\\da-qA-Q]++_)*[\\da-qA-Q]++",
1417 "name": "constant.numeric.integer.base-27.erlang"
1418 },
1419 {
1420 "captures": {
1421 "1": {
1422 "name": "punctuation.separator.base-integer.erlang"
1423 }
1424 },
1425 "match": "28(#)([\\da-rA-R]++_)*[\\da-rA-R]++",
1426 "name": "constant.numeric.integer.base-28.erlang"
1427 },
1428 {
1429 "captures": {
1430 "1": {
1431 "name": "punctuation.separator.base-integer.erlang"
1432 }
1433 },
1434 "match": "29(#)([\\da-sA-S]++_)*[\\da-sA-S]++",
1435 "name": "constant.numeric.integer.base-29.erlang"
1436 },
1437 {
1438 "captures": {
1439 "1": {
1440 "name": "punctuation.separator.base-integer.erlang"
1441 }
1442 },
1443 "match": "30(#)([\\da-tA-T]++_)*[\\da-tA-T]++",
1444 "name": "constant.numeric.integer.base-30.erlang"
1445 },
1446 {
1447 "captures": {
1448 "1": {
1449 "name": "punctuation.separator.base-integer.erlang"
1450 }
1451 },
1452 "match": "31(#)([\\da-uA-U]++_)*[\\da-uA-U]++",
1453 "name": "constant.numeric.integer.base-31.erlang"
1454 },
1455 {
1456 "captures": {
1457 "1": {
1458 "name": "punctuation.separator.base-integer.erlang"
1459 }
1460 },
1461 "match": "32(#)([\\da-vA-V]++_)*[\\da-vA-V]++",
1462 "name": "constant.numeric.integer.base-32.erlang"
1463 },
1464 {
1465 "captures": {
1466 "1": {
1467 "name": "punctuation.separator.base-integer.erlang"
1468 }
1469 },
1470 "match": "33(#)([\\da-wA-W]++_)*[\\da-wA-W]++",
1471 "name": "constant.numeric.integer.base-33.erlang"
1472 },
1473 {
1474 "captures": {
1475 "1": {
1476 "name": "punctuation.separator.base-integer.erlang"
1477 }
1478 },
1479 "match": "34(#)([\\da-xA-X]++_)*[\\da-xA-X]++",
1480 "name": "constant.numeric.integer.base-34.erlang"
1481 },
1482 {
1483 "captures": {
1484 "1": {
1485 "name": "punctuation.separator.base-integer.erlang"
1486 }
1487 },
1488 "match": "35(#)([\\da-yA-Y]++_)*[\\da-yA-Y]++",
1489 "name": "constant.numeric.integer.base-35.erlang"
1490 },
1491 {
1492 "captures": {
1493 "1": {
1494 "name": "punctuation.separator.base-integer.erlang"
1495 }
1496 },
1497 "match": "36(#)([\\da-zA-Z]++_)*[\\da-zA-Z]++",
1498 "name": "constant.numeric.integer.base-36.erlang"
1499 },
1500 {
1501 "match": "\\d++#([\\da-zA-Z]++_)*[\\da-zA-Z]++",
1502 "name": "invalid.illegal.integer.erlang"
1503 },
1504 {
1505 "match": "(\\d++_)*\\d++",
1506 "name": "constant.numeric.integer.decimal.erlang"
1507 }
1508 ]
1509 },
1510 "parenthesized-expression": {
1511 "begin": "(\\()",
1512 "beginCaptures": {
1513 "1": {
1514 "name": "punctuation.section.expression.begin.erlang"
1515 }
1516 },
1517 "end": "(\\))",
1518 "endCaptures": {
1519 "1": {
1520 "name": "punctuation.section.expression.end.erlang"
1521 }
1522 },
1523 "name": "meta.expression.parenthesized",
1524 "patterns": [
1525 {
1526 "include": "#everything-else"
1527 }
1528 ]
1529 },
1530 "record-directive": {
1531 "begin": "^\\s*+(-)\\s*+(record)\\s*+(\\()\\s*+([a-z][a-zA-Z\\d@_]*+|'[^']*+')\\s*+(,)",
1532 "beginCaptures": {
1533 "1": {
1534 "name": "punctuation.section.directive.begin.erlang"
1535 },
1536 "2": {
1537 "name": "keyword.control.directive.import.erlang"
1538 },
1539 "3": {
1540 "name": "punctuation.definition.parameters.begin.erlang"
1541 },
1542 "4": {
1543 "name": "entity.name.type.class.record.definition.erlang"
1544 },
1545 "5": {
1546 "name": "punctuation.separator.parameters.erlang"
1547 }
1548 },
1549 "end": "(\\))\\s*+(\\.)",
1550 "endCaptures": {
1551 "1": {
1552 "name": "punctuation.definition.parameters.end.erlang"
1553 },
1554 "2": {
1555 "name": "punctuation.section.directive.end.erlang"
1556 }
1557 },
1558 "name": "meta.directive.record.erlang",
1559 "patterns": [
1560 {
1561 "include": "#internal-record-body"
1562 },
1563 {
1564 "include": "#comment"
1565 }
1566 ]
1567 },
1568 "record-usage": {
1569 "patterns": [
1570 {
1571 "captures": {
1572 "1": {
1573 "name": "keyword.operator.record.erlang"
1574 },
1575 "2": {
1576 "name": "entity.name.type.class.record.erlang"
1577 },
1578 "3": {
1579 "name": "punctuation.separator.record-field.erlang"
1580 },
1581 "4": {
1582 "name": "variable.other.field.erlang"
1583 }
1584 },
1585 "match": "(#)\\s*+([a-z][a-zA-Z\\d@_]*+|'[^']*+')\\s*+(\\.)\\s*+([a-z][a-zA-Z\\d@_]*+|'[^']*+')",
1586 "name": "meta.record-usage.erlang"
1587 },
1588 {
1589 "begin": "(#)\\s*+([a-z][a-zA-Z\\d@_]*+|'[^']*+')",
1590 "beginCaptures": {
1591 "1": {
1592 "name": "keyword.operator.record.erlang"
1593 },
1594 "2": {
1595 "name": "entity.name.type.class.record.erlang"
1596 }
1597 },
1598 "end": "(?<=\\})",
1599 "name": "meta.record-usage.erlang",
1600 "patterns": [
1601 {
1602 "include": "#internal-record-body"
1603 }
1604 ]
1605 }
1606 ]
1607 },
1608 "string": {
1609 "begin": "(\")",
1610 "beginCaptures": {
1611 "1": {
1612 "name": "punctuation.definition.string.begin.erlang"
1613 }
1614 },
1615 "end": "(\")",
1616 "endCaptures": {
1617 "1": {
1618 "name": "punctuation.definition.string.end.erlang"
1619 }
1620 },
1621 "name": "string.quoted.double.erlang",
1622 "patterns": [
1623 {
1624 "captures": {
1625 "1": {
1626 "name": "punctuation.definition.escape.erlang"
1627 },
1628 "3": {
1629 "name": "punctuation.definition.escape.erlang"
1630 }
1631 },
1632 "match": "(\\\\)([bdefnrstv\\\\'\"]|(\\^)[@-_a-z]|[0-7]{1,3}|x[\\da-fA-F]{2})",
1633 "name": "constant.character.escape.erlang"
1634 },
1635 {
1636 "match": "\\\\\\^?.?",
1637 "name": "invalid.illegal.string.erlang"
1638 },
1639 {
1640 "captures": {
1641 "1": {
1642 "name": "punctuation.definition.placeholder.erlang"
1643 },
1644 "3": {
1645 "name": "punctuation.separator.placeholder-parts.erlang"
1646 },
1647 "4": {
1648 "name": "punctuation.separator.placeholder-parts.erlang"
1649 },
1650 "6": {
1651 "name": "punctuation.separator.placeholder-parts.erlang"
1652 },
1653 "8": {
1654 "name": "punctuation.separator.placeholder-parts.erlang"
1655 },
1656 "10": {
1657 "name": "punctuation.separator.placeholder-parts.erlang"
1658 },
1659 "12": {
1660 "name": "punctuation.separator.placeholder-parts.erlang"
1661 }
1662 },
1663 "match": "(~)((\\-)?\\d++|(\\*))?((\\.)(\\d++|(\\*)))?((\\.)((\\*)|.))?[~cfegswpWPBX#bx\\+ni]",
1664 "name": "constant.other.placeholder.erlang"
1665 },
1666 {
1667 "captures": {
1668 "1": {
1669 "name": "punctuation.definition.placeholder.erlang"
1670 },
1671 "2": {
1672 "name": "punctuation.separator.placeholder-parts.erlang"
1673 }
1674 },
1675 "match": "(~)(\\*)?(\\d++)?[~du\\-#fsacl]",
1676 "name": "constant.other.placeholder.erlang"
1677 },
1678 {
1679 "match": "~[^\"]?",
1680 "name": "invalid.illegal.string.erlang"
1681 }
1682 ]
1683 },
1684 "symbolic-operator": {
1685 "match": "\\+\\+|\\+|--|-|\\*|/=|/|=/=|=:=|==|=<|=|<-|<|>=|>|!|::",
1686 "name": "keyword.operator.symbolic.erlang"
1687 },
1688 "textual-operator": {
1689 "match": "\\b(andalso|band|and|bxor|xor|bor|orelse|or|bnot|not|bsl|bsr|div|rem)\\b",
1690 "name": "keyword.operator.textual.erlang"
1691 },
1692 "tuple": {
1693 "begin": "(\\{)",
1694 "beginCaptures": {
1695 "1": {
1696 "name": "punctuation.definition.tuple.begin.erlang"
1697 }
1698 },
1699 "end": "(\\})",
1700 "endCaptures": {
1701 "1": {
1702 "name": "punctuation.definition.tuple.end.erlang"
1703 }
1704 },
1705 "name": "meta.structure.tuple.erlang",
1706 "patterns": [
1707 {
1708 "match": ",",
1709 "name": "punctuation.separator.tuple.erlang"
1710 },
1711 {
1712 "include": "#everything-else"
1713 }
1714 ]
1715 },
1716 "variable": {
1717 "captures": {
1718 "1": {
1719 "name": "variable.other.erlang"
1720 },
1721 "2": {
1722 "name": "variable.language.omitted.erlang"
1723 }
1724 },
1725 "match": "(_[a-zA-Z\\d@_]++|[A-Z][a-zA-Z\\d@_]*+)|(_)"
1726 }
1727 },
1728 "scopeName": "source.erlang",
1729 "uuid": "58EA597D-5158-4BF7-9FB2-B05135D1E166"
1730 }
1731