UNPKG

tm-grammars

Version:
1,923 lines (1,922 loc) 108 kB
{ "displayName": "Python", "name": "python", "patterns": [ { "include": "#statement" }, { "include": "#expression" } ], "repository": { "annotated-parameter": { "begin": "\\b([_[:alpha:]]\\w*)\\s*(:)", "beginCaptures": { "1": { "name": "variable.parameter.function.language.python" }, "2": { "name": "punctuation.separator.annotation.python" } }, "end": "(,)|(?=\\))", "endCaptures": { "1": { "name": "punctuation.separator.parameters.python" } }, "patterns": [ { "include": "#expression" }, { "match": "=(?!=)", "name": "keyword.operator.assignment.python" } ] }, "assignment-operator": { "match": "<<=|>>=|//=|\\*\\*=|\\+=|-=|/=|@=|\\*=|%=|~=|\\^=|&=|\\|=|=(?!=)", "name": "keyword.operator.assignment.python" }, "backticks": { "begin": "`", "end": "`|(?<!\\\\)(\\n)", "name": "invalid.deprecated.backtick.python", "patterns": [ { "include": "#expression" } ] }, "builtin-callables": { "patterns": [ { "include": "#illegal-names" }, { "include": "#illegal-object-name" }, { "include": "#builtin-exceptions" }, { "include": "#builtin-functions" }, { "include": "#builtin-types" } ] }, "builtin-exceptions": { "match": "(?<!\\.)\\b((Arithmetic|Assertion|Attribute|Buffer|BlockingIO|BrokenPipe|ChildProcess|(Connection(Aborted|Refused|Reset)?)|EOF|Environment|FileExists|FileNotFound|FloatingPoint|IO|Import|Indentation|Index|Interrupted|IsADirectory|NotADirectory|Permission|ProcessLookup|Timeout|Key|Lookup|Memory|Name|NotImplemented|OS|Overflow|Reference|Runtime|Recursion|Syntax|System|Tab|Type|UnboundLocal|Unicode(Encode|Decode|Translate)?|Value|Windows|ZeroDivision|ModuleNotFound)Error|((Pending)?Deprecation|Runtime|Syntax|User|Future|Import|Unicode|Bytes|Resource)?Warning|SystemExit|Stop(Async)?Iteration|KeyboardInterrupt|GeneratorExit|(Base)?Exception)\\b", "name": "support.type.exception.python" }, "builtin-functions": { "patterns": [ { "match": "(?<!\\.)\\b(__import__|abs|aiter|all|any|anext|ascii|bin|breakpoint|callable|chr|compile|copyright|credits|delattr|dir|divmod|enumerate|eval|exec|exit|filter|format|getattr|globals|hasattr|hash|help|hex|id|input|isinstance|issubclass|iter|len|license|locals|map|max|memoryview|min|next|oct|open|ord|pow|print|quit|range|reload|repr|reversed|round|setattr|sorted|sum|vars|zip)\\b", "name": "support.function.builtin.python" }, { "match": "(?<!\\.)\\b(file|reduce|intern|raw_input|unicode|cmp|basestring|execfile|long|xrange)\\b", "name": "variable.legacy.builtin.python" } ] }, "builtin-possible-callables": { "patterns": [ { "include": "#builtin-callables" }, { "include": "#magic-names" } ] }, "builtin-types": { "match": "(?<!\\.)\\b(bool|bytearray|bytes|classmethod|complex|dict|float|frozenset|int|list|object|property|set|slice|staticmethod|str|tuple|type|super)\\b", "name": "support.type.python" }, "call-wrapper-inheritance": { "begin": "\\b(?=([_[:alpha:]]\\w*)\\s*(\\())", "end": "(\\))", "endCaptures": { "1": { "name": "punctuation.definition.arguments.end.python" } }, "name": "meta.function-call.python", "patterns": [ { "include": "#inheritance-name" }, { "include": "#function-arguments" } ] }, "class-declaration": { "patterns": [ { "begin": "\\s*(class)\\s+(?=[_[:alpha:]]\\w*\\s*([(:]))", "beginCaptures": { "1": { "name": "storage.type.class.python" } }, "end": "(:)", "endCaptures": { "1": { "name": "punctuation.section.class.begin.python" } }, "name": "meta.class.python", "patterns": [ { "include": "#class-name" }, { "include": "#class-inheritance" } ] } ] }, "class-inheritance": { "begin": "(\\()", "beginCaptures": { "1": { "name": "punctuation.definition.inheritance.begin.python" } }, "end": "(\\))", "endCaptures": { "1": { "name": "punctuation.definition.inheritance.end.python" } }, "name": "meta.class.inheritance.python", "patterns": [ { "match": "(\\*\\*?)", "name": "keyword.operator.unpacking.arguments.python" }, { "match": ",", "name": "punctuation.separator.inheritance.python" }, { "match": "=(?!=)", "name": "keyword.operator.assignment.python" }, { "match": "\\bmetaclass\\b", "name": "support.type.metaclass.python" }, { "include": "#illegal-names" }, { "include": "#class-kwarg" }, { "include": "#call-wrapper-inheritance" }, { "include": "#expression-base" }, { "include": "#member-access-class" }, { "include": "#inheritance-identifier" } ] }, "class-kwarg": { "captures": { "1": { "name": "entity.other.inherited-class.python variable.parameter.class.python" }, "2": { "name": "keyword.operator.assignment.python" } }, "match": "\\b([_[:alpha:]]\\w*)\\s*(=)(?!=)" }, "class-name": { "patterns": [ { "include": "#illegal-object-name" }, { "include": "#builtin-possible-callables" }, { "match": "\\b([_[:alpha:]]\\w*)\\b", "name": "entity.name.type.class.python" } ] }, "codetags": { "captures": { "1": { "name": "keyword.codetag.notation.python" } }, "match": "\\b(NOTE|XXX|HACK|FIXME|BUG|TODO)\\b" }, "comments": { "patterns": [ { "begin": "#\\s*(type:)\\s*+(?!$|#)", "beginCaptures": { "0": { "name": "meta.typehint.comment.python" }, "1": { "name": "comment.typehint.directive.notation.python" } }, "contentName": "meta.typehint.comment.python", "end": "$|(?=#)", "name": "comment.line.number-sign.python", "patterns": [ { "match": "\\Gignore(?=\\s*(?:$|#))", "name": "comment.typehint.ignore.notation.python" }, { "match": "(?<!\\.)\\b(bool|bytes|float|int|object|str|List|Dict|Iterable|Sequence|Set|FrozenSet|Callable|Union|Tuple|Any|None)\\b", "name": "comment.typehint.type.notation.python" }, { "match": "([]()*,.=\\[]|(->))", "name": "comment.typehint.punctuation.notation.python" }, { "match": "([_[:alpha:]]\\w*)", "name": "comment.typehint.variable.notation.python" } ] }, { "include": "#comments-base" } ] }, "comments-base": { "begin": "(#)", "beginCaptures": { "1": { "name": "punctuation.definition.comment.python" } }, "end": "$()", "name": "comment.line.number-sign.python", "patterns": [ { "include": "#codetags" } ] }, "comments-string-double-three": { "begin": "(#)", "beginCaptures": { "1": { "name": "punctuation.definition.comment.python" } }, "end": "($|(?=\"\"\"))", "name": "comment.line.number-sign.python", "patterns": [ { "include": "#codetags" } ] }, "comments-string-single-three": { "begin": "(#)", "beginCaptures": { "1": { "name": "punctuation.definition.comment.python" } }, "end": "($|(?='''))", "name": "comment.line.number-sign.python", "patterns": [ { "include": "#codetags" } ] }, "curly-braces": { "begin": "\\{", "beginCaptures": { "0": { "name": "punctuation.definition.dict.begin.python" } }, "end": "}", "endCaptures": { "0": { "name": "punctuation.definition.dict.end.python" } }, "patterns": [ { "match": ":", "name": "punctuation.separator.dict.python" }, { "include": "#expression" } ] }, "decorator": { "begin": "^\\s*((@))\\s*(?=[_[:alpha:]]\\w*)", "beginCaptures": { "1": { "name": "entity.name.function.decorator.python" }, "2": { "name": "punctuation.definition.decorator.python" } }, "end": "(\\))(.*?)(?=\\s*(?:#|$))|(?=[\\n#])", "endCaptures": { "1": { "name": "punctuation.definition.arguments.end.python" }, "2": { "name": "invalid.illegal.decorator.python" } }, "name": "meta.function.decorator.python", "patterns": [ { "include": "#decorator-name" }, { "include": "#function-arguments" } ] }, "decorator-name": { "patterns": [ { "include": "#builtin-callables" }, { "include": "#illegal-object-name" }, { "captures": { "2": { "name": "punctuation.separator.period.python" } }, "match": "([_[:alpha:]]\\w*)|(\\.)", "name": "entity.name.function.decorator.python" }, { "include": "#line-continuation" }, { "captures": { "1": { "name": "invalid.illegal.decorator.python" } }, "match": "\\s*([^#(.\\\\_[:alpha:]\\s].*?)(?=#|$)", "name": "invalid.illegal.decorator.python" } ] }, "docstring": { "patterns": [ { "begin": "('''|\"\"\")", "beginCaptures": { "1": { "name": "punctuation.definition.string.begin.python" } }, "end": "(\\1)", "endCaptures": { "1": { "name": "punctuation.definition.string.end.python" } }, "name": "string.quoted.docstring.multi.python", "patterns": [ { "include": "#docstring-prompt" }, { "include": "#codetags" }, { "include": "#docstring-guts-unicode" } ] }, { "begin": "([Rr])('''|\"\"\")", "beginCaptures": { "1": { "name": "storage.type.string.python" }, "2": { "name": "punctuation.definition.string.begin.python" } }, "end": "(\\2)", "endCaptures": { "1": { "name": "punctuation.definition.string.end.python" } }, "name": "string.quoted.docstring.raw.multi.python", "patterns": [ { "include": "#string-consume-escape" }, { "include": "#docstring-prompt" }, { "include": "#codetags" } ] }, { "begin": "([\"'])", "beginCaptures": { "1": { "name": "punctuation.definition.string.begin.python" } }, "end": "(\\1)|(\\n)", "endCaptures": { "1": { "name": "punctuation.definition.string.end.python" }, "2": { "name": "invalid.illegal.newline.python" } }, "name": "string.quoted.docstring.single.python", "patterns": [ { "include": "#codetags" }, { "include": "#docstring-guts-unicode" } ] }, { "begin": "([Rr])([\"'])", "beginCaptures": { "1": { "name": "storage.type.string.python" }, "2": { "name": "punctuation.definition.string.begin.python" } }, "end": "(\\2)|(\\n)", "endCaptures": { "1": { "name": "punctuation.definition.string.end.python" }, "2": { "name": "invalid.illegal.newline.python" } }, "name": "string.quoted.docstring.raw.single.python", "patterns": [ { "include": "#string-consume-escape" }, { "include": "#codetags" } ] } ] }, "docstring-guts-unicode": { "patterns": [ { "include": "#escape-sequence-unicode" }, { "include": "#escape-sequence" }, { "include": "#string-line-continuation" } ] }, "docstring-prompt": { "captures": { "1": { "name": "keyword.control.flow.python" } }, "match": "(?:^|\\G)\\s*((?:>>>|\\.\\.\\.)\\s)(?=\\s*\\S)" }, "docstring-statement": { "begin": "^(?=\\s*[Rr]?('''|\"\"\"|[\"']))", "end": "((?<=\\1)|^)(?!\\s*[Rr]?('''|\"\"\"|[\"']))", "patterns": [ { "include": "#docstring" } ] }, "double-one-regexp-character-set": { "patterns": [ { "match": "\\[\\^?](?!.*?])" }, { "begin": "(\\[)(\\^)?(])?", "beginCaptures": { "1": { "name": "punctuation.character.set.begin.regexp constant.other.set.regexp" }, "2": { "name": "keyword.operator.negation.regexp" }, "3": { "name": "constant.character.set.regexp" } }, "end": "(]|(?=\"))|((?=(?<!\\\\)\\n))", "endCaptures": { "1": { "name": "punctuation.character.set.end.regexp constant.other.set.regexp" }, "2": { "name": "invalid.illegal.newline.python" } }, "name": "meta.character.set.regexp", "patterns": [ { "include": "#regexp-charecter-set-escapes" }, { "match": "\\N", "name": "constant.character.set.regexp" } ] } ] }, "double-one-regexp-comments": { "begin": "\\(\\?#", "beginCaptures": { "0": { "name": "punctuation.comment.begin.regexp" } }, "end": "(\\)|(?=\"))|((?=(?<!\\\\)\\n))", "endCaptures": { "1": { "name": "punctuation.comment.end.regexp" }, "2": { "name": "invalid.illegal.newline.python" } }, "name": "comment.regexp", "patterns": [ { "include": "#codetags" } ] }, "double-one-regexp-conditional": { "begin": "(\\()\\?\\((\\w+(?:\\s+\\p{alnum}+)?|\\d+)\\)", "beginCaptures": { "0": { "name": "keyword.operator.conditional.regexp" }, "1": { "name": "punctuation.parenthesis.conditional.begin.regexp" } }, "end": "(\\)|(?=\"))|((?=(?<!\\\\)\\n))", "endCaptures": { "1": { "name": "keyword.operator.conditional.negative.regexp punctuation.parenthesis.conditional.end.regexp" }, "2": { "name": "invalid.illegal.newline.python" } }, "patterns": [ { "include": "#double-one-regexp-expression" } ] }, "double-one-regexp-expression": { "patterns": [ { "include": "#regexp-base-expression" }, { "include": "#double-one-regexp-character-set" }, { "include": "#double-one-regexp-comments" }, { "include": "#regexp-flags" }, { "include": "#double-one-regexp-named-group" }, { "include": "#regexp-backreference" }, { "include": "#double-one-regexp-lookahead" }, { "include": "#double-one-regexp-lookahead-negative" }, { "include": "#double-one-regexp-lookbehind" }, { "include": "#double-one-regexp-lookbehind-negative" }, { "include": "#double-one-regexp-conditional" }, { "include": "#double-one-regexp-parentheses-non-capturing" }, { "include": "#double-one-regexp-parentheses" } ] }, "double-one-regexp-lookahead": { "begin": "(\\()\\?=", "beginCaptures": { "0": { "name": "keyword.operator.lookahead.regexp" }, "1": { "name": "punctuation.parenthesis.lookahead.begin.regexp" } }, "end": "(\\)|(?=\"))|((?=(?<!\\\\)\\n))", "endCaptures": { "1": { "name": "keyword.operator.lookahead.regexp punctuation.parenthesis.lookahead.end.regexp" }, "2": { "name": "invalid.illegal.newline.python" } }, "patterns": [ { "include": "#double-one-regexp-expression" } ] }, "double-one-regexp-lookahead-negative": { "begin": "(\\()\\?!", "beginCaptures": { "0": { "name": "keyword.operator.lookahead.negative.regexp" }, "1": { "name": "punctuation.parenthesis.lookahead.begin.regexp" } }, "end": "(\\)|(?=\"))|((?=(?<!\\\\)\\n))", "endCaptures": { "1": { "name": "keyword.operator.lookahead.negative.regexp punctuation.parenthesis.lookahead.end.regexp" }, "2": { "name": "invalid.illegal.newline.python" } }, "patterns": [ { "include": "#double-one-regexp-expression" } ] }, "double-one-regexp-lookbehind": { "begin": "(\\()\\?<=", "beginCaptures": { "0": { "name": "keyword.operator.lookbehind.regexp" }, "1": { "name": "punctuation.parenthesis.lookbehind.begin.regexp" } }, "end": "(\\)|(?=\"))|((?=(?<!\\\\)\\n))", "endCaptures": { "1": { "name": "keyword.operator.lookbehind.regexp punctuation.parenthesis.lookbehind.end.regexp" }, "2": { "name": "invalid.illegal.newline.python" } }, "patterns": [ { "include": "#double-one-regexp-expression" } ] }, "double-one-regexp-lookbehind-negative": { "begin": "(\\()\\?<!", "beginCaptures": { "0": { "name": "keyword.operator.lookbehind.negative.regexp" }, "1": { "name": "punctuation.parenthesis.lookbehind.begin.regexp" } }, "end": "(\\)|(?=\"))|((?=(?<!\\\\)\\n))", "endCaptures": { "1": { "name": "keyword.operator.lookbehind.negative.regexp punctuation.parenthesis.lookbehind.end.regexp" }, "2": { "name": "invalid.illegal.newline.python" } }, "patterns": [ { "include": "#double-one-regexp-expression" } ] }, "double-one-regexp-named-group": { "begin": "(\\()(\\?P<\\w+(?:\\s+\\p{alnum}+)?>)", "beginCaptures": { "1": { "name": "support.other.parenthesis.regexp punctuation.parenthesis.named.begin.regexp" }, "2": { "name": "entity.name.tag.named.group.regexp" } }, "end": "(\\)|(?=\"))|((?=(?<!\\\\)\\n))", "endCaptures": { "1": { "name": "support.other.parenthesis.regexp punctuation.parenthesis.named.end.regexp" }, "2": { "name": "invalid.illegal.newline.python" } }, "name": "meta.named.regexp", "patterns": [ { "include": "#double-one-regexp-expression" } ] }, "double-one-regexp-parentheses": { "begin": "\\(", "beginCaptures": { "0": { "name": "support.other.parenthesis.regexp punctuation.parenthesis.begin.regexp" } }, "end": "(\\)|(?=\"))|((?=(?<!\\\\)\\n))", "endCaptures": { "1": { "name": "support.other.parenthesis.regexp punctuation.parenthesis.end.regexp" }, "2": { "name": "invalid.illegal.newline.python" } }, "patterns": [ { "include": "#double-one-regexp-expression" } ] }, "double-one-regexp-parentheses-non-capturing": { "begin": "\\(\\?:", "beginCaptures": { "0": { "name": "support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.begin.regexp" } }, "end": "(\\)|(?=\"))|((?=(?<!\\\\)\\n))", "endCaptures": { "1": { "name": "support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.end.regexp" }, "2": { "name": "invalid.illegal.newline.python" } }, "patterns": [ { "include": "#double-one-regexp-expression" } ] }, "double-three-regexp-character-set": { "patterns": [ { "match": "\\[\\^?](?!.*?])" }, { "begin": "(\\[)(\\^)?(])?", "beginCaptures": { "1": { "name": "punctuation.character.set.begin.regexp constant.other.set.regexp" }, "2": { "name": "keyword.operator.negation.regexp" }, "3": { "name": "constant.character.set.regexp" } }, "end": "(]|(?=\"\"\"))", "endCaptures": { "1": { "name": "punctuation.character.set.end.regexp constant.other.set.regexp" }, "2": { "name": "invalid.illegal.newline.python" } }, "name": "meta.character.set.regexp", "patterns": [ { "include": "#regexp-charecter-set-escapes" }, { "match": "\\N", "name": "constant.character.set.regexp" } ] } ] }, "double-three-regexp-comments": { "begin": "\\(\\?#", "beginCaptures": { "0": { "name": "punctuation.comment.begin.regexp" } }, "end": "(\\)|(?=\"\"\"))", "endCaptures": { "1": { "name": "punctuation.comment.end.regexp" }, "2": { "name": "invalid.illegal.newline.python" } }, "name": "comment.regexp", "patterns": [ { "include": "#codetags" } ] }, "double-three-regexp-conditional": { "begin": "(\\()\\?\\((\\w+(?:\\s+\\p{alnum}+)?|\\d+)\\)", "beginCaptures": { "0": { "name": "keyword.operator.conditional.regexp" }, "1": { "name": "punctuation.parenthesis.conditional.begin.regexp" } }, "end": "(\\)|(?=\"\"\"))", "endCaptures": { "1": { "name": "keyword.operator.conditional.negative.regexp punctuation.parenthesis.conditional.end.regexp" }, "2": { "name": "invalid.illegal.newline.python" } }, "patterns": [ { "include": "#double-three-regexp-expression" }, { "include": "#comments-string-double-three" } ] }, "double-three-regexp-expression": { "patterns": [ { "include": "#regexp-base-expression" }, { "include": "#double-three-regexp-character-set" }, { "include": "#double-three-regexp-comments" }, { "include": "#regexp-flags" }, { "include": "#double-three-regexp-named-group" }, { "include": "#regexp-backreference" }, { "include": "#double-three-regexp-lookahead" }, { "include": "#double-three-regexp-lookahead-negative" }, { "include": "#double-three-regexp-lookbehind" }, { "include": "#double-three-regexp-lookbehind-negative" }, { "include": "#double-three-regexp-conditional" }, { "include": "#double-three-regexp-parentheses-non-capturing" }, { "include": "#double-three-regexp-parentheses" }, { "include": "#comments-string-double-three" } ] }, "double-three-regexp-lookahead": { "begin": "(\\()\\?=", "beginCaptures": { "0": { "name": "keyword.operator.lookahead.regexp" }, "1": { "name": "punctuation.parenthesis.lookahead.begin.regexp" } }, "end": "(\\)|(?=\"\"\"))", "endCaptures": { "1": { "name": "keyword.operator.lookahead.regexp punctuation.parenthesis.lookahead.end.regexp" }, "2": { "name": "invalid.illegal.newline.python" } }, "patterns": [ { "include": "#double-three-regexp-expression" }, { "include": "#comments-string-double-three" } ] }, "double-three-regexp-lookahead-negative": { "begin": "(\\()\\?!", "beginCaptures": { "0": { "name": "keyword.operator.lookahead.negative.regexp" }, "1": { "name": "punctuation.parenthesis.lookahead.begin.regexp" } }, "end": "(\\)|(?=\"\"\"))", "endCaptures": { "1": { "name": "keyword.operator.lookahead.negative.regexp punctuation.parenthesis.lookahead.end.regexp" }, "2": { "name": "invalid.illegal.newline.python" } }, "patterns": [ { "include": "#double-three-regexp-expression" }, { "include": "#comments-string-double-three" } ] }, "double-three-regexp-lookbehind": { "begin": "(\\()\\?<=", "beginCaptures": { "0": { "name": "keyword.operator.lookbehind.regexp" }, "1": { "name": "punctuation.parenthesis.lookbehind.begin.regexp" } }, "end": "(\\)|(?=\"\"\"))", "endCaptures": { "1": { "name": "keyword.operator.lookbehind.regexp punctuation.parenthesis.lookbehind.end.regexp" }, "2": { "name": "invalid.illegal.newline.python" } }, "patterns": [ { "include": "#double-three-regexp-expression" }, { "include": "#comments-string-double-three" } ] }, "double-three-regexp-lookbehind-negative": { "begin": "(\\()\\?<!", "beginCaptures": { "0": { "name": "keyword.operator.lookbehind.negative.regexp" }, "1": { "name": "punctuation.parenthesis.lookbehind.begin.regexp" } }, "end": "(\\)|(?=\"\"\"))", "endCaptures": { "1": { "name": "keyword.operator.lookbehind.negative.regexp punctuation.parenthesis.lookbehind.end.regexp" }, "2": { "name": "invalid.illegal.newline.python" } }, "patterns": [ { "include": "#double-three-regexp-expression" }, { "include": "#comments-string-double-three" } ] }, "double-three-regexp-named-group": { "begin": "(\\()(\\?P<\\w+(?:\\s+\\p{alnum}+)?>)", "beginCaptures": { "1": { "name": "support.other.parenthesis.regexp punctuation.parenthesis.named.begin.regexp" }, "2": { "name": "entity.name.tag.named.group.regexp" } }, "end": "(\\)|(?=\"\"\"))", "endCaptures": { "1": { "name": "support.other.parenthesis.regexp punctuation.parenthesis.named.end.regexp" }, "2": { "name": "invalid.illegal.newline.python" } }, "name": "meta.named.regexp", "patterns": [ { "include": "#double-three-regexp-expression" }, { "include": "#comments-string-double-three" } ] }, "double-three-regexp-parentheses": { "begin": "\\(", "beginCaptures": { "0": { "name": "support.other.parenthesis.regexp punctuation.parenthesis.begin.regexp" } }, "end": "(\\)|(?=\"\"\"))", "endCaptures": { "1": { "name": "support.other.parenthesis.regexp punctuation.parenthesis.end.regexp" }, "2": { "name": "invalid.illegal.newline.python" } }, "patterns": [ { "include": "#double-three-regexp-expression" }, { "include": "#comments-string-double-three" } ] }, "double-three-regexp-parentheses-non-capturing": { "begin": "\\(\\?:", "beginCaptures": { "0": { "name": "support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.begin.regexp" } }, "end": "(\\)|(?=\"\"\"))", "endCaptures": { "1": { "name": "support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.end.regexp" }, "2": { "name": "invalid.illegal.newline.python" } }, "patterns": [ { "include": "#double-three-regexp-expression" }, { "include": "#comments-string-double-three" } ] }, "ellipsis": { "match": "\\.\\.\\.", "name": "constant.other.ellipsis.python" }, "escape-sequence": { "match": "\\\\(x\\h{2}|[0-7]{1,3}|[\"'\\\\abfnrtv])", "name": "constant.character.escape.python" }, "escape-sequence-unicode": { "patterns": [ { "match": "\\\\(u\\h{4}|U\\h{8}|N\\{[\\w\\s]+?})", "name": "constant.character.escape.python" } ] }, "expression": { "patterns": [ { "include": "#expression-base" }, { "include": "#member-access" }, { "match": "\\b([_[:alpha:]]\\w*)\\b" } ] }, "expression-bare": { "patterns": [ { "include": "#backticks" }, { "include": "#illegal-anno" }, { "include": "#literal" }, { "include": "#regexp" }, { "include": "#string" }, { "include": "#lambda" }, { "include": "#generator" }, { "include": "#illegal-operator" }, { "include": "#operator" }, { "include": "#curly-braces" }, { "include": "#item-access" }, { "include": "#list" }, { "include": "#odd-function-call" }, { "include": "#round-braces" }, { "include": "#function-call" }, { "include": "#builtin-functions" }, { "include": "#builtin-types" }, { "include": "#builtin-exceptions" }, { "include": "#magic-names" }, { "include": "#special-names" }, { "include": "#illegal-names" }, { "include": "#special-variables" }, { "include": "#ellipsis" }, { "include": "#punctuation" }, { "include": "#line-continuation" } ] }, "expression-base": { "patterns": [ { "include": "#comments" }, { "include": "#expression-bare" }, { "include": "#line-continuation" } ] }, "f-expression": { "patterns": [ { "include": "#expression-bare" }, { "include": "#member-access" }, { "match": "\\b([_[:alpha:]]\\w*)\\b" } ] }, "fregexp-base-expression": { "patterns": [ { "include": "#fregexp-quantifier" }, { "include": "#fstring-formatting-braces" }, { "match": "\\{.*?}" }, { "include": "#regexp-base-common" } ] }, "fregexp-quantifier": { "match": "\\{\\{(\\d+|\\d+,(\\d+)?|,\\d+)}}", "name": "keyword.operator.quantifier.regexp" }, "fstring-fnorm-quoted-multi-line": { "begin": "\\b([Ff])([BUbu])?('''|\"\"\")", "beginCaptures": { "1": { "name": "string.interpolated.python string.quoted.multi.python storage.type.string.python" }, "2": { "name": "invalid.illegal.prefix.python" }, "3": { "name": "punctuation.definition.string.begin.python string.interpolated.python string.quoted.multi.python" } }, "end": "(\\3)", "endCaptures": { "1": { "name": "punctuation.definition.string.end.python string.interpolated.python string.quoted.multi.python" }, "2": { "name": "invalid.illegal.newline.python" } }, "name": "meta.fstring.python", "patterns": [ { "include": "#fstring-guts" }, { "include": "#fstring-illegal-multi-brace" }, { "include": "#fstring-multi-brace" }, { "include": "#fstring-multi-core" } ] }, "fstring-fnorm-quoted-single-line": { "begin": "\\b([Ff])([BUbu])?(([\"']))", "beginCaptures": { "1": { "name": "string.interpolated.python string.quoted.single.python storage.type.string.python" }, "2": { "name": "invalid.illegal.prefix.python" }, "3": { "name": "punctuation.definition.string.begin.python string.interpolated.python string.quoted.single.python" } }, "end": "(\\3)|((?<!\\\\)\\n)", "endCaptures": { "1": { "name": "punctuation.definition.string.end.python string.interpolated.python string.quoted.single.python" }, "2": { "name": "invalid.illegal.newline.python" } }, "name": "meta.fstring.python", "patterns": [ { "include": "#fstring-guts" }, { "include": "#fstring-illegal-single-brace" }, { "include": "#fstring-single-brace" }, { "include": "#fstring-single-core" } ] }, "fstring-formatting": { "patterns": [ { "include": "#fstring-formatting-braces" }, { "include": "#fstring-formatting-singe-brace" } ] }, "fstring-formatting-braces": { "patterns": [ { "captures": { "1": { "name": "constant.character.format.placeholder.other.python" }, "2": { "name": "invalid.illegal.brace.python" }, "3": { "name": "constant.character.format.placeholder.other.python" } }, "match": "(\\{)(\\s*?)(})" }, { "match": "(\\{\\{|}})", "name": "constant.character.escape.python" } ] }, "fstring-formatting-singe-brace": { "match": "(}(?!}))", "name": "invalid.illegal.brace.python" }, "fstring-guts": { "patterns": [ { "include": "#escape-sequence-unicode" }, { "include": "#escape-sequence" }, { "include": "#string-line-continuation" }, { "include": "#fstring-formatting" } ] }, "fstring-illegal-multi-brace": { "patterns": [ { "include": "#impossible" } ] }, "fstring-illegal-single-brace": { "begin": "(\\{)(?=[^\\n}]*$\\n?)", "beginCaptures": { "1": { "name": "constant.character.format.placeholder.other.python" } }, "end": "(})|(?=\\n)", "endCaptures": { "1": { "name": "constant.character.format.placeholder.other.python" } }, "patterns": [ { "include": "#fstring-terminator-single" }, { "include": "#f-expression" } ] }, "fstring-multi-brace": { "begin": "(\\{)", "beginCaptures": { "1": { "name": "constant.character.format.placeholder.other.python" } }, "end": "(})", "endCaptures": { "1": { "name": "constant.character.format.placeholder.other.python" } }, "patterns": [ { "include": "#fstring-terminator-multi" }, { "include": "#f-expression" } ] }, "fstring-multi-core": { "match": "(.+?)($(\\n?)|(?=[\\\\{}]|'''|\"\"\"))|\\n", "name": "string.interpolated.python string.quoted.multi.python" }, "fstring-normf-quoted-multi-line": { "begin": "\\b([BUbu])([Ff])('''|\"\"\")", "beginCaptures": { "1": { "name": "invalid.illegal.prefix.python" }, "2": { "name": "string.interpolated.python string.quoted.multi.python storage.type.string.python" }, "3": { "name": "punctuation.definition.string.begin.python string.quoted.multi.python" } }, "end": "(\\3)", "endCaptures": { "1": { "name": "punctuation.definition.string.end.python string.interpolated.python string.quoted.multi.python" }, "2": { "name": "invalid.illegal.newline.python" } }, "name": "meta.fstring.python", "patterns": [ { "include": "#fstring-guts" }, { "include": "#fstring-illegal-multi-brace" }, { "include": "#fstring-multi-brace" }, { "include": "#fstring-multi-core" } ] }, "fstring-normf-quoted-single-line": { "begin": "\\b([BUbu])([Ff])(([\"']))", "beginCaptures": { "1": { "name": "invalid.illegal.prefix.python" }, "2": { "name": "string.interpolated.python string.quoted.single.python storage.type.string.python" }, "3": { "name": "punctuation.definition.string.begin.python string.quoted.single.python" } }, "end": "(\\3)|((?<!\\\\)\\n)", "endCaptures": { "1": { "name": "punctuation.definition.string.end.python string.interpolated.python string.quoted.single.python" }, "2": { "name": "invalid.illegal.newline.python" } }, "name": "meta.fstring.python", "patterns": [ { "include": "#fstring-guts" }, { "include": "#fstring-illegal-single-brace" }, { "include": "#fstring-single-brace" }, { "include": "#fstring-single-core" } ] }, "fstring-raw-guts": { "patterns": [ { "include": "#string-consume-escape" }, { "include": "#fstring-formatting" } ] }, "fstring-raw-multi-core": { "match": "(.+?)($(\\n?)|(?=[\\\\{}]|'''|\"\"\"))|\\n", "name": "string.interpolated.python string.quoted.raw.multi.python" }, "fstring-raw-quoted-multi-line": { "begin": "\\b([Rr][Ff]|[Ff][Rr])('''|\"\"\")", "beginCaptures": { "1": { "name": "string.interpolated.python string.quoted.raw.multi.python storage.type.string.python" }, "2": { "name": "punctuation.definition.string.begin.python string.quoted.raw.multi.python" } }, "end": "(\\2)", "endCaptures": { "1": { "name": "punctuation.definition.string.end.python string.interpolated.python string.quoted.raw.multi.python" }, "2": { "name": "invalid.illegal.newline.python" } }, "name": "meta.fstring.python", "patterns": [ { "include": "#fstring-raw-guts" }, { "include": "#fstring-illegal-multi-brace" }, { "include": "#fstring-multi-brace" }, { "include": "#fstring-raw-multi-core" } ] }, "fstring-raw-quoted-single-line": { "begin": "\\b([Rr][Ff]|[Ff][Rr])(([\"']))", "beginCaptures": { "1": { "name": "string.interpolated.python string.quoted.raw.single.python storage.type.string.python" }, "2": { "name": "punctuation.definition.string.begin.python string.quoted.raw.single.python" } }, "end": "(\\2)|((?<!\\\\)\\n)", "endCaptures": { "1": { "name": "punctuation.definition.string.end.python string.interpolated.python string.quoted.raw.single.python" }, "2": { "name": "invalid.illegal.newline.python" } }, "name": "meta.fstring.python", "patterns": [ { "include": "#fstring-raw-guts" }, { "include": "#fstring-illegal-single-brace" }, { "include": "#fstring-single-brace" }, { "include": "#fstring-raw-single-core" } ] }, "fstring-raw-single-core": { "match": "(.+?)($(\\n?)|(?=[\\\\{}]|([\"'])|((?<!\\\\)\\n)))|\\n", "name": "string.interpolated.python string.quoted.raw.single.python" }, "fstring-single-brace": { "begin": "(\\{)", "beginCaptures": { "1": { "name": "constant.character.format.placeholder.other.python" } }, "end": "(})|(?=\\n)", "endCaptures": { "1": { "name": "constant.character.format.placeholder.other.python" } }, "patterns": [ { "include": "#fstring-terminator-single" }, { "include": "#f-expression" } ] }, "fstring-single-core": { "match": "(.+?)($(\\n?)|(?=[\\\\{}]|([\"'])|((?<!\\\\)\\n)))|\\n", "name": "string.interpolated.python string.quoted.single.python" }, "fstring-terminator-multi": { "patterns": [ { "match": "(=(![ars])?)(?=})", "name": "storage.type.format.python" }, { "match": "(=?![ars])(?=})", "name": "storage.type.format.python" }, { "captures": { "1": { "name": "storage.type.format.python" }, "2": { "name": "storage.type.format.python" } }, "match": "(=?(?:![ars])?)(:\\w?[<=>^]?[- +]?#?\\d*,?(\\.\\d+)?[%EFGXb-gnosx]?)(?=})" }, { "include": "#fstring-terminator-multi-tail" } ] }, "fstring-terminator-multi-tail": { "begin": "(=?(?:![ars])?)(:)(?=.*?\\{)", "beginCaptures": { "1": { "name": "storage.type.format.python" }, "2": { "name": "storage.type.format.python" } }, "end": "(?=})", "patterns": [ { "include": "#fstring-illegal-multi-brace" }, { "include": "#fstring-multi-brace" }, { "match": "([%EFGXb-gnosx])(?=})", "name": "storage.type.format.python" }, { "match": "(\\.\\d+)", "name": "storage.type.format.python" }, { "match": "(,)", "name": "storage.type.format.python" }, { "match": "(\\d+)", "name": "storage.type.format.python" }, { "match": "(#)", "name": "storage.type.format.python" }, { "match": "([- +])", "name": "storage.type.format.python" }, { "match": "([<=>^])", "name": "storage.type.format.python" }, { "match": "(\\w)", "name": "storage.type.format.python" } ] }, "fstring-terminator-single": { "patterns": [ { "match": "(=(![ars])?)(?=})", "name": "storage.type.format.python" }, { "match": "(=?![ars])(?=})", "name": "storage.type.format.python" }, { "captures": { "1": { "name": "storage.type.format.python" }, "2": { "name": "storage.type.format.python" } }, "match": "(=?(?:![ars])?)(:\\w?[<=>^]?[- +]?#?\\d*,?(\\.\\d+)?[%EFGXb-gnosx]?)(?=})" }, { "include": "#fstring-terminator-single-tail" } ] }, "fstring-terminator-single-tail": { "begin": "(=?(?:![ars])?)(:)(?=.*?\\{)", "beginCaptures": { "1": { "name": "storage.type.format.python" }, "2": { "name": "storage.type.format.python" } }, "end": "(?=})|(?=\\n)", "patterns": [ { "include": "#fstring-illegal-single-brace" }, { "include": "#fstring-single-brace" }, { "match": "([%EFGXb-gnosx])(?=})", "name": "storage.type.format.python" }, { "match": "(\\.\\d+)", "name": "storage.type.format.python" }, { "match": "(,)", "name": "storage.type.format.python" }, { "match": "(\\d+)", "name": "storage.type.format.python" }, { "match": "(#)", "name": "storage.type.format.python" }, { "match": "([- +])", "name": "storage.type.format.python" }, { "match": "([<=>^])", "name": "storage.type.format.python" }, { "match": "(\\w)", "name": "storage.type.format.python" } ] }, "function-arguments": { "begin": "(\\()", "beginCaptures": { "1": { "name": "punctuation.definition.arguments.begin.python" } }, "contentName": "meta.function-call.arguments.python", "end": "(?=\\))(?!\\)\\s*\\()", "patterns": [ { "match": "(,)", "name": "punctuation.separator.arguments.python" }, { "captures": { "1": { "name": "keyword.operator.unpacking.arguments.python" } }, "match": "(?:(?<=[(,])|^)\\s*(\\*{1,2})" }, { "include": "#lambda-incomplete" }, { "include": "#illegal-names" }, { "captures": { "1": { "name": "variable.parameter.function-call.python" }, "2": { "name": "keyword.operator.assignment.python" } }, "match": "\\b([_[:alpha:]]\\w*)\\s*(=)(?!=)" }, { "match": "=(?!=)", "name": "keyword.operator.assignment.python" }, { "include": "#expression" }, { "captures": { "1": { "name": "punctuation.definition.arguments.end.python" }, "2": { "name": "punctuation.definition.arguments.begin.python" } }, "match": "\\s*(\\))\\s*(\\()" } ] }, "function-call": { "begin": "\\b(?=([_[:alpha:]]\\w*)\\s*(\\())", "end": "(\\))", "endCaptures": { "1": { "name": "punctuation.definition.arguments.end.python" } }, "name": "meta.function-call.python", "patterns": [