UNPKG

tm-grammars

Version:
1,666 lines 88.5 kB
{ "displayName": "Go", "name": "go", "patterns": [ { "include": "#statements" } ], "repository": { "after_control_variables": { "captures": { "1": { "patterns": [ { "include": "#type-declarations-without-brackets" }, { "match": "\\[", "name": "punctuation.definition.begin.bracket.square.go" }, { "match": "\\]", "name": "punctuation.definition.end.bracket.square.go" }, { "match": "(?:\\w+)", "name": "variable.other.go" } ] } }, "match": "(?:(?<=\\brange\\b|\\bswitch\\b|\\;|\\bif\\b|\\bfor\\b|\\<|\\>|\\<\\=|\\>\\=|\\=\\=|\\!\\=|\\w(?:\\+|/|\\-|\\*|\\%)|\\w(?:\\+|/|\\-|\\*|\\%)\\=|\\|\\||\\&\\&)(?:\\s*)((?![\\[\\]]+)[[:alnum:]\\-\\_\\!\\.\\[\\]\\<\\>\\=\\*/\\+\\%\\:]+)(?:\\s*)(?=\\{))" }, "brackets": { "patterns": [ { "begin": "\\{", "beginCaptures": { "0": { "name": "punctuation.definition.begin.bracket.curly.go" } }, "end": "\\}", "endCaptures": { "0": { "name": "punctuation.definition.end.bracket.curly.go" } }, "patterns": [ { "include": "$self" } ] }, { "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.begin.bracket.round.go" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.end.bracket.round.go" } }, "patterns": [ { "include": "$self" } ] }, { "begin": "\\[", "beginCaptures": { "0": { "name": "punctuation.definition.begin.bracket.square.go" } }, "end": "\\]", "endCaptures": { "0": { "name": "punctuation.definition.end.bracket.square.go" } }, "patterns": [ { "include": "$self" } ] } ] }, "built_in_functions": { "patterns": [ { "match": "\\b(append|cap|close|complex|copy|delete|imag|len|panic|print|println|real|recover|min|max|clear)\\b(?=\\()", "name": "entity.name.function.support.builtin.go" }, { "begin": "(?:(\\bnew\\b)(\\())", "beginCaptures": { "1": { "name": "entity.name.function.support.builtin.go" }, "2": { "name": "punctuation.definition.begin.bracket.round.go" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.end.bracket.round.go" } }, "patterns": [ { "include": "#functions" }, { "include": "#struct_variables_types" }, { "include": "#type-declarations" }, { "include": "#generic_types" }, { "match": "(?:\\w+)", "name": "entity.name.type.go" }, { "include": "$self" } ] }, { "begin": "(?:(\\bmake\\b)(?:(\\()((?:(?:(?:[\\*\\[\\]]+)?(?:\\<\\-\\s*)?\\bchan\\b(?:\\s*\\<\\-)?\\s*)+(?:\\([^\\)]+\\))?)?(?:[\\[\\]\\*]+)?(?:(?!\\bmap\\b)(?:[\\w\\.]+))?(\\[(?:(?:[\\S]+)(?:(?:\\,\\s*(?:[\\S]+))*))?\\])?(?:\\,)?)?))", "beginCaptures": { "1": { "name": "entity.name.function.support.builtin.go" }, "2": { "name": "punctuation.definition.begin.bracket.round.go" }, "3": { "patterns": [ { "include": "#type-declarations-without-brackets" }, { "include": "#parameter-variable-types" }, { "match": "\\w+", "name": "entity.name.type.go" } ] } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.end.bracket.round.go" } }, "patterns": [ { "include": "$self" } ] } ] }, "comments": { "patterns": [ { "begin": "(\\/\\*)", "beginCaptures": { "1": { "name": "punctuation.definition.comment.go" } }, "end": "(\\*\\/)", "endCaptures": { "1": { "name": "punctuation.definition.comment.go" } }, "name": "comment.block.go" }, { "begin": "(\\/\\/)", "beginCaptures": { "1": { "name": "punctuation.definition.comment.go" } }, "end": "(?:\\n|$)", "name": "comment.line.double-slash.go" } ] }, "const_assignment": { "patterns": [ { "captures": { "1": { "patterns": [ { "include": "#delimiters" }, { "match": "\\w+", "name": "variable.other.constant.go" } ] }, "2": { "patterns": [ { "include": "#type-declarations-without-brackets" }, { "include": "#generic_types" }, { "match": "\\(", "name": "punctuation.definition.begin.bracket.round.go" }, { "match": "\\)", "name": "punctuation.definition.end.bracket.round.go" }, { "match": "\\[", "name": "punctuation.definition.begin.bracket.square.go" }, { "match": "\\]", "name": "punctuation.definition.end.bracket.square.go" }, { "match": "\\w+", "name": "entity.name.type.go" } ] } }, "match": "(?:(?<=\\bconst\\b)(?:\\s*)(\\b[\\w\\.]+(?:\\,\\s*[\\w\\.]+)*)(?:\\s*)((?:(?:(?:[\\*\\[\\]]+)?(?:\\<\\-\\s*)?\\bchan\\b(?:\\s*\\<\\-)?\\s*)+(?:\\([^\\)]+\\))?)?(?!(?:[\\[\\]\\*]+)?\\b(?:struct|func|map)\\b)(?:[\\w\\.\\[\\]\\*]+(?:\\,\\s*[\\w\\.\\[\\]\\*]+)*)?(?:\\s*)(?:\\=)?)?)" }, { "begin": "(?:(?<=\\bconst\\b)(?:\\s*)(\\())", "beginCaptures": { "1": { "name": "punctuation.definition.begin.bracket.round.go" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.end.bracket.round.go" } }, "patterns": [ { "captures": { "1": { "patterns": [ { "include": "#delimiters" }, { "match": "\\w+", "name": "variable.other.constant.go" } ] }, "2": { "patterns": [ { "include": "#type-declarations-without-brackets" }, { "include": "#generic_types" }, { "match": "\\(", "name": "punctuation.definition.begin.bracket.round.go" }, { "match": "\\)", "name": "punctuation.definition.end.bracket.round.go" }, { "match": "\\[", "name": "punctuation.definition.begin.bracket.square.go" }, { "match": "\\]", "name": "punctuation.definition.end.bracket.square.go" }, { "match": "\\w+", "name": "entity.name.type.go" } ] } }, "match": "(?:(?:^\\s*)(\\b[\\w\\.]+(?:\\,\\s*[\\w\\.]+)*)(?:\\s*)((?:(?:(?:[\\*\\[\\]]+)?(?:\\<\\-\\s*)?\\bchan\\b(?:\\s*\\<\\-)?\\s*)+(?:\\([^\\)]+\\))?)?(?!(?:[\\[\\]\\*]+)?\\b(?:struct|func|map)\\b)(?:[\\w\\.\\[\\]\\*]+(?:\\,\\s*[\\w\\.\\[\\]\\*]+)*)?(?:\\s*)(?:\\=)?)?)" }, { "include": "$self" } ] } ] }, "delimiters": { "patterns": [ { "match": "\\,", "name": "punctuation.other.comma.go" }, { "match": "\\.(?!\\.\\.)", "name": "punctuation.other.period.go" }, { "match": ":(?!=)", "name": "punctuation.other.colon.go" } ] }, "double_parentheses_types": { "captures": { "1": { "patterns": [ { "include": "#type-declarations-without-brackets" }, { "match": "\\(", "name": "punctuation.definition.begin.bracket.round.go" }, { "match": "\\)", "name": "punctuation.definition.end.bracket.round.go" }, { "match": "\\[", "name": "punctuation.definition.begin.bracket.square.go" }, { "match": "\\]", "name": "punctuation.definition.end.bracket.square.go" }, { "match": "\\w+", "name": "entity.name.type.go" } ] } }, "match": "(?:(?<!\\w)(\\((?:[\\w\\.\\[\\]\\*\\&]+)\\))(?=\\())" }, "field_hover": { "captures": { "1": { "patterns": [ { "include": "#type-declarations" }, { "match": "\\w+", "name": "variable.other.property.go" } ] }, "2": { "patterns": [ { "match": "\\binvalid\\b\\s+\\btype\\b", "name": "invalid.field.go" }, { "include": "#type-declarations-without-brackets" }, { "include": "#parameter-variable-types" }, { "match": "\\w+", "name": "entity.name.type.go" } ] } }, "match": "(?:(?<=^\\bfield\\b)\\s+([\\w\\*\\.]+)\\s+([\\s\\S]+))" }, "function_declaration": { "begin": "(?:^(\\bfunc\\b)(?:\\s*(\\([^\\)]+\\)\\s*)?(?:(\\w+)(?=\\(|\\[))?))", "beginCaptures": { "1": { "name": "keyword.function.go" }, "2": { "patterns": [ { "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.begin.bracket.round.go" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.end.bracket.round.go" } }, "patterns": [ { "captures": { "1": { "name": "variable.parameter.go" }, "2": { "patterns": [ { "include": "#type-declarations-without-brackets" }, { "include": "#parameter-variable-types" }, { "match": "(?:\\w+)", "name": "entity.name.type.go" } ] } }, "match": "(?:(\\w+(?:\\s+))?((?:[\\w\\.\\*]+)(?:\\[(?:(?:(?:[\\w\\.\\*]+)(?:\\,\\s+)?)+)?\\])?))" }, { "include": "$self" } ] } ] }, "3": { "patterns": [ { "match": "\\d\\w*", "name": "invalid.illegal.identifier.go" }, { "match": "\\w+", "name": "entity.name.function.go" } ] } }, "end": "(?:(?<=\\))\\s*((?:(?:(?:[\\*\\[\\]]+)?(?:\\<\\-\\s*)?\\bchan\\b(?:\\s*\\<\\-)?\\s*)+)?(?!(?:[\\[\\]\\*]+)?(?:\\bstruct\\b|\\binterface\\b))[\\w\\.\\-\\*\\[\\]]+)?\\s*(?=\\{))", "endCaptures": { "1": { "patterns": [ { "include": "#type-declarations-without-brackets" }, { "include": "#parameter-variable-types" }, { "match": "(?:\\w+)", "name": "entity.name.type.go" } ] } }, "patterns": [ { "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.begin.bracket.round.go" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.end.bracket.round.go" } }, "patterns": [ { "include": "#function_param_types" } ] }, { "begin": "(?:([\\w\\.\\*]+)?(\\[))", "beginCaptures": { "1": { "patterns": [ { "include": "#type-declarations" }, { "match": "(?:\\w+)", "name": "entity.name.type.go" } ] }, "2": { "name": "punctuation.definition.begin.bracket.square.go" } }, "end": "\\]", "endCaptures": { "0": { "name": "punctuation.definition.end.bracket.square.go" } }, "patterns": [ { "include": "#generic_param_types" } ] }, { "captures": { "1": { "patterns": [ { "include": "#type-declarations-without-brackets" }, { "include": "#parameter-variable-types" }, { "match": "\\w+", "name": "entity.name.type.go" } ] } }, "match": "(?:(?<=\\))(?:\\s*)((?:(?:\\s*(?:[\\*\\[\\]]+)?(?:\\<\\-\\s*)?\\bchan\\b(?:\\s*\\<\\-)?\\s*)+)?[\\w\\*\\.\\[\\]\\<\\>\\-]+(?:\\s*)(?:\\/(?:\\/|\\*).*)?)$)" }, { "include": "$self" } ] }, "function_param_types": { "patterns": [ { "include": "#struct_variables_types" }, { "include": "#interface_variables_types" }, { "include": "#type-declarations-without-brackets" }, { "captures": { "1": { "patterns": [ { "include": "#type-declarations" }, { "match": "\\w+", "name": "variable.parameter.go" } ] } }, "match": "((?:(?:\\b\\w+\\,\\s*)+)?\\b\\w+)\\s+(?=(?:(?:\\s*(?:[\\*\\[\\]]+)?(?:\\<\\-\\s*)?\\bchan\\b(?:\\s*\\<\\-)?\\s*)+)?(?:[\\[\\]\\*]+)?\\b(?:struct|interface)\\b\\s*\\{)" }, { "captures": { "1": { "patterns": [ { "include": "#type-declarations" }, { "match": "\\w+", "name": "variable.parameter.go" } ] } }, "match": "(?:(?:(?<=\\()|^\\s*)((?:(?:\\b\\w+\\,\\s*)+)(?:/(?:/|\\*).*)?)$)" }, { "captures": { "1": { "patterns": [ { "include": "#delimiters" }, { "match": "\\w+", "name": "variable.parameter.go" } ] }, "2": { "patterns": [ { "include": "#type-declarations-without-brackets" }, { "include": "#parameter-variable-types" }, { "match": "(?:\\w+)", "name": "entity.name.type.go" } ] } }, "match": "(?:((?:(?:\\b\\w+\\,\\s*)+)?\\b\\w+)(?:\\s+)((?:(?:\\s*(?:[\\*\\[\\]]+)?(?:\\<\\-\\s*)?\\bchan\\b(?:\\s*\\<\\-)?\\s*)+)?(?:(?:(?:[\\w\\[\\]\\.\\*]+)?(?:(?:\\bfunc\\b\\((?:[^\\)]+)?\\))(?:(?:\\s*(?:[\\*\\[\\]]+)?(?:\\<\\-\\s*)?\\bchan\\b(?:\\s*\\<\\-)?\\s*)+)?(?:\\s*))+(?:(?:(?:[\\w\\*\\.\\[\\]]+)|(?:\\((?:[^\\)]+)?\\))))?)|(?:(?:[\\[\\]\\*]+)?[\\w\\*\\.]+(?:\\[(?:[^\\]]+)\\])?(?:[\\w\\.\\*]+)?)+)))" }, { "begin": "(?:([\\w\\.\\*]+)?(\\[))", "beginCaptures": { "1": { "patterns": [ { "include": "#type-declarations" }, { "match": "(?:\\w+)", "name": "entity.name.type.go" } ] }, "2": { "name": "punctuation.definition.begin.bracket.square.go" } }, "end": "\\]", "endCaptures": { "0": { "name": "punctuation.definition.end.bracket.square.go" } }, "patterns": [ { "include": "#generic_param_types" } ] }, { "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.begin.bracket.round.go" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.end.bracket.round.go" } }, "patterns": [ { "include": "#function_param_types" } ] }, { "captures": { "1": { "patterns": [ { "include": "#type-declarations" }, { "match": "(?:\\w+)", "name": "entity.name.type.go" } ] } }, "match": "([\\w\\.]+)" }, { "include": "$self" } ] }, "functions": { "begin": "(?:(\\bfunc\\b)(?=\\())", "beginCaptures": { "1": { "name": "keyword.function.go" } }, "end": "(?:(?<=\\))(\\s*(?:(?:[\\*\\[\\]]+)?(?:\\<\\-\\s*)?\\bchan\\b(?:\\s*\\<\\-)?\\s*)+)?((?:(?:\\s*(?:(?:[\\[\\]\\*]+)?[\\w\\.\\*]+)?(?:(?:\\[(?:(?:[\\w\\.\\*]+)?(?:\\[(?:[^\\]]+)?\\])?(?:\\,\\s+)?)+\\])|(?:\\((?:[^\\)]+)?\\)))?(?:[\\w\\.\\*]+)?)(?:\\s*)(?=\\{))|(?:\\s*(?:(?:(?:[\\[\\]\\*]+)?(?!\\bfunc\\b)(?:[\\w\\.\\*]+)(?:\\[(?:(?:[\\w\\.\\*]+)?(?:\\[(?:[^\\]]+)?\\])?(?:\\,\\s+)?)+\\])?(?:[\\w\\.\\*]+)?)|(?:\\((?:[^\\)]+)?\\)))))?)", "endCaptures": { "1": { "patterns": [ { "include": "#type-declarations" } ] }, "2": { "patterns": [ { "include": "#type-declarations-without-brackets" }, { "include": "#parameter-variable-types" }, { "match": "(?:\\w+)", "name": "entity.name.type.go" } ] } }, "patterns": [ { "include": "#parameter-variable-types" } ] }, "functions_inline": { "captures": { "1": { "name": "keyword.function.go" }, "2": { "patterns": [ { "include": "#type-declarations-without-brackets" }, { "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.begin.bracket.round.go" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.end.bracket.round.go" } }, "patterns": [ { "include": "#function_param_types" }, { "include": "$self" } ] }, { "match": "\\[", "name": "punctuation.definition.begin.bracket.square.go" }, { "match": "\\]", "name": "punctuation.definition.end.bracket.square.go" }, { "match": "\\{", "name": "punctuation.definition.begin.bracket.curly.go" }, { "match": "\\}", "name": "punctuation.definition.end.bracket.curly.go" }, { "match": "(?:\\w+)", "name": "entity.name.type.go" } ] } }, "match": "(?:(\\bfunc\\b)((?:\\((?:[^/]*?)\\))(?:\\s+)(?:\\((?:[^/]*?)\\)))(?:\\s+)(?=\\{))" }, "generic_param_types": { "patterns": [ { "include": "#struct_variables_types" }, { "include": "#interface_variables_types" }, { "include": "#type-declarations-without-brackets" }, { "captures": { "1": { "patterns": [ { "include": "#type-declarations" }, { "match": "\\w+", "name": "variable.parameter.go" } ] } }, "match": "((?:(?:\\b\\w+\\,\\s*)+)?\\b\\w+)\\s+(?=(?:(?:\\s*(?:[\\*\\[\\]]+)?(?:\\<\\-\\s*)?\\bchan\\b(?:\\s*\\<\\-)?\\s*)+)?(?:[\\[\\]\\*]+)?\\b(?:struct|interface)\\b\\s*\\{)" }, { "captures": { "1": { "patterns": [ { "include": "#type-declarations" }, { "match": "\\w+", "name": "variable.parameter.go" } ] } }, "match": "(?:(?:(?<=\\()|^\\s*)((?:(?:\\b\\w+\\,\\s*)+)(?:/(?:/|\\*).*)?)$)" }, { "captures": { "1": { "patterns": [ { "include": "#delimiters" }, { "match": "\\w+", "name": "variable.parameter.go" } ] }, "2": { "patterns": [ { "include": "#type-declarations-without-brackets" }, { "include": "#parameter-variable-types" }, { "match": "(?:\\w+)", "name": "entity.name.type.go" } ] }, "3": { "patterns": [ { "include": "#type-declarations" }, { "match": "(?:\\w+)", "name": "entity.name.type.go" } ] } }, "match": "(?:((?:(?:\\b\\w+\\,\\s*)+)?\\b\\w+)(?:\\s+)((?:(?:\\s*(?:[\\*\\[\\]]+)?(?:\\<\\-\\s*)?\\bchan\\b(?:\\s*\\<\\-)?\\s*)+)?(?:(?:(?:[\\w\\[\\]\\.\\*]+)?(?:(?:\\bfunc\\b\\((?:[^\\)]+)?\\))(?:(?:\\s*(?:[\\*\\[\\]]+)?(?:\\<\\-\\s*)?\\bchan\\b(?:\\s*\\<\\-)?\\s*)+)?(?:\\s*))+(?:(?:(?:[\\w\\*\\.]+)|(?:\\((?:[^\\)]+)?\\))))?)|(?:(?:(?:[\\w\\*\\.\\~]+)|(?:\\[(?:(?:[\\w\\.\\*]+)?(?:\\[(?:[^\\]]+)?\\])?(?:\\,\\s+)?)+\\]))(?:[\\w\\.\\*]+)?)+)))" }, { "begin": "(?:([\\w\\.\\*]+)?(\\[))", "beginCaptures": { "1": { "patterns": [ { "include": "#type-declarations" }, { "match": "(?:\\w+)", "name": "entity.name.type.go" } ] }, "2": { "name": "punctuation.definition.begin.bracket.square.go" } }, "end": "\\]", "endCaptures": { "0": { "name": "punctuation.definition.end.bracket.square.go" } }, "patterns": [ { "include": "#generic_param_types" } ] }, { "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.begin.bracket.round.go" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.end.bracket.round.go" } }, "patterns": [ { "include": "#function_param_types" } ] }, { "captures": { "1": { "patterns": [ { "include": "#type-declarations" }, { "match": "(?:\\w+)", "name": "entity.name.type.go" } ] } }, "match": "(?:\\b([\\w\\.]+))" }, { "include": "$self" } ] }, "generic_types": { "captures": { "1": { "patterns": [ { "include": "#type-declarations" }, { "match": "\\w+", "name": "entity.name.type.go" } ] }, "2": { "patterns": [ { "include": "#parameter-variable-types" } ] } }, "match": "(?:([\\w\\.\\*]+)(\\[(?:[^\\]]+)?\\]))" }, "group-functions": { "patterns": [ { "include": "#function_declaration" }, { "include": "#functions_inline" }, { "include": "#functions" }, { "include": "#built_in_functions" }, { "include": "#support_functions" } ] }, "group-types": { "patterns": [ { "include": "#other_struct_interface_expressions" }, { "include": "#type_assertion_inline" }, { "include": "#struct_variables_types" }, { "include": "#interface_variables_types" }, { "include": "#single_type" }, { "include": "#multi_types" }, { "include": "#struct_interface_declaration" }, { "include": "#double_parentheses_types" }, { "include": "#switch_types" }, { "include": "#type-declarations" } ] }, "group-variables": { "patterns": [ { "include": "#const_assignment" }, { "include": "#var_assignment" }, { "include": "#variable_assignment" }, { "include": "#label_loop_variables" }, { "include": "#slice_index_variables" }, { "include": "#property_variables" }, { "include": "#switch_select_case_variables" }, { "include": "#other_variables" } ] }, "import": { "patterns": [ { "begin": "\\b(import)\\s+", "beginCaptures": { "1": { "name": "keyword.control.import.go" } }, "end": "(?!\\G)", "patterns": [ { "include": "#imports" } ] } ] }, "imports": { "patterns": [ { "captures": { "1": { "patterns": [ { "include": "#delimiters" }, { "match": "(?:\\w+)", "name": "variable.other.import.go" } ] }, "2": { "name": "string.quoted.double.go" }, "3": { "name": "punctuation.definition.string.begin.go" }, "4": { "name": "entity.name.import.go" }, "5": { "name": "punctuation.definition.string.end.go" } }, "match": "(\\s*[\\w\\.]+)?\\s*((\")([^\"]*)(\"))" }, { "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.imports.begin.bracket.round.go" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.imports.end.bracket.round.go" } }, "patterns": [ { "include": "#comments" }, { "include": "#imports" } ] }, { "include": "$self" } ] }, "interface_variables_types": { "begin": "(\\binterface\\b)\\s*(\\{)", "beginCaptures": { "1": { "name": "keyword.interface.go" }, "2": { "name": "punctuation.definition.begin.bracket.curly.go" } }, "end": "\\}", "endCaptures": { "0": { "name": "punctuation.definition.end.bracket.curly.go" } }, "patterns": [ { "include": "#interface_variables_types_field" }, { "include": "$self" } ] }, "interface_variables_types_field": { "patterns": [ { "include": "#support_functions" }, { "include": "#type-declarations-without-brackets" }, { "begin": "(?:([\\w\\.\\*]+)?(\\[))", "beginCaptures": { "1": { "patterns": [ { "include": "#type-declarations" }, { "match": "(?:\\w+)", "name": "entity.name.type.go" } ] }, "2": { "name": "punctuation.definition.begin.bracket.square.go" } }, "end": "\\]", "endCaptures": { "0": { "name": "punctuation.definition.end.bracket.square.go" } }, "patterns": [ { "include": "#generic_param_types" } ] }, { "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.definition.begin.bracket.round.go" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.end.bracket.round.go" } }, "patterns": [ { "include": "#function_param_types" } ] }, { "captures": { "1": { "patterns": [ { "include": "#type-declarations" }, { "match": "\\w+", "name": "entity.name.type.go" } ] } }, "match": "([\\w\\.]+)" } ] }, "keywords": { "patterns": [ { "match": "\\b(break|case|continue|default|defer|else|fallthrough|for|go|goto|if|range|return|select|switch)\\b", "name": "keyword.control.go" }, { "match": "\\bchan\\b", "name": "keyword.channel.go" }, { "match": "\\bconst\\b", "name": "keyword.const.go" }, { "match": "\\bvar\\b", "name": "keyword.var.go" }, { "match": "\\bfunc\\b", "name": "keyword.function.go" }, { "match": "\\binterface\\b", "name": "keyword.interface.go" }, { "match": "\\bmap\\b", "name": "keyword.map.go" }, { "match": "\\bstruct\\b", "name": "keyword.struct.go" }, { "match": "\\bimport\\b", "name": "keyword.control.import.go" }, { "match": "\\btype\\b", "name": "keyword.type.go" } ] }, "label_loop_variables": { "captures": { "1": { "patterns": [ { "include": "#type-declarations" }, { "match": "\\w+", "name": "variable.other.label.go" } ] } }, "match": "((?:^\\s*\\w+:\\s*$)|(?:^\\s*(?:\\bbreak\\b|\\bgoto\\b|\\bcontinue\\b)\\s+\\w+(?:\\s*/(?:/|\\*)\\s*.*)?$))" }, "language_constants": { "captures": { "1": { "name": "constant.language.boolean.go" }, "2": { "name": "constant.language.null.go" }, "3": { "name": "constant.language.iota.go" } }, "match": "\\b(?:(true|false)|(nil)|(iota))\\b" }, "map_types": { "begin": "(?:(\\bmap\\b)(\\[))", "beginCaptures": { "1": { "name": "keyword.map.go" }, "2": { "name": "punctuation.definition.begin.bracket.square.go" } }, "end": "(?:(\\])((?:(?:(?:[\\*\\[\\]]+)?(?:\\<\\-\\s*)?\\bchan\\b(?:\\s*\\<\\-)?\\s*)+)?(?!(?:[\\[\\]\\*]+)?\\b(?:func|struct|map)\\b)(?:[\\*\\[\\]]+)?(?:[\\w\\.]+)(?:\\[(?:(?:[\\w\\.\\*\\[\\]\\{\\}]+)(?:(?:\\,\\s*(?:[\\w\\.\\*\\[\\]\\{\\}]+))*))?\\])?)?)", "endCaptures": { "1": { "name": "punctuation.definition.end.bracket.square.go" }, "2": { "patterns": [ { "include": "#type-declarations-without-brackets" }, { "match": "\\[", "name": "punctuation.definition.begin.bracket.square.go" }, { "match": "\\]", "name": "punctuation.definition.end.bracket.square.go" }, { "match": "\\w+", "name": "entity.name.type.go" } ] } }, "patterns": [ { "include": "#type-declarations-without-brackets" }, { "include": "#parameter-variable-types" }, { "include": "#functions" }, { "match": "\\[", "name": "punctuation.definition.begin.bracket.square.go" }, { "match": "\\]", "name": "punctuation.definition.end.bracket.square.go" }, { "match": "\\{", "name": "punctuation.definition.begin.bracket.curly.go" }, { "match": "\\}", "name": "punctuation.definition.end.bracket.curly.go" }, { "match": "\\(", "name": "punctuation.definition.begin.bracket.round.go" }, { "match": "\\)", "name": "punctuation.definition.end.bracket.round.go" }, { "match": "\\w+", "name": "entity.name.type.go" } ] }, "multi_types": { "begin": "(\\btype\\b)\\s*(\\()", "beginCaptures": { "1": { "name": "keyword.type.go" }, "2": { "name": "punctuation.definition.begin.bracket.round.go" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.end.bracket.round.go" } }, "patterns": [ { "include": "#struct_variables_types" }, { "include": "#interface_variables_types" }, { "include": "#type-declarations-without-brackets" }, { "include": "#parameter-variable-types" }, { "match": "(?:\\w+)", "name": "entity.name.type.go" } ] }, "numeric_literals": { "captures": { "0": { "patterns": [ { "begin": "(?=.)", "end": "(?:\\n|$)", "patterns": [ { "captures": { "1": { "name": "constant.numeric.decimal.go", "patterns": [ { "match": "(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])", "name": "punctuation.separator.constant.numeric.go" } ] }, "10": { "name": "keyword.other.unit.imaginary.go" }, "11": { "name": "constant.numeric.decimal.go", "patterns": [ { "match": "(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])", "name": "punctuation.separator.constant.numeric.go" } ] }, "12": { "name": "punctuation.separator.constant.numeric.go" }, "13": { "name": "keyword.other.unit.exponent.decimal.go" }, "14": { "name": "keyword.operator.plus.exponent.decimal.go" }, "15": { "name": "keyword.operator.minus.exponent.decimal.go" }, "16": { "name": "constant.numeric.exponent.decimal.go", "patterns": [ { "match": "(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])", "name": "punctuation.separator.constant.numeric.go" } ] }, "17": { "name": "keyword.other.unit.imaginary.go" }, "18": { "name": "constant.numeric.decimal.point.go" }, "19": { "name": "constant.numeric.decimal.go", "patterns": [ { "match": "(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])", "name": "punctuation.separator.constant.numeric.go" } ] }, "2": { "name": "punctuation.separator.constant.numeric.go" }, "20": { "name": "punctuation.separator.constant.numeric.go" }, "21": { "name": "keyword.other.unit.exponent.decimal.go" }, "22": { "name": "keyword.operator.plus.exponent.decimal.go" }, "23": { "name": "keyword.operator.minus.exponent.decimal.go" }, "24": { "name": "constant.numeric.exponent.decimal.go", "patterns": [ { "match": "(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])", "name": "punctuation.separator.constant.numeric.go" } ] }, "25": { "name": "keyword.other.unit.imaginary.go" }, "26": { "name": "keyword.other.unit.hexadecimal.go" }, "27": { "name": "constant.numeric.hexadecimal.go", "patterns": [ { "match": "(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])", "name": "punctuation.separator.constant.numeric.go" } ] }, "28": { "name": "punctuation.separator.constant.numeric.go" }, "29": { "name": "constant.numeric.hexadecimal.go" }, "3": { "name": "constant.numeric.decimal.point.go" }, "30": { "name": "constant.numeric.hexadecimal.go", "patterns": [ { "match": "(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])", "name": "punctuation.separator.constant.numeric.go" } ] }, "31": { "name": "punctuation.separator.constant.numeric.go" }, "32": { "name": "keyword.other.unit.exponent.hexadecimal.go" }, "33": { "name": "keyword.operator.plus.exponent.hexadecimal.go" }, "34": { "name": "keyword.operator.minus.exponent.hexadecimal.go" }, "35": { "name": "constant.numeric.exponent.hexadecimal.go", "patterns": [ { "match": "(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])", "name": "punctuation.separator.constant.numeric.go" } ] }, "36": { "name": "keyword.other.unit.imaginary.go" }, "37": { "name": "keyword.other.unit.hexadecimal.go" }, "38": { "name": "constant.numeric.hexadecimal.go", "patterns": [ { "match": "(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])", "name": "punctuation.separator.constant.numeric.go" } ] }, "39": { "name": "punctuation.separator.constant.numeric.go" }, "4": { "name": "constant.numeric.decimal.go", "patterns": [ { "match": "(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])", "name": "punctuation.separator.constant.numeric.go" } ] }, "40": { "name": "keyword.other.unit.exponent.hexadecimal.go" }, "41": { "name": "keyword.operator.plus.exponent.hexadecimal.go" }, "42": { "name": "keyword.operator.minus.exponent.hexadecimal.go" }, "43": { "name": "constant.numeric.exponent.hexadecimal.go", "patterns": [ { "match": "(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])", "name": "punctuation.separator.constant.numeric.go" } ] }, "44": { "name": "keyword.other.unit.imaginary.go" }, "45": { "name": "keyword.other.unit.hexadecimal.go" }, "46": { "name": "constant.numeric.hexadecimal.go" }, "47": { "name": "constant.numeric.hexadecimal.go", "patterns": [ { "match": "(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])", "name": "punctuation.separator.constant.numeric.go" } ] }, "48": { "name": "punctuation.separator.constant.numeric.go" }, "49": { "name": "keyword.other.unit.exponent.hexadecimal.go" }, "5": { "name": "punctuation.separator.constant.numeric.go" }, "50": { "name": "keyword.operator.plus.exponent.hexadecimal.go" }, "51": { "name": "keyword.operator.minus.exponent.hexadecimal.go" }, "52": { "name": "constant.numeric.exponent.hexadecimal.go", "patterns": [ { "match": "(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])", "name": "punctuation.separator.constant.numeric.go" } ] }, "53": { "name": "keyword.other.unit.imaginary.go" }, "6": { "name": "keyword.other.unit.exponent.decimal.go" }, "7": { "name": "keyword.operator.plus.exponent.decimal.go" }, "8": { "name": "keyword.operator.minus.exponent.decimal.go" }, "9": { "name": "constant.numeric.exponent.decimal.go", "patterns": [ { "match": "(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])", "name": "punctuation.separator.constant.numeric.go" } ] } }, "match": "(?:(?:(?:(?:(?:\\G(?=[0-9.])(?!0[xXbBoO])([0-9](?:[0-9]|((?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)((?:(?<=[0-9])\\.|\\.(?=[0-9])))([0-9](?:[0-9]|((?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)?(?:(?<!_)([eE])(\\+?)(\\-?)((?:[0-9](?:[0-9]|(?:(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)))?(i(?!\\w))?(?:\\n|$)|\\G(?=[0-9.])(?!0[xXbBoO])([0-9](?:[0-9]|((?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)(?<!_)([eE])(\\+?)(\\-?)((?:[0-9](?:[0-9]|(?:(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*))(i(?!\\w))?(?:\\n|$))|\\G((?:(?<=[0-9])\\.|\\.(?=[0-9])))([0-9](?:[0-9]|((?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)(?:(?<!_)([eE])(\\+?)(\\-?)((?:[0-9](?:[0-9]|(?:(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)))?(i(?!\\w))?(?:\\n|$))|(\\G0[xX])_?([0-9a-fA-F](?:[0-9a-fA-F]|((?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)((?:(?<=[0-9a-fA-F])\\.|\\.(?=[0-9a-fA-F])))([0-9a-fA-F](?:[0-9a-fA-F]|((?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)?(?<!_)([pP])(\\+?)(\\-?)((?:[0-9](?:[0-9]|(?:(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*))(i(?!\\w))?(?:\\n|$))|(\\G0[xX])_?([0-9a-fA-F](?:[0-9a-fA-F]|((?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)(?<!_)([pP])(\\+?)(\\-?)((?:[0-9](?:[0-9]|(?:(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*))(i(?!\\w))?(?:\\n|$))|(\\G0[xX])((?:(?<=[0-9a-fA-F])\\.|\\.(?=[0-9a-fA-F])))([0-9a-fA-F](?:[0-9a-fA-F