View raw

1 { 2 "information_for_contributors": [ 3 "This file has been converted from https://github.com/redhat-developer/vscode-java/blob/master/language-support/java/java.tmLanguage.json", 4 "If you want to provide a fix or improvement, please create a pull request against the original repository.", 5 "Once accepted there, we are happy to receive an update request." 6 ], 7 "version": "https://github.com/redhat-developer/vscode-java/commit/f09b712f5d6d6339e765f58c8dfab3f78a378183", 8 "name": "Java", 9 "scopeName": "source.java", 10 "patterns": [ 11 { 12 "begin": "\\b(package)\\b\\s*", 13 "beginCaptures": { 14 "1": { 15 "name": "keyword.other.package.java" 16 } 17 }, 18 "end": "\\s*(;)", 19 "endCaptures": { 20 "1": { 21 "name": "punctuation.terminator.java" 22 } 23 }, 24 "name": "meta.package.java", 25 "contentName": "storage.modifier.package.java", 26 "patterns": [ 27 { 28 "include": "#comments" 29 }, 30 { 31 "match": "(?<=\\.)\\s*\\.|\\.(?=\\s*;)", 32 "name": "invalid.illegal.character_not_allowed_here.java" 33 }, 34 { 35 "match": "(?<!_)_(?=\\s*(\\.|;))|\\b\\d+|-+", 36 "name": "invalid.illegal.character_not_allowed_here.java" 37 }, 38 { 39 "match": "[A-Z]+", 40 "name": "invalid.deprecated.package_name_not_lowercase.java" 41 }, 42 { 43 "match": "(?x)\\b(?<!\\$)\n(abstract|assert|boolean|break|byte|case|catch|char|class|\nconst|continue|default|do|double|else|enum|extends|final|\nfinally|float|for|goto|if|implements|import|instanceof|int|\ninterface|long|native|new|non-sealed|package|permits|private|protected|public|\nreturn|sealed|short|static|strictfp|super|switch|syncronized|this|\nthrow|throws|transient|try|void|volatile|while|yield|\ntrue|false|null)\\b", 44 "name": "invalid.illegal.character_not_allowed_here.java" 45 }, 46 { 47 "match": "\\.", 48 "name": "punctuation.separator.java" 49 } 50 ] 51 }, 52 { 53 "begin": "\\b(import)\\b\\s*\\b(static)?\\b\\s", 54 "beginCaptures": { 55 "1": { 56 "name": "keyword.other.import.java" 57 }, 58 "2": { 59 "name": "storage.modifier.java" 60 } 61 }, 62 "end": "\\s*(;)", 63 "endCaptures": { 64 "1": { 65 "name": "punctuation.terminator.java" 66 } 67 }, 68 "name": "meta.import.java", 69 "contentName": "storage.modifier.import.java", 70 "patterns": [ 71 { 72 "include": "#comments" 73 }, 74 { 75 "match": "(?<=\\.)\\s*\\.|\\.(?=\\s*;)", 76 "name": "invalid.illegal.character_not_allowed_here.java" 77 }, 78 { 79 "match": "(?<!\\.)\\s*\\*", 80 "name": "invalid.illegal.character_not_allowed_here.java" 81 }, 82 { 83 "match": "(?<!_)_(?=\\s*(\\.|;))|\\b\\d+|-+", 84 "name": "invalid.illegal.character_not_allowed_here.java" 85 }, 86 { 87 "match": "(?x)\\b(?<!\\$)\n(abstract|assert|boolean|break|byte|case|catch|char|class|\nconst|continue|default|do|double|else|enum|extends|final|\nfinally|float|for|goto|if|implements|import|instanceof|int|\ninterface|long|native|new|non-sealed|package|permits|private|protected|public|\nreturn|sealed|short|static|strictfp|super|switch|syncronized|this|\nthrow|throws|transient|try|void|volatile|while|yield|\ntrue|false|null)\\b", 88 "name": "invalid.illegal.character_not_allowed_here.java" 89 }, 90 { 91 "match": "\\.", 92 "name": "punctuation.separator.java" 93 }, 94 { 95 "match": "\\*", 96 "name": "variable.language.wildcard.java" 97 } 98 ] 99 }, 100 { 101 "include": "#comments-javadoc" 102 }, 103 { 104 "include": "#code" 105 }, 106 { 107 "include": "#module" 108 } 109 ], 110 "repository": { 111 "all-types": { 112 "patterns": [ 113 { 114 "include": "#primitive-arrays" 115 }, 116 { 117 "include": "#primitive-types" 118 }, 119 { 120 "include": "#object-types" 121 } 122 ] 123 }, 124 "annotations": { 125 "patterns": [ 126 { 127 "begin": "((@)\\s*([^\\s(]+))(\\()", 128 "beginCaptures": { 129 "2": { 130 "name": "punctuation.definition.annotation.java" 131 }, 132 "3": { 133 "name": "storage.type.annotation.java" 134 }, 135 "4": { 136 "name": "punctuation.definition.annotation-arguments.begin.bracket.round.java" 137 } 138 }, 139 "end": "\\)", 140 "endCaptures": { 141 "0": { 142 "name": "punctuation.definition.annotation-arguments.end.bracket.round.java" 143 } 144 }, 145 "name": "meta.declaration.annotation.java", 146 "patterns": [ 147 { 148 "captures": { 149 "1": { 150 "name": "constant.other.key.java" 151 }, 152 "2": { 153 "name": "keyword.operator.assignment.java" 154 } 155 }, 156 "match": "(\\w*)\\s*(=)" 157 }, 158 { 159 "include": "#code" 160 } 161 ] 162 }, 163 { 164 "match": "(@)(interface)\\s+(\\w*)|((@)\\s*(\\w+))", 165 "name": "meta.declaration.annotation.java", 166 "captures": { 167 "1": { 168 "name": "punctuation.definition.annotation.java" 169 }, 170 "2": { 171 "name": "storage.modifier.java" 172 }, 173 "3": { 174 "name": "storage.type.annotation.java" 175 }, 176 "5": { 177 "name": "punctuation.definition.annotation.java" 178 }, 179 "6": { 180 "name": "storage.type.annotation.java" 181 } 182 } 183 } 184 ] 185 }, 186 "anonymous-block-and-instance-initializer": { 187 "begin": "{", 188 "beginCaptures": { 189 "0": { 190 "name": "punctuation.section.block.begin.bracket.curly.java" 191 } 192 }, 193 "end": "}", 194 "endCaptures": { 195 "0": { 196 "name": "punctuation.section.block.end.bracket.curly.java" 197 } 198 }, 199 "patterns": [ 200 { 201 "include": "#code" 202 } 203 ] 204 }, 205 "anonymous-classes-and-new": { 206 "begin": "\\bnew\\b", 207 "beginCaptures": { 208 "0": { 209 "name": "keyword.control.new.java" 210 } 211 }, 212 "end": "(?=;|\\)|\\]|\\.|,|\\?|:|}|\\+|\\-|\\*|\\/(?!\\/|\\*)|%|!|&|\\||\\^|=)", 213 "patterns": [ 214 { 215 "include": "#comments" 216 }, 217 { 218 "include": "#function-call" 219 }, 220 { 221 "include": "#all-types" 222 }, 223 { 224 "begin": "(?<=\\))", 225 "end": "(?=;|\\)|\\]|\\.|,|\\?|:|}|\\+|\\-|\\*|\\/(?!\\/|\\*)|%|!|&|\\||\\^|=)", 226 "patterns": [ 227 { 228 "include": "#comments" 229 }, 230 { 231 "begin": "{", 232 "beginCaptures": { 233 "0": { 234 "name": "punctuation.section.inner-class.begin.bracket.curly.java" 235 } 236 }, 237 "end": "}", 238 "endCaptures": { 239 "0": { 240 "name": "punctuation.section.inner-class.end.bracket.curly.java" 241 } 242 }, 243 "name": "meta.inner-class.java", 244 "patterns": [ 245 { 246 "include": "#class-body" 247 } 248 ] 249 } 250 ] 251 }, 252 { 253 "begin": "(?<=\\])", 254 "end": "(?=;|\\)|\\]|\\.|,|\\?|:|}|\\+|\\-|\\*|\\/(?!\\/|\\*)|%|!|&|\\||\\^|=)", 255 "patterns": [ 256 { 257 "include": "#comments" 258 }, 259 { 260 "begin": "{", 261 "beginCaptures": { 262 "0": { 263 "name": "punctuation.section.array-initializer.begin.bracket.curly.java" 264 } 265 }, 266 "end": "}", 267 "endCaptures": { 268 "0": { 269 "name": "punctuation.section.array-initializer.end.bracket.curly.java" 270 } 271 }, 272 "name": "meta.array-initializer.java", 273 "patterns": [ 274 { 275 "include": "#code" 276 } 277 ] 278 } 279 ] 280 }, 281 { 282 "include": "#parens" 283 } 284 ] 285 }, 286 "assertions": { 287 "patterns": [ 288 { 289 "begin": "\\b(assert)\\s", 290 "beginCaptures": { 291 "1": { 292 "name": "keyword.control.assert.java" 293 } 294 }, 295 "end": "$", 296 "name": "meta.declaration.assertion.java", 297 "patterns": [ 298 { 299 "match": ":", 300 "name": "keyword.operator.assert.expression-separator.java" 301 }, 302 { 303 "include": "#code" 304 } 305 ] 306 } 307 ] 308 }, 309 "class": { 310 "begin": "(?=\\w?[\\w\\s-]*\\b(?:class|(?<!@)interface|enum)\\s+[\\w$]+)", 311 "end": "}", 312 "endCaptures": { 313 "0": { 314 "name": "punctuation.section.class.end.bracket.curly.java" 315 } 316 }, 317 "name": "meta.class.java", 318 "patterns": [ 319 { 320 "include": "#storage-modifiers" 321 }, 322 { 323 "include": "#generics" 324 }, 325 { 326 "include": "#comments" 327 }, 328 { 329 "captures": { 330 "1": { 331 "name": "storage.modifier.java" 332 }, 333 "2": { 334 "name": "entity.name.type.class.java" 335 } 336 }, 337 "match": "(class|(?<!@)interface|enum)\\s+([\\w$]+)", 338 "name": "meta.class.identifier.java" 339 }, 340 { 341 "begin": "extends", 342 "beginCaptures": { 343 "0": { 344 "name": "storage.modifier.extends.java" 345 } 346 }, 347 "end": "(?={|implements|permits)", 348 "name": "meta.definition.class.inherited.classes.java", 349 "patterns": [ 350 { 351 "include": "#object-types-inherited" 352 }, 353 { 354 "include": "#comments" 355 } 356 ] 357 }, 358 { 359 "begin": "(implements)\\s", 360 "beginCaptures": { 361 "1": { 362 "name": "storage.modifier.implements.java" 363 } 364 }, 365 "end": "(?=\\s*extends|permits|\\{)", 366 "name": "meta.definition.class.implemented.interfaces.java", 367 "patterns": [ 368 { 369 "include": "#object-types-inherited" 370 }, 371 { 372 "include": "#comments" 373 } 374 ] 375 }, 376 { 377 "begin": "(permits)\\s", 378 "beginCaptures": { 379 "1": { 380 "name": "storage.modifier.permits.java" 381 } 382 }, 383 "end": "(?=\\s*extends|implements|\\{)", 384 "name": "meta.definition.class.permits.classes.java", 385 "patterns": [ 386 { 387 "include": "#object-types-inherited" 388 }, 389 { 390 "include": "#comments" 391 } 392 ] 393 }, 394 { 395 "begin": "{", 396 "beginCaptures": { 397 "0": { 398 "name": "punctuation.section.class.begin.bracket.curly.java" 399 } 400 }, 401 "end": "(?=})", 402 "contentName": "meta.class.body.java", 403 "patterns": [ 404 { 405 "include": "#class-body" 406 } 407 ] 408 } 409 ] 410 }, 411 "class-body": { 412 "patterns": [ 413 { 414 "include": "#comments-javadoc" 415 }, 416 { 417 "include": "#comments" 418 }, 419 { 420 "include": "#enums" 421 }, 422 { 423 "include": "#class" 424 }, 425 { 426 "include": "#generics" 427 }, 428 { 429 "include": "#static-initializer" 430 }, 431 { 432 "include": "#class-fields-and-methods" 433 }, 434 { 435 "include": "#annotations" 436 }, 437 { 438 "include": "#storage-modifiers" 439 }, 440 { 441 "include": "#member-variables" 442 }, 443 { 444 "include": "#code" 445 } 446 ] 447 }, 448 "class-fields-and-methods": { 449 "patterns": [ 450 { 451 "begin": "(?=\\=)", 452 "end": "(?=;)", 453 "patterns": [ 454 { 455 "include": "#code" 456 } 457 ] 458 }, 459 { 460 "include": "#methods" 461 } 462 ] 463 }, 464 "code": { 465 "patterns": [ 466 { 467 "include": "#annotations" 468 }, 469 { 470 "include": "#comments" 471 }, 472 { 473 "include": "#enums" 474 }, 475 { 476 "include": "#class" 477 }, 478 { 479 "include": "#record" 480 }, 481 { 482 "include": "#anonymous-block-and-instance-initializer" 483 }, 484 { 485 "include": "#try-catch-finally" 486 }, 487 { 488 "include": "#assertions" 489 }, 490 { 491 "include": "#parens" 492 }, 493 { 494 "include": "#constants-and-special-vars" 495 }, 496 { 497 "include": "#numbers" 498 }, 499 { 500 "include": "#anonymous-classes-and-new" 501 }, 502 { 503 "include": "#lambda-expression" 504 }, 505 { 506 "include": "#keywords" 507 }, 508 { 509 "include": "#storage-modifiers" 510 }, 511 { 512 "include": "#method-call" 513 }, 514 { 515 "include": "#function-call" 516 }, 517 { 518 "include": "#variables" 519 }, 520 { 521 "include": "#variables-local" 522 }, 523 { 524 "include": "#objects" 525 }, 526 { 527 "include": "#properties" 528 }, 529 { 530 "include": "#strings" 531 }, 532 { 533 "include": "#all-types" 534 }, 535 { 536 "match": ",", 537 "name": "punctuation.separator.delimiter.java" 538 }, 539 { 540 "match": "\\.", 541 "name": "punctuation.separator.period.java" 542 }, 543 { 544 "match": ";", 545 "name": "punctuation.terminator.java" 546 } 547 ] 548 }, 549 "comments": { 550 "patterns": [ 551 { 552 "captures": { 553 "0": { 554 "name": "punctuation.definition.comment.java" 555 } 556 }, 557 "match": "/\\*\\*/", 558 "name": "comment.block.empty.java" 559 }, 560 { 561 "include": "#comments-inline" 562 } 563 ] 564 }, 565 "comments-inline": { 566 "patterns": [ 567 { 568 "begin": "/\\*", 569 "captures": { 570 "0": { 571 "name": "punctuation.definition.comment.java" 572 } 573 }, 574 "end": "\\*/", 575 "name": "comment.block.java" 576 }, 577 { 578 "begin": "(^[ \\t]+)?(?=//)", 579 "beginCaptures": { 580 "1": { 581 "name": "punctuation.whitespace.comment.leading.java" 582 } 583 }, 584 "end": "(?!\\G)", 585 "patterns": [ 586 { 587 "begin": "//", 588 "beginCaptures": { 589 "0": { 590 "name": "punctuation.definition.comment.java" 591 } 592 }, 593 "end": "\\n", 594 "name": "comment.line.double-slash.java" 595 } 596 ] 597 } 598 ] 599 }, 600 "comments-javadoc": { 601 "patterns": [ 602 { 603 "begin": "^\\s*(/\\*\\*)(?!/)", 604 "beginCaptures": { 605 "1": { 606 "name": "punctuation.definition.comment.java" 607 } 608 }, 609 "end": "\\*/", 610 "endCaptures": { 611 "0": { 612 "name": "punctuation.definition.comment.java" 613 } 614 }, 615 "name": "comment.block.javadoc.java", 616 "patterns": [ 617 { 618 "match": "@(author|deprecated|return|see|serial|since|version)\\b", 619 "name": "keyword.other.documentation.javadoc.java" 620 }, 621 { 622 "match": "(@param)\\s+(\\S+)", 623 "captures": { 624 "1": { 625 "name": "keyword.other.documentation.javadoc.java" 626 }, 627 "2": { 628 "name": "variable.parameter.java" 629 } 630 } 631 }, 632 { 633 "match": "(@(?:exception|throws))\\s+(\\S+)", 634 "captures": { 635 "1": { 636 "name": "keyword.other.documentation.javadoc.java" 637 }, 638 "2": { 639 "name": "entity.name.type.class.java" 640 } 641 } 642 }, 643 { 644 "match": "{(@link)\\s+(\\S+)?#([\\w$]+\\s*\\([^\\(\\)]*\\)).*?}", 645 "captures": { 646 "1": { 647 "name": "keyword.other.documentation.javadoc.java" 648 }, 649 "2": { 650 "name": "entity.name.type.class.java" 651 }, 652 "3": { 653 "name": "variable.parameter.java" 654 } 655 } 656 } 657 ] 658 } 659 ] 660 }, 661 "constants-and-special-vars": { 662 "patterns": [ 663 { 664 "match": "\\b(true|false|null)\\b", 665 "name": "constant.language.java" 666 }, 667 { 668 "match": "\\bthis\\b", 669 "name": "variable.language.this.java" 670 }, 671 { 672 "match": "\\bsuper\\b", 673 "name": "variable.language.java" 674 } 675 ] 676 }, 677 "enums": { 678 "begin": "^\\s*([\\w\\s]*)(enum)\\s+(\\w+)", 679 "beginCaptures": { 680 "1": { 681 "patterns": [ 682 { 683 "include": "#storage-modifiers" 684 } 685 ] 686 }, 687 "2": { 688 "name": "storage.modifier.java" 689 }, 690 "3": { 691 "name": "entity.name.type.enum.java" 692 } 693 }, 694 "end": "}", 695 "endCaptures": { 696 "0": { 697 "name": "punctuation.section.enum.end.bracket.curly.java" 698 } 699 }, 700 "name": "meta.enum.java", 701 "patterns": [ 702 { 703 "begin": "\\b(extends)\\b", 704 "beginCaptures": { 705 "1": { 706 "name": "storage.modifier.extends.java" 707 } 708 }, 709 "end": "(?={|\\bimplements\\b)", 710 "name": "meta.definition.class.inherited.classes.java", 711 "patterns": [ 712 { 713 "include": "#object-types-inherited" 714 }, 715 { 716 "include": "#comments" 717 } 718 ] 719 }, 720 { 721 "begin": "\\b(implements)\\b", 722 "beginCaptures": { 723 "1": { 724 "name": "storage.modifier.implements.java" 725 } 726 }, 727 "end": "(?={|\\bextends\\b)", 728 "name": "meta.definition.class.implemented.interfaces.java", 729 "patterns": [ 730 { 731 "include": "#object-types-inherited" 732 }, 733 { 734 "include": "#comments" 735 } 736 ] 737 }, 738 { 739 "begin": "{", 740 "beginCaptures": { 741 "0": { 742 "name": "punctuation.section.enum.begin.bracket.curly.java" 743 } 744 }, 745 "end": "(?=})", 746 "patterns": [ 747 { 748 "begin": "(?<={)", 749 "end": "(?=;|})", 750 "patterns": [ 751 { 752 "include": "#comments-javadoc" 753 }, 754 { 755 "include": "#comments" 756 }, 757 { 758 "begin": "\\b(\\w+)\\b", 759 "beginCaptures": { 760 "1": { 761 "name": "constant.other.enum.java" 762 } 763 }, 764 "end": "(,)|(?=;|})", 765 "endCaptures": { 766 "1": { 767 "name": "punctuation.separator.delimiter.java" 768 } 769 }, 770 "patterns": [ 771 { 772 "include": "#comments-javadoc" 773 }, 774 { 775 "include": "#comments" 776 }, 777 { 778 "begin": "\\(", 779 "beginCaptures": { 780 "0": { 781 "name": "punctuation.bracket.round.java" 782 } 783 }, 784 "end": "\\)", 785 "endCaptures": { 786 "0": { 787 "name": "punctuation.bracket.round.java" 788 } 789 }, 790 "patterns": [ 791 { 792 "include": "#code" 793 } 794 ] 795 }, 796 { 797 "begin": "{", 798 "beginCaptures": { 799 "0": { 800 "name": "punctuation.bracket.curly.java" 801 } 802 }, 803 "end": "}", 804 "endCaptures": { 805 "0": { 806 "name": "punctuation.bracket.curly.java" 807 } 808 }, 809 "patterns": [ 810 { 811 "include": "#class-body" 812 } 813 ] 814 } 815 ] 816 } 817 ] 818 }, 819 { 820 "include": "#class-body" 821 } 822 ] 823 } 824 ] 825 }, 826 "function-call": { 827 "begin": "([A-Za-z_$][\\w$]*)\\s*(\\()", 828 "beginCaptures": { 829 "1": { 830 "name": "entity.name.function.java" 831 }, 832 "2": { 833 "name": "punctuation.definition.parameters.begin.bracket.round.java" 834 } 835 }, 836 "end": "\\)", 837 "endCaptures": { 838 "0": { 839 "name": "punctuation.definition.parameters.end.bracket.round.java" 840 } 841 }, 842 "name": "meta.function-call.java", 843 "patterns": [ 844 { 845 "include": "#code" 846 } 847 ] 848 }, 849 "generics": { 850 "begin": "<", 851 "beginCaptures": { 852 "0": { 853 "name": "punctuation.bracket.angle.java" 854 } 855 }, 856 "end": ">", 857 "endCaptures": { 858 "0": { 859 "name": "punctuation.bracket.angle.java" 860 } 861 }, 862 "patterns": [ 863 { 864 "match": "\\b(extends|super)\\b", 865 "name": "storage.modifier.$1.java" 866 }, 867 { 868 "match": "(?<!\\.)([a-zA-Z$_][a-zA-Z0-9$_]*)(?=\\s*<)", 869 "captures": { 870 "1": { 871 "name": "storage.type.java" 872 } 873 } 874 }, 875 { 876 "include": "#primitive-arrays" 877 }, 878 { 879 "match": "[a-zA-Z$_][a-zA-Z0-9$_]*", 880 "name": "storage.type.generic.java" 881 }, 882 { 883 "match": "\\?", 884 "name": "storage.type.generic.wildcard.java" 885 }, 886 { 887 "match": "&", 888 "name": "punctuation.separator.types.java" 889 }, 890 { 891 "match": ",", 892 "name": "punctuation.separator.delimiter.java" 893 }, 894 { 895 "match": "\\.", 896 "name": "punctuation.separator.period.java" 897 }, 898 { 899 "include": "#parens" 900 }, 901 { 902 "include": "#generics" 903 }, 904 { 905 "include": "#comments" 906 } 907 ] 908 }, 909 "keywords": { 910 "patterns": [ 911 { 912 "match": "\\bthrow\\b", 913 "name": "keyword.control.throw.java" 914 }, 915 { 916 "match": "\\?|:", 917 "name": "keyword.control.ternary.java" 918 }, 919 { 920 "match": "\\b(return|yield|break|case|continue|default|do|while|for|switch|if|else)\\b", 921 "name": "keyword.control.java" 922 }, 923 { 924 "match": "\\b(instanceof)\\b", 925 "name": "keyword.operator.instanceof.java" 926 }, 927 { 928 "match": "(<<|>>>?|~|\\^)", 929 "name": "keyword.operator.bitwise.java" 930 }, 931 { 932 "match": "((&|\\^|\\||<<|>>>?)=)", 933 "name": "keyword.operator.assignment.bitwise.java" 934 }, 935 { 936 "match": "(===?|!=|<=|>=|<>|<|>)", 937 "name": "keyword.operator.comparison.java" 938 }, 939 { 940 "match": "([+*/%-]=)", 941 "name": "keyword.operator.assignment.arithmetic.java" 942 }, 943 { 944 "match": "(=)", 945 "name": "keyword.operator.assignment.java" 946 }, 947 { 948 "match": "(\\-\\-|\\+\\+)", 949 "name": "keyword.operator.increment-decrement.java" 950 }, 951 { 952 "match": "(\\-|\\+|\\*|\\/|%)", 953 "name": "keyword.operator.arithmetic.java" 954 }, 955 { 956 "match": "(!|&&|\\|\\|)", 957 "name": "keyword.operator.logical.java" 958 }, 959 { 960 "match": "(\\||&)", 961 "name": "keyword.operator.bitwise.java" 962 }, 963 { 964 "match": "\\b(const|goto)\\b", 965 "name": "keyword.reserved.java" 966 } 967 ] 968 }, 969 "lambda-expression": { 970 "patterns": [ 971 { 972 "match": "->", 973 "name": "storage.type.function.arrow.java" 974 } 975 ] 976 }, 977 "member-variables": { 978 "begin": "(?=private|protected|public|native|synchronized|abstract|threadsafe|transient|static|final)", 979 "end": "(?=\\=|;)", 980 "patterns": [ 981 { 982 "include": "#storage-modifiers" 983 }, 984 { 985 "include": "#variables" 986 }, 987 { 988 "include": "#primitive-arrays" 989 }, 990 { 991 "include": "#object-types" 992 } 993 ] 994 }, 995 "method-call": { 996 "begin": "(\\.)\\s*([A-Za-z_$][\\w$]*)\\s*(\\()", 997 "beginCaptures": { 998 "1": { 999 "name": "punctuation.separator.period.java" 1000 }, 1001 "2": { 1002 "name": "entity.name.function.java" 1003 }, 1004 "3": { 1005 "name": "punctuation.definition.parameters.begin.bracket.round.java" 1006 } 1007 }, 1008 "end": "\\)", 1009 "endCaptures": { 1010 "0": { 1011 "name": "punctuation.definition.parameters.end.bracket.round.java" 1012 } 1013 }, 1014 "name": "meta.method-call.java", 1015 "patterns": [ 1016 { 1017 "include": "#code" 1018 } 1019 ] 1020 }, 1021 "methods": { 1022 "begin": "(?!new)(?=[\\w<].*\\s+)(?=([^=/]|/(?!/))+\\()", 1023 "end": "(})|(?=;)", 1024 "endCaptures": { 1025 "1": { 1026 "name": "punctuation.section.method.end.bracket.curly.java" 1027 } 1028 }, 1029 "name": "meta.method.java", 1030 "patterns": [ 1031 { 1032 "include": "#storage-modifiers" 1033 }, 1034 { 1035 "begin": "(\\w+)\\s*(\\()", 1036 "beginCaptures": { 1037 "1": { 1038 "name": "entity.name.function.java" 1039 }, 1040 "2": { 1041 "name": "punctuation.definition.parameters.begin.bracket.round.java" 1042 } 1043 }, 1044 "end": "\\)", 1045 "endCaptures": { 1046 "0": { 1047 "name": "punctuation.definition.parameters.end.bracket.round.java" 1048 } 1049 }, 1050 "name": "meta.method.identifier.java", 1051 "patterns": [ 1052 { 1053 "include": "#parameters" 1054 }, 1055 { 1056 "include": "#parens" 1057 }, 1058 { 1059 "include": "#comments" 1060 } 1061 ] 1062 }, 1063 { 1064 "include": "#generics" 1065 }, 1066 { 1067 "begin": "(?=\\w.*\\s+\\w+\\s*\\()", 1068 "end": "(?=\\s+\\w+\\s*\\()", 1069 "name": "meta.method.return-type.java", 1070 "patterns": [ 1071 { 1072 "include": "#all-types" 1073 }, 1074 { 1075 "include": "#parens" 1076 }, 1077 { 1078 "include": "#comments" 1079 } 1080 ] 1081 }, 1082 { 1083 "include": "#throws" 1084 }, 1085 { 1086 "begin": "{", 1087 "beginCaptures": { 1088 "0": { 1089 "name": "punctuation.section.method.begin.bracket.curly.java" 1090 } 1091 }, 1092 "end": "(?=})", 1093 "contentName": "meta.method.body.java", 1094 "patterns": [ 1095 { 1096 "include": "#code" 1097 } 1098 ] 1099 }, 1100 { 1101 "include": "#comments" 1102 } 1103 ] 1104 }, 1105 "module": { 1106 "begin": "((open)\\s)?(module)\\s+(\\w+)", 1107 "end": "}", 1108 "beginCaptures": { 1109 "1": { 1110 "name": "storage.modifier.java" 1111 }, 1112 "3": { 1113 "name": "storage.modifier.java" 1114 }, 1115 "4": { 1116 "name": "entity.name.type.module.java" 1117 } 1118 }, 1119 "endCaptures": { 1120 "0": { 1121 "name": "punctuation.section.module.end.bracket.curly.java" 1122 } 1123 }, 1124 "name": "meta.module.java", 1125 "patterns": [ 1126 { 1127 "begin": "{", 1128 "beginCaptures": { 1129 "0": { 1130 "name": "punctuation.section.module.begin.bracket.curly.java" 1131 } 1132 }, 1133 "end": "(?=})", 1134 "contentName": "meta.module.body.java", 1135 "patterns": [ 1136 { 1137 "include": "#comments" 1138 }, 1139 { 1140 "include": "#comments-javadoc" 1141 }, 1142 { 1143 "match": "\\b(requires|transitive|exports|opens|to|uses|provides|with)\\b", 1144 "name": "keyword.module.java" 1145 } 1146 ] 1147 } 1148 ] 1149 }, 1150 "numbers": { 1151 "patterns": [ 1152 { 1153 "match": "(?x)\n\\b(?<!\\$)\n0(x|X)\n(\n (?<!\\.)[0-9a-fA-F]([0-9a-fA-F_]*[0-9a-fA-F])?[Ll]?(?!\\.)\n |\n (\n [0-9a-fA-F]([0-9a-fA-F_]*[0-9a-fA-F])?\\.?\n |\n ([0-9a-fA-F]([0-9a-fA-F_]*[0-9a-fA-F])?)?\\.[0-9a-fA-F]([0-9a-fA-F_]*[0-9a-fA-F])?\n )\n [Pp][+-]?[0-9]([0-9_]*[0-9])?[FfDd]?\n)\n\\b(?!\\$)", 1154 "name": "constant.numeric.hex.java" 1155 }, 1156 { 1157 "match": "\\b(?<!\\$)0(b|B)[01]([01_]*[01])?[Ll]?\\b(?!\\$)", 1158 "name": "constant.numeric.binary.java" 1159 }, 1160 { 1161 "match": "\\b(?<!\\$)0[0-7]([0-7_]*[0-7])?[Ll]?\\b(?!\\$)", 1162 "name": "constant.numeric.octal.java" 1163 }, 1164 { 1165 "match": "(?x)\n(?<!\\$)\n(\n \\b[0-9]([0-9_]*[0-9])?\\.\\B(?!\\.)\n |\n \\b[0-9]([0-9_]*[0-9])?\\.([Ee][+-]?[0-9]([0-9_]*[0-9])?)[FfDd]?\\b\n |\n \\b[0-9]([0-9_]*[0-9])?\\.([Ee][+-]?[0-9]([0-9_]*[0-9])?)?[FfDd]\\b\n |\n \\b[0-9]([0-9_]*[0-9])?\\.([0-9]([0-9_]*[0-9])?)([Ee][+-]?[0-9]([0-9_]*[0-9])?)?[FfDd]?\\b\n |\n (?<!\\.)\\B\\.[0-9]([0-9_]*[0-9])?([Ee][+-]?[0-9]([0-9_]*[0-9])?)?[FfDd]?\\b\n |\n \\b[0-9]([0-9_]*[0-9])?([Ee][+-]?[0-9]([0-9_]*[0-9])?)[FfDd]?\\b\n |\n \\b[0-9]([0-9_]*[0-9])?([Ee][+-]?[0-9]([0-9_]*[0-9])?)?[FfDd]\\b\n |\n \\b(0|[1-9]([0-9_]*[0-9])?)(?!\\.)[Ll]?\\b\n)\n(?!\\$)", 1166 "name": "constant.numeric.decimal.java" 1167 } 1168 ] 1169 }, 1170 "object-types": { 1171 "patterns": [ 1172 { 1173 "include": "#generics" 1174 }, 1175 { 1176 "begin": "\\b((?:[A-Za-z_]\\w*\\s*\\.\\s*)*)([A-Z_]\\w*)\\s*(?=\\[)", 1177 "beginCaptures": { 1178 "1": { 1179 "patterns": [ 1180 { 1181 "match": "[A-Za-z_]\\w*", 1182 "name": "storage.type.java" 1183 }, 1184 { 1185 "match": "\\.", 1186 "name": "punctuation.separator.period.java" 1187 } 1188 ] 1189 }, 1190 "2": { 1191 "name": "storage.type.object.array.java" 1192 } 1193 }, 1194 "end": "(?!\\s*\\[)", 1195 "patterns": [ 1196 { 1197 "include": "#comments" 1198 }, 1199 { 1200 "include": "#parens" 1201 } 1202 ] 1203 }, 1204 { 1205 "match": "\\b((?:[A-Za-z_]\\w*\\s*\\.\\s*)*[A-Z_]\\w*)\\s*(?=<)", 1206 "captures": { 1207 "1": { 1208 "patterns": [ 1209 { 1210 "match": "[A-Za-z_]\\w*", 1211 "name": "storage.type.java" 1212 }, 1213 { 1214 "match": "\\.", 1215 "name": "punctuation.separator.period.java" 1216 } 1217 ] 1218 } 1219 } 1220 }, 1221 { 1222 "match": "\\b((?:[A-Za-z_]\\w*\\s*\\.\\s*)*[A-Z_]\\w*)\\b((?=\\s*[A-Za-z$_\\n])|(?=\\s*\\.\\.\\.))", 1223 "captures": { 1224 "1": { 1225 "patterns": [ 1226 { 1227 "match": "[A-Za-z_]\\w*", 1228 "name": "storage.type.java" 1229 }, 1230 { 1231 "match": "\\.", 1232 "name": "punctuation.separator.period.java" 1233 } 1234 ] 1235 } 1236 } 1237 } 1238 ] 1239 }, 1240 "object-types-inherited": { 1241 "patterns": [ 1242 { 1243 "include": "#generics" 1244 }, 1245 { 1246 "match": "\\b(?:[A-Z]\\w*\\s*(\\.)\\s*)*[A-Z]\\w*\\b", 1247 "name": "entity.other.inherited-class.java", 1248 "captures": { 1249 "1": { 1250 "name": "punctuation.separator.period.java" 1251 } 1252 } 1253 }, 1254 { 1255 "match": ",", 1256 "name": "punctuation.separator.delimiter.java" 1257 } 1258 ] 1259 }, 1260 "objects": { 1261 "match": "(?<![\\w$])[a-zA-Z_$][\\w$]*(?=\\s*\\.\\s*[\\w$]+)", 1262 "name": "variable.other.object.java" 1263 }, 1264 "parameters": { 1265 "patterns": [ 1266 { 1267 "match": "\\bfinal\\b", 1268 "name": "storage.modifier.java" 1269 }, 1270 { 1271 "include": "#annotations" 1272 }, 1273 { 1274 "include": "#all-types" 1275 }, 1276 { 1277 "include": "#strings" 1278 }, 1279 { 1280 "match": "\\w+", 1281 "name": "variable.parameter.java" 1282 }, 1283 { 1284 "match": ",", 1285 "name": "punctuation.separator.delimiter.java" 1286 }, 1287 { 1288 "match": "\\.\\.\\.", 1289 "name": "punctuation.definition.parameters.varargs.java" 1290 } 1291 ] 1292 }, 1293 "parens": { 1294 "patterns": [ 1295 { 1296 "begin": "\\(", 1297 "beginCaptures": { 1298 "0": { 1299 "name": "punctuation.bracket.round.java" 1300 } 1301 }, 1302 "end": "\\)", 1303 "endCaptures": { 1304 "0": { 1305 "name": "punctuation.bracket.round.java" 1306 } 1307 }, 1308 "patterns": [ 1309 { 1310 "include": "#code" 1311 } 1312 ] 1313 }, 1314 { 1315 "begin": "\\[", 1316 "beginCaptures": { 1317 "0": { 1318 "name": "punctuation.bracket.square.java" 1319 } 1320 }, 1321 "end": "\\]", 1322 "endCaptures": { 1323 "0": { 1324 "name": "punctuation.bracket.square.java" 1325 } 1326 }, 1327 "patterns": [ 1328 { 1329 "include": "#code" 1330 } 1331 ] 1332 }, 1333 { 1334 "begin": "{", 1335 "beginCaptures": { 1336 "0": { 1337 "name": "punctuation.bracket.curly.java" 1338 } 1339 }, 1340 "end": "}", 1341 "endCaptures": { 1342 "0": { 1343 "name": "punctuation.bracket.curly.java" 1344 } 1345 }, 1346 "patterns": [ 1347 { 1348 "include": "#code" 1349 } 1350 ] 1351 } 1352 ] 1353 }, 1354 "primitive-arrays": { 1355 "patterns": [ 1356 { 1357 "begin": "\\b(void|boolean|byte|char|short|int|float|long|double)\\b\\s*(?=\\[)", 1358 "beginCaptures": { 1359 "1": { 1360 "name": "storage.type.primitive.array.java" 1361 } 1362 }, 1363 "end": "(?!\\s*\\[)", 1364 "patterns": [ 1365 { 1366 "include": "#comments" 1367 }, 1368 { 1369 "include": "#parens" 1370 } 1371 ] 1372 } 1373 ] 1374 }, 1375 "primitive-types": { 1376 "match": "\\b(void|boolean|byte|char|short|int|float|long|double)\\b", 1377 "name": "storage.type.primitive.java" 1378 }, 1379 "properties": { 1380 "patterns": [ 1381 { 1382 "match": "(\\.)\\s*(new)", 1383 "captures": { 1384 "1": { 1385 "name": "punctuation.separator.period.java" 1386 }, 1387 "2": { 1388 "name": "keyword.control.new.java" 1389 } 1390 } 1391 }, 1392 { 1393 "match": "(\\.)\\s*([a-zA-Z_$][\\w$]*)(?=\\s*\\.\\s*[a-zA-Z_$][\\w$]*)", 1394 "captures": { 1395 "1": { 1396 "name": "punctuation.separator.period.java" 1397 }, 1398 "2": { 1399 "name": "variable.other.object.property.java" 1400 } 1401 } 1402 }, 1403 { 1404 "match": "(\\.)\\s*([a-zA-Z_$][\\w$]*)", 1405 "captures": { 1406 "1": { 1407 "name": "punctuation.separator.period.java" 1408 }, 1409 "2": { 1410 "name": "variable.other.object.property.java" 1411 } 1412 } 1413 }, 1414 { 1415 "match": "(\\.)\\s*([0-9][\\w$]*)", 1416 "captures": { 1417 "1": { 1418 "name": "punctuation.separator.period.java" 1419 }, 1420 "2": { 1421 "name": "invalid.illegal.identifier.java" 1422 } 1423 } 1424 } 1425 ] 1426 }, 1427 "record": { 1428 "begin": "(?=\\w?[\\w\\s]*\\b(?:record)\\s+[\\w$]+)", 1429 "end": "}", 1430 "endCaptures": { 1431 "0": { 1432 "name": "punctuation.section.class.end.bracket.curly.java" 1433 } 1434 }, 1435 "name": "meta.record.java", 1436 "patterns": [ 1437 { 1438 "include": "#storage-modifiers" 1439 }, 1440 { 1441 "include": "#generics" 1442 }, 1443 { 1444 "include": "#comments" 1445 }, 1446 { 1447 "begin": "(record)\\s+([\\w$]+)(<[\\w$]+>)?(\\()", 1448 "beginCaptures": { 1449 "1": { 1450 "name": "storage.modifier.java" 1451 }, 1452 "2": { 1453 "name": "entity.name.type.record.java" 1454 }, 1455 "3": { 1456 "patterns": [ 1457 { 1458 "include": "#generics" 1459 } 1460 ] 1461 }, 1462 "4": { 1463 "name": "punctuation.definition.parameters.begin.bracket.round.java" 1464 } 1465 }, 1466 "end": "\\)", 1467 "endCaptures": { 1468 "0": { 1469 "name": "punctuation.definition.parameters.end.bracket.round.java" 1470 } 1471 }, 1472 "name": "meta.record.identifier.java", 1473 "patterns": [ 1474 { 1475 "include": "#code" 1476 } 1477 ] 1478 }, 1479 { 1480 "begin": "(implements)\\s", 1481 "beginCaptures": { 1482 "1": { 1483 "name": "storage.modifier.implements.java" 1484 } 1485 }, 1486 "end": "(?=\\s*\\{)", 1487 "name": "meta.definition.class.implemented.interfaces.java", 1488 "patterns": [ 1489 { 1490 "include": "#object-types-inherited" 1491 }, 1492 { 1493 "include": "#comments" 1494 } 1495 ] 1496 }, 1497 { 1498 "include": "#record-body" 1499 } 1500 ] 1501 }, 1502 "record-body": { 1503 "begin": "{", 1504 "beginCaptures": { 1505 "0": { 1506 "name": "punctuation.section.class.begin.bracket.curly.java" 1507 } 1508 }, 1509 "end": "(?=})", 1510 "name": "meta.record.body.java", 1511 "patterns": [ 1512 { 1513 "include": "#record-constructor" 1514 }, 1515 { 1516 "include": "#class-body" 1517 } 1518 ] 1519 }, 1520 "record-constructor": { 1521 "begin": "(?!new)(?=[\\w<].*\\s+)(?=([^\\(=/]|/(?!/))+(?={))", 1522 "end": "(})|(?=;)", 1523 "endCaptures": { 1524 "1": { 1525 "name": "punctuation.section.method.end.bracket.curly.java" 1526 } 1527 }, 1528 "name": "meta.method.java", 1529 "patterns": [ 1530 { 1531 "include": "#storage-modifiers" 1532 }, 1533 { 1534 "begin": "(\\w+)", 1535 "beginCaptures": { 1536 "1": { 1537 "name": "entity.name.function.java" 1538 } 1539 }, 1540 "end": "(?=\\s*{)", 1541 "name": "meta.method.identifier.java", 1542 "patterns": [ 1543 { 1544 "include": "#comments" 1545 } 1546 ] 1547 }, 1548 { 1549 "include": "#comments" 1550 }, 1551 { 1552 "begin": "{", 1553 "beginCaptures": { 1554 "0": { 1555 "name": "punctuation.section.method.begin.bracket.curly.java" 1556 } 1557 }, 1558 "end": "(?=})", 1559 "contentName": "meta.method.body.java", 1560 "patterns": [ 1561 { 1562 "include": "#code" 1563 } 1564 ] 1565 } 1566 ] 1567 }, 1568 "static-initializer": { 1569 "patterns": [ 1570 { 1571 "include": "#anonymous-block-and-instance-initializer" 1572 }, 1573 { 1574 "match": "static", 1575 "name": "storage.modifier.java" 1576 } 1577 ] 1578 }, 1579 "storage-modifiers": { 1580 "match": "\\b(public|private|protected|static|final|native|synchronized|abstract|threadsafe|transient|volatile|default|strictfp|sealed|non-sealed)\\b", 1581 "name": "storage.modifier.java" 1582 }, 1583 "strings": { 1584 "patterns": [ 1585 { 1586 "begin": "\"\"\"", 1587 "beginCaptures": { 1588 "0": { 1589 "name": "punctuation.definition.string.begin.java" 1590 } 1591 }, 1592 "end": "\"\"\"", 1593 "endCaptures": { 1594 "0": { 1595 "name": "punctuation.definition.string.end.java" 1596 } 1597 }, 1598 "name": "string.quoted.triple.java", 1599 "patterns": [ 1600 { 1601 "match": "(\\\\\"\"\")(?!\")|(\\\\.)", 1602 "name": "constant.character.escape.java" 1603 } 1604 ] 1605 }, 1606 { 1607 "begin": "\"", 1608 "beginCaptures": { 1609 "0": { 1610 "name": "punctuation.definition.string.begin.java" 1611 } 1612 }, 1613 "end": "\"", 1614 "endCaptures": { 1615 "0": { 1616 "name": "punctuation.definition.string.end.java" 1617 } 1618 }, 1619 "name": "string.quoted.double.java", 1620 "patterns": [ 1621 { 1622 "match": "\\\\.", 1623 "name": "constant.character.escape.java" 1624 } 1625 ] 1626 }, 1627 { 1628 "begin": "'", 1629 "beginCaptures": { 1630 "0": { 1631 "name": "punctuation.definition.string.begin.java" 1632 } 1633 }, 1634 "end": "'", 1635 "endCaptures": { 1636 "0": { 1637 "name": "punctuation.definition.string.end.java" 1638 } 1639 }, 1640 "name": "string.quoted.single.java", 1641 "patterns": [ 1642 { 1643 "match": "\\\\.", 1644 "name": "constant.character.escape.java" 1645 } 1646 ] 1647 } 1648 ] 1649 }, 1650 "throws": { 1651 "begin": "throws", 1652 "beginCaptures": { 1653 "0": { 1654 "name": "storage.modifier.java" 1655 } 1656 }, 1657 "end": "(?={|;)", 1658 "name": "meta.throwables.java", 1659 "patterns": [ 1660 { 1661 "match": ",", 1662 "name": "punctuation.separator.delimiter.java" 1663 }, 1664 { 1665 "match": "[a-zA-Z$_][\\.a-zA-Z0-9$_]*", 1666 "name": "storage.type.java" 1667 }, 1668 { 1669 "include": "#comments" 1670 } 1671 ] 1672 }, 1673 "try-catch-finally": { 1674 "patterns": [ 1675 { 1676 "begin": "\\btry\\b", 1677 "beginCaptures": { 1678 "0": { 1679 "name": "keyword.control.try.java" 1680 } 1681 }, 1682 "end": "}", 1683 "endCaptures": { 1684 "0": { 1685 "name": "punctuation.section.try.end.bracket.curly.java" 1686 } 1687 }, 1688 "name": "meta.try.java", 1689 "patterns": [ 1690 { 1691 "begin": "\\(", 1692 "beginCaptures": { 1693 "0": { 1694 "name": "punctuation.section.try.resources.begin.bracket.round.java" 1695 } 1696 }, 1697 "end": "\\)", 1698 "endCaptures": { 1699 "0": { 1700 "name": "punctuation.section.try.resources.end.bracket.round.java" 1701 } 1702 }, 1703 "name": "meta.try.resources.java", 1704 "patterns": [ 1705 { 1706 "include": "#code" 1707 } 1708 ] 1709 }, 1710 { 1711 "begin": "{", 1712 "beginCaptures": { 1713 "0": { 1714 "name": "punctuation.section.try.begin.bracket.curly.java" 1715 } 1716 }, 1717 "end": "(?=})", 1718 "contentName": "meta.try.body.java", 1719 "patterns": [ 1720 { 1721 "include": "#code" 1722 } 1723 ] 1724 } 1725 ] 1726 }, 1727 { 1728 "begin": "\\b(catch)\\b", 1729 "beginCaptures": { 1730 "1": { 1731 "name": "keyword.control.catch.java" 1732 } 1733 }, 1734 "end": "}", 1735 "endCaptures": { 1736 "0": { 1737 "name": "punctuation.section.catch.end.bracket.curly.java" 1738 } 1739 }, 1740 "name": "meta.catch.java", 1741 "patterns": [ 1742 { 1743 "include": "#comments" 1744 }, 1745 { 1746 "begin": "\\(", 1747 "beginCaptures": { 1748 "0": { 1749 "name": "punctuation.definition.parameters.begin.bracket.round.java" 1750 } 1751 }, 1752 "end": "\\)", 1753 "endCaptures": { 1754 "0": { 1755 "name": "punctuation.definition.parameters.end.bracket.round.java" 1756 } 1757 }, 1758 "contentName": "meta.catch.parameters.java", 1759 "patterns": [ 1760 { 1761 "include": "#comments" 1762 }, 1763 { 1764 "include": "#storage-modifiers" 1765 }, 1766 { 1767 "begin": "[a-zA-Z$_][\\.a-zA-Z0-9$_]*", 1768 "beginCaptures": { 1769 "0": { 1770 "name": "storage.type.java" 1771 } 1772 }, 1773 "end": "(\\|)|(?=\\))", 1774 "endCaptures": { 1775 "1": { 1776 "name": "punctuation.catch.separator.java" 1777 } 1778 }, 1779 "patterns": [ 1780 { 1781 "include": "#comments" 1782 }, 1783 { 1784 "match": "\\w+", 1785 "captures": { 1786 "0": { 1787 "name": "variable.parameter.java" 1788 } 1789 } 1790 } 1791 ] 1792 } 1793 ] 1794 }, 1795 { 1796 "begin": "{", 1797 "beginCaptures": { 1798 "0": { 1799 "name": "punctuation.section.catch.begin.bracket.curly.java" 1800 } 1801 }, 1802 "end": "(?=})", 1803 "contentName": "meta.catch.body.java", 1804 "patterns": [ 1805 { 1806 "include": "#code" 1807 } 1808 ] 1809 } 1810 ] 1811 }, 1812 { 1813 "begin": "\\bfinally\\b", 1814 "beginCaptures": { 1815 "0": { 1816 "name": "keyword.control.finally.java" 1817 } 1818 }, 1819 "end": "}", 1820 "endCaptures": { 1821 "0": { 1822 "name": "punctuation.section.finally.end.bracket.curly.java" 1823 } 1824 }, 1825 "name": "meta.finally.java", 1826 "patterns": [ 1827 { 1828 "begin": "{", 1829 "beginCaptures": { 1830 "0": { 1831 "name": "punctuation.section.finally.begin.bracket.curly.java" 1832 } 1833 }, 1834 "end": "(?=})", 1835 "contentName": "meta.finally.body.java", 1836 "patterns": [ 1837 { 1838 "include": "#code" 1839 } 1840 ] 1841 } 1842 ] 1843 } 1844 ] 1845 }, 1846 "variables": { 1847 "begin": "(?x)\n(?=\n \\b\n (\n (void|boolean|byte|char|short|int|float|long|double)\n |\n (?>(\\w+\\.)*[A-Z_]+\\w*) # e.g. `javax.ws.rs.Response`, or `String`\n )\n \\b\n \\s*\n (\n <[\\w<>,\\.?\\s\\[\\]]*> # e.g. `HashMap<Integer, String>`, or `List<java.lang.String>`\n )?\n \\s*\n (\n (\\[\\])* # int[][]\n )?\n \\s+\n [A-Za-z_$][\\w$]* # At least one identifier after space\n ([\\w\\[\\],$][\\w\\[\\],\\s]*)? # possibly primitive array or additional identifiers\n \\s*(=|:|;)\n)", 1848 "end": "(?=\\=|:|;)", 1849 "name": "meta.definition.variable.java", 1850 "patterns": [ 1851 { 1852 "match": "([A-Za-z$_][\\w$]*)(?=\\s*(\\[\\])*\\s*(;|:|=|,))", 1853 "captures": { 1854 "1": { 1855 "name": "variable.other.definition.java" 1856 } 1857 } 1858 }, 1859 { 1860 "include": "#all-types" 1861 }, 1862 { 1863 "include": "#code" 1864 } 1865 ] 1866 }, 1867 "variables-local": { 1868 "begin": "(?=\\b(var)\\b\\s+[A-Za-z_$][\\w$]*\\s*(=|:|;))", 1869 "end": "(?=\\=|:|;)", 1870 "name": "meta.definition.variable.local.java", 1871 "patterns": [ 1872 { 1873 "match": "\\bvar\\b", 1874 "name": "storage.type.local.java" 1875 }, 1876 { 1877 "match": "([A-Za-z$_][\\w$]*)(?=\\s*(\\[\\])*\\s*(=|:|;))", 1878 "captures": { 1879 "1": { 1880 "name": "variable.other.definition.java" 1881 } 1882 } 1883 }, 1884 { 1885 "include": "#code" 1886 } 1887 ] 1888 } 1889 } 1890 }