github-linguist 7.27.0 → 7.29.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/ext/linguist/lex.linguist_yy.c +313 -294
- data/ext/linguist/lex.linguist_yy.h +5 -4
- data/ext/linguist/tokenizer.l +5 -2
- data/grammars/etc.json +1 -1
- data/grammars/inline.edgeql.json +1 -0
- data/grammars/inline.graphql.json +1 -1
- data/grammars/inline.graphql.markdown.codeblock.json +1 -0
- data/grammars/inline.graphql.rb.json +1 -0
- data/grammars/inline.hbs.json +1 -0
- data/grammars/inline.template.json +1 -0
- data/grammars/markdown.commonlisp.codeblock.json +1 -0
- data/grammars/markdown.glimmer.codeblock.json +1 -0
- data/grammars/markdown.lean4.codeblock.json +1 -0
- data/grammars/markdown.move.codeblock.json +1 -0
- data/grammars/mdx.LANGUAGE.codeblock.json +1 -0
- data/grammars/source.8xp.json +1 -0
- data/grammars/source.abl.json +1 -1
- data/grammars/source.al.json +1 -1
- data/grammars/source.amxxpawn.json +1 -0
- data/grammars/source.astro.json +1 -1
- data/grammars/source.bb.json +1 -0
- data/grammars/source.bh.json +1 -0
- data/grammars/source.bicep.json +1 -1
- data/grammars/source.brs.json +1 -1
- data/grammars/source.cds.json +1 -1
- data/grammars/source.cobol.json +1 -1
- data/grammars/source.commonlisp.json +1 -0
- data/grammars/source.cs.json +1 -1
- data/grammars/source.csound.json +1 -1
- data/grammars/source.dart.json +1 -1
- data/grammars/source.denizenscript.json +1 -1
- data/grammars/source.did.json +1 -1
- data/grammars/source.dm.json +1 -1
- data/grammars/source.earthfile.json +1 -1
- data/grammars/source.edgeql.json +1 -0
- data/grammars/source.elvish-transcript.json +1 -1
- data/grammars/source.fsharp.json +1 -1
- data/grammars/source.gdresource.json +1 -1
- data/grammars/source.gdscript.json +1 -1
- data/grammars/source.genero-4gl.json +1 -0
- data/grammars/source.genero-per.json +1 -0
- data/grammars/source.gjs.json +1 -0
- data/grammars/source.gsc.json +1 -1
- data/grammars/source.gts.json +1 -0
- data/grammars/source.hcl.json +1 -0
- data/grammars/source.hcl.terraform.json +1 -0
- data/grammars/source.ice.json +1 -0
- data/grammars/source.julia.json +1 -1
- data/grammars/source.kotlin.json +1 -1
- data/grammars/source.lean4.json +1 -0
- data/grammars/source.lean4.markdown.json +1 -0
- data/grammars/source.lua.json +1 -1
- data/grammars/source.matlab.json +1 -1
- data/grammars/source.mdx.json +1 -1
- data/grammars/source.meta-info.json +1 -1
- data/grammars/source.mojo.json +1 -0
- data/grammars/source.nasal.json +1 -1
- data/grammars/source.nim.json +1 -1
- data/grammars/source.nushell.json +1 -1
- data/grammars/source.odin.json +1 -1
- data/grammars/source.p4.json +1 -1
- data/grammars/source.pip-requirements.json +1 -0
- data/grammars/source.praat.json +1 -0
- data/grammars/source.ql.json +1 -1
- data/grammars/source.raku.json +1 -1
- data/grammars/source.rascal.json +1 -1
- data/grammars/source.rego.json +1 -1
- data/grammars/source.rescript.json +1 -1
- data/grammars/source.roc.json +1 -0
- data/grammars/source.rpgle.json +1 -1
- data/grammars/source.rust.json +1 -1
- data/grammars/source.scala.json +1 -1
- data/grammars/source.sentinel.json +1 -0
- data/grammars/source.slice.json +1 -1
- data/grammars/source.slint.json +1 -0
- data/grammars/source.sourcepawn.json +1 -1
- data/grammars/source.swift.json +1 -1
- data/grammars/source.textgrid.json +1 -0
- data/grammars/source.toit.json +1 -0
- data/grammars/source.ts.json +1 -1
- data/grammars/source.tsx.json +1 -1
- data/grammars/source.vba.json +1 -1
- data/grammars/source.viml.json +1 -1
- data/grammars/sp-jsdoc.injection.json +1 -0
- data/grammars/text.adblock.json +1 -1
- data/grammars/text.html.edge.json +1 -0
- data/grammars/text.html.ember-handlebars.json +1 -0
- data/grammars/text.html.statamic.json +1 -1
- data/grammars/text.md.json +1 -1
- data/grammars/text.srt.json +1 -1
- data/grammars/text.tex.json +1 -1
- data/grammars/text.valve-cfg.json +1 -0
- data/grammars/text.valve-kv.json +1 -0
- data/grammars/version +1 -1
- data/lib/linguist/VERSION +1 -1
- data/lib/linguist/generated.rb +27 -5
- data/lib/linguist/heuristics.yml +23 -2
- data/lib/linguist/languages.json +1 -1
- data/lib/linguist/languages.yml +153 -17
- data/lib/linguist/samples.json +1 -1
- metadata +41 -8
- data/grammars/govulncheck.json +0 -1
- data/grammars/markdown.graphql.codeblock.json +0 -1
- data/grammars/source.dmf.json +0 -1
- data/grammars/source.genero-forms.json +0 -1
- data/grammars/source.genero.json +0 -1
@@ -0,0 +1 @@
|
|
1
|
+
{"name":"BitBake","scopeName":"source.bb","patterns":[{"include":"#escaped-single-quote"},{"include":"#escaped-double-quote"},{"include":"#string"},{"include":"#numeric"},{"include":"#keywords"},{"include":"#comment"},{"include":"#inline-python"},{"include":"#variable-expansion"},{"include":"#functions"},{"include":"#bitbake-operator"},{"include":"#variable-name"},{"include":"#operator"}],"repository":{"bitbake-operator":{"name":"keyword.control.bb","match":"(?\u003c=:)(append|prepend|remove)"},"comment":{"match":"(\\s*)((#)(.*))\\n","captures":{"1":{"name":"punctuation.whitespace.comment.leading.bb"},"2":{"name":"comment.line.bb"},"3":{"name":"comment.line.number-sign.bb"},"4":{"name":"comment.line.text.bb"}}},"escaped-double-quote":{"name":"constant.character.escape.bb","match":"\\\\\""},"escaped-single-quote":{"name":"constant.character.escape.bb","match":"\\\\'"},"functions":{"match":"([a-zA-Z_][\\w_]*)(:([a-zA-Z_][\\w_]*))?(?=\\s*\\()","captures":{"1":{"name":"entity.name.function.python.bb"},"2":{"name":"keyword.operator.bb"},"3":{"name":"keyword.other.bitbake-operator.bb"}}},"inline-python":{"begin":"(\\$\\{(@))","end":"(\\})","patterns":[{"include":"#operator"},{"include":"#keywords"},{"name":"meta.embedded.brackets.begin.bb","match":"(\\[)"},{"name":"meta.embedded.brackets.end.bb","match":"(\\])"},{"include":"#numeric"},{"include":"#functions"},{"include":"#parenthesis-open"},{"include":"#parenthesis-close"},{"include":"#variable-name"},{"include":"#string"}],"beginCaptures":{"1":{"name":"punctuation.definition.template-expression.end.bb"},"2":{"name":"entity.name.function.decorator.python.bb"}},"endCaptures":{"1":{"name":"punctuation.definition.template-expression.end.bb"}}},"keywords":{"patterns":[{"match":"(?\u003c![[:punct:]])\\b(include|require|inherit|inherit_defer|addtask|deltask|after|before|export|echo|if|fi|unset|print|fakeroot|EXPORT_FUNCTIONS|INHERIT)\\b(?![[:punct:]])","captures":{"1":{"name":"keyword.control.bb"}}},{"include":"#python-keywords"},{"match":"\\b(python|def)\\b(\\(?)","captures":{"1":{"name":"storage.type.function.python.bb"}}}]},"numeric":{"name":"constant.numeric.bb","match":"(-|\\.)?[0-9]+(\\.[0-9]+)?"},"operator":{"name":"keyword.operator.bb","match":"(=|\\?=|\\?\\?=|:=|\\+=|=\\+|\\.=|=\\.|\\.|,)"},"parenthesis-close":{"name":"meta.embedded.parenthesis.close.bb","match":"\\)"},"parenthesis-open":{"name":"meta.embedded.parenthesis.open.bb","match":"([\\w])*\\("},"python-keywords":{"patterns":[{"match":"\\b(if|elif|else|for|while|break|continue|return|yield|try|except|finally|raise|assert|import|from|as|pass|del|with|async|await)\\b","captures":{"1":{"name":"keyword.control.bb"}}},{"match":"\\b(def|class|global|nonlocal|and|or|not|in|is|lambda)\\b\\s+","captures":{"1":{"name":"storage.type.function.python.bb"}}},{"name":"constant.language.python.bb","match":"\\b(True|False)\\b"}]},"string":{"patterns":[{"name":"string.quoted.triple.bb","begin":"(\"\"\")","end":"(\"\"\")","patterns":[{"include":"#escaped-single-quote"},{"include":"#escaped-double-quote"},{"include":"#inline-python"},{"include":"#variable-expansion"}]},{"name":"string.quoted.double.bb","begin":"(\")","end":"(\")","patterns":[{"include":"#escaped-double-quote"},{"include":"#inline-python"},{"include":"#variable-expansion"}]},{"name":"string.quoted.single.bb","begin":"(')","end":"(')","patterns":[{"include":"#escaped-single-quote"},{"include":"#inline-python"},{"include":"#variable-expansion"}]}]},"variable-expansion":{"name":"variable.other.names.bb","begin":"(\\$\\{)","end":"(\\})","beginCaptures":{"1":{"name":"punctuation.definition.template-expression.begin.bb"}},"endCaptures":{"1":{"name":"punctuation.definition.template-expression.end.bb"}}},"variable-name":{"match":"([a-zA-Z_][\\w_]*)","captures":{"1":{"name":"variable.other.names.bb"}}}}}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"name":"bh","scopeName":"source.bh","patterns":[{"include":"#comment_like"},{"include":"#numeric_literals"},{"include":"#string_literal"},{"include":"#char_literal"},{"name":"invalid","match":"(?\u003c!@|#)-\\}"},{"name":"constant.language.unit.bh","match":"(\\()\\s*(\\))","captures":{"1":{"name":"punctuation.paren.bh"},"2":{"name":"punctuation.paren.bh"}}},{"name":"constant.language.unit.unboxed.bh","match":"(\\()(#)\\s*(#)(\\))","captures":{"1":{"name":"punctuation.paren.bh"},"2":{"name":"keyword.operator.hash.bh"},"3":{"name":"keyword.operator.hash.bh"},"4":{"name":"punctuation.paren.bh"}}},{"name":"support.constant.tuple.bh","match":"(\\()\\s*,[\\s,]*(\\))","captures":{"1":{"name":"punctuation.paren.bh"},"2":{"name":"punctuation.paren.bh"}}},{"name":"support.constant.tuple.unboxed.bh","match":"(\\()(#)\\s*,[\\s,]*(#)(\\))","captures":{"1":{"name":"punctuation.paren.bh"},"2":{"name":"keyword.operator.hash.bh"},"3":{"name":"keyword.operator.hash.bh"},"4":{"name":"punctuation.paren.bh"}}},{"name":"constant.language.empty-list.bh","match":"(\\[)\\s*(\\])","captures":{"1":{"name":"punctuation.bracket.bh"},"2":{"name":"punctuation.bracket.bh"}}},{"name":"meta.declaration.package.bh","begin":"(\\b(?\u003c!')(package)|^(signature))(\\b(?!'))","end":"(?=\\b(?\u003c!')where\\b(?!'))","patterns":[{"include":"#comment_like"},{"include":"#package_name"},{"include":"#package_exports"},{"name":"invalid","match":"[a-z]+"}],"beginCaptures":{"2":{"name":"keyword.other.package.bh"},"3":{"name":"keyword.other.signature.bh"}}},{"include":"#ffi"},{"name":"meta.declaration.class.bh","begin":"^(\\s*)(class)(\\s+(:?in?)coherent)?(\\b(?!'))","end":"(?x) # Detect end of class declaration:\n # 'where' keyword\n (?=(?\u003c!')\\bwhere\\b(?!')) \n # Decreasing indentation\n |(?=\\}|;) # Explicit indentation\n |^(?! # Implicit indentation: end match on newline *unless* the new line is either:\n \\1\\s+\\S # - more indented, or\n | \\s* # - starts with whitespace, followed by:\n (?: $ # - the end of the line (i.e. empty line), or\n |\\{-[^@] # - the start of a block comment, or\n |--+ # - the start of a single-line comment.\n (?![\\p{S}\\p{P}\u0026\u0026[^(),;\\[\\]{}`_\"']]).*$) # non-symbol\n # The double dash may not be followed by other operator characters\n # (then it would be an operator, not a comment)\n )","patterns":[{"include":"#comment_like"},{"include":"#where"},{"include":"#type_signature"}],"beginCaptures":{"2":{"name":"keyword.other.class.bh"},"3":{"name":"keyword.other.coherent.bh"}}},{"include":"#role_annotation"},{"name":"meta.declaration.pattern.type.bh","begin":"^(\\s*)(pattern)\\s+(.*?)\\s+(::|∷)(?![\\p{S}\\p{P}\u0026\u0026[^(),;\\[\\]`{}_\"']])","end":"(?x) # Detect end of pattern type definition by decreasing indentation:\n (?=\\}|;) # Explicit indentation\n |^(?! # Implicit indentation: end match on newline *unless* the new line is either:\n \\1\\s+\\S # - more indented, or\n | \\s* # - starts with whitespace, followed by:\n (?: $ # - the end of the line (i.e. empty line), or\n |\\{-[^@] # - the start of a block comment, or\n |--+ # - the start of a single-line comment.\n (?![\\p{S}\\p{P}\u0026\u0026[^(),;\\[\\]{}`_\"']]).*$) # non-symbol\n # The double dash may not be followed by other operator characters\n # (then it would be an operator, not a comment)\n )\n","patterns":[{"include":"#type_signature"}],"beginCaptures":{"2":{"name":"keyword.other.pattern.bh"},"3":{"patterns":[{"include":"#comma"},{"include":"#data_constructor"}]},"4":{"name":"keyword.operator.double-colon.bh"}}},{"name":"meta.declaration.pattern.bh","begin":"^\\s*(pattern)\\b(?!')","end":"(?x) # Detect end of pattern type definition by decreasing indentation:\n (?=\\}|;) # Explicit indentation\n |^(?! # Implicit indentation: end match on newline *unless* the new line is either:\n \\1\\s+\\S # - more indented, or\n | \\s* # - starts with whitespace, followed by:\n (?: $ # - the end of the line (i.e. empty line), or\n |\\{-[^@] # - the start of a block comment, or\n |--+ # - the start of a single-line comment.\n (?![\\p{S}\\p{P}\u0026\u0026[^(),;\\[\\]{}`_\"']]).*$) # non-symbol\n # The double dash may not be followed by other operator characters\n # (then it would be an operator, not a comment)\n )\n","patterns":[{"include":"$self"}],"captures":{"1":{"name":"keyword.other.pattern.bh"}}},{"name":"meta.declaration.$2.algebraic.bh","begin":"(?x)\n # Data declaration\n ^(\\s*)(data|newtype|interface|struct)\\s+\n # Keep consuming characters until:\n (((?!\n # the equals symbol or the start of a single-line comment, or\n (?: \n (?\u003c![\\p{S}\\p{P}\u0026\u0026[^(),;\\[\\]`{}_\"']]) # non-symbol\n (?:=|--+)\n (?![\\p{S}\\p{P}\u0026\u0026[^(),;\\[\\]`{}_\"']]) # non-symbol\n )\n # the \"where\" or \"deriving\" keywords, or\n | (?:\\b(?\u003c!')(?:where|deriving)\\b(?!'))\n # the start of a block comment.\n | {-\n #\n ).)*)","end":"(?x) # Detect end of data declaration: \n # Decreasing indentation\n (?=\\}|;) # Explicit indentation\n |^(?! # Implicit indentation: end match on newline *unless* the new line is either:\n \\1\\s+\\S # - more indented, or\n | \\s* # - starts with whitespace, followed by:\n (?: $ # - the end of the line (i.e. empty line), or\n |\\{-[^@] # - the start of a block comment, or\n |--+ # - the start of a single-line comment.\n (?![\\p{S}\\p{P}\u0026\u0026[^(),;\\[\\]{}`_\"']]).*$) # non-symbol\n # The double dash may not be followed by other operator characters\n # (then it would be an operator, not a comment)\n )","patterns":[{"include":"#comment_like"},{"include":"#deriving"},{"include":"#forall"},{"include":"#adt_constructor"},{"include":"#data_context"},{"include":"#record_decl"},{"include":"#type_signature"}],"beginCaptures":{"2":{"name":"keyword.other.$2.bh"},"3":{"name":"keyword.other.$3.bh"},"4":{"patterns":[{"include":"#type_signature"}]}}},{"name":"meta.declaration.type.bh","begin":"(?x)\n # Type declaration\n ^(\\s*)(type)(?:\\s+(instance))?\\s+\n # Keep consuming characters until:\n (((?!\n # the equals symbol, the start of a single-line comment, or a type signature\n (?: \n (?\u003c![\\p{S}\\p{P}\u0026\u0026[^(),;\\[\\]`{}_\"']]) # non-symbol\n (?:=|--+|::|∷)\n (?![\\p{S}\\p{P}\u0026\u0026[^(),;\\[\\]`{}_\"']]) # non-symbol\n )\n # the start of a block comment.\n | {-\n #\n ).)*)","end":"(?x) # Detect end of type definition by decreasing indentation:\n (?=\\}|;) # Explicit indentation\n |^(?! # Implicit indentation: end match on newline *unless* the new line is either:\n \\1\\s+\\S # - more indented, or\n | \\s* # - starts with whitespace, followed by:\n (?: $ # - the end of the line (i.e. empty line), or\n |\\{-[^@] # - the start of a block comment, or\n |--+ # - the start of a single-line comment.\n (?![\\p{S}\\p{P}\u0026\u0026[^(),;\\[\\]{}`_\"']]).*$) # non-symbol\n # The double dash may not be followed by other operator characters\n # (then it would be an operator, not a comment)\n )\n","patterns":[{"include":"#type_signature"}],"beginCaptures":{"2":{"name":"keyword.other.type.bh"},"3":{"name":"keyword.other.instance.bh"},"4":{"patterns":[{"include":"#type_signature"}]}}},{"name":"meta.declaration.instance.bh","begin":"^(\\s*)(instance)(\\b(?!'))","end":"(?x) # Detect end of instance declaration:\n # 'where' keyword\n (?=\\b(?\u003c!')(where)\\b(?!'))\n # Decreasing indentation\n |(?=\\}|;) # Explicit indentation\n |^(?! # Implicit indentation: end match on newline *unless* the new line is either:\n \\1\\s+\\S # - more indented, or\n | \\s* # - starts with whitespace, followed by:\n (?: $ # - the end of the line (i.e. empty line), or\n |\\{-[^@] # - the start of a block comment, or\n |--+ # - the start of a single-line comment.\n (?![\\p{S}\\p{P}\u0026\u0026[^(),;\\[\\]{}`_\"']]).*$) # non-symbol\n # The double dash may not be followed by other operator characters\n # (then it would be an operator, not a comment)\n )\n","patterns":[{"include":"#comment_like"},{"include":"#where"},{"include":"#type_signature"}],"beginCaptures":{"2":{"name":"keyword.other.instance.bh"}}},{"name":"meta.import.bh","begin":"^(\\s*)(import)(\\b(?!'))","end":"(?x) # Detect end of import\n # 'where' keyword\n (?=\\b(?\u003c!')(where)\\b(?!'))\n # Decreasing indentation\n |(?=\\}|;) # Explicit indentation\n |^(?! # Implicit indentation: end match on newline *unless* the new line is either:\n \\1\\s+\\S # - more indented, or\n | \\s* # - starts with whitespace, followed by:\n (?: $ # - the end of the line (i.e. empty line), or\n |\\{-[^@] # - the start of a block comment, or\n |--+ # - the start of a single-line comment.\n (?![\\p{S}\\p{P}\u0026\u0026[^(),;\\[\\]{}`_\"']]).*$) # non-symbol\n # The double dash may not be followed by other operator characters\n # (then it would be an operator, not a comment)\n )\n","patterns":[{"include":"#comment_like"},{"include":"#where"},{"match":"(qualified|as|hiding)","captures":{"1":{"name":"keyword.other.$1.bh"}}},{"include":"#package_name"},{"include":"#package_exports"}],"beginCaptures":{"2":{"name":"keyword.other.import.bh"}}},{"include":"#deriving"},{"include":"#layout_herald"},{"include":"#keyword"},{"name":"meta.fixity-declaration.bh","match":"^\\s*(infix[lr]?)\\s+(.*)","captures":{"1":{"name":"keyword.other.fixity.$1.bh"},"2":{"patterns":[{"include":"#comment_like"},{"include":"#integer_literals"},{"name":"constant.other.operator.infix.bh","match":":[\\p{S}\\p{P}\u0026\u0026[^(),;\\[\\]`{}_\"']]*"},{"include":"#infix_op"}]}}},{"include":"#start_type_signature"},{"include":"#overloaded_label"},{"include":"#type_application"},{"include":"#reserved_symbol"},{"include":"#fun_decl"},{"include":"#qualifier"},{"name":"constant.other.operator.infix.bh","match":":[\\p{S}\\p{P}\u0026\u0026[^(),;\\[\\]`{}_\"']]*"},{"include":"#data_constructor"},{"include":"#prefix_op"},{"include":"#infix_op"},{"begin":"(\\()(#)\\s","end":"(#)(\\))","patterns":[{"include":"#comma"},{"include":"$self"}],"beginCaptures":{"1":{"name":"punctuation.paren.bh"},"2":{"name":"keyword.operator.hash.bh"}},"endCaptures":{"1":{"name":"keyword.operator.hash.bh"},"2":{"name":"punctuation.paren.bh"}}},{"begin":"(\\()","end":"(\\))","patterns":[{"include":"#comma"},{"include":"$self"}],"beginCaptures":{"1":{"name":"punctuation.paren.bh"}},"endCaptures":{"1":{"name":"punctuation.paren.bh"}}},{"include":"#quasi_quote"},{"begin":"(\\[)","end":"(\\])","patterns":[{"include":"#comma"},{"include":"$self"}],"beginCaptures":{"1":{"name":"punctuation.bracket.bh"}},"endCaptures":{"1":{"name":"punctuation.bracket.bh"}}},{"include":"#record"}],"repository":{"adt_constructor":{"patterns":[{"include":"#comment_like"},{"begin":"(?x)\n (?\u003c![\\p{S}\\p{P}\u0026\u0026[^(),;\\[\\]`{}_\"']]) # non-symbol\n (?:(=)|(\\|))\n (?![\\p{S}\\p{P}\u0026\u0026[^(),;\\[\\]`{}_\"']]) # non-symbol","end":"(?x)\n (?: # Infix data constructor\n # First argument\n (?:\n # Simple type\n (?\u003c!')\\b((?:[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'\\.])+)\n # Type inside balanced parentheses\n | ('? # Optional promotion tick\n (?\u003cparen\u003e\n \\( # Opening parenthesis\n (?:\n [^\\(\\)]* # Match non-parentheses\n | \\g\u003cparen\u003e # or recurse into further depth\n )*\n \\) # Closing parenthesis\n )\n )\n # Type inside balanced brackets\n | ('? # Optional promotion tick\n (?\u003cbrac\u003e\n \\[ # Opening bracket\n (?:\n [^\\[\\]]* # Match non-brackets\n | \\g\u003cbrac\u003e # or recurse into further depth\n )*\n \\] # Closing bracket\n )\n )\n )\n # Then either\n \\s*\n # - a symbolic infix constructor, or\n (?:(?\u003c![\\p{S}\\p{P}\u0026\u0026[^(),;\\[\\]`{}_\"']])(:[\\p{S}\\p{P}\u0026\u0026[^(),;\\[\\]`{}_\"']]*)\n # - an alphabetic infix constructor\n | (`)([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)(`)\n )\n ) # Otherwise, prefix data constructor, either:\n | # - an alphabetic data constructor e.g. \"Cons_123\"\n (?:(?\u003c!')\\b([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*))\n | # - a symbolic (prefix) data constructor\n (\\()\\s*(:[\\p{S}\\p{P}\u0026\u0026[^(),;\\[\\]`{}_\"']]*)\\s*(\\))\n | # Otherwise, try to fail early to avoid excessive backtracking (https://github.com/JustusAdam/language-bh/issues/161)\n # Fail when detecting a lowercase identifier and then something not starting with a tick or colon\n (?=\\b(?\u003c!')(?!(?:forall|deriving)\\s)[\\p{Ll}_]\\S+\\s+[^`:])\n # Fail when seeing another equal signs or pipe symbol\n |(?=\n (?\u003c![\\p{S}\\p{P}\u0026\u0026[^(),;\\[\\]`{}_\"']]) # non-symbol\n (?:=|\\|)\n (?![\\p{S}\\p{P}\u0026\u0026[^(),;\\[\\]`{}_\"']]) # non-symbol\n )","patterns":[{"include":"#comment_like"},{"include":"#deriving"},{"include":"#record_decl"},{"include":"#forall"},{"include":"#data_context"},{"include":"#type_signature"}],"beginCaptures":{"1":{"name":"keyword.operator.eq.bh"},"2":{"name":"keyword.operator.pipe.bh"}},"endCaptures":{"1":{"patterns":[{"include":"#type_signature"}]},"10":{"name":"constant.other.bh"},"11":{"name":"punctuation.paren.bh"},"12":{"name":"constant.other.operator.prefix.bh"},"13":{"name":"punctuation.paren.bh"},"2":{"patterns":[{"include":"#type_signature"}]},"4":{"patterns":[{"include":"#type_signature"}]},"6":{"name":"constant.other.operator.infix.bh"},"7":{"name":"punctuation.backtick.bh"},"8":{"name":"constant.other.infix.bh"},"9":{"name":"punctuation.backtick.bh"}}}]},"block_comment":{"name":"comment.block.bh","begin":"\\{-","end":"-\\}","patterns":[{"include":"#block_comment"}],"captures":{"0":{"name":"punctuation.definition.comment.bh"}},"applyEndPatternLast":true},"char_literal":{"name":"string.quoted.single.bh","match":"(?x)\n (?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])\n (')\n (?:\n [\\ -\\[\\]-~] # Basic Char\n | (\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE\n |DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS\n |US|SP|DEL|[abfnrtv\\\\\\\"'\\\\\u0026])) # Escapes\n | (\\\\o[0-7]+) # Octal Escapes\n | (\\\\x[0-9A-Fa-f]+) # Hexadecimal Escapes\n | (\\\\\\^[A-Z@\\[\\]\\\\\\^_]) # Control Chars\n )\n (')\n","captures":{"1":{"name":"punctuation.definition.string.begin.bh"},"2":{"name":"constant.character.escape.bh"},"3":{"name":"constant.character.escape.octal.bh"},"4":{"name":"constant.character.escape.hexadecimal.bh"},"5":{"name":"constant.character.escape.control.bh"},"6":{"name":"punctuation.definition.string.end.bh"}}},"comma":{"name":"punctuation.separator.comma.bh","match":","},"comment_like":{"patterns":[{"include":"#cpp"},{"include":"#pragma"},{"include":"#comments"}]},"comments":{"patterns":[{"name":"comment.block.documentation.bh","begin":"^(\\s*)(--\\s[\\|\\$])","end":"(?=^(?!\\1--+(?![\\p{S}\\p{P}\u0026\u0026[^(),;\\[\\]`{}_\"']])))","beginCaptures":{"2":{"name":"punctuation.whitespace.comment.leading.bh"}}},{"name":"comment.line.documentation.bh","begin":"(^[ \\t]+)?(--(@)\\s)","end":"\\n","beginCaptures":{"1":{"name":"punctuation.whitespace.comment.leading.bh"}}},{"name":"comment.block.documentation.bh","begin":"\\{-\\s?[\\|\\$\\*\\^]","end":"-\\}","patterns":[{"include":"#block_comment"}],"captures":{"0":{"name":"punctuation.definition.comment.bh"}},"applyEndPatternLast":true},{"begin":"(^[ \\t]+)?(?=--+(?![\\p{S}\\p{P}\u0026\u0026[^(),;\\[\\]`{}_\"']]))","end":"(?!\\G)","patterns":[{"name":"comment.line.double-dash.bh","begin":"--","end":"\\n","beginCaptures":{"0":{"name":"punctuation.definition.comment.bh"}}}],"beginCaptures":{"1":{"name":"punctuation.whitespace.comment.leading.bh"}}},{"include":"#block_comment"}]},"cpp":{"name":"meta.preprocessor.c","match":"^(#).*$","captures":{"1":{"name":"punctuation.definition.preprocessor.c"}}},"data_constructor":{"patterns":[{"name":"constant.other.bh","match":"\\b(?\u003c!')[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?![\\.'\\w])"},{"name":"constant.other.operator.bh","match":"(\\()\\s*(:[\\p{S}\\p{P}\u0026\u0026[^(),;\\[\\]`{}_\"']]*)\\s*(\\))"}]},"data_context":{"match":"(?x)\n (.*)\n (?\u003c![\\p{S}\\p{P}\u0026\u0026[^(),;\\[\\]`{}_\"']])\n (=\u003e|⇒)\n (?![\\p{S}\\p{P}\u0026\u0026[^(),;\\[\\]`{}_\"']])\n","captures":{"1":{"patterns":[{"include":"#comment_like"},{"include":"#forall"},{"begin":"(?='?\\()","end":"(?=\\))","patterns":[{"include":"#type_signature"}]},{"begin":"(?='?\\[)","end":"(?=\\])","patterns":[{"include":"#type_signature"}]},{"match":"(?x)\n (\\S*)\\s*\n (?\u003c![\\p{S}\\p{P}\u0026\u0026[^(),;\\[\\]`{}_\"']])\n (::|∷|=)\n (?![\\p{S}\\p{P}\u0026\u0026[^(),;\\[\\]`{}_\"']])","captures":{"1":{"patterns":[{"include":"#comment_like"},{"include":"#forall"},{"include":"#record_decl_field"}]},"2":{"patterns":[{"include":"#reserved_symbol"}]},"3":{"patterns":[{"include":"#type_signature"}]}}},{"include":"#type_signature"}]},"2":{"name":"keyword.operator.big-arrow.bh"}}},"deriving":{"patterns":[{"name":"meta.deriving.bh","begin":"^(\\s*)(deriving)\\s+(?:(via|stock|newtype|anyclass)\\s+)?","end":"(?x) # Detect end of deriving statement\n # Decreasing indentation\n (?=\\}|;) # Explicit indentation\n |^(?! # Implicit indentation: end match on newline *unless* the new line is either:\n \\1\\s+\\S # - more indented, or\n | \\s* # - starts with whitespace, followed by:\n (?: $ # - the end of the line (i.e. empty line), or\n |\\{-[^@] # - the start of a block comment, or\n |--+ # - the start of a single-line comment.\n (?![\\p{S}\\p{P}\u0026\u0026[^(),;\\[\\]{}`_\"']]).*$) # non-symbol\n # The double dash may not be followed by other operator characters\n # (then it would be an operator, not a comment)\n )","patterns":[{"include":"#comment_like"},{"name":"keyword.other.instance.bh","match":"(?\u003c!')\\b(instance)\\b(?!')"},{"match":"(?\u003c!')\\b(via|stock|newtype|anyclass)\\b(?!')","captures":{"1":{"name":"keyword.other.deriving.strategy.$1.bh"}}},{"include":"#type_signature"}],"beginCaptures":{"2":{"name":"keyword.other.deriving.bh"},"3":{"name":"keyword.other.deriving.strategy.$3.bh"}}},{"name":"meta.deriving.bh","begin":"(deriving)(?:\\s+(stock|newtype|anyclass))?\\s*(\\()","end":"(\\))","patterns":[{"include":"#type_signature"}],"beginCaptures":{"1":{"name":"keyword.other.deriving.bh"},"2":{"name":"keyword.other.deriving.strategy.$2.bh"},"3":{"name":"punctuation.paren.bh"}},"endCaptures":{"1":{"name":"punctuation.paren.bh"}}},{"name":"meta.deriving.bh","match":"(?x)\n (deriving)(?:\\s+(stock|newtype|anyclass))?\\s+\n ([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)\n (\\s+(via)\\s+(.*)$)?\n","captures":{"1":{"name":"keyword.other.deriving.bh"},"2":{"name":"keyword.other.deriving.strategy.$2.bh"},"3":{"patterns":[{"include":"#type_signature"}]},"5":{"name":"keyword.other.deriving.strategy.via.bh"},"6":{"patterns":[{"include":"#type_signature"}]}}},{"name":"keyword.other.deriving.strategy.via.bh","match":"(?\u003c!')\\b(via)\\b(?!')"}]},"double_colon":{"match":"\\s*(::|∷)(?![\\p{S}\\p{P}\u0026\u0026[^(),;\\[\\]`{}_\"']])\\s*","captures":{"1":{"name":"keyword.operator.double-colon.bh"}}},"export_constructs":{"patterns":[{"include":"#comment_like"},{"begin":"\\b(?\u003c!')(pattern)\\b(?!')","end":"(?x)\n # Data constructor\n ([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)\n # Prefix form of symbolic constructor\n | (\\()\\s*(:[\\p{S}\\p{P}\u0026\u0026[^(),;\\[\\]`{}_\"']]+)\\s*(\\))","patterns":[{"include":"#comment_like"}],"beginCaptures":{"1":{"name":"keyword.other.pattern.bh"}},"endCaptures":{"1":{"name":"constant.other.bh"},"2":{"name":"punctuation.paren.bh"},"3":{"name":"constant.other.operator.prefix.bh"},"4":{"name":"punctuation.paren.bh"}}},{"begin":"\\b(?\u003c!')(type)\\b(?!')","end":"(?=,|\\))","patterns":[{"include":"#comment_like"},{"include":"#reserved_symbol"},{"include":"#type_constructor"},{"include":"#type_operator"}],"beginCaptures":{"1":{"name":"keyword.other.type.bh"}}},{"include":"#record_wildcard"},{"include":"#reserved_symbol"},{"name":"storage.type.operator.bh","match":"(\\()\\s*(:[\\p{S}\\p{P}\u0026\u0026[^(),;\\[\\]`{}_\"']]*)\\s*(\\))"},{"name":"entity.name.function.bh","match":"(?\u003c!')\\b[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*"},{"name":"storage.type.bh","match":"(?\u003c!')\\b[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*"},{"include":"#prefix_op"}]},"ffi":{"name":"meta.$3.foreign.bh","begin":"^(\\s*)(foreign)\\s+(import|export)\\s+","end":"(?x) # Detect end of FFI block by decreasing indentation:\n (?=\\}|;) # Explicit indentation\n |^(?! # Implicit indentation: end match on newline *unless* the new line is either:\n \\1\\s+\\S # - more indented, or\n | \\s* # - starts with whitespace, followed by:\n (?: $ # - the end of the line (i.e. empty line), or\n |\\{-[^@] # - the start of a block comment, or\n |--+ # - the start of a single-line comment.\n (?![\\p{S}\\p{P}\u0026\u0026[^(),;\\[\\]{}`_\"']]).*$) # non-symbol\n # The double dash may not be followed by other operator characters\n # (then it would be an operator, not a comment)\n )\n","patterns":[{"include":"#comment_like"},{"match":"\\b(?\u003c!')(ccall|cplusplus|dotnet|jvm|stdcall|prim|capi)\\s+","captures":{"1":{"name":"keyword.other.calling-convention.$1.bh"}}},{"begin":"(?=\")|(?=\\b(?\u003c!')([\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)\\b(?!'))","end":"(?=(::|∷)(?![\\p{S}\\p{P}\u0026\u0026[^(),;\\[\\]`{}_\"']]))","patterns":[{"include":"#comment_like"},{"match":"(?x)\n \\b(?\u003c!')(safe|unsafe|interruptible)\\b(?!')\n \\s*\n (\"(?:\\\\\"|[^\"])*\")?\n \\s*\n (?:\n (?:\\b(?\u003c!'')([\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)\\b(?!'))\n |(?:\\(\\s*(?!--+\\))([\\p{S}\\p{P}\u0026\u0026[^(),;\\[\\]`{}_\"']]+)\\s*\\))\n )\n","captures":{"1":{"name":"keyword.other.safety.$1.bh"},"2":{"name":"entity.name.foreign.bh","patterns":[{"include":"#string_literal"}]},"3":{"name":"entity.name.function.bh"},"4":{"name":"entity.name.function.infix.bh"}}},{"match":"(?x)\n \\b(?\u003c!')(safe|unsafe|interruptible)\\b(?!')\n \\s*\n (\"(?:\\\\\"|[^\"])*\")?\n \\s*$\n","captures":{"1":{"name":"keyword.other.safety.$1.bh"},"2":{"name":"entity.name.foreign.bh","patterns":[{"include":"#string_literal"}]}}},{"match":"(?x)\n \"(?:\\\\\"|[^\"])*\"","captures":{"0":{"name":"entity.name.foreign.bh","patterns":[{"include":"#string_literal"}]}}},{"match":"(?x)\n (?:\\b(?\u003c!'')([\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)\\b(?!'))\n |(?:(\\()\\s*(?!--+\\))([\\p{S}\\p{P}\u0026\u0026[^(),;\\[\\]`{}_\"']]+)\\s*(\\)))\n","captures":{"1":{"name":"entity.name.function.bh"},"2":{"name":"punctuation.paren.bh"},"3":{"name":"entity.name.function.infix.bh"},"4":{"name":"punctuation.paren.bh"}}}]},{"include":"#double_colon"},{"include":"#type_signature"}],"beginCaptures":{"2":{"name":"keyword.other.foreign.bh"},"3":{"name":"keyword.other.$3.bh"}}},"float_literals":{"match":"(?x)\n \\b(?\u003c!')\n (?: # Decimal\n ([0-9][_0-9]*\\.[0-9][_0-9]*(?:[eE][-+]?[0-9][_0-9]*)?\n |[0-9][_0-9]*[eE][-+]?[0-9][_0-9]*\n )\n | # Hexadecimal\n (0[xX]_*[0-9a-fA-F][_0-9a-fA-F]*\\.[0-9a-fA-F][_0-9a-fA-F]*(?:[pP][-+]?[0-9][_0-9]*)?\n |0[xX]_*[0-9a-fA-F][_0-9a-fA-F]*[pP][-+]?[0-9][_0-9]*\n )\n )\\b(?!')","captures":{"1":{"name":"constant.numeric.floating.decimal.bh"},"2":{"name":"constant.numeric.floating.hexadecimal.bh"}}},"forall":{"begin":"(?x)\n # Alphabetic forall\n (?:\n \\b(?\u003c!')\n (forall)\n \\b(?!')\n )\n |\n # Symbolic forall\n (?:\n # Not preceded by a symbol except reserved symbols\n (?\u003c![\\p{S}\\p{P}\u0026\u0026[^(),;\\[\\]`{}_\"'']])\n (∀)\n # Not followed by a symbol except reserved symbols\n (?![\\p{S}\\p{P}\u0026\u0026[^(),;\\[\\]`{}_\"'']])\n )","end":"(\\.)|(-\u003e|→)","patterns":[{"include":"#comment_like"},{"include":"#type_variable"},{"include":"#type_signature"}],"beginCaptures":{"1":{"name":"keyword.other.forall.bh"},"2":{"name":"keyword.other.forall.bh"}},"endCaptures":{"1":{"name":"keyword.operator.period.bh"},"2":{"name":"keyword.operator.arrow.bh"}}},"fun_decl":{"name":"meta.function.type-declaration.bh","begin":"(?x)^(\\s*)\n (primitive\\s+)?\n (type\\s+)?\n (?\u003cfn\u003e\n (?:\n [\\p{Ll}_\\p{Lu}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*\\#*\n | \\(\\s*\n (?!--+\\))\n [\\p{S}\\p{P}\u0026\u0026[^(),:;\\[\\]`{}_\"']]\n [\\p{S}\\p{P}\u0026\u0026[^(),;\\[\\]`{}_\"']]*\n \\s*\\)\n )\n (?:\\s*,\\s*\\g\u003cfn\u003e)?\n )\n \\s*(?\u003c![\\p{S}\\p{P}\u0026\u0026[^\\),;\\]`}_\"']])(::|∷)(?![\\p{S}\\p{P}\u0026\u0026[^\\(,;\\[`{_\"']])\n","end":"(?x)\n # End of type annotation:\n # To the left of a reserved symbolic keyword such as = or \u003c-\n (?= \n # non-symbolic character\n (?\u003c![\\p{S}\\p{P}\u0026\u0026[^(),;\\[\\]`{}_\"']])\n # symbolic keyword except (-\u003e)\n ((\u003c-|←)|(=)|(-\u003c|↢)|(-\u003c\u003c|⤛))\n # non-symbolic character\n ([(),;\\[\\]`{}_\"']|[^\\p{S}\\p{P}])\n )\n # Decreasing indentation:\n |(?=\\}|;) # Explicit indentation\n |^(?! # Implicit indentation: end match on newline *unless* the new line is either:\n \\1\\s+\\S # - more indented, or\n | \\s* # - starts with whitespace, followed by:\n (?: $ # - the end of the line (i.e. empty line), or\n |\\{-[^@] # - the start of a block comment, or\n |--+ # - the start of a single-line comment.\n (?![\\p{S}\\p{P}\u0026\u0026[^(),;\\[\\]{}`_\"']]).*$) # non-symbol\n # The double dash may not be followed by other operator characters\n # (then it would be an operator, not a comment)\n )\n","patterns":[{"include":"#type_signature"}],"beginCaptures":{"2":{"name":"keyword.other.primitive.bh"},"3":{"name":"keyword.other.type.bh"},"4":{"name":"entity.name.function.bh","patterns":[{"include":"#reserved_symbol"},{"include":"#prefix_op"}]},"5":{"name":"keyword.operator.double-colon.bh"}}},"gadt_constructor":{"patterns":[{"begin":"(?x)\n ^(\\s*)\n (?:\n (\\b(?\u003c!')[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)\n |(\\()\\s*(:[\\p{S}\\p{P}\u0026\u0026[^(),;\\[\\]`{}_\"']]*)\\s*(\\))\n )","end":"(?x)\n # GADT constructor ends\n (?=\\b(?\u003c!'')deriving\\b(?!')) \n # Decreasing indentation\n |(?=\\}|;) # Explicit indentation\n |^(?! # Implicit indentation: end match on newline *unless* the new line is either:\n \\1\\s+\\S # - more indented, or\n | \\s* # - starts with whitespace, followed by:\n (?: $ # - the end of the line (i.e. empty line), or\n |\\{-[^@] # - the start of a block comment, or\n |--+ # - the start of a single-line comment.\n (?![\\p{S}\\p{P}\u0026\u0026[^(),;\\[\\]{}`_\"']]).*$) # non-symbol\n # The double dash may not be followed by other operator characters\n # (then it would be an operator, not a comment)\n )\n","patterns":[{"include":"#comment_like"},{"include":"#deriving"},{"include":"#double_colon"},{"include":"#record_decl"},{"include":"#type_signature"}],"beginCaptures":{"2":{"name":"constant.other.bh"},"3":{"name":"punctuation.paren.bh"},"4":{"name":"constant.other.operator.prefix.bh"},"5":{"name":"punctuation.paren.bh"}}},{"begin":"(?x)\n (\\b(?\u003c!')[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}]*) # named constructor\n |(\\()\\s*(:[\\p{S}\\p{P}\u0026\u0026[^(),;\\[\\]`{}_\"']]*)\\s*(\\)) # prefix operator","end":"(?=;|\\}|$)","patterns":[{"include":"#comment_like"},{"include":"#deriving"},{"include":"#double_colon"},{"include":"#record_decl"},{"include":"#type_signature"}],"beginCaptures":{"1":{"name":"constant.other.bh"},"2":{"name":"punctuation.paren.bh"},"3":{"name":"constant.other.operator.prefix.bh"},"4":{"name":"punctuation.paren.bh"}}}]},"infix_op":{"patterns":[{"match":"(?x)\n ((?:(?\u003c!'')('')?[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'']*\\.)*)\n (\\#+|[\\p{S}\\p{P}\u0026\u0026[^(),;\\[\\]`{}_\"']]+(?\u003c!\\#))","captures":{"1":{"name":"keyword.operator.promotion.bh"},"2":{"name":"entity.name.namespace.bh"},"3":{"name":"keyword.operator.infix.bh"}}},{"name":"keyword.operator.function.infix.bh","match":"(`)((?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'']*\\.)*)([\\p{Ll}\\p{Lu}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'']*)(`)","captures":{"1":{"name":"punctuation.backtick.bh"},"2":{"name":"entity.name.namespace.bh"},"3":{"patterns":[{"include":"#data_constructor"}]},"4":{"name":"punctuation.backtick.bh"}}}]},"inline_phase":{"name":"meta.inlining-phase.bh","begin":"\\[","end":"\\]","patterns":[{"name":"punctuation.tilde.bh","match":"~"},{"include":"#integer_literals"},{"name":"invalid","match":"\\w*"}],"beginCaptures":{"0":{"name":"punctuation.bracket.bh"}},"endCaptures":{"0":{"name":"punctuation.bracket.bh"}}},"integer_literals":{"match":"(?x)\n \\b(?\u003c!')\n (?:\n ([0-9][_0-9]*) # Decimal integer\n | (0[xX]_*[0-9a-fA-F][_0-9a-fA-F]*) # Hexadecimal integer\n | (0[oO]_*[0-7][_0-7]*) # Octal integer\n | (0[bB]_*[01][_01]*) # Binary integer\n )\n \\b(?!')","captures":{"1":{"name":"constant.numeric.integral.decimal.bh"},"2":{"name":"constant.numeric.integral.hexadecimal.bh"},"3":{"name":"constant.numeric.integral.octal.bh"},"4":{"name":"constant.numeric.integral.binary.bh"}}},"keyword":{"match":"\\b(?\u003c!')(?:(where|when|let|letseq|in)|(do|module|rules|action|if|then|else|case(?:s)?|of|verilog|synthesize))\\b(?!')","captures":{"1":{"name":"keyword.other.$1.bh"},"2":{"name":"keyword.control.$2.bh"}}},"layout_herald":{"begin":"(?x)\n (?:(?\u003c!')\\b(?:(where|let|letseq|do|module|rules|action)|(of))|(\\\\\\s*case(?:s)?))\n \\s*(\\{)(?!-)","end":"(\\})","patterns":[{"include":"$self"},{"name":"punctuation.semicolon.bh","match":";"}],"beginCaptures":{"1":{"name":"keyword.other.$1.bh"},"2":{"name":"keyword.control.of.bh"},"3":{"name":"keyword.control.lambda-case.bh"},"4":{"name":"punctuation.brace.bh"}},"endCaptures":{"1":{"name":"punctuation.brace.bh"}}},"numeric_literals":{"patterns":[{"include":"#float_literals"},{"include":"#integer_literals"}]},"overloaded_label":{"patterns":[{"name":"entity.name.label.bh","match":"(?x) \n (?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}\\p{S}\\p{P}\u0026\u0026[^(,;\\[`{]]) # Disallow closing characters\n (\\#)\n (?:\n # String\n (\"(?:\\\\\"|[^\"])*\")\n # Sequence of allowed label identifiers\n |[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'\\.]+\n )","captures":{"1":{"name":"keyword.operator.prefix.hash.bh"},"2":{"patterns":[{"include":"#string_literal"}]}}}]},"package_exports":{"name":"meta.declaration.exports.bh","begin":"\\(","end":"\\)","patterns":[{"include":"#comment_like"},{"match":"\\b(?\u003c!')(package)\\b(?!')","captures":{"1":{"name":"keyword.other.package.bh"}}},{"include":"#comma"},{"include":"#export_constructs"},{"begin":"\\(","end":"\\)","patterns":[{"include":"#comment_like"},{"include":"#record_wildcard"},{"name":"constant.other.operator.prefix.bh","match":"(\\()\\s*(:[\\p{S}\\p{P}\u0026\u0026[^(),;\\[\\]`{}_\"']]*)\\s*(\\))"},{"include":"#export_constructs"},{"include":"#comma"}],"beginCaptures":{"0":{"name":"punctuation.paren.bh"}},"endCaptures":{"0":{"name":"punctuation.paren.bh"}}}],"beginCaptures":{"0":{"name":"punctuation.paren.bh"}},"endCaptures":{"0":{"name":"punctuation.paren.bh"}},"applyEndPatternLast":true},"package_name":{"name":"entity.name.namespace.bh","match":"(?\u003cconid\u003e[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(\\.\\g\u003cconid\u003e)?)"},"pragma":{"name":"meta.preprocessor.bh","begin":"\\{-#","end":"#-\\}","patterns":[{"include":"#comments"},{"name":"keyword.other.preprocessor.pragma.bh","match":"(?xi) \\b(?\u003c!')\n (synthesize|verilog|noReady|alwaysEnabled|parameter|no_default_clock|no_default_reset|gate_input_clocks|clock_family|clock_prefix|gate_prefix|reset_prefix|alwaysReady|noReady|alwaysEnabled|scanInsert|bitBlast|CLK|RSTN|options|deprecate|properties)\\b(?!')"},{"name":"keyword.other.preprocessor.pragma.bh","match":"(?xi) \\b(?\u003c!')\n (prefixs?|arg_names|ready|enable|result|always_ready|always_enabled)\\b(?!')"}]},"prefix_op":{"patterns":[{"match":"(?x)\n (\\()\\s*(?!(?:--+|\\.\\.)\\))(\\#+|[\\p{S}\\p{P}\u0026\u0026[^(),;\\[\\]`{}_\"']]+(?\u003c!\\#))\\s*(\\))","captures":{"1":{"name":"punctuation.paren.bh"},"2":{"name":"entity.name.function.infix.bh"},"3":{"name":"punctuation.paren.bh"}}}]},"qualifier":{"name":"entity.name.namespace.bh","match":"\\b(?\u003c!')[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*\\."},"quasi_quote":{"patterns":[{"name":"meta.quasi-quotation.bh","begin":"(?x)\n (\\[)\n (e|d|p)?\n (\\|(?:\\|(?!\\]))?)","end":"\\3\\]","patterns":[{"include":"$self"}],"beginCaptures":{"1":{"name":"keyword.operator.quasi-quotation.begin.bh"},"2":{"name":"entity.name.quasi-quoter.bh"},"3":{"name":"keyword.operator.quasi-quotation.begin.bh"}},"endCaptures":{"0":{"name":"keyword.operator.quasi-quotation.end.bh"}}},{"name":"meta.quasi-quotation.bh","begin":"(?x)\n (\\[)\n (t)\n (\\|(?:\\|(?!\\]))?)","end":"\\3\\]","patterns":[{"include":"#type_signature"}],"beginCaptures":{"1":{"name":"keyword.operator.quasi-quotation.begin.bh"},"2":{"name":"entity.name.quasi-quoter.bh"},"3":{"name":"keyword.operator.quasi-quotation.begin.bh"}},"endCaptures":{"0":{"name":"keyword.operator.quasi-quotation.end.bh"}}},{"name":"meta.quasi-quotation.bh meta.embedded.block.$5","begin":"(?x)\n (\\[)\n (?:(\\$\\$)|(\\$))?\n (?!'\\|') # Don't parse ['|'...] as a quasi quotation\n ((?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*\\.)*) # Optional qualifier\n ((?:[^\\s\\p{S}\\p{P}]|['_])*) # Quasi-quoter\n (\\|)","end":"\\|\\]","beginCaptures":{"1":{"name":"keyword.operator.quasi-quotation.begin.bh"},"2":{"name":"keyword.operator.prefix.double-dollar.bh"},"3":{"name":"keyword.operator.prefix.dollar.bh"},"4":{"name":"entity.name.namespace.bh"},"5":{"name":"entity.name.quasi-quoter.bh"},"6":{"name":"keyword.operator.quasi-quotation.begin.bh"}},"endCaptures":{"0":{"name":"keyword.operator.quasi-quotation.end.bh"}}}]},"record":{"name":"meta.record.bh","begin":"({)(?!-)","end":"(?\u003c!-)(})","patterns":[{"include":"#comment_like"},{"include":"#record_field"}],"beginCaptures":{"1":{"name":"punctuation.brace.bh"}},"endCaptures":{"1":{"name":"punctuation.brace.bh"}}},"record_decl":{"name":"meta.record.definition.bh","begin":"({)(?!-)","end":"(?\u003c!-)(})","patterns":[{"include":"#comment_like"},{"include":"#record_decl_field"}],"beginCaptures":{"1":{"name":"punctuation.brace.bh"}},"endCaptures":{"1":{"name":"punctuation.brace.bh"}}},"record_decl_field":{"begin":"(?x)\n (?:([\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)\n |(\\()\\s*([\\p{S}\\p{P}\u0026\u0026[^(),;\\[\\]`{}_\"']]+)\\s*(\\))\n )\n","end":"(,)|(?=})","patterns":[{"include":"#comment_like"},{"include":"#comma"},{"include":"#double_colon"},{"include":"#type_signature"},{"include":"#record_decl_field"}],"beginCaptures":{"1":{"name":"variable.other.member.definition.bh"},"2":{"name":"punctuation.paren.bh"},"3":{"name":"variable.other.member.definition.bh"},"4":{"name":"punctuation.paren.bh"}},"endCaptures":{"1":{"name":"punctuation.comma.bh"}}},"record_field":{"patterns":[{"begin":"(?x)\n (?:([\\p{Ll}\\p{Lu}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}\\.']*)\n |(\\()\\s*([\\p{S}\\p{P}\u0026\u0026[^(),;\\[\\]`{}_\"']]+)\\s*(\\))\n )\n","end":"(,)|(?=})","patterns":[{"include":"#comment_like"},{"include":"#comma"},{"include":"$self"}],"beginCaptures":{"1":{"name":"variable.other.member.bh","patterns":[{"include":"#qualifier"}]},"2":{"name":"punctuation.paren.bh"},"3":{"name":"variable.other.member.bh"},"4":{"name":"punctuation.paren.bh"}},"endCaptures":{"1":{"name":"punctuation.comma.bh"}}},{"include":"#record_wildcard"}]},"record_wildcard":{"match":"(?x)\n (?\u003c![\\p{S}\\p{P}\u0026\u0026[^(),;\\[\\]`{}_\"']])\n (\\.\\.)\n (?![\\p{S}\\p{P}\u0026\u0026[^(),;\\[\\]`{}_\"']])","captures":{"1":{"name":"variable.other.member.wildcard.bh"}}},"reserved_symbol":{"patterns":[{"match":"(?x)\n (?\u003c![\\p{S}\\p{P}\u0026\u0026[^(),;\\[\\]`{}_\"'']])\n (?:\n (\\.\\.)\n |(:)\n |(=)\n |(\\\\) # λ not reserved as it is a letter\n |(\\|)\n |(\u003c-|←)\n |(-\u003e|→)\n |(-\u003c|↢)\n |(-\u003c\u003c|⤛)\n |(\u003e-|⤚)\n |(\u003e\u003e-|⤜)\n )\n (?![\\p{S}\\p{P}\u0026\u0026[^(),;\\[\\]`{}_\"'']])","captures":{"1":{"name":"keyword.operator.double-dot.bh"},"10":{"name":"keyword.operator.arrow.tail.bh"},"11":{"name":"keyword.operator.arrow.tail.double.bh"},"2":{"name":"keyword.operator.colon.bh"},"3":{"name":"keyword.operator.eq.bh"},"4":{"name":"keyword.operator.lambda.bh"},"5":{"name":"keyword.operator.pipe.bh"},"6":{"name":"keyword.operator.arrow.left.bh"},"7":{"name":"keyword.operator.arrow.bh"},"8":{"name":"keyword.operator.arrow.left.tail.bh"},"9":{"name":"keyword.operator.arrow.left.tail.double.bh"}}},{"match":"(?x)\n (?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}\\p{S}\\p{P}\u0026\u0026[^\\#,;\\[`{]]) # Require closing characters\n (\\#+)\n (?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}\\p{S}\\p{P}\u0026\u0026[^),;\\]`}]]) # Disallow opening character","captures":{"1":{"name":"keyword.operator.postfix.hash.bh"}}},{"match":"(?x)\n (?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'\\)\\}\\]]) # Require closing characters\n (@)\n (?=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'\\(\\[\\{]) # Require opening character","captures":{"1":{"name":"keyword.operator.infix.tight.at.bh"}}},{"match":"(?x)\n (?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}\\p{S}\\p{P}\u0026\u0026[^(,;\\[`{]]) # Disallow closing characters\n (?:(~)|(!)|(-)|(\\$\\$)|(\\$)|(%))\n (?=[\\p{Ll}_'\\p{Lu}\\p{Lt}\\p{Nd}\\(\\{\\[]) # Require opening character (non operator symbol)","captures":{"1":{"name":"keyword.operator.prefix.tilde.bh"},"2":{"name":"keyword.operator.prefix.bang.bh"},"3":{"name":"keyword.operator.prefix.minus.bh"},"4":{"name":"keyword.operator.prefix.double-dollar.bh"},"5":{"name":"keyword.operator.prefix.dollar.bh"},"6":{"name":"keyword.operator.prefix.modifier.bh"}}}]},"role_annotation":{"patterns":[{"name":"meta.role-annotation.bh","begin":"^(\\s*)(type)\\s+(role)\\b(?!')","end":"(?x) # Detect end of block by decreasing indentation:\n (?=\\}|;) # Explicit indentation\n |^(?! # Implicit indentation: end match on newline *unless* the new line is either:\n \\1\\s+\\S # - more indented, or\n | \\s* # - starts with whitespace, followed by:\n (?: $ # - the end of the line (i.e. empty line), or\n |\\{-[^@] # - the start of a block comment, or\n |--+ # - the start of a single-line comment.\n (?![\\p{S}\\p{P}\u0026\u0026[^(),;\\[\\]{}`_\"']]).*$) # non-symbol\n # The double dash may not be followed by other operator characters\n # (then it would be an operator, not a comment)\n )","patterns":[{"include":"#comment_like"},{"include":"#type_constructor"},{"match":"\\b(?\u003c!')(nominal|representational|phantom)\\b(?!')","captures":{"1":{"name":"keyword.other.role.$1.bh"}}}],"beginCaptures":{"2":{"name":"keyword.other.type.bh"},"3":{"name":"keyword.other.role.bh"}}}]},"start_type_signature":{"patterns":[{"name":"meta.type-declaration.bh","begin":"^(\\s*)(::|∷)(?![\\p{S}\\p{P}\u0026\u0026[^\\(,;\\[`{_\"']])\\s*","end":"(?x)\n # End type annotation when seeing one of:\n (?=\n \\#?\\) # closing parenthesis\n |\\] # closing bracket\n |, # comma\n |(?\u003c!')\\b(in|then|else|of)\\b(?!') # keyword\n | # symbolic keyword except (-\u003e)\n (?\u003c![\\p{S}\\p{P}\u0026\u0026[^(),;\\[\\]`{}_\"']])\n (?:\n (\\\\|λ)\n |(\u003c-|←)\n |(=)\n |(-\u003c|↢)\n |(-\u003c\u003c|⤛)\n )\n ([(),;\\[\\]`{}_\"']|[^\\p{S}\\p{P}])\n |(\\#|@)-\\} # End of annotation block (pragma)\n # Decreasing indentation:\n | (?=\\}|;) # Explicit indentation\n |^(?! # Implicit indentation: end match on newline *unless* the new line is either:\n \\1\\s*\\S # - equally indented, or\n | \\s* # - starts with whitespace, followed by:\n (?: $ # - the end of the line (i.e. empty line), or\n |\\{-[^@] # - the start of a block comment, or\n |--+ # - the start of a single-line comment.\n (?![\\p{S}\\p{P}\u0026\u0026[^(),;\\[\\]{}`_\"']]).*$) # non-symbol\n # The double dash may not be followed by other operator characters\n # (then it would be an operator, not a comment)\n )\n )","patterns":[{"include":"#type_signature"}],"beginCaptures":{"2":{"name":"keyword.operator.double-colon.bh"}}},{"begin":"(?\u003c![\\p{S}\\p{P}\u0026\u0026[^\\(,;\\[`{_\"']])(::|∷)(?![\\p{S}\\p{P}\u0026\u0026[^\\(,;\\[`{_\"']])","end":"(?x)\n # End type annotation when seeing one of:\n (?=\n \\#?\\) # closing parenthesis\n |\\] # closing bracket\n |, # comma\n |\\b(?\u003c!')(in|then|else|of)\\b(?!') # keyword\n |(\\#|@)-\\} # End of annotation block (Liquidbh or pragma)\n | # symbolic keyword except (-\u003e)\n (?\u003c![\\p{S}\\p{P}\u0026\u0026[^(),;\\[\\]`{}_\"']])\n (?:\n (\\\\|λ)\n |(\u003c-|←)\n |(=)\n |(-\u003c|↢)\n |(-\u003c\u003c|⤛)\n )\n ([(),;\\[\\]`{}_\"']|[^\\p{S}\\p{P}])\n # Indentation \n |(?=\\}|;) # Explicit indentation\n |$ # End of line\n )","patterns":[{"include":"#type_signature"}],"beginCaptures":{"1":{"name":"keyword.operator.double-colon.bh"}}}]},"string_literal":{"name":"string.quoted.double.bh","begin":"\"","end":"\"","patterns":[{"name":"constant.character.escape.bh","match":"\\\\(NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\\"'\\\u0026])"},{"name":"constant.character.escape.octal.bh","match":"\\\\o[0-7]+|\\\\x[0-9A-Fa-f]+|\\\\[0-9]+"},{"name":"constant.character.escape.control.bh","match":"\\\\\\^[A-Z@\\[\\]\\\\\\^_]"},{"begin":"\\\\\\s","end":"\\\\","patterns":[{"name":"invalid.illegal.character-not-allowed-here.bh","match":"\\S+"}],"beginCaptures":{"0":{"name":"constant.character.escape.begin.bh"}},"endCaptures":{"0":{"name":"constant.character.escape.end.bh"}}}],"beginCaptures":{"0":{"name":"punctuation.definition.string.begin.bh"}},"endCaptures":{"0":{"name":"punctuation.definition.string.end.bh"}}},"type_application":{"patterns":[{"name":"meta.type-application.bh","match":"(?\u003c=[\\s,;\\[\\]{}\"])(@)(\\(\\s*\\))","captures":{"1":{"name":"keyword.operator.prefix.at.bh"},"2":{"name":"support.constant.unit.bh"}}},{"name":"meta.type-application.bh","begin":"(?\u003c=[\\s,;\\[\\]{}\"])(@)(')?(\\()","end":"\\)","patterns":[{"include":"#type_signature"}],"beginCaptures":{"1":{"name":"keyword.operator.prefix.at.bh"},"2":{"name":"keyword.operator.promotion.bh"},"3":{"name":"punctuation.paren.bh"}},"endCaptures":{"0":{"name":"punctuation.paren.bh"}}},{"name":"meta.type-application.bh","begin":"(?\u003c=[\\s,;\\[\\]{}\"])(@)(')?(\\[)","end":"\\]","patterns":[{"include":"#type_signature"}],"beginCaptures":{"1":{"name":"keyword.operator.prefix.at.bh"},"2":{"name":"keyword.operator.promotion.bh"},"3":{"name":"punctuation.bracket.bh"}},"endCaptures":{"0":{"name":"punctuation.bracket.bh"}}},{"name":"meta.type-application.bh","begin":"(?\u003c=[\\s,;\\[\\]{}\"])(@)(?=\\\")","end":"(?\u003c=\\\")","patterns":[{"include":"#string_literal"}],"beginCaptures":{"1":{"name":"keyword.operator.prefix.at.bh"}}},{"name":"meta.type-application.bh","begin":"(?\u003c=[\\s,;\\[\\]{}\"])(@)(?=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])","end":"(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])","patterns":[{"include":"#type_signature"}],"beginCaptures":{"1":{"name":"keyword.operator.prefix.at.bh"}}}]},"type_constructor":{"patterns":[{"match":"(?x)\n # Optional promotion tick\n (')?\n # Optional qualified name\n ((?:\\b[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*\\.)*)\n # Type constructor proper\n (\\b[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)","captures":{"1":{"name":"keyword.operator.promotion.bh"},"2":{"name":"entity.name.namespace.bh"},"3":{"name":"storage.type.bh"}}},{"match":"(?x)\n # Optional promotion tick\n (')?\n # Opening parenthesis\n (\\()\\s*\n # Optional qualified name\n ((?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*\\.)*)\n # Type operator proper\n ([\\p{S}\\p{P}\u0026\u0026[^(),;\\[\\]`{}_\"']]+)\n # Closing parenthesis\n \\s*(\\))","captures":{"1":{"name":"keyword.operator.promotion.bh"},"2":{"name":"punctuation.paren.bh"},"3":{"name":"entity.name.namespace.bh"},"4":{"name":"storage.type.operator.bh"},"5":{"name":"punctuation.paren.bh"}}}]},"type_operator":{"patterns":[{"match":"(?x)\n # Optional promotion tick\n (?:(?\u003c!')('))?\n # Optional qualified name\n ((?:\\b[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*\\.)*)\n # Type operator proper\n (?![#@]?-})(\\#+|[\\p{S}\\p{P}\u0026\u0026[^(),;\\[\\]`{}_\"']]+(?\u003c!\\#))\n #((?:[\\p{S}\\p{P}\u0026\u0026[^(),;\\[\\]`{}_\"']\u0026\u0026[^#@]]|[@#](?!-}))+)","captures":{"1":{"name":"keyword.operator.promotion.bh"},"2":{"name":"entity.name.namespace.bh"},"3":{"name":"storage.type.operator.infix.bh"}}},{"match":"(?x)\n # Optional promotion tick\n (')?\n # Opening backtick\n (\\`)\n # Optional qualified name\n ((?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*\\.)*)\n # Type constructor proper\n ([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)\n # Closing backtick\n (`)","captures":{"1":{"name":"keyword.operator.promotion.bh"},"2":{"name":"punctuation.backtick.bh"},"3":{"name":"entity.name.namespace.bh"},"4":{"name":"storage.type.infix.bh"},"5":{"name":"punctuation.backtick.bh"}}}]},"type_signature":{"patterns":[{"include":"#comment_like"},{"name":"support.constant.unit.bh","match":"(')?(\\()\\s*(\\))","captures":{"1":{"name":"keyword.operator.promotion.bh"},"2":{"name":"punctuation.paren.bh"},"3":{"name":"punctuation.paren.bh"}}},{"name":"support.constant.tuple.bh","match":"(')?(\\()\\s*,[\\s,]*(\\))","captures":{"1":{"name":"keyword.operator.promotion.bh"},"2":{"name":"punctuation.paren.bh"},"3":{"name":"punctuation.paren.bh"}}},{"name":"support.constant.empty-list.bh","match":"(')?(\\[)\\s*(\\])","captures":{"1":{"name":"keyword.operator.promotion.bh"},"2":{"name":"punctuation.bracket.bh"},"3":{"name":"punctuation.bracket.bh"}}},{"include":"#integer_literals"},{"name":"keyword.operator.double-colon.bh","match":"(::|∷)(?![\\p{S}\\p{P}\u0026\u0026[^(),;\\[\\]`{}_\"']])"},{"include":"#forall"},{"name":"keyword.operator.big-arrow.bh","match":"=\u003e|⇒"},{"include":"#string_literal"},{"name":"invalid","match":"'[^']'"},{"include":"#type_application"},{"include":"#reserved_symbol"},{"include":"#type_operator"},{"include":"#type_constructor"},{"begin":"(\\()","end":"(\\))","patterns":[{"include":"#comma"},{"include":"#type_signature"}],"beginCaptures":{"1":{"name":"punctuation.paren.bh"}},"endCaptures":{"2":{"name":"punctuation.paren.bh"}}},{"begin":"(')?(\\()","end":"(\\))","patterns":[{"include":"#comma"},{"include":"#type_signature"}],"beginCaptures":{"1":{"name":"keyword.operator.promotion.bh"},"2":{"name":"punctuation.paren.bh"}},"endCaptures":{"1":{"name":"punctuation.paren.bh"}}},{"begin":"(')?(\\[)","end":"(\\])","patterns":[{"include":"#comma"},{"include":"#type_signature"}],"beginCaptures":{"1":{"name":"keyword.operator.promotion.bh"},"2":{"name":"punctuation.bracket.bh"}},"endCaptures":{"1":{"name":"punctuation.bracket.bh"}}},{"include":"#type_variable"}]},"type_variable":{"name":"variable.other.generic-type.bh","match":"\\b(?\u003c!')(?!(?:forall|deriving)\\b(?!'))[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*"},"where":{"patterns":[{"begin":"(?x)\n (?\u003c!')\\b(where)\n \\s*(\\{)(?!-)","end":"(\\})","patterns":[{"include":"$self"},{"name":"punctuation.semicolon.bh","match":";"}],"beginCaptures":{"1":{"name":"keyword.other.where.bh"},"2":{"name":"punctuation.brace.bh"}},"endCaptures":{"1":{"name":"punctuation.brace.bh"}}},{"name":"keyword.other.where.bh","match":"\\b(?\u003c!')(where)\\b(?!')"}]}}}
|
data/grammars/source.bicep.json
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"name":"Bicep","scopeName":"source.bicep","patterns":[{"include":"#expression"},{"include":"#comments"}],"repository":{"array-literal":{"name":"meta.array-literal.bicep","begin":"\\[(?!(?:[ \\t\\r\\n]|\\/\\*(?:\\*(?!\\/)|[^*])*\\*\\/)*\\bfor\\b)","end":"]","patterns":[{"include":"#expression"},{"include":"#comments"}]},"block-comment":{"name":"comment.block.bicep","begin":"/\\*","end":"\\*/"},"comments":{"patterns":[{"include":"#line-comment"},{"include":"#block-comment"}]},"decorator":{"name":"meta.decorator.bicep","begin":"@(?:[ \\t\\r\\n]|\\/\\*(?:\\*(?!\\/)|[^*])*\\*\\/)*(?=\\b[_$[:alpha:]][_$[:alnum:]]*\\b)","patterns":[{"include":"#expression"},{"include":"#comments"}]},"directive":{"name":"meta.directive.bicep","begin":"#\\b[_a-zA-Z-0-9]+\\b","end":"$","patterns":[{"include":"#directive-variable"},{"include":"#comments"}]},"directive-variable":{"name":"keyword.control.declaration.bicep","match":"\\b[_a-zA-Z-0-9]+\\b"},"escape-character":{"name":"constant.character.escape.bicep","match":"\\\\(u{[0-9A-Fa-f]+}|n|r|t|\\\\|'|\\${)"},"expression":{"patterns":[{"include":"#string-literal"},{"include":"#string-verbatim"},{"include":"#numeric-literal"},{"include":"#named-literal"},{"include":"#object-literal"},{"include":"#array-literal"},{"include":"#keyword"},{"include":"#identifier"},{"include":"#function-call"},{"include":"#decorator"},{"include":"#lambda-start"},{"include":"#directive"}]},"function-call":{"name":"meta.function-call.bicep","begin":"(\\b[_$[:alpha:]][_$[:alnum:]]*\\b)(?:[ \\t\\r\\n]|\\/\\*(?:\\*(?!\\/)|[^*])*\\*\\/)*\\(","end":"\\)","patterns":[{"include":"#expression"},{"include":"#comments"}],"beginCaptures":{"1":{"name":"entity.name.function.bicep"}}},"identifier":{"name":"variable.other.readwrite.bicep","match":"\\b[_$[:alpha:]][_$[:alnum:]]*\\b(?!(?:[ \\t\\r\\n]|\\/\\*(?:\\*(?!\\/)|[^*])*\\*\\/)*\\()"},"keyword":{"name":"keyword.control.declaration.bicep","match":"\\b(metadata|targetScope|resource|module|param|var|output|for|in|if|existing|import|as|type|with|using|func|assert)\\b"},"lambda-start":{"name":"meta.lambda-start.bicep","begin":"(\\((?:[ \\t\\r\\n]|\\/\\*(?:\\*(?!\\/)|[^*])*\\*\\/)*\\b[_$[:alpha:]][_$[:alnum:]]*\\b(?:[ \\t\\r\\n]|\\/\\*(?:\\*(?!\\/)|[^*])*\\*\\/)*(,(?:[ \\t\\r\\n]|\\/\\*(?:\\*(?!\\/)|[^*])*\\*\\/)*\\b[_$[:alpha:]][_$[:alnum:]]*\\b(?:[ \\t\\r\\n]|\\/\\*(?:\\*(?!\\/)|[^*])*\\*\\/)*)*\\)|\\((?:[ \\t\\r\\n]|\\/\\*(?:\\*(?!\\/)|[^*])*\\*\\/)*\\)|(?:[ \\t\\r\\n]|\\/\\*(?:\\*(?!\\/)|[^*])*\\*\\/)*\\b[_$[:alpha:]][_$[:alnum:]]*\\b(?:[ \\t\\r\\n]|\\/\\*(?:\\*(?!\\/)|[^*])*\\*\\/)*)(?=(?:[ \\t\\r\\n]|\\/\\*(?:\\*(?!\\/)|[^*])*\\*\\/)*=\u003e)","end":"(?:[ \\t\\r\\n]|\\/\\*(?:\\*(?!\\/)|[^*])*\\*\\/)*=\u003e","beginCaptures":{"1":{"name":"meta.undefined.bicep","patterns":[{"include":"#identifier"},{"include":"#comments"}]}}},"line-comment":{"name":"comment.line.double-slash.bicep","match":"//.*(?=$)"},"named-literal":{"name":"constant.language.bicep","match":"\\b(true|false|null)\\b"},"numeric-literal":{"name":"constant.numeric.bicep","match":"[0-9]+"},"object-literal":{"name":"meta.object-literal.bicep","begin":"{","end":"}","patterns":[{"include":"#object-property-key"},{"include":"#expression"},{"include":"#comments"}]},"object-property-key":{"name":"variable.other.property.bicep","match":"\\b[_$[:alpha:]][_$[:alnum:]]*\\b(?=(?:[ \\t\\r\\n]|\\/\\*(?:\\*(?!\\/)|[^*])*\\*\\/)*:)"},"string-literal":{"name":"string.quoted.single.bicep","begin":"'(?!'')","end":"'","patterns":[{"include":"#escape-character"},{"include":"#string-literal-subst"}]},"string-literal-subst":{"name":"meta.string-literal-subst.bicep","begin":"(?\u003c!\\\\)(\\${)","end":"(})","patterns":[{"include":"#expression"},{"include":"#comments"}],"beginCaptures":{"1":{"name":"punctuation.definition.template-expression.begin.bicep"}},"endCaptures":{"1":{"name":"punctuation.definition.template-expression.end.bicep"}}},"string-verbatim":{"name":"string.quoted.multi.bicep","begin":"'''","end":"'''"}}}
|
1
|
+
{"name":"Bicep","scopeName":"source.bicep","patterns":[{"include":"#expression"},{"include":"#comments"}],"repository":{"array-literal":{"name":"meta.array-literal.bicep","begin":"\\[(?!(?:[ \\t\\r\\n]|\\/\\*(?:\\*(?!\\/)|[^*])*\\*\\/)*\\bfor\\b)","end":"]","patterns":[{"include":"#expression"},{"include":"#comments"}]},"block-comment":{"name":"comment.block.bicep","begin":"/\\*","end":"\\*/"},"comments":{"patterns":[{"include":"#line-comment"},{"include":"#block-comment"}]},"decorator":{"name":"meta.decorator.bicep","begin":"@(?:[ \\t\\r\\n]|\\/\\*(?:\\*(?!\\/)|[^*])*\\*\\/)*(?=\\b[_$[:alpha:]][_$[:alnum:]]*\\b)","patterns":[{"include":"#expression"},{"include":"#comments"}]},"directive":{"name":"meta.directive.bicep","begin":"#\\b[_a-zA-Z-0-9]+\\b","end":"$","patterns":[{"include":"#directive-variable"},{"include":"#comments"}]},"directive-variable":{"name":"keyword.control.declaration.bicep","match":"\\b[_a-zA-Z-0-9]+\\b"},"escape-character":{"name":"constant.character.escape.bicep","match":"\\\\(u{[0-9A-Fa-f]+}|n|r|t|\\\\|'|\\${)"},"expression":{"patterns":[{"include":"#string-literal"},{"include":"#string-verbatim"},{"include":"#numeric-literal"},{"include":"#named-literal"},{"include":"#object-literal"},{"include":"#array-literal"},{"include":"#keyword"},{"include":"#identifier"},{"include":"#function-call"},{"include":"#decorator"},{"include":"#lambda-start"},{"include":"#directive"}]},"function-call":{"name":"meta.function-call.bicep","begin":"(\\b[_$[:alpha:]][_$[:alnum:]]*\\b)(?:[ \\t\\r\\n]|\\/\\*(?:\\*(?!\\/)|[^*])*\\*\\/)*\\(","end":"\\)","patterns":[{"include":"#expression"},{"include":"#comments"}],"beginCaptures":{"1":{"name":"entity.name.function.bicep"}}},"identifier":{"name":"variable.other.readwrite.bicep","match":"\\b[_$[:alpha:]][_$[:alnum:]]*\\b(?!(?:[ \\t\\r\\n]|\\/\\*(?:\\*(?!\\/)|[^*])*\\*\\/)*\\()"},"keyword":{"name":"keyword.control.declaration.bicep","match":"\\b(metadata|targetScope|resource|module|param|var|output|for|in|if|existing|import|as|type|with|using|func|assert|provider)\\b"},"lambda-start":{"name":"meta.lambda-start.bicep","begin":"(\\((?:[ \\t\\r\\n]|\\/\\*(?:\\*(?!\\/)|[^*])*\\*\\/)*\\b[_$[:alpha:]][_$[:alnum:]]*\\b(?:[ \\t\\r\\n]|\\/\\*(?:\\*(?!\\/)|[^*])*\\*\\/)*(,(?:[ \\t\\r\\n]|\\/\\*(?:\\*(?!\\/)|[^*])*\\*\\/)*\\b[_$[:alpha:]][_$[:alnum:]]*\\b(?:[ \\t\\r\\n]|\\/\\*(?:\\*(?!\\/)|[^*])*\\*\\/)*)*\\)|\\((?:[ \\t\\r\\n]|\\/\\*(?:\\*(?!\\/)|[^*])*\\*\\/)*\\)|(?:[ \\t\\r\\n]|\\/\\*(?:\\*(?!\\/)|[^*])*\\*\\/)*\\b[_$[:alpha:]][_$[:alnum:]]*\\b(?:[ \\t\\r\\n]|\\/\\*(?:\\*(?!\\/)|[^*])*\\*\\/)*)(?=(?:[ \\t\\r\\n]|\\/\\*(?:\\*(?!\\/)|[^*])*\\*\\/)*=\u003e)","end":"(?:[ \\t\\r\\n]|\\/\\*(?:\\*(?!\\/)|[^*])*\\*\\/)*=\u003e","beginCaptures":{"1":{"name":"meta.undefined.bicep","patterns":[{"include":"#identifier"},{"include":"#comments"}]}}},"line-comment":{"name":"comment.line.double-slash.bicep","match":"//.*(?=$)"},"named-literal":{"name":"constant.language.bicep","match":"\\b(true|false|null)\\b"},"numeric-literal":{"name":"constant.numeric.bicep","match":"[0-9]+"},"object-literal":{"name":"meta.object-literal.bicep","begin":"{","end":"}","patterns":[{"include":"#object-property-key"},{"include":"#expression"},{"include":"#comments"}]},"object-property-key":{"name":"variable.other.property.bicep","match":"\\b[_$[:alpha:]][_$[:alnum:]]*\\b(?=(?:[ \\t\\r\\n]|\\/\\*(?:\\*(?!\\/)|[^*])*\\*\\/)*:)"},"string-literal":{"name":"string.quoted.single.bicep","begin":"'(?!'')","end":"'","patterns":[{"include":"#escape-character"},{"include":"#string-literal-subst"}]},"string-literal-subst":{"name":"meta.string-literal-subst.bicep","begin":"(?\u003c!\\\\)(\\${)","end":"(})","patterns":[{"include":"#expression"},{"include":"#comments"}],"beginCaptures":{"1":{"name":"punctuation.definition.template-expression.begin.bicep"}},"endCaptures":{"1":{"name":"punctuation.definition.template-expression.end.bicep"}}},"string-verbatim":{"name":"string.quoted.multi.bicep","begin":"'''","end":"'''"}}}
|
data/grammars/source.brs.json
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"name":"BrightScript","scopeName":"source.brs","patterns":[{"include":"#entire_language"}],"repository":{"annotation":{"patterns":[{"match":"^\\s*(@)\\s*([a-zA-Z0-9_]+)","captures":{"1":{"name":"punctuation.decorator.brs"},"2":{"name":"entity.name.function.brs meta.function-call.brs"}}},{"name":"meta.decorator.brs","begin":"(@)\\s*([a-zA-Z0-9_]+)\\s*(\\()","end":"(\\))","patterns":[{"include":"#entire_language"}],"beginCaptures":{"1":{"name":"punctuation.decorator.brs"},"2":{"name":"entity.name.function.brs meta.function-call.brs"},"3":{"name":"meta.brace.round.brs"}},"endCaptures":{"1":{"name":"meta.brace.round.brs"}}}]},"apostrophe_comment":{"name":"comment.line.apostrophe.brs","match":"('[^\\r\\n]*)$","captures":{"1":{"name":"punctuation.definition.comment.brs"}}},"class_declaration":{"match":"(?i:(class)\\s+([a-z0-9_]+)(?:\\s+(extends)(?:\\s+([a-z0-9_]+))?)?)","captures":{"1":{"name":"keyword.other.class.brs"},"2":{"name":"entity.name.type.class.brs"},"3":{"name":"storage.modifier.brs"},"4":{"name":"entity.name.type.class.brs"}}},"class_roku_builtin":{"name":"support.class.brs","match":"(?i:\\bro(R(ss(Parser|Article)|e(sourceManager|ctangle|ad(File|WriteFile)|gistry(Section)?))|G(pio(Button|ControlPort)|lobal)|XML(Element|List)|MessagePort|AppInfo|Array|AssociativeArray|AudioGuide|AudioMetadata|AudioPlayer|AudioResource|Bitmap|Boolean|ByteArray|CaptionRenderer|ChannelStore|CodeRegistrationScreen|Compositor|DataGramSocket|DateTime|DeviceInfo|Double|IntrinsicDouble|EVPCipher|EVPDigest|FileSystem|Float|Font|FontMetrics|FontRegistry|Function|GridScreen|HdmiStatus|HMAC|HttpAgent|ImageCanvas|ImageMetadata|Input|Int|Invalid|KeyboardScreen|List|ListScreen|Localization|LongInteger|MessageDialog|MessagePort|Microphone|OneLineDialog|ParagraphScreen|Path|PinEntryDialog|PosterScreen|ProgramGuide|Regex|Region|Registry|RegistrySection|RSA|Screen|SearchHistory|SearchScreen|SlideShow|SocketAddress|SpringboardScreen|Sprite|StreamSocket|String|SystemLog|TextScreen|TextToSpeech|TextureManager|TextureRequest|Timespan|Tuner|UrlTransfer|VideoPlayer|VideoScreen|XMLElement|XMLList|SGScreen|SGNode|SGNodeEvent|SGScreenEvent|AudioPlayerEvent|CaptionRendererEvent|CECStatusEvent|ChannelStoreEvent|CodeRegistrationScreenEvent|DeviceInfoEvent|FileSystemEvent|GridScreenEvent|HdmiHotPlugEvent|HdmiStatusEvent|ImageCanvasEvent|InputEvent|KeyboardScreenEvent|ListScreenEvent|MessageDialogEvent|MicrophoneEvent|OneLineDialogEvent|ParagraphScreenEvent|PinEntryDialogEvent|PosterScreenEvent|SearchScreenEvent|SlideShowEvent|SocketEvent|SpringboardScreenEvent|SystemLogEvent|TextScreenEvent|TextToSpeechEvent|TextureRequestEvent|TunerEvent|UniversalControlEvent|UrlEvent|VideoPlayerEvent|VideoScreenEvent|B(yteArray|oolean|r(Sub|ightPackage))|S(ystemTime|t(orageInfo|ring( )?)|erialPort( )?)|NetworkConfiguration|C(ontrol(Down( )?|Up|Port)|ecInterface|lockWidget|reateFile)|T(imer|ouchScreen( )?|ext(Field|Widget))|I(RRemote( )?|n(t|valid)|mage(Player|Widget))|D(eviceInfo( )?|at(eTime|agram(Receiver|Sender)))|Url(Transfer|Event)|Video(Mode|Input|Player|Event)|Keyboard(Press( )?| )?|Quadravox(Button( )?|SNS5( )?)|Float|List|A(ssociativeArray|udio(Player|Event)|ppendFile|rray))\\b)"},"comment":{"patterns":[{"include":"#rem_comment"},{"include":"#apostrophe_comment"}]},"component_statement":{"name":"meta.component.brs","begin":"(?i)^[ \t]*(component)\\s+(?:([a-z0-9_]+)|(\".*?\"))(?:\\s+(extends)(?:\\s+(?:([a-z0-9_]+)|(\".*?\")))?)?\\s*","end":"(?i)(?\u003c![_[:alnum:]])(?\u003c!\\.)\\s*(end\\s*component)","patterns":[{"include":"#entire_language"}],"beginCaptures":{"1":{"name":"storage.type.component.brs"},"2":{"name":"entity.name.type.component.brs"},"3":{"name":"string.quoted.double.brs"},"4":{"name":"storage.modifier.extends.brs"},"5":{"name":"entity.name.type.component.brs"},"6":{"name":"string.quoted.double.brs"}},"endCaptures":{"1":{"name":"storage.type.component.brs"}}},"end_class":{"name":"storage.type.class.brs","match":"(?i:\\s*(end\\s*class))"},"end_function":{"name":"keyword.declaration.function","match":"(?i)[ \\t]*end\\s*(sub|function)"},"end_namespace":{"match":"^(?i:\\s*(end\\s*namespace)\\s*(?=['\\n]))","captures":{"1":{"name":"keyword.other.namespace.brs"}}},"end_region_comment":{"name":"keyword.preprocessor.region.brs","match":"^(i?\\s*'\\s*#endregion(\\s*.*)?$)"},"entire_language":{"patterns":[{"include":"#regex"},{"include":"#if_with_paren"},{"include":"#component_statement"},{"include":"#apostrophe_comment"},{"include":"#template_string"},{"include":"#rem_comment"},{"include":"#import_statement"},{"include":"#namespace_declaration"},{"include":"#enum_declaration"},{"include":"#end_namespace"},{"include":"#method"},{"include":"#field"},{"include":"#class_declaration"},{"include":"#end_class"},{"include":"#preprocessor_keywords"},{"include":"#region_comment"},{"include":"#end_region_comment"},{"include":"#global_constants"},{"include":"#keyword_logical_operator"},{"include":"#function_call"},{"include":"#object_properties"},{"include":"#vscode_rale_tracker_entry_comment"},{"include":"#identifiers_with_type_designators"},{"include":"#m_and_global"},{"include":"#keyword_return"},{"include":"#primitive_literal_expression"},{"include":"#function_declaration"},{"include":"#inline_function_declaration"},{"include":"#end_function"},{"include":"#interface_declaration"},{"include":"#storage_types"},{"include":"#loop_keywords"},{"include":"#program_statements"},{"include":"#try_catch"},{"include":"#non_identifier_keywords"},{"include":"#operators"},{"include":"#support_functions"},{"include":"#variables_and_params"},{"include":"#annotation"}]},"enum_declaration":{"name":"meta.enum.declaration.brs","begin":"(?i)\\b(enum)[ \\t]+([a-zA-Z0-9_]+)\\b","end":"(?i)[ \\t]*(end[ \\t]*enum)","patterns":[{"include":"#comment"},{"include":"#annotation"},{"begin":"(?i)\\s*\\b([a-z0-9_]+)(?:[ \\t]*(=))?","end":"\r?\n","patterns":[{"include":"#primitive_literal_expression"}],"beginCaptures":{"1":{"name":"variable.object.enummember.brs"},"2":{"name":"keyword.operator.assignment.brs"}}}],"beginCaptures":{"1":{"name":"storage.type.enum.brs"},"2":{"name":"entity.name.type.enum.brs"}},"endCaptures":{"1":{"name":"storage.type.enum.brs"}}},"field":{"match":"(?i:(public|protected|private)\\s+([a-z0-9_]+))","captures":{"1":{"name":"storage.modifier.brs"},"2":{"name":"variable.object.property.brs"}}},"function_call":{"match":"(?i:\\b([a-z_][a-z0-9_]*)[ \\t]*(?=\\())","captures":{"1":{"name":"entity.name.function.brs"}}},"function_declaration":{"match":"(?i:(?:(public|protected|private)\\s+)?(?:(override)\\s+)?((?:sub|function)[^\\w])(?:\\s+([a-z_][a-z0-9_]*))?)","captures":{"1":{"name":"storage.modifier.brs"},"2":{"name":"storage.modifier.brs"},"3":{"name":"keyword.declaration.function.brs"},"4":{"name":"entity.name.function.brs"}}},"global_constants":{"name":"variable.language","match":"(?i:\\b(line_num)\\b)"},"identifiers_with_type_designators":{"name":"entity.name.variable.local.brs","match":"(?i:\\b([a-z_][a-z0-9_]*)[\\$%!#\u0026])"},"if_with_paren":{"begin":"(?i:(?\u003c!\\.)(if)\\s*\\()","end":"\u0008(then)|\n","patterns":[{"include":"#entire_language"}],"beginCaptures":{"1":{"name":"keyword.control.brs"}},"endCaptures":{"1":{"name":"keyword.control.brs"}}},"import_statement":{"match":"(?i:(import)\\s*(\".*\"))","captures":{"1":{"name":"keyword.control.import.brs"},"2":{"name":"string.quoted.double.brs"}}},"inline_function_declaration":{"match":"(?i)[^a-z0-9_\"](function|sub)\\s*\\(","captures":{"1":{"name":"keyword.declaration.function"},"2":{"name":"keyword.declaration.function"}}},"interface_declaration":{"name":"meta.interface.brs","begin":"(?i)\\b[\\s\\t]*(interface)[\\s\\t]+([a-zA-Z0-9_]+)\\b","end":"(?i)[\\s\\t]*(end[\\s\\t]*interface)","patterns":[{"include":"#comment"},{"include":"#annotation"},{"include":"#interface_function"},{"include":"#interface_field"}],"beginCaptures":{"1":{"name":"storage.type.interface.brs"},"2":{"name":"entity.name.type.interface.brs"}},"endCaptures":{"1":{"name":"storage.type.interface.brs"}}},"interface_field":{"begin":"(?i)\\s*\\b([a-z0-9_]+)(?:[\\s\\t]*(as))?","end":"\r?\n","patterns":[{"include":"#type_expression"},{"include":"#comment"}],"beginCaptures":{"1":{"name":"variable.object.property.brs"},"2":{"name":"keyword.control.as.brs"}}},"interface_function":{"patterns":[{"include":"#interface_function_with_return_type"},{"include":"#interface_function_plain"}]},"interface_function_plain":{"match":"(?i:\\s*\\b(function|sub)[\\s\\t]+([a-z0-9_]+)(\\())(\\))[\\s\\t]","captures":{"1":{"name":"storage.type.function.brs"},"2":{"name":"entity.name.function.member.brs"},"3":{"name":"punctuation.definition.parameters.begin.brs"},"4":{"name":"punctuation.definition.parameters.end.brs"},"5":{"name":"keyword.control.as.brs"}}},"interface_function_with_return_type":{"begin":"(?i:\\s*\\b(function|sub)[\\s\\t]+([a-z0-9_]+)(\\()).*?(\\))[\\s\\t]+(as)","end":"\r?\n","patterns":[{"include":"#type_expression"},{"include":"#comment"}],"beginCaptures":{"1":{"name":"storage.type.function.brs"},"2":{"name":"entity.name.function.member.brs"},"3":{"name":"punctuation.definition.parameters.begin.brs"},"4":{"name":"punctuation.definition.parameters.end.brs"},"5":{"name":"keyword.control.as.brs"}}},"keyword_logical_operator":{"name":"keyword.operator.logical.word","match":"(?i:\\b(and|or|not)\\b)"},"keyword_return":{"match":"(?i:\\b(return)\\b)","captures":{"1":{"name":"keyword.control.flow.return.brs"}}},"loop_keywords":{"name":"keyword.control.loop.brs","match":"(?i:(?\u003c!\\.)(continue\\s+(for|while)\\b))"},"m_and_global":{"match":"(?i:(?\u003c!\\.)\\b(m|global|super)\\b)","captures":{"1":{"name":"keyword.other.this.brs"}}},"method":{"match":"(?i:(?:(public|protected|private)\\s+)?(?:(override)\\s+)?((?:sub|function)[^\\w])(?:\\s+([a-z_][a-z0-9_]*))?)","captures":{"1":{"name":"storage.modifier.brs"},"2":{"name":"storage.modifier.brs"},"3":{"name":"keyword.declaration.function.brs"},"4":{"name":"entity.name.function.brs"}}},"namespace_declaration":{"begin":"(?i:(namespace))\\s+","end":"[\\s'\\n]","patterns":[{"name":"entity.name.type.namespace.brs","match":"(?i:([a-z0-9_]+))"},{"name":"punctuation.accessor.brs","match":"\\."}],"beginCaptures":{"1":{"name":"keyword.other.namespace.brs"}}},"non_identifier_keywords":{"match":"(?i:[^\\.\\w\\\"](then|stop|run|end|each|next|throw)(?!(\\s*:)|[\\d\\w_]))","captures":{"1":{"name":"keyword.control.brs"}}},"object_properties":{"match":"(?i:(?\u003c=\\.)([a-z0-9_][a-z0-9_\\$%!#\u0026]*))","captures":{"1":{"name":"variable.other.object.property.brs"}}},"operators":{"name":"keyword.operator.brs","match":"=|\u003e=|\u003czz|\u003e|\u003c|\u003c\u003e|\\+|-|\\*|\\/|\\^|\u0026|\\b(?i:(And|Not|Or|Mod))\\b"},"preprocessor_keywords":{"patterns":[{"name":"keyword.preprocessor.if.brs","match":"(?i:(#const))"},{"name":"keyword.preprocessor.if.brs","match":"(?i:(#if))"},{"name":"keyword.preprocessor.if.brs","match":"(?i:(#else\\s*if))"},{"name":"keyword.preprocessor.endif.brs","match":"(?i:(#end\\s*if))"},{"name":"keyword.preprocessor.else.brs","match":"(?i:(#else))"}]},"primitive_literal_expression":{"patterns":[{"name":"string.quoted.double.brs","begin":"\"","end":"\"","patterns":[{"name":"constant.character.escape.brs","match":"\"\""},{"include":"#class_roku_builtin"}]},{"name":"constant.numeric.brs","match":"\\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\\.?[0-9]*)|(\\.[0-9]+))((e|E)(\\+|-)?[0-9]+)?)(L|l|UL|ul|u|U|F|f)?\\b"},{"patterns":[{"name":"constant.language.boolean.true.brs","match":"(?i)\\b(true)\\b"},{"name":"constant.language.boolean.false.brs","match":"(?i)\\b(false)\\b"}]},{"match":"(?i:\\b(invalid)\\b)","captures":{"1":{"name":"constant.language.null.brs"}}}]},"program_statements":{"name":"keyword.control.brs","match":"(?i:(?\u003c!\\.)(if|else\\s*if|else|print|library|while|for\\s+each|for|end\\s*for|exit\\s+for|end\\s*while|exit\\s*while|end\\s*if|to|step|in|goto|rem|as)\\b)"},"regex":{"patterns":[{"name":"string.regexp.brs","begin":"(?\u003c!\\+\\+|--|})(?\u003c=[=(:,\\[?+!]|^return|[^\\._$[:alnum:]]return|^case|[^\\._$[:alnum:]]case|=\u003e|\u0026\u0026|\\|\\||\\*\\/)\\s*(\\/)(?![\\/*])(?=(?:[^\\/\\\\\\[\\()]|\\\\.|\\[([^\\]\\\\]|\\\\.)+\\]|\\(([^\\)\\\\]|\\\\.)+\\))+\\/([gmixsuXUAJ]+|(?![\\/\\*])|(?=\\/\\*))(?!\\s*[a-zA-Z0-9_$]))","end":"(/)([gmixsuXUAJ]*)","patterns":[{"include":"#regexp"}],"beginCaptures":{"1":{"name":"punctuation.definition.string.begin.brs"}},"endCaptures":{"1":{"name":"punctuation.definition.string.end.brs"},"2":{"name":"keyword.other.brs"}}},{"name":"string.regexp.brs","begin":"((?\u003c![_$[:alnum:])\\]]|\\+\\+|--|}|\\*\\/)|((?\u003c=^return|[^\\._$[:alnum:]]return|^case|[^\\._$[:alnum:]]case))\\s*)\\/(?![\\/*])(?=(?:[^\\/\\\\\\[]|\\\\.|\\[([^\\]\\\\]|\\\\.)*\\])+\\/([gmixsuXUAJ]+|(?![\\/\\*])|(?=\\/\\*))(?!\\s*[a-zA-Z0-9_$]))","end":"(/)([gmixsuXUAJ]*)","patterns":[{"include":"#regexp"}],"beginCaptures":{"0":{"name":"punctuation.definition.string.begin.brs"}},"endCaptures":{"1":{"name":"punctuation.definition.string.end.brs"},"2":{"name":"keyword.other.brs"}}}]},"regex-character-class":{"patterns":[{"name":"constant.other.character-class.regexp","match":"\\\\[wWsSdDtrnvf]|\\."},{"name":"constant.character.numeric.regexp","match":"\\\\([0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4})"},{"name":"constant.character.control.regexp","match":"\\\\c[A-Z]"},{"name":"constant.character.escape.backslash.regexp","match":"\\\\."}]},"regexp":{"patterns":[{"name":"keyword.control.anchor.regexp","match":"\\\\[bB]|\\^|\\$"},{"match":"\\\\[1-9]\\d*|\\\\k\u003c([a-zA-Z_$][\\w$]*)\u003e","captures":{"0":{"name":"keyword.other.back-reference.regexp"},"1":{"name":"variable.other.regexp"}}},{"name":"keyword.operator.quantifier.regexp","match":"[?+*]|\\{(\\d+,\\d+|\\d+,|,\\d+|\\d+)\\}\\??"},{"name":"keyword.operator.or.regexp","match":"\\|"},{"name":"meta.group.assertion.regexp","begin":"(\\()((\\?=)|(\\?!)|(\\?\\|)|(\\?\u003c=)|(\\?\u003c!))","end":"(\\))","patterns":[{"include":"#regexp"}],"beginCaptures":{"1":{"name":"punctuation.definition.group.regexp"},"2":{"name":"punctuation.definition.group.assertion.regexp"},"3":{"name":"meta.assertion.look-ahead.regexp"},"4":{"name":"meta.assertion.negative-look-ahead.regexp"},"5":{"name":"meta.assertion.look-behind.regexp"},"6":{"name":"meta.assertion.negative-look-behind.regexp"}},"endCaptures":{"1":{"name":"punctuation.definition.group.regexp"}}},{"name":"meta.group.regexp","begin":"\\((?:(\\?[:\u003e])|(?:\\?\u003c([a-zA-Z_$][\\w$]*)\u003e))?","end":"\\)","patterns":[{"include":"#regexp"}],"beginCaptures":{"0":{"name":"punctuation.definition.group.regexp"},"1":{"name":"punctuation.definition.group.no-capture.regexp"},"2":{"name":"variable.other.regexp"}},"endCaptures":{"0":{"name":"punctuation.definition.group.regexp"}}},{"name":"constant.other.character-class.set.regexp","begin":"(\\[)(\\^)?","end":"(\\])","patterns":[{"name":"constant.other.character-class.range.regexp","match":"(?:.|(\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\\\c[A-Z])|(\\\\.))\\-(?:[^\\]\\\\]|(\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\\\c[A-Z])|(\\\\.))","captures":{"1":{"name":"constant.character.numeric.regexp"},"2":{"name":"constant.character.control.regexp"},"3":{"name":"constant.character.escape.backslash.regexp"},"4":{"name":"constant.character.numeric.regexp"},"5":{"name":"constant.character.control.regexp"},"6":{"name":"constant.character.escape.backslash.regexp"}}},{"include":"#regex-character-class"}],"beginCaptures":{"1":{"name":"punctuation.definition.character-class.regexp"},"2":{"name":"keyword.operator.negation.regexp"}},"endCaptures":{"1":{"name":"punctuation.definition.character-class.regexp"}}},{"include":"#regex-character-class"}]},"region_comment":{"match":"(?i:^\\s*('\\s*#region)(?:(\\s+.*)?))$","captures":{"1":{"name":"keyword.preprocessor.region.brs"},"2":{"name":"string.unquoted.preprocessor.message.brs"}}},"rem_comment":{"name":"comment.line.rem.brs","match":"^\\s*?(?i:rem\\s.*)$","captures":{"1":{"name":"punctuation.definition.comment.brs"}}},"storage_types":{"match":"(?i:\\b(boolean|integer|longinteger|float|double|string|object|function|sub|interface|dynamic|brsub|dim|const)\\b)","captures":{"1":{"name":"storage.type.brs"}}},"support_builtin_functions":{"name":"support.function.brs","match":"(?i:\\b(GetLastRun(RuntimeError|CompileError)|Rnd|Box|Type|objfun|pos|eval)\\b)"},"support_component_functions":{"name":"support.function.component.brs","match":"(?i:\\b(R(ight|e(set(Index)?|ad(B(yte(IfAvailable)?|lock)|File|Line)?|move(Head|Tail|Index)))|Ge(nXML(Header)?|t(Res(ource|ponse(Headers|Code))|X|M(i(nute|llisecond)|o(nth|de(l)?)|essage)|B(yte(sPerBlock|Array)|o(o(tVersion(Number)?|lean)|dy))|S(t(orageCardInfo|a(ndards|tusByte)|ring(Count)?)|i(zeInMegabytes|gnedByte)|ource(Host|Identity|Port)|ub|ec(tionList|ond)|afe(X|Height|Y|Width))|H(o(stName|ur)|e(ight|ad))|Y(ear)?|N(extArticle|ame(dElements)?)|C(hildElements|ontrols|urrent(Standard|Con(trolValue|fig)|Input))|T(i(tle|me(Server|Zone))|o(String|File)|ext|ail)|I(n(t|dex|puts)|dentity)|ZoneDateTime|D(e(scription|vice(BootCount|Name|U(niqueId|ptime)))|a(y(OfWeek)?|ta))|U(se(dInMegabytes|rData)|tcDateTime)|Ent(ityEncode|ry)|V(ersion(Number)?|alue)|KeyList|F(ileSystemType|loat|a(ilureReason|mily)|reeInMegabytes)|W(holeState|idth)|LocalDateTime|Attributes))|M(id|D5|ap(StereoOutput(Aux)?|DigitalOutput))|Boolean|S(h(ift|ow)|canWiFi|t((Clear|Display)?|art|r(i(ng)?)?)|implify|ubtract(Milliseconds|Seconds)|e(nd(RawMessage|B(yte|lock)|Line)?|t(R(ollOverRegion|e(s(ize|olution)|c(tangle|eiveEol)))|X|M(i(n(imumTransferRate|ute)|llisecond)|o(nth|de(CaseSensitive)?)|ultiscreenBezel)|B(yteEventPort|o(olean|dy)|a(ckground(Bitmap|Color)|udRate))|S(t(andard|ring)|ub|e(ndEol|cond)|afeTextRegion)|H(o(stName|ur)|eight)|Y(ear)?|Name|C(hannelVolumes(Aux)?|ontrolValue|ursor(Bitmap|Pos(ition)?))|Time(Server|Zone)?|I(n(t|put)|P4(Gateway|Broadcast|Netmask|Address))|OutputState|D(HCP|omain|e(stination|fault(Mode|Transistion))|a(y(OfWeek)?|te(Time)?))|U(ser(Data|AndPassword)|tcDateTime|rl)|P(o(werSaveMode|rt)|assword|roxy)|E(ntry|cho|ol)|V(iewMode|olume(Aux)?)|F(o(nt|r(egroundColor|groundColor))|l(oat|ashRate))|W(holeState|i(dth|Fi(Passphrase|ESSID)))|L(ineEventPort|o(calDateTime|opMode)|auguage)|Audio(Mode(Aux)?|Stream(Aux)?|Output(Aux)?))|ek(Relative|ToEnd|Absolute)))|H(ide|ead|asAttribute)|N(ormalize|ext)|C(hr|ount|urrentPosition|l(s|ear(Region|Events)?))|T(o(Base64String|HexString|kenize|AsciiString)|estInter(netConnectivity|face)|rim)|I(s(MousePresent|N(ext|ame)|InputActive|Empty|Valid|LittleEndianCPU)|n(str|te(ger)|valid))|Object|D(ynamic|isplay(Preload|File(Ex)?)|o(uble|esExist)|elete)|U(n(shift|pack)|Case)|P(o(st(Message|From(String|File))|p(String(s)?)?)|ush(String)?|eek|lay(StaticImage|File)?|arse(String|File)?|reloadFile(Ex)?)|E(nable(R(ollover|egion)|Cursor|Input|Output)|xists)|Void|F(indIndex|unction|l(oat|ush)|rom(Base64String|HexString|AsciiString))|W(hile|aitMessage|rite(File)?)|L(ookup|e(n|ft))|A(s(ync(GetTo(String|File)|Head|PostFrom(String|File)|Flush)|c)?|tEof|dd(Re(ctangle(Region|_region)|place)|Milliseconds|BodyElement|Seconds|Head(er)?|CircleRegion|Tail|DNSServer|E(vent|lement(WithBody)?)|Attribute)|pp(end(String|File)?|ly))|ToStr)\\b)"},"support_functions":{"patterns":[{"include":"#support_builtin_functions"},{"include":"#support_global_functions"},{"include":"#support_global_string_functions"},{"include":"#support_global_math_functions"},{"include":"#support_component_functions"}]},"support_global_functions":{"name":"support.function.brs","match":"(?i:\\b(Re(adAsciiFile|bootSystem)|GetInterface|MatchFiles|Sleep|C(opyFile|reate(Directory|Object))|Delete(Directory|File)|UpTime|FormatDrive|ListDir|W(ait|riteAsciiFile))\\b)"},"support_global_math_functions":{"name":"support.function.brs","match":"(?i:\\b(S(in|qr|gn)|C(sng|dbl|os)|Tan|Int|Exp|Fix|Log|A(tn|bs))\\b)"},"support_global_string_functions":{"name":"support.function.brs","match":"(?i:\\b(Right|Mid|Str(i(ng(i)?)?)?|Chr|Instr|UCase|Val|Asc|L(Case|e(n|ft)))\\b)"},"template_string":{"begin":"(`)","end":"(`)","patterns":[{"begin":"(\\$\\{)","end":"(\\})","patterns":[{"include":"#entire_language"}],"beginCaptures":{"1":{"name":"punctuation.definition.template-expression.begin.brs"}},"endCaptures":{"1":{"name":"punctuation.definition.template-expression.end"}}},{"name":"string.template.brs","match":"(.)"}],"beginCaptures":{"1":{"name":"string.template.brs"}},"endCaptures":{"1":{"name":"string.template.brs"}}},"try_catch":{"name":"keyword.control.trycatch.brs","match":"(?i:\\b(try|catch|(end[ \\t]*try))\\b)"},"type_expression":{"patterns":[{"match":"(?i)(boolean|integer|longinteger|float|double|string)","captures":{"1":{"name":"storage.type.brs"}}},{"match":"(?i)\\b([a-z0-9_]+)","captures":{"1":{"name":"support.type.brs entity.name.type.brs"}}}]},"variables_and_params":{"match":"(?i:(?:\\b(new)\\s)?\\b(?\u003c!\\.)([a-z_][a-z0-9_\\$%!#]*)\\b)","captures":{"1":{"name":"keyword.operator.new.brs"},"2":{"name":"entity.name.variable.local.brs"}}},"vscode_rale_tracker_entry_comment":{"name":"keyword.preprocessor.brs","match":"('\\s*vscode_rale_tracker_entry[^\\S\\r\\n]*)"}}}
|
1
|
+
{"name":"BrightScript","scopeName":"source.brs","patterns":[{"include":"#entire_language"}],"repository":{"annotation":{"patterns":[{"match":"^\\s*(@)\\s*([a-zA-Z0-9_]+)","captures":{"1":{"name":"punctuation.decorator.brs"},"2":{"name":"entity.name.function.brs meta.function-call.brs"}}},{"name":"meta.decorator.brs","begin":"(@)\\s*([a-zA-Z0-9_]+)\\s*(\\()","end":"(\\))","patterns":[{"include":"#entire_language"}],"beginCaptures":{"1":{"name":"punctuation.decorator.brs"},"2":{"name":"entity.name.function.brs meta.function-call.brs"},"3":{"name":"meta.brace.round.brs"}},"endCaptures":{"1":{"name":"meta.brace.round.brs"}}}]},"apostrophe_comment":{"name":"comment.line.apostrophe.brs","match":"('[^\\r\\n]*)$","captures":{"1":{"name":"punctuation.definition.comment.brs"}}},"class_declaration":{"match":"(?i:(class)\\s+([a-z0-9_]+)(?:\\s+(extends)(?:\\s+([a-z0-9_]+))?)?)","captures":{"1":{"name":"keyword.other.class.brs"},"2":{"name":"entity.name.type.class.brs"},"3":{"name":"storage.modifier.brs"},"4":{"name":"entity.name.type.class.brs"}}},"class_roku_builtin":{"name":"support.class.brs","match":"(?i:\\bro(R(ss(Parser|Article)|e(sourceManager|ctangle|ad(File|WriteFile)|gistry(Section)?))|G(pio(Button|ControlPort)|lobal)|XML(Element|List)|MessagePort|AppInfo|Array|AssociativeArray|AudioGuide|AudioMetadata|AudioPlayer|AudioResource|Bitmap|Boolean|ByteArray|CaptionRenderer|ChannelStore|CodeRegistrationScreen|Compositor|DataGramSocket|DateTime|DeviceInfo|Double|IntrinsicDouble|EVPCipher|EVPDigest|FileSystem|Float|Font|FontMetrics|FontRegistry|Function|GridScreen|HdmiStatus|HMAC|HttpAgent|ImageCanvas|ImageMetadata|Input|Int|Invalid|KeyboardScreen|List|ListScreen|Localization|LongInteger|MessageDialog|MessagePort|Microphone|OneLineDialog|ParagraphScreen|Path|PinEntryDialog|PosterScreen|ProgramGuide|Regex|Region|Registry|RegistrySection|RSA|Screen|SearchHistory|SearchScreen|SlideShow|SocketAddress|SpringboardScreen|Sprite|StreamSocket|String|SystemLog|TextScreen|TextToSpeech|TextureManager|TextureRequest|Timespan|Tuner|UrlTransfer|VideoPlayer|VideoScreen|XMLElement|XMLList|SGScreen|SGNode|SGNodeEvent|SGScreenEvent|AudioPlayerEvent|CaptionRendererEvent|CECStatusEvent|ChannelStoreEvent|CodeRegistrationScreenEvent|DeviceInfoEvent|FileSystemEvent|GridScreenEvent|HdmiHotPlugEvent|HdmiStatusEvent|ImageCanvasEvent|InputEvent|KeyboardScreenEvent|ListScreenEvent|MessageDialogEvent|MicrophoneEvent|OneLineDialogEvent|ParagraphScreenEvent|PinEntryDialogEvent|PosterScreenEvent|SearchScreenEvent|SlideShowEvent|SocketEvent|SpringboardScreenEvent|SystemLogEvent|TextScreenEvent|TextToSpeechEvent|TextureRequestEvent|TunerEvent|UniversalControlEvent|UrlEvent|VideoPlayerEvent|VideoScreenEvent|B(yteArray|oolean|r(Sub|ightPackage))|S(ystemTime|t(orageInfo|ring( )?)|erialPort( )?)|NetworkConfiguration|C(ontrol(Down( )?|Up|Port)|ecInterface|lockWidget|reateFile)|T(imer|ouchScreen( )?|ext(Field|Widget))|I(RRemote( )?|n(t|valid)|mage(Player|Widget))|D(eviceInfo( )?|at(eTime|agram(Receiver|Sender)))|Url(Transfer|Event)|Video(Mode|Input|Player|Event)|Keyboard(Press( )?| )?|Quadravox(Button( )?|SNS5( )?)|Float|List|A(ssociativeArray|udio(Player|Event)|ppendFile|rray))\\b)"},"comment":{"patterns":[{"include":"#rem_comment"},{"include":"#apostrophe_comment"}]},"component_statement":{"name":"meta.component.brs","begin":"(?i)^[ \t]*(component)\\s+(?:([a-z0-9_]+)|(\".*?\"))(?:\\s+(extends)(?:\\s+(?:([a-z0-9_]+)|(\".*?\")))?)?\\s*","end":"(?i)(?\u003c![_[:alnum:]])(?\u003c!\\.)\\s*(end\\s*component)","patterns":[{"include":"#entire_language"}],"beginCaptures":{"1":{"name":"storage.type.component.brs"},"2":{"name":"entity.name.type.component.brs"},"3":{"name":"string.quoted.double.brs"},"4":{"name":"storage.modifier.extends.brs"},"5":{"name":"entity.name.type.component.brs"},"6":{"name":"string.quoted.double.brs"}},"endCaptures":{"1":{"name":"storage.type.component.brs"}}},"end_class":{"name":"storage.type.class.brs","match":"(?i:\\s*(end\\s*class))"},"end_function":{"name":"keyword.declaration.function","match":"(?i)[ \\t]*end\\s*(sub|function)"},"end_namespace":{"match":"^(?i:\\s*(end\\s*namespace)\\s*(?=['\\n]))","captures":{"1":{"name":"keyword.other.namespace.brs"}}},"end_region_comment":{"name":"keyword.preprocessor.region.brs","match":"^(i?\\s*'\\s*#endregion(\\s*.*)?$)"},"entire_language":{"patterns":[{"include":"#regex"},{"include":"#if_with_paren"},{"include":"#component_statement"},{"include":"#apostrophe_comment"},{"include":"#template_string"},{"include":"#rem_comment"},{"include":"#import_statement"},{"include":"#namespace_declaration"},{"include":"#enum_declaration"},{"include":"#end_namespace"},{"include":"#method"},{"include":"#field"},{"include":"#class_declaration"},{"include":"#end_class"},{"include":"#preprocessor_keywords"},{"include":"#region_comment"},{"include":"#end_region_comment"},{"include":"#global_constants"},{"include":"#keyword_logical_operator"},{"include":"#function_call"},{"include":"#object_properties"},{"include":"#vscode_rale_tracker_entry_comment"},{"include":"#identifiers_with_type_designators"},{"include":"#m_and_global"},{"include":"#keyword_return"},{"include":"#primitive_literal_expression"},{"include":"#function_declaration"},{"include":"#inline_function_declaration"},{"include":"#end_function"},{"include":"#interface_declaration"},{"include":"#storage_types"},{"include":"#loop_keywords"},{"include":"#program_statements"},{"include":"#try_catch"},{"include":"#non_identifier_keywords"},{"include":"#operators"},{"include":"#support_functions"},{"include":"#variables_and_params"},{"include":"#annotation"}]},"enum_declaration":{"name":"meta.enum.declaration.brs","begin":"(?i)\\b(enum)[ \\t]+([a-zA-Z0-9_]+)\\b","end":"(?i)[ \\t]*(end[ \\t]*enum)","patterns":[{"include":"#comment"},{"include":"#annotation"},{"begin":"(?i)\\s*\\b([a-z0-9_]+)(?:[ \\t]*(=))?","end":"\r?\n","patterns":[{"include":"#primitive_literal_expression"}],"beginCaptures":{"1":{"name":"variable.object.enummember.brs"},"2":{"name":"keyword.operator.assignment.brs"}}}],"beginCaptures":{"1":{"name":"storage.type.enum.brs"},"2":{"name":"entity.name.type.enum.brs"}},"endCaptures":{"1":{"name":"storage.type.enum.brs"}}},"field":{"match":"(?i:(public|protected|private)\\s+([a-z0-9_]+))","captures":{"1":{"name":"storage.modifier.brs"},"2":{"name":"variable.object.property.brs"}}},"function_call":{"match":"(?i:\\b([a-z_][a-z0-9_]*)[ \\t]*(?=\\())","captures":{"1":{"name":"entity.name.function.brs"}}},"function_declaration":{"match":"(?i:(?:(public|protected|private)\\s+)?(?:(override)\\s+)?((?:sub|function)[^\\w])(?:\\s+([a-z_][a-z0-9_]*))?)","captures":{"1":{"name":"storage.modifier.brs"},"2":{"name":"storage.modifier.brs"},"3":{"name":"keyword.declaration.function.brs"},"4":{"name":"entity.name.function.brs"}}},"global_constants":{"name":"variable.language","match":"(?i:\\b(line_num)\\b)"},"identifiers_with_type_designators":{"name":"entity.name.variable.local.brs","match":"(?i:\\b([a-z_][a-z0-9_]*)[\\$%!#\u0026])"},"if_with_paren":{"begin":"(?i:(?\u003c!\\.)(if)\\s*\\()","end":"\u0008(then)|\n","patterns":[{"include":"#entire_language"}],"beginCaptures":{"1":{"name":"keyword.control.brs"}},"endCaptures":{"1":{"name":"keyword.control.brs"}}},"import_statement":{"match":"(?i:(import)\\s*(\".*\"))","captures":{"1":{"name":"keyword.control.import.brs"},"2":{"name":"string.quoted.double.brs"}}},"inline_function_declaration":{"match":"(?i)[^a-z0-9_\"](function|sub)\\s*\\(","captures":{"1":{"name":"keyword.declaration.function"},"2":{"name":"keyword.declaration.function"}}},"interface_declaration":{"name":"meta.interface.brs","begin":"(?i)\\b[\\s\\t]*(interface)[\\s\\t]+([a-zA-Z0-9_]+)\\b","end":"(?i)[\\s\\t]*(end[\\s\\t]*interface)","patterns":[{"include":"#comment"},{"include":"#annotation"},{"include":"#interface_function"},{"include":"#interface_field"}],"beginCaptures":{"1":{"name":"storage.type.interface.brs"},"2":{"name":"entity.name.type.interface.brs"}},"endCaptures":{"1":{"name":"storage.type.interface.brs"}}},"interface_field":{"begin":"(?i)\\s*\\b([a-z0-9_]+)(?:[\\s\\t]*(as))?","end":"\r?\n","patterns":[{"include":"#type_expression"},{"include":"#comment"}],"beginCaptures":{"1":{"name":"variable.object.property.brs"},"2":{"name":"keyword.control.as.brs"}}},"interface_function":{"patterns":[{"include":"#interface_function_with_return_type"},{"include":"#interface_function_plain"}]},"interface_function_plain":{"match":"(?i:\\s*\\b(function|sub)[\\s\\t]+([a-z0-9_]+)(\\())(\\))[\\s\\t]","captures":{"1":{"name":"storage.type.function.brs"},"2":{"name":"entity.name.function.member.brs"},"3":{"name":"punctuation.definition.parameters.begin.brs"},"4":{"name":"punctuation.definition.parameters.end.brs"},"5":{"name":"keyword.control.as.brs"}}},"interface_function_with_return_type":{"begin":"(?i:\\s*\\b(function|sub)[\\s\\t]+([a-z0-9_]+)(\\()).*?(\\))[\\s\\t]+(as)","end":"\r?\n","patterns":[{"include":"#type_expression"},{"include":"#comment"}],"beginCaptures":{"1":{"name":"storage.type.function.brs"},"2":{"name":"entity.name.function.member.brs"},"3":{"name":"punctuation.definition.parameters.begin.brs"},"4":{"name":"punctuation.definition.parameters.end.brs"},"5":{"name":"keyword.control.as.brs"}}},"keyword_logical_operator":{"name":"keyword.operator.logical.word","match":"(?i:\\b(and|or|not)\\b)"},"keyword_return":{"match":"(?i:\\b(return)\\b)","captures":{"1":{"name":"keyword.control.flow.return.brs"}}},"loop_keywords":{"name":"keyword.control.loop.brs","match":"(?i:(?\u003c!\\.)(continue\\s+(for|while)\\b))"},"m_and_global":{"match":"(?i:(?\u003c!\\.)\\b(m|global|super)\\b)","captures":{"1":{"name":"keyword.other.this.brs"}}},"method":{"match":"(?i:(?:(public|protected|private)\\s+)?(?:(override)\\s+)?((?:sub|function)[^\\w])(?:\\s+([a-z_][a-z0-9_]*))?)","captures":{"1":{"name":"storage.modifier.brs"},"2":{"name":"storage.modifier.brs"},"3":{"name":"keyword.declaration.function.brs"},"4":{"name":"entity.name.function.brs"}}},"namespace_declaration":{"begin":"(?i:(namespace))\\s+","end":"[\\s'\\n]","patterns":[{"name":"entity.name.type.namespace.brs","match":"(?i:([a-z0-9_]+))"},{"name":"punctuation.accessor.brs","match":"\\."}],"beginCaptures":{"1":{"name":"keyword.other.namespace.brs"}}},"non_identifier_keywords":{"match":"(?i:[^\\.\\w\\\"](then|stop|run|end|each|next|throw)(?!(\\s*:)|[\\d\\w_]))","captures":{"1":{"name":"keyword.control.brs"}}},"object_properties":{"match":"(?i:(?\u003c=\\.)([a-z0-9_][a-z0-9_\\$%!#\u0026]*))","captures":{"1":{"name":"variable.other.object.property.brs"}}},"operators":{"name":"keyword.operator.brs","match":"=|\u003e=|\u003czz|\u003e|\u003c|\u003c\u003e|\\+|-|\\*|\\/|\\^|\u0026|\\b(?i:(And|Not|Or|Mod))\\b"},"preprocessor_keywords":{"patterns":[{"name":"keyword.preprocessor.const.brs","match":"(?i:(#[ \t]*const))"},{"name":"keyword.preprocessor.if.brs","match":"(?i:(#[ \t]*if))"},{"name":"keyword.preprocessor.elseif.brs","match":"(?i:(#[ \t]*else[ \t]*if))"},{"name":"keyword.preprocessor.endif.brs","match":"(?i:(#[ \t]*end[ \t]*if))"},{"name":"keyword.preprocessor.else.brs","match":"(?i:(#[ \t]*else))"},{"name":"keyword.preprocessor.error.brs","match":"(?i:(#[ \t]*error))"}]},"primitive_literal_expression":{"patterns":[{"name":"string.quoted.double.brs","begin":"\"","end":"\"","patterns":[{"name":"constant.character.escape.brs","match":"\"\""},{"include":"#class_roku_builtin"}]},{"name":"constant.numeric.brs","match":"\\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\\.?[0-9]*)|(\\.[0-9]+))((e|E)(\\+|-)?[0-9]+)?)(L|l|UL|ul|u|U|F|f)?\\b"},{"patterns":[{"name":"constant.language.boolean.true.brs","match":"(?i)\\b(true)\\b"},{"name":"constant.language.boolean.false.brs","match":"(?i)\\b(false)\\b"}]},{"match":"(?i:\\b(invalid)\\b)","captures":{"1":{"name":"constant.language.null.brs"}}}]},"program_statements":{"name":"keyword.control.brs","match":"(?i:(?\u003c!\\.)(if|else\\s*if|else|print|library|while|for\\s+each|for|end\\s*for|exit\\s+for|end\\s*while|exit\\s*while|end\\s*if|to|step|in|goto|rem|as)\\b)"},"regex":{"patterns":[{"name":"string.regexp.brs","begin":"(?\u003c!\\+\\+|--|})(?\u003c=[=(:,\\[?+!]|^return|[^\\._$[:alnum:]]return|^case|[^\\._$[:alnum:]]case|=\u003e|\u0026\u0026|\\|\\||\\*\\/)\\s*(\\/)(?![\\/*])(?=(?:[^\\/\\\\\\[\\()]|\\\\.|\\[([^\\]\\\\]|\\\\.)+\\]|\\(([^\\)\\\\]|\\\\.)+\\))+\\/([gmixsuXUAJ]+|(?![\\/\\*])|(?=\\/\\*))(?!\\s*[a-zA-Z0-9_$]))","end":"(/)([gmixsuXUAJ]*)","patterns":[{"include":"#regexp"}],"beginCaptures":{"1":{"name":"punctuation.definition.string.begin.brs"}},"endCaptures":{"1":{"name":"punctuation.definition.string.end.brs"},"2":{"name":"keyword.other.brs"}}},{"name":"string.regexp.brs","begin":"((?\u003c![_$[:alnum:])\\]]|\\+\\+|--|}|\\*\\/)|((?\u003c=^return|[^\\._$[:alnum:]]return|^case|[^\\._$[:alnum:]]case))\\s*)\\/(?![\\/*])(?=(?:[^\\/\\\\\\[]|\\\\.|\\[([^\\]\\\\]|\\\\.)*\\])+\\/([gmixsuXUAJ]+|(?![\\/\\*])|(?=\\/\\*))(?!\\s*[a-zA-Z0-9_$]))","end":"(/)([gmixsuXUAJ]*)","patterns":[{"include":"#regexp"}],"beginCaptures":{"0":{"name":"punctuation.definition.string.begin.brs"}},"endCaptures":{"1":{"name":"punctuation.definition.string.end.brs"},"2":{"name":"keyword.other.brs"}}}]},"regex-character-class":{"patterns":[{"name":"constant.other.character-class.regexp","match":"\\\\[wWsSdDtrnvf]|\\."},{"name":"constant.character.numeric.regexp","match":"\\\\([0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4})"},{"name":"constant.character.control.regexp","match":"\\\\c[A-Z]"},{"name":"constant.character.escape.backslash.regexp","match":"\\\\."}]},"regexp":{"patterns":[{"name":"keyword.control.anchor.regexp","match":"\\\\[bB]|\\^|\\$"},{"match":"\\\\[1-9]\\d*|\\\\k\u003c([a-zA-Z_$][\\w$]*)\u003e","captures":{"0":{"name":"keyword.other.back-reference.regexp"},"1":{"name":"variable.other.regexp"}}},{"name":"keyword.operator.quantifier.regexp","match":"[?+*]|\\{(\\d+,\\d+|\\d+,|,\\d+|\\d+)\\}\\??"},{"name":"keyword.operator.or.regexp","match":"\\|"},{"name":"meta.group.assertion.regexp","begin":"(\\()((\\?=)|(\\?!)|(\\?\\|)|(\\?\u003c=)|(\\?\u003c!))","end":"(\\))","patterns":[{"include":"#regexp"}],"beginCaptures":{"1":{"name":"punctuation.definition.group.regexp"},"2":{"name":"punctuation.definition.group.assertion.regexp"},"3":{"name":"meta.assertion.look-ahead.regexp"},"4":{"name":"meta.assertion.negative-look-ahead.regexp"},"5":{"name":"meta.assertion.look-behind.regexp"},"6":{"name":"meta.assertion.negative-look-behind.regexp"}},"endCaptures":{"1":{"name":"punctuation.definition.group.regexp"}}},{"name":"meta.group.regexp","begin":"\\((?:(\\?[:\u003e])|(?:\\?\u003c([a-zA-Z_$][\\w$]*)\u003e))?","end":"\\)","patterns":[{"include":"#regexp"}],"beginCaptures":{"0":{"name":"punctuation.definition.group.regexp"},"1":{"name":"punctuation.definition.group.no-capture.regexp"},"2":{"name":"variable.other.regexp"}},"endCaptures":{"0":{"name":"punctuation.definition.group.regexp"}}},{"name":"constant.other.character-class.set.regexp","begin":"(\\[)(\\^)?","end":"(\\])","patterns":[{"name":"constant.other.character-class.range.regexp","match":"(?:.|(\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\\\c[A-Z])|(\\\\.))\\-(?:[^\\]\\\\]|(\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\\\c[A-Z])|(\\\\.))","captures":{"1":{"name":"constant.character.numeric.regexp"},"2":{"name":"constant.character.control.regexp"},"3":{"name":"constant.character.escape.backslash.regexp"},"4":{"name":"constant.character.numeric.regexp"},"5":{"name":"constant.character.control.regexp"},"6":{"name":"constant.character.escape.backslash.regexp"}}},{"include":"#regex-character-class"}],"beginCaptures":{"1":{"name":"punctuation.definition.character-class.regexp"},"2":{"name":"keyword.operator.negation.regexp"}},"endCaptures":{"1":{"name":"punctuation.definition.character-class.regexp"}}},{"include":"#regex-character-class"}]},"region_comment":{"match":"(?i:^\\s*('\\s*#region)(?:(\\s+.*)?))$","captures":{"1":{"name":"keyword.preprocessor.region.brs"},"2":{"name":"string.unquoted.preprocessor.message.brs"}}},"rem_comment":{"name":"comment.line.rem.brs","match":"^\\s*?(?i:rem\\s.*)$","captures":{"1":{"name":"punctuation.definition.comment.brs"}}},"storage_types":{"match":"(?i:\\b(boolean|integer|longinteger|float|double|string|object|function|sub|interface|dynamic|brsub|dim|const)\\b)","captures":{"1":{"name":"storage.type.brs"}}},"support_builtin_functions":{"name":"support.function.brs","match":"(?i:\\b(GetLastRun(RuntimeError|CompileError)|Rnd|Box|Type|objfun|pos|eval)\\b)"},"support_component_functions":{"name":"support.function.component.brs","match":"(?i:\\b(R(ight|e(set(Index)?|ad(B(yte(IfAvailable)?|lock)|File|Line)?|move(Head|Tail|Index)))|Ge(nXML(Header)?|t(Res(ource|ponse(Headers|Code))|X|M(i(nute|llisecond)|o(nth|de(l)?)|essage)|B(yte(sPerBlock|Array)|o(o(tVersion(Number)?|lean)|dy))|S(t(orageCardInfo|a(ndards|tusByte)|ring(Count)?)|i(zeInMegabytes|gnedByte)|ource(Host|Identity|Port)|ub|ec(tionList|ond)|afe(X|Height|Y|Width))|H(o(stName|ur)|e(ight|ad))|Y(ear)?|N(extArticle|ame(dElements)?)|C(hildElements|ontrols|urrent(Standard|Con(trolValue|fig)|Input))|T(i(tle|me(Server|Zone))|o(String|File)|ext|ail)|I(n(t|dex|puts)|dentity)|ZoneDateTime|D(e(scription|vice(BootCount|Name|U(niqueId|ptime)))|a(y(OfWeek)?|ta))|U(se(dInMegabytes|rData)|tcDateTime)|Ent(ityEncode|ry)|V(ersion(Number)?|alue)|KeyList|F(ileSystemType|loat|a(ilureReason|mily)|reeInMegabytes)|W(holeState|idth)|LocalDateTime|Attributes))|M(id|D5|ap(StereoOutput(Aux)?|DigitalOutput))|Boolean|S(h(ift|ow)|canWiFi|t((Clear|Display)?|art|r(i(ng)?)?)|implify|ubtract(Milliseconds|Seconds)|e(nd(RawMessage|B(yte|lock)|Line)?|t(R(ollOverRegion|e(s(ize|olution)|c(tangle|eiveEol)))|X|M(i(n(imumTransferRate|ute)|llisecond)|o(nth|de(CaseSensitive)?)|ultiscreenBezel)|B(yteEventPort|o(olean|dy)|a(ckground(Bitmap|Color)|udRate))|S(t(andard|ring)|ub|e(ndEol|cond)|afeTextRegion)|H(o(stName|ur)|eight)|Y(ear)?|Name|C(hannelVolumes(Aux)?|ontrolValue|ursor(Bitmap|Pos(ition)?))|Time(Server|Zone)?|I(n(t|put)|P4(Gateway|Broadcast|Netmask|Address))|OutputState|D(HCP|omain|e(stination|fault(Mode|Transistion))|a(y(OfWeek)?|te(Time)?))|U(ser(Data|AndPassword)|tcDateTime|rl)|P(o(werSaveMode|rt)|assword|roxy)|E(ntry|cho|ol)|V(iewMode|olume(Aux)?)|F(o(nt|r(egroundColor|groundColor))|l(oat|ashRate))|W(holeState|i(dth|Fi(Passphrase|ESSID)))|L(ineEventPort|o(calDateTime|opMode)|auguage)|Audio(Mode(Aux)?|Stream(Aux)?|Output(Aux)?))|ek(Relative|ToEnd|Absolute)))|H(ide|ead|asAttribute)|N(ormalize|ext)|C(hr|ount|urrentPosition|l(s|ear(Region|Events)?))|T(o(Base64String|HexString|kenize|AsciiString)|estInter(netConnectivity|face)|rim)|I(s(MousePresent|N(ext|ame)|InputActive|Empty|Valid|LittleEndianCPU)|n(str|te(ger)|valid))|Object|D(ynamic|isplay(Preload|File(Ex)?)|o(uble|esExist)|elete)|U(n(shift|pack)|Case)|P(o(st(Message|From(String|File))|p(String(s)?)?)|ush(String)?|eek|lay(StaticImage|File)?|arse(String|File)?|reloadFile(Ex)?)|E(nable(R(ollover|egion)|Cursor|Input|Output)|xists)|Void|F(indIndex|unction|l(oat|ush)|rom(Base64String|HexString|AsciiString))|W(hile|aitMessage|rite(File)?)|L(ookup|e(n|ft))|A(s(ync(GetTo(String|File)|Head|PostFrom(String|File)|Flush)|c)?|tEof|dd(Re(ctangle(Region|_region)|place)|Milliseconds|BodyElement|Seconds|Head(er)?|CircleRegion|Tail|DNSServer|E(vent|lement(WithBody)?)|Attribute)|pp(end(String|File)?|ly))|ToStr)\\b)"},"support_functions":{"patterns":[{"include":"#support_builtin_functions"},{"include":"#support_global_functions"},{"include":"#support_global_string_functions"},{"include":"#support_global_math_functions"},{"include":"#support_component_functions"}]},"support_global_functions":{"name":"support.function.brs","match":"(?i:\\b(Re(adAsciiFile|bootSystem)|GetInterface|MatchFiles|Sleep|C(opyFile|reate(Directory|Object))|Delete(Directory|File)|UpTime|FormatDrive|ListDir|W(ait|riteAsciiFile))\\b)"},"support_global_math_functions":{"name":"support.function.brs","match":"(?i:\\b(S(in|qr|gn)|C(sng|dbl|os)|Tan|Int|Exp|Fix|Log|A(tn|bs))\\b)"},"support_global_string_functions":{"name":"support.function.brs","match":"(?i:\\b(Right|Mid|Str(i(ng(i)?)?)?|Chr|Instr|UCase|Val|Asc|L(Case|e(n|ft)))\\b)"},"template_string":{"begin":"(`)","end":"(`)","patterns":[{"begin":"(\\$\\{)","end":"(\\})","patterns":[{"include":"#entire_language"}],"beginCaptures":{"1":{"name":"punctuation.definition.template-expression.begin.brs"}},"endCaptures":{"1":{"name":"punctuation.definition.template-expression.end"}}},{"name":"string.template.brs","match":"(.)"}],"beginCaptures":{"1":{"name":"string.template.brs"}},"endCaptures":{"1":{"name":"string.template.brs"}}},"try_catch":{"name":"keyword.control.trycatch.brs","match":"(?i:\\b(try|catch|(end[ \\t]*try))\\b)"},"type_expression":{"patterns":[{"match":"(?i)(boolean|integer|longinteger|float|double|string)","captures":{"1":{"name":"storage.type.brs"}}},{"match":"(?i)\\b([a-z0-9_]+)","captures":{"1":{"name":"support.type.brs entity.name.type.brs"}}}]},"variables_and_params":{"match":"(?i:(?:\\b(new)\\s)?\\b(?\u003c!\\.)([a-z_][a-z0-9_\\$%!#]*)\\b)","captures":{"1":{"name":"keyword.operator.new.brs"},"2":{"name":"entity.name.variable.local.brs"}}},"vscode_rale_tracker_entry_comment":{"name":"keyword.preprocessor.brs","match":"('\\s*vscode_rale_tracker_entry[^\\S\\r\\n]*)"}}}
|
data/grammars/source.cds.json
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"name":"CDS","scopeName":"source.cds","patterns":[{"begin":"\\b(aspect|(abstract\\s+)?entity)\\b","end":"(?\u003c=})(;)?|(;)","patterns":[{"begin":":","end":"(?={|;)","patterns":[{"include":"#identifiers"},{"name":"punctuation.separator.object.cds","match":","}],"beginCaptures":{"0":{"name":"keyword.operator.cds"}}},{"include":"#bracedElementDef"},{"include":"#keywords"},{"include":"#identifiers"}],"beginCaptures":{"1":{"name":"keyword.strong.cds"}},"endCaptures":{"1":{"name":"punctuation.terminator.statement.cds"},"2":{"name":"punctuation.terminator.statement.cds"}}},{"begin":"(?i)\\b(extend)\\s+((context|service|aspect|entity|projection|type)\\s+)?(\\S+)(\\s+(with)(\\s+(actions|definitions|columns|elements|enum))?|(?=\\s*{))","end":"(?\u003c=})(;)?|(;)","patterns":[{"include":"#bracedElementDef"},{"include":"#keywords"},{"include":"#identifiers"},{"name":"punctuation.separator.object.cds","match":","}],"beginCaptures":{"1":{"name":"keyword.strong.cds"},"3":{"name":"keyword.cds"},"4":{"name":"identifier.cds"},"6":{"name":"keyword.cds"},"8":{"name":"keyword.cds"}},"endCaptures":{"1":{"name":"punctuation.terminator.statement.cds"},"2":{"name":"punctuation.terminator.statement.cds"}}},{"match":"(?\u003c!\\.)\\b(annotate)\\b\\s*[\\w.]+\\b\\s*\\b(with)?\\b","captures":{"1":{"name":"keyword.strong.control.import.cds"},"2":{"name":"keyword.strong.control.import.cds"}}},{"name":"meta.import.cds","begin":"(?\u003c!\\.)\\b(import|using)(?!\\s*:)\\b","end":"(;)|\\n","patterns":[{"begin":"{","end":"}","patterns":[{"match":"(?:\\b(default)\\b|\\b([$_a-zA-Z][$_a-zA-Z0-9]*)\\b)\\s*(\\bas\\b)\\s*(?:(\\bdefault\\b|\\*)|\\b([$_a-zA-Z][$_a-zA-Z0-9]*)\\b)","captures":{"1":{"name":"variable.language.default.cds"},"2":{"name":"variable.other.module.cds"},"3":{"name":"keyword.strong.cds"},"4":{"name":"invalid.illegal.cds"},"5":{"name":"variable.other.module-alias.cds"}}},{"name":"punctuation.separator.object.cds","match":","},{"include":"#comments"},{"name":"variable.other.module.cds","match":"\\b([$_a-zA-Z][$_a-zA-Z0-9]*)\\b"}],"beginCaptures":{"0":{"name":"punctuation.definition.modules.begin.cds"}},"endCaptures":{"0":{"name":"punctuation.definition.modules.end.cds"}}},{"match":"(?:(\\*)|(?=\\D)(\\b[\\$\\.\\w]+\\b))\\s*(\\bas\\b)\\s*(?=\\D)(\\b[\\$\\.\\w]+\\b)","captures":{"1":{"name":"variable.language.import-all.cds"},"2":{"name":"variable.other.module.cds"},"3":{"name":"keyword.strong.control.cds"},"4":{"name":"variable.other.module-alias.cds"}}},{"name":"variable.language.import-all.cds","match":"\\*"},{"name":"variable.language.default.cds","match":"\\b(default)\\b"},{"include":"#strings"},{"include":"#comments"},{"name":"keyword.strong.control.cds","match":"(?i)\\b(from)\\b"},{"name":"variable.other.module.cds","match":"\\b([$_a-zA-Z][$_a-zA-Z0-9]*)\\b(?=.*\\bfrom\\b)"},{"name":"punctuation.separator.object.cds","match":","}],"beginCaptures":{"1":{"name":"keyword.strong.control.import.cds"}},"endCaptures":{"1":{"name":"punctuation.terminator.statement.cds"}}},{"name":"meta.export.cds","match":"\\b(export)\\b\\s*\\b(default)\\b(?:\\s*)\\b((?!\\bclass\\b|\\blet\\b|\\bvar\\b|\\bconst\\b)[$_a-zA-Z][$_a-zA-Z0-9]*)?\\b","captures":{"1":{"name":"keyword.control.cds"},"2":{"name":"variable.language.default.cds"},"3":{"name":"variable.other.module.cds"}}},{"name":"meta.export.cds","begin":"(?\u003c!\\.)\\b(export)(?!\\s*:)\\b","end":"(?=;|\\bclass\\b|\\blet\\b|\\bvar\\b|\\bconst\\b|$)","patterns":[{"include":"#numbers"},{"begin":"{(?=.*\\bfrom\\b)","end":"}","patterns":[{"match":"(?:\\b(default)\\b|\\b([$_a-zA-Z][$_a-zA-Z0-9]*)\\b)\\s*(\\bas\\b)\\s*(?:\\b(default)\\b|(\\*)|\\b([$_a-zA-Z][$_a-zA-Z0-9]*)\\b)","captures":{"1":{"name":"variable.language.default.cds"},"2":{"name":"variable.other.module.cds"},"3":{"name":"keyword.control.cds"},"4":{"name":"variable.language.default.cds"},"5":{"name":"invalid.illegal.cds"},"6":{"name":"variable.other.module-alias.cds"}}},{"name":"meta.delimiter.object.comma.cds","match":","},{"name":"variable.other.module.cds","match":"\\b([$_a-zA-Z][$_a-zA-Z0-9]*)\\b"}],"beginCaptures":{"0":{"name":"punctuation.definition.modules.begin.cds"}},"endCaptures":{"0":{"name":"punctuation.definition.modules.end.cds"}}},{"begin":"(?![\\p{L}$_]){","end":"}","patterns":[{"match":"(?:\\b(default)\\b|\\b([$_a-zA-Z][$_a-zA-Z0-9]*)\\b)\\s*(\\bas\\b)\\s*(?:\\b(default)\\b|(\\*)|\\b([$_a-zA-Z][$_a-zA-Z0-9]*)\\b)","captures":{"1":{"name":"invalid.illegal.cds"},"2":{"name":"variable.other.module.cds"},"3":{"name":"keyword.control.cds"},"4":{"name":"variable.language.default.cds"},"5":{"name":"invalid.illegal.cds"},"6":{"name":"variable.other.module-alias.cds"}}},{"name":"meta.delimiter.object.comma.cds","match":","},{"name":"variable.other.module.cds","match":"\\b([$_a-zA-Z][$_a-zA-Z0-9]*)\\b"}],"beginCaptures":{"0":{"name":"punctuation.definition.modules.begin.cds"}},"endCaptures":{"0":{"name":"punctuation.definition.modules.end.cds"}}},{"name":"variable.language.import-all.cds","match":"\\*(?=.*\\bfrom\\b)"},{"name":"variable.language.default.cds","match":"\\b(default)\\b"},{"include":"#strings"},{"include":"#comments"},{"name":"keyword.control.cds","match":"(?i)\\b(from)\\b"},{"name":"variable.other.module.cds","match":"\\b([$_a-zA-Z][$_a-zA-Z0-9]*)\\b"},{"name":"meta.delimiter.object.comma.cds","match":","},{"include":"#operators"}],"beginCaptures":{"1":{"name":"keyword.control.export.cds"}}},{"name":"meta.method.cds","begin":"\\b(?:(static)\\s+)?(?!(?:break|case|catch|continue|do|else|finally|for|if|export|import|using|package|return|switch|throw|try|while|with)[\\s\\(])([$_a-zA-Z][$_a-zA-Z0-9]*)\\s*(\\()(?=(?:[^\\(\\)]*)?\\)\\s*{)","end":"\\)","patterns":[{"include":"#function-params"}],"beginCaptures":{"1":{"name":"storage.modifier.static.cds"},"2":{"name":"entity.name.function.cds"},"3":{"name":"punctuation.definition.parameters.begin.cds"}},"endCaptures":{"0":{"name":"punctuation.definition.parameters.begin.cds"}}},{"name":"meta.class.cds","match":"\\b(class)(?:\\s+([$_a-zA-Z][$_a-zA-Z0-9]*))?(?:\\s+(extends)\\s+([$_a-zA-Z][$_a-zA-Z0-9]*))?\\s*($|(?={))","captures":{"1":{"name":"storage.type.class.cds"},"2":{"name":"entity.name.type.class.cds"},"3":{"name":"storage.modifier.cds"},"4":{"name":"entity.other.inherited-class.cds"}}},{"name":"storage.type.arrow.cds","match":"=\u003e"},{"name":"storage.type.var.cds","match":"(?\u003c!\\.|\\$)\\b(let|var)\\b(?!\\$)"},{"name":"storage.modifier.cds","match":"(?\u003c!\\.|\\$)\\b(get|set|const)\\b(?!\\$)"},{"name":"meta.control.yield.cds","match":"(?\u003c!\\.)\\b(yield)(?!\\s*:)\\b(?:\\s*(\\*))?","captures":{"1":{"name":"keyword.control.cds"},"2":{"name":"storage.modifier.cds"}}},{"name":"constant.language.cds","match":"\\b(false|Infinity|NaN|null|true|undefined)\\b"},{"name":"variable.language.cds","match":"(?\u003c!\\.)\\b(super|this)(?!\\s*:)\\b"},{"name":"punctuation.terminator.statement.cds","match":"\\;"},{"match":"(\\[)(\\])","captures":{"1":{"name":"punctuation.section.scope.begin.cds"},"2":{"name":"punctuation.section.scope.end.cds"}}},{"begin":"{","end":"}","patterns":[{"include":"$self"}],"beginCaptures":{"0":{"name":"punctuation.section.scope.begin.cds"}},"endCaptures":{"0":{"name":"punctuation.section.scope.end.cds"}}},{"begin":"\\(","end":"\\)","patterns":[{"include":"$self"}],"beginCaptures":{"0":{"name":"punctuation.section.scope.begin.cds"}},"endCaptures":{"0":{"name":"punctuation.section.scope.end.cds"}}},{"name":"meta.brace.square.cds","match":"\\[|\\]"},{"name":"support.class.cds","match":"(?\u003c=new )([$_a-zA-Z][$_a-zA-Z0-9]*)(?!\\w)"},{"name":"support.class.cds","match":"(?\u003c= instanceof )([$_a-zA-Z][$_a-zA-Z0-9]*)(?!\\w)"},{"name":"support.class.cds","match":"(?\u003c!\\w)([$_a-zA-Z][$_a-zA-Z0-9]*)(?=\\.prototype\\b)"},{"name":"keyword.other.cds","match":"(?i)(?\u003c=\\.)(prototype)\\b"},{"name":"meta.function-call.cds","match":"(?\u003c!\\w)([$_a-zA-Z][$_a-zA-Z0-9]*)(?=\\()"},{"include":"#keywords"},{"include":"#numbers"},{"include":"#strings"},{"include":"#comments"},{"include":"#operators"},{"include":"#identifiers"}],"repository":{"bracedElementDef":{"begin":"{","end":"}","patterns":[{"include":"#comments"},{"include":"#extendElement"},{"include":"#elementDef"}],"beginCaptures":{"0":{"name":"punctuation.section.scope.begin.cds"}},"endCaptures":{"0":{"name":"punctuation.section.scope.end.cds"}}},"comments":{"patterns":[{"name":"entity.other.attribute-name","match":"@\\(?[\\w.]+\\b"},{"name":"comment.block.documentation.cds","begin":"/\\*\\*(?!/)","end":"\\*/","beginCaptures":{"0":{"name":"punctuation.definition.comment.begin.cds"}},"endCaptures":{"0":{"name":"punctuation.definition.comment.end.cds"}}},{"name":"comment.block.cds","begin":"/\\*","end":"\\*/","beginCaptures":{"0":{"name":"punctuation.definition.comment.begin.cds"}},"endCaptures":{"0":{"name":"punctuation.definition.comment.end.cds"}}},{"name":"comment.line.double-slash.cds","match":"//.*"}]},"elementDef":{"begin":"(?=\\()|\\b(virtual(?:\\s+))?(key(?:\\s+))?(masked(?:\\s+))?(element(?:\\s+))?","end":"(?=})|(;)","patterns":[{"include":"#bracedElementDef"},{"include":"#strings"},{"include":"#comments"},{"include":"#keywords"},{"begin":"\\(","end":"\\)","patterns":[{"match":"[$_a-zA-Z][$_a-zA-Z0-9]*|\\\"[^\\\"]*(\\\"\\\"[^\\\"]*)*\\\"|!\\\\[[^\\\\]]*(\\\\]\\\\][^\\\\]]*)*\\\\]","captures":{"0":{"name":"entity.name.type.attribute-name.cds"}}},{"include":"#operators"}],"beginCaptures":{"0":{"name":"punctuation.section.scope.begin.cds"}},"endCaptures":{"0":{"name":"punctuation.section.scope.end.cds"}}},{"begin":"([$_a-zA-Z][$_a-zA-Z0-9]*|\"[^\"]*(\"\"[^\"]*)*\"|!\\[[^\\]]*(\\]\\][^\\]]*)*\\])(?=\\s*[:{,])","end":"(,)|(?=\\s*[:{])","beginCaptures":{"1":{"name":"entity.name.type.attribute-name.cds"}},"endCaptures":{"1":{"name":"punctuation.separator.object.cds"}}},{"match":"^\\s*([$_a-zA-Z][$_a-zA-Z0-9]*|\"[^\"]*(\"\"[^\"]*)*\"|!\\[[^\\]]*(\\]\\][^\\]]*)*\\])\\s*$","captures":{"1":{"name":"entity.name.type.attribute-name.cds"}}},{"include":"#identifiers"},{"include":"#operators"},{"include":"#numbers"},{}],"beginCaptures":{"1":{"name":"keyword.cds"},"2":{"name":"keyword.strong.cds"},"3":{"name":"keyword.cds"},"4":{"name":"keyword.cds"}},"endCaptures":{"1":{"name":"punctuation.terminator.statement.cds"}}},"escapes":{"name":"constant.character.escape.cds","match":"\\\\([xu$]\\{?[0-9a-fA-F]+}?|.|$)"},"extendElement":{"begin":"\\b(?=extend\\b.*\\bwith\\b)","end":"(?\u003c=})(;)?|(;)","patterns":[{"begin":"\\bextend\\b","end":"\\bwith\\b","patterns":[{"name":"keyword.cds","match":"element(?!(?:\\s*/\\*.*\\*/\\s*|\\s+)?with\\b)"},{"name":"entity.name.type.attribute-name.cds","match":"[$_a-zA-Z][$_a-zA-Z0-9]*|\"[^\"]*(\"\"[^\"]*)*\"|!\\[[^\\]]*(\\]\\][^\\]]*)*\\]"},{"include":"#comments"}],"beginCaptures":{"0":{"name":"keyword.strong.cds"}},"endCaptures":{"0":{"name":"keyword.cds"}}},{"begin":"{","end":"}","patterns":[{"include":"#extendElement"},{"include":"#elementDef"}],"beginCaptures":{"0":{"name":"punctuation.section.scope.begin.cds"}},"endCaptures":{"0":{"name":"punctuation.section.scope.end.cds"}}},{"include":"#comments"},{"include":"#keywords"},{"include":"#identifiers"},{"include":"#operators"},{"name":"punctuation.section.scope.begin.cds","match":"\\("},{"name":"punctuation.section.scope.end.cds","match":"\\)"},{"include":"#numbers"}],"endCaptures":{"1":{"name":"punctuation.terminator.statement.cds"},"2":{"name":"punctuation.terminator.statement.cds"}}},"function-params":{"patterns":[{"begin":"(?=[\\p{L}$_])","end":"(?=[,)/])","patterns":[{"name":"variable.parameter.function.cds","match":"\\G[$_a-zA-Z][$_a-zA-Z0-9]*"}]},{"include":"#comments"}]},"identifiers":{"patterns":[{"name":"identifier.cds","match":"[$_a-zA-Z][$_a-zA-Z0-9]*|\"[^\"]*(\"\"[^\"]*)*\"|!\\[[^\\]]*(\\]\\][^\\]]*)*\\]"}]},"interpolation":{"name":"meta.embedded.line.cds","contentName":"source.cds","begin":"\\${","end":"(})","patterns":[{"begin":"{","end":"}","patterns":[{"include":"$self"}],"beginCaptures":{"0":{"name":"meta.brace.curly.cds"}},"endCaptures":{"0":{"name":"meta.brace.curly.cds"}}},{"include":"$self"}],"beginCaptures":{"0":{"name":"punctuation.section.embedded.begin.cds"}},"endCaptures":{"0":{"name":"punctuation.section.embedded.end.cds"},"1":{"name":"source.cds"}}},"keywords":{"patterns":[{"name":"support.class.cds","match":"(?\u003c!\\.|\\$)\\b(Association\\s*(?:\\[[0-9.eE+, *-]*\\]\\s*)?to\\s*(?:(many|one)\\s*)?|Composition\\s*(?:\\[[0-9.eE+, *-]*\\]\\s*)?of\\s*(?:(many|one)\\s*)?|(Binary|Boolean|DateTime|Date|DecimalFloat|Decimal|Double|Int(16|32|64)|Integer64|Integer|LargeBinary|LargeString|Number|String|Timestamp|Time|UInt8|UUID)\\s*(\\([^()]*\\))?)(?!\\$|\\s*:)"},{"name":"invalid.illegal.cds","match":"(?\u003c!\\.|\\$)\\b(await)\\b(?!\\$|\\s*:)"},{"name":"invalid.deprecated.cds","match":"(?\u003c!\\.|\\$)\\b(implements|interface|package|private|protected|public)\\b(?!\\$|\\s*:)"},{"name":"invalid.illegal.cds","match":"(?\u003c!\\.|\\$)\\b(class|static|extends)\\b(?!\\$|\\s*:)"},{"name":"keyword.cds","match":"(?i)(?\u003c!\\.|\\$)\\b(all|and|any|asc|between|by|case|cast|cross|desc|distinct|element|elements|escape|except|excluding|exists|first|from|full|group|group by|having|in|inner|intersect|into|is|join|last|left|like|limit|many|minus|mixin|not null|not|null|nulls|offset|one|or|order by|outer|redirected to|select|some|top|type of|union|where|with)\\b(?!\\$|\\s*:)"},{"name":"keyword.strong.cds","match":"(?i)(?\u003c!\\.|\\$)\\b(as|key|on|type)\\b(?!\\$|\\s*:)"},{"name":"keyword.cds","match":"(?\u003c!\\.|\\$)\\b(after|always|analysis|array of|async|asynchronous|auto|both|cache|column|columns|configuration|current|cycle|day|default|depends|detection|disabled|documents|else|enabled|end|every|existing|export|extended|extract|fast|flush|fulltext|fuzzy|generated|getnumservers|hana|hash|hour|identity|import|increment|index|keeping|language|layout|leading|masked|maxvalue|merge|migration|mime|mining|minute|minutes|minvalue|mode|month|name|new|no|off|only|others|overlay|parameters|partition|partitioning|partitions|phrase|preprocess|priority|projection|projection on|queue|range|ratio|reset|returns|right|roundrobin|row|search|second|separators|start|storage|store|subtype|sync|synchronous|table|technical|temporary|text|then|token|trailing|trim|unique|unload|value|values|virtual|when|with parameters|year)\\b(?!\\$|\\s*:)"},{"name":"keyword.strong.cds","match":"(?\u003c!\\.|\\$)\\b(abstract|action|actions|annotation|aspect|context|define|entity|enum|event|expose|extend|facet|function|namespace|service|view)\\b(?!\\$|\\s*:)"}]},"numbers":{"patterns":[{"name":"constant.numeric.hex.cds","match":"(?\u003c!\\w|\\$)0[xX][[:xdigit:]]+\\b"},{"name":"constant.numeric.binary.cds","match":"(?\u003c!\\w|\\$)0[bB][01]+\\b"},{"name":"constant.numeric.octal.cds","match":"(?\u003c!\\w|\\$)0[oO][0-7]+\\b"},{"name":"constant.numeric.cds","match":"(?\u003c!\\w|\\$)[+-]?[0-9]+('.'[0-9]+)?([eE][+-]?[0-9]+)?(?!\\w)"}]},"operators":{"patterns":[{"name":"keyword.operator.assignment.compound.cds","match":"%=|\\+=|\\-=|\\*=|(?\u003c!\\()/="},{"name":"keyword.operator.assignment.compound.bitwise.cds","match":"\u0026=|\\^=|\u003c\u003c=|\u003e\u003e=|\u003e\u003e\u003e=|\\|="},{"name":"keyword.operator.comparison.cds","match":"!==|!=|\u003c=|\u003e=|===|==|\u003c|\u003e"},{"name":"keyword.operator.logical.cds","match":"\u0026\u0026|!|\\|\\|"},{"name":"keyword.operator.bitwise.cds","match":"\u0026|\\||\\^|~"},{"name":"keyword.cds","match":"\\:\\s*(localized)\\s+"},{"name":"keyword.operator.cds","match":"[?:]"},{"name":"keyword.operator.logical.cds","match":"!"},{"name":"keyword.operator.assignment.cds","match":"=|\\:"},{"name":"keyword.operator.decrement.cds","match":"\\-\\-"},{"name":"keyword.operator.increment.cds","match":"\\+\\+"},{"name":"keyword.operator.arithmetic.cds","match":"%|\\*|/|\\-|\\+"}]},"strings":{"patterns":[{"name":"string.quoted.single.cds","begin":"'","end":"'(?!')","patterns":[{"name":"meta.single-quote.doubled.cds","match":"''"}],"beginCaptures":{"0":{"name":"punctuation.definition.string.begin.cds"}},"endCaptures":{"0":{"name":"punctuation.definition.string.end.cds"}}},{"name":"string.quoted.other.template.cds","begin":"`","end":"`","patterns":[{"include":"#interpolation"},{"include":"#escapes"}],"beginCaptures":{"0":{"name":"punctuation.definition.string.begin.cds"}},"endCaptures":{"0":{"name":"punctuation.definition.string.end.cds"}}}]}}}
|
1
|
+
{"name":"CDS","scopeName":"source.cds","patterns":[{"begin":"\\b(aspect|(abstract\\s+)?entity|type|event)\\b","end":"(?\u003c=})(;)?|(;)","patterns":[{"include":"#atAnnoParen"},{"include":"#atAnnoNoParen"},{"begin":":","end":"(?=[{;@])","patterns":[{"include":"#identifiers"},{"name":"punctuation.separator.object.cds","match":","}],"beginCaptures":{"0":{"name":"keyword.operator.cds"}}},{"include":"#bracedElementDef"},{"include":"#keywords"},{"include":"#identifiers"}],"beginCaptures":{"1":{"name":"keyword.strong.cds"}},"endCaptures":{"1":{"name":"punctuation.terminator.statement.cds"},"2":{"name":"punctuation.terminator.statement.cds"}}},{"begin":"(?i)\\b(extend)\\s+((context|service|aspect|entity|projection|type)\\s+)?((?!@)\\S+)(\\s+(with)(\\s+(actions|definitions|columns|elements|enum))?|(?=\\s*{))","end":"(?\u003c=})(;)?|(;)","patterns":[{"include":"#bracedElementDef"},{"include":"#atAnnoParen"},{"include":"#atAnnoNoParen"},{"include":"#keywords"},{"include":"#identifiers"},{"name":"punctuation.separator.object.cds","match":","}],"beginCaptures":{"1":{"name":"keyword.strong.cds"},"3":{"name":"keyword.cds"},"4":{"name":"entity.name.type.cds"},"6":{"name":"keyword.cds"},"8":{"name":"keyword.cds"}},"endCaptures":{"1":{"name":"punctuation.terminator.statement.cds"},"2":{"name":"punctuation.terminator.statement.cds"}}},{"match":"(?\u003c!\\.)\\b(annotate)\\b\\s*([\\w.]+)\\b\\s*\\b(with)?\\b","captures":{"1":{"name":"keyword.strong.control.import.cds"},"2":{"name":"entity.name.type.cds"},"3":{"name":"keyword.strong.control.import.cds"}}},{"begin":"(?\u003c!\\.)\\b(using)(?!\\s*:)\\b","end":"(;)|\\n","patterns":[{"begin":"{","end":"}","patterns":[{"match":"(?:\\b(default)\\b|\\b([$_a-zA-Z][$_a-zA-Z0-9]*)\\b)\\s*(\\bas\\b)\\s*(?:\\b([$_a-zA-Z][$_a-zA-Z0-9]*)\\b)","captures":{"1":{"name":"variable.language.default.cds"},"2":{"name":"entity.name.type.cds"},"3":{"name":"keyword.strong.cds"},"4":{"name":"entity.name.type.cds"}}},{"name":"punctuation.separator.object.cds","match":","},{"include":"#comments"},{"name":"entity.name.type.cds","match":"\\b([$_a-zA-Z][$_a-zA-Z0-9]*)\\b"}],"beginCaptures":{"0":{"name":"punctuation.definition.modules.begin.cds"}},"endCaptures":{"0":{"name":"punctuation.definition.modules.end.cds"}}},{"match":"(?:(\\*)|(?=\\D)(\\b[\\$\\.\\w]+\\b))\\s*(\\bas\\b)\\s*(?=\\D)(\\b[\\$\\.\\w]+\\b)","captures":{"1":{"name":"keyword.operator.asterisk"},"2":{"name":"entity.name.type.cds"},"3":{"name":"keyword.strong.control.cds"},"4":{"name":"entity.name.type.cds"}}},{"name":"keyword.operator.asterisk","match":"\\*"},{"name":"variable.language.default.cds","match":"\\b(default)\\b"},{"include":"#strings"},{"include":"#comments"},{"name":"keyword.strong.control.cds","match":"(?i)\\b(from)\\b"},{"name":"entity.name.type.cds","match":"\\b([$_a-zA-Z][$_a-zA-Z0-9]*)\\b(?=.*\\bfrom\\b)"},{"name":"punctuation.separator.object.cds","match":","}],"beginCaptures":{"1":{"name":"keyword.strong.control.import.cds"}},"endCaptures":{"1":{"name":"punctuation.terminator.statement.cds"}}},{"name":"meta.export.cds","match":"(?i)\\b(export)\\b\\s*\\b(default)\\b(?:\\s*)\\b((?!\\bclass\\b|\\blet\\b|\\bvar\\b|\\bconst\\b)[$_a-zA-Z][$_a-zA-Z0-9]*)?\\b","captures":{"1":{"name":"keyword.control.cds"},"2":{"name":"variable.language.default.cds"},"3":{"name":"variable.other.module.cds"}}},{"begin":"(?i)\\b(action|function)\\s+([$_a-zA-Z][$_a-zA-Z0-9]*)\\s*(\\()","end":"\\)","patterns":[{"include":"#function-params"}],"beginCaptures":{"1":{"name":"keyword.strong.cds"},"2":{"name":"entity.name.function.cds"},"3":{"name":"punctuation.definition.parameters.begin.cds"}},"endCaptures":{"0":{"name":"punctuation.definition.parameters.end.cds"}}},{"name":"meta.class.cds","match":"\\b(class)(?:\\s+([$_a-zA-Z][$_a-zA-Z0-9]*))?(?:\\s+(extends)\\s+([$_a-zA-Z][$_a-zA-Z0-9]*))?\\s*($|(?={))","captures":{"1":{"name":"storage.type.class.cds"},"2":{"name":"entity.name.type.class.cds"},"3":{"name":"storage.modifier.cds"},"4":{"name":"entity.other.inherited-class.cds"}}},{"name":"storage.type.arrow.cds","match":"=\u003e"},{"name":"storage.type.var.cds","match":"(?\u003c!\\.|\\$)\\b(let|var)\\b(?!\\$)"},{"name":"storage.modifier.cds","match":"(?\u003c!\\.|\\$)\\b(get|set|const)\\b(?!\\$)"},{"name":"meta.control.yield.cds","match":"(?\u003c!\\.)\\b(yield)(?!\\s*:)\\b(?:\\s*(\\*))?","captures":{"1":{"name":"keyword.control.cds"},"2":{"name":"storage.modifier.cds"}}},{"name":"constant.language.cds","match":"\\b(false|Infinity|NaN|null|true|undefined)\\b"},{"name":"variable.language.cds","match":"(?\u003c!\\.)\\b(super|this)(?!\\s*:)\\b"},{"name":"punctuation.terminator.statement.cds","match":"\\;"},{"match":"(\\[)(\\])","captures":{"1":{"name":"punctuation.section.scope.begin.cds"},"2":{"name":"punctuation.section.scope.end.cds"}}},{"begin":"{","end":"}","patterns":[{"include":"$self"}],"beginCaptures":{"0":{"name":"punctuation.section.scope.begin.cds"}},"endCaptures":{"0":{"name":"punctuation.section.scope.end.cds"}}},{"begin":"\\(","end":"\\)","patterns":[{"include":"$self"}],"beginCaptures":{"0":{"name":"punctuation.section.scope.begin.cds"}},"endCaptures":{"0":{"name":"punctuation.section.scope.end.cds"}}},{"name":"meta.brace.square.cds","match":"\\[|\\]"},{"name":"support.class.cds","match":"(?\u003c=new )([$_a-zA-Z][$_a-zA-Z0-9]*)(?!\\w)"},{"name":"support.class.cds","match":"(?\u003c= instanceof )([$_a-zA-Z][$_a-zA-Z0-9]*)(?!\\w)"},{"name":"support.class.cds","match":"(?\u003c!\\w)([$_a-zA-Z][$_a-zA-Z0-9]*)(?=\\.prototype\\b)"},{"name":"keyword.other.cds","match":"(?i)(?\u003c=\\.)(prototype)\\b"},{"include":"#atAnnoParen"},{"include":"#atAnnoNoParen"},{"include":"#keywords"},{"include":"#numbers"},{"include":"#strings"},{"include":"#comments"},{"include":"#operators"},{"include":"#identifiers"}],"repository":{"annotationName":{"begin":"(?=[$_\"!a-zA-Z0-9])","end":"(?:(?\u003c=[$\"\\]])(?=\\s*[@:;])|(?\u003c=[_a-zA-Z0-9])\\b)(?!\\s*[#.])","patterns":[{"name":"entity.name.tag.cds","match":"[$_a-zA-Z][$_a-zA-Z0-9]*|\"[^\"]*(?:\"\"[^\"]*)*\"|!\\[[^\\]]*(?:\\]\\][^\\]]*)*\\]"},{"match":"\\s*(\\.)\\s*(@)?","captures":{"1":{"name":"entity.name.tag.dot.cds"},"2":{"name":"entity.name.tag.at.cds"}}},{"match":"\\s*(#)\\s*","captures":{"1":{"name":"entity.name.tag.hash.cds"}}}]},"atAnnoName":{"begin":"(@)","end":"(?:(?\u003c=[$\"\\]])(?=\\s*[@:;])|(?\u003c=[_a-zA-Z0-9])\\b)(?![#.])","patterns":[{"include":"#annotationName"}],"beginCaptures":{"1":{"name":"entity.name.tag.at.cds"}}},"atAnnoNoParen":{"begin":"(@)(?!\\s*\\()","end":"(?\u003c=[}\\]'`])(?=\\s*($|[@;]))|(?\u003c![@:])(?!\\s*:)(?=$|[\\s@,;(){}\\[\\]'`/\"!]|\\b[$_a-zA-Z])","patterns":[{"include":"#annotationName"},{"include":"#optColonAndStructure"},{"include":"#optColonAndArray"},{"include":"#colonAndNumber"},{"include":"#colonAndString"},{"include":"#colonAndTemplateString"},{"include":"#colonAndHashIdent"},{"include":"#colonAndConstant"},{"include":"#comments"}],"captures":{"1":{"name":"entity.name.tag.at.cds"}}},"atAnnoParen":{"begin":"(@)\\s*(\\()","end":"\\)","patterns":[{"include":"#annotationName"},{"include":"#optColonAndStructure"},{"include":"#optColonAndArray"},{"include":"#colonAndNumber"},{"include":"#colonAndString"},{"include":"#colonAndTemplateString"},{"include":"#colonAndHashIdent"},{"include":"#colonAndConstant"},{"name":"punctuation.separator.object.cds","match":","},{"include":"#comments"}],"beginCaptures":{"1":{"name":"entity.name.tag.at.cds"},"2":{"name":"punctuation.section.scope.begin.cds"}},"endCaptures":{"0":{"name":"punctuation.section.scope.end.cds"}}},"bracedElementDef":{"begin":"{","end":"}","patterns":[{"include":"#comments"},{"include":"#atAnnoParen"},{"include":"#atAnnoNoParen"},{"include":"#extendElement"},{"include":"#selectItemDef"},{"include":"#elementDef"}],"beginCaptures":{"0":{"name":"punctuation.section.scope.begin.cds"}},"endCaptures":{"0":{"name":"punctuation.section.scope.end.cds"}}},"bracketedExpression":{"begin":"\\(","end":"\\)","patterns":[{"include":"#bracedElementDef"},{"include":"#keywords"},{"match":"(?i)(?\u003c!@|select from )(?:\\$?\\b[_a-zA-Z][$_a-zA-Z0-9]*|\"[^\"]*(?:\"\"[^\"]*)*\"|!\\[[^\\]]*(?:\\]\\][^\\]]*)*\\])","captures":{"0":{"name":"entity.other.attribute-name.cds"}}},{"include":"#identifiers"},{"include":"#operators"}],"beginCaptures":{"0":{"name":"punctuation.section.scope.begin.cds"}},"endCaptures":{"0":{"name":"punctuation.section.scope.end.cds"}}},"colonAndConstant":{"match":"(?i)(:)\\s*(null|true|false)\\b","patterns":[{"include":"#comments"}],"captures":{"1":{"name":"keyword.operator.colon"},"2":{"name":"constant.language.cds"}}},"colonAndHashIdent":{"match":"(:)\\s*(#)\\s*([$_a-zA-Z][$_a-zA-Z0-9]*|\"[^\"]*(?:\"\"[^\"]*)*\"|!\\[[^\\]]*(?:\\]\\][^\\]]*)*\\])","patterns":[{"include":"#comments"}],"captures":{"1":{"name":"keyword.operator.colon"},"2":{"name":"entity.name.tag.hash.cds"},"3":{"name":"entity.name.tag.cds"}}},"colonAndNumber":{"begin":"(:)\\s*(?=[0-9+-])","end":"(?\u003c=[[[:xdigit:]]0-9])\\b","patterns":[{"include":"#numbers"},{"include":"#comments"}],"beginCaptures":{"1":{"name":"keyword.operator.colon"}}},"colonAndString":{"begin":"(:)\\s*(x|date|time(?:stamp)?)?\\s*(')","end":"'(?!')","patterns":[{"name":"string.quoted.single.cds meta.single-quote.doubled.cds","match":"''"},{"name":"string.quoted.single.cds","match":"."},{"include":"#comments"}],"beginCaptures":{"1":{"name":"keyword.operator.colon"},"2":{"name":"support.class.cds"},"3":{"name":"string.quoted.single.cds punctuation.definition.string.begin.cds"}},"endCaptures":{"0":{"name":"string.quoted.single.cds punctuation.definition.string.end.cds"}}},"colonAndTemplateString":{"begin":"(:)\\s*(?=`)","end":"(?\u003c=`)","patterns":[{"include":"#strings"},{"include":"#comments"}],"beginCaptures":{"1":{"name":"keyword.operator.colon"}}},"comments":{"patterns":[{"name":"comment.block.documentation.cds","begin":"/\\*\\*(?!/)","end":"\\*/","beginCaptures":{"0":{"name":"punctuation.definition.comment.begin.cds"}},"endCaptures":{"0":{"name":"punctuation.definition.comment.end.cds"}}},{"name":"comment.block.cds","begin":"/\\*","end":"\\*/","beginCaptures":{"0":{"name":"punctuation.definition.comment.begin.cds"}},"endCaptures":{"0":{"name":"punctuation.definition.comment.end.cds"}}},{"name":"comment.line.double-slash.cds","match":"//.*"}]},"elementDef":{"begin":"(?!\\s*@)(?:(?=\\()|\\b(virtual(?:\\s+))?(key(?:\\s+))?(masked(?:\\s+))?(element(?:\\s+))?)","end":"(?=})|(;)","patterns":[{"include":"#bracedElementDef"},{"include":"#strings"},{"include":"#comments"},{"include":"#atAnnoParen"},{"include":"#atAnnoNoParen"},{"include":"#keywords"},{"include":"#bracketedExpression"},{"name":"entity.other.attribute-name.cds","match":"(?\u003c!@)(?:\\$?\\b[_a-zA-Z][$_a-zA-Z0-9]*|\"[^\"]*(?:\"\"[^\"]*)*\"|!\\[[^\\]]*(?:\\]\\][^\\]]*)*\\])(?=\\s*[:{,@])"},{"match":"^\\s*([$_a-zA-Z][$_a-zA-Z0-9]*|\"[^\"]*(?:\"\"[^\"]*)*\"|!\\[[^\\]]*(?:\\]\\][^\\]]*)*\\])\\s*$","captures":{"1":{"name":"entity.other.attribute-name.cds"}}},{"include":"#identifiers"},{"include":"#operators"},{"include":"#numbers"},{"name":"punctuation.separator.object.cds","match":","},{}],"beginCaptures":{"1":{"name":"keyword.cds"},"2":{"name":"keyword.strong.cds"},"3":{"name":"keyword.cds"},"4":{"name":"keyword.cds"}},"endCaptures":{"1":{"name":"punctuation.terminator.statement.cds"}}},"escapes":{"name":"constant.character.escape.cds","match":"\\\\([xu$]\\{?[0-9a-fA-F]+}?|.|$)"},"extendElement":{"begin":"\\b(?=extend\\b.*\\bwith\\b)","end":"(?\u003c=})(;)?|(;)","patterns":[{"begin":"\\bextend\\b","end":"\\bwith\\b","patterns":[{"name":"keyword.cds","match":"element(?!(?:\\s*/\\*.*\\*/\\s*|\\s+)?with\\b)"},{"name":"entity.other.attribute-name.cds","match":"(?\u003c!@)(?:\\$?\\b[_a-zA-Z][$_a-zA-Z0-9]*|\"[^\"]*(?:\"\"[^\"]*)*\"|!\\[[^\\]]*(?:\\]\\][^\\]]*)*\\])"},{"include":"#comments"}],"beginCaptures":{"0":{"name":"keyword.strong.cds"}},"endCaptures":{"0":{"name":"keyword.cds"}}},{"include":"#atAnnoParen"},{"include":"#atAnnoNoParen"},{"begin":"{","end":"}","patterns":[{"include":"#extendElement"},{"include":"#elementDef"}],"beginCaptures":{"0":{"name":"punctuation.section.scope.begin.cds"}},"endCaptures":{"0":{"name":"punctuation.section.scope.end.cds"}}},{"include":"#comments"},{"include":"#keywords"},{"include":"#identifiers"},{"include":"#operators"},{"name":"punctuation.section.scope.begin.cds","match":"\\("},{"name":"punctuation.section.scope.end.cds","match":"\\)"},{"include":"#numbers"}],"endCaptures":{"1":{"name":"punctuation.terminator.statement.cds"},"2":{"name":"punctuation.terminator.statement.cds"}}},"function-params":{"patterns":[{"name":"variable.parameter.function.cds","match":"\\$?\\b[_a-zA-Z][$_a-zA-Z0-9]*|\"[^\"]*(?:\"\"[^\"]*)*\"|!\\[[^\\]]*(?:\\]\\][^\\]]*)*\\]"},{"name":"punctuation.separator.object.cds","match":","},{"include":"#comments"},{"include":"#operators"}]},"identifiers":{"patterns":[{"name":"entity.name.type.cds","match":"(?\u003c!@)(?:\\$?\\b[_a-zA-Z][$_a-zA-Z0-9]*|\"[^\"]*(?:\"\"[^\"]*)*\"|!\\[[^\\]]*(?:\\]\\][^\\]]*)*\\])"}]},"keywords":{"patterns":[{"match":"(?\u003c!\\.|\\$)\\b(Association\\b\\s*(?:\\[[0-9.eE+, *-]*\\]\\s*)?to\\b\\s*(?:many\\s*|one\\s*)?|Composition\\b\\s*(?:\\[[0-9.eE+, *-]*\\]\\s*)?of\\b\\s*(?:many\\s*|one\\s*)?)(?:(?=\\s*{)|([$_a-zA-Z][$_a-zA-Z0-9]*|\"[^\"]*(?:\"\"[^\"]*)*\"|!\\[[^\\]]*(?:\\]\\][^\\]]*)*\\]))","captures":{"1":{"name":"support.class.cds"},"2":{"name":"entity.name.type.cds"}}},{"name":"support.class.cds","match":"(?\u003c!\\.|\\$)\\b(Binary|Boolean|DateTime|Date|DecimalFloat|Decimal|Double|Int(16|32|64)|Integer64|Integer|LargeBinary|LargeString|Number|String|Timestamp|Time|UInt8|UUID)\\b\\s*(\\([^()]*\\))?(?!\\$|\\s*:)"},{"name":"keyword.cds","match":"(?i)(?\u003c!\\.|\\$)\\b(all|and|any|asc|between|by|case|cast|cross|desc|distinct|element|elements|escape|except|excluding|exists|first|from|full|group|group by|having|in|inner|intersect|into|is|join|last|left|like|limit|many|minus|mixin|not null|not|null|nulls|offset|one|or|order by|outer|redirected to|select|some|top|type of|union|where|with)\\b(?!\\$|\\s*:)"},{"name":"keyword.strong.cds","match":"(?i)(?\u003c!\\.|\\$)\\b(as|key|on|type)\\b(?!\\$|\\s*:)"},{"name":"keyword.cds","match":"(?\u003c!\\.|\\$)\\b(array of|column|columns|current|day|default|depends|else|enabled|end|generated|hana|hour|identity|import|index|language|layout|leading|masked|merge|minute|minutes|mode|month|name|new|no|off|only|others|parameters|partition|partitions|priority|projection|projection on|queue|range|ratio|reset|returns|right|row|search|second|start|storage|store|table|technical|then|trailing|trim|unique|unload|value|values|virtual|when|with parameters|year)\\b(?!\\$|\\s*:)"},{"name":"keyword.strong.cds","match":"(?\u003c!\\.|\\$)\\b(abstract|action|actions|annotation|aspect|context|define|entity|enum|event|extend|function|namespace|service|view)\\b(?!\\$|\\s*:)"}]},"literalValue":{"patterns":[{"match":"(#)\\s*([$_a-zA-Z][$_a-zA-Z0-9]*|\"[^\"]*(?:\"\"[^\"]*)*\"|!\\[[^\\]]*(?:\\]\\][^\\]]*)*\\])","captures":{"1":{"name":"entity.name.tag.hash.cds"},"2":{"name":"entity.name.tag.cds"}}},{"name":"constant.language.cds","match":"(?i)\\b(?:null|true|false)\\b"},{"include":"#numbers"},{"include":"#strings"},{"match":"(?i)\\b(x|date|time(?:stamp)?)\\s*((')[^']*('))","captures":{"1":{"name":"support.class.cds"},"2":{"name":"string.quoted.single.cds"},"3":{"name":"punctuation.definition.string.begin.cds"},"4":{"name":"punctuation.definition.string.end.cds"}}},{}]},"numbers":{"patterns":[{"name":"constant.numeric.hex.cds","match":"(?\u003c!\\w|\\$)0[xX][[:xdigit:]]+\\b"},{"name":"constant.numeric.binary.cds","match":"(?\u003c!\\w|\\$)0[bB][01]+\\b"},{"name":"constant.numeric.octal.cds","match":"(?\u003c!\\w|\\$)0[oO][0-7]+\\b"},{"name":"constant.numeric.cds","match":"(?\u003c!\\w|\\$)[+-]?[0-9]+('.'[0-9]+)?([eE][+-]?[0-9]+)?(?!\\w)"}]},"operators":{"patterns":[{"name":"keyword.operator.comparison.cds","match":"!=|\u003c=|\u003e=|\u003c\u003e|\u003c|\u003e"},{"name":"keyword.operator.concatenator.cds","match":"\\|\\|"},{"name":"keyword.operator.bitwise.cds","match":"\u0026|\\||\\^|~"},{"match":"\\:\\s*(localized)\\s+","captures":{"1":{"name":"keyword.cds"}}},{"name":"keyword.operator.cds","match":"[?:]"},{"name":"keyword.operator.logical.cds","match":"!"},{"name":"keyword.operator.assignment.cds","match":"=|\\:"},{"name":"keyword.operator.arithmetic.cds","match":"%|\\*|/|\\-|\\+"}]},"optColonAndArray":{"begin":"(:)?\\s*(\\[)","end":"\\]","patterns":[{"include":"#atAnnoNoParen"},{"include":"#annotationName"},{"match":"\\.{3}","captures":{"0":{"name":"keyword.operator.ellipsis"}}},{"match":"(?i)(up)\\s+(to)\\b","captures":{"1":{"name":"keyword.cds"},"2":{"name":"keyword.cds"}}},{"include":"#optColonAndStructure"},{"include":"#optColonAndArray"},{"include":"#literalValue"},{"name":"punctuation.separator.object.cds","match":","},{"include":"#comments"}],"beginCaptures":{"1":{"name":"keyword.operator.colon"},"2":{"name":"punctuation.section.scope.begin.cds"}},"endCaptures":{"0":{"name":"punctuation.section.scope.end.cds"}}},"optColonAndStructure":{"begin":"(:)?\\s*({)","end":"}","patterns":[{"include":"#atAnnoNoParen"},{"include":"#annotationName"},{"include":"#optColonAndStructure"},{"include":"#optColonAndArray"},{"include":"#colonAndNumber"},{"include":"#colonAndString"},{"include":"#colonAndTemplateString"},{"include":"#colonAndHashIdent"},{"include":"#colonAndConstant"},{"name":"punctuation.separator.object.cds","match":","},{"include":"#comments"}],"beginCaptures":{"1":{"name":"keyword.operator.colon"},"2":{"name":"punctuation.section.scope.begin.cds"}},"endCaptures":{"0":{"name":"punctuation.section.scope.end.cds"}}},"selectItemDef":{"begin":"^\\s*(?=\\*|.+\\s+as\\s+)","end":"(?=})|(,)","patterns":[{"include":"#bracedElementDef"},{"include":"#strings"},{"include":"#comments"},{"include":"#atAnnoParen"},{"include":"#atAnnoNoParen"},{"include":"#keywords"},{"include":"#bracketedExpression"},{"name":"entity.other.attribute-name.cds","match":"(?\u003c!@)(?:\\$?\\b[_a-zA-Z][$_a-zA-Z0-9]*|\"[^\"]*(?:\"\"[^\"]*)*\"|!\\[[^\\]]*(?:\\]\\][^\\]]*)*\\])"},{"include":"#operators"},{"include":"#numbers"},{"name":"punctuation.separator.object.cds","match":","}]},"strings":{"patterns":[{"name":"string.quoted.single.cds","begin":"'","end":"'(?!')","patterns":[{"name":"meta.single-quote.doubled.cds","match":"''"}],"beginCaptures":{"0":{"name":"punctuation.definition.string.begin.cds"}},"endCaptures":{"0":{"name":"punctuation.definition.string.end.cds"}}},{"name":"string.quoted.other.template.cds","begin":"`","end":"`(?!`)","patterns":[{"name":"string.quoted.other.template.block.cds","match":"``"},{"include":"#interpolation"},{"include":"#escapes"}],"beginCaptures":{"0":{"name":"punctuation.definition.string.begin.cds"}},"endCaptures":{"0":{"name":"punctuation.definition.string.end.cds"}}}]}}}
|