{"name":"Ballerina","scopeName":"source.ballerina","patterns":[{"include":"#statements"}],"repository":{"access-modifier":{"patterns":[{"name":"storage.modifier.ballerina keyword.other.ballerina","match":"(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(public|private)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"}]},"annotationAttachment":{"patterns":[{"match":"(@)((?:[_$[:alpha:]][_$[:alnum:]]*))\\s*(:?)\\s*((?:[_$[:alpha:]][_$[:alnum:]]*)?)","captures":{"1":{"name":"punctuation.decorator.ballerina"},"2":{"name":"support.type.ballerina"},"3":{"name":"punctuation.decorator.ballerina"},"4":{"name":"support.type.ballerina"}}}]},"annotationDefinition":{"patterns":[{"begin":"\\bannotation\\b","end":";","patterns":[{"include":"#code"}],"beginCaptures":{"0":{"name":"keyword.ballerina"}}}]},"array-literal":{"name":"meta.array.literal.ballerina","begin":"\\s*(\\[)","end":"\\]","patterns":[{"include":"#expression"},{"include":"#punctuation-comma"}],"beginCaptures":{"1":{"name":"meta.brace.square.ballerina"}},"endCaptures":{"0":{"name":"meta.brace.square.ballerina"}}},"booleans":{"patterns":[{"name":"constant.language.boolean.ballerina","match":"\\b(true|false)\\b"}]},"butClause":{"patterns":[{"begin":"=\u003e","end":",|(?=\\})","patterns":[{"include":"#code"}],"beginCaptures":{"0":{"name":"meta.arrow.ballerina storage.type.function.arrow.ballerina"}}}]},"butExp":{"patterns":[{"begin":"\\bbut\\b","end":"\\}","patterns":[{"include":"#butExpBody"},{"include":"#comment"}],"beginCaptures":{"0":{"name":"keyword.ballerina"}},"endCaptures":{"0":{"name":"punctuation.definition.block.ballerina.documentation"}}}]},"butExpBody":{"patterns":[{"begin":"\\{","end":"(?=\\})","patterns":[{"include":"#parameter"},{"include":"#butClause"},{"include":"#comment"}],"beginCaptures":{"0":{"name":"punctuation.definition.block.ballerina.documentation"}},"endCaptures":{"0":{"name":"punctuation.definition.block.ballerina.documentation"}}}]},"call":{"patterns":[{"name":"entity.name.function.ballerina","match":"(?:\\')?([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=\\()"}]},"callableUnitBody":{"patterns":[{"begin":"\\{","end":"(?=\\})","patterns":[{"include":"#workerDef"},{"include":"#service-decl"},{"include":"#objectDec"},{"include":"#function-defn"},{"include":"#forkStatement"},{"include":"#code"}],"beginCaptures":{"0":{"name":"punctuation.definition.block.ballerina"}},"endCaptures":{"0":{"name":"punctuation.definition.block.ballerina"}}}]},"class-body":{"name":"meta.class.body.ballerina","begin":"\\{","end":"\\}","patterns":[{"include":"#comment"},{"include":"#mdDocumentation"},{"include":"#function-defn"},{"include":"#var-expr"},{"include":"#variable-initializer"},{"include":"#access-modifier"},{"include":"#keywords"},{"begin":"(?\u003c=:)\\s*","end":"(?=\\s|[;),}\\]:\\-\\+]|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|service|type|var)\\b))"},{"include":"#decl-block"},{"include":"#expression"},{"include":"#punctuation-comma"},{"include":"#punctuation-semicolon"}],"beginCaptures":{"0":{"name":"punctuation.definition.block.ballerina"}},"endCaptures":{"0":{"name":"punctuation.definition.block.ballerina"}}},"class-defn":{"name":"meta.class.ballerina","begin":"(\\s+)(class\\b)|^class\\b(?=\\s+|/[/*])","end":"(?\u003c=\\})","patterns":[{"include":"#keywords"},{"match":"[_$[:alpha:]][_$[:alnum:]]*","captures":{"0":{"name":"entity.name.type.class.ballerina"}}},{"include":"#class-body"}],"beginCaptures":{"0":{"name":"storage.type.class.ballerina keyword.other.ballerina"}}},"code":{"patterns":[{"include":"#booleans"},{"include":"#matchStatement"},{"include":"#butExp"},{"include":"#xml"},{"include":"#stringTemplate"},{"include":"#keywords"},{"include":"#strings"},{"include":"#comment"},{"include":"#mdDocumentation"},{"include":"#annotationAttachment"},{"include":"#numbers"},{"include":"#maps"},{"include":"#paranthesised"},{"include":"#paranthesisedBracket"}]},"comment":{"patterns":[{"name":"comment.ballerina","match":"\\/\\/.*"}]},"constrainType":{"patterns":[{"begin":"\u003c","end":"\u003e","patterns":[{"include":"#comment"},{"include":"#constrainType"},{"name":"storage.type.ballerina","match":"\\b([_$[:alpha:]][_$[:alnum:]]*)\\b"}],"beginCaptures":{"0":{"name":"punctuation.definition.parameters.begin.ballerina"}},"endCaptures":{"0":{"name":"punctuation.definition.parameters.end.ballerina"}}}]},"control-statement":{"patterns":[{"begin":"(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(return)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))","end":"(?=[;}]|$|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|service|type|var)\\b))","patterns":[{"include":"#expression"}],"beginCaptures":{"0":{"name":"keyword.control.flow.ballerina"}}},{"include":"#for-loop"},{"include":"#if-statement"},{"name":"keyword.control.conditional.ballerina","match":"(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(else|if)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"}]},"decl-block":{"name":"meta.block.ballerina","begin":"\\{","end":"(?=\\} external;)|(\\})","patterns":[{"include":"#statements"},{"include":"#mdDocumentation"}],"beginCaptures":{"0":{"name":"punctuation.definition.block.ballerina"}},"endCaptures":{"0":{"name":"punctuation.definition.block.ballerina"}}},"declaration":{"patterns":[{"include":"#import-declaration"},{"include":"#var-expr"},{"include":"#typeDefinition"},{"include":"#function-defn"},{"include":"#service-decl"},{"include":"#class-defn"},{"include":"#enum-decl"},{"include":"#source"},{"include":"#keywords"}]},"defaultValue":{"patterns":[{"begin":"[=:]","end":"(?=[,)])","patterns":[{"include":"#code"}],"beginCaptures":{"0":{"name":"keyword.operator.ballerina"}}}]},"defaultWithParentheses":{"patterns":[{"begin":"\\(","end":"\\)","beginCaptures":{"0":{"name":"punctuation.definition.block.ballerina"}},"endCaptures":{"0":{"name":"punctuation.definition.block.ballerina"}}}]},"documentationBody":{"patterns":[{"begin":"\\{","end":"(?=\\})","patterns":[{"match":"(P|R|T|F|V)({{)(.*)(}})","captures":{"1":{"name":"keyword.other.ballerina.documentation"},"2":{"name":"keyword.other.ballerina.documentation"},"3":{"name":"variable.parameter.ballerina.documentation"},"4":{"name":"keyword.other.ballerina.documentation"}}},{"name":"comment.block.code.ballerina.documentation","begin":"\\```","end":"\\```"},{"name":"comment.block.code.ballerina.documentation","begin":"\\``","end":"\\``"},{"name":"comment.block.code.ballerina.documentation","begin":"\\`","end":"\\`"},{"name":"comment.block.ballerina.documentation","match":"."}],"beginCaptures":{"0":{"name":"punctuation.definition.block.ballerina.documentation"}},"endCaptures":{"0":{"name":"punctuation.definition.block.ballerina.documentation"}}}]},"documentationDef":{"patterns":[{"begin":"\\b(?:documentation|deprecated)\\b","end":"\\}","patterns":[{"include":"#documentationBody"},{"include":"#comment"}],"beginCaptures":{"0":{"name":"keyword.ballerina"}},"endCaptures":{"0":{"name":"delimiter.curly"}}}]},"enum-decl":{"name":"meta.enum.declaration.ballerina","begin":"(?:\\b(const)\\s+)?\\b(enum)\\s+([_$[:alpha:]][_$[:alnum:]]*)","end":"(?\u003c=\\})","patterns":[{"include":"#comment"},{"include":"#mdDocumentation"},{"begin":"\\{","end":"\\}","patterns":[{"include":"#comment"},{"include":"#mdDocumentation"},{"begin":"([_$[:alpha:]][_$[:alnum:]]*)","end":"(?=,|\\}|$)","patterns":[{"include":"#comment"},{"include":"#variable-initializer"}],"beginCaptures":{"0":{"name":"variable.other.enummember.ballerina"}}},{"begin":"(?=((\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\])))","end":"(?=,|\\}|$)","patterns":[{"include":"#string"},{"include":"#array-literal"},{"include":"#comment"},{"include":"#variable-initializer"}]},{"include":"#punctuation-comma"}],"beginCaptures":{"0":{"name":"punctuation.definition.block.ballerina"}},"endCaptures":{"0":{"name":"punctuation.definition.block.ballerina"}}}],"beginCaptures":{"1":{"name":"storage.modifier.ballerina"},"2":{"name":"keyword.other.ballerina"},"3":{"name":"entity.name.type.enum.ballerina"}}},"errorDestructure":{"patterns":[{"begin":"error","end":"(?==\u003e)","patterns":[{"include":"#code"}],"beginCaptures":{"0":{"name":"storage.type.ballerina"}}}]},"expression":{"patterns":[{"include":"#keywords"},{"include":"#expressionWithoutIdentifiers"},{"include":"#identifiers"}]},"expression-operators":{"patterns":[{"name":"keyword.operator.assignment.compound.ballerina","match":"\\*=|(?\u003c!\\()/=|%=|\\+=|\\-="},{"name":"keyword.operator.assignment.compound.bitwise.ballerina","match":"\\\u0026=|\\^=|\u003c\u003c=|\u003e\u003e=|\u003e\u003e\u003e=|\\|="},{"name":"keyword.operator.bitwise.shift.ballerina","match":"\u003c\u003c|\u003e\u003e\u003e|\u003e\u003e"},{"name":"keyword.operator.comparison.ballerina","match":"===|!==|==|!="},{"name":"keyword.operator.relational.ballerina","match":"\u003c=|\u003e=|\u003c\u003e|\u003c|\u003e"},{"match":"(?\u003c=[_$[:alnum:]])(\\!)\\s*(?:(/=)|(?:(/)(?![/*])))","captures":{"1":{"name":"keyword.operator.logical.ballerina"},"2":{"name":"keyword.operator.assignment.compound.ballerina"},"3":{"name":"keyword.operator.arithmetic.ballerina"}}},{"name":"keyword.operator.logical.ballerina","match":"\\!|\u0026\u0026|\\|\\||\\?\\?"},{"name":"keyword.operator.bitwise.ballerina","match":"\\\u0026|~|\\^|\\|"},{"name":"keyword.operator.assignment.ballerina","match":"\\="},{"name":"keyword.operator.decrement.ballerina","match":"--"},{"name":"keyword.operator.increment.ballerina","match":"\\+\\+"},{"name":"keyword.operator.arithmetic.ballerina","match":"%|\\*|/|-|\\+"}]},"expressionWithoutIdentifiers":{"patterns":[{"include":"#xml"},{"include":"#string"},{"include":"#stringTemplate"},{"include":"#comment"},{"include":"#object-literal"},{"include":"#ternary-expression"},{"include":"#expression-operators"},{"include":"#literal"},{"include":"#paranthesised"}]},"for-loop":{"begin":"(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))foreach\\s*","end":"(?=\\{)","patterns":[{"name":"keyword.other.ballerina","match":"\\bin\\b"},{"include":"#identifiers"},{"include":"#comment"},{"include":"#var-expr"},{"include":"#expression"}],"beginCaptures":{"0":{"name":"keyword.control.loop.ballerina"},"1":{"name":"support.type.primitive.ballerina"}}},"forkBody":{"patterns":[{"begin":"\\{","end":"(?=\\})","patterns":[{"include":"#workerDef"}],"beginCaptures":{"0":{"name":"punctuation.definition.block.ballerina"}}}]},"forkStatement":{"patterns":[{"begin":"\\bfork\\b","end":"\\}","patterns":[{"include":"#forkBody"}],"beginCaptures":{"0":{"name":"keyword.control.ballerina"}},"endCaptures":{"0":{"name":"punctuation.definition.block.ballerina"}}}]},"function-body":{"patterns":[{"include":"#comment"},{"include":"#functionParameters"},{"include":"#decl-block"},{"name":"meta.block.ballerina","begin":"\\=\u003e","end":"(?=\\;)|(?=\\,)","patterns":[{"include":"#statements"},{"include":"#punctuation-comma"}],"beginCaptures":{"0":{"name":"meta.arrow.ballerina storage.type.function.arrow.ballerina"}}},{"name":"keyword.generator.asterisk.ballerina","match":"\\*"}]},"function-defn":{"name":"meta.function.ballerina","begin":"(?:(public|private)\\s+)?(function\\b)","end":"(?\u003c=\\;)|(?\u003c=\\})|(?\u003c=\\,)","patterns":[{"name":"keyword.ballerina","match":"\\bexternal\\b"},{"include":"#stringTemplate"},{"include":"#annotationAttachment"},{"include":"#functionReturns"},{"include":"#functionName"},{"include":"#functionParameters"},{"include":"#punctuation-semicolon"},{"include":"#function-body"}],"beginCaptures":{"1":{"name":"keyword.other.ballerina"},"2":{"name":"keyword.other.ballerina"}}},"function-parameters-body":{"patterns":[{"include":"#comment"},{"include":"#numbers"},{"include":"#string"},{"include":"#annotationAttachment"},{"include":"#recordLiteral"},{"include":"#keywords"},{"include":"#parameter-name"},{"include":"#array-literal"},{"include":"#variable-initializer"},{"include":"#identifiers"},{"name":"punctuation.separator.parameter.ballerina","match":"\\,"}]},"functionName":{"patterns":[{"name":"keyword.other.ballerina","match":"\\bfunction\\b"},{"include":"#type-primitive"},{"include":"#self-literal"},{"include":"#string"},{"match":"\\s+(\\b(self)|\\b(is|new|isolated|null|function|in)\\b|(string|int|boolean|float|byte|decimal|json|xml)\\b|\\b(readonly|error|map)\\b|([_$[:alpha:]][_$[:alnum:]]*))","captures":{"2":{"name":"variable.language.this.ballerina"},"3":{"name":"keyword.other.ballerina"},"4":{"name":"support.type.primitive.ballerina"},"5":{"name":"storage.type.ballerina"},"6":{"name":"meta.definition.function.ballerina entity.name.function.ballerina"}}}]},"functionParameters":{"name":"meta.parameters.ballerina","begin":"\\(|\\[","end":"\\)|\\]","patterns":[{"include":"#function-parameters-body"}],"beginCaptures":{"0":{"name":"punctuation.definition.parameters.begin.ballerina"}},"endCaptures":{"0":{"name":"punctuation.definition.parameters.end.ballerina"}}},"functionReturns":{"name":"meta.type.function.return.ballerina","begin":"\\s*(returns)\\s*","end":"(?==\u003e)|(\\=)|(?=\\{)|(\\))|(?=\\;)","patterns":[{"include":"#comment"},{"include":"#string"},{"include":"#numbers"},{"include":"#keywords"},{"include":"#type-primitive"},{"match":"\\s*\\b(var)(?=\\s+|\\[|\\?)","captures":{"1":{"name":"support.type.primitive.ballerina"}}},{"name":"keyword.operator.ballerina","match":"\\|"},{"name":"keyword.operator.optional.ballerina","match":"\\?"},{"include":"#type-annotation"},{"include":"#type-tuple"},{"include":"#keywords"},{"name":"variable.other.readwrite.ballerina","match":"[_$[:alpha:]][_$[:alnum:]]*"}],"beginCaptures":{"1":{"name":"keyword.other.ballerina"}},"endCaptures":{"1":{"name":"keyword.operator.ballerina"}}},"functionType":{"patterns":[{"begin":"\\bfunction\\b","end":"(?=\\,)|(?=\\|)|(?=\\:)|(?==\u003e)|(?=\\))|(?=\\])","patterns":[{"include":"#comment"},{"include":"#functionTypeParamList"},{"include":"#functionTypeReturns"}],"beginCaptures":{"0":{"name":"keyword.ballerina"}}}]},"functionTypeParamList":{"patterns":[{"begin":"\\(","end":"\\)","patterns":[{"name":"keyword","match":"public"},{"include":"#annotationAttachment"},{"include":"#recordLiteral"},{"include":"#record"},{"include":"#objectDec"},{"include":"#functionType"},{"include":"#constrainType"},{"include":"#parameterTuple"},{"include":"#functionTypeType"},{"include":"#comment"}],"beginCaptures":{"0":{"name":"delimiter.parenthesis"}},"endCaptures":{"0":{"name":"delimiter.parenthesis"}}}]},"functionTypeReturns":{"patterns":[{"begin":"\\breturns\\b","end":"(?=\\,)|(?:\\|)|(?=\\])|(?=\\))","patterns":[{"include":"#functionTypeReturnsParameter"},{"include":"#comment"}],"beginCaptures":{"0":{"name":"keyword"}}}]},"functionTypeReturnsParameter":{"patterns":[{"begin":"((?=record|object|function)|(?:[_$[:alpha:]][_$[:alnum:]]*))","end":"(?=\\,)|(?:\\|)|(?:\\:)|(?==\u003e)|(?=\\))|(?=\\])","patterns":[{"include":"#record"},{"include":"#objectDec"},{"include":"#functionType"},{"include":"#constrainType"},{"include":"#defaultValue"},{"include":"#comment"},{"include":"#parameterTuple"},{"name":"default.variable.parameter.ballerina","match":"[_$[:alpha:]][_$[:alnum:]]*"}],"beginCaptures":{"0":{"name":"storage.type.ballerina"}}}]},"functionTypeType":{"patterns":[{"begin":"[_$[:alpha:]][_$[:alnum:]]*","end":"(?=\\,)|(?:\\|)|(?=\\])|(?=\\))","beginCaptures":{"0":{"name":"storage.type.ballerina"}}}]},"identifiers":{"patterns":[{"match":"(?x)(?:(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*)?([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*=\\s*(\n ((\n (function\\s*[(\u003c*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=\u003e)\n )) |\n ((\n ((\u003c\\s*$)|((\u003c\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=\u003c\u003e]|=[^\u003c]|\\\u003c\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=\u003c\u003e]|=[^\u003c]|\\\u003c\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=\u003c\u003e]|=[^\u003c])*\\\u003e)*\\\u003e)*\u003e\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^\u003c\u003e\\(\\)\\{\\}]|\\\u003c([^\u003c\u003e]|\\\u003c([^\u003c\u003e]|\\\u003c[^\u003c\u003e]+\\\u003e)+\\\u003e)+\\\u003e|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^\u003c\u003e\\(\\)\\{\\}]|\\\u003c([^\u003c\u003e]|\\\u003c([^\u003c\u003e]|\\\u003c[^\u003c\u003e]+\\\u003e)+\\\u003e)+\\\u003e|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n # sure shot arrow functions even if =\u003e is on new line\n(\n (\u003c\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=\u003c\u003e]|=[^\u003c]|\\\u003c\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=\u003c\u003e]|=[^\u003c]|\\\u003c\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=\u003c\u003e]|=[^\u003c])*\\\u003e)*\\\u003e)*\u003e\\s*)?\n [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n\n# arrow function possible to detect only with =\u003e on same line\n(\n (\u003c\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=\u003c\u003e]|=[^\u003c]|\\\u003c\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=\u003c\u003e]|=[^\u003c]|\\\u003c\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=\u003c\u003e]|=[^\u003c])*\\\u003e)*\\\u003e)*\u003e\\s*)? # typeparameters\n \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\) # parameters\n (\\s*:\\s*([^\u003c\u003e\\(\\)\\{\\}]|\\\u003c([^\u003c\u003e]|\\\u003c([^\u003c\u003e]|\\\u003c[^\u003c\u003e]+\\\u003e)+\\\u003e)+\\\u003e|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type\n \\s*=\u003e # arrow operator\n)\n ))\n))","captures":{"1":{"name":"punctuation.accessor.ballerina"},"2":{"name":"punctuation.accessor.optional.ballerina"},"3":{"name":"entity.name.function.ballerina"}}},{"match":"(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*)\\s*(?=\\()","captures":{"1":{"name":"punctuation.accessor.ballerina"},"2":{"name":"punctuation.accessor.optional.ballerina"},"3":{"name":"entity.name.function.ballerina"}}},{"match":"(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*)","captures":{"1":{"name":"punctuation.accessor.ballerina"},"2":{"name":"punctuation.accessor.optional.ballerina"},"3":{"name":"variable.other.property.ballerina"}}},{"include":"#type-primitive"},{"include":"#self-literal"},{"name":"keyword.control.ballerina","match":"\\b(check|foreach|if|checkpanic)\\b"},{"include":"#call"},{"name":"support.type.primitive.ballerina","match":"\\b(var)\\b"},{"match":"([_$[:alpha:]][_$[:alnum:]]*)((\\.)([_$[:alpha:]][_$[:alnum:]]*)(\\()(\\)))?","captures":{"1":{"name":"variable.other.readwrite.ballerina"},"3":{"name":"punctuation.accessor.ballerina"},"4":{"name":"entity.name.function.ballerina"},"5":{"name":"punctuation.definition.parameters.begin.ballerina"},"6":{"name":"punctuation.definition.parameters.end.ballerina"}}},{"name":"variable.other.property.ballerina","match":"(\\')([_$[:alpha:]][_$[:alnum:]]*)"},{"include":"#type-annotation"}]},"if-statement":{"patterns":[{"begin":"(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(?=\\bif\\b\\s*(?!\\{))","end":"(?\u003c=\\})","patterns":[{"include":"#comment"},{"begin":"(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(if)\\s*(\\()?","end":"(\\))|(?=\\{)","patterns":[{"include":"#decl-block"},{"include":"#keywords"},{"include":"#identifiers"},{"include":"#type-primitive"},{"include":"#xml"},{"include":"#string"},{"include":"#stringTemplate"},{"include":"#comment"},{"include":"#ternary-expression"},{"include":"#expression-operators"},{"include":"#literal"},{"include":"#paranthesised"}],"beginCaptures":{"1":{"name":"keyword.control.conditional.ballerina"},"2":{"name":"meta.brace.round.ballerina"}},"endCaptures":{"1":{"name":"meta.brace.round.ballerina"}}},{"begin":"(?\u003c=\\))","end":"(?=\\{)","patterns":[{"include":"#literal"},{"include":"#keywords"}]},{"include":"#decl-block"}]}]},"import-clause":{"patterns":[{"include":"#comment"},{"match":"(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(?:(\\bdefault)|(\\*)|(\\b[_$[:alpha:]][_$[:alnum:]]*))","captures":{"1":{"name":"keyword.control.default.ballerina"},"3":{"name":"variable.other.readwrite.ballerina meta.import.module.ballerina"},"5":{"name":"keyword.control.default.ballerina"},"6":{"name":"variable.other.readwrite.alias.ballerina"}}},{"name":"variable.other.readwrite.alias.ballerina","match":"([_$[:alpha:]][_$[:alnum:]]*)"}]},"import-declaration":{"name":"meta.import.ballerina","begin":"\\bimport\\b","end":"\\;","patterns":[{"name":"variable.other.property.ballerina","match":"(\\')([_$[:alpha:]][_$[:alnum:]]*)"},{"include":"#keywords"},{"include":"#comment"},{"include":"#import-clause"},{"include":"#punctuation-accessor"}],"beginCaptures":{"0":{"name":"keyword.control.import.ballerina"}},"endCaptures":{"0":{"name":"punctuation.terminator.statement.ballerina"}}},"keywords":{"patterns":[{"name":"keyword.control.ballerina","match":"\\b(fork|join|while|returns|transaction|transactional|retry|commit|rollback|typeof|enum|wait|match)\\b"},{"name":"keyword.control.flow.ballerina","match":"\\b(return|break|continue|check|checkpanic|panic|trap|from|where)\\b"},{"name":"keyword.other.ballerina","match":"\\b(public|private|external|return|record|object|remote|abstract|client|true|false|fail|import|version)\\b"},{"name":"keyword.other.ballerina","match":"\\b(as|on|function|resource|listener|const|final|is|null|lock|annotation|source|worker|parameter|field|isolated|in)\\b"},{"name":"keyword.other.ballerina","match":"\\b(xmlns|table|key|let|new|select|start|flush|default|do|base16|base64|conflict)\\b"},{"name":"keyword.other.ballerina","match":"\\b(limit|outer|equals|order|by|ascending|descending|class|configurable|variable|module|service)\\b"},{"name":"meta.arrow.ballerina storage.type.function.arrow.ballerina","match":"(=\u003e)"},{"name":"keyword.operator.ballerina","match":"(!|%|\\+|\\-|~=|===|==|=|!=|!==|\u003c|\u003e|\u0026|\\||\\?:|\\.\\.\\.|\u003c=|\u003e=|\u0026\u0026|\\|\\||~|\u003e\u003e|\u003e\u003e\u003e)"},{"include":"#types"},{"include":"#self-literal"},{"include":"#type-primitive"}]},"literal":{"patterns":[{"include":"#booleans"},{"include":"#numbers"},{"include":"#strings"},{"include":"#maps"},{"include":"#self-literal"},{"include":"#array-literal"}]},"maps":{"patterns":[{"begin":"\\{","end":"\\}","patterns":[{"include":"#code"}]}]},"matchBindingPattern":{"patterns":[{"begin":"var","end":"(?==\u003e)|,","patterns":[{"include":"#errorDestructure"},{"include":"#code"},{"name":"variable.parameter.ballerina","match":"[_$[:alpha:]][_$[:alnum:]]*"}],"beginCaptures":{"0":{"name":"storage.type.ballerina"}}}]},"matchStatement":{"patterns":[{"begin":"\\bmatch\\b","end":"\\}","patterns":[{"include":"#matchStatementBody"},{"include":"#comment"},{"include":"#code"}],"beginCaptures":{"0":{"name":"keyword.control.ballerina"}}}]},"matchStatementBody":{"patterns":[{"begin":"\\{","end":"(?=\\})","patterns":[{"include":"#literal"},{"include":"#matchBindingPattern"},{"include":"#matchStatementPatternClause"},{"include":"#comment"},{"include":"#code"}],"beginCaptures":{"0":{"name":"punctuation.definition.block.ballerina.documentation"}},"endCaptures":{"0":{"name":"punctuation.definition.block.ballerina.documentation"}}}]},"matchStatementPatternClause":{"patterns":[{"begin":"=\u003e","end":"((\\})|;|,)","patterns":[{"include":"#callableUnitBody"},{"include":"#code"}],"beginCaptures":{"0":{"name":"keyword.ballerina"}}}]},"mdDocumentation":{"name":"comment.mddocs.ballerina","begin":"\\#","end":"[\\r\\n]+","patterns":[{"include":"#mdDocumentationReturnParamDescription"},{"include":"#mdDocumentationParamDescription"}]},"mdDocumentationParamDescription":{"patterns":[{"begin":"(\\+\\s+)([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\-\\s+)","end":"(?=[^#\\r\\n]|(?:# *?\\+))","patterns":[{"name":"comment.mddocs.paramdesc.ballerina","match":"#.*"}],"beginCaptures":{"1":{"name":"keyword.operator.ballerina"},"2":{"name":"variable.other.readwrite.ballerina"},"3":{"name":"keyword.operator.ballerina"}}}]},"mdDocumentationReturnParamDescription":{"patterns":[{"begin":"(#)(?: *?)(\\+)(?: *)(return)(?: *)(-)?(.*)","end":"(?=[^#\\r\\n]|(?:# *?\\+))","patterns":[{"name":"comment.mddocs.returnparamdesc.ballerina","match":"#.*"}],"beginCaptures":{"1":{"name":"comment.mddocs.ballerina"},"2":{"name":"keyword.ballerina"},"3":{"name":"keyword.ballerina"},"4":{"name":"keyword.ballerina"},"5":{"name":"comment.mddocs.returnparamdesc.ballerina"}}}]},"multiType":{"patterns":[{"name":"storage.type.ballerina","match":"(?\u003c=\\|)([_$[:alpha:]][_$[:alnum:]]*)|([_$[:alpha:]][_$[:alnum:]]*)(?=\\|)"},{"name":"keyword.operator.ballerina","match":"\\|"}]},"numbers":{"patterns":[{"name":"constant.numeric.decimal.ballerina","match":"\\b0[xX][\\da-fA-F]+\\b|\\b\\d+(?:\\.(?:\\d+|$))?"}]},"object-literal":{"name":"meta.objectliteral.ballerina","begin":"\\{","end":"\\}","patterns":[{"include":"#object-member"},{"include":"#punctuation-comma"}],"beginCaptures":{"0":{"name":"punctuation.definition.block.ballerina"}},"endCaptures":{"0":{"name":"punctuation.definition.block.ballerina"}}},"object-member":{"patterns":[{"include":"#comment"},{"include":"#function-defn"},{"include":"#literal"},{"include":"#keywords"},{"include":"#expression"},{"name":"meta.object.member.ballerina meta.object-literal.key.ballerina","begin":"(?=\\[)","end":"(?=:)|((?\u003c=[\\]])(?=\\s*[\\(\\\u003c]))","patterns":[{"include":"#comment"}]},{"name":"meta.object.member.ballerina meta.object-literal.key.ballerina","begin":"(?=[\\'\\\"\\`])","end":"(?=:)|((?\u003c=[\\'\\\"\\`])(?=((\\s*[\\(\\\u003c,}])|(\\n*})|(\\s+(as)\\s+))))","patterns":[{"include":"#comment"},{"include":"#string"}]},{"name":"meta.object.member.ballerina meta.object-literal.key.ballerina","begin":"(?x)(?=(\\b(?\u003c!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?\u003c!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?\u003c!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?\u003c!\\$)(?:\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3\n (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3\n (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1\n (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.\n (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1\n (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1\n)(?!\\$)))","end":"(?=:)|(?=\\s*([\\(\\\u003c,}])|(\\s+as\\s+))","patterns":[{"include":"#comment"},{"include":"#numbers"}]},{"name":"meta.method.declaration.ballerina","begin":"(?\u003c=[\\]\\'\\\"\\`])(?=\\s*[\\(\\\u003c])","end":"(?=\\}|;|,)|(?\u003c=\\})","patterns":[{"include":"#function-body"}]},{"name":"meta.object.member.ballerina","match":"(?![_$[:alpha:]])([[:digit:]]+)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:)","captures":{"0":{"name":"meta.object-literal.key.ballerina"},"1":{"name":"constant.numeric.decimal.ballerina"}}},{"name":"meta.object.member.ballerina","match":"(?x)(?:([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:(\\s*\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/)*\\s*(\n ((\n (function\\s*[(\u003c*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=\u003e)\n )) |\n ((\n ((\u003c\\s*$)|((\u003c\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=\u003c\u003e]|=[^\u003c]|\\\u003c\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=\u003c\u003e]|=[^\u003c]|\\\u003c\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=\u003c\u003e]|=[^\u003c])*\\\u003e)*\\\u003e)*\u003e\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^\u003c\u003e\\(\\)\\{\\}]|\\\u003c([^\u003c\u003e]|\\\u003c([^\u003c\u003e]|\\\u003c[^\u003c\u003e]+\\\u003e)+\\\u003e)+\\\u003e|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^\u003c\u003e\\(\\)\\{\\}]|\\\u003c([^\u003c\u003e]|\\\u003c([^\u003c\u003e]|\\\u003c[^\u003c\u003e]+\\\u003e)+\\\u003e)+\\\u003e|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n # sure shot arrow functions even if =\u003e is on new line\n(\n (\u003c\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=\u003c\u003e]|=[^\u003c]|\\\u003c\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=\u003c\u003e]|=[^\u003c]|\\\u003c\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=\u003c\u003e]|=[^\u003c])*\\\u003e)*\\\u003e)*\u003e\\s*)?\n [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n\n# arrow function possible to detect only with =\u003e on same line\n(\n (\u003c\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=\u003c\u003e]|=[^\u003c]|\\\u003c\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=\u003c\u003e]|=[^\u003c]|\\\u003c\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=\u003c\u003e]|=[^\u003c])*\\\u003e)*\\\u003e)*\u003e\\s*)? # typeparameters\n \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\) # parameters\n (\\s*:\\s*([^\u003c\u003e\\(\\)\\{\\}]|\\\u003c([^\u003c\u003e]|\\\u003c([^\u003c\u003e]|\\\u003c[^\u003c\u003e]+\\\u003e)+\\\u003e)+\\\u003e|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type\n \\s*=\u003e # arrow operator\n)\n ))\n)))","captures":{"0":{"name":"meta.object-literal.key.ballerina"},"1":{"name":"entity.name.function.ballerina"}}},{"name":"meta.object.member.ballerina","match":"(?:[_$[:alpha:]][_$[:alnum:]]*)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:)","captures":{"0":{"name":"meta.object-literal.key.ballerina"}}},{"name":"meta.object.member.ballerina","begin":"\\.\\.\\.","end":"(?=,|\\})","patterns":[{"include":"#expression"}],"beginCaptures":{"0":{"name":"keyword.operator.spread.ballerina"}}},{"name":"meta.object.member.ballerina","match":"([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=,|\\}|$|\\/\\/|\\/\\*)","captures":{"1":{"name":"variable.other.readwrite.ballerina"}}},{"name":"meta.object.member.ballerina","match":"(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(as)\\s+(const)(?=\\s*([,}]|$))","captures":{"1":{"name":"keyword.control.as.ballerina"},"2":{"name":"storage.modifier.ballerina"}}},{"name":"meta.object.member.ballerina","begin":"(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(as)\\s+","end":"(?=[;),}\\]:?\\-\\+\\\u003e]|\\|\\||\\\u0026\\\u0026|\\!\\=\\=|$|^|((?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(as)\\s+))","beginCaptures":{"1":{"name":"keyword.control.as.ballerina"}}},{"name":"meta.object.member.ballerina","begin":"(?=[_$[:alpha:]][_$[:alnum:]]*\\s*=)","end":"(?=,|\\}|$|\\/\\/|\\/\\*)","patterns":[{"include":"#expression"}]}]},"objectDec":{"patterns":[{"begin":"\\bobject\\b(?!:)","end":"(?\u003c=\\})","patterns":[{"include":"#decl-block"}],"beginCaptures":{"0":{"name":"keyword.other.ballerina"}}}]},"objectInitBody":{"patterns":[{"begin":"\\{","end":"(?=\\})","patterns":[{"include":"#comment"},{"include":"#code"}],"beginCaptures":{"0":{"name":"punctuation.definition.block.ballerina"}},"endCaptures":{"0":{"name":"punctuation.definition.block.ballerina"}}}]},"objectInitParameters":{"patterns":[{"begin":"\\(","end":"\\)","patterns":[{"include":"#code"},{"name":"variable.parameter.ballerina","match":"\\b([_$[:alpha:]][_$[:alnum:]]*)\\b"}],"beginCaptures":{"0":{"name":"punctuation.definition.parameters.begin.ballerina"}},"endCaptures":{"0":{"name":"punctuation.definition.parameters.end.ballerina"}}}]},"objectMemberFunctionDec":{"patterns":[{"begin":"\\bfunction\\b","end":";","patterns":[{"include":"#functionParameters"},{"name":"keyword.ballerina","match":"\\breturns\\b"},{"include":"#code"}],"beginCaptures":{"0":{"name":"keyword.ballerina"}},"endCaptures":{"0":{"name":"punctuation.definition.block.ballerina"}}}]},"parameter":{"patterns":[{"begin":"((?=record|object|function)|([_$[:alpha:]][_$[:alnum:]]*)(?=\\|)|(?:[_$[:alpha:]][_$[:alnum:]]*))","end":"(?:\\,)|(?:\\|)|(?:\\:)|(?==\u003e)|(?=\\))|(?=\\])","patterns":[{"include":"#parameterWithDescriptor"},{"include":"#record"},{"include":"#objectDec"},{"include":"#functionType"},{"include":"#constrainType"},{"include":"#defaultValue"},{"include":"#comment"},{"include":"#parameterTuple"},{"name":"default.variable.parameter.ballerina","match":"[_$[:alpha:]][_$[:alnum:]]*"}],"beginCaptures":{"0":{"name":"storage.type.ballerina"}}}]},"parameter-name":{"patterns":[{"match":"\\s*\\b(var)\\s+","captures":{"1":{"name":"support.type.primitive.ballerina"}}},{"match":"(?x)(?:(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))\\s+)?(?:(\\.\\.\\.)\\s*)?(?\u003c!=|:)(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(?:(this)|(string|int|boolean|float|byte|decimal|json|xml)|\\b(is|new|isolated|null|function|in)\\b|\\b(true|false)\\b|\\b(check|foreach|if|checkpanic)\\b|\\b(readonly|error|map)\\b|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)","captures":{"10":{"name":"keyword.operator.optional.ballerina"},"2":{"name":"keyword.operator.rest.ballerina"},"3":{"name":"support.type.primitive.ballerina"},"4":{"name":"keyword.other.ballerina"},"5":{"name":"constant.language.boolean.ballerina"},"6":{"name":"keyword.control.flow.ballerina"},"7":{"name":"storage.type.ballerina"},"8":{"name":"variable.parameter.ballerina"},"9":{"name":"variable.parameter.ballerina"}}}]},"parameterTuple":{"patterns":[{"begin":"\\[","end":"(?=\\,)|(?=\\|)|(?=\\:)|(?==\u003e)|(?=\\))","patterns":[{"include":"#record"},{"include":"#objectDec"},{"include":"#parameterTupleType"},{"include":"#parameterTupleEnd"},{"include":"#comment"}]}]},"parameterTupleEnd":{"patterns":[{"begin":"\\]","end":"(?=\\,)|(?=\\|)|(?=\\:)|(?==\u003e)|(?=\\))","patterns":[{"include":"#defaultWithParentheses"},{"name":"default.variable.parameter.ballerina","match":"[_$[:alpha:]][_$[:alnum:]]*"}]}]},"parameterTupleType":{"patterns":[{"begin":"[_$[:alpha:]][_$[:alnum:]]*","end":"(?:\\,)|(?:\\|)|(?=\\])","beginCaptures":{"0":{"name":"storage.type.ballerina"}}}]},"parameterWithDescriptor":{"patterns":[{"begin":"\\\u0026","end":"(?=\\,)|(?=\\|)|(?=\\))","patterns":[{"include":"#parameter"}],"beginCaptures":{"0":{"name":"keyword.operator.ballerina"}}}]},"paranthesised":{"name":"meta.brace.round.block.ballerina","begin":"\\(","end":"\\)","patterns":[{"include":"#self-literal"},{"include":"#function-defn"},{"include":"#decl-block"},{"include":"#comment"},{"include":"#string"},{"include":"#annotationAttachment"},{"include":"#recordLiteral"},{"include":"#stringTemplate"},{"include":"#parameter-name"},{"include":"#variable-initializer"},{"name":"punctuation.separator.parameter.ballerina","match":"\\,"},{"include":"#expression"}],"beginCaptures":{"0":{"name":"meta.brace.round.ballerina"}},"endCaptures":{"0":{"name":"meta.brace.round.ballerina"}}},"paranthesisedBracket":{"patterns":[{"begin":"\\[","end":"\\]","patterns":[{"include":"#comment"},{"include":"#code"}]}]},"punctuation-accessor":{"patterns":[{"match":"(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))","captures":{"1":{"name":"punctuation.accessor.ballerina"},"2":{"name":"punctuation.accessor.optional.ballerina"}}}]},"punctuation-comma":{"patterns":[{"name":"punctuation.separator.comma.ballerina","match":","}]},"punctuation-semicolon":{"patterns":[{"name":"punctuation.terminator.statement.ballerina","match":";"}]},"record":{"name":"meta.record.ballerina","begin":"\\brecord\\b","end":"(?\u003c=\\})","patterns":[{"include":"#recordBody"}],"beginCaptures":{"0":{"name":"keyword.other.ballerina"}}},"recordBody":{"patterns":[{"include":"#decl-block"}]},"recordLiteral":{"patterns":[{"begin":"\\{","end":"\\}","patterns":[{"include":"#code"}],"beginCaptures":{"0":{"name":"punctuation.definition.block.ballerina"}},"endCaptures":{"0":{"name":"punctuation.definition.block.ballerina"}}}]},"self-literal":{"patterns":[{"match":"(\\bself\\b)\\s*(.)\\s*([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=\\()","captures":{"1":{"name":"variable.language.this.ballerina"},"2":{"name":"punctuation.accessor.ballerina"},"3":{"name":"entity.name.function.ballerina"}}},{"name":"variable.language.this.ballerina","match":"(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))self\\b(?!\\$)"}]},"service-decl":{"name":"meta.service.declaration.ballerina","begin":"\\bservice\\b","end":"(?=;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|service|type|var)\\b))|(?\u003c=\\})|(?\u003c=\\,)","patterns":[{"include":"#class-defn"},{"include":"#serviceName"},{"include":"#serviceOn"},{"include":"#serviceBody"},{"include":"#objectDec"}],"beginCaptures":{"0":{"name":"keyword.ballerina"}}},"serviceBody":{"patterns":[{"include":"#comment"},{"include":"#mdDocumentation"},{"include":"#documentationDef"},{"include":"#decl-block"}]},"serviceName":{"patterns":[{"include":"#string"},{"name":"entity.service.path.ballerina"}]},"serviceOn":{"patterns":[{"begin":"on","end":"(?={)","patterns":[{"include":"#code"}],"beginCaptures":{"0":{"name":"keyword.other.ballerina"}}}]},"source":{"patterns":[{"begin":"(\\bsource\\b)\\s+([_$[:alpha:]][_$[:alnum:]]*)","end":"(?=\\,)|(?=\\;)","beginCaptures":{"1":{"name":"keyword.other.ballerina"},"2":{"name":"variable.other.readwrite.ballerina"}}}]},"statements":{"patterns":[{"include":"#stringTemplate"},{"include":"#declaration"},{"include":"#control-statement"},{"include":"#decl-block"},{"include":"#expression"},{"include":"#punctuation-semicolon"},{"include":"#string"},{"include":"#comment"},{"include":"#mdDocumentation"},{"include":"#keywords"},{"include":"#annotationAttachment"}]},"string":{"patterns":[{"name":"string.quoted.double.ballerina","begin":"\"","end":"(\")|((?:[^\\\\\\n])$)","patterns":[{"include":"#string-character-escape"}],"beginCaptures":{"0":{"name":"punctuation.definition.string.begin.ballerina"}},"endCaptures":{"1":{"name":"punctuation.definition.string.end.ballerina"},"2":{"name":"invalid.illegal.newline.ballerina"}}}]},"string-character-escape":{"patterns":[{"name":"constant.character.escape.ballerina","match":"\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|u\\{[0-9A-Fa-f]+\\}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)"}]},"stringTemplate":{"patterns":[{"name":"string.template.ballerina","begin":"((string)|([_$[:alpha:]][_$[:alnum:]]*))?(`)","end":"\\\\?`","patterns":[{"include":"#template-substitution-element"},{"include":"#string-character-escape"}],"beginCaptures":{"1":{"name":"entity.name.function.tagged-template.ballerina"},"2":{"name":"support.type.primitive.ballerina"},"4":{"name":"punctuation.definition.string.template.begin.ballerina"}},"endCaptures":{"0":{"name":"punctuation.definition.string.template.end.ballerina"}}}]},"strings":{"patterns":[{"begin":"\\\"","end":"\\\"","patterns":[{"name":"constant.character.escape.ballerina","match":"\\\\."},{"name":"string","match":"."}],"beginCaptures":{"0":{"name":"string.begin.ballerina"}},"endCaptures":{"0":{"name":"string.end.ballerina"}}}]},"template-substitution-element":{"patterns":[{"name":"meta.template.expression.ballerina","contentName":"meta.embedded.line.ballerina","begin":"\\$\\{","end":"\\}","patterns":[{"include":"#expression"}],"beginCaptures":{"0":{"name":"punctuation.definition.template-expression.begin.ballerina"}},"endCaptures":{"0":{"name":"punctuation.definition.template-expression.end.ballerina"}}}]},"templateVariable":{"patterns":[{"begin":"\\${","end":"}","patterns":[{"include":"#code"}],"beginCaptures":{"0":{"name":"constant.character.escape.ballerina"}},"endCaptures":{"0":{"name":"constant.character.escape.ballerina"}}}]},"ternary-expression":{"begin":"(?!\\?\\.\\s*[^[:digit:]])(\\?)(?!\\?)","end":"\\s*","patterns":[{"include":"#expression"}],"beginCaptures":{"1":{"name":"keyword.operator.ternary.ballerina"}},"endCaptures":{"1":{"name":"keyword.operator.ternary.ballerina"}}},"tupleType":{"patterns":[{"begin":"\\[","end":"(?=\\]|;)","patterns":[{"include":"#comment"},{"include":"#constrainType"},{"include":"#paranthesisedBracket"},{"name":"storage.type.ballerina","match":"\\b([_$[:alpha:]][_$[:alnum:]]*)\\b"}]}]},"type":{"patterns":[{"include":"#comment"},{"include":"#string"},{"include":"#numbers"},{"include":"#type-primitive"},{"include":"#type-tuple"}]},"type-annotation":{"patterns":[{"name":"meta.type.annotation.ballerina","begin":"(\\:)","end":"(?\u003c![:|\u0026])((?=$|^|[,);\\}\\]\\?\\\u003e\\=\u003e]|//)|(?==[^\u003e])|((?\u003c=[\\}\u003e\\]\\)]|[_$[:alpha:]])\\s*(?=\\{)))(\\?)?","patterns":[{"include":"#booleans"},{"include":"#stringTemplate"},{"include":"#self-literal"},{"include":"#xml"},{"include":"#call"},{"match":"\\b(is|new|isolated|null|function|in)\\b|\\b(true|false)\\b|\\b(check|foreach|if|checkpanic)\\b|\\b(readonly|error|map)\\b|\\b(var)\\b|([_$[:alpha:]][_$[:alnum:]]*)((\\.)([_$[:alpha:]][_$[:alnum:]]*)(\\()(\\)))?","captures":{"1":{"name":"keyword.other.ballerina"},"10":{"name":"punctuation.definition.parameters.begin.ballerina"},"11":{"name":"punctuation.definition.parameters.end.ballerina"},"2":{"name":"constant.language.boolean.ballerina"},"3":{"name":"keyword.control.ballerina"},"4":{"name":"storage.type.ballerina"},"5":{"name":"support.type.primitive.ballerina"},"6":{"name":"variable.other.readwrite.ballerina"},"8":{"name":"punctuation.accessor.ballerina"},"9":{"name":"entity.name.function.ballerina"}}},{"name":"keyword.operator.optional.ballerina","match":"\\?"},{"include":"#multiType"},{"include":"#type"},{"include":"#paranthesised"}],"beginCaptures":{"1":{"name":"keyword.operator.type.annotation.ballerina"}}}]},"type-primitive":{"patterns":[{"name":"support.type.primitive.ballerina","match":"(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(string|int|boolean|float|byte|decimal|json|xml)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"}]},"type-tuple":{"name":"meta.type.tuple.ballerina","begin":"\\[","end":"\\]","patterns":[{"include":"#self-literal"},{"include":"#booleans"},{"name":"keyword.operator.rest.ballerina","match":"\\.\\.\\."},{"match":"(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))([_$[:alpha:]][_$[:alnum:]]*)\\s*(\\?)?\\s*(:)","captures":{"1":{"name":"entity.name.label.ballerina"},"2":{"name":"keyword.operator.optional.ballerina"},"3":{"name":"punctuation.separator.label.ballerina"}}},{"include":"#identifiers"},{"include":"#type"},{"include":"#punctuation-comma"}],"beginCaptures":{"0":{"name":"meta.brace.square.ballerina"}},"endCaptures":{"0":{"name":"meta.brace.square.ballerina"}}},"typeDefinition":{"patterns":[{"begin":"(\\btype\\b)\\s+([_$[:alpha:]][_$[:alnum:]]*)","end":"\\;","patterns":[{"include":"#functionParameters"},{"include":"#functionReturns"},{"include":"#mdDocumentation"},{"include":"#record"},{"include":"#string"},{"include":"#keywords"},{"include":"#multiType"},{"include":"#type-primitive"},{"name":"variable.other.readwrite.ballerina","match":"[_$[:alpha:]][_$[:alnum:]]*"},{"include":"#type-annotation"},{"include":"#typeDescription"},{"include":"#decl-block"}],"beginCaptures":{"1":{"name":"keyword.other.ballerina"},"2":{"name":"entity.name.type.ballerina"}},"endCaptures":{"0":{"name":"punctuation.terminator.statement.ballerina"}}}]},"typeDescription":{"patterns":[{"begin":"[_$[:alpha:]][_$[:alnum:]]*","end":"(?=;)","patterns":[{"include":"#numbers"},{"include":"#decl-block"},{"include":"#type-primitive"},{"name":"storage.type.ballerina","match":"[_$[:alpha:]][_$[:alnum:]]*"}]}]},"types":{"patterns":[{"name":"storage.type.ballerina","match":"\\b(handle|any|anydata|future|typedesc)\\b"},{"name":"support.type.primitive.ballerina","match":"\\b(boolean|int|string|float|decimal|byte|json|xml)\\b"},{"name":"storage.type.ballerina","match":"\\b(map|error|never|readonly|distinct)\\b"},{"name":"storage.type.ballerina","match":"\\b(stream)\\b"}]},"var-expr":{"patterns":[{"name":"meta.var.expr.ballerina","begin":"(?=\\b(var))","end":"(?!\\b(var))((?=;|}|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|service|type|var)\\b))|((?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(?=(if)\\s+))|((?\u003c!^string|[^\\._$[:alnum:]]string|^int|[^\\._$[:alnum:]]int)(?=\\s*$)))","patterns":[{"begin":"\\b(var)(?=\\s+|\\[|\\?|\\||\\:)","end":"(?=\\S)","beginCaptures":{"0":{"name":"support.type.primitive.ballerina"}}},{"name":"keyword.operator.type.annotation.ballerina","match":"\\|"},{"name":"keyword.other.ballerina","match":"\\bin\\b"},{"include":"#comment"},{"include":"#stringTemplate"},{"include":"#numbers"},{"include":"#multiType"},{"include":"#self-literal"},{"include":"#var-single-variable"},{"include":"#variable-initializer"},{"include":"#punctuation-comma"},{"include":"#type-annotation"},{"include":"#keywords"},{"include":"#type-tuple"}],"beginCaptures":{"0":{"name":"storage.modifier.ballerina support.type.primitive.ballerina"}}},{"include":"#punctuation-comma"},{"name":"meta.var.expr.ballerina","begin":"(?=\\b(const(?!\\s+enum\\b)))","end":"(?!\\b(const(?!\\s+enum\\b)))((?=\\bannotation\\b|;|}|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|service|type|var)\\b))|((?\u003c!^string|[^\\._$[:alnum:]]string|^int|[^\\._$[:alnum:]]int)(?=\\s*$)))","patterns":[{"begin":"\\b(const(?!\\s+enum\\b))\\s+","end":"(?=\\S)","beginCaptures":{"0":{"name":"keyword.other.ballerina"}}},{"include":"#comment"},{"include":"#stringTemplate"},{"include":"#var-single-const"},{"include":"#variable-initializer"},{"include":"#punctuation-comma"},{"include":"#type-annotation"}]},{"include":"#punctuation-comma"},{"name":"meta.var.expr.ballerina","begin":"(string|int|boolean|float|byte|decimal|json|xml)(?=\\s+|\\[|\\?|\\||\\:)","end":"(?!\\b(var))((?=;|}|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|service|type|var)\\b))|((?\u003c!^string|[^\\._$[:alnum:]]string|^int|[^\\._$[:alnum:]]int)(?=\\s*$)))","patterns":[{"include":"#xml"},{"begin":"(string|int|boolean|float|byte|decimal|json|xml)(?=\\s+|\\[|\\?|\\||\\:)","end":"(?=\\S)","beginCaptures":{"0":{"name":"support.type.primitive.ballerina"}}},{"name":"keyword.operator.type.annotation.ballerina","match":"\\|"},{"include":"#stringTemplate"},{"include":"#numbers"},{"include":"#multiType"},{"include":"#var-single-variable"},{"include":"#variable-initializer"},{"include":"#punctuation-comma"},{"include":"#type-annotation"},{"include":"#keywords"},{"include":"#type-tuple"}],"beginCaptures":{"0":{"name":"support.type.primitive.ballerina"}}},{"include":"#punctuation-comma"}]},"var-single-const":{"patterns":[{"name":"meta.var-single-variable.expr.ballerina"},{"begin":"\\b(var)\\s*","end":"(?=\\S)","beginCaptures":{"0":{"name":"support.type.primitive.ballerina"}}},{"include":"#types"},{"begin":"([_$[:alpha:]][_$[:alnum:]]*)","end":"(?=$|^|[;,=}]|((?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))\\s+))","beginCaptures":{"1":{"name":"meta.definition.variable.ballerina variable.other.constant.ballerina"}}}]},"var-single-variable":{"patterns":[{"name":"meta.var-single-variable.expr.ballerina","begin":"((string|int|boolean|float|byte|decimal|json|xml)|\\b(readonly|error|map)\\b|([_$[:alpha:]][_$[:alnum:]]*))(?=\\s+|\\;|\\\u003e|\\|)","end":"(?=$|^|[;,=}])","patterns":[{"include":"#call"},{"include":"#self-literal"},{"include":"#if-statement"},{"include":"#string"},{"include":"#numbers"},{"include":"#keywords"}],"beginCaptures":{"2":{"name":"support.type.primitive.ballerina"},"3":{"name":"storage.type.ballerina"},"4":{"name":"meta.definition.variable.ballerina variable.other.readwrite.ballerina"}},"endCaptures":{"0":{"name":"punctuation.terminator.statement.ballerina"}}},{"name":"meta.var-single-variable.expr.ballerina","begin":"([_$[:alpha:]][_$[:alnum:]]*)\\s+(\\!)?","end":"(?=$|^|[;,=}]|((?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))\\s+))","beginCaptures":{"1":{"name":"meta.definition.variable.ballerina variable.other.readwrite.ballerina"},"2":{"name":"keyword.operator.definiteassignment.ballerina"}}}]},"variable-initializer":{"patterns":[{"begin":"(?\u003c!=|!)(=)(?!=|\u003e)(?=\\s*\\S)","end":"(?=$|[,);}\\]])","patterns":[{"name":"variable.other.property.ballerina","match":"(\\')([_$[:alpha:]][_$[:alnum:]]*)"},{"include":"#xml"},{"include":"#function-defn"},{"include":"#expression"},{"include":"#punctuation-accessor"}],"beginCaptures":{"1":{"name":"keyword.operator.assignment.ballerina"}}},{"begin":"(?\u003c!=|!)(=)(?!=|\u003e)","end":"(?=[,);}\\]]|((?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))\\s+))|(?=^\\s*$)|(?\u003c=\\S)(?\u003c!=)(?=\\s*$)","patterns":[{"include":"#expression"}],"beginCaptures":{"1":{"name":"keyword.operator.assignment.ballerina"}}}]},"variableDef":{"patterns":[{"begin":"(?:(?!\\+)[_$[:alpha:]][_$[:alnum:]]*)(?: |\\t)|(?=\\()","end":"(?:[_$[:alpha:]][_$[:alnum:]]*)|(?=\\,)|(?=;)|\\.\\.\\.","patterns":[{"include":"#tupleType"},{"include":"#constrainType"},{"include":"#comment"}],"beginCaptures":{"0":{"name":"storage.type.ballerina"}}}]},"variableDefInline":{"patterns":[{"begin":"(?=record)|(?=object)","end":"(?=;)","patterns":[{"include":"#record"},{"include":"#objectDec"}]}]},"workerBody":{"patterns":[{"begin":"\\{","end":"(?=\\})","patterns":[{"include":"#code"}]}]},"workerDef":{"patterns":[{"begin":"\\bworker\\b","end":"\\}","patterns":[{"include":"#functionReturns"},{"include":"#workerBody"}],"beginCaptures":{"0":{"name":"keyword.ballerina"}}}]},"xml":{"patterns":[{"name":"string.template.ballerina","begin":"(\\bxml)(\\s*)(`)","end":"`","patterns":[{"include":"#xmlTag"},{"include":"#xmlComment"},{"include":"#templateVariable"},{"name":"string","match":"."}],"beginCaptures":{"1":{"name":"support.type.primitive.ballerina"},"3":{"name":"punctuation.definition.string.template.begin.ballerina"}},"endCaptures":{"0":{"name":"punctuation.definition.string.template.end.ballerina"}}}]},"xmlComment":{"patterns":[{"name":"comment.block.xml.ballerina","begin":"\u003c!--","end":"--\u003e","beginCaptures":{"0":{"name":"comment.block.xml.ballerina"}},"endCaptures":{"0":{"name":"comment.block.xml.ballerina"}}}]},"xmlDoubleQuotedString":{"patterns":[{"begin":"\\\"","end":"\\\"","patterns":[{"name":"constant.character.escape.ballerina","match":"\\\\."},{"name":"string","match":"."}],"beginCaptures":{"0":{"name":"string.begin.ballerina"}},"endCaptures":{"0":{"name":"string.end.ballerina"}}}]},"xmlSingleQuotedString":{"patterns":[{"begin":"\\'","end":"\\'","patterns":[{"name":"constant.character.escape.ballerina","match":"\\\\."},{"name":"string","match":"."}],"beginCaptures":{"0":{"name":"string.begin.ballerina"}},"endCaptures":{"0":{"name":"string.end.ballerina"}}}]},"xmlTag":{"patterns":[{"begin":"(\u003c\\/?\\??)\\s*([-_a-zA-Z0-9]+)","end":"\\??\\/?\u003e","patterns":[{"include":"#xmlSingleQuotedString"},{"include":"#xmlDoubleQuotedString"},{"name":"keyword.other.ballerina","match":"xmlns"},{"name":"entity.other.attribute-name.xml.ballerina","match":"([a-zA-Z0-9-]+)"}],"beginCaptures":{"1":{"name":"punctuation.definition.tag.begin.xml.ballerina"},"2":{"name":"entity.name.tag.xml.ballerina"}},"endCaptures":{"0":{"name":"punctuation.definition.tag.end.xml.ballerina"}}}]}}}