var ballerina_tmLanguage = {name:"ballerina",scopeName:"source.ballerina",fileTypes:["bal"],uuid:"c01f5512-489a-41bd-ba5d-caf4b55ae3b3",monarchVariables:{typeScope:"type",annotationScope:"type",numberScope:"number",xmlTagAngle:"tag",xmlAttribute:"variable.parameter",xmlTag:"tag",primitiveScope:"type"},tmlVariables:{typeScope:"storage.type.ballerina",annotationScope:"support.type.ballerina",numberScope:"constant.numeric.decimal.ballerina",xmlTagAngle:"punctuation.definition.tag.begin.xml.ballerina",xmlAttribute:"entity.other.attribute-name.xml.ballerina",xmlTag:"entity.name.tag.xml.ballerina",primitiveScope:"support.type.primitive.ballerina"},patterns:[{include:"#statements"}],repository:{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"},{include:"#regex"}]},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"}]},"control-statement":{patterns:[{begin:"(?)\n )) |\n ((\n ((<\\s*$)|((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\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 => on same line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters\n \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type\n \\s*=> # 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"}}},{match:"(\\')([_$[:alpha:]][_$[:alnum:]]*)",name:"variable.other.property.ballerina"},{include:"#type-annotation"}]},"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:"(?=:)|((?<=[\\]])(?=\\s*[\\(\\<]))",patterns:[{include:"#comment"}]},{name:"meta.object.member.ballerina meta.object-literal.key.ballerina",begin:"(?=[\\'\\\"\\`])",end:"(?=:)|((?<=[\\'\\\"\\`])(?=((\\s*[\\(\\<,}])|(\\n*})|(\\s+(as)\\s+))))",patterns:[{include:"#comment"},{include:"#string"}]},{name:"meta.object.member.ballerina meta.object-literal.key.ballerina",begin:"(?x)(?=(\\b(?)\n )) |\n ((\n ((<\\s*$)|((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\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 => on same line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters\n \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type\n \\s*=> # 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:"\\.\\.\\.",beginCaptures:{"0":{name:"keyword.operator.spread.ballerina"}},end:"(?=,|\\})",patterns:[{include:"#expression"}]},{name:"meta.object.member.ballerina",match:"([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=,|\\}|$|\\/\\/|\\/\\*)",captures:{"1":{name:"variable.other.readwrite.ballerina"}}},{name:"meta.object.member.ballerina",match:"(?]|\\|\\||\\&\\&|\\!\\=\\=|$|^|((?>=|>>>=|\\|="},{name:"keyword.operator.bitwise.shift.ballerina",match:"<<|>>>|>>"},{name:"keyword.operator.comparison.ballerina",match:"===|!==|==|!="},{name:"keyword.operator.relational.ballerina",match:"<=|>=|<>|<|>"},{match:"(?<=[_$[: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:"\\!|&&|\\|\\||\\?\\?"},{name:"keyword.operator.bitwise.ballerina",match:"\\&|~|\\^|\\|"},{name:"keyword.operator.assignment.ballerina",match:"\\="},{name:"keyword.operator.decrement.ballerina",match:"--"},{name:"keyword.operator.increment.ballerina",match:"\\+\\+"},{name:"keyword.operator.arithmetic.ballerina",match:"%|\\*|/|-|\\+"}]},"punctuation-comma":{patterns:[{name:"punctuation.separator.comma.ballerina",match:","}]},"punctuation-semicolon":{patterns:[{match:";",name:"punctuation.terminator.statement.ballerina"}]},"punctuation-accessor":{patterns:[{match:"(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",captures:{"1":{name:"punctuation.accessor.ballerina"},"2":{name:"punctuation.accessor.optional.ballerina"}}}]},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",beginCaptures:{"0":{name:"keyword.ballerina"}},end:";",patterns:[{include:"#code"}]}]},booleans:{patterns:[{match:"\\b(true|false)\\b",name:"constant.language.boolean.ballerina"}]},butExp:{patterns:[{begin:"\\bbut\\b",beginCaptures:{"0":{name:"keyword.ballerina"}},end:"\\}",endCaptures:{"0":{name:"punctuation.definition.block.ballerina.documentation"}},patterns:[{include:"#butExpBody"},{include:"#comment"}]}]},butExpBody:{patterns:[{begin:"\\{",beginCaptures:{"0":{name:"punctuation.definition.block.ballerina.documentation"}},end:"(?=\\})",endCaptures:{"0":{name:"punctuation.definition.block.ballerina.documentation"}},patterns:[{include:"#parameter"},{include:"#butClause"},{include:"#comment"}]}]},butClause:{patterns:[{begin:"=>",beginCaptures:{"0":{name:"meta.arrow.ballerina storage.type.function.arrow.ballerina"}},end:",|(?=\\})",patterns:[{include:"#code"}]}]},call:{patterns:[{match:"(?:\\')?([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=\\()",name:"entity.name.function.ballerina"}]},comment:{patterns:[{name:"comment.ballerina",match:"\\/\\/.*"}]},constrainType:{patterns:[{begin:"<",end:">",beginCaptures:{"0":{name:"punctuation.definition.parameters.begin.ballerina"}},endCaptures:{"0":{name:"punctuation.definition.parameters.end.ballerina"}},patterns:[{include:"#comment"},{include:"#constrainType"},{name:"storage.type.ballerina",match:"\\b([_$[:alpha:]][_$[:alnum:]]*)\\b"}]}]},tupleType:{patterns:[{begin:"\\[",end:"(?=\\]|;)",patterns:[{include:"#comment"},{include:"#constrainType"},{include:"#paranthesisedBracket"},{name:"storage.type.ballerina",match:"\\b([_$[:alpha:]][_$[:alnum:]]*)\\b"}]}]},"decl-block":{name:"meta.block.ballerina",begin:"\\{",beginCaptures:{"0":{name:"punctuation.definition.block.ballerina"}},end:"(?=\\} external;)|(\\})",endCaptures:{"0":{name:"punctuation.definition.block.ballerina"}},patterns:[{include:"#statements"},{include:"#mdDocumentation"}]},defaultValue:{patterns:[{begin:"[=:]",beginCaptures:{"0":{name:"keyword.operator.ballerina"}},end:"(?=[,)])",patterns:[{include:"#code"}]}]},documentationDef:{patterns:[{begin:"\\b(?:documentation|deprecated)\\b",beginCaptures:{"0":{name:"keyword.ballerina"}},end:"\\}",endCaptures:{"0":{name:"delimiter.curly"}},patterns:[{include:"#documentationBody"},{include:"#comment"}]}]},documentationBody:{patterns:[{begin:"\\{",beginCaptures:{"0":{name:"punctuation.definition.block.ballerina.documentation"}},end:"(?=\\})",endCaptures:{"0":{name:"punctuation.definition.block.ballerina.documentation"}},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:"."}]}]},"enum-decl":{name:"meta.enum.declaration.ballerina",begin:"(?:\\b(const)\\s+)?\\b(enum)\\s+([_$[:alpha:]][_$[:alnum:]]*)",beginCaptures:{"1":{name:"storage.modifier.ballerina"},"2":{name:"keyword.other.ballerina"},"3":{name:"entity.name.type.enum.ballerina"}},end:"(?<=\\})",patterns:[{include:"#comment"},{include:"#mdDocumentation"},{begin:"\\{",beginCaptures:{"0":{name:"punctuation.definition.block.ballerina"}},end:"\\}",endCaptures:{"0":{name:"punctuation.definition.block.ballerina"}},patterns:[{include:"#comment"},{include:"#mdDocumentation"},{begin:"([_$[:alpha:]][_$[:alnum:]]*)",beginCaptures:{"0":{name:"variable.other.enummember.ballerina"}},end:"(?=,|\\}|$)",patterns:[{include:"#comment"},{include:"#variable-initializer"}]},{begin:"(?=((\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\])))",end:"(?=,|\\}|$)",patterns:[{include:"#string"},{include:"#array-literal"},{include:"#comment"},{include:"#variable-initializer"}]},{include:"#punctuation-comma"}]}]},errorDestructure:{patterns:[{begin:"error",end:"(?==>)",beginCaptures:{"0":{name:"storage.type.ballerina"}},patterns:[{include:"#code"}]}]},callableUnitBody:{patterns:[{begin:"\\{",end:"(?=\\})",beginCaptures:{"0":{name:"punctuation.definition.block.ballerina"}},endCaptures:{"0":{name:"punctuation.definition.block.ballerina"}},patterns:[{include:"#workerDef"},{include:"#service-decl"},{include:"#objectDec"},{include:"#function-defn"},{include:"#forkStatement"},{include:"#code"}]}]},"for-loop":{begin:"(?",name:"meta.block.ballerina",beginCaptures:{"0":{name:"meta.arrow.ballerina storage.type.function.arrow.ballerina"}},end:"(?=\\;)|(?=\\,)|(?=)(?=\\);)",patterns:[{include:"#statements"},{include:"#punctuation-comma"}]},{name:"keyword.generator.asterisk.ballerina",match:"\\*"}]},"function-defn":{name:"meta.function.ballerina",begin:"(?:(public|private)\\s+)?(function\\b)",beginCaptures:{"1":{name:"keyword.other.ballerina"},"2":{name:"keyword.other.ballerina"}},end:"(?<=\\;)|(?<=\\})|(?<=\\,)|(?=)(?=\\);)",patterns:[{match:"\\bexternal\\b",name:"keyword.ballerina"},{include:"#stringTemplate"},{include:"#annotationAttachment"},{include:"#functionReturns"},{include:"#functionName"},{include:"#functionParameters"},{include:"#punctuation-semicolon"},{include:"#function-body"},{include:"#regex"}]},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|anydata)\\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:"\\)|\\]",beginCaptures:{"0":{name:"punctuation.definition.parameters.begin.ballerina"}},endCaptures:{"0":{name:"punctuation.definition.parameters.end.ballerina"}},patterns:[{include:"#function-parameters-body"}]},"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"},{include:"#regex"},{name:"punctuation.separator.parameter.ballerina",match:"\\,"}]},"parameter-name":{patterns:[{match:"\\s*\\b(var)\\s+",captures:{"1":{name:"support.type.primitive.ballerina"}}},{match:"(?x)(?:(?)|(\\=)|(?=\\{)|(\\))|(?=\\;)",endCaptures:{"1":{name:"keyword.operator.ballerina"}},patterns:[{include:"#comment"},{include:"#string"},{include:"#numbers"},{include:"#keywords"},{include:"#type-primitive"},{match:"\\s*\\b(var)(?=\\s+|\\[|\\?)",captures:{"1":{name:"support.type.primitive.ballerina"}}},{match:"\\|",name:"keyword.operator.ballerina"},{match:"\\?",name:"keyword.operator.optional.ballerina"},{include:"#type-annotation"},{include:"#type-tuple"},{include:"#keywords"},{match:"[_$[:alpha:]][_$[:alnum:]]*",name:"variable.other.readwrite.ballerina"}]},functionType:{patterns:[{begin:"\\bfunction\\b",beginCaptures:{"0":{name:"keyword.ballerina"}},end:"(?=\\,)|(?=\\|)|(?=\\:)|(?==>)|(?=\\))|(?=\\])",patterns:[{include:"#comment"},{include:"#functionTypeParamList"},{include:"#functionTypeReturns"}]}]},functionTypeParamList:{patterns:[{begin:"\\(",end:"\\)",beginCaptures:{"0":{name:"delimiter.parenthesis"}},endCaptures:{"0":{name:"delimiter.parenthesis"}},patterns:[{match:"public",name:"keyword"},{include:"#annotationAttachment"},{include:"#recordLiteral"},{include:"#record"},{include:"#objectDec"},{include:"#functionType"},{include:"#constrainType"},{include:"#parameterTuple"},{include:"#functionTypeType"},{include:"#comment"}]}]},functionTypeType:{patterns:[{begin:"[_$[:alpha:]][_$[:alnum:]]*",beginCaptures:{"0":{name:"storage.type.ballerina"}},end:"(?=\\,)|(?:\\|)|(?=\\])|(?=\\))"}]},functionTypeReturns:{patterns:[{begin:"\\breturns\\b",beginCaptures:{"0":{name:"keyword"}},end:"(?=\\,)|(?:\\|)|(?=\\])|(?=\\))",patterns:[{include:"#functionTypeReturnsParameter"},{include:"#comment"}]}]},functionTypeReturnsParameter:{patterns:[{begin:"((?=record|object|function)|(?:[_$[:alpha:]][_$[:alnum:]]*))",beginCaptures:{"0":{name:"storage.type.ballerina"}},end:"(?=\\,)|(?:\\|)|(?:\\:)|(?==>)|(?=\\))|(?=\\])",patterns:[{include:"#record"},{include:"#objectDec"},{include:"#functionType"},{include:"#constrainType"},{include:"#defaultValue"},{include:"#comment"},{include:"#parameterTuple"},{match:"[_$[:alpha:]][_$[:alnum:]]*",name:"default.variable.parameter.ballerina"}]}]},"if-statement":{patterns:[{begin:"(?",beginCaptures:{"0":{name:"keyword.ballerina"}},end:"((\\})|;|,)",patterns:[{include:"#callableUnitBody"},{include:"#code"}]}]},matchStatement:{patterns:[{begin:"\\bmatch\\b",beginCaptures:{"0":{name:"keyword.control.ballerina"}},end:"\\}",patterns:[{include:"#matchStatementBody"},{include:"#comment"},{include:"#code"}]}]},matchStatementBody:{patterns:[{begin:"\\{",beginCaptures:{"0":{name:"punctuation.definition.block.ballerina.documentation"}},end:"(?=\\})",endCaptures:{"0":{name:"punctuation.definition.block.ballerina.documentation"}},patterns:[{include:"#literal"},{include:"#matchBindingPattern"},{include:"#matchStatementPatternClause"},{include:"#comment"},{include:"#code"}]}]},matchBindingPattern:{patterns:[{begin:"var",beginCaptures:{"0":{name:"storage.type.ballerina"}},end:"(?==>)|,",patterns:[{include:"#errorDestructure"},{include:"#code"},{match:"[_$[:alpha:]][_$[:alnum:]]*",name:"variable.parameter.ballerina"}]}]},mdDocumentation:{name:"comment.mddocs.ballerina",begin:"\\#",end:"[\\r\\n]+",patterns:[{include:"#mdDocumentationReturnParamDescription"},{include:"#mdDocumentationParamDescription"}]},mdDocumentationParamDescription:{patterns:[{begin:"(\\+\\s+)(\\'?[_$[:alpha:]][_$[:alnum:]]*)(\\s*\\-\\s+)",beginCaptures:{"1":{name:"keyword.operator.ballerina"},"2":{name:"variable.other.readwrite.ballerina"},"3":{name:"keyword.operator.ballerina"}},end:"(?=[^#\\r\\n]|(?:# *?\\+))",patterns:[{match:"#.*",name:"comment.mddocs.paramdesc.ballerina"}]}]},mdDocumentationReturnParamDescription:{patterns:[{begin:"(#)(?: *?)(\\+)(?: *)(return)(?: *)(-)?(.*)",beginCaptures:{"1":{name:"comment.mddocs.ballerina"},"2":{name:"keyword.ballerina"},"3":{name:"keyword.ballerina"},"4":{name:"keyword.ballerina"},"5":{name:"comment.mddocs.returnparamdesc.ballerina"}},end:"(?=[^#\\r\\n]|(?:# *?\\+))",patterns:[{match:"#.*",name:"comment.mddocs.returnparamdesc.ballerina"}]}]},multiType:{patterns:[{match:"(?<=\\|)([_$[:alpha:]][_$[:alnum:]]*)|([_$[:alpha:]][_$[:alnum:]]*)(?=\\|)",name:"storage.type.ballerina"},{match:"\\|",name:"keyword.operator.ballerina"}]},numbers:{patterns:[{match:"\\b0[xX][\\da-fA-F]+\\b|\\b\\d+(?:\\.(?:\\d+|$))?",name:"constant.numeric.decimal.ballerina"}]},"class-body":{name:"meta.class.body.ballerina",begin:"\\{",beginCaptures:{"0":{name:"punctuation.definition.block.ballerina"}},end:"\\}",endCaptures:{"0":{name:"punctuation.definition.block.ballerina"}},patterns:[{include:"#comment"},{include:"#mdDocumentation"},{include:"#function-defn"},{include:"#var-expr"},{include:"#variable-initializer"},{include:"#access-modifier"},{include:"#keywords"},{begin:"(?<=:)\\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"}]},"access-modifier":{patterns:[{match:"(?|\\|)",beginCaptures:{"2":{name:"support.type.primitive.ballerina"},"3":{name:"storage.type.ballerina"},"4":{name:"meta.definition.variable.ballerina variable.other.readwrite.ballerina"}},end:"(?=$|^|[;,=}])",endCaptures:{"0":{name:"punctuation.terminator.statement.ballerina"}},patterns:[{include:"#call"},{include:"#self-literal"},{include:"#if-statement"},{include:"#string"},{include:"#numbers"},{include:"#keywords"}]},{name:"meta.var-single-variable.expr.ballerina",begin:"([_$[:alpha:]][_$[:alnum:]]*)\\s+(\\!)?",beginCaptures:{"1":{name:"meta.definition.variable.ballerina variable.other.readwrite.ballerina"},"2":{name:"keyword.operator.definiteassignment.ballerina"}},end:"(?=$|^|[;,=}]|((?)(?=\\s*\\S)",beginCaptures:{"1":{name:"keyword.operator.assignment.ballerina"}},end:"(?=$|[,);}\\]])",patterns:[{match:"(\\')([_$[:alpha:]][_$[:alnum:]]*)",name:"variable.other.property.ballerina"},{include:"#xml"},{include:"#function-defn"},{include:"#expression"},{include:"#punctuation-accessor"},{include:"#regex"}]},{begin:"(?)",beginCaptures:{"1":{name:"keyword.operator.assignment.ballerina"}},end:"(?=[,);}\\]]|((?)|(?=\\))|(?=\\])",patterns:[{include:"#parameterWithDescriptor"},{include:"#record"},{include:"#objectDec"},{include:"#functionType"},{include:"#constrainType"},{include:"#defaultValue"},{include:"#comment"},{include:"#parameterTuple"},{match:"[_$[:alpha:]][_$[:alnum:]]*",name:"default.variable.parameter.ballerina"}]}]},parameterTuple:{patterns:[{begin:"\\[",end:"(?=\\,)|(?=\\|)|(?=\\:)|(?==>)|(?=\\))",patterns:[{include:"#record"},{include:"#objectDec"},{include:"#parameterTupleType"},{include:"#parameterTupleEnd"},{include:"#comment"}]}]},parameterTupleType:{patterns:[{begin:"[_$[:alpha:]][_$[:alnum:]]*",beginCaptures:{"0":{name:"storage.type.ballerina"}},end:"(?:\\,)|(?:\\|)|(?=\\])"}]},parameterTupleEnd:{patterns:[{begin:"\\]",end:"(?=\\,)|(?=\\|)|(?=\\:)|(?==>)|(?=\\))",patterns:[{include:"#defaultWithParentheses"},{match:"[_$[:alpha:]][_$[:alnum:]]*",name:"default.variable.parameter.ballerina"}]}]},parameterWithDescriptor:{patterns:[{begin:"\\&",beginCaptures:{"0":{name:"keyword.operator.ballerina"}},end:"(?=\\,)|(?=\\|)|(?=\\))",patterns:[{include:"#parameter"}]}]},defaultWithParentheses:{patterns:[{begin:"\\(",beginCaptures:{"0":{name:"punctuation.definition.block.ballerina"}},end:"\\)",endCaptures:{"0":{name:"punctuation.definition.block.ballerina"}}}]},string:{patterns:[{begin:"\"",name:"string.quoted.double.ballerina",beginCaptures:{"0":{name:"punctuation.definition.string.begin.ballerina"}},end:"(\")|((?:[^\\\\\\n])$)",endCaptures:{"1":{name:"punctuation.definition.string.end.ballerina"},"2":{name:"invalid.illegal.newline.ballerina"}},patterns:[{include:"#string-character-escape"}]}]},source:{patterns:[{begin:"(\\bsource\\b)\\s+([_$[:alpha:]][_$[:alnum:]]*)",beginCaptures:{"1":{name:"keyword.other.ballerina"},"2":{name:"variable.other.readwrite.ballerina"}},end:"(?=\\,)|(?=\\;)"}]},types:{patterns:[{name:"storage.type.ballerina",match:"\\b(handle|any|future|typedesc)\\b"},{name:"support.type.primitive.ballerina",match:"\\b(boolean|int|string|float|decimal|byte|json|xml|anydata)\\b"},{name:"storage.type.ballerina",match:"\\b(map|error|never|readonly|distinct)\\b"},{name:"storage.type.ballerina",match:"\\b(stream)\\b"}]},xml:{patterns:[{begin:"(\\bxml)(\\s*)(`)",name:"string.template.ballerina",beginCaptures:{"1":{name:"support.type.primitive.ballerina"},"3":{name:"punctuation.definition.string.template.begin.ballerina"}},end:"`",endCaptures:{"0":{name:"punctuation.definition.string.template.end.ballerina"}},patterns:[{include:"#xmlTag"},{include:"#xmlComment"},{include:"#templateVariable"},{name:"string",match:"."}]}]},xmlTag:{patterns:[{begin:"(<\\/?\\??)\\s*([-_a-zA-Z0-9]+)",beginCaptures:{"1":{name:"punctuation.definition.tag.begin.xml.ballerina"},"2":{name:"entity.name.tag.xml.ballerina"}},end:"\\??\\/?>",endCaptures:{"0":{name:"punctuation.definition.tag.end.xml.ballerina"}},patterns:[{include:"#xmlSingleQuotedString"},{include:"#xmlDoubleQuotedString"},{name:"keyword.other.ballerina",match:"xmlns"},{name:"entity.other.attribute-name.xml.ballerina",match:"([a-zA-Z0-9-]+)"}]}]},xmlComment:{patterns:[{begin:"",endCaptures:{"0":{name:"comment.block.xml.ballerina"}},name:"comment.block.xml.ballerina"}]},xmlSingleQuotedString:{patterns:[{begin:"\\'",end:"\\'",beginCaptures:{"0":{name:"string.begin.ballerina"}},endCaptures:{"0":{name:"string.end.ballerina"}},patterns:[{name:"constant.character.escape.ballerina",match:"\\\\."},{name:"string",match:"."}]}]},xmlDoubleQuotedString:{patterns:[{begin:"\\\"",end:"\\\"",beginCaptures:{"0":{name:"string.begin.ballerina"}},endCaptures:{"0":{name:"string.end.ballerina"}},patterns:[{name:"constant.character.escape.ballerina",match:"\\\\."},{name:"string",match:"."}]}]},templateVariable:{patterns:[{begin:"\\${",beginCaptures:{"0":{name:"constant.character.escape.ballerina"}},end:"}",endCaptures:{"0":{name:"constant.character.escape.ballerina"}},patterns:[{include:"#code"}]}]},"ternary-expression":{begin:"(?!\\?\\.\\s*[^[:digit:]])(\\?)(?!\\?)",beginCaptures:{"1":{name:"keyword.operator.ternary.ballerina"}},end:"\\s*",endCaptures:{"1":{name:"keyword.operator.ternary.ballerina"}},patterns:[{include:"#expression"}]},type:{patterns:[{include:"#comment"},{include:"#string"},{include:"#numbers"},{include:"#type-primitive"},{include:"#type-tuple"}]},"type-annotation":{patterns:[{name:"meta.type.annotation.ballerina",begin:"(\\:)",beginCaptures:{"1":{name:"keyword.operator.type.annotation.ballerina"}},end:"(?\\=>]|//)|(?==[^>])|((?<=[\\}>\\]\\)]|[_$[:alpha:]])\\s*(?=\\{)))(\\?)?",patterns:[{include:"#booleans"},{include:"#stringTemplate"},{include:"#regex"},{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"},"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"},"10":{name:"punctuation.definition.parameters.begin.ballerina"},"11":{name:"punctuation.definition.parameters.end.ballerina"}}},{name:"keyword.operator.optional.ballerina",match:"\\?"},{include:"#multiType"},{include:"#type"},{include:"#paranthesised"}]}]},"type-tuple":{name:"meta.type.tuple.ballerina",begin:"\\[",beginCaptures:{"0":{name:"meta.brace.square.ballerina"}},end:"\\]",endCaptures:{"0":{name:"meta.brace.square.ballerina"}},patterns:[{include:"#self-literal"},{include:"#booleans"},{name:"keyword.operator.rest.ballerina",match:"\\.\\.\\."},{match:"(?)"},{name:"keyword.operator.ballerina",match:"(!|%|\\+|\\-|~=|===|==|=|!=|!==|<|>|&|\\||\\?:|\\.\\.\\.|<=|>=|&&|\\|\\||~|>>|>>>)"},{include:"#types"},{include:"#self-literal"},{include:"#type-primitive"}]},literal:{patterns:[{include:"#booleans"},{include:"#numbers"},{include:"#strings"},{include:"#maps"},{include:"#self-literal"},{include:"#array-literal"}]},"array-literal":{name:"meta.array.literal.ballerina",begin:"\\s*(\\[)",beginCaptures:{"1":{name:"meta.brace.square.ballerina"}},end:"\\]",endCaptures:{"0":{name:"meta.brace.square.ballerina"}},patterns:[{include:"#expression"},{include:"#punctuation-comma"}]},"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"}}},{match:"(?