{ "information_for_contributors": [ "This file has been converted from https://github.com/atom/language-java/blob/master/grammars/java.cson", "If you want to provide a fix or improvement, please create a pull request against the original repository.", "Once accepted there, we are happy to receive an update request." ], "version": "https://github.com/atom/language-java/commit/5c2863da1425d61914d2e04ef31b86f8c5883c5f", "name": "Java", "scopeName": "source.java", "patterns": [ { "begin": "\\b(package)\\b\\s*", "beginCaptures": { "1": { "name": "keyword.other.package.java" } }, "end": "\\s*(;)", "endCaptures": { "1": { "name": "punctuation.terminator.java" } }, "name": "meta.package.java", "contentName": "storage.modifier.package.java", "patterns": [ { "include": "#comments" }, { "match": "(?<=\\.)\\s*\\.|\\.(?=\\s*;)", "name": "invalid.illegal.character_not_allowed_here.java" }, { "match": "(?", "endCaptures": { "0": { "name": "punctuation.bracket.angle.java" } }, "patterns": [ { "match": "\\b(extends|super)\\b", "name": "storage.modifier.$1.java" }, { "match": "([a-zA-Z$_][a-zA-Z0-9$_]*)(?=\\s*<)", "captures": { "1": { "name": "storage.type.java" } } }, { "include": "#primitive-arrays" }, { "match": "[a-zA-Z$_][a-zA-Z0-9$_]*", "name": "storage.type.generic.java" }, { "match": "\\?", "name": "storage.type.generic.wildcard.java" }, { "match": "&", "name": "punctuation.separator.types.java" }, { "match": ",", "name": "punctuation.separator.delimiter.java" }, { "include": "#parens" }, { "include": "#generics" }, { "include": "#comments" } ] }, "enums": { "begin": "^\\s*(enum)\\s+(\\w+)", "beginCaptures": { "1": { "name": "storage.modifier.java" }, "2": { "name": "entity.name.type.enum.java" } }, "end": "}", "endCaptures": { "0": { "name": "punctuation.section.enum.end.bracket.curly.java" } }, "name": "meta.enum.java", "patterns": [ { "begin": "{", "beginCaptures": { "0": { "name": "punctuation.section.enum.begin.bracket.curly.java" } }, "end": "(?=})", "patterns": [ { "match": "\\w+", "name": "constant.other.enum.java" }, { "include": "#class-body" } ] }, { "include": "#comments" } ] }, "function-call": { "begin": "([A-Za-z_$][\\w$]*)\\s*(\\()", "beginCaptures": { "1": { "name": "entity.name.function.java" }, "2": { "name": "punctuation.definition.parameters.begin.bracket.round.java" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.parameters.end.bracket.round.java" } }, "name": "meta.function-call.java", "patterns": [ { "include": "#code" } ] }, "keywords": { "patterns": [ { "match": "\\bthrow\\b", "name": "keyword.control.throw.java" }, { "match": "\\?|:", "name": "keyword.control.ternary.java" }, { "match": "\\b(return|break|case|continue|default|do|while|for|switch|if|else)\\b", "name": "keyword.control.java" }, { "match": "\\b(instanceof)\\b", "name": "keyword.operator.instanceof.java" }, { "match": "(<<|>>>?|~|\\^)", "name": "keyword.operator.bitwise.java" }, { "match": "((&|\\^|\\||<<|>>>?)=)", "name": "keyword.operator.assignment.bitwise.java" }, { "match": "(===?|!=|<=|>=|<>|<|>)", "name": "keyword.operator.comparison.java" }, { "match": "([+*/%-]=)", "name": "keyword.operator.assignment.arithmetic.java" }, { "match": "(=)", "name": "keyword.operator.assignment.java" }, { "match": "(\\-\\-|\\+\\+)", "name": "keyword.operator.increment-decrement.java" }, { "match": "(\\-|\\+|\\*|\\/|%)", "name": "keyword.operator.arithmetic.java" }, { "match": "(!|&&|\\|\\|)", "name": "keyword.operator.logical.java" }, { "match": "(\\||&)", "name": "keyword.operator.bitwise.java" } ] }, "lambda-expression": { "patterns": [ { "match": "->", "name": "storage.type.function.arrow.java" } ] }, "method-call": { "begin": "(\\.)\\s*([A-Za-z_$][\\w$]*)\\s*(\\()", "beginCaptures": { "1": { "name": "punctuation.separator.period.java" }, "2": { "name": "entity.name.function.java" }, "3": { "name": "punctuation.definition.parameters.begin.bracket.round.java" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.parameters.end.bracket.round.java" } }, "name": "meta.method-call.java", "patterns": [ { "include": "#code" } ] }, "methods": { "begin": "(?!new)(?=[\\w<].*\\s+)(?=([^=/]|/(?!/))+\\()", "end": "(})|(?=;)", "endCaptures": { "1": { "name": "punctuation.section.method.end.bracket.curly.java" } }, "name": "meta.method.java", "patterns": [ { "include": "#storage-modifiers" }, { "begin": "(\\w+)\\s*(\\()", "beginCaptures": { "1": { "name": "entity.name.function.java" }, "2": { "name": "punctuation.definition.parameters.begin.bracket.round.java" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.parameters.end.bracket.round.java" } }, "name": "meta.method.identifier.java", "patterns": [ { "include": "#parameters" }, { "include": "#parens" }, { "include": "#comments-inline" } ] }, { "include": "#generics" }, { "begin": "(?=\\w.*\\s+\\w+\\s*\\()", "end": "(?=\\s+\\w+\\s*\\()", "name": "meta.method.return-type.java", "patterns": [ { "include": "#all-types" }, { "include": "#parens" } ] }, { "include": "#throws" }, { "begin": "{", "beginCaptures": { "0": { "name": "punctuation.section.method.begin.bracket.curly.java" } }, "end": "(?=})", "contentName": "meta.method.body.java", "patterns": [ { "include": "#code" } ] }, { "include": "#comments" } ] }, "numbers": { "patterns": [ { "match": "(?x)\n\\b(?)|(?!;)", "patterns": [ { "include": "#generics" } ] }, { "match": "\\b(?:[A-Z]\\w*\\s*(\\.)\\s*)*[A-Z]\\w*\\b", "name": "storage.type.java", "captures": { "1": { "name": "punctuation.separator.period.java" } } } ] }, "object-types-inherited": { "patterns": [ { "include": "#generics" }, { "match": "\\b(?:[A-Z]\\w*\\s*(\\.)\\s*)*[A-Z]\\w*\\b", "name": "entity.other.inherited-class.java", "captures": { "1": { "name": "punctuation.separator.period.java" } } }, { "match": ",", "name": "punctuation.separator.delimiter.java" } ] }, "objects": { "match": "(?(\\w+\\.)*[A-Z]+\\w*) # e.g. `javax.ws.rs.Response`, or `String`\n )\n (\n <[\\w<>,?\\s]*> # HashMap\n )?\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)", "end": "(?=;)", "name": "meta.definition.variable.java", "patterns": [ { "match": "([A-Za-z$_][\\w$]*)(?=\\s*(\\[\\])*\\s*(;|=|,))", "captures": { "1": { "name": "variable.other.definition.java" } } }, { "include": "#all-types" }, { "begin": "=", "beginCaptures": { "0": { "name": "keyword.operator.assignment.java" } }, "end": "(?=;)", "patterns": [ { "include": "#code" } ] }, { "include": "#code" } ] }, "member-variables": { "begin": "(?=private|protected|public|native|synchronized|abstract|threadsafe|transient|static|final)", "end": "(?=;)", "patterns": [ { "include": "#storage-modifiers" }, { "include": "#variables" }, { "include": "#primitive-arrays" }, { "include": "#object-types" } ] } } }