UNPKG

tm-grammars

Version:
1,447 lines (1,446 loc) 31.7 kB
{ "displayName": "Move", "name": "move", "patterns": [ { "include": "#address" }, { "include": "#comments" }, { "include": "#extend_module" }, { "include": "#module" }, { "include": "#script" }, { "include": "#annotation" }, { "include": "#entry" }, { "include": "#public-scope" }, { "include": "#public" }, { "include": "#native" }, { "include": "#import" }, { "include": "#friend" }, { "include": "#const" }, { "include": "#struct" }, { "include": "#has_ability" }, { "include": "#enum" }, { "include": "#macro" }, { "include": "#fun" }, { "include": "#spec" } ], "repository": { "=== DEPRECATED_BELOW ===": { }, "abilities": { "match": "\\b(store|key|drop|copy)\\b", "name": "support.type.ability.move" }, "address": { "begin": "\\b(address)\\b", "beginCaptures": { "1": { "name": "storage.modifier.type.address.keyword.move" } }, "end": "(?<=})", "name": "meta.address_block.move", "patterns": [ { "include": "#comments" }, { "begin": "(?<=address)", "end": "(?=\\{)", "name": "meta.address.definition.move", "patterns": [ { "include": "#comments" }, { "include": "#address_literal" }, { "match": "\\b(\\w+)\\b", "name": "entity.name.type.move" } ] }, { "include": "#module" } ] }, "annotation": { "begin": "#\\[", "end": "]", "name": "support.constant.annotation.move", "patterns": [ { "include": "#comments" }, { "match": "\\b(\\w+)\\s*(?==)", "name": "meta.annotation.name.move" }, { "begin": "=", "end": "(?=[],])", "name": "meta.annotation.value.move", "patterns": [ { "include": "#literals" } ] } ] }, "as": { "match": "\\b(as)\\b", "name": "keyword.control.as.move" }, "as-import": { "match": "\\b(as)\\b", "name": "meta.import.as.move" }, "block": { "begin": "\\{", "end": "}", "name": "meta.block.move", "patterns": [ { "include": "#expr" } ] }, "block-comments": { "patterns": [ { "begin": "/\\*[!*](?![*/])", "end": "\\*/", "name": "comment.block.documentation.move" }, { "begin": "/\\*", "end": "\\*/", "name": "comment.block.move" } ] }, "capitalized": { "match": "\\b([A-Z][0-9A-Z_a-z]*)\\b", "name": "entity.name.type.use.move" }, "comments": { "name": "meta.comments.move", "patterns": [ { "include": "#doc-comments" }, { "include": "#line-comments" }, { "include": "#block-comments" } ] }, "const": { "begin": "\\b(const)\\b", "beginCaptures": { "1": { "name": "storage.modifier.const.move" } }, "end": ";", "name": "meta.const.move", "patterns": [ { "include": "#comments" }, { "include": "#primitives" }, { "include": "#literals" }, { "include": "#types" }, { "match": "\\b([A-Z][0-9A-Z_]+)\\b", "name": "constant.other.move" }, { "include": "#error_const" } ] }, "control": { "match": "\\b(return|while|loop|if|else|break|continue|abort)\\b", "name": "keyword.control.move" }, "doc-comments": { "begin": "///", "end": "$", "name": "comment.block.documentation.move", "patterns": [ { "captures": { "1": { "name": "markup.underline.link.move" } }, "match": "`(\\w+)`" } ] }, "entry": { "match": "\\b(entry)\\b", "name": "storage.modifier.visibility.entry.move" }, "enum": { "begin": "\\b(enum)\\b", "beginCaptures": { "1": { "name": "keyword.control.enum.move" } }, "end": "(?<=})", "name": "meta.enum.move", "patterns": [ { "include": "#comments" }, { "include": "#escaped_identifier" }, { "include": "#type_param" }, { "match": "\\b[A-Z][0-9A-Z_a-z]*\\b", "name": "entity.name.type.enum.move" }, { "include": "#has" }, { "include": "#abilities" }, { "begin": "\\{", "end": "}", "name": "meta.enum.definition.move", "patterns": [ { "include": "#comments" }, { "match": "\\b([A-Z][0-9A-Z_a-z]*)\\b(?=\\s*\\()", "name": "entity.name.function.enum.move" }, { "match": "\\b([A-Z][0-9A-Z_a-z]*)\\b", "name": "entity.name.type.enum.move" }, { "begin": "\\(", "end": "\\)", "name": "meta.enum.tuple.move", "patterns": [ { "include": "#comments" }, { "include": "#expr_generic" }, { "include": "#capitalized" }, { "include": "#types" } ] }, { "begin": "\\{", "end": "}", "name": "meta.enum.struct.move", "patterns": [ { "include": "#comments" }, { "include": "#escaped_identifier" }, { "include": "#expr_generic" }, { "include": "#capitalized" }, { "include": "#types" } ] } ] } ] }, "error_const": { "match": "\\b(E[A-Z][0-9A-Z_a-z]*)\\b", "name": "variable.other.error.const.move" }, "escaped_identifier": { "begin": "`", "end": "`", "name": "variable.language.escaped.move" }, "expr": { "name": "meta.expression.move", "patterns": [ { "include": "#comments" }, { "include": "#escaped_identifier" }, { "include": "#expr_generic" }, { "include": "#packed_field" }, { "include": "#import" }, { "include": "#as" }, { "include": "#mut" }, { "include": "#let" }, { "include": "#types" }, { "include": "#literals" }, { "include": "#control" }, { "include": "#move_copy" }, { "include": "#resource_methods" }, { "include": "#self_access" }, { "include": "#module_access" }, { "include": "#label" }, { "include": "#macro_call" }, { "include": "#local_call" }, { "include": "#method_call" }, { "include": "#path_access" }, { "include": "#match_expression" }, { "match": "\\$(?=[a-z])", "name": "keyword.operator.macro.dollar.move" }, { "match": "(?<=\\$)[a-z][0-9A-Z_a-z]*", "name": "variable.other.meta.move" }, { "match": "\\b([A-Z][A-Z_]+)\\b", "name": "constant.other.move" }, { "include": "#error_const" }, { "match": "\\b([A-Z][0-9A-Z_a-z]*)\\b", "name": "entity.name.type.move" }, { "include": "#paren" }, { "include": "#block" } ] }, "expr_generic": { "begin": "<(?=([,0-9<>A-Z_a-z\\s]+>))", "end": ">", "name": "meta.expression.generic.type.move", "patterns": [ { "include": "#comments" }, { "include": "#types" }, { "include": "#capitalized" }, { "include": "#expr_generic" } ] }, "extend_module": { "begin": "\\b(extend)\\b", "beginCaptures": { "1": { "name": "storage.modifier.type.extend.move" } }, "end": "(?<=[;}])", "name": "meta.extend_module.move", "patterns": [ { "include": "#comments" }, { "include": "#module" } ] }, "friend": { "begin": "\\b(friend)\\b", "beginCaptures": { "1": { "name": "storage.modifier.type.move" } }, "end": ";", "name": "meta.friend.move", "patterns": [ { "include": "#comments" }, { "include": "#address_literal" }, { "match": "\\b([A-Za-z][0-9A-Z_a-z]*)\\b", "name": "entity.name.type.module.move" } ] }, "fun": { "patterns": [ { "include": "#fun_signature" }, { "include": "#block" } ] }, "fun_body": { "begin": "\\{", "end": "(?<=})", "name": "meta.fun_body.move", "patterns": [ { "include": "#expr" } ] }, "fun_call": { "begin": "\\b(\\w+)\\s*(?:<[,\\w\\s]+>)?\\s*\\(", "beginCaptures": { "1": { "name": "entity.name.function.call.move" } }, "end": "\\)", "name": "meta.fun_call.move", "patterns": [ { "include": "#comments" }, { "include": "#resource_methods" }, { "include": "#self_access" }, { "include": "#module_access" }, { "include": "#move_copy" }, { "include": "#literals" }, { "include": "#fun_call" }, { "include": "#block" }, { "include": "#mut" }, { "include": "#as" } ] }, "fun_signature": { "begin": "\\b(fun)\\b", "beginCaptures": { "1": { "name": "storage.modifier.fun.move" } }, "end": "(?=[;{])", "name": "meta.fun_signature.move", "patterns": [ { "include": "#comments" }, { "include": "#module_access" }, { "include": "#capitalized" }, { "include": "#types" }, { "include": "#mut" }, { "begin": "(?<=\\bfun)", "end": "(?=[(<])", "name": "meta.function_name.move", "patterns": [ { "include": "#comments" }, { "include": "#escaped_identifier" }, { "match": "\\b(\\w+)\\b", "name": "entity.name.function.move" } ] }, { "include": "#fun_type_param" }, { "begin": "\\(", "end": "\\)", "name": "meta.parentheses.move", "patterns": [ { "include": "#comments" }, { "include": "#self_access" }, { "include": "#expr_generic" }, { "include": "#escaped_identifier" }, { "include": "#module_access" }, { "include": "#capitalized" }, { "include": "#types" }, { "include": "#mut" } ] }, { "match": "\\b(acquires)\\b", "name": "storage.modifier" } ] }, "fun_type_param": { "begin": "<", "end": ">", "name": "meta.fun_generic_param.move", "patterns": [ { "include": "#comments" }, { "include": "#types" }, { "include": "#phantom" }, { "include": "#capitalized" }, { "include": "#module_access" }, { "include": "#abilities" } ] }, "has": { "match": "\\b(has)\\b", "name": "keyword.control.ability.has.move" }, "has_ability": { "begin": "(?<=[)}])\\s+(has)\\b", "beginCaptures": { "1": { "name": "storage.modifier.type.move" } }, "end": ";", "name": "meta.has.ability.move", "patterns": [ { "include": "#comments" }, { "include": "#abilities" } ] }, "ident": { "match": "\\b([A-Za-z][0-9A-Z_a-z]*)\\b", "name": "meta.identifier.move" }, "import": { "begin": "\\b(use)\\b", "beginCaptures": { "1": { "name": "storage.modifier.type.move" } }, "end": ";", "name": "meta.import.move", "patterns": [ { "include": "#comments" }, { "include": "#use_fun" }, { "include": "#address_literal" }, { "include": "#as-import" }, { "match": "\\b([A-Z]\\w*)\\b", "name": "entity.name.type.move" }, { "begin": "\\{", "end": "}", "patterns": [ { "include": "#comments" }, { "include": "#as-import" }, { "match": "\\b([A-Z]\\w*)\\b", "name": "entity.name.type.move" } ] }, { "match": "\\b(\\w+)\\b", "name": "meta.entity.name.type.module.move" } ] }, "inline": { "match": "\\b(inline)\\b", "name": "storage.modifier.visibility.inline.move" }, "label": { "match": "'[a-z][0-9_a-z]*", "name": "string.quoted.single.label.move" }, "let": { "match": "\\b(let)\\b", "name": "keyword.control.move" }, "line-comments": { "begin": "//", "end": "$", "name": "comment.line.double-slash.move" }, "literals": { "name": "meta.literal.move", "patterns": [ { "match": "@0x\\h+", "name": "support.constant.address.base16.move" }, { "match": "@[A-Za-z][0-9A-Z_a-z]*", "name": "support.constant.address.name.move" }, { "match": "0x[_\\h]+(?:u(?:8|16|32|64|128|256))?", "name": "constant.numeric.hex.move" }, { "match": "(?<!\\w|(?<!\\.)\\.)[0-9][0-9_]*(?:\\.(?!\\.)(?:[0-9][0-9_]*)?)?(?:[Ee][-+]?[0-9_]+)?(?:u(?:8|16|32|64|128|256))?", "name": "constant.numeric.move" }, { "begin": "\"", "end": "\"", "name": "meta.string.literal.move", "patterns": [ { "match": "\\\\x\\h\\h", "name": "constant.character.escape.hex.move" }, { "match": "\\\\.", "name": "constant.character.escape.move" }, { "match": ".", "name": "string.quoted.double.raw.move" } ] }, { "begin": "\\bb\"", "end": "\"", "name": "meta.vector.literal.ascii.move", "patterns": [ { "match": "\\\\x\\h\\h", "name": "constant.character.escape.hex.move" }, { "match": "\\\\.", "name": "constant.character.escape.move" }, { "match": ".", "name": "string.quoted.double.raw.move" } ] }, { "begin": "x\"", "end": "\"", "name": "meta.vector.literal.hex.move", "patterns": [ { "match": "\\h+", "name": "constant.character.move" } ] }, { "match": "\\b(?:true|false)\\b", "name": "constant.language.boolean.move" }, { "begin": "\\b(vector)\\b\\[", "captures": { "1": { "name": "support.type.vector.move" } }, "end": "]", "name": "meta.vector.literal.move", "patterns": [ { "include": "#expr" } ] } ] }, "local_call": { "match": "\\b([a-z][0-9_a-z]*)(?=[(<])", "name": "entity.name.function.call.local.move" }, "macro": { "begin": "\\b(macro)\\b", "beginCaptures": { "1": { "name": "keyword.control.macro.move" } }, "end": "(?<=})", "name": "meta.macro.move", "patterns": [ { "include": "#comments" }, { "include": "#fun" } ] }, "macro_call": { "captures": { "2": { "name": "support.function.macro.move" }, "3": { "name": "support.function.operator.macro.move" } }, "match": "(\\b|\\.)([a-z][0-9A-Z_a-z]*)(!)", "name": "meta.macro.call" }, "match_expression": { "begin": "\\b(match)\\b", "beginCaptures": { "1": { "name": "keyword.control.match.move" } }, "end": "(?<=})", "name": "meta.match.move", "patterns": [ { "include": "#comments" }, { "include": "#escaped_identifier" }, { "include": "#types" }, { "begin": "\\{", "end": "}", "name": "meta.match.block.move", "patterns": [ { "match": "\\b(=>)\\b", "name": "operator.match.move" }, { "include": "#expr" } ] }, { "include": "#expr" } ] }, "method_call": { "captures": { "1": { "name": "entity.name.function.call.path.move" } }, "match": "\\.([a-z][0-9_a-z]*)(?=[(<])", "name": "meta.path.call.move" }, "module": { "begin": "\\b(module)\\b", "beginCaptures": { "1": { "name": "storage.modifier.type.move" } }, "end": "(?<=[;}])", "name": "meta.module.move", "patterns": [ { "include": "#comments" }, { "begin": "(?<=\\b(module)\\b)", "end": "(?=[;{])", "patterns": [ { "include": "#comments" }, { "include": "#escaped_identifier" }, { "begin": "(?<=\\b(module))", "end": "(?=[():{])", "name": "constant.other.move", "patterns": [ { "include": "#comments" }, { "include": "#escaped_identifier" } ] }, { "begin": "(?<=::)", "end": "(?=[;{\\s])", "name": "entity.name.type.move", "patterns": [ { "include": "#comments" }, { "include": "#escaped_identifier" } ] } ] }, { "begin": "\\{", "end": "}", "name": "meta.module_scope.move", "patterns": [ { "include": "#comments" }, { "include": "#annotation" }, { "include": "#entry" }, { "include": "#public-scope" }, { "include": "#public" }, { "include": "#native" }, { "include": "#import" }, { "include": "#friend" }, { "include": "#const" }, { "include": "#struct" }, { "include": "#has_ability" }, { "include": "#enum" }, { "include": "#macro" }, { "include": "#fun" }, { "include": "#spec" } ] } ] }, "module_access": { "captures": { "1": { "name": "meta.entity.name.type.accessed.module.move" }, "2": { "name": "entity.name.function.call.move" } }, "match": "\\b(\\w+)::(\\w+)\\b", "name": "meta.module_access.move" }, "move_copy": { "match": "\\b(move|copy)\\b", "name": "variable.language.move" }, "mut": { "match": "\\b(mut)\\b", "name": "storage.modifier.mut.move" }, "native": { "match": "\\b(native)\\b", "name": "storage.modifier.visibility.native.move" }, "packed_field": { "match": "[a-z][0-9_a-z]+\\s*:\\s*(?=\\s)", "name": "meta.struct.field.move" }, "paren": { "begin": "\\(", "end": "\\)", "name": "meta.paren.move", "patterns": [ { "include": "#expr" } ] }, "path_access": { "match": "\\.[a-z][0-9_a-z]*\\b", "name": "meta.path.access.move" }, "phantom": { "match": "\\b(phantom)\\b", "name": "keyword.control.phantom.move" }, "primitives": { "match": "\\b(u8|u16|u32|u64|u128|u256|address|bool|signer)\\b", "name": "support.type.primitives.move" }, "public": { "match": "\\b(public)\\b", "name": "storage.modifier.visibility.public.move" }, "public-scope": { "begin": "(?<=\\b(public))\\s*\\(", "end": "\\)", "name": "meta.public.scoped.move", "patterns": [ { "include": "#comments" }, { "match": "\\b(friend|script|package)\\b", "name": "keyword.control.public.scope.move" } ] }, "resource_methods": { "match": "\\b(borrow_global|borrow_global_mut|exists|move_from|move_to_sender|move_to)\\b", "name": "support.function.typed.move" }, "script": { "begin": "\\b(script)\\b", "beginCaptures": { "1": { "name": "storage.modifier.script.move" } }, "end": "(?<=})", "name": "meta.script.move", "patterns": [ { "include": "#comments" }, { "begin": "\\{", "end": "}", "name": "meta.script_scope.move", "patterns": [ { "include": "#const" }, { "include": "#comments" }, { "include": "#import" }, { "include": "#fun" } ] } ] }, "self_access": { "captures": { "1": { "name": "variable.language.self.move" }, "2": { "name": "entity.name.function.call.move" } }, "match": "\\b(Self)::(\\w+)\\b", "name": "meta.self_access.move" }, "spec": { "begin": "\\b(spec)\\b", "beginCaptures": { "1": { "name": "storage.modifier.spec.move" } }, "end": "(?<=[;}])", "name": "meta.spec.move", "patterns": [ { "match": "\\b(module|schema|struct|fun)", "name": "storage.modifier.spec.target.move" }, { "match": "\\b(define)", "name": "storage.modifier.spec.define.move" }, { "match": "\\b(\\w+)\\b", "name": "entity.name.function.move" }, { "begin": "\\{", "end": "}", "patterns": [ { "include": "#comments" }, { "include": "#spec_block" }, { "include": "#spec_types" }, { "include": "#spec_define" }, { "include": "#spec_keywords" }, { "include": "#control" }, { "include": "#fun_call" }, { "include": "#literals" }, { "include": "#types" }, { "include": "#let" } ] } ] }, "spec_block": { "begin": "\\{", "end": "}", "name": "meta.spec_block.move", "patterns": [ { "include": "#comments" }, { "include": "#spec_block" }, { "include": "#spec_types" }, { "include": "#fun_call" }, { "include": "#literals" }, { "include": "#control" }, { "include": "#types" }, { "include": "#let" } ] }, "spec_define": { "begin": "\\b(define)\\b", "beginCaptures": { "1": { "name": "keyword.control.move.spec" } }, "end": "(?=[;{])", "name": "meta.spec_define.move", "patterns": [ { "include": "#comments" }, { "include": "#spec_types" }, { "include": "#types" }, { "begin": "(?<=\\bdefine)", "end": "(?=\\()", "patterns": [ { "include": "#comments" }, { "match": "\\b(\\w+)\\b", "name": "entity.name.function.move" } ] } ] }, "spec_keywords": { "match": "\\b(global|pack|unpack|pragma|native|include|ensures|requires|invariant|apply|aborts_if|modifies)\\b", "name": "keyword.control.move.spec" }, "spec_types": { "match": "\\b(range|num|vector|bool|u8|u16|u32|u64|u128|u256|address)\\b", "name": "support.type.vector.move" }, "struct": { "begin": "\\b(struct)\\b", "beginCaptures": { "1": { "name": "storage.modifier.type.move" } }, "end": "(?<=[);}])", "name": "meta.struct.move", "patterns": [ { "include": "#comments" }, { "include": "#escaped_identifier" }, { "include": "#has" }, { "include": "#abilities" }, { "match": "\\b[A-Z][0-9A-Z_a-z]*\\b", "name": "entity.name.type.struct.move" }, { "begin": "\\(", "end": "\\)", "name": "meta.struct.paren.move", "patterns": [ { "include": "#comments" }, { "include": "#capitalized" }, { "include": "#types" } ] }, { "include": "#type_param" }, { "begin": "\\(", "end": "(?<=\\))", "name": "meta.struct.paren.move", "patterns": [ { "include": "#comments" }, { "include": "#types" } ] }, { "begin": "\\{", "end": "}", "name": "meta.struct.body.move", "patterns": [ { "include": "#comments" }, { "include": "#self_access" }, { "include": "#escaped_identifier" }, { "include": "#module_access" }, { "include": "#expr_generic" }, { "include": "#capitalized" }, { "include": "#types" } ] }, { "include": "#has_ability" } ] }, "struct_pack": { "begin": "(?<=[0-9>A-Z_a-z])\\s*\\{", "end": "}", "name": "meta.struct.pack.move", "patterns": [ { "include": "#comments" } ] }, "type_param": { "begin": "<", "end": ">", "name": "meta.generic_param.move", "patterns": [ { "include": "#comments" }, { "include": "#phantom" }, { "include": "#capitalized" }, { "include": "#module_access" }, { "include": "#abilities" } ] }, "types": { "name": "meta.types.move", "patterns": [ { "include": "#primitives" }, { "include": "#vector" } ] }, "use_fun": { "begin": "\\b(fun)\\b", "beginCaptures": { "1": { "name": "storage.modifier.fun.move" } }, "end": "(?=;)", "name": "meta.import.fun.move", "patterns": [ { "include": "#comments" }, { "match": "\\b(as)\\b", "name": "keyword.control.as.move" }, { "match": "\\b(Self)\\b", "name": "variable.language.self.use.fun.move" }, { "match": "\\b(_______[a-z][0-9_a-z]+)\\b", "name": "entity.name.function.use.move" }, { "include": "#types" }, { "include": "#escaped_identifier" }, { "include": "#capitalized" } ] }, "vector": { "match": "\\b(vector)\\b", "name": "support.type.vector.move" } }, "scopeName": "source.move" }