{"name":"Pact","scopeName":"source.pact","patterns":[{"include":"#comment"},{"include":"#sexp"},{"include":"#reserved"},{"include":"#type"},{"include":"#string"},{"include":"#list"},{"include":"#object"},{"include":"#literal"},{"include":"#symbol"},{"include":"#metas"},{"include":"#let"}],"repository":{"arglist":{"begin":"(?\u003c=\\()","end":"(?=\\))","patterns":[{"name":"variable.name.arg.pact","match":"([\\w%#+\\-_\u0026\\$@\u003c\u003e=\\?\\*!\\|/]+)"},{"include":"#type"}]},"atom":{"patterns":[{"match":"([\\w%#+-_\u0026\\$@\u003c\u003e=\\?\\*!\\|/]+)"}]},"comment":{"name":"comment.line.semicolon.pact","match":"(;).*$\\n?","captures":{"1":{"name":"punctuation.definition.comment.pact"}}},"deflam":{"name":"meta.definition.global.pact","begin":"(?\u003c=\\()(defun|defpact|defcap)\\s+([\\w%#+\\-_\u0026\\$@\u003c\u003e=\\?\\*!\\|/]+)","end":"\\)","patterns":[{"include":"#arglist"},{"include":"#type"}],"beginCaptures":{"1":{"name":"keyword.reserved.pact"},"2":{"name":"entity.function.name.pact"}}},"defsimple":{"name":"meta.definition.global.pact","begin":"(?\u003c=\\()(defconst|defschema|deftable|module|interface)\\s+([\\w%#+-_\u0026\\$@\u003c\u003e=\\?\\*!\\|/]+)\\b","end":"(?=\\))","patterns":[{"include":"$self"}],"beginCaptures":{"1":{"name":"keyword.reserved.pact"},"2":{"name":"entity.function.name.pact"}}},"let":{"name":"meta.let.declaration.pact","begin":"\\((let\\*?)\\s","end":"\\)","patterns":[{"name":"meta.let.bindings.pact","begin":"\\(","end":"(?=\\))","patterns":[{"name":"meta.let.binding.pact","begin":"\\(([\\w%#+\\-_\u0026\\$@\u003c\u003e=\\?\\*!\\|/]+)\\b","end":"\\)","patterns":[{"include":"$self"}],"beginCaptures":{"1":{"name":"variable.let.pact"}}}]}],"beginCaptures":{"1":{"name":"keyword.let.pact"}}},"list":{"name":"meta.list.pact","begin":"(\\[)","end":"(\\](?=[\\}\\]\\)\\s]*(?:;|$)))|(\\])","patterns":[{"include":"$self"}],"beginCaptures":{"1":{"name":"punctuation.section.list.begin.pact"}},"endCaptures":{"1":{"name":"punctuation.section.list.end.trailing.pact"},"2":{"name":"punctuation.section.list.end.pact"}}},"literal":{"patterns":[{"name":"constant.language.boolean.pact","match":"(true|false)"},{"name":"constant.numeric.double.pact","match":"\\b(-?\\d+\\.\\d+)\\b"},{"name":"constant.numeric.integer.pact","match":"\\b(-?\\d+)\\b"},{"name":"constant.language.binder.pact","match":"(:=?)"}]},"metas":{"patterns":[{"name":"variable.language.metas.pact","match":"@\\w+"}]},"object":{"name":"meta.object.pact","begin":"(\\{)","end":"(\\}(?=[\\}\\]\\)\\s]*(?:;|$)))|(\\})","patterns":[{"begin":"(:=)","end":"([\\w%#+\\-_\u0026\\$@\u003c\u003e=\\?\\*!\\|/]+)","beginCaptures":{"1":{"name":"constant.binder.pact"}},"endCaptures":{"1":{"name":"variable.binder.pact"}}},{"include":"$self"}],"beginCaptures":{"1":{"name":"punctuation.section.object.begin.pact"}},"endCaptures":{"1":{"name":"punctuation.section.object.end.trailing.pact"},"2":{"name":"punctuation.section.object.end.pact"}}},"reserved":{"patterns":[{"name":"keyword.reserved.pact","match":"\\b(module|interface|list|let|let\\*|defun|defpact|defconst|defschema|deftable|defcap|step|use|step-with-rollback|invariants?|properties|property|defproperty|bless|implements)\\b"}]},"sexp":{"name":"meta.expression.pact","begin":"(\\()","end":"(\\))(\\n)|(\\)(?=[\\}\\]\\)\\s]*(?:;|$)))|(\\))","patterns":[{"include":"#deflam"},{"include":"#defsimple"},{"include":"#string"},{"include":"#reserved"},{"include":"#literal"},{"include":"#list"},{"include":"#object"},{"include":"#let"},{"include":"#sexp"},{"match":"(?\u003c=\\()(.+?)(?=\\s|\\))","patterns":[{"include":"$self"}],"captures":{"1":{"name":"entity.name.function.pact"}}},{"include":"$self"}],"beginCaptures":{"1":{"name":"punctuation.section.expression.begin.pact"}},"endCaptures":{"1":{"name":"punctuation.section.expression.end.trailing.pact"},"2":{"name":"meta.after-expression.pact"},"3":{"name":"punctuation.section.expression.end.trailing.pact"},"4":{"name":"punctuation.section.expression.end.pact"}}},"string":{"name":"string.quoted.double.pact","begin":"(?\u003c!\\\\)(\")","end":"(?\u003c!\\\\)(\")","beginCaptures":{"1":{"name":"punctuation.definition.string.begin.pact"}},"endCaptures":{"1":{"name":"punctuation.definition.string.end.pact"}}},"symbol":{"patterns":[{"name":"string.quoted.symbol.pact","begin":"'","end":"(?=\\s|[],:\"'.)])"}]},"type":{"patterns":[{"match":"(?:[:])(integer|decimal|time|bool|string|list|value|keyset|guard|(object|table)?\\{[\\w%#+\\-\\._\u0026\\$@\u003c\u003e=\\?\\*!\\|/]+\\}|object|table)","captures":{"1":{"name":"keyword.reserved.type.pact"}}}]}}}