{"scopeName":"source.move","patterns":[{"include":"#address"},{"include":"#comments"},{"include":"#module"},{"include":"#script"},{"include":"#macros"}],"repository":{"address":{"name":"meta.address_block.move","begin":"\\b(address)\\b","end":"(?\u003c=})","patterns":[{"include":"#comments"},{"name":"meta.address.definition.move","begin":"(?\u003c=address)","end":"(?=[{])","patterns":[{"include":"#comments"},{"include":"#address_literal"},{"name":"entity.name.type.move","match":"\\b(\\w+)\\b"}]},{"include":"#module"}],"beginCaptures":{"1":{"name":"storage.modifier.type.address.keyword.move"}}},"address_literal":{"patterns":[{"name":"support.constant.diem.address.move","match":"\\b(0x[A-Fa-f0-9][A-Fa-f0-9]{,31})\\b"},{"name":"support.constant.dfinance.address.move","match":"\\b(wallet1\\w{38})"},{"name":"support.constant.named.address.move","match":"\\s([@]\\w+)\\b"}]},"as":{"name":"keyword.control.move","match":"\\b(as)\\b"},"as-import":{"name":"meta.import_as.move","match":"\\b(as)\\b"},"assert":{"name":"support.function.assert.move","match":"\\b(assert)\\b"},"block":{"name":"meta.block.move","begin":"{","end":"}","patterns":[{"include":"#comments"},{"include":"#as"},{"include":"#mut"},{"include":"#let"},{"include":"#types"},{"include":"#assert"},{"include":"#literals"},{"include":"#control"},{"include":"#move_copy"},{"include":"#resource_methods"},{"include":"#module_access"},{"include":"#fun_call"},{"include":"#block"}]},"block-comments":{"patterns":[{"name":"comment.block.documentation.move","begin":"/\\*[\\*!](?![\\*/])","end":"\\*/"},{"name":"comment.block.move","begin":"/\\*","end":"\\*/"}]},"comments":{"name":"meta.comments.move","patterns":[{"include":"#line-comments"},{"include":"#block-comments"}]},"const":{"name":"meta.const.move","begin":"\\b(const)\\b","end":";","patterns":[{"include":"#comments"},{"include":"#primitives"},{"include":"#vector"},{"include":"#literals"},{"name":"constant.other.move","match":"\\b([\\w_]+)\\b"}],"beginCaptures":{"1":{"name":"storage.modifier.const.move"}}},"control":{"name":"keyword.control.move","match":"\\b(return|while|loop|if|else|break|continue|abort)\\b"},"entry_fun":{"name":"meta.entry_fun.move","begin":"\\b(entry)\\b","end":"(?\u003c=})","patterns":[{"include":"#comments"},{"name":"storage.modifier.native.move","match":"\\b(native)\\b"},{"name":"storage.modifier.public.move","match":"\\b(public)\\b"},{"include":"#fun"}],"beginCaptures":{"1":{"name":"storage.modifier.entry.move"}}},"friend":{"name":"meta.friend.move","begin":"\\b(friend)\\b","end":";","patterns":[{"include":"#comments"},{"include":"#address_literal"},{"name":"entity.name.type.module.move","match":"\\b(\\w+)\\b"}],"beginCaptures":{"1":{"name":"storage.modifier.type.move"}}},"fun":{"patterns":[{"include":"#fun_signature"},{"include":"#fun_body"}]},"fun_body":{"name":"meta.fun_body.move","begin":"{","end":"}","patterns":[{"include":"#comments"},{"include":"#import"},{"include":"#as"},{"include":"#mut"},{"include":"#let"},{"include":"#types"},{"include":"#assert"},{"include":"#literals"},{"include":"#control"},{"include":"#move_copy"},{"include":"#resource_methods"},{"include":"#self_access"},{"include":"#module_access"},{"include":"#fun_call"},{"include":"#block"}]},"fun_call":{"name":"meta.fun_call.move","begin":"\\b(\\w+)\\s*(?:\u003c[\\w\\s,]+\u003e)?\\s*[(]","end":"[)]","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"}],"beginCaptures":{"1":{"name":"entity.name.function.call.move"}}},"fun_signature":{"name":"meta.fun_signature.move","begin":"\\b(fun)\\b","end":"(?=[;{])","patterns":[{"include":"#comments"},{"include":"#module_access"},{"include":"#types"},{"include":"#mut"},{"name":"meta.function_name.move","begin":"(?\u003c=fun)","end":"(?=[\u003c(])","patterns":[{"include":"#comments"},{"name":"entity.name.function.move","match":"\\b(\\w+)\\b"}]},{"include":"#type_param"},{"name":"meta.parentheses.move","begin":"[(]","end":"[)]","patterns":[{"include":"#comments"},{"include":"#self_access"},{"include":"#module_access"},{"include":"#types"},{"include":"#mut"}]},{"name":"storage.modifier","match":"\\b(acquires)\\b"}],"beginCaptures":{"1":{"name":"storage.modifier.fun.move"}}},"import":{"name":"meta.import.move","begin":"\\b(use)\\b","end":";","patterns":[{"include":"#comments"},{"include":"#address_literal"},{"include":"#as-import"},{"name":"entity.name.type.move","match":"\\b([A-Z]\\w*)\\b"},{"begin":"{","end":"}","patterns":[{"include":"#comments"},{"include":"#as-import"},{"name":"entity.name.type.move","match":"\\b([A-Z]\\w*)\\b"}]},{"name":"meta.entity.name.type.module.move","match":"\\b(\\w+)\\b"}],"beginCaptures":{"1":{"name":"storage.modifier.type.move"}}},"let":{"name":"keyword.control.move","match":"\\b(let)\\b"},"line-comments":{"name":"comment.line.double-slash.move","begin":"//","end":"$"},"literals":{"patterns":[{"name":"constant.numeric.hex.move","match":"0x[_a-fA-F0-9]+(?:[iu](?:8|16|32|64|size))?"},{"name":"constant.numeric.move","match":"(?\u003c!(?:\\w|(?:(?\u003c!\\.)\\.)))[0-9][_0-9]*(?:\\.(?!\\.)(?:[0-9][_0-9]*)?)?(?:[eE][+\\-]?[_0-9]+)?(?:[u](?:8|64|128|))?"},{"match":"\\b(?:h)(\"[a-fA-F0-9]+\")","captures":{"1":{"name":"constant.character.move"}}},{"name":"meta.ascii_literal.move","match":"\\b(\"(.*)\")","captures":{"1":{"name":"string.quoted.double.raw.byte.move"}}},{"name":"meta.hex_literal.move","match":"x\"([A-F0-9a-f]+)\"","captures":{"1":{"name":"constant.numeric.hex.move"}}},{"name":"constant.language.boolean.move","match":"\\b(?:true|false)\\b"},{"include":"#address_literal"}]},"macros":{"name":"support.constant.macro.move","match":"#\\[(?:[\\w0-9=_\\(\\)\\s\"]+)\\]"},"module":{"name":"meta.module.move","begin":"\\b(module)\\b","end":"(?\u003c=})","patterns":[{"include":"#comments"},{"begin":"(?\u003c=module)","end":"(?={)","patterns":[{"include":"#comments"},{"name":"constant.other.move","begin":"(?\u003c=module)","end":"(?=[(::){])"},{"name":"entity.name.type.move","begin":"(?\u003c=::)","end":"(?=[\\s{])"}]},{"name":"meta.module_scope.move","begin":"{","end":"}","patterns":[{"include":"#comments"},{"include":"#macros"},{"include":"#import"},{"include":"#friend"},{"include":"#const"},{"include":"#struct"},{"include":"#entry_fun"},{"include":"#native_fun"},{"include":"#public_fun"},{"include":"#fun"},{"include":"#spec"},{"include":"#block"}]}],"beginCaptures":{"1":{"name":"storage.modifier.type.move"}}},"module_access":{"name":"meta.module_access.move","match":"\\b(\\w+)::(\\w+)\\b","captures":{"1":{"name":"meta.entity.name.type.accessed.module.move"},"2":{"name":"entity.name.function.call.move"}}},"move_copy":{"name":"variable.language.move","match":"\\b(move|copy)\\b"},"mut":{"name":"storage.modifier.mut.move","match":"(?\u003c=\u0026)(mut)\\b"},"native_fun":{"name":"meta.native_fun.move","begin":"\\b(native)\\b","end":"(?\u003c=[;}])","patterns":[{"include":"#comments"},{"name":"storage.modifier.public.move","match":"\\b(public)\\b"},{"name":"storage.modifier.entry.move","match":"\\b(entry)\\b"},{"include":"#fun_signature"}],"beginCaptures":{"1":{"name":"storage.modifier.native.move"}}},"phantom":{"name":"keyword.control.phantom.move","match":"\\b(phantom)\\b"},"primitives":{"name":"support.type.primitives.move","match":"\\b(u8|u64|u128|address|bool|signer)\\b"},"public_fun":{"name":"meta.public_fun.move","begin":"\\b(public)\\b","end":"(?\u003c=[;}])","patterns":[{"include":"#comments"},{"name":"storage.modifier.native.move","match":"\\b(native)\\b"},{"name":"storage.modifier.entry.move","match":"\\b(entry)\\b"},{"begin":"\\(","end":"\\)","patterns":[{"include":"#comments"},{"name":"storage.modifier.public.script.move","match":"\\b(script|friend)\\b"}]},{"include":"#fun"}],"beginCaptures":{"1":{"name":"storage.modifier.public.move"}}},"resource_methods":{"name":"support.function.typed.move","match":"\\b(borrow_global|borrow_global_mut|exists|move_from|move_to_sender|move_to)\\b"},"script":{"name":"meta.script.move","begin":"\\b(script)\\b","end":"(?\u003c=})","patterns":[{"include":"#comments"},{"name":"meta.script_scope.move","begin":"{","end":"}","patterns":[{"include":"#const"},{"include":"#comments"},{"include":"#import"},{"include":"#fun"}]}],"beginCaptures":{"1":{"name":"storage.modifier.script.move"}}},"self_access":{"name":"meta.self_access.move","match":"\\b(Self)::(\\w+)\\b","captures":{"1":{"name":"variable.language.self.move"},"2":{"name":"entity.name.function.call.move"}}},"spec":{"name":"meta.spec.move","begin":"\\b(spec)\\b","end":"(?\u003c=[;}])","patterns":[{"name":"storage.modifier.spec.target.move","match":"\\b(module|schema|struct|fun)"},{"name":"storage.modifier.spec.define.move","match":"\\b(define)"},{"name":"entity.name.function.move","match":"\\b(\\w+)\\b"},{"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"}]}],"beginCaptures":{"1":{"name":"storage.modifier.spec.move"}}},"spec_block":{"name":"meta.spec_block.move","begin":"{","end":"}","patterns":[{"include":"#comments"},{"include":"#spec_block"},{"include":"#spec_types"},{"include":"#fun_call"},{"include":"#literals"},{"include":"#control"},{"include":"#types"},{"include":"#let"}]},"spec_define":{"name":"meta.spec_define.move","begin":"\\b(define)\\b","end":"(?=[;{])","patterns":[{"include":"#comments"},{"include":"#spec_types"},{"include":"#types"},{"begin":"(?\u003c=define)","end":"(?=[(])","patterns":[{"include":"#comments"},{"name":"entity.name.function.move","match":"\\b(\\w+)\\b"}]}],"beginCaptures":{"1":{"name":"keyword.control.move.spec"}}},"spec_keywords":{"name":"keyword.control.move.spec","match":"\\b(global|pack|unpack|pragma|native|include|ensures|requires|invariant|apply|aborts_if|modifies)\\b"},"spec_types":{"name":"support.type.vector.move","match":"\\b(range|num|vector|bool|u8|u64|u128|address)\\b"},"struct":{"name":"meta.struct.move","begin":"\\b(struct)\\b","end":"(?\u003c=})","patterns":[{"include":"#comments"},{"name":"meta.struct_def.move","begin":"(?\u003c=struct)","end":"(?={)","patterns":[{"include":"#comments"},{"name":"keyword.control.ability.has.move","match":"\\b(has)\\b"},{"name":"entity.name.type.ability.move","match":"\\b(store|key|drop|copy)\\b"},{"name":"entity.name.type.move","match":"\\b(\\w+)\\b"},{"include":"#type_param"}]},{"name":"meta.struct_body.move","begin":"{","end":"}","patterns":[{"include":"#comments"},{"include":"#self_access"},{"include":"#module_access"},{"include":"#types"}]}],"beginCaptures":{"1":{"name":"storage.modifier.type.move"}}},"type_param":{"name":"meta.generic_param.move","begin":"\u003c","end":"\u003e","patterns":[{"include":"#comments"},{"include":"#phantom"},{"include":"#module_access"},{"name":"entity.name.type.kind.move","match":"\\b(store|drop|key|copy)\\b"}]},"types":{"name":"meta.types.move","patterns":[{"include":"#primitives"},{"include":"#vector"},{"name":"entity.name.type","match":"\\b([A-Z][A-Za-z_]+)\\b"},{"name":"constant.other.move","match":"\\b([A-Z_]+)\\b"}]},"vector":{"name":"meta.vector.move","begin":"\\b(vector)\u003c","end":"\u003e","patterns":[{"include":"#primitives"},{"include":"#vector"}],"beginCaptures":{"1":{"name":"support.type.vector.move"}}}}}