PluginProbe
Code Block Pro – Beautiful Syntax Highlighting / 1.27.1
Code Block Pro – Beautiful Syntax Highlighting v1.27.1
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 / cadence.tmLanguage.json

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

739 lines 18.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 {
2 "scopeName": "source.cadence",
3 "patterns": [
4 {
5 "include": "#comments"
6 },
7 {
8 "include": "#expressions"
9 },
10 {
11 "include": "#declarations"
12 },
13 {
14 "include": "#keywords"
15 },
16 {
17 "include": "#code-block"
18 },
19 {
20 "include": "#composite"
21 },
22 {
23 "include": "#event"
24 }
25 ],
26 "repository": {
27 "comments": {
28 "patterns": [
29 {
30 "captures": {
31 "1": {
32 "name": "punctuation.definition.comment.cadence"
33 }
34 },
35 "match": "\\A^(#!).*$\\n?",
36 "name": "comment.line.number-sign.cadence"
37 },
38 {
39 "begin": "/\\*\\*(?!/)",
40 "beginCaptures": {
41 "0": {
42 "name": "punctuation.definition.comment.begin.cadence"
43 }
44 },
45 "end": "\\*/",
46 "endCaptures": {
47 "0": {
48 "name": "punctuation.definition.comment.end.cadence"
49 }
50 },
51 "name": "comment.block.documentation.cadence",
52 "patterns": [
53 {
54 "include": "#nested"
55 }
56 ]
57 },
58 {
59 "begin": "/\\*:",
60 "beginCaptures": {
61 "0": {
62 "name": "punctuation.definition.comment.begin.cadence"
63 }
64 },
65 "end": "\\*/",
66 "endCaptures": {
67 "0": {
68 "name": "punctuation.definition.comment.end.cadence"
69 }
70 },
71 "name": "comment.block.documentation.playground.cadence",
72 "patterns": [
73 {
74 "include": "#nested"
75 }
76 ]
77 },
78 {
79 "begin": "/\\*",
80 "beginCaptures": {
81 "0": {
82 "name": "punctuation.definition.comment.begin.cadence"
83 }
84 },
85 "end": "\\*/",
86 "endCaptures": {
87 "0": {
88 "name": "punctuation.definition.comment.end.cadence"
89 }
90 },
91 "name": "comment.block.cadence",
92 "patterns": [
93 {
94 "include": "#nested"
95 }
96 ]
97 },
98 {
99 "match": "\\*/",
100 "name": "invalid.illegal.unexpected-end-of-block-comment.cadence"
101 },
102 {
103 "begin": "(^[ \\t]+)?(?=//)",
104 "beginCaptures": {
105 "1": {
106 "name": "punctuation.whitespace.comment.leading.cadence"
107 }
108 },
109 "end": "(?!\\G)",
110 "patterns": [
111 {
112 "begin": "///",
113 "beginCaptures": {
114 "0": {
115 "name": "punctuation.definition.comment.cadence"
116 }
117 },
118 "end": "^",
119 "name": "comment.line.triple-slash.documentation.cadence"
120 },
121 {
122 "begin": "//:",
123 "beginCaptures": {
124 "0": {
125 "name": "punctuation.definition.comment.cadence"
126 }
127 },
128 "end": "^",
129 "name": "comment.line.double-slash.documentation.cadence"
130 },
131 {
132 "begin": "//",
133 "beginCaptures": {
134 "0": {
135 "name": "punctuation.definition.comment.cadence"
136 }
137 },
138 "end": "^",
139 "name": "comment.line.double-slash.cadence"
140 }
141 ]
142 }
143 ],
144 "repository": {
145 "nested": {
146 "begin": "/\\*",
147 "end": "\\*/",
148 "patterns": [
149 {
150 "include": "#nested"
151 }
152 ]
153 }
154 }
155 },
156 "literals": {
157 "patterns": [
158 {
159 "include": "#boolean"
160 },
161 {
162 "include": "#numeric"
163 },
164 {
165 "include": "#string"
166 },
167 {
168 "match": "\\bnil\\b",
169 "name": "constant.language.nil.cadence"
170 }
171 ],
172 "repository": {
173 "boolean": {
174 "match": "\\b(true|false)\\b",
175 "name": "constant.language.boolean.cadence"
176 },
177 "numeric": {
178 "patterns": [
179 {
180 "include": "#binary"
181 },
182 {
183 "include": "#octal"
184 },
185 {
186 "include": "#decimal"
187 },
188 {
189 "include": "#hexadecimal"
190 }
191 ],
192 "repository": {
193 "binary": {
194 "comment": "",
195 "match": "(\\B\\-|\\b)0b[01]([_01]*[01])?\\b",
196 "name": "constant.numeric.integer.binary.cadence"
197 },
198 "octal": {
199 "comment": "",
200 "match": "(\\B\\-|\\b)0o[0-7]([_0-7]*[0-7])?\\b",
201 "name": "constant.numeric.integer.octal.cadence"
202 },
203 "decimal": {
204 "comment": "",
205 "match": "(\\B\\-|\\b)[0-9]([_0-9]*[0-9])?\\b",
206 "name": "constant.numeric.integer.decimal.cadence"
207 },
208 "hexadecimal": {
209 "comment": "",
210 "match": "(\\B\\-|\\b)0x[0-9A-Fa-f]([_0-9A-Fa-f]*[0-9A-Fa-f])?\\b",
211 "name": "constant.numeric.integer.hexadecimal.cadence"
212 }
213 }
214 },
215 "string": {
216 "patterns": [
217 {
218 "begin": "\"",
219 "beginCaptures": {
220 "0": {
221 "name": "punctuation.definition.string.begin.cadence"
222 }
223 },
224 "end": "\"",
225 "endCaptures": {
226 "0": {
227 "name": "punctuation.definition.string.end.cadence"
228 }
229 },
230 "name": "string.quoted.double.single-line.cadence",
231 "patterns": [
232 {
233 "match": "\\r|\\n",
234 "name": "invalid.illegal.returns-not-allowed.cadence"
235 },
236 {
237 "include": "#string-guts"
238 }
239 ]
240 }
241 ],
242 "repository": {
243 "string-guts": {
244 "patterns": [
245 {
246 "match": "\\\\[0\\\\tnr\"']",
247 "name": "constant.character.escape.cadence"
248 },
249 {
250 "match": "\\\\u\\{[0-9a-fA-F]{1,8}\\}",
251 "name": "constant.character.escape.unicode.cadence"
252 }
253 ]
254 }
255 }
256 }
257 }
258 },
259 "operators": {
260 "patterns": [
261 {
262 "match": "\\-",
263 "name": "keyword.operator.arithmetic.unary.cadence"
264 },
265 {
266 "match": "!",
267 "name": "keyword.operator.logical.not.cadence"
268 },
269 {
270 "match": "=",
271 "name": "keyword.operator.assignment.cadence"
272 },
273 {
274 "match": "<-",
275 "name": "keyword.operator.move.cadence"
276 },
277 {
278 "match": "<-!",
279 "name": "keyword.operator.force-move.cadence"
280 },
281 {
282 "match": "\\+|\\-|\\*|/",
283 "name": "keyword.operator.arithmetic.cadence"
284 },
285 {
286 "match": "%",
287 "name": "keyword.operator.arithmetic.remainder.cadence"
288 },
289 {
290 "match": "==|!=|>|<|>=|<=",
291 "name": "keyword.operator.comparison.cadence"
292 },
293 {
294 "match": "\\?\\?",
295 "name": "keyword.operator.coalescing.cadence"
296 },
297 {
298 "match": "&&|\\|\\|",
299 "name": "keyword.operator.logical.cadence"
300 },
301 {
302 "match": "[?!]",
303 "name": "keyword.operator.type.optional.cadence"
304 }
305 ]
306 },
307 "keywords": {
308 "patterns": [
309 {
310 "match": "(?<!\\.)\\b(?:if|else|switch|case|default)\\b",
311 "name": "keyword.control.branch.cadence"
312 },
313 {
314 "match": "(?<!\\.)\\b(?:return|continue|break)\\b",
315 "name": "keyword.control.transfer.cadence"
316 },
317 {
318 "match": "(?<!\\.)\\b(?:while|for|in)\\b",
319 "name": "keyword.control.loop.cadence"
320 },
321 {
322 "match": "(?<!\\.)\\b(?:pre|post|prepare|execute|create|destroy|emit)\\b",
323 "name": "keyword.other.cadence"
324 },
325 {
326 "match": "(?<!\\.)\\b(?:private|pub(?:\\(set\\))?|access\\((?:self|contract|account|all)\\))\\b",
327 "name": "keyword.other.declaration-specifier.accessibility.cadence"
328 },
329 {
330 "match": "\\b(?:init|destroy)\\b",
331 "name": "storage.type.function.cadence"
332 },
333 {
334 "match": "(?<!\\.)\\b(?:import|from)\\b",
335 "name": "keyword.control.import.cadence"
336 }
337 ]
338 },
339 "code-block": {
340 "begin": "\\{",
341 "beginCaptures": {
342 "0": {
343 "name": "punctuation.section.scope.begin.cadence"
344 }
345 },
346 "end": "\\}",
347 "endCaptures": {
348 "0": {
349 "name": "punctuation.section.scope.end.cadence"
350 }
351 },
352 "patterns": [
353 {
354 "include": "$self"
355 }
356 ]
357 },
358 "function": {
359 "begin": "\\b(fun)\\b\\s+([\\p{L}_][\\p{L}_\\p{N}\\p{M}]*)\\s*",
360 "beginCaptures": {
361 "1": {
362 "name": "storage.type.function.cadence"
363 },
364 "2": {
365 "name": "entity.name.function.cadence"
366 }
367 },
368 "end": "(?<=\\})|$",
369 "name": "meta.definition.function.cadence",
370 "patterns": [
371 {
372 "include": "#comments"
373 },
374 {
375 "include": "#parameter-clause"
376 },
377 {
378 "include": "#function-result"
379 },
380 {
381 "begin": "(\\{)",
382 "beginCaptures": {
383 "1": {
384 "name": "punctuation.section.function.begin.cadence"
385 }
386 },
387 "end": "(\\})",
388 "endCaptures": {
389 "1": {
390 "name": "punctuation.section.function.end.cadence"
391 }
392 },
393 "name": "meta.definition.function.body.cadence",
394 "patterns": [
395 {
396 "include": "$self"
397 }
398 ]
399 }
400 ]
401 },
402 "initializer": {
403 "begin": "(?<!\\.)\\b(init)\\s*(?=\\(|<)",
404 "beginCaptures": {
405 "1": {
406 "name": "storage.type.function.cadence"
407 }
408 },
409 "end": "(?<=\\})|$",
410 "name": "meta.definition.function.initializer.cadence",
411 "patterns": [
412 {
413 "include": "#comments"
414 },
415 {
416 "include": "#parameter-clause"
417 },
418 {
419 "begin": "(\\{)",
420 "beginCaptures": {
421 "1": {
422 "name": "punctuation.section.function.begin.cadence"
423 }
424 },
425 "end": "(\\})",
426 "endCaptures": {
427 "1": {
428 "name": "punctuation.section.function.end.cadence"
429 }
430 },
431 "name": "meta.definition.function.body.cadence",
432 "patterns": [
433 {
434 "include": "$self"
435 }
436 ]
437 }
438 ]
439 },
440 "function-result": {
441 "begin": "(?<![/=\\-+!*%<>&|\\^~.])(:)(?![/=\\-+!*%<>&|\\^~.])\\s*",
442 "beginCaptures": {
443 "1": {
444 "name": "keyword.operator.function-result.cadence"
445 }
446 },
447 "end": "(?!\\G)(?=\\{|;)|$",
448 "name": "meta.function-result.cadence",
449 "patterns": [
450 {
451 "include": "#type"
452 }
453 ]
454 },
455 "expressions": {
456 "patterns": [
457 {
458 "include": "#comments"
459 },
460 {
461 "include": "#function-call-expression"
462 },
463 {
464 "include": "#literals"
465 },
466 {
467 "include": "#operators"
468 },
469 {
470 "include": "#language-variables"
471 }
472 ]
473 },
474 "language-variables": {
475 "patterns": [
476 {
477 "match": "\\b(self)\\b",
478 "name": "variable.language.cadence"
479 }
480 ]
481 },
482 "function-call-expression": {
483 "patterns": [
484 {
485 "begin": "(?!(?:set|init))([\\p{L}_][\\p{L}_\\p{N}\\p{M}]*)\\s*(\\()",
486 "beginCaptures": {
487 "1": {
488 "name": "support.function.any-method.cadence"
489 },
490 "4": {
491 "name": "punctuation.definition.arguments.begin.cadence"
492 }
493 },
494 "comment": "foo(args) -- a call whose callee is a highlightable name",
495 "end": "\\)",
496 "endCaptures": {
497 "0": {
498 "name": "punctuation.definition.arguments.end.cadence"
499 }
500 },
501 "name": "meta.function-call.cadence",
502 "patterns": [
503 {
504 "include": "#expression-element-list"
505 }
506 ]
507 }
508 ]
509 },
510 "expression-element-list": {
511 "patterns": [
512 {
513 "include": "#comments"
514 },
515 {
516 "begin": "([\\p{L}_][\\p{L}_\\p{N}\\p{M}]*)\\s*(:)",
517 "beginCaptures": {
518 "1": {
519 "name": "support.function.any-method.cadence"
520 },
521 "2": {
522 "name": "punctuation.separator.argument-label.cadence"
523 }
524 },
525 "comment": "an element with a label",
526 "end": "(?=[,)\\]])",
527 "patterns": [
528 {
529 "include": "#expressions"
530 }
531 ]
532 },
533 {
534 "begin": "(?![,)\\]])(?=\\S)",
535 "comment": "an element without a label (i.e. anything else)",
536 "end": "(?=[,)\\]])",
537 "patterns": [
538 {
539 "include": "#expressions"
540 }
541 ]
542 }
543 ]
544 },
545 "declarations": {
546 "patterns": [
547 {
548 "include": "#var-let-declaration"
549 },
550 {
551 "include": "#function"
552 },
553 {
554 "include": "#initializer"
555 }
556 ]
557 },
558 "var-let-declaration": {
559 "begin": "\\b(var|let)\\b\\s+([\\p{L}_][\\p{L}_\\p{N}\\p{M}]*)",
560 "beginCaptures": {
561 "1": {
562 "name": "storage.type.$1.cadence"
563 },
564 "2": {
565 "name": "entity.name.type.$1.cadence"
566 }
567 },
568 "end": "=|<-|<-!|$",
569 "patterns": [
570 {
571 "include": "#type"
572 }
573 ]
574 },
575 "type": {
576 "patterns": [
577 {
578 "include": "#comments"
579 },
580 {
581 "match": "([\\p{L}_][\\p{L}_\\p{N}\\p{M}]*)",
582 "name": "storage.type.cadence"
583 }
584 ]
585 },
586 "parameter-clause": {
587 "begin": "(\\()",
588 "beginCaptures": {
589 "1": {
590 "name": "punctuation.definition.parameters.begin.cadence"
591 }
592 },
593 "end": "(\\))",
594 "endCaptures": {
595 "1": {
596 "name": "punctuation.definition.parameters.end.cadence"
597 }
598 },
599 "name": "meta.parameter-clause.cadence",
600 "patterns": [
601 {
602 "include": "#parameter-list"
603 }
604 ]
605 },
606 "parameter-list": {
607 "patterns": [
608 {
609 "match": "([\\p{L}_][\\p{L}_\\p{N}\\p{M}]*)\\s+([\\p{L}_][\\p{L}_\\p{N}\\p{M}]*)(?=\\s*:)",
610 "captures": {
611 "1": {
612 "name": "entity.name.function.cadence"
613 },
614 "2": {
615 "name": "variable.parameter.function.cadence"
616 }
617 },
618 "comment": "External parameter labels are considered part of the function name"
619 },
620 {
621 "match": "(([\\p{L}_][\\p{L}_\\p{N}\\p{M}]*))(?=\\s*:)",
622 "captures": {
623 "1": {
624 "name": "variable.parameter.function.cadence"
625 },
626 "2": {
627 "name": "entity.name.function.cadence"
628 }
629 },
630 "comment": "If no external label is given, the name is both the external label and the internal variable name"
631 },
632 {
633 "begin": ":\\s*(?!\\s)",
634 "end": "(?=[,)])",
635 "patterns": [
636 {
637 "include": "#type"
638 },
639 {
640 "match": ":",
641 "name": "invalid.illegal.extra-colon-in-parameter-list.cadence"
642 }
643 ]
644 }
645 ]
646 },
647 "event": {
648 "begin": "\\b(event)\\b\\s+([\\p{L}_][\\p{L}_\\p{N}\\p{M}]*)\\s*",
649 "beginCaptures": {
650 "1": {
651 "name": "storage.type.event.cadence"
652 },
653 "2": {
654 "name": "entity.name.type.event.cadence"
655 }
656 },
657 "end": "(?<=\\))|$",
658 "name": "meta.definition.type.event.cadence",
659 "patterns": [
660 {
661 "include": "#comments"
662 },
663 {
664 "include": "#parameter-clause"
665 }
666 ]
667 },
668 "composite": {
669 "begin": "\\b((?:(?:struct|resource|contract)(?:\\s+interface)?)|transaction|enum)\\s+([\\p{L}_][\\p{L}_\\p{N}\\p{M}]*)",
670 "beginCaptures": {
671 "1": {
672 "name": "storage.type.$1.cadence"
673 },
674 "2": {
675 "name": "entity.name.type.$1.cadence"
676 }
677 },
678 "end": "(?<=\\})",
679 "name": "meta.definition.type.composite.cadence",
680 "patterns": [
681 {
682 "include": "#comments"
683 },
684 {
685 "include": "#conformance-clause"
686 },
687 {
688 "begin": "\\{",
689 "beginCaptures": {
690 "0": {
691 "name": "punctuation.definition.type.begin.cadence"
692 }
693 },
694 "end": "\\}",
695 "endCaptures": {
696 "0": {
697 "name": "punctuation.definition.type.end.cadence"
698 }
699 },
700 "name": "meta.definition.type.body.cadence",
701 "patterns": [
702 {
703 "include": "$self"
704 }
705 ]
706 }
707 ]
708 },
709 "conformance-clause": {
710 "begin": "(:)(?=\\s*\\{)|(:)\\s*",
711 "beginCaptures": {
712 "1": {
713 "name": "invalid.illegal.empty-conformance-clause.cadence"
714 },
715 "2": {
716 "name": "punctuation.separator.conformance-clause.cadence"
717 }
718 },
719 "end": "(?!\\G)$|(?=[={}])",
720 "name": "meta.conformance-clause.cadence",
721 "patterns": [
722 {
723 "begin": "\\G",
724 "end": "(?!\\G)$|(?=[={}])",
725 "patterns": [
726 {
727 "include": "#comments"
728 },
729 {
730 "include": "#type"
731 }
732 ]
733 }
734 ]
735 }
736 },
737 "name": "cadence"
738 }
739