UNPKG

tm-grammars

Version:
1,832 lines (1,831 loc) 114 kB
{ "displayName": "Vyper", "name": "vyper", "patterns": [ { "include": "#statement" }, { "include": "#expression" }, { "include": "#reserved-names-vyper" } ], "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" }, { "match": "(?<!\\.)\\b(abi_encode|abi_decode|_abi_encode|_abi_decode|floor|ceil|convert|slice|len|concat|sha256|method_id|keccak256|ecrecover|ecadd|ecmul|extract32|as_wei_value|raw_call|blockhash|blobhash|bitwise_and|bitwise_or|bitwise_xor|bitwise_not|uint256_addmod|uint256_mulmod|unsafe_add|unsafe_sub|unsafe_mul|unsafe_div|pow_mod256|uint2str|isqrt|sqrt|shift|create_minimal_proxy_to|create_forwarder_to|create_copy_of|create_from_blueprint|min|max|empty|abs|min_value|max_value|epsilon)\\b", "name": "support.function.builtin.vyper" }, { "match": "(?<!\\.)\\b(send|print|breakpoint|selfdestruct|raw_call|raw_log|raw_revert|create_minimal_proxy_to|create_forwarder_to|create_copy_of|create_from_blueprint)\\b", "name": "support.function.builtin.lowlevel.vyper" }, { "match": "(?<!\\.)\\b(struct|enum|flag|event|interface|HashMap|DynArray|Bytes|String)\\b", "name": "support.type.reference.vyper" }, { "match": "(?<!\\.)\\b(nonreentrant|internal|view|pure|private|immutable|constant)\\b", "name": "support.function.builtin.modifiers.safe.vyper" }, { "match": "(?<!\\.)\\b(deploy|nonpayable|payable|external|modifying)\\b", "name": "support.function.builtin.modifiers.unsafe.vyper" } ] }, "builtin-possible-callables": { "patterns": [ { "include": "#builtin-callables" }, { "include": "#magic-names" } ] }, "builtin-types": { "patterns": [ { "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" }, { "match": "(?<!\\.)\\b(uint248|HashMap|bytes22|int88|bytes24|bytes11|int24|bytes28|bytes19|uint136|decimal|uint40|uint168|uint120|int112|bytes4|uint192|String|int104|bytes29|int120|uint232|bytes8|bool|bytes14|int56|uint32|int232|uint48|bytes17|bytes12|uint24|int160|int72|int256|uint56|uint80|uint104|uint144|uint200|bytes20|uint160|bytes18|bytes16|uint8|int40|Bytes|uint72|bytes2|bytes23|int48|bytes6|bytes13|int192|bytes15|uint96|address|uint64|uint88|bytes7|int64|bytes32|bytes30|int176|int248|uint128|int8|int136|int216|bytes31|int144|bytes1|int168|bytes5|uint216|int200|bytes25|uint112|int128|bytes10|uint16|DynArray|int16|int32|int208|int184|bytes9|int224|bytes3|int80|uint152|bytes21|int96|uint256|uint176|uint240|bytes27|bytes26|int240|uint224|uint184|uint208|int152)\\b", "name": "support.type.basetype.vyper" }, { "match": "(?<!\\.)\\b(max_int128|min_int128|nonlocal|babbage|_default_|___init___|await|indexed|____init____|true|constant|with|from|nonpayable|finally|enum|zero_wei|del|for|____default____|if|none|or|global|def|not|class|twei|struct|mwei|empty_bytes32|nonreentrant|transient|false|assert|event|pass|finney|init|lovelace|min_decimal|shannon|public|external|internal|flagunreachable|_init_|return|in|and|raise|try|gwei|break|zero_address|pwei|range|wei|while|ada|yield|as|immutable|continue|async|lambda|default|is|szabo|kwei|import|max_uint256|elif|___default___|else|except|max_decimal|interface|payable|ether)\\b", "name": "support.type.keywords.vyper" }, { "match": "(?<!\\.)\\b(ZERO_ADDRESS|EMPTY_BYTES32|MAX_INT128|MIN_INT128|MAX_DECIMAL|MIN_DECIMAL|MIN_UINT256|MAX_UINT256|super)\\b", "name": "support.type.constant.vyper" }, { "match": "(?<!\\.)\\b(implements|uses|initializes|exports)\\b", "name": "entity.other.inherited-class.modules.vyper" } ] }, "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" }, { "include": "#special-variables-types" } ] }, "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" },