nuxt-og-image
Version:
Enlightened OG Image generation for Nuxt.
637 lines • 79 kB
JavaScript
const e=Object.freeze({displayName:"C#",name:"csharp",patterns:[{include:"#preprocessor"},{include:"#comment"},{include:"#directives"},{include:"#declarations"},{include:"#script-top-level"}],repository:{"accessor-getter":{patterns:[{begin:"\\{",beginCaptures:{0:{name:"punctuation.curlybrace.open.cs"}},contentName:"meta.accessor.getter.cs",end:"\\}",endCaptures:{0:{name:"punctuation.curlybrace.close.cs"}},patterns:[{include:"#statement"}]},{include:"#accessor-getter-expression"},{include:"#punctuation-semicolon"}]},"accessor-getter-expression":{begin:"=>",beginCaptures:{0:{name:"keyword.operator.arrow.cs"}},contentName:"meta.accessor.getter.cs",end:"(?=;|\\})",patterns:[{include:"#ref-modifier"},{include:"#expression"}]},"accessor-setter":{patterns:[{begin:"\\{",beginCaptures:{0:{name:"punctuation.curlybrace.open.cs"}},contentName:"meta.accessor.setter.cs",end:"\\}",endCaptures:{0:{name:"punctuation.curlybrace.close.cs"}},patterns:[{include:"#statement"}]},{begin:"=>",beginCaptures:{0:{name:"keyword.operator.arrow.cs"}},contentName:"meta.accessor.setter.cs",end:"(?=;|\\})",patterns:[{include:"#ref-modifier"},{include:"#expression"}]},{include:"#punctuation-semicolon"}]},"anonymous-method-expression":{patterns:[{begin:`(?x)
((?:\\b(?:async|static)\\b\\s*)*)
(?:
(@?[_[:alpha:]][_[:alnum:]]*)\\b|
(\\()
(?<tuple>(?:[^()]|\\(\\g<tuple>\\))*)
(\\))
)\\s*
(=>)`,beginCaptures:{1:{patterns:[{match:"async|static",name:"storage.modifier.$0.cs"}]},2:{name:"entity.name.variable.parameter.cs"},3:{name:"punctuation.parenthesis.open.cs"},4:{patterns:[{include:"#comment"},{include:"#explicit-anonymous-function-parameter"},{include:"#implicit-anonymous-function-parameter"},{include:"#default-argument"},{include:"#punctuation-comma"}]},5:{name:"punctuation.parenthesis.close.cs"},6:{name:"keyword.operator.arrow.cs"}},end:"(?=[,;)}])",patterns:[{include:"#intrusive"},{begin:"(?={)",end:"(?=[,;)}])",patterns:[{include:"#block"},{include:"#intrusive"}]},{begin:"\\b(ref)\\b|(?=\\S)",beginCaptures:{1:{name:"storage.modifier.ref.cs"}},end:"(?=[,;)}])",patterns:[{include:"#expression"}]}]},{begin:`(?x)
((?:\\b(?:async|static)\\b\\s*)*)
\\b(delegate)\\b\\s*`,beginCaptures:{1:{patterns:[{match:"async|static",name:"storage.modifier.$0.cs"}]},2:{name:"storage.type.delegate.cs"}},end:"(?<=})|(?=[,;)}])",patterns:[{include:"#intrusive"},{begin:"\\(",beginCaptures:{0:{name:"punctuation.parenthesis.open.cs"}},end:"\\)",endCaptures:{0:{name:"punctuation.parenthesis.close.cs"}},patterns:[{include:"#intrusive"},{include:"#explicit-anonymous-function-parameter"},{include:"#punctuation-comma"}]},{include:"#block"}]}]},"anonymous-object-creation-expression":{begin:"\\b(new)\\b\\s*(?=\\{|//|/\\*|$)",beginCaptures:{1:{name:"keyword.operator.expression.new.cs"}},end:"(?<=\\})",patterns:[{include:"#comment"},{include:"#initializer-expression"}]},argument:{patterns:[{match:"\\b(ref|in)\\b",name:"storage.modifier.$1.cs"},{begin:"\\b(out)\\b",beginCaptures:{1:{name:"storage.modifier.out.cs"}},end:"(?=,|\\)|\\])",patterns:[{include:"#declaration-expression-local"},{include:"#expression"}]},{include:"#expression"}]},"argument-list":{begin:"\\(",beginCaptures:{0:{name:"punctuation.parenthesis.open.cs"}},end:"\\)",endCaptures:{0:{name:"punctuation.parenthesis.close.cs"}},patterns:[{include:"#named-argument"},{include:"#argument"},{include:"#punctuation-comma"}]},"array-creation-expression":{begin:`(?x)
\\b(new|stackalloc)\\b\\s*
(?<type_name>
(?:
(?:
(?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)?
(?<name_and_type_args>
\\g<identifier>\\s*
(?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?
)
(?:\\s*\\.\\s*\\g<name_and_type_args>)* |
(?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))
)
(?:\\s*\\?\\s*)?
(?:\\s*
\\[
(?:\\s*,\\s*)*
\\]
\\s*
(?:\\?)?
\\s*
)*
)
)?\\s*
(?=\\[)`,beginCaptures:{1:{name:"keyword.operator.expression.$1.cs"},2:{patterns:[{include:"#type"}]}},end:"(?<=\\])",patterns:[{include:"#bracketed-argument-list"}]},"as-expression":{captures:{1:{name:"keyword.operator.expression.as.cs"},2:{patterns:[{include:"#type"}]}},match:`(?x)
(?<!\\.)\\b(as)\\b\\s*
(?<type_name>
(?:
(?:
(?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)?
(?<name_and_type_args>
\\g<identifier>\\s*
(?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?
)
(?:\\s*\\.\\s*\\g<name_and_type_args>)* |
(?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))
)
(?:\\s*\\?(?!\\?))?
(?:\\s*
\\[
\\s*(?:,\\s*)*
\\]
(?:\\s*\\?(?!\\?))?
)*
)
)?`},"assignment-expression":{begin:"(?:\\*|/|%|\\+|-|\\?\\?|\\&|\\^|<<|>>>?|\\|)?=(?!=|>)",beginCaptures:{0:{patterns:[{include:"#assignment-operators"}]}},end:"(?=[,\\)\\];}])",patterns:[{include:"#ref-modifier"},{include:"#expression"}]},"assignment-operators":{patterns:[{match:"\\*=|/=|%=|\\+=|-=|\\?\\?=",name:"keyword.operator.assignment.compound.cs"},{match:"\\&=|\\^=|<<=|>>>?=|\\|=",name:"keyword.operator.assignment.compound.bitwise.cs"},{match:"\\=",name:"keyword.operator.assignment.cs"}]},attribute:{patterns:[{include:"#type-name"},{include:"#attribute-arguments"}]},"attribute-arguments":{begin:"(\\()",beginCaptures:{1:{name:"punctuation.parenthesis.open.cs"}},end:"(\\))",endCaptures:{1:{name:"punctuation.parenthesis.close.cs"}},patterns:[{include:"#attribute-named-argument"},{include:"#expression"},{include:"#punctuation-comma"}]},"attribute-named-argument":{begin:"(@?[_[:alpha:]][_[:alnum:]]*)\\s*(?==)",beginCaptures:{1:{name:"entity.name.variable.property.cs"}},end:"(?=(,|\\)))",patterns:[{include:"#operator-assignment"},{include:"#expression"}]},"attribute-section":{begin:"(\\[)(assembly|module|field|event|method|param|property|return|type)?(\\:)?",beginCaptures:{1:{name:"punctuation.squarebracket.open.cs"},2:{name:"keyword.other.attribute-specifier.cs"},3:{name:"punctuation.separator.colon.cs"}},end:"(\\])",endCaptures:{1:{name:"punctuation.squarebracket.close.cs"}},patterns:[{include:"#comment"},{include:"#attribute"},{include:"#punctuation-comma"}]},"await-expression":{match:"(?<!\\.\\s*)\\b(await)\\b",name:"keyword.operator.expression.await.cs"},"await-statement":{begin:"(?<!\\.\\s*)\\b(await)\\b",beginCaptures:{1:{name:"keyword.operator.expression.await.cs"}},end:"(?<=})|(?=;|})",patterns:[{include:"#foreach-statement"},{include:"#using-statement"},{include:"#expression"}]},"base-types":{begin:":",beginCaptures:{0:{name:"punctuation.separator.colon.cs"}},end:"(?=\\{|where|;)",patterns:[{include:"#type"},{include:"#punctuation-comma"},{include:"#preprocessor"}]},block:{begin:"\\{",beginCaptures:{0:{name:"punctuation.curlybrace.open.cs"}},end:"\\}",endCaptures:{0:{name:"punctuation.curlybrace.close.cs"}},patterns:[{include:"#statement"}]},"boolean-literal":{patterns:[{match:"(?<!\\.)\\btrue\\b",name:"constant.language.boolean.true.cs"},{match:"(?<!\\.)\\bfalse\\b",name:"constant.language.boolean.false.cs"}]},"bracketed-argument-list":{begin:"\\[",beginCaptures:{0:{name:"punctuation.squarebracket.open.cs"}},end:"\\]",endCaptures:{0:{name:"punctuation.squarebracket.close.cs"}},patterns:[{include:"#named-argument"},{include:"#argument"},{include:"#punctuation-comma"}]},"bracketed-parameter-list":{begin:"(?=(\\[))",beginCaptures:{1:{name:"punctuation.squarebracket.open.cs"}},end:"(?=(\\]))",endCaptures:{1:{name:"punctuation.squarebracket.close.cs"}},patterns:[{begin:"(?<=\\[)",end:"(?=\\])",patterns:[{include:"#comment"},{include:"#attribute-section"},{include:"#parameter"},{include:"#punctuation-comma"},{include:"#variable-initializer"}]}]},"break-or-continue-statement":{match:"(?<!\\.)\\b(break|continue)\\b",name:"keyword.control.flow.$1.cs"},"case-guard":{patterns:[{include:"#parenthesized-expression"},{include:"#expression"}]},"cast-expression":{captures:{1:{name:"punctuation.parenthesis.open.cs"},2:{patterns:[{include:"#type"}]},7:{name:"punctuation.parenthesis.close.cs"}},match:`(?x)
(\\()\\s*
(?<type_name>
(?:
(?:
(?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)?
(?<name_and_type_args>
\\g<identifier>\\s*
(?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?
)
(?:\\s*\\.\\s*\\g<name_and_type_args>)* |
(?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))
)
(?:\\s*\\?\\s*)?
(?:\\s*
\\[
(?:\\s*,\\s*)*
\\]
\\s*
(?:\\?)?
\\s*
)*
)
)\\s*
(\\))(?=\\s*-*!*@?[_[:alnum:]\\(])`},"casted-constant-pattern":{begin:`(?x)
(\\()
([\\s.:@_[:alnum:]]+)
(\\))
(?=[\\s+\\-!~]*@?[_[:alnum:]('"]+)`,beginCaptures:{1:{name:"punctuation.parenthesis.open.cs"},2:{patterns:[{include:"#type-builtin"},{include:"#type-name"}]},3:{name:"punctuation.parenthesis.close.cs"}},end:"(?=[)}\\],;:?=&|^]|!=|\\b(and|or|when)\\b)",patterns:[{include:"#casted-constant-pattern"},{begin:"\\(",beginCaptures:{0:{name:"punctuation.parenthesis.open.cs"}},end:"\\)",endCaptures:{0:{name:"punctuation.parenthesis.close.cs"}},patterns:[{include:"#constant-pattern"}]},{include:"#constant-pattern"},{captures:{1:{name:"entity.name.type.alias.cs"},2:{name:"punctuation.separator.coloncolon.cs"}},match:"(@?[_[:alpha:]][_[:alnum:]]*)\\s*(\\:\\:)"},{captures:{1:{name:"entity.name.type.cs"},2:{name:"punctuation.accessor.cs"}},match:"(@?[_[:alpha:]][_[:alnum:]]*)\\s*(\\.)"},{match:"\\@?[_[:alpha:]][_[:alnum:]]*",name:"variable.other.constant.cs"}]},"catch-clause":{begin:"(?<!\\.)\\b(catch)\\b",beginCaptures:{1:{name:"keyword.control.exception.catch.cs"}},end:"(?<=\\})",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.parenthesis.open.cs"}},end:"\\)",endCaptures:{0:{name:"punctuation.parenthesis.close.cs"}},patterns:[{captures:{1:{patterns:[{include:"#type"}]},6:{name:"entity.name.variable.local.cs"}},match:`(?x)
(?<type_name>
(?:
(?:
(?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)?
(?<name_and_type_args>
\\g<identifier>\\s*
(?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?
)
(?:\\s*\\.\\s*\\g<name_and_type_args>)* |
(?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))
)
(?:\\s*\\?\\s*)?
(?:\\s*
\\[
(?:\\s*,\\s*)*
\\]
\\s*
(?:\\?)?
\\s*
)*
)
)\\s*
(?:(\\g<identifier>)\\b)?`}]},{include:"#when-clause"},{include:"#comment"},{include:"#block"}]},"char-character-escape":{match:"\\\\(x[0-9a-fA-F]{1,4}|u[0-9a-fA-F]{4}|.)",name:"constant.character.escape.cs"},"char-literal":{begin:"'",beginCaptures:{0:{name:"punctuation.definition.char.begin.cs"}},end:"(\\')|((?:[^\\\\\\n])$)",endCaptures:{1:{name:"punctuation.definition.char.end.cs"},2:{name:"invalid.illegal.newline.cs"}},name:"string.quoted.single.cs",patterns:[{include:"#char-character-escape"}]},"class-declaration":{begin:"(?=(\\brecord\\b\\s+)?\\bclass\\b)",end:"(?<=\\})|(?=;)",patterns:[{begin:`(?x)
(\\b(record)\\b\\s+)?
\\b(class)\\b\\s+
(@?[_[:alpha:]][_[:alnum:]]*)\\s*`,beginCaptures:{2:{name:"storage.type.record.cs"},3:{name:"storage.type.class.cs"},4:{name:"entity.name.type.class.cs"}},end:"(?=\\{)|(?=;)",patterns:[{include:"#comment"},{include:"#type-parameter-list"},{include:"#parenthesized-parameter-list"},{include:"#base-types"},{include:"#generic-constraints"}]},{begin:"\\{",beginCaptures:{0:{name:"punctuation.curlybrace.open.cs"}},end:"\\}",endCaptures:{0:{name:"punctuation.curlybrace.close.cs"}},patterns:[{include:"#class-or-struct-members"}]},{include:"#preprocessor"},{include:"#comment"}]},"class-or-struct-members":{patterns:[{include:"#preprocessor"},{include:"#comment"},{include:"#storage-modifier"},{include:"#type-declarations"},{include:"#property-declaration"},{include:"#field-declaration"},{include:"#event-declaration"},{include:"#indexer-declaration"},{include:"#variable-initializer"},{include:"#constructor-declaration"},{include:"#destructor-declaration"},{include:"#operator-declaration"},{include:"#conversion-operator-declaration"},{include:"#method-declaration"},{include:"#attribute-section"},{include:"#punctuation-semicolon"}]},"combinator-pattern":{match:"\\b(and|or|not)\\b",name:"keyword.operator.expression.pattern.combinator.$1.cs"},comment:{patterns:[{begin:"(^\\s+)?(///)(?!/)",captures:{1:{name:"punctuation.whitespace.comment.leading.cs"},2:{name:"punctuation.definition.comment.cs"}},name:"comment.block.documentation.cs",patterns:[{include:"#xml-doc-comment"}],while:"^(\\s*)(///)(?!/)"},{begin:"(^\\s+)?(/\\*\\*)(?!/)",captures:{1:{name:"punctuation.whitespace.comment.leading.cs"},2:{name:"punctuation.definition.comment.cs"}},end:"(^\\s+)?(\\*/)",name:"comment.block.documentation.cs",patterns:[{begin:"\\G(?=(?~\\*/)$)",patterns:[{include:"#xml-doc-comment"}],while:"^(\\s*+)(\\*(?!/))?(?=(?~\\*/)$)",whileCaptures:{1:{name:"punctuation.whitespace.comment.leading.cs"},2:{name:"punctuation.definition.comment.cs"}}},{include:"#xml-doc-comment"}]},{begin:"(^\\s+)?(//).*$",captures:{1:{name:"punctuation.whitespace.comment.leading.cs"},2:{name:"punctuation.definition.comment.cs"}},name:"comment.line.double-slash.cs",while:"^(\\s*)(//).*$"},{begin:"/\\*",captures:{0:{name:"punctuation.definition.comment.cs"}},end:"\\*/",name:"comment.block.cs"}]},"conditional-operator":{patterns:[{match:"\\?(?!\\?|\\s*[.\\[])",name:"keyword.operator.conditional.question-mark.cs"},{match:":",name:"keyword.operator.conditional.colon.cs"}]},"constant-pattern":{patterns:[{include:"#boolean-literal"},{include:"#null-literal"},{include:"#numeric-literal"},{include:"#char-literal"},{include:"#string-literal"},{include:"#raw-string-literal"},{include:"#verbatim-string-literal"},{include:"#type-operator-expression"},{include:"#expression-operator-expression"},{include:"#expression-operators"},{include:"#casted-constant-pattern"}]},"constructor-declaration":{begin:"(?=@?[_[:alpha:]][_[:alnum:]]*\\s*\\()",end:"(?<=\\})|(?=;)",patterns:[{captures:{1:{name:"entity.name.function.cs"}},match:"(@?[_[:alpha:]][_[:alnum:]]*)\\b"},{begin:"(:)",beginCaptures:{1:{name:"punctuation.separator.colon.cs"}},end:"(?=\\{|=>)",patterns:[{include:"#constructor-initializer"}]},{include:"#parenthesized-parameter-list"},{include:"#preprocessor"},{include:"#comment"},{include:"#expression-body"},{include:"#block"}]},"constructor-initializer":{begin:"\\b(base|this)\\b\\s*(?=\\()",beginCaptures:{1:{name:"variable.language.$1.cs"}},end:"(?<=\\))",patterns:[{include:"#argument-list"}]},"context-control-paren-statement":{patterns:[{include:"#fixed-statement"},{include:"#lock-statement"},{include:"#using-statement"}]},"context-control-statement":{match:"\\b(checked|unchecked|unsafe)\\b(?!\\s*[@_[:alpha:](])",name:"keyword.control.context.$1.cs"},"conversion-operator-declaration":{begin:`(?x)
(?<explicit_or_implicit_keyword>(?:\\b(?:explicit|implicit)))\\s*
(?<operator_keyword>(?:\\b(?:operator)))\\s*
(?<type_name>
(?:
(?:ref\\s+(?:readonly\\s+)?)?
(?:
(?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)?
(?<name_and_type_args>
\\g<identifier>\\s*
(?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?
)
(?:\\s*\\.\\s*\\g<name_and_type_args>)* |
(?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))
)
(?:\\s*\\?\\s*)?
(?:\\s*
\\[
(?:\\s*,\\s*)*
\\]
\\s*
(?:\\?)?
\\s*
)*
)
)\\s*
(?=\\()`,beginCaptures:{1:{patterns:[{captures:{1:{name:"storage.modifier.explicit.cs"}},match:"\\b(explicit)\\b"},{captures:{1:{name:"storage.modifier.implicit.cs"}},match:"\\b(implicit)\\b"}]},2:{name:"storage.type.operator.cs"},3:{patterns:[{include:"#type"}]}},end:"(?<=\\})|(?=;)",patterns:[{include:"#comment"},{include:"#parenthesized-parameter-list"},{include:"#expression-body"},{include:"#block"}]},"declaration-expression-local":{captures:{1:{name:"storage.type.var.cs"},2:{patterns:[{include:"#type"}]},7:{name:"entity.name.variable.local.cs"}},match:`(?x)
(?:
\\b(var)\\b|
(?<type_name>
(?:
(?:
(?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)?
(?<name_and_type_args>
\\g<identifier>\\s*
(?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?
)
(?:\\s*\\.\\s*\\g<name_and_type_args>)* |
(?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))
)
(?:\\s*\\?\\s*)?
(?:\\s*
\\[
(?:\\s*,\\s*)*
\\]
\\s*
(?:\\?)?
\\s*
)*
)
)
)\\s+
(\\g<identifier>)\\b\\s*
(?=[,)\\]])`},"declaration-expression-tuple":{captures:{1:{name:"storage.type.var.cs"},2:{patterns:[{include:"#type"}]},7:{name:"entity.name.variable.tuple-element.cs"}},match:`(?x)
(?:
\\b(var)\\b|
(?<type_name>
(?:
(?:
(?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)?
(?<name_and_type_args>
\\g<identifier>\\s*
(?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?
)
(?:\\s*\\.\\s*\\g<name_and_type_args>)* |
(?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))
)
(?:\\s*\\?\\s*)?
(?:\\s*
\\[
(?:\\s*,\\s*)*
\\]
\\s*
(?:\\?)?
\\s*
)*
)
)
)\\s+
(\\g<identifier>)\\b\\s*
(?=[,)])`},declarations:{patterns:[{include:"#namespace-declaration"},{include:"#type-declarations"},{include:"#punctuation-semicolon"}]},"default-argument":{begin:"=",beginCaptures:{0:{name:"keyword.operator.assignment.cs"}},end:"(?=,|\\))",patterns:[{include:"#expression"}]},"default-literal-expression":{captures:{1:{name:"keyword.operator.expression.default.cs"}},match:"\\b(default)\\b"},"delegate-declaration":{begin:`(?x)
(?:\\b(delegate)\\b)\\s+
(?<type_name>
(?:
(?:ref\\s+(?:readonly\\s+)?)?
(?:
(?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)?
(?<name_and_type_args>
\\g<identifier>\\s*
(?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?
)
(?:\\s*\\.\\s*\\g<name_and_type_args>)* |
(?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))
)
(?:\\s*\\?\\s*)?
(?:\\s*
\\[
(?:\\s*,\\s*)*
\\]
\\s*
(?:\\?)?
\\s*
)*
)
)\\s+
(\\g<identifier>)\\s*
(<([^<>]+)>)?\\s*
(?=\\()`,beginCaptures:{1:{name:"storage.type.delegate.cs"},2:{patterns:[{include:"#type"}]},7:{name:"entity.name.type.delegate.cs"},8:{patterns:[{include:"#type-parameter-list"}]}},end:"(?=;)",patterns:[{include:"#comment"},{include:"#parenthesized-parameter-list"},{include:"#generic-constraints"}]},"designation-pattern":{patterns:[{include:"#intrusive"},{begin:"\\(",beginCaptures:{0:{name:"punctuation.parenthesis.open.cs"}},end:"\\)",endCaptures:{0:{name:"punctuation.parenthesis.close.cs"}},patterns:[{include:"#punctuation-comma"},{include:"#designation-pattern"}]},{include:"#simple-designation-pattern"}]},"destructor-declaration":{begin:"(~)(@?[_[:alpha:]][_[:alnum:]]*)\\s*(?=\\()",beginCaptures:{1:{name:"punctuation.tilde.cs"},2:{name:"entity.name.function.cs"}},end:"(?<=\\})|(?=;)",patterns:[{include:"#comment"},{include:"#parenthesized-parameter-list"},{include:"#expression-body"},{include:"#block"}]},directives:{patterns:[{include:"#extern-alias-directive"},{include:"#using-directive"},{include:"#attribute-section"},{include:"#punctuation-semicolon"}]},"discard-pattern":{match:"_(?![_[:alnum:]])",name:"variable.language.discard.cs"},"do-statement":{begin:"(?<!\\.)\\b(do)\\b",beginCaptures:{1:{name:"keyword.control.loop.do.cs"}},end:"(?=;|})",patterns:[{include:"#statement"}]},"double-raw-interpolation":{begin:"(?<=[^\\{][^\\{]|^)((?:\\{)*)(\\{\\{)(?=[^\\{])",beginCaptures:{1:{name:"string.quoted.double.cs"},2:{name:"punctuation.definition.interpolation.begin.cs"}},end:"\\}\\}",endCaptures:{0:{name:"punctuation.definition.interpolation.end.cs"}},name:"meta.interpolation.cs",patterns:[{include:"#expression"}]},"element-access-expression":{begin:`(?x)
(?:
(?:(\\?)\\s*)?
(\\.)\\s*|
(->)\\s*
)?
(?:(@?[_[:alpha:]][_[:alnum:]]*)\\s*)?
(?:(\\?)\\s*)?
(?=\\[)`,beginCaptures:{1:{name:"keyword.operator.null-conditional.cs"},2:{name:"punctuation.accessor.cs"},3:{name:"punctuation.accessor.pointer.cs"},4:{name:"variable.other.object.property.cs"},5:{name:"keyword.operator.null-conditional.cs"}},end:"(?<=\\])(?!\\s*\\[)",patterns:[{include:"#bracketed-argument-list"}]},"else-part":{begin:"(?<!\\.)\\b(else)\\b",beginCaptures:{1:{name:"keyword.control.conditional.else.cs"}},end:"(?<=})|(?=;)",patterns:[{include:"#statement"}]},"enum-declaration":{begin:"(?=\\benum\\b)",end:"(?<=\\})",patterns:[{begin:"(?=enum)",end:"(?=\\{)",patterns:[{include:"#comment"},{captures:{1:{name:"storage.type.enum.cs"},2:{name:"entity.name.type.enum.cs"}},match:"(enum)\\s+(@?[_[:alpha:]][_[:alnum:]]*)"},{begin:":",beginCaptures:{0:{name:"punctuation.separator.colon.cs"}},end:"(?=\\{)",patterns:[{include:"#type"}]}]},{begin:"\\{",beginCaptures:{0:{name:"punctuation.curlybrace.open.cs"}},end:"\\}",endCaptures:{0:{name:"punctuation.curlybrace.close.cs"}},patterns:[{include:"#preprocessor"},{include:"#comment"},{include:"#attribute-section"},{include:"#punctuation-comma"},{begin:"@?[_[:alpha:]][_[:alnum:]]*",beginCaptures:{0:{name:"entity.name.variable.enum-member.cs"}},end:"(?=(,|\\}))",patterns:[{include:"#comment"},{include:"#variable-initializer"}]}]},{include:"#preprocessor"},{include:"#comment"}]},"event-accessors":{begin:"\\{",beginCaptures:{0:{name:"punctuation.curlybrace.open.cs"}},end:"\\}",endCaptures:{0:{name:"punctuation.curlybrace.close.cs"}},patterns:[{include:"#comment"},{include:"#attribute-section"},{begin:"\\b(add|remove)\\b\\s*(?=\\{|;|=>|//|/\\*|$)",beginCaptures:{1:{name:"storage.type.accessor.$1.cs"}},end:"(?<=\\}|;)|(?=\\})",patterns:[{include:"#accessor-setter"}]}]},"event-declaration":{begin:`(?x)
\\b(event)\\b\\s*
(?<return_type>
(?<type_name>
(?:
(?:
(?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)?
(?<name_and_type_args>
\\g<identifier>\\s*
(?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?
)
(?:\\s*\\.\\s*\\g<name_and_type_args>)* |
(?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))
)
(?:\\s*\\?\\s*)?
(?:\\s*
\\[
(?:\\s*,\\s*)*
\\]
\\s*
(?:\\?)?
\\s*
)*
)
)\\s+
)
(?<interface_name>\\g<type_name>\\s*\\.\\s*)?
(\\g<identifier>)\\s*
(?=\\{|;|,|=|//|/\\*|$)`,beginCaptures:{1:{name:"storage.type.event.cs"},2:{patterns:[{include:"#type"}]},8:{patterns:[{include:"#type"},{include:"#punctuation-accessor"}]},9:{name:"entity.name.variable.event.cs"}},end:"(?<=\\})|(?=;)",patterns:[{include:"#comment"},{include:"#event-accessors"},{match:"@?[_[:alpha:]][_[:alnum:]]*",name:"entity.name.variable.event.cs"},{include:"#punctuation-comma"},{begin:"=",beginCaptures:{0:{name:"keyword.operator.assignment.cs"}},end:"(?<=,)|(?=;)",patterns:[{include:"#expression"},{include:"#punctuation-comma"}]}]},"explicit-anonymous-function-parameter":{captures:{1:{name:"storage.modifier.$1.cs"},2:{patterns:[{include:"#type"}]},7:{name:"entity.name.variable.parameter.cs"}},match:`(?x)
(?:\\b(ref|params|out|in)\\b\\s*)?
(?<type_name>
(?:
(?:
(?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)?
(?<name_and_type_args>
\\g<identifier>\\s*
(?<type_args><(?:[^<>]|\\g<type_args>)*>\\s*)?
)
(?:\\s*\\.\\s*\\g<name_and_type_args>)* |
(?<tuple>\\s*\\((?:[^()]|\\g<tuple>)*\\))
)
(?:\\s*\\?\\s*)?
(?:\\s*
\\[
(?:\\s*,\\s*)*
\\]
\\s*
(?:\\?)?
\\s*
)*
)
)\\s*
\\b(\\g<identifier>)\\b`},expression:{patterns:[{include:"#preprocessor"},{include:"#comment"},{include:"#expression-operator-expression"},{include:"#type-operator-expression"},{include:"#default-literal-expression"},{include:"#throw-expression"},{include:"#raw-interpolated-string"},{include:"#interpolated-string"},{include:"#verbatim-interpolated-string"},{include:"#type-builtin"},{include:"#language-variable"},{include:"#switch-statement-or-expression"},{include:"#with-expression"},{include:"#conditional-operator"},{include:"#assignment-expression"},{include:"#expression-operators"},{include:"#await-expression"},{include:"#query-expression"},{include:"#as-expression"},{include:"#is-expression"},{include:"#anonymous-method-expression"},{include:"#object-creation-expression"},{include:"#array-creation-expression"},{include:"#anonymous-object-creation-expression"},{include:"#invocation-expression"},{include:"#member-access-expression"},{include:"#element-access-expression"},{include:"#cast-expression"},{include:"#literal"},{include:"#parenthesized-expression"},{include:"#tuple-deconstruction-assignment"},{include:"#initializer-expression"},{include:"#identifier"}]},"expression-body":{begin:"=>",beginCaptures:{0:{name:"keyword.operator.arrow.cs"}},end:"(?=[,\\);}])",patterns:[{include:"#ref-modifier"},{include:"#expression"}]},"expression-operator-expression":{begin:"\\b(checked|unchecked|nameof)\\s*(\\()",beginCaptures:{1:{name:"keyword.operator.expression.$1.cs"},2:{name:"punctuation.parenthesis.open.cs"}},end:"\\)",endCaptures:{0:{name:"punctuation.parenthesis.close.cs"}},patterns:[{include:"#expression"}]},"expression-operators":{patterns:[{match:"<<|>>>?",name:"keyword.operator.bitwise.shift.cs"},{match:"==|!=",name:"keyword.operator.comparison.cs"},{match:"<=|>=|<|>",name:"keyword.operator.relational.cs"},{match:"\\!|&&|\\|\\|",name:"keyword.operator.logical.cs"},{match:"\\&|~|\\^|\\|",name:"keyword.operator.bitwise.cs"},{match:"--",name:"keyword.operator.decrement.cs"},{match:"\\+\\+",name:"keyword.operator.increment.cs"},{match:"\\+|-(?!>)|\\*|/|%",name:"keyword.operator.arithmetic.cs"},{match:"\\?\\?",name:"keyword.operator.null-coalescing.cs"},{match:"\\.\\.",name:"keyword.operator.range.cs"}]},"extern-alias-directive":{begin:"\\b(extern)\\s+(alias)\\b",beginCaptures:{1:{name:"keyword.other.directive.extern.cs"},2:{name:"keyword.other.directive.alias.cs"}},end:"(?=;)",patterns:[{match:"\\@?[_[:alpha:]][_[:alnum:]]*",name:"variable.other.alias.cs"}]},"field-declaration":{begin:`(?x)
(?<type_name>
(?:
(?:
(?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)?
(?<name_and_type_args>
\\g<identifier>\\s*
(?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?
)
(?:\\s*\\.\\s*\\g<name_and_type_args>)* |
(?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))
)
(?:\\s*\\?\\s*)?
(?:\\s*
\\[
(?:\\s*,\\s*)*
\\]
\\s*
(?:\\?)?
\\s*
)*
)
)\\s+
(\\g<identifier>)\\s*
(?!=>|==)(?=,|;|=|$)`,beginCaptures:{1:{patterns:[{include:"#type"}]},6:{name:"entity.name.variable.field.cs"}},end:"(?=;)",patterns:[{match:"@?[_[:alpha:]][_[:alnum:]]*",name:"entity.name.variable.field.cs"},{include:"#punctuation-comma"},{include:"#comment"},{include:"#variable-initializer"},{include:"#class-or-struct-members"}]},"finally-clause":{begin:"(?<!\\.)\\b(finally)\\b",beginCaptures:{1:{name:"keyword.control.exception.finally.cs"}},end:"(?<=\\})",patterns:[{include:"#comment"},{include:"#block"}]},"fixed-statement":{begin:"\\b(fixed)\\b",beginCaptures:{1:{name:"keyword.control.context.fixed.cs"}},end:"(?<=\\))|(?=;|})",patterns:[{include:"#intrusive"},{begin:"\\(",beginCaptures:{0:{name:"punctuation.parenthesis.open.cs"}},end:"\\)",endCaptures:{0:{name:"punctuation.parenthesis.close.cs"}},patterns:[{include:"#intrusive"},{include:"#local-variable-declaration"}]}]},"for-statement":{begin:"\\b(for)\\b",beginCaptures:{1:{name:"keyword.control.loop.for.cs"}},end:"(?<=\\))|(?=;|})",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.parenthesis.open.cs"}},end:"\\)",endCaptures:{0:{name:"punctuation.parenthesis.close.cs"}},patterns:[{begin:"(?=[^;\\)])",end:"(?=;|\\))",patterns:[{include:"#intrusive"},{include:"#local-variable-declaration"}]},{begin:"(?=;)",end:"(?=\\))",patterns:[{include:"#intrusive"},{include:"#expression"},{include:"#punctuation-comma"},{include:"#punctuation-semicolon"}]}]}]},"foreach-statement":{begin:"\\b(foreach)\\b",beginCaptures:{1:{name:"keyword.control.loop.foreach.cs"}},end:"(?<=\\))|(?=;|})",patterns:[{include:"#intrusive"},{begin:"\\(",beginCaptures:{0:{name:"punctuation.parenthesis.open.cs"}},end:"\\)",endCaptures:{0:{name:"punctuation.parenthesis.close.cs"}},patterns:[{include:"#intrusive"},{captures:{1:{name:"storage.modifier.ref.cs"},2:{name:"storage.type.var.cs"},3:{patterns:[{include:"#type"}]},8:{name:"entity.name.variable.local.cs"},9:{name:"keyword.control.loop.in.cs"}},match:`(?x)
(?:
(?:(\\bref)\\s+)?(\\bvar\\b)|
(?<type_name>
(?:
(?:ref\\s+)?
(?:
(?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)?
(?<name_and_type_args>
\\g<identifier>\\s*
(?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?
)
(?:\\s*\\.\\s*\\g<name_and_type_args>)* |
(?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))
)
(?:\\s*\\?\\s*)?
(?:\\s*
\\[
(?:\\s*,\\s*)*
\\]
\\s*
(?:\\?)?
\\s*
)*
)
)
)\\s+
(\\g<identifier>)\\s+
\\b(in)\\b`},{captures:{1:{name:"storage.type.var.cs"},2:{patterns:[{include:"#tuple-declaration-deconstruction-element-list"}]},3:{name:"keyword.control.loop.in.cs"}},match:`(?x)
(?:\\b(var)\\b\\s*)?
(?<tuple>\\((?:[^\\(\\)]|\\g<tuple>)+\\))\\s+
\\b(in)\\b`},{include:"#expression"}]}]},"generic-constraints":{begin:"(where)\\s+(@?[_[:alpha:]][_[:alnum:]]*)\\s*(:)",beginCaptures:{1:{name:"storage.modifier.where.cs"},2:{name:"entity.name.type.type-parameter.cs"},3:{name:"punctuation.separator.colon.cs"}},end:"(?=\\{|where|;|=>)",patterns:[{match:"\\bclass\\b",name:"storage.type.class.cs"},{match:"\\bstruct\\b",name:"storage.type.struct.cs"},{match:"\\bdefault\\b",name:"keyword.other.constraint.default.cs"},{match:"\\bnotnull\\b",name:"keyword.other.constraint.notnull.cs"},{match:"\\bunmanaged\\b",name:"keyword.other.constraint.unmanaged.cs"},{captures:{1:{name:"keyword.operator.expression.new.cs"},2:{name:"punctuation.parenthesis.open.cs"},3:{name:"punctuation.parenthesis.close.cs"}},match:"(new)\\s*(\\()\\s*(\\))"},{include:"#type"},{include:"#punctuation-comma"},{include:"#generic-constraints"}]},"goto-statement":{begin:"(?<!\\.)\\b(goto)\\b",beginCaptures:{1:{name:"keyword.control.flow.goto.cs"}},end:"(?=[;}])",patterns:[{begin:"\\b(case)\\b",beginCaptures:{1:{name:"keyword.control.conditional.case.cs"}},end:"(?=[;}])",patterns:[{include:"#expression"}]},{captures:{1:{name:"keyword.control.conditional.default.cs"}},match:"\\b(default)\\b"},{match:"@?[_[:alpha:]][_[:alnum:]]*",name:"entity.name.label.cs"}]},"group-by":{captures:{1:{name:"keyword.operator.expression.query.by.cs"}},match:"\\b(by)\\b\\s*"},"group-clause":{begin:"\\b(group)\\b\\s*",beginCaptures:{1:{name:"keyword.operator.expression.query.group.cs"}},end:"(?=;|\\))",patterns:[{include:"#group-by"},{include:"#group-into"},{include:"#query-body"},{include:"#expression"}]},"group-into":{captures:{1:{name:"keyword.operator.expression.query.into.cs"},2:{name:"entity.name.variable.range-variable.cs"}},match:`(?x)
\\b(into)\\b\\s*
(@?[_[:alpha:]][_[:alnum:]]*)\\b\\s*`},identifier:{match:"@?[_[:alpha:]][_[:alnum:]]*",name:"variable.other.readwrite.cs"},"if-statement":{begin:"(?<!\\.)\\b(if)\\b\\s*(?=\\()",beginCaptures:{1:{name:"keyword.control.conditional.if.cs"}},end:"(?<=})|(?=;)",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.parenthesis.open.cs"}},end:"\\)",endCaptures:{0:{name:"punctuation.parenthesis.close.cs"}},patterns:[{include:"#expression"}]},{include:"#statement"}]},"implicit-anonymous-function-parameter":{match:"\\@?[_[:alpha:]][_[:alnum:]]*\\b",name:"entity.name.variable.parameter.cs"},"indexer-declaration":{begin:`(?x)
(?<return_type>
(?<type_name>
(?:
(?:ref\\s+(?:readonly\\s+)?)?
(?:
(?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)?
(?<name_and_type_args>
\\g<identifier>\\s*
(?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?
)
(?:\\s*\\.\\s*\\g<name_and_type_args>)* |
(?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))
)
(?:\\s*\\?\\s*)?
(?:\\s*
\\[
(?:\\s*,\\s*)*
\\]
\\s*
(?:\\?)?
\\s*
)*
)
)\\s+
)
(?<interface_name>\\g<type_name>\\s*\\.\\s*)?
(?<indexer_name>this)\\s*
(?=\\[)`,beginCaptures:{1:{patterns:[{include:"#type"}]},7:{patterns:[{include:"#type"},{include:"#punctuation-accessor"}]},8:{name:"variable.language.this.cs"}},end:"(?<=\\})|(?=;)",patterns:[{include:"#comment"},{include:"#bracketed-parameter-list"},{include:"#property-accessors"},{include:"#accessor-getter-expression"},{include:"#variable-initializer"}]},"initializer-expression":{begin:"\\{",beginCaptures:{0:{name:"punctuation.curlybrace.open.cs"}},end:"\\}",endCaptures:{0:{name:"punctuation.curlybrace.close.cs"}},patterns:[{include:"#expression"},{include:"#punctuation-comma"}]},"interface-declaration":{begin:"(?=\\binterface\\b)",end:"(?<=\\})",patterns:[{begin:`(?x)
(interface)\\b\\s+
(@?[_[:alpha:]][_[:alnum:]]*)`,beginCaptures:{1:{name:"storage.type.interface.cs"},2:{name:"entity.name.type.interface.cs"}},end:"(?=\\{)",patterns:[{include:"#comment"},{include:"#type-parameter-list"},{include:"#base-types"},{include:"#generic-constraints"}]},{begin:"\\{",beginCaptures:{0:{name:"punctuation.curlybrace.open.cs"}},end:"\\}",endCaptures:{0:{name:"punctuation.curlybrace.close.cs"}},patterns:[{include:"#interface-members"}]},{include:"#preprocessor"},{include:"#comment"}]},"interface-members":{patterns:[{include:"#preprocessor"},{include:"#comment"},{include:"#storage-modifier"},{include:"#property-declaration"},{include:"#event-declaration"},{include:"#indexer-declaration"},{include:"#method-declaration"},{include:"#operator-declaration"},{include:"#attribute-section"},{include:"#punctuation-semicolon"}]},"interpolated-string":{begin:'\\$"',beginCaptures:{0:{name:"punctuation.definition.string.begin.cs"}},end:'(")|((?:[^\\\\\\n])$)',endCaptures:{1:{name:"punctuation.definition.string.end.cs"},2:{name:"invalid.illegal.newline.cs"}},name:"string.quoted.double.cs",patterns:[{include:"#string-character-escape"},{include:"#interpolation"}]},interpolation:{begin:"(?<=[^\\{]|^)((?:\\{\\{)*)(\\{)(?=[^\\{])",beginCaptures:{1:{name:"string.quoted.double.cs"},2:{name:"punctuation.definition.interpolation.begin.cs"}},end:"\\}",endCaptures:{0:{name:"punctuation.definition.interpolation.end.cs"}},name:"meta.interpolation.cs",patterns:[{include:"#expression"}]},intrusive:{patterns:[{include:"#preprocessor"},{include:"#comment"}]},"invocation-expression":{begin:`(?x)
(?:
(?:(\\?)\\s*)?
(\\.)\\s*|
(->)\\s*
)?
(@?[_[:alpha:]][_[:alnum:]]*)\\s*
(
<
(?<type_args>
[^<>()]++|
<\\g<type_args>*+>|
\\(\\g<type_args>*+\\)
)*+
>\\s*
)?
(?=\\()`,beginCaptures:{1:{name:"keyword.operator.null-conditional.cs"},2:{name:"punctuation.accessor.cs"},3:{name:"punctuation.accessor.pointer.cs"},4:{name:"entity.name.function.cs"},5:{patterns:[{include:"#type-arguments"}]}},end:"(?<=\\))",patterns:[{include:"#argument-list"}]},"is-expression":{begin:"(?<!\\.)\\b(is)\\b",beginCaptures:{1:{name:"keyword.operator.expression.pattern.is.cs"}},end:"(?=[)}\\],;:?=&|^]|!=)",patterns:[{include:"#pattern"}]},"join-clause":{begin:`(?x)
\\b(join)\\b\\s*
(?<type_name>
(?:
(?:
(?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)?
(?<name_and_type_args>
\\g<identifier>\\s*
(?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?
)
(?:\\s*\\.\\s*\\g<name_and_type_args>)* |
(?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))
)
(?:\\s*\\?\\s*)?
(?:\\s*
\\[
(?:\\s*,\\s*)*
\\]
\\s*
(?:\\?)?
\\s*
)*
)
)?
\\s+(\\g<identifier>)\\b\\s*
\\b(in)\\b\\s*`,beginCaptures:{1:{name:"keyword.operator.expression.query.join.cs"},2:{patterns:[{include:"#type"}]},7:{name:"entity.name.variable.range-variable.cs"},8:{name:"keyword.operator.expression.query.in.cs"}},end:"(?=;|\\))",patterns:[{include:"#join-on"},{include:"#join-equals"},{include:"#join-into"},{include:"#query-body"},{include:"#expression"}]},"join-equals":{captures:{1:{name:"keyword.operator.expression.query.equals.cs"}},match:"\\b(equals)\\b\\s*"},"join-into":{captures:{1:{name:"keyword.operator.expression.query.into.cs"},2:{name:"entity.name.variable.range-variable.cs"}},match:`(?x)
\\b(into)\\b\\s*
(@?[_[:alpha:]][_[:alnum:]]*)\\b\\s*`},"join-on":{captures:{1:{name:"keyword.operator.expression.query.on.cs"}},match:"\\b(on)\\b\\s*"},"labeled-statement":{captures:{1:{name:"entity.name.label.cs"},2:{name:"punctuation.separator.colon.cs"}},match:"(@?[_[:alpha:]][_[:alnum:]]*)\\s*(:)"},"language-variable":{patterns:[{match:"\\b(base|this)\\b",name:"variable.language.$1.cs"},{match:"\\b(value)\\b",name:"variable.other.$1.cs"}]},"let-clause":{begin:`(?x)
\\b(let)\\b\\s*
(@?[_[:alpha:]][_[:alnum:]]*)\\b\\s*
(=)\\s*`,beginCaptures:{1:{name:"keyword.operator.expression.query.let.cs"},2:{name:"entity.name.variable.range-variable.cs"},3:{name:"keyword.operator.assignment.cs"}},end:"(?=;|\\))",patterns:[{include:"#query-body"},{include:"#expression"}]},"list-pattern":{begin:"(?=\\[)",end:"(?=[)}\\],;:?=&|^]|!=|\\b(and|or|when)\\b)",patterns:[{begin:"\\[",beginCaptures:{0:{name:"punctuation.squarebracket.open.cs"}},end:"\\]",endCaptures:{0:{name:"punctuation.squarebracket.close.cs"}},patterns:[{include:"#pattern"},{include:"#punctuation-comma"}]},{begin:"(?<=\\])",end:"(?=[)}\\],;:?=&|^]|!=|\\b(and|or|when)\\b)",patterns:[{include:"#intrusive"},{include:"#simple-designation-pattern"}]}]},literal:{patterns:[{include:"#boolean-literal"},{include:"#null-literal"},{include:"#numeric-literal"},{include:"#char-literal"},{include:"#raw-string-literal"},{include:"#string-literal"},{include:"#verbatim-string-literal"},{include:"#tuple-literal"}]},"local-constant-declaration":{begin:`(?x)
(?<const_keyword>\\b(?:const)\\b)\\s*
(?<type_name>
(?:
(?:
(?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)?
(?<name_and_type_args>
\\g<identifier>\\s*
(?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?
)
(?:\\s*\\.\\s*\\g<name_and_type_args>)* |
(?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))
)
(?:\\s*\\?\\s*)?
(?:\\s*
\\[
(?:\\s*,\\s*)*
\\]
\\s*
(?:\\?)?
\\s*
)*
)
)\\s+
(\\g<identifier>)\\s*
(?=,|;|=)`,beginCaptures:{1:{name:"storage.modifier.const.cs"},2:{patterns:[{include:"#type"}]},7:{name:"entity.name.variable.local.cs"}},end:"(?=;)",patterns:[{match:"@?[_[:alpha:]][_[:alnum:]]*",name:"entity.name.variable.local.cs"},{include:"#punctuation-comma"},{include:"#comment"},{include:"#variable-initializer"}]},"local-declaration":{patterns:[{include:"#local-constant-declaration"},{include:"#local-variable-declaration"},{include:"#local-function-declaration"},{include:"#local-tuple-var-deconstruction"}]},"local-function-declaration":{begin:`(?x)
\\b((?:(?:async|unsafe|static|extern)\\s+)*)
(?<type_name>
(?:ref\\s+(?:readonly\\s+)?)?
(?:
(?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)?
(?<name_and_type_args>
\\g<identifier>\\s*
(?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?
)
(?:\\s*\\.\\s*\\g<name_and_type_args>)* |
(?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))
)
(?:\\s*\\?)?
(?:\\s*
\\[
\\s*(?:,\\s*)*
\\]
(?:\\s*\\?)?
)*
)\\s+
(\\g<identifier>)\\s*
(<[^<>]+>)?\\s*
(?=\\()`,beginCaptures:{1:{patterns:[{include:"#storage-modifier"}]},2:{patterns:[{include:"#type"}]},7:{name:"entity.name.function.cs"},8:{patterns:[{include:"#type-parameter-list"}]}},end:"(?<=\\})|(?=;)",patterns:[{include:"#comment"},{include:"#parenthesized-parameter-list"},{include:"#generic-constraints"},{include:"#expression-body"},{include:"#block"}]},"local-tuple-var-deconstruction":{begin:`(?x)
(?:\\b(var)\\b\\s*)
(?<tuple>\\((?:[^\\(\\)]|\\g<tuple>)+\\))\\s*
(?=;|=|\\))`,beginCaptures:{1:{name:"storage.type.var.cs"},2:{patterns:[{include:"#tuple-declaration-deconstruction-element-list"}]}},end:"(?=;|\\))",patterns:[{include:"#comment"},{include:"#variable-initializer"}]},"local-variable-declaration":{begin:`(?x)
(?:
(?:(\\bref)\\s+(?:(\\breadonly)\\s+)?)?(\\bvar\\b)|
(?<type_name>
(?:
(?:ref\\s+(?:readonly\\s+)?)?
(?:
(?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)?
(?<name_and_type_args>
\\g<identifier>\\s*
(?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?
)
(?:\\s*\\.\\s*\\g<name_and_type_args>)* |
(?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))
)
(?:\\s*[?*]\\s*)?
(?:\\s*
\\[
(?:\\s*,\\s*)*
\\]
\\s*
(?:\\?)?
\\s*
)*
)
)
)\\s+
(\\g<identifier>)\\s*
(?!=>)
(?=,|;|=|\\))`,beginCaptures:{1:{name:"storage.modifier.ref.cs"},2:{name:"storage.modifier.readonly.cs"},3:{name:"storage.type.var.cs"},4:{patterns:[{include:"#type"}]},9:{name:"entity.name.variable.local.cs"}},end:"(?=[;)}])",patterns:[{match:"@?[_[:alpha:]][_[:alnum:]]*",name:"entity.name.variable.local.cs"},{include:"#punctuation-comma"},{include:"#comment"},{include:"#variable-initializer"}]},"lock-statement":{begin:"\\b(lock)\\b",beginCaptures:{1:{name:"keyword.control.context.lock.cs"}},end:"(?<=\\))|(?=;|})",patterns:[{include:"#intrusive"},{begin:"\\(",beginCaptures:{0:{name:"punctuation.parenthesis.open.cs"}},end:"\\)",endCaptures:{0:{name:"punctuation.parenthesis.close.cs"}},patterns:[{include:"#intrusive"},{include:"#expression"}]}]},"member-access-expression":{patterns:[{captures:{1:{name:"keyword.operator.null-conditional.cs"},2:{name:"punctuation.accessor.cs"},3:{name:"punctuation.accessor.pointer.cs"},4:{name:"variable.other.object.property.cs"}},match:`(?x)
(?:
(?:(\\?)\\s*)?
(\\.)\\s*|
(->)\\s*
)
(@?[_[:alpha:]][_[:alnum:]]*)\\s*
(?![_[:alnum:]]|\\(|(\\?)?\\[|<)`},{captures:{1:{name:"punctuation.accessor.cs"},2:{name:"variable.other.object.cs"},3:{patterns:[{include:"#type-arguments"}]}},match:`(?x)
(\\.)?\\s*
(@?[_[:alpha:]][_[:alnum:]]*)
(?<type_params>\\s*<([^<>]|\\g<type_params>)+>\\s*)
(?=
(\\s*\\?)?
\\s*\\.\\s*@?[_[:alpha:]][_[:alnum:]]*
)`},{captures:{1:{name:"variable.other.object.cs"}},match:`(?x)
(@?[_[:alpha:]][_[:alnum:]]*)
(?=
\\s*(?:(?:\\?\\s*)?\\.|->)
\\s*@?[_[:alpha:]][_[:alnum:]]*
)`}]},"method-declaration":{begin:`(?x)
(?<return_type>
(?<type_name>
(?:
(?:ref\\s+(?:readonly\\s+)?)?
(?:
(?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)?
(?<name_and_type_args>
\\g<identifier>\\s*
(?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?
)
(?:\\s*\\.\\s*\\g<name_and_type_args>)* |
(?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))
)
(?:\\s*\\?\\s*)?
(?:\\s*
\\[
(?:\\s*,\\s*)*
\\]
\\s*
(?:\\?)?
\\s*
)*
)
)\\s+
)
(?<interface_name>\\g<type_name>\\s*\\.\\s*)?
(\\g<identifier>)\\s*
(<([^<>]+)>)?\\s*
(?=\\()`,beginCaptures:{1:{patterns:[{include:"#type"}]},7:{patterns:[{include:"#type"},{include:"#punctuation-accessor"}]},8:{name:"entity.name.function.cs"},9:{patterns:[{include:"#type-parameter-list"}]}},end:"(?<=\\})|(?=;)",patterns:[{include:"#comment"},{include:"#parenthesized-parameter-list"},{include:"#generic-constraints"},{include:"#expression-body"},{include:"#block"}]},"named-argument":{begin:"(@?[_[:alpha:]][_[:alnum:]]*)\\s*(:)",beginCaptures:{1:{name:"entity.name.variable.parameter.cs"},2:{name:"punctuation.separator.colon.cs"}},end:"(?=(,|\\)|\\]))",patterns:[{include:"#argument"}]},"namespace-declaration":{begin:"\\b(namespace)\\s+",beginCaptures:{1:{name:"storage.type.namespace.cs"}},end:"(?<=\\})|(?=;)",patterns:[{include:"#comment"},{match:"@?[_[:alpha:]][_[:alnum:]]*",name:"entity.name.type.namespace.cs"},{include:"#punctuation-accessor"},{begin:"\\{",beginCaptures:{0:{name:"punctuation.curlybrace.open.cs"}},end:"\\}",endCaptures:{0:{name:"punctuation.curlybrace.close.cs"}},patterns:[{include:"#declarations"},{include:"#using-directive"},{include:"#punctuation-semicolon"}]}]},"null-literal":{match:"(?<!\\.)\\bnull\\b",name:"constant.language.null.cs"},"numeric-literal":{captures:{0:{patterns:[{begin:"(?=.)",end:"$",patterns:[{captures:{2:{name:"constant.numeric.decimal.cs",patterns:[{match:"(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])",name:"constant.numeric.other.separator.thousands.cs"}]},3:{name:"constant.numeric.other.separator.thousands.cs"},4:{name:"constant.numeric.other.separator.decimals.cs"},5:{name:"constant.numeric.decimal.cs",patterns:[{match:"(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])",name:"constant.numeric.other.separator.thousands.cs"}]},6:{name:"constant.numeric.other.separator.thousands.cs"},8:{name:"constant.numeric.other.exponent.cs"},9:{name:"keyword.operator.arithmetic.cs"},10:{name:"keyword.operator.arithmetic.cs"},11:{name:"constant.numeric.decimal.cs",patterns:[{match:"(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])",name:"constant.numeric.other.separator.thousands.cs"}]},12:{name:"constant.numeric.other.suffix.cs"}},match:"(\\G(?=[0-9.])(?!0[xXbB]))([0-9](?:[0-9]|((?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)?((?:(?<=[0-9])|\\.(?=[0-9])))([0-9](?:[0-9]|((?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)?((?<!_)([eE])(\\+?)(\\-?)((?:[0-9](?:[0-9]|(?:(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)))?([fFdDmM](?!\\w))?$"},{captures:{1:{name:"constant.numeric.other.preffix.binary.cs"},2:{name:"constant.numeric.binary.cs",patterns:[{match:"(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])",name:"constant.numeric.other.separator.thousands.cs"}]},3:{name:"constant.numeric.other.separator.thousands.cs"},4:{name:"constant.numeric.other.suffix.cs"}},match:"(\\G0[bB])([01_](?:[01_]|((?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)((?:(?:(?:(?:(?:[uU]|[uU]l)|[uU]L)|l[uU]?)|L[uU]?)|[fFdDmM])(?!\\w))?$"},{captures:{1:{name:"constant.numeric.other.preffix.hex.cs"},2:{name:"constant.numeric.hex.cs",patterns:[{match:"(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])",name:"constant.numeric.other.separator.thousands.cs"}]},3:{name:"constant.numeric.other.separator.thousands.cs"},4:{name:"constant.numeric.other.suffix.cs"}},match:"(\\G0[xX])([0-9a-fA-F](?:[0-9a-fA-F]|((?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)((?:(?:(?:(?:(?:[uU]|[uU]l)|[uU]L)|l[uU]?)|L[uU]?)|[fFdDmM])(?!\\w))?$"},{captures:{2:{name:"constant.numeric.decimal.cs",patterns:[{match:"(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])",name:"constant.numeric.other.separator.thousands.cs"}]},3:{name:"constant.numeric.other.separator.thousands.cs"},5:{name:"constant.numeric.other.exponent.cs"},6:{name:"keyword.operator.arithmetic.cs"},7:{name:"keyword.operator.arithmetic.cs"},8:{name:"constant.numeric.decimal.cs",patterns:[{match:"(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])",name:"constant.numeric.other.separator.thousands.cs"}]},9:{name:"constant.numeric.other.suffix.cs"}},match:"(\\G(?=[0-9.])(?!0[xXbB]))([0-9](?:[0-9]|((?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)((?<!_)([eE])(\\+?)(\\-?)((?:[0-9](?:[0-9]|(?:(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)))?((?:(?:(?:(?:(?:[uU]|[uU]l)|[uU]L)|l[uU]?)|L[uU]?)|[fFdDmM])(?!\\w))?$"},{match:"(?:(?:[0-9a-zA-Z_]|_)|(?<=[eE])[+-]|\\.\\d)+",name:"invalid.illegal.constant.numeric.cs"}]}]}},match:"(?<!\\w)\\.?\\d(?:(?:[0-9a-zA-Z_]|_)|(?<=[eE])[+-]|\\.\\d)*"},"object-creation-expression":{patterns:[{include:"#object-creation-expression-with-parameters"},{include:"#object-creation-expression-with-no-parameters"}]},"object-creation-expression-with-no-parameters":{captures:{1:{name:"keyword.operator.expression.new.cs"},2:{patterns:[{include:"#type"}]}},match:`(?x)
(new)\\s+
(?<type_name>
(?:
(?:
(?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)?
(?<name_and_type_args>
\\g<identifier>\\s*
(?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?
)
(?:\\s*\\.\\s*\\g<name_and_type_args>)* |
(?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))
)
(?:\\s*\\?\\s*)?
(?:\\s*
\\[
(?:\\s*,\\s*)*
\\]
\\s*
(?:\\?)?
\\s*
)*
)
)\\s*
(?=\\{|//|/\\*|$)`},"object-creation-expression-with-parameters":{begin:`(?x)
(new)(?:\\s+
(?<type_name>
(?:
(?:
(?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)?
(?<name_and_type_args>
\\g<identifier>\\s*
(?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?
)
(?:\\s*\\.\\s*\\g<name_and_type_args>)* |
(?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))
)
(?:\\s*\\?\\s*)?
(?:\\s*
\\[
(?:\\s*,\\s*)*
\\]
\\s*
(?:\\?)?
\\s*
)*
)
))?\\s*
(?=\\()`,beginCaptures:{1:{name:"keyword.operator.expression.new.cs"},2:{patterns:[{include:"#type"}]}},end:"(?<=\\))",patterns:[{include:"#argument-list"}]},"operator-assignment":{match:"(?<!=|!)(=)(?!=)",name:"keyword.operator.assignment.cs"},"operator-declaration":{begin:`(?x)
(?<type_name>
(?:
(?:ref\\s+(?:readonly\\s+)?)?
(?:
(?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)?
(?<name_and_type_args>
\\g<identifier>\\s*
(?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?
)
(?:\\s*\\.\\s*\\g<name_and_type_args>)* |
(?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))
)
(?:\\s*\\?\\s*)?
(?:\\s*
\\[
(?:\\s*,\\s*)*
\\]
\\s*
(?:\\?)?
\\s*
)*
)
)\\s*
\\b(?<operator_keyword>operator)\\b\\s*
(?<operator>[+\\-*/%&|\\^!=~<>]+|true|false)\\s*
(?=\\()`,beginCaptures:{1:{patterns:[{include:"#type"}]},6:{name:"storage.type.operator.cs"},7:{name:"entity.name.function.cs"}},end:"(?<=\\})|(?=;)",patterns:[{include:"#comment"},{include:"#parenthesized-parameter-list"},{include:"#expression-body"},{include:"#block"}]},"orderby-clause":{begin:"\\b(orderby)\\b\\s*",beginCaptures:{1:{name:"keyword.operator.expression.query.orderby.cs"}},end:"(?=;|\\))",patterns:[{include:"#ordering-direction"},{include:"#query-body"},{include:"#expression"},{include:"#punctuation-comma"}]},"ordering-direction":{captures:{1:{name:"keyword.operator.expression.query.$1.cs"}},match:"\\b(ascending|descending)\\b"},parameter:{captures:{1:{name:"storage.modifier.$1.cs"},2:{patterns:[{include:"#type"}]},7:{name:"entity.name.variable.parameter.cs"}},match:`(?x)
(?:(?:\\b(ref|params|out|in|this)\\b)\\s+)?
(?<type_name>
(?:
(?:ref\\s+)?
(?:
(?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)?
(?<name_and_type_args>
\\g<identifier>\\s*
(?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?
)
(?:\\s*\\.\\s*\\g<name_and_type_args>)* |
(?<tuple>\\s*\\((?:[^()]|\\g<tuple>)+\\))
)
(?:\\s*\\?\\s*)?
(?:\\s*
\\[
(?:\\s*,\\s*)*
\\]
\\s*
(?:\\?)?
\\s*
)*
)
)\\s+
(\\g<identifier>)`},"parenthesized-expression":{begin:"\\(",beginCaptures:{0:{name:"punctuation.parenthesis.open.cs"}},end:"\\)",endCaptures:{0:{name:"punctuation.parenthesis.close.cs"}},patterns:[{include:"#expression"}]},"parenthesized-parameter-list":{begin:"(\\()",beginCaptures:{0:{name:"punctuation.parenthesis.open.cs"}},end:"(\\))",endCaptures:{0:{name:"punctuation.parenthesis.close.cs"}},patterns:[{include:"#comment"},{include:"#attribute-section"},{include:"#parameter"},{include:"#punctuation-comma"},{include:"#variable-initializer"}]},pattern:{patterns:[{include:"#intrusive"},{include:"#combinator-pattern"},{include:"#discard-pattern"},{include:"#constant-pattern"},{include:"#relational-pattern"},{include:"#var-pattern"},{include:"#type-pattern"},{include:"#positional-pattern"},{include:"#property-pattern"},{include:"#list-pattern"},{include:"#slice-pattern"}]},"positional-pattern":{begin:"(?=\\()",end:"(?=[)}\\],;:?=&|^]|!=|\\b(and|or|when)\\b)",patterns:[{begin:"\\(",beginCaptures:{0:{name:"punctuation.parenthesis.open.cs"}},end:"\\)",endCaptures:{0:{name:"punctuation.parenthesis.close.cs"}},patterns:[{include:"#subpattern"},{include:"#punctuation-comma"}]},{begin:"(?<=\\))",end:"(?=[)}\\],;:?=&|^]|!=|\\b(and|or|when)\\b)",patterns:[{include:"#intrusive"},{include:"#property-pattern"},{include:"#simple-designation-pattern"}]}]},preprocessor:{begin:"^\\s*(\\#)\\s*",beginCaptures:{1:{name:"punctuation.separator.hash.cs"}},end:"(?<=$)",name:"meta.preprocessor.cs",patterns:[{include:"#comment"},{include:"#preprocessor-define-or-undef"},{include:"#preprocessor-if-or-elif"},{include:"#preprocessor-else-or-endif"},{include:"#preprocessor-warning-or-error"},{include:"#preprocessor-region"},{include:"#preprocessor-endregion"},{include:"#preprocessor-load"},{include:"#preprocessor-r"},{include:"#preprocessor-line"},{include:"#preprocessor-pragma-warni