<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>name</key> <string>C#</string> <key>scopeName</key> <string>source.cs</string> <key>fileTypes</key> <array> <string>cs</string> </array> <key>uuid</key> <string>f7de61e2-bdde-4e2a-a139-8221b179584e</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#preprocessor</string> </dict> <dict> <key>include</key> <string>#comment</string> </dict> <dict> <key>include</key> <string>#directives</string> </dict> <dict> <key>include</key> <string>#declarations</string> </dict> <dict> <key>include</key> <string>#script-top-level</string> </dict> </array> <key>repository</key> <dict> <key>directives</key> <dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#extern-alias-directive</string> </dict> <dict> <key>include</key> <string>#using-directive</string> </dict> <dict> <key>include</key> <string>#attribute-section</string> </dict> <dict> <key>include</key> <string>#punctuation-semicolon</string> </dict> </array> </dict> <key>declarations</key> <dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#namespace-declaration</string> </dict> <dict> <key>include</key> <string>#type-declarations</string> </dict> <dict> <key>include</key> <string>#punctuation-semicolon</string> </dict> </array> </dict> <key>script-top-level</key> <dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#statement</string> </dict> <dict> <key>include</key> <string>#method-declaration</string> </dict> <dict> <key>include</key> <string>#punctuation-semicolon</string> </dict> </array> </dict> <key>type-declarations</key> <dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#preprocessor</string> </dict> <dict> <key>include</key> <string>#comment</string> </dict> <dict> <key>include</key> <string>#storage-modifier</string> </dict> <dict> <key>include</key> <string>#class-declaration</string> </dict> <dict> <key>include</key> <string>#delegate-declaration</string> </dict> <dict> <key>include</key> <string>#enum-declaration</string> </dict> <dict> <key>include</key> <string>#interface-declaration</string> </dict> <dict> <key>include</key> <string>#struct-declaration</string> </dict> <dict> <key>include</key> <string>#record-declaration</string> </dict> <dict> <key>include</key> <string>#attribute-section</string> </dict> <dict> <key>include</key> <string>#punctuation-semicolon</string> </dict> </array> </dict> <key>class-or-struct-members</key> <dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#preprocessor</string> </dict> <dict> <key>include</key> <string>#comment</string> </dict> <dict> <key>include</key> <string>#storage-modifier</string> </dict> <dict> <key>include</key> <string>#type-declarations</string> </dict> <dict> <key>include</key> <string>#property-declaration</string> </dict> <dict> <key>include</key> <string>#field-declaration</string> </dict> <dict> <key>include</key> <string>#event-declaration</string> </dict> <dict> <key>include</key> <string>#indexer-declaration</string> </dict> <dict> <key>include</key> <string>#variable-initializer</string> </dict> <dict> <key>include</key> <string>#constructor-declaration</string> </dict> <dict> <key>include</key> <string>#destructor-declaration</string> </dict> <dict> <key>include</key> <string>#operator-declaration</string> </dict> <dict> <key>include</key> <string>#conversion-operator-declaration</string> </dict> <dict> <key>include</key> <string>#method-declaration</string> </dict> <dict> <key>include</key> <string>#attribute-section</string> </dict> <dict> <key>include</key> <string>#punctuation-semicolon</string> </dict> </array> </dict> <key>interface-members</key> <dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#preprocessor</string> </dict> <dict> <key>include</key> <string>#comment</string> </dict> <dict> <key>include</key> <string>#storage-modifier</string> </dict> <dict> <key>include</key> <string>#property-declaration</string> </dict> <dict> <key>include</key> <string>#event-declaration</string> </dict> <dict> <key>include</key> <string>#indexer-declaration</string> </dict> <dict> <key>include</key> <string>#method-declaration</string> </dict> <dict> <key>include</key> <string>#operator-declaration</string> </dict> <dict> <key>include</key> <string>#attribute-section</string> </dict> <dict> <key>include</key> <string>#punctuation-semicolon</string> </dict> </array> </dict> <key>statement</key> <dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#preprocessor</string> </dict> <dict> <key>include</key> <string>#comment</string> </dict> <dict> <key>include</key> <string>#while-statement</string> </dict> <dict> <key>include</key> <string>#do-statement</string> </dict> <dict> <key>include</key> <string>#for-statement</string> </dict> <dict> <key>include</key> <string>#foreach-statement</string> </dict> <dict> <key>include</key> <string>#if-statement</string> </dict> <dict> <key>include</key> <string>#else-part</string> </dict> <dict> <key>include</key> <string>#goto-statement</string> </dict> <dict> <key>include</key> <string>#return-statement</string> </dict> <dict> <key>include</key> <string>#break-or-continue-statement</string> </dict> <dict> <key>include</key> <string>#throw-statement</string> </dict> <dict> <key>include</key> <string>#yield-statement</string> </dict> <dict> <key>include</key> <string>#await-statement</string> </dict> <dict> <key>include</key> <string>#try-statement</string> </dict> <dict> <key>include</key> <string>#expression-operator-expression</string> </dict> <dict> <key>include</key> <string>#context-control-statement</string> </dict> <dict> <key>include</key> <string>#context-control-paren-statement</string> </dict> <dict> <key>include</key> <string>#labeled-statement</string> </dict> <dict> <key>include</key> <string>#object-creation-expression</string> </dict> <dict> <key>include</key> <string>#array-creation-expression</string> </dict> <dict> <key>include</key> <string>#anonymous-object-creation-expression</string> </dict> <dict> <key>include</key> <string>#local-declaration</string> </dict> <dict> <key>include</key> <string>#block</string> </dict> <dict> <key>include</key> <string>#expression</string> </dict> <dict> <key>include</key> <string>#punctuation-semicolon</string> </dict> </array> </dict> <key>expression</key> <dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#preprocessor</string> </dict> <dict> <key>include</key> <string>#comment</string> </dict> <dict> <key>include</key> <string>#expression-operator-expression</string> </dict> <dict> <key>include</key> <string>#type-operator-expression</string> </dict> <dict> <key>include</key> <string>#default-literal-expression</string> </dict> <dict> <key>include</key> <string>#throw-expression</string> </dict> <dict> <key>include</key> <string>#raw-interpolated-string</string> </dict> <dict> <key>include</key> <string>#interpolated-string</string> </dict> <dict> <key>include</key> <string>#verbatim-interpolated-string</string> </dict> <dict> <key>include</key> <string>#type-builtin</string> </dict> <dict> <key>include</key> <string>#language-variable</string> </dict> <dict> <key>include</key> <string>#switch-statement-or-expression</string> </dict> <dict> <key>include</key> <string>#with-expression</string> </dict> <dict> <key>include</key> <string>#conditional-operator</string> </dict> <dict> <key>include</key> <string>#assignment-expression</string> </dict> <dict> <key>include</key> <string>#expression-operators</string> </dict> <dict> <key>include</key> <string>#await-expression</string> </dict> <dict> <key>include</key> <string>#query-expression</string> </dict> <dict> <key>include</key> <string>#as-expression</string> </dict> <dict> <key>include</key> <string>#is-expression</string> </dict> <dict> <key>include</key> <string>#anonymous-method-expression</string> </dict> <dict> <key>include</key> <string>#object-creation-expression</string> </dict> <dict> <key>include</key> <string>#array-creation-expression</string> </dict> <dict> <key>include</key> <string>#anonymous-object-creation-expression</string> </dict> <dict> <key>include</key> <string>#invocation-expression</string> </dict> <dict> <key>include</key> <string>#member-access-expression</string> </dict> <dict> <key>include</key> <string>#element-access-expression</string> </dict> <dict> <key>include</key> <string>#cast-expression</string> </dict> <dict> <key>include</key> <string>#literal</string> </dict> <dict> <key>include</key> <string>#parenthesized-expression</string> </dict> <dict> <key>include</key> <string>#tuple-deconstruction-assignment</string> </dict> <dict> <key>include</key> <string>#initializer-expression</string> </dict> <dict> <key>include</key> <string>#identifier</string> </dict> </array> </dict> <key>extern-alias-directive</key> <dict> <key>begin</key> <string>\b(extern)\s+(alias)\b</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>keyword.other.directive.extern.cs</string> </dict> <key>2</key> <dict> <key>name</key> <string>keyword.other.directive.alias.cs</string> </dict> </dict> <key>end</key> <string>(?=;)</string> <key>patterns</key> <array> <dict> <key>match</key> <string>\@?[_[:alpha:]][_[:alnum:]]*</string> <key>name</key> <string>variable.other.alias.cs</string> </dict> </array> </dict> <key>using-directive</key> <dict> <key>patterns</key> <array> <dict> <key>begin</key> <string>\b(?:(global)\s+)?(using)\s+(static)\b\s*(?:(unsafe)\b\s*)?</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>keyword.other.directive.global.cs</string> </dict> <key>2</key> <dict> <key>name</key> <string>keyword.other.directive.using.cs</string> </dict> <key>3</key> <dict> <key>name</key> <string>keyword.other.directive.static.cs</string> </dict> <key>4</key> <dict> <key>name</key> <string>storage.modifier.unsafe.cs</string> </dict> </dict> <key>end</key> <string>(?=;)</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#type</string> </dict> </array> </dict> <dict> <key>begin</key> <string>\b(?:(global)\s+)?(using)\b\s*(?:(unsafe)\b\s*)?(@?[_[:alpha:]][_[:alnum:]]*)\s*(=)</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>keyword.other.directive.global.cs</string> </dict> <key>2</key> <dict> <key>name</key> <string>keyword.other.directive.using.cs</string> </dict> <key>3</key> <dict> <key>name</key> <string>storage.modifier.unsafe.cs</string> </dict> <key>4</key> <dict> <key>name</key> <string>entity.name.type.alias.cs</string> </dict> <key>5</key> <dict> <key>name</key> <string>keyword.operator.assignment.cs</string> </dict> </dict> <key>end</key> <string>(?=;)</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#comment</string> </dict> <dict> <key>include</key> <string>#type</string> </dict> </array> </dict> <dict> <key>begin</key> <string>\b(?:(global)\s+)?(using)\b\s*+(?!\(|var\b)</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>keyword.other.directive.global.cs</string> </dict> <key>2</key> <dict> <key>name</key> <string>keyword.other.directive.using.cs</string> </dict> </dict> <key>end</key> <string>(?=;)</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#comment</string> </dict> <dict> <key>name</key> <string>entity.name.type.namespace.cs</string> <key>match</key> <string>\@?[_[:alpha:]][_[:alnum:]]*</string> </dict> <dict> <key>include</key> <string>#punctuation-accessor</string> </dict> <dict> <key>include</key> <string>#operator-assignment</string> </dict> </array> </dict> </array> </dict> <key>attribute-section</key> <dict> <key>begin</key> <string>(\[)(assembly|module|field|event|method|param|property|return|type)?(\:)?</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>punctuation.squarebracket.open.cs</string> </dict> <key>2</key> <dict> <key>name</key> <string>keyword.other.attribute-specifier.cs</string> </dict> <key>3</key> <dict> <key>name</key> <string>punctuation.separator.colon.cs</string> </dict> </dict> <key>end</key> <string>(\])</string> <key>endCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>punctuation.squarebracket.close.cs</string> </dict> </dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#comment</string> </dict> <dict> <key>include</key> <string>#attribute</string> </dict> <dict> <key>include</key> <string>#punctuation-comma</string> </dict> </array> </dict> <key>attribute</key> <dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#type-name</string> </dict> <dict> <key>include</key> <string>#type-arguments</string> </dict> <dict> <key>include</key> <string>#attribute-arguments</string> </dict> </array> </dict> <key>attribute-arguments</key> <dict> <key>begin</key> <string>(\()</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>punctuation.parenthesis.open.cs</string> </dict> </dict> <key>end</key> <string>(\))</string> <key>endCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>punctuation.parenthesis.close.cs</string> </dict> </dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#attribute-named-argument</string> </dict> <dict> <key>include</key> <string>#expression</string> </dict> <dict> <key>include</key> <string>#punctuation-comma</string> </dict> </array> </dict> <key>attribute-named-argument</key> <dict> <key>begin</key> <string>(@?[_[:alpha:]][_[:alnum:]]*)\s*(?==)</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>entity.name.variable.property.cs</string> </dict> </dict> <key>end</key> <string>(?=(,|\)))</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#operator-assignment</string> </dict> <dict> <key>include</key> <string>#expression</string> </dict> </array> </dict> <key>namespace-declaration</key> <dict> <key>begin</key> <string>\b(namespace)\s+</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>storage.type.namespace.cs</string> </dict> </dict> <key>end</key> <string>(?<=\})|(?=;)</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#comment</string> </dict> <dict> <key>name</key> <string>entity.name.type.namespace.cs</string> <key>match</key> <string>@?[_[:alpha:]][_[:alnum:]]*</string> </dict> <dict> <key>include</key> <string>#punctuation-accessor</string> </dict> <dict> <key>begin</key> <string>\{</string> <key>beginCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.curlybrace.open.cs</string> </dict> </dict> <key>end</key> <string>\}</string> <key>endCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.curlybrace.close.cs</string> </dict> </dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#declarations</string> </dict> <dict> <key>include</key> <string>#using-directive</string> </dict> <dict> <key>include</key> <string>#punctuation-semicolon</string> </dict> </array> </dict> </array> </dict> <key>storage-modifier</key> <dict> <key>name</key> <string>storage.modifier.$1.cs</string> <key>match</key> <string>(?<!\.)\b(new|public|protected|internal|private|abstract|virtual|override|sealed|static|partial|readonly|volatile|const|extern|async|unsafe|ref|required|file)\b</string> </dict> <key>class-declaration</key> <dict> <key>begin</key> <string>(?=(\brecord\b\s+)?\bclass\b)</string> <key>end</key> <string>(?<=\})|(?=;)</string> <key>patterns</key> <array> <dict> <key>begin</key> <string>(?x) (\b(record)\b\s+)? \b(class)\b\s+ (@?[_[:alpha:]][_[:alnum:]]*)\s*</string> <key>beginCaptures</key> <dict> <key>2</key> <dict> <key>name</key> <string>storage.type.record.cs</string> </dict> <key>3</key> <dict> <key>name</key> <string>storage.type.class.cs</string> </dict> <key>4</key> <dict> <key>name</key> <string>entity.name.type.class.cs</string> </dict> </dict> <key>end</key> <string>(?=\{)|(?=;)</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#comment</string> </dict> <dict> <key>include</key> <string>#type-parameter-list</string> </dict> <dict> <key>include</key> <string>#parenthesized-parameter-list</string> </dict> <dict> <key>include</key> <string>#base-types</string> </dict> <dict> <key>include</key> <string>#generic-constraints</string> </dict> </array> </dict> <dict> <key>begin</key> <string>\{</string> <key>beginCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.curlybrace.open.cs</string> </dict> </dict> <key>end</key> <string>\}</string> <key>endCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.curlybrace.close.cs</string> </dict> </dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#class-or-struct-members</string> </dict> </array> </dict> <dict> <key>include</key> <string>#preprocessor</string> </dict> <dict> <key>include</key> <string>#comment</string> </dict> </array> </dict> <key>delegate-declaration</key> <dict> <key>begin</key> <string>(?x) (?:\b(delegate)\b)\s+ (?<type_name> (?: (?:ref\s+(?:readonly\s+)?)? # ref return (?: (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\s*\:\:\s*)? # alias-qualification (?<name_and_type_args> # identifier + type arguments (if any) \g<identifier>\s* (?<type_args>\s*<(?:[^<>]|\g<type_args>)+>\s*)? ) (?:\s*\.\s*\g<name_and_type_args>)* | # Are there any more names being dotted into? (?<tuple>\s*\((?:[^\(\)]|\g<tuple>)+\)) ) (?:\s*\?\s*)? # nullable suffix? (?:\s* # array suffix? \[ (?:\s*,\s*)* # commata for multi-dimensional arrays \] \s* (?:\?)? # arrays can be nullable reference types \s* )* ) )\s+ (\g<identifier>)\s* (<([^<>]+)>)?\s* (?=\()</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>storage.type.delegate.cs</string> </dict> <key>2</key> <dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#type</string> </dict> </array> </dict> <key>7</key> <dict> <key>name</key> <string>entity.name.type.delegate.cs</string> </dict> <key>8</key> <dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#type-parameter-list</string> </dict> </array> </dict> </dict> <key>end</key> <string>(?=;)</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#comment</string> </dict> <dict> <key>include</key> <string>#parenthesized-parameter-list</string> </dict> <dict> <key>include</key> <string>#generic-constraints</string> </dict> </array> </dict> <key>enum-declaration</key> <dict> <key>begin</key> <string>(?=\benum\b)</string> <key>end</key> <string>(?<=\})|(?=;)</string> <key>patterns</key> <array> <dict> <key>begin</key> <string>(?=enum)</string> <key>end</key> <string>(?=\{)|(?=;)</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#comment</string> </dict> <dict> <key>match</key> <string>(enum)\s+(@?[_[:alpha:]][_[:alnum:]]*)</string> <key>captures</key> <dict> <key>1</key> <dict> <key>name</key> <string>storage.type.enum.cs</string> </dict> <key>2</key> <dict> <key>name</key> <string>entity.name.type.enum.cs</string> </dict> </dict> </dict> <dict> <key>begin</key> <string>:</string> <key>beginCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.separator.colon.cs</string> </dict> </dict> <key>end</key> <string>(?=\{)</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#type</string> </dict> </array> </dict> </array> </dict> <dict> <key>begin</key> <string>\{</string> <key>beginCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.curlybrace.open.cs</string> </dict> </dict> <key>end</key> <string>\}</string> <key>endCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.curlybrace.close.cs</string> </dict> </dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#preprocessor</string> </dict> <dict> <key>include</key> <string>#comment</string> </dict> <dict> <key>include</key> <string>#attribute-section</string> </dict> <dict> <key>include</key> <string>#punctuation-comma</string> </dict> <dict> <key>begin</key> <string>@?[_[:alpha:]][_[:alnum:]]*</string> <key>beginCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>entity.name.variable.enum-member.cs</string> </dict> </dict> <key>end</key> <string>(?=(,|\}))</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#comment</string> </dict> <dict> <key>include</key> <string>#variable-initializer</string> </dict> </array> </dict> </array> </dict> <dict> <key>include</key> <string>#preprocessor</string> </dict> <dict> <key>include</key> <string>#comment</string> </dict> </array> </dict> <key>interface-declaration</key> <dict> <key>begin</key> <string>(?=\binterface\b)</string> <key>end</key> <string>(?<=\})|(?=;)</string> <key>patterns</key> <array> <dict> <key>begin</key> <string>(?x) (interface)\b\s+ (@?[_[:alpha:]][_[:alnum:]]*)</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>storage.type.interface.cs</string> </dict> <key>2</key> <dict> <key>name</key> <string>entity.name.type.interface.cs</string> </dict> </dict> <key>end</key> <string>(?=\{)|(?=;)</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#comment</string> </dict> <dict> <key>include</key> <string>#type-parameter-list</string> </dict> <dict> <key>include</key> <string>#base-types</string> </dict> <dict> <key>include</key> <string>#generic-constraints</string> </dict> </array> </dict> <dict> <key>begin</key> <string>\{</string> <key>beginCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.curlybrace.open.cs</string> </dict> </dict> <key>end</key> <string>\}</string> <key>endCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.curlybrace.close.cs</string> </dict> </dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#interface-members</string> </dict> </array> </dict> <dict> <key>include</key> <string>#preprocessor</string> </dict> <dict> <key>include</key> <string>#comment</string> </dict> </array> </dict> <key>record-declaration</key> <dict> <key>begin</key> <string>(?=\brecord\b)</string> <key>end</key> <string>(?<=\})|(?=;)</string> <key>patterns</key> <array> <dict> <key>begin</key> <string>(?x) (record)\b\s+ (@?[_[:alpha:]][_[:alnum:]]*)</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>storage.type.record.cs</string> </dict> <key>2</key> <dict> <key>name</key> <string>entity.name.type.class.cs</string> </dict> </dict> <key>end</key> <string>(?=\{)|(?=;)</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#comment</string> </dict> <dict> <key>include</key> <string>#type-parameter-list</string> </dict> <dict> <key>include</key> <string>#parenthesized-parameter-list</string> </dict> <dict> <key>include</key> <string>#base-types</string> </dict> <dict> <key>include</key> <string>#generic-constraints</string> </dict> </array> </dict> <dict> <key>begin</key> <string>\{</string> <key>beginCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.curlybrace.open.cs</string> </dict> </dict> <key>end</key> <string>\}</string> <key>endCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.curlybrace.close.cs</string> </dict> </dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#class-or-struct-members</string> </dict> </array> </dict> <dict> <key>include</key> <string>#preprocessor</string> </dict> <dict> <key>include</key> <string>#comment</string> </dict> </array> </dict> <key>struct-declaration</key> <dict> <key>begin</key> <string>(?=(\brecord\b\s+)?\bstruct\b)</string> <key>end</key> <string>(?<=\})|(?=;)</string> <key>patterns</key> <array> <dict> <key>begin</key> <string>(?x) (\b(record)\b\s+)? (struct)\b\s+ (@?[_[:alpha:]][_[:alnum:]]*)</string> <key>beginCaptures</key> <dict> <key>2</key> <dict> <key>name</key> <string>storage.type.record.cs</string> </dict> <key>3</key> <dict> <key>name</key> <string>storage.type.struct.cs</string> </dict> <key>4</key> <dict> <key>name</key> <string>entity.name.type.struct.cs</string> </dict> </dict> <key>end</key> <string>(?=\{)|(?=;)</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#comment</string> </dict> <dict> <key>include</key> <string>#type-parameter-list</string> </dict> <dict> <key>include</key> <string>#parenthesized-parameter-list</string> </dict> <dict> <key>include</key> <string>#base-types</string> </dict> <dict> <key>include</key> <string>#generic-constraints</string> </dict> </array> </dict> <dict> <key>begin</key> <string>\{</string> <key>beginCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.curlybrace.open.cs</string> </dict> </dict> <key>end</key> <string>\}</string> <key>endCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.curlybrace.close.cs</string> </dict> </dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#class-or-struct-members</string> </dict> </array> </dict> <dict> <key>include</key> <string>#preprocessor</string> </dict> <dict> <key>include</key> <string>#comment</string> </dict> </array> </dict> <key>type-parameter-list</key> <dict> <key>begin</key> <string>\<</string> <key>beginCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.definition.typeparameters.begin.cs</string> </dict> </dict> <key>end</key> <string>\></string> <key>endCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.definition.typeparameters.end.cs</string> </dict> </dict> <key>patterns</key> <array> <dict> <key>match</key> <string>\b(in|out)\b</string> <key>name</key> <string>storage.modifier.$1.cs</string> </dict> <dict> <key>match</key> <string>(@?[_[:alpha:]][_[:alnum:]]*)\b</string> <key>name</key> <string>entity.name.type.type-parameter.cs</string> </dict> <dict> <key>include</key> <string>#comment</string> </dict> <dict> <key>include</key> <string>#punctuation-comma</string> </dict> <dict> <key>include</key> <string>#attribute-section</string> </dict> </array> </dict> <key>base-types</key> <dict> <key>begin</key> <string>:</string> <key>beginCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.separator.colon.cs</string> </dict> </dict> <key>end</key> <string>(?=\{|where|;)</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#type</string> </dict> <dict> <key>include</key> <string>#punctuation-comma</string> </dict> <dict> <key>include</key> <string>#preprocessor</string> </dict> </array> </dict> <key>generic-constraints</key> <dict> <key>begin</key> <string>(where)\s+(@?[_[:alpha:]][_[:alnum:]]*)\s*(:)</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>storage.modifier.where.cs</string> </dict> <key>2</key> <dict> <key>name</key> <string>entity.name.type.type-parameter.cs</string> </dict> <key>3</key> <dict> <key>name</key> <string>punctuation.separator.colon.cs</string> </dict> </dict> <key>end</key> <string>(?=\{|where|;|=>)</string> <key>patterns</key> <array> <dict> <key>name</key> <string>storage.type.class.cs</string> <key>match</key> <string>\bclass\b</string> </dict> <dict> <key>name</key> <string>storage.type.struct.cs</string> <key>match</key> <string>\bstruct\b</string> </dict> <dict> <key>name</key> <string>keyword.other.constraint.default.cs</string> <key>match</key> <string>\bdefault\b</string> </dict> <dict> <key>name</key> <string>keyword.other.constraint.notnull.cs</string> <key>match</key> <string>\bnotnull\b</string> </dict> <dict> <key>name</key> <string>keyword.other.constraint.unmanaged.cs</string> <key>match</key> <string>\bunmanaged\b</string> </dict> <dict> <key>match</key> <string>(new)\s*(\()\s*(\))</string> <key>captures</key> <dict> <key>1</key> <dict> <key>name</key> <string>keyword.operator.expression.new.cs</string> </dict> <key>2</key> <dict> <key>name</key> <string>punctuation.parenthesis.open.cs</string> </dict> <key>3</key> <dict> <key>name</key> <string>punctuation.parenthesis.close.cs</string> </dict> </dict> </dict> <dict> <key>include</key> <string>#type</string> </dict> <dict> <key>include</key> <string>#punctuation-comma</string> </dict> <dict> <key>include</key> <string>#generic-constraints</string> </dict> </array> </dict> <key>field-declaration</key> <dict> <key>begin</key> <string>(?x) (?<type_name> (?: (?: (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\s*\:\:\s*)? # alias-qualification (?<name_and_type_args> # identifier + type arguments (if any) \g<identifier>\s* (?<type_args>\s*<(?:[^<>]|\g<type_args>)+>\s*)? ) (?:\s*\.\s*\g<name_and_type_args>)* | # Are there any more names being dotted into? (?<tuple>\s*\((?:[^\(\)]|\g<tuple>)+\)) ) (?:\s*\?\s*)? # nullable suffix? (?:\s* # array suffix? \[ (?:\s*,\s*)* # commata for multi-dimensional arrays \] \s* (?:\?)? # arrays can be nullable reference types \s* )* ) )\s+ (\g<identifier>)\s* # first field name (?!=>|==)(?=,|;|=|$)</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#type</string> </dict> </array> </dict> <key>6</key> <dict> <key>name</key> <string>entity.name.variable.field.cs</string> </dict> </dict> <key>end</key> <string>(?=;)</string> <key>patterns</key> <array> <dict> <key>name</key> <string>entity.name.variable.field.cs</string> <key>match</key> <string>@?[_[:alpha:]][_[:alnum:]]*</string> </dict> <dict> <key>include</key> <string>#punctuation-comma</string> </dict> <dict> <key>include</key> <string>#comment</string> </dict> <dict> <key>include</key> <string>#variable-initializer</string> </dict> <dict> <key>include</key> <string>#class-or-struct-members</string> </dict> </array> </dict> <key>property-declaration</key> <dict> <key>begin</key> <string>(?x) # The negative lookahead below ensures that we don't match nested types # or other declarations as properties. (?![[:word:][:space:]]*\b(?:class|interface|struct|enum|event)\b) (?<return_type> (?<type_name> (?: (?:ref\s+(?:readonly\s+)?)? # ref return (?: (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\s*\:\:\s*)? # alias-qualification (?<name_and_type_args> # identifier + type arguments (if any) \g<identifier>\s* (?<type_args>\s*<(?:[^<>]|\g<type_args>)+>\s*)? ) (?:\s*\.\s*\g<name_and_type_args>)* | # Are there any more names being dotted into? (?<tuple>\s*\((?:[^\(\)]|\g<tuple>)+\)) ) (?:\s*\?\s*)? # nullable suffix? (?:\s* # array suffix? \[ (?:\s*,\s*)* # commata for multi-dimensional arrays \] \s* (?:\?)? # arrays can be nullable reference types \s* )* ) )\s+ ) (?<interface_name>\g<type_name>\s*\.\s*)? (?<property_name>\g<identifier>)\s* (?=\{|=>|//|/\*|$)</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#type</string> </dict> </array> </dict> <key>7</key> <dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#type</string> </dict> <dict> <key>include</key> <string>#punctuation-accessor</string> </dict> </array> </dict> <key>8</key> <dict> <key>name</key> <string>entity.name.variable.property.cs</string> </dict> </dict> <key>end</key> <string>(?<=\})|(?=;)</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#comment</string> </dict> <dict> <key>include</key> <string>#property-accessors</string> </dict> <dict> <key>include</key> <string>#accessor-getter-expression</string> </dict> <dict> <key>include</key> <string>#variable-initializer</string> </dict> <dict> <key>include</key> <string>#class-or-struct-members</string> </dict> </array> </dict> <key>indexer-declaration</key> <dict> <key>begin</key> <string>(?x) (?<return_type> (?<type_name> (?: (?:ref\s+(?:readonly\s+)?)? # ref return (?: (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\s*\:\:\s*)? # alias-qualification (?<name_and_type_args> # identifier + type arguments (if any) \g<identifier>\s* (?<type_args>\s*<(?:[^<>]|\g<type_args>)+>\s*)? ) (?:\s*\.\s*\g<name_and_type_args>)* | # Are there any more names being dotted into? (?<tuple>\s*\((?:[^\(\)]|\g<tuple>)+\)) ) (?:\s*\?\s*)? # nullable suffix? (?:\s* # array suffix? \[ (?:\s*,\s*)* # commata for multi-dimensional arrays \] \s* (?:\?)? # arrays can be nullable reference types \s* )* ) )\s+ ) (?<interface_name>\g<type_name>\s*\.\s*)? (?<indexer_name>this)\s* (?=\[)</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#type</string> </dict> </array> </dict> <key>7</key> <dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#type</string> </dict> <dict> <key>include</key> <string>#punctuation-accessor</string> </dict> </array> </dict> <key>8</key> <dict> <key>name</key> <string>variable.language.this.cs</string> </dict> </dict> <key>end</key> <string>(?<=\})|(?=;)</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#comment</string> </dict> <dict> <key>include</key> <string>#bracketed-parameter-list</string> </dict> <dict> <key>include</key> <string>#property-accessors</string> </dict> <dict> <key>include</key> <string>#accessor-getter-expression</string> </dict> <dict> <key>include</key> <string>#variable-initializer</string> </dict> </array> </dict> <key>event-declaration</key> <dict> <key>begin</key> <string>(?x) \b(event)\b\s* (?<return_type> (?<type_name> (?: (?: (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\s*\:\:\s*)? # alias-qualification (?<name_and_type_args> # identifier + type arguments (if any) \g<identifier>\s* (?<type_args>\s*<(?:[^<>]|\g<type_args>)+>\s*)? ) (?:\s*\.\s*\g<name_and_type_args>)* | # Are there any more names being dotted into? (?<tuple>\s*\((?:[^\(\)]|\g<tuple>)+\)) ) (?:\s*\?\s*)? # nullable suffix? (?:\s* # array suffix? \[ (?:\s*,\s*)* # commata for multi-dimensional arrays \] \s* (?:\?)? # arrays can be nullable reference types \s* )* ) )\s+ ) (?<interface_name>\g<type_name>\s*\.\s*)? (\g<identifier>)\s* # first event name (?=\{|;|,|=|//|/\*|$)</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>storage.type.event.cs</string> </dict> <key>2</key> <dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#type</string> </dict> </array> </dict> <key>8</key> <dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#type</string> </dict> <dict> <key>include</key> <string>#punctuation-accessor</string> </dict> </array> </dict> <key>9</key> <dict> <key>name</key> <string>entity.name.variable.event.cs</string> </dict> </dict> <key>end</key> <string>(?<=\})|(?=;)</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#comment</string> </dict> <dict> <key>include</key> <string>#event-accessors</string> </dict> <dict> <key>name</key> <string>entity.name.variable.event.cs</string> <key>match</key> <string>@?[_[:alpha:]][_[:alnum:]]*</string> </dict> <dict> <key>include</key> <string>#punctuation-comma</string> </dict> <dict> <key>begin</key> <string>=</string> <key>beginCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>keyword.operator.assignment.cs</string> </dict> </dict> <key>end</key> <string>(?<=,)|(?=;)</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#expression</string> </dict> <dict> <key>include</key> <string>#punctuation-comma</string> </dict> </array> </dict> </array> </dict> <key>property-accessors</key> <dict> <key>begin</key> <string>\{</string> <key>beginCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.curlybrace.open.cs</string> </dict> </dict> <key>end</key> <string>\}</string> <key>endCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.curlybrace.close.cs</string> </dict> </dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#comment</string> </dict> <dict> <key>include</key> <string>#attribute-section</string> </dict> <dict> <key>name</key> <string>storage.modifier.$1.cs</string> <key>match</key> <string>\b(private|protected|internal)\b</string> </dict> <dict> <key>begin</key> <string>\b(get)\b\s*(?=\{|;|=>|//|/\*|$)</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>storage.type.accessor.$1.cs</string> </dict> </dict> <key>end</key> <string>(?<=\}|;)|(?=\})</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#accessor-getter</string> </dict> </array> </dict> <dict> <key>begin</key> <string>\b(set|init)\b\s*(?=\{|;|=>|//|/\*|$)</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>storage.type.accessor.$1.cs</string> </dict> </dict> <key>end</key> <string>(?<=\}|;)|(?=\})</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#accessor-setter</string> </dict> </array> </dict> </array> </dict> <key>event-accessors</key> <dict> <key>begin</key> <string>\{</string> <key>beginCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.curlybrace.open.cs</string> </dict> </dict> <key>end</key> <string>\}</string> <key>endCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.curlybrace.close.cs</string> </dict> </dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#comment</string> </dict> <dict> <key>include</key> <string>#attribute-section</string> </dict> <dict> <key>begin</key> <string>\b(add|remove)\b\s*(?=\{|;|=>|//|/\*|$)</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>storage.type.accessor.$1.cs</string> </dict> </dict> <key>end</key> <string>(?<=\}|;)|(?=\})</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#accessor-setter</string> </dict> </array> </dict> </array> </dict> <key>accessor-getter</key> <dict> <key>patterns</key> <array> <dict> <key>begin</key> <string>\{</string> <key>beginCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.curlybrace.open.cs</string> </dict> </dict> <key>end</key> <string>\}</string> <key>endCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.curlybrace.close.cs</string> </dict> </dict> <key>contentName</key> <string>meta.accessor.getter.cs</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#statement</string> </dict> </array> </dict> <dict> <key>include</key> <string>#accessor-getter-expression</string> </dict> <dict> <key>include</key> <string>#punctuation-semicolon</string> </dict> </array> </dict> <key>accessor-getter-expression</key> <dict> <key>begin</key> <string>=></string> <key>beginCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>keyword.operator.arrow.cs</string> </dict> </dict> <key>end</key> <string>(?=;|\})</string> <key>contentName</key> <string>meta.accessor.getter.cs</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#ref-modifier</string> </dict> <dict> <key>include</key> <string>#expression</string> </dict> </array> </dict> <key>accessor-setter</key> <dict> <key>patterns</key> <array> <dict> <key>begin</key> <string>\{</string> <key>beginCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.curlybrace.open.cs</string> </dict> </dict> <key>end</key> <string>\}</string> <key>endCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.curlybrace.close.cs</string> </dict> </dict> <key>contentName</key> <string>meta.accessor.setter.cs</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#statement</string> </dict> </array> </dict> <dict> <key>begin</key> <string>=></string> <key>beginCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>keyword.operator.arrow.cs</string> </dict> </dict> <key>end</key> <string>(?=;|\})</string> <key>contentName</key> <string>meta.accessor.setter.cs</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#ref-modifier</string> </dict> <dict> <key>include</key> <string>#expression</string> </dict> </array> </dict> <dict> <key>include</key> <string>#punctuation-semicolon</string> </dict> </array> </dict> <key>method-declaration</key> <dict> <key>begin</key> <string>(?x) (?<return_type> (?<type_name> (?: (?:ref\s+(?:readonly\s+)?)? # ref return (?: (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\s*\:\:\s*)? # alias-qualification (?<name_and_type_args> # identifier + type arguments (if any) \g<identifier>\s* (?<type_args>\s*<(?:[^<>]|\g<type_args>)+>\s*)? ) (?:\s*\.\s*\g<name_and_type_args>)* | # Are there any more names being dotted into? (?<tuple>\s*\((?:[^\(\)]|\g<tuple>)+\)) ) (?:\s*\?\s*)? # nullable suffix? (?:\s* # array suffix? \[ (?:\s*,\s*)* # commata for multi-dimensional arrays \] \s* (?:\?)? # arrays can be nullable reference types \s* )* ) )\s+ ) (?<interface_name>\g<type_name>\s*\.\s*)? (\g<identifier>)\s* (<([^<>]+)>)?\s* (?=\()</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#type</string> </dict> </array> </dict> <key>7</key> <dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#type</string> </dict> <dict> <key>include</key> <string>#punctuation-accessor</string> </dict> </array> </dict> <key>8</key> <dict> <key>name</key> <string>entity.name.function.cs</string> </dict> <key>9</key> <dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#type-parameter-list</string> </dict> </array> </dict> </dict> <key>end</key> <string>(?<=\})|(?=;)</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#comment</string> </dict> <dict> <key>include</key> <string>#parenthesized-parameter-list</string> </dict> <dict> <key>include</key> <string>#generic-constraints</string> </dict> <dict> <key>include</key> <string>#expression-body</string> </dict> <dict> <key>include</key> <string>#block</string> </dict> </array> </dict> <key>constructor-declaration</key> <dict> <key>begin</key> <string>(?=@?[_[:alpha:]][_[:alnum:]]*\s*\()</string> <key>end</key> <string>(?<=\})|(?=;)</string> <key>patterns</key> <array> <dict> <key>match</key> <string>(@?[_[:alpha:]][_[:alnum:]]*)\b</string> <key>captures</key> <dict> <key>1</key> <dict> <key>name</key> <string>entity.name.function.cs</string> </dict> </dict> </dict> <dict> <key>begin</key> <string>(:)</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>punctuation.separator.colon.cs</string> </dict> </dict> <key>end</key> <string>(?=\{|=>)</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#constructor-initializer</string> </dict> </array> </dict> <dict> <key>include</key> <string>#parenthesized-parameter-list</string> </dict> <dict> <key>include</key> <string>#preprocessor</string> </dict> <dict> <key>include</key> <string>#comment</string> </dict> <dict> <key>include</key> <string>#expression-body</string> </dict> <dict> <key>include</key> <string>#block</string> </dict> </array> </dict> <key>constructor-initializer</key> <dict> <key>begin</key> <string>\b(base|this)\b\s*(?=\()</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>variable.language.$1.cs</string> </dict> </dict> <key>end</key> <string>(?<=\))</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#argument-list</string> </dict> </array> </dict> <key>destructor-declaration</key> <dict> <key>begin</key> <string>(~)(@?[_[:alpha:]][_[:alnum:]]*)\s*(?=\()</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>punctuation.tilde.cs</string> </dict> <key>2</key> <dict> <key>name</key> <string>entity.name.function.cs</string> </dict> </dict> <key>end</key> <string>(?<=\})|(?=;)</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#comment</string> </dict> <dict> <key>include</key> <string>#parenthesized-parameter-list</string> </dict> <dict> <key>include</key> <string>#expression-body</string> </dict> <dict> <key>include</key> <string>#block</string> </dict> </array> </dict> <key>operator-declaration</key> <dict> <key>begin</key> <string>(?x) (?<type_name> (?: (?:ref\s+(?:readonly\s+)?)? # ref return (?: (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\s*\:\:\s*)? # alias-qualification (?<name_and_type_args> # identifier + type arguments (if any) \g<identifier>\s* (?<type_args>\s*<(?:[^<>]|\g<type_args>)+>\s*)? ) (?:\s*\.\s*\g<name_and_type_args>)* | # Are there any more names being dotted into? (?<tuple>\s*\((?:[^\(\)]|\g<tuple>)+\)) ) (?:\s*\?\s*)? # nullable suffix? (?:\s* # array suffix? \[ (?:\s*,\s*)* # commata for multi-dimensional arrays \] \s* (?:\?)? # arrays can be nullable reference types \s* )* ) )\s* \b(?<operator_keyword>operator)\b\s* (?<operator>[+\-*/%&|\^!=~<>]+|true|false)\s* (?=\()</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#type</string> </dict> </array> </dict> <key>6</key> <dict> <key>name</key> <string>storage.type.operator.cs</string> </dict> <key>7</key> <dict> <key>name</key> <string>entity.name.function.cs</string> </dict> </dict> <key>end</key> <string>(?<=\})|(?=;)</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#comment</string> </dict> <dict> <key>include</key> <string>#parenthesized-parameter-list</string> </dict> <dict> <key>include</key> <string>#expression-body</string> </dict> <dict> <key>include</key> <string>#block</string> </dict> </array> </dict> <key>conversion-operator-declaration</key> <dict> <key>begin</key> <string>(?x) (?<explicit_or_implicit_keyword>(?:\b(?:explicit|implicit)))\s* (?<operator_keyword>(?:\b(?:operator)))\s* (?<type_name> (?: (?:ref\s+(?:readonly\s+)?)? # ref return (?: (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\s*\:\:\s*)? # alias-qualification (?<name_and_type_args> # identifier + type arguments (if any) \g<identifier>\s* (?<type_args>\s*<(?:[^<>]|\g<type_args>)+>\s*)? ) (?:\s*\.\s*\g<name_and_type_args>)* | # Are there any more names being dotted into? (?<tuple>\s*\((?:[^\(\)]|\g<tuple>)+\)) ) (?:\s*\?\s*)? # nullable suffix? (?:\s* # array suffix? \[ (?:\s*,\s*)* # commata for multi-dimensional arrays \] \s* (?:\?)? # arrays can be nullable reference types \s* )* ) )\s* (?=\()</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>patterns</key> <array> <dict> <key>match</key> <string>\b(explicit)\b</string> <key>captures</key> <dict> <key>1</key> <dict> <key>name</key> <string>storage.modifier.explicit.cs</string> </dict> </dict> </dict> <dict> <key>match</key> <string>\b(implicit)\b</string> <key>captures</key> <dict> <key>1</key> <dict> <key>name</key> <string>storage.modifier.implicit.cs</string> </dict> </dict> </dict> </array> </dict> <key>2</key> <dict> <key>name</key> <string>storage.type.operator.cs</string> </dict> <key>3</key> <dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#type</string> </dict> </array> </dict> </dict> <key>end</key> <string>(?<=\})|(?=;)</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#comment</string> </dict> <dict> <key>include</key> <string>#parenthesized-parameter-list</string> </dict> <dict> <key>include</key> <string>#expression-body</string> </dict> <dict> <key>include</key> <string>#block</string> </dict> </array> </dict> <key>block</key> <dict> <key>begin</key> <string>\{</string> <key>beginCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.curlybrace.open.cs</string> </dict> </dict> <key>end</key> <string>\}</string> <key>endCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.curlybrace.close.cs</string> </dict> </dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#statement</string> </dict> </array> </dict> <key>variable-initializer</key> <dict> <key>begin</key> <string>(?<!=|!)(=)(?!=|>)</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>keyword.operator.assignment.cs</string> </dict> </dict> <key>end</key> <string>(?=[,\)\];}])</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#ref-modifier</string> </dict> <dict> <key>include</key> <string>#expression</string> </dict> </array> </dict> <key>expression-body</key> <dict> <key>begin</key> <string>=></string> <key>beginCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>keyword.operator.arrow.cs</string> </dict> </dict> <key>end</key> <string>(?=[,\);}])</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#ref-modifier</string> </dict> <dict> <key>include</key> <string>#expression</string> </dict> </array> </dict> <key>goto-statement</key> <dict> <key>begin</key> <string>(?<!\.)\b(goto)\b</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>keyword.control.flow.goto.cs</string> </dict> </dict> <key>end</key> <string>(?=[;}])</string> <key>patterns</key> <array> <dict> <key>begin</key> <string>\b(case)\b</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>keyword.control.conditional.case.cs</string> </dict> </dict> <key>end</key> <string>(?=[;}])</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#expression</string> </dict> </array> </dict> <dict> <key>match</key> <string>\b(default)\b</string> <key>captures</key> <dict> <key>1</key> <dict> <key>name</key> <string>keyword.control.conditional.default.cs</string> </dict> </dict> </dict> <dict> <key>name</key> <string>entity.name.label.cs</string> <key>match</key> <string>@?[_[:alpha:]][_[:alnum:]]*</string> </dict> </array> </dict> <key>return-statement</key> <dict> <key>begin</key> <string>(?<!\.)\b(return)\b</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>keyword.control.flow.return.cs</string> </dict> </dict> <key>end</key> <string>(?=[;}])</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#ref-modifier</string> </dict> <dict> <key>include</key> <string>#expression</string> </dict> </array> </dict> <key>break-or-continue-statement</key> <dict> <key>match</key> <string>(?<!\.)\b(break|continue)\b</string> <key>name</key> <string>keyword.control.flow.$1.cs</string> </dict> <key>throw-statement</key> <dict> <key>begin</key> <string>(?<!\.)\b(throw)\b</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>keyword.control.flow.throw.cs</string> </dict> </dict> <key>end</key> <string>(?=[;}])</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#expression</string> </dict> </array> </dict> <key>yield-statement</key> <dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#yield-return-statement</string> </dict> <dict> <key>include</key> <string>#yield-break-statement</string> </dict> </array> </dict> <key>yield-return-statement</key> <dict> <key>begin</key> <string>(?<!\.)\b(yield)\b\s*\b(return)\b</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>keyword.control.flow.yield.cs</string> </dict> <key>2</key> <dict> <key>name</key> <string>keyword.control.flow.return.cs</string> </dict> </dict> <key>end</key> <string>(?=[;}])</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#expression</string> </dict> </array> </dict> <key>yield-break-statement</key> <dict> <key>match</key> <string>(?<!\.)\b(yield)\b\s*\b(break)\b</string> <key>captures</key> <dict> <key>1</key> <dict> <key>name</key> <string>keyword.control.flow.yield.cs</string> </dict> <key>2</key> <dict> <key>name</key> <string>keyword.control.flow.break.cs</string> </dict> </dict> </dict> <key>await-statement</key> <dict> <key>begin</key> <string>(?<!\.\s*)\b(await)\b</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>keyword.operator.expression.await.cs</string> </dict> </dict> <key>end</key> <string>(?<=})|(?=;|})</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#foreach-statement</string> </dict> <dict> <key>include</key> <string>#using-statement</string> </dict> <dict> <key>include</key> <string>#expression</string> </dict> </array> </dict> <key>if-statement</key> <dict> <key>begin</key> <string>(?<!\.)\b(if)\b\s*(?=\()</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>keyword.control.conditional.if.cs</string> </dict> </dict> <key>end</key> <string>(?<=})|(?=;)</string> <key>patterns</key> <array> <dict> <key>begin</key> <string>\(</string> <key>beginCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.parenthesis.open.cs</string> </dict> </dict> <key>end</key> <string>\)</string> <key>endCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.parenthesis.close.cs</string> </dict> </dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#expression</string> </dict> </array> </dict> <dict> <key>include</key> <string>#statement</string> </dict> </array> </dict> <key>else-part</key> <dict> <key>begin</key> <string>(?<!\.)\b(else)\b</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>keyword.control.conditional.else.cs</string> </dict> </dict> <key>end</key> <string>(?<=})|(?=;)</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#statement</string> </dict> </array> </dict> <key>switch-statement-or-expression</key> <dict> <key>begin</key> <string>(?<!\.)\b(switch)\b</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>keyword.control.conditional.switch.cs</string> </dict> </dict> <key>end</key> <string>(?<=})|(?=})</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#intrusive</string> </dict> <dict> <key>begin</key> <string>(?=\()</string> <key>end</key> <string>(?<=\})|(?=\})</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#switch-statement</string> </dict> </array> </dict> <dict> <key>begin</key> <string>(?=\{)</string> <key>end</key> <string>(?<=\})|(?=\})</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#switch-expression</string> </dict> </array> </dict> </array> </dict> <key>switch-statement</key> <dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#intrusive</string> </dict> <dict> <key>begin</key> <string>\(</string> <key>beginCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.parenthesis.open.cs</string> </dict> </dict> <key>end</key> <string>\)</string> <key>endCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.parenthesis.close.cs</string> </dict> </dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#expression</string> </dict> </array> </dict> <dict> <key>begin</key> <string>\{</string> <key>beginCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.curlybrace.open.cs</string> </dict> </dict> <key>end</key> <string>\}</string> <key>endCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.curlybrace.close.cs</string> </dict> </dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#switch-label</string> </dict> <dict> <key>include</key> <string>#statement</string> </dict> </array> </dict> </array> </dict> <key>switch-label</key> <dict> <key>begin</key> <string>\b(case|default)\b</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>keyword.control.conditional.$1.cs</string> </dict> </dict> <key>end</key> <string>(:)|(?=})</string> <key>endCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>punctuation.separator.colon.cs</string> </dict> </dict> <key>patterns</key> <array> <dict> <key>begin</key> <string>\b(when)\b</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>keyword.control.conditional.when.cs</string> </dict> </dict> <key>end</key> <string>(?=:|})</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#case-guard</string> </dict> </array> </dict> <dict> <key>begin</key> <string>(?!\s)</string> <key>end</key> <string>(?=\bwhen\b|:|})</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#pattern</string> </dict> </array> </dict> </array> </dict> <key>switch-expression</key> <dict> <key>begin</key> <string>\{</string> <key>beginCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.curlybrace.open.cs</string> </dict> </dict> <key>end</key> <string>\}</string> <key>endCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.curlybrace.close.cs</string> </dict> </dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#punctuation-comma</string> </dict> <dict> <key>begin</key> <string>=></string> <key>beginCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>keyword.operator.arrow.cs</string> </dict> </dict> <key>end</key> <string>(?=,|})</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#expression</string> </dict> </array> </dict> <dict> <key>begin</key> <string>\b(when)\b</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>keyword.control.conditional.when.cs</string> </dict> </dict> <key>end</key> <string>(?==>|,|})</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#case-guard</string> </dict> </array> </dict> <dict> <key>begin</key> <string>(?!\s)</string> <key>end</key> <string>(?=\bwhen\b|=>|,|})</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#pattern</string> </dict> </array> </dict> </array> </dict> <key>case-guard</key> <dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#parenthesized-expression</string> </dict> <dict> <key>include</key> <string>#expression</string> </dict> </array> </dict> <key>is-expression</key> <dict> <key>begin</key> <string>(?<!\.)\b(is)\b</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>keyword.operator.expression.pattern.is.cs</string> </dict> </dict> <key>end</key> <string>(?=[)}\],;:?=&|^]|!=)</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#pattern</string> </dict> </array> </dict> <key>pattern</key> <dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#intrusive</string> </dict> <dict> <key>include</key> <string>#combinator-pattern</string> </dict> <dict> <key>include</key> <string>#discard-pattern</string> </dict> <dict> <key>include</key> <string>#constant-pattern</string> </dict> <dict> <key>include</key> <string>#relational-pattern</string> </dict> <dict> <key>include</key> <string>#var-pattern</string> </dict> <dict> <key>include</key> <string>#type-pattern</string> </dict> <dict> <key>include</key> <string>#positional-pattern</string> </dict> <dict> <key>include</key> <string>#property-pattern</string> </dict> <dict> <key>include</key> <string>#list-pattern</string> </dict> <dict> <key>include</key> <string>#slice-pattern</string> </dict> </array> </dict> <key>combinator-pattern</key> <dict> <key>match</key> <string>\b(and|or|not)\b</string> <key>name</key> <string>keyword.operator.expression.pattern.combinator.$1.cs</string> </dict> <key>discard-pattern</key> <dict> <key>match</key> <string>_(?![_[:alnum:]])</string> <key>name</key> <string>variable.language.discard.cs</string> </dict> <key>constant-pattern</key> <dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#boolean-literal</string> </dict> <dict> <key>include</key> <string>#null-literal</string> </dict> <dict> <key>include</key> <string>#numeric-literal</string> </dict> <dict> <key>include</key> <string>#char-literal</string> </dict> <dict> <key>include</key> <string>#string-literal</string> </dict> <dict> <key>include</key> <string>#raw-string-literal</string> </dict> <dict> <key>include</key> <string>#verbatim-string-literal</string> </dict> <dict> <key>include</key> <string>#type-operator-expression</string> </dict> <dict> <key>include</key> <string>#expression-operator-expression</string> </dict> <dict> <key>include</key> <string>#expression-operators</string> </dict> <dict> <key>include</key> <string>#casted-constant-pattern</string> </dict> </array> </dict> <key>casted-constant-pattern</key> <dict> <key>begin</key> <string>(?x) (\() ([\s.:@_[:alnum:]]+) (\)) (?=[\s+\-!~]*@?[_[:alnum:]('"]+)</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>punctuation.parenthesis.open.cs</string> </dict> <key>2</key> <dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#type-builtin</string> </dict> <dict> <key>include</key> <string>#type-name</string> </dict> </array> </dict> <key>3</key> <dict> <key>name</key> <string>punctuation.parenthesis.close.cs</string> </dict> </dict> <key>end</key> <string>(?=[)}\],;:?=&|^]|!=|\b(and|or|when)\b)</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#casted-constant-pattern</string> </dict> <dict> <key>begin</key> <string>\(</string> <key>beginCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.parenthesis.open.cs</string> </dict> </dict> <key>end</key> <string>\)</string> <key>endCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.parenthesis.close.cs</string> </dict> </dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#constant-pattern</string> </dict> </array> </dict> <dict> <key>include</key> <string>#constant-pattern</string> </dict> <dict> <key>match</key> <string>(@?[_[:alpha:]][_[:alnum:]]*)\s*(\:\:)</string> <key>captures</key> <dict> <key>1</key> <dict> <key>name</key> <string>entity.name.type.alias.cs</string> </dict> <key>2</key> <dict> <key>name</key> <string>punctuation.separator.coloncolon.cs</string> </dict> </dict> </dict> <dict> <key>match</key> <string>(@?[_[:alpha:]][_[:alnum:]]*)\s*(\.)</string> <key>captures</key> <dict> <key>1</key> <dict> <key>name</key> <string>entity.name.type.cs</string> </dict> <key>2</key> <dict> <key>name</key> <string>punctuation.accessor.cs</string> </dict> </dict> </dict> <dict> <key>match</key> <string>\@?[_[:alpha:]][_[:alnum:]]*</string> <key>name</key> <string>variable.other.constant.cs</string> </dict> </array> </dict> <key>relational-pattern</key> <dict> <key>begin</key> <string><=?|>=?</string> <key>beginCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>keyword.operator.relational.cs</string> </dict> </dict> <key>end</key> <string>(?=[)}\],;:?=&|^]|!=|\b(and|or|when)\b)</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#expression</string> </dict> </array> </dict> <key>var-pattern</key> <dict> <key>begin</key> <string>\b(var)\b</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>storage.type.var.cs</string> </dict> </dict> <key>end</key> <string>(?=[)}\],;:?=&|^]|!=|\b(and|or|when)\b)</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#designation-pattern</string> </dict> </array> </dict> <key>designation-pattern</key> <dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#intrusive</string> </dict> <dict> <key>begin</key> <string>\(</string> <key>beginCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.parenthesis.open.cs</string> </dict> </dict> <key>end</key> <string>\)</string> <key>endCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.parenthesis.close.cs</string> </dict> </dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#punctuation-comma</string> </dict> <dict> <key>include</key> <string>#designation-pattern</string> </dict> </array> </dict> <dict> <key>include</key> <string>#simple-designation-pattern</string> </dict> </array> </dict> <key>simple-designation-pattern</key> <dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#discard-pattern</string> </dict> <dict> <key>match</key> <string>@?[_[:alpha:]][_[:alnum:]]*</string> <key>name</key> <string>entity.name.variable.local.cs</string> </dict> </array> </dict> <key>type-pattern</key> <dict> <key>begin</key> <string>(?=@?[_[:alpha:]][_[:alnum:]]*)</string> <key>end</key> <string>(?=[)}\],;:?=&|^]|!=|\b(and|or|when)\b)</string> <key>patterns</key> <array> <dict> <key>begin</key> <string>\G</string> <key>end</key> <string>(?!\G[@_[:alpha:]])(?=[\({@_[:alpha:])}\],;:=&|^]|(?:\s|^)\?|!=|\b(and|or|when)\b)</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#intrusive</string> </dict> <dict> <key>include</key> <string>#type-subpattern</string> </dict> </array> </dict> <dict> <key>begin</key> <string>(?=[\({@_[:alpha:]])</string> <key>end</key> <string>(?=[)}\],;:?=&|^]|!=|\b(and|or|when)\b)</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#intrusive</string> </dict> <dict> <key>include</key> <string>#positional-pattern</string> </dict> <dict> <key>include</key> <string>#property-pattern</string> </dict> <dict> <key>include</key> <string>#simple-designation-pattern</string> </dict> </array> </dict> </array> </dict> <key>type-subpattern</key> <dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#type-builtin</string> </dict> <dict> <key>begin</key> <string>(@?[_[:alpha:]][_[:alnum:]]*)\s*(::)</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>entity.name.type.alias.cs</string> </dict> <key>2</key> <dict> <key>name</key> <string>punctuation.separator.coloncolon.cs</string> </dict> </dict> <key>end</key> <string>(?<=[_[:alnum:]])|(?=[.<\[\({)}\],;:?=&|^]|!=|\b(and|or|when)\b)</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#intrusive</string> </dict> <dict> <key>match</key> <string>\@?[_[:alpha:]][_[:alnum:]]*</string> <key>name</key> <string>entity.name.type.cs</string> </dict> </array> </dict> <dict> <key>match</key> <string>\@?[_[:alpha:]][_[:alnum:]]*</string> <key>name</key> <string>entity.name.type.cs</string> </dict> <dict> <key>begin</key> <string>\.</string> <key>beginCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.accessor.cs</string> </dict> </dict> <key>end</key> <string>(?<=[_[:alnum:]])|(?=[<\[\({)}\],;:?=&|^]|!=|\b(and|or|when)\b)</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#intrusive</string> </dict> <dict> <key>match</key> <string>\@?[_[:alpha:]][_[:alnum:]]*</string> <key>name</key> <string>entity.name.type.cs</string> </dict> </array> </dict> <dict> <key>include</key> <string>#type-arguments</string> </dict> <dict> <key>include</key> <string>#type-array-suffix</string> </dict> <dict> <key>match</key> <string>(?<!\s)\?</string> <key>name</key> <string>punctuation.separator.question-mark.cs</string> </dict> </array> </dict> <key>positional-pattern</key> <dict> <key>begin</key> <string>(?=\()</string> <key>end</key> <string>(?=[)}\],;:?=&|^]|!=|\b(and|or|when)\b)</string> <key>patterns</key> <array> <dict> <key>begin</key> <string>\(</string> <key>beginCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.parenthesis.open.cs</string> </dict> </dict> <key>end</key> <string>\)</string> <key>endCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.parenthesis.close.cs</string> </dict> </dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#subpattern</string> </dict> <dict> <key>include</key> <string>#punctuation-comma</string> </dict> </array> </dict> <dict> <key>begin</key> <string>(?<=\))</string> <key>end</key> <string>(?=[)}\],;:?=&|^]|!=|\b(and|or|when)\b)</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#intrusive</string> </dict> <dict> <key>include</key> <string>#property-pattern</string> </dict> <dict> <key>include</key> <string>#simple-designation-pattern</string> </dict> </array> </dict> </array> </dict> <key>property-pattern</key> <dict> <key>begin</key> <string>(?={)</string> <key>end</key> <string>(?=[)}\],;:?=&|^]|!=|\b(and|or|when)\b)</string> <key>patterns</key> <array> <dict> <key>begin</key> <string>\{</string> <key>beginCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.curlybrace.open.cs</string> </dict> </dict> <key>end</key> <string>\}</string> <key>endCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.curlybrace.close.cs</string> </dict> </dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#subpattern</string> </dict> <dict> <key>include</key> <string>#punctuation-comma</string> </dict> </array> </dict> <dict> <key>begin</key> <string>(?<=\})</string> <key>end</key> <string>(?=[)}\],;:?=&|^]|!=|\b(and|or|when)\b)</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#intrusive</string> </dict> <dict> <key>include</key> <string>#simple-designation-pattern</string> </dict> </array> </dict> </array> </dict> <key>subpattern</key> <dict> <key>patterns</key> <array> <dict> <key>match</key> <string>(@?[_[:alpha:]][_[:alnum:]]*(?:\s*\.\s*@?[_[:alpha:]][_[:alnum:]]*)*)\s*(:)</string> <key>captures</key> <dict> <key>1</key> <dict> <key>patterns</key> <array> <dict> <key>match</key> <string>\@?[_[:alpha:]][_[:alnum:]]*</string> <key>name</key> <string>variable.other.object.property.cs</string> </dict> <dict> <key>include</key> <string>#punctuation-accessor</string> </dict> </array> </dict> <key>2</key> <dict> <key>name</key> <string>punctuation.separator.colon.cs</string> </dict> </dict> </dict> <dict> <key>include</key> <string>#pattern</string> </dict> </array> </dict> <key>list-pattern</key> <dict> <key>begin</key> <string>(?=\[)</string> <key>end</key> <string>(?=[)}\],;:?=&|^]|!=|\b(and|or|when)\b)</string> <key>patterns</key> <array> <dict> <key>begin</key> <string>\[</string> <key>beginCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.squarebracket.open.cs</string> </dict> </dict> <key>end</key> <string>\]</string> <key>endCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.squarebracket.close.cs</string> </dict> </dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#pattern</string> </dict> <dict> <key>include</key> <string>#punctuation-comma</string> </dict> </array> </dict> <dict> <key>begin</key> <string>(?<=\])</string> <key>end</key> <string>(?=[)}\],;:?=&|^]|!=|\b(and|or|when)\b)</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#intrusive</string> </dict> <dict> <key>include</key> <string>#simple-designation-pattern</string> </dict> </array> </dict> </array> </dict> <key>slice-pattern</key> <dict> <key>match</key> <string>\.\.</string> <key>name</key> <string>keyword.operator.range.cs</string> </dict> <key>do-statement</key> <dict> <key>begin</key> <string>(?<!\.)\b(do)\b</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>keyword.control.loop.do.cs</string> </dict> </dict> <key>end</key> <string>(?=;|})</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#statement</string> </dict> </array> </dict> <key>while-statement</key> <dict> <key>begin</key> <string>(?<!\.)\b(while)\b\s*(?=\()</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>keyword.control.loop.while.cs</string> </dict> </dict> <key>end</key> <string>(?<=\})|(?=;)</string> <key>patterns</key> <array> <dict> <key>begin</key> <string>\(</string> <key>beginCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.parenthesis.open.cs</string> </dict> </dict> <key>end</key> <string>\)</string> <key>endCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.parenthesis.close.cs</string> </dict> </dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#expression</string> </dict> </array> </dict> <dict> <key>include</key> <string>#statement</string> </dict> </array> </dict> <key>for-statement</key> <dict> <key>begin</key> <string>\b(for)\b</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>keyword.control.loop.for.cs</string> </dict> </dict> <key>end</key> <string>(?<=\))|(?=;|})</string> <key>patterns</key> <array> <dict> <key>begin</key> <string>\(</string> <key>beginCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.parenthesis.open.cs</string> </dict> </dict> <key>end</key> <string>\)</string> <key>endCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.parenthesis.close.cs</string> </dict> </dict> <key>patterns</key> <array> <dict> <key>begin</key> <string>(?=[^;\)])</string> <key>end</key> <string>(?=;|\))</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#intrusive</string> </dict> <dict> <key>include</key> <string>#local-variable-declaration</string> </dict> </array> </dict> <dict> <key>begin</key> <string>(?=;)</string> <key>end</key> <string>(?=\))</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#intrusive</string> </dict> <dict> <key>include</key> <string>#expression</string> </dict> <dict> <key>include</key> <string>#punctuation-comma</string> </dict> <dict> <key>include</key> <string>#punctuation-semicolon</string> </dict> </array> </dict> </array> </dict> </array> </dict> <key>foreach-statement</key> <dict> <key>begin</key> <string>\b(foreach)\b</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>keyword.control.loop.foreach.cs</string> </dict> </dict> <key>end</key> <string>(?<=\))|(?=;|})</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#intrusive</string> </dict> <dict> <key>begin</key> <string>\(</string> <key>beginCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.parenthesis.open.cs</string> </dict> </dict> <key>end</key> <string>\)</string> <key>endCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.parenthesis.close.cs</string> </dict> </dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#intrusive</string> </dict> <dict> <key>match</key> <string>(?x) (?: (?:(\bref)\s+)?(\bvar\b)| # ref local (?<type_name> (?: (?:ref\s+)? # ref local (?: (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\s*\:\:\s*)? # alias-qualification (?<name_and_type_args> # identifier + type arguments (if any) \g<identifier>\s* (?<type_args>\s*<(?:[^<>]|\g<type_args>)+>\s*)? ) (?:\s*\.\s*\g<name_and_type_args>)* | # Are there any more names being dotted into? (?<tuple>\s*\((?:[^\(\)]|\g<tuple>)+\)) ) (?:\s*\?\s*)? # nullable suffix? (?:\s* # array suffix? \[ (?:\s*,\s*)* # commata for multi-dimensional arrays \] \s* (?:\?)? # arrays can be nullable reference types \s* )* ) ) )\s+ (\g<identifier>)\s+ \b(in)\b</string> <key>captures</key> <dict> <key>1</key> <dict> <key>name</key> <string>storage.modifier.ref.cs</string> </dict> <key>2</key> <dict> <key>name</key> <string>storage.type.var.cs</string> </dict> <key>3</key> <dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#type</string> </dict> </array> </dict> <key>8</key> <dict> <key>name</key> <string>entity.name.variable.local.cs</string> </dict> <key>9</key> <dict> <key>name</key> <string>keyword.control.loop.in.cs</string> </dict> </dict> </dict> <dict> <key>match</key> <string>(?x) # match foreach (var (x, y) in ...) (?:\b(var)\b\s*)? (?<tuple>\((?:[^\(\)]|\g<tuple>)+\))\s+ \b(in)\b</string> <key>captures</key> <dict> <key>1</key> <dict> <key>name</key> <string>storage.type.var.cs</string> </dict> <key>2</key> <dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#tuple-declaration-deconstruction-element-list</string> </dict> </array> </dict> <key>3</key> <dict> <key>name</key> <string>keyword.control.loop.in.cs</string> </dict> </dict> </dict> <dict> <key>include</key> <string>#expression</string> </dict> </array> </dict> </array> </dict> <key>try-statement</key> <dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#try-block</string> </dict> <dict> <key>include</key> <string>#catch-clause</string> </dict> <dict> <key>include</key> <string>#finally-clause</string> </dict> </array> </dict> <key>try-block</key> <dict> <key>begin</key> <string>(?<!\.)\b(try)\b</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>keyword.control.exception.try.cs</string> </dict> </dict> <key>end</key> <string>(?<=\})</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#comment</string> </dict> <dict> <key>include</key> <string>#block</string> </dict> </array> </dict> <key>finally-clause</key> <dict> <key>begin</key> <string>(?<!\.)\b(finally)\b</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>keyword.control.exception.finally.cs</string> </dict> </dict> <key>end</key> <string>(?<=\})</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#comment</string> </dict> <dict> <key>include</key> <string>#block</string> </dict> </array> </dict> <key>catch-clause</key> <dict> <key>begin</key> <string>(?<!\.)\b(catch)\b</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>keyword.control.exception.catch.cs</string> </dict> </dict> <key>end</key> <string>(?<=\})</string> <key>patterns</key> <array> <dict> <key>begin</key> <string>\(</string> <key>beginCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.parenthesis.open.cs</string> </dict> </dict> <key>end</key> <string>\)</string> <key>endCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.parenthesis.close.cs</string> </dict> </dict> <key>patterns</key> <array> <dict> <key>match</key> <string>(?x) (?<type_name> (?: (?: (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\s*\:\:\s*)? # alias-qualification (?<name_and_type_args> # identifier + type arguments (if any) \g<identifier>\s* (?<type_args>\s*<(?:[^<>]|\g<type_args>)+>\s*)? ) (?:\s*\.\s*\g<name_and_type_args>)* | # Are there any more names being dotted into? (?<tuple>\s*\((?:[^\(\)]|\g<tuple>)+\)) ) (?:\s*\?\s*)? # nullable suffix? (?:\s* # array suffix? \[ (?:\s*,\s*)* # commata for multi-dimensional arrays \] \s* (?:\?)? # arrays can be nullable reference types \s* )* ) )\s* (?:(\g<identifier>)\b)?</string> <key>captures</key> <dict> <key>1</key> <dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#type</string> </dict> </array> </dict> <key>6</key> <dict> <key>name</key> <string>entity.name.variable.local.cs</string> </dict> </dict> </dict> </array> </dict> <dict> <key>include</key> <string>#when-clause</string> </dict> <dict> <key>include</key> <string>#comment</string> </dict> <dict> <key>include</key> <string>#block</string> </dict> </array> </dict> <key>when-clause</key> <dict> <key>begin</key> <string>(?<!\.)\b(when)\b\s*(\()</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>keyword.control.exception.when.cs</string> </dict> <key>2</key> <dict> <key>name</key> <string>punctuation.parenthesis.open.cs</string> </dict> </dict> <key>end</key> <string>\)</string> <key>endCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.parenthesis.close.cs</string> </dict> </dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#expression</string> </dict> <dict> <key>include</key> <string>#comment</string> </dict> </array> </dict> <key>context-control-statement</key> <dict> <key>match</key> <string>\b(checked|unchecked|unsafe)\b(?!\s*[@_[:alpha:](])</string> <key>name</key> <string>keyword.control.context.$1.cs</string> </dict> <key>context-control-paren-statement</key> <dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#fixed-statement</string> </dict> <dict> <key>include</key> <string>#lock-statement</string> </dict> <dict> <key>include</key> <string>#using-statement</string> </dict> </array> </dict> <key>fixed-statement</key> <dict> <key>begin</key> <string>\b(fixed)\b</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>keyword.control.context.fixed.cs</string> </dict> </dict> <key>end</key> <string>(?<=\))|(?=;|})</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#intrusive</string> </dict> <dict> <key>begin</key> <string>\(</string> <key>beginCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.parenthesis.open.cs</string> </dict> </dict> <key>end</key> <string>\)</string> <key>endCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.parenthesis.close.cs</string> </dict> </dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#intrusive</string> </dict> <dict> <key>include</key> <string>#local-variable-declaration</string> </dict> </array> </dict> </array> </dict> <key>lock-statement</key> <dict> <key>begin</key> <string>\b(lock)\b</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>keyword.control.context.lock.cs</string> </dict> </dict> <key>end</key> <string>(?<=\))|(?=;|})</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#intrusive</string> </dict> <dict> <key>begin</key> <string>\(</string> <key>beginCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.parenthesis.open.cs</string> </dict> </dict> <key>end</key> <string>\)</string> <key>endCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.parenthesis.close.cs</string> </dict> </dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#intrusive</string> </dict> <dict> <key>include</key> <string>#expression</string> </dict> </array> </dict> </array> </dict> <key>using-statement</key> <dict> <key>begin</key> <string>\b(using)\b</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>keyword.control.context.using.cs</string> </dict> </dict> <key>end</key> <string>(?<=\))|(?=;|})</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#intrusive</string> </dict> <dict> <key>begin</key> <string>\(</string> <key>beginCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.parenthesis.open.cs</string> </dict> </dict> <key>end</key> <string>\)</string> <key>endCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.parenthesis.close.cs</string> </dict> </dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#intrusive</string> </dict> <dict> <key>include</key> <string>#await-expression</string> </dict> <dict> <key>include</key> <string>#local-variable-declaration</string> </dict> <dict> <key>include</key> <string>#expression</string> </dict> </array> </dict> <dict> <key>include</key> <string>#local-variable-declaration</string> </dict> </array> </dict> <key>labeled-statement</key> <dict> <key>match</key> <string>(@?[_[:alpha:]][_[:alnum:]]*)\s*(:)</string> <key>captures</key> <dict> <key>1</key> <dict> <key>name</key> <string>entity.name.label.cs</string> </dict> <key>2</key> <dict> <key>name</key> <string>punctuation.separator.colon.cs</string> </dict> </dict> </dict> <key>local-declaration</key> <dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#local-constant-declaration</string> </dict> <dict> <key>include</key> <string>#local-variable-declaration</string> </dict> <dict> <key>include</key> <string>#local-function-declaration</string> </dict> <dict> <key>include</key> <string>#local-tuple-var-deconstruction</string> </dict> </array> </dict> <key>local-variable-declaration</key> <dict> <key>begin</key> <string>(?x) (?: (?:(\bref)\s+(?:(\breadonly)\s+)?)?(\bvar\b)| # ref local (?<type_name> (?: (?:ref\s+(?:readonly\s+)?)? # ref local (?: (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\s*\:\:\s*)? # alias-qualification (?<name_and_type_args> # identifier + type arguments (if any) \g<identifier>\s* (?<type_args>\s*<(?:[^<>]|\g<type_args>)+>\s*)? ) (?:\s*\.\s*\g<name_and_type_args>)* | # Are there any more names being dotted into? (?<tuple>\s*\((?:[^\(\)]|\g<tuple>)+\)) ) (?:\s*[?*]\s*)? # nullable or pointer suffix? (?:\s* # array suffix? \[ (?:\s*,\s*)* # commata for multi-dimensional arrays \] \s* (?:\?)? # arrays can be nullable reference types \s* )* ) ) )\s+ (\g<identifier>)\s* (?!=>) (?=,|;|=|\))</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>storage.modifier.ref.cs</string> </dict> <key>2</key> <dict> <key>name</key> <string>storage.modifier.readonly.cs</string> </dict> <key>3</key> <dict> <key>name</key> <string>storage.type.var.cs</string> </dict> <key>4</key> <dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#type</string> </dict> </array> </dict> <key>9</key> <dict> <key>name</key> <string>entity.name.variable.local.cs</string> </dict> </dict> <key>end</key> <string>(?=[;)}])</string> <key>patterns</key> <array> <dict> <key>name</key> <string>entity.name.variable.local.cs</string> <key>match</key> <string>@?[_[:alpha:]][_[:alnum:]]*</string> </dict> <dict> <key>include</key> <string>#punctuation-comma</string> </dict> <dict> <key>include</key> <string>#comment</string> </dict> <dict> <key>include</key> <string>#variable-initializer</string> </dict> </array> </dict> <key>local-constant-declaration</key> <dict> <key>begin</key> <string>(?x) (?<const_keyword>\b(?:const)\b)\s* (?<type_name> (?: (?: (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\s*\:\:\s*)? # alias-qualification (?<name_and_type_args> # identifier + type arguments (if any) \g<identifier>\s* (?<type_args>\s*<(?:[^<>]|\g<type_args>)+>\s*)? ) (?:\s*\.\s*\g<name_and_type_args>)* | # Are there any more names being dotted into? (?<tuple>\s*\((?:[^\(\)]|\g<tuple>)+\)) ) (?:\s*\?\s*)? # nullable suffix? (?:\s* # array suffix? \[ (?:\s*,\s*)* # commata for multi-dimensional arrays \] \s* (?:\?)? # arrays can be nullable reference types \s* )* ) )\s+ (\g<identifier>)\s* (?=,|;|=)</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>storage.modifier.const.cs</string> </dict> <key>2</key> <dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#type</string> </dict> </array> </dict> <key>7</key> <dict> <key>name</key> <string>entity.name.variable.local.cs</string> </dict> </dict> <key>end</key> <string>(?=;)</string> <key>patterns</key> <array> <dict> <key>name</key> <string>entity.name.variable.local.cs</string> <key>match</key> <string>@?[_[:alpha:]][_[:alnum:]]*</string> </dict> <dict> <key>include</key> <string>#punctuation-comma</string> </dict> <dict> <key>include</key> <string>#comment</string> </dict> <dict> <key>include</key> <string>#variable-initializer</string> </dict> </array> </dict> <key>local-function-declaration</key> <dict> <key>begin</key> <string>(?x) \b((?:(?:async|unsafe|static|extern)\s+)*) (?<type_name> (?:ref\s+(?:readonly\s+)?)? # ref return (?: (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\s*\:\:\s*)? # alias-qualification (?<name_and_type_args> # identifier + type arguments (if any) \g<identifier>\s* (?<type_args>\s*<(?:[^<>]|\g<type_args>)+>\s*)? ) (?:\s*\.\s*\g<name_and_type_args>)* | # Are there any more names being dotted into? (?<tuple>\s*\((?:[^\(\)]|\g<tuple>)+\)) ) (?:\s*\?)? # nullable suffix? (?:\s* # array suffix? \[ \s*(?:,\s*)* # commata for multi-dimensional arrays \] (?:\s*\?)? # arrays can be nullable reference types )* )\s+ (\g<identifier>)\s* (<[^<>]+>)?\s* (?=\()</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#storage-modifier</string> </dict> </array> </dict> <key>2</key> <dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#type</string> </dict> </array> </dict> <key>7</key> <dict> <key>name</key> <string>entity.name.function.cs</string> </dict> <key>8</key> <dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#type-parameter-list</string> </dict> </array> </dict> </dict> <key>end</key> <string>(?<=\})|(?=;)</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#comment</string> </dict> <dict> <key>include</key> <string>#parenthesized-parameter-list</string> </dict> <dict> <key>include</key> <string>#generic-constraints</string> </dict> <dict> <key>include</key> <string>#expression-body</string> </dict> <dict> <key>include</key> <string>#block</string> </dict> </array> </dict> <key>local-tuple-var-deconstruction</key> <dict> <key>begin</key> <string>(?x) # e.g. var (x, y) = GetPoint(); (?:\b(var)\b\s*) (?<tuple>\((?:[^\(\)]|\g<tuple>)+\))\s* (?=;|=|\))</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>storage.type.var.cs</string> </dict> <key>2</key> <dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#tuple-declaration-deconstruction-element-list</string> </dict> </array> </dict> </dict> <key>end</key> <string>(?=;|\))</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#comment</string> </dict> <dict> <key>include</key> <string>#variable-initializer</string> </dict> </array> </dict> <key>tuple-deconstruction-assignment</key> <dict> <key>match</key> <string>(?x) (?<tuple>\s*\((?:[^\(\)]|\g<tuple>)+\))\s* (?!=>|==)(?==)</string> <key>captures</key> <dict> <key>1</key> <dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#tuple-deconstruction-element-list</string> </dict> </array> </dict> </dict> </dict> <key>tuple-declaration-deconstruction-element-list</key> <dict> <key>begin</key> <string>\(</string> <key>beginCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.parenthesis.open.cs</string> </dict> </dict> <key>end</key> <string>\)</string> <key>endCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.parenthesis.close.cs</string> </dict> </dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#comment</string> </dict> <dict> <key>include</key> <string>#tuple-declaration-deconstruction-element-list</string> </dict> <dict> <key>include</key> <string>#declaration-expression-tuple</string> </dict> <dict> <key>include</key> <string>#punctuation-comma</string> </dict> <dict> <key>match</key> <string>(?x) # e.g. x (@?[_[:alpha:]][_[:alnum:]]*)\b\s* (?=[,)])</string> <key>captures</key> <dict> <key>1</key> <dict> <key>name</key> <string>entity.name.variable.tuple-element.cs</string> </dict> </dict> </dict> </array> </dict> <key>tuple-deconstruction-element-list</key> <dict> <key>begin</key> <string>\(</string> <key>beginCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.parenthesis.open.cs</string> </dict> </dict> <key>end</key> <string>\)</string> <key>endCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.parenthesis.close.cs</string> </dict> </dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#comment</string> </dict> <dict> <key>include</key> <string>#tuple-deconstruction-element-list</string> </dict> <dict> <key>include</key> <string>#declaration-expression-tuple</string> </dict> <dict> <key>include</key> <string>#punctuation-comma</string> </dict> <dict> <key>match</key> <string>(?x) # e.g. x (@?[_[:alpha:]][_[:alnum:]]*)\b\s* (?=[,)])</string> <key>captures</key> <dict> <key>1</key> <dict> <key>name</key> <string>variable.other.readwrite.cs</string> </dict> </dict> </dict> </array> </dict> <key>declaration-expression-local</key> <dict> <key>match</key> <string>(?x) # e.g. int x OR var x (?: \b(var)\b| (?<type_name> (?: (?: (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\s*\:\:\s*)? # alias-qualification (?<name_and_type_args> # identifier + type arguments (if any) \g<identifier>\s* (?<type_args>\s*<(?:[^<>]|\g<type_args>)+>\s*)? ) (?:\s*\.\s*\g<name_and_type_args>)* | # Are there any more names being dotted into? (?<tuple>\s*\((?:[^\(\)]|\g<tuple>)+\)) ) (?:\s*\?\s*)? # nullable suffix? (?:\s* # array suffix? \[ (?:\s*,\s*)* # commata for multi-dimensional arrays \] \s* (?:\?)? # arrays can be nullable reference types \s* )* ) ) )\s+ (\g<identifier>)\b\s* (?=[,)\]])</string> <key>captures</key> <dict> <key>1</key> <dict> <key>name</key> <string>storage.type.var.cs</string> </dict> <key>2</key> <dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#type</string> </dict> </array> </dict> <key>7</key> <dict> <key>name</key> <string>entity.name.variable.local.cs</string> </dict> </dict> </dict> <key>declaration-expression-tuple</key> <dict> <key>match</key> <string>(?x) # e.g. int x OR var x (?: \b(var)\b| (?<type_name> (?: (?: (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\s*\:\:\s*)? # alias-qualification (?<name_and_type_args> # identifier + type arguments (if any) \g<identifier>\s* (?<type_args>\s*<(?:[^<>]|\g<type_args>)+>\s*)? ) (?:\s*\.\s*\g<name_and_type_args>)* | # Are there any more names being dotted into? (?<tuple>\s*\((?:[^\(\)]|\g<tuple>)+\)) ) (?:\s*\?\s*)? # nullable suffix? (?:\s* # array suffix? \[ (?:\s*,\s*)* # commata for multi-dimensional arrays \] \s* (?:\?)? # arrays can be nullable reference types \s* )* ) ) )\s+ (\g<identifier>)\b\s* (?=[,)])</string> <key>captures</key> <dict> <key>1</key> <dict> <key>name</key> <string>storage.type.var.cs</string> </dict> <key>2</key> <dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#type</string> </dict> </array> </dict> <key>7</key> <dict> <key>name</key> <string>entity.name.variable.tuple-element.cs</string> </dict> </dict> </dict> <key>expression-operator-expression</key> <dict> <key>begin</key> <string>\b(checked|unchecked|nameof)\s*(\()</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>keyword.operator.expression.$1.cs</string> </dict> <key>2</key> <dict> <key>name</key> <string>punctuation.parenthesis.open.cs</string> </dict> </dict> <key>end</key> <string>\)</string> <key>endCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.parenthesis.close.cs</string> </dict> </dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#expression</string> </dict> </array> </dict> <key>type-operator-expression</key> <dict> <key>begin</key> <string>\b(default|sizeof|typeof)\s*(\()</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>keyword.operator.expression.$1.cs</string> </dict> <key>2</key> <dict> <key>name</key> <string>punctuation.parenthesis.open.cs</string> </dict> </dict> <key>end</key> <string>\)</string> <key>endCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.parenthesis.close.cs</string> </dict> </dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#type</string> </dict> </array> </dict> <key>default-literal-expression</key> <dict> <key>match</key> <string>\b(default)\b</string> <key>captures</key> <dict> <key>1</key> <dict> <key>name</key> <string>keyword.operator.expression.default.cs</string> </dict> </dict> </dict> <key>throw-expression</key> <dict> <key>match</key> <string>\b(throw)\b</string> <key>captures</key> <dict> <key>1</key> <dict> <key>name</key> <string>keyword.control.flow.throw.cs</string> </dict> </dict> </dict> <key>interpolated-string</key> <dict> <key>name</key> <string>string.quoted.double.cs</string> <key>begin</key> <string>\$"</string> <key>beginCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.definition.string.begin.cs</string> </dict> </dict> <key>end</key> <string>(")|((?:[^\\\n])$)</string> <key>endCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>punctuation.definition.string.end.cs</string> </dict> <key>2</key> <dict> <key>name</key> <string>invalid.illegal.newline.cs</string> </dict> </dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#string-character-escape</string> </dict> <dict> <key>include</key> <string>#interpolation</string> </dict> </array> </dict> <key>verbatim-interpolated-string</key> <dict> <key>name</key> <string>string.quoted.double.cs</string> <key>begin</key> <string>(?:\$@|@\$)"</string> <key>beginCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.definition.string.begin.cs</string> </dict> </dict> <key>end</key> <string>"(?=[^"])</string> <key>endCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.definition.string.end.cs</string> </dict> </dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#verbatim-string-character-escape</string> </dict> <dict> <key>include</key> <string>#interpolation</string> </dict> </array> </dict> <key>interpolation</key> <dict> <key>name</key> <string>meta.interpolation.cs</string> <key>begin</key> <string>(?<=[^\{]|^)((?:\{\{)*)(\{)(?=[^\{])</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>string.quoted.double.cs</string> </dict> <key>2</key> <dict> <key>name</key> <string>punctuation.definition.interpolation.begin.cs</string> </dict> </dict> <key>end</key> <string>\}</string> <key>endCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.definition.interpolation.end.cs</string> </dict> </dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#expression</string> </dict> </array> </dict> <key>raw-interpolated-string</key> <dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#raw-interpolated-string-five-or-more-quote-one-or-more-interpolation</string> </dict> <dict> <key>include</key> <string>#raw-interpolated-string-three-or-more-quote-three-or-more-interpolation</string> </dict> <dict> <key>include</key> <string>#raw-interpolated-string-quadruple-quote-double-interpolation</string> </dict> <dict> <key>include</key> <string>#raw-interpolated-string-quadruple-quote-single-interpolation</string> </dict> <dict> <key>include</key> <string>#raw-interpolated-string-triple-quote-double-interpolation</string> </dict> <dict> <key>include</key> <string>#raw-interpolated-string-triple-quote-single-interpolation</string> </dict> </array> </dict> <key>raw-interpolated-string-triple-quote-single-interpolation</key> <dict> <key>name</key> <string>string.quoted.double.cs</string> <key>begin</key> <string>\$"""</string> <key>beginCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.definition.string.begin.cs</string> </dict> </dict> <key>end</key> <string>"""</string> <key>endCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.definition.string.end.cs</string> </dict> </dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#raw-interpolation</string> </dict> </array> </dict> <key>raw-interpolated-string-triple-quote-double-interpolation</key> <dict> <key>name</key> <string>string.quoted.double.cs</string> <key>begin</key> <string>\$\$"""</string> <key>beginCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.definition.string.begin.cs</string> </dict> </dict> <key>end</key> <string>"""</string> <key>endCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.definition.string.end.cs</string> </dict> </dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#double-raw-interpolation</string> </dict> </array> </dict> <key>raw-interpolated-string-quadruple-quote-single-interpolation</key> <dict> <key>name</key> <string>string.quoted.double.cs</string> <key>begin</key> <string>\$""""</string> <key>beginCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.definition.string.begin.cs</string> </dict> </dict> <key>end</key> <string>""""</string> <key>endCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.definition.string.end.cs</string> </dict> </dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#raw-interpolation</string> </dict> </array> </dict> <key>raw-interpolated-string-quadruple-quote-double-interpolation</key> <dict> <key>name</key> <string>string.quoted.double.cs</string> <key>begin</key> <string>\$\$""""</string> <key>beginCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.definition.string.begin.cs</string> </dict> </dict> <key>end</key> <string>""""</string> <key>endCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.definition.string.end.cs</string> </dict> </dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#double-raw-interpolation</string> </dict> </array> </dict> <key>raw-interpolated-string-three-or-more-quote-three-or-more-interpolation</key> <dict> <key>name</key> <string>string.quoted.double.cs</string> <key>begin</key> <string>\$\$\$+"""+</string> <key>beginCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.definition.string.begin.cs</string> </dict> </dict> <key>end</key> <string>"""+</string> <key>endCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.definition.string.end.cs</string> </dict> </dict> </dict> <key>raw-interpolated-string-five-or-more-quote-one-or-more-interpolation</key> <dict> <key>name</key> <string>string.quoted.double.cs</string> <key>begin</key> <string>\$+"""""+</string> <key>beginCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.definition.string.begin.cs</string> </dict> </dict> <key>end</key> <string>"""""+</string> <key>endCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.definition.string.end.cs</string> </dict> </dict> </dict> <key>raw-interpolation</key> <dict> <key>name</key> <string>meta.interpolation.cs</string> <key>begin</key> <string>(?<=[^\{]|^)((?:\{)*)(\{)(?=[^\{])</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>string.quoted.double.cs</string> </dict> <key>2</key> <dict> <key>name</key> <string>punctuation.definition.interpolation.begin.cs</string> </dict> </dict> <key>end</key> <string>\}</string> <key>endCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.definition.interpolation.end.cs</string> </dict> </dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#expression</string> </dict> </array> </dict> <key>double-raw-interpolation</key> <dict> <key>name</key> <string>meta.interpolation.cs</string> <key>begin</key> <string>(?<=[^\{][^\{]|^)((?:\{)*)(\{\{)(?=[^\{])</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>string.quoted.double.cs</string> </dict> <key>2</key> <dict> <key>name</key> <string>punctuation.definition.interpolation.begin.cs</string> </dict> </dict> <key>end</key> <string>\}\}</string> <key>endCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.definition.interpolation.end.cs</string> </dict> </dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#expression</string> </dict> </array> </dict> <key>literal</key> <dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#boolean-literal</string> </dict> <dict> <key>include</key> <string>#null-literal</string> </dict> <dict> <key>include</key> <string>#numeric-literal</string> </dict> <dict> <key>include</key> <string>#char-literal</string> </dict> <dict> <key>include</key> <string>#raw-string-literal</string> </dict> <dict> <key>include</key> <string>#string-literal</string> </dict> <dict> <key>include</key> <string>#verbatim-string-literal</string> </dict> <dict> <key>include</key> <string>#tuple-literal</string> </dict> </array> </dict> <key>boolean-literal</key> <dict> <key>patterns</key> <array> <dict> <key>name</key> <string>constant.language.boolean.true.cs</string> <key>match</key> <string>(?<!\.)\btrue\b</string> </dict> <dict> <key>name</key> <string>constant.language.boolean.false.cs</string> <key>match</key> <string>(?<!\.)\bfalse\b</string> </dict> </array> </dict> <key>null-literal</key> <dict> <key>name</key> <string>constant.language.null.cs</string> <key>match</key> <string>(?<!\.)\bnull\b</string> </dict> <key>numeric-literal</key> <dict> <key>match</key> <string>(?<!\w)\.?\d(?:(?:[0-9a-zA-Z_]|_)|(?<=[eE])[+-]|\.\d)*</string> <key>captures</key> <dict> <key>0</key> <dict> <key>patterns</key> <array> <dict> <key>begin</key> <string>(?=.)</string> <key>end</key> <string>$</string> <key>patterns</key> <array> <dict> <key>match</key> <string>(\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))?$</string> <key>captures</key> <dict> <key>2</key> <dict> <key>name</key> <string>constant.numeric.decimal.cs</string> <key>patterns</key> <array> <dict> <key>match</key> <string>(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])</string> <key>name</key> <string>constant.numeric.other.separator.thousands.cs</string> </dict> </array> </dict> <key>3</key> <dict> <key>name</key> <string>constant.numeric.other.separator.thousands.cs</string> </dict> <key>4</key> <dict> <key>name</key> <string>constant.numeric.other.separator.decimals.cs</string> </dict> <key>5</key> <dict> <key>name</key> <string>constant.numeric.decimal.cs</string> <key>patterns</key> <array> <dict> <key>match</key> <string>(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])</string> <key>name</key> <string>constant.numeric.other.separator.thousands.cs</string> </dict> </array> </dict> <key>6</key> <dict> <key>name</key> <string>constant.numeric.other.separator.thousands.cs</string> </dict> <key>8</key> <dict> <key>name</key> <string>constant.numeric.other.exponent.cs</string> </dict> <key>9</key> <dict> <key>name</key> <string>keyword.operator.arithmetic.cs</string> </dict> <key>10</key> <dict> <key>name</key> <string>keyword.operator.arithmetic.cs</string> </dict> <key>11</key> <dict> <key>name</key> <string>constant.numeric.decimal.cs</string> <key>patterns</key> <array> <dict> <key>match</key> <string>(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])</string> <key>name</key> <string>constant.numeric.other.separator.thousands.cs</string> </dict> </array> </dict> <key>12</key> <dict> <key>name</key> <string>constant.numeric.other.suffix.cs</string> </dict> </dict> </dict> <dict> <key>match</key> <string>(\G0[bB])([01_](?:[01_]|((?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)((?:(?:(?:(?:(?:[uU]|[uU]l)|[uU]L)|l[uU]?)|L[uU]?)|[fFdDmM])(?!\w))?$</string> <key>captures</key> <dict> <key>1</key> <dict> <key>name</key> <string>constant.numeric.other.preffix.binary.cs</string> </dict> <key>2</key> <dict> <key>name</key> <string>constant.numeric.binary.cs</string> <key>patterns</key> <array> <dict> <key>match</key> <string>(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])</string> <key>name</key> <string>constant.numeric.other.separator.thousands.cs</string> </dict> </array> </dict> <key>3</key> <dict> <key>name</key> <string>constant.numeric.other.separator.thousands.cs</string> </dict> <key>4</key> <dict> <key>name</key> <string>constant.numeric.other.suffix.cs</string> </dict> </dict> </dict> <dict> <key>match</key> <string>(\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))?$</string> <key>captures</key> <dict> <key>1</key> <dict> <key>name</key> <string>constant.numeric.other.preffix.hex.cs</string> </dict> <key>2</key> <dict> <key>name</key> <string>constant.numeric.hex.cs</string> <key>patterns</key> <array> <dict> <key>match</key> <string>(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])</string> <key>name</key> <string>constant.numeric.other.separator.thousands.cs</string> </dict> </array> </dict> <key>3</key> <dict> <key>name</key> <string>constant.numeric.other.separator.thousands.cs</string> </dict> <key>4</key> <dict> <key>name</key> <string>constant.numeric.other.suffix.cs</string> </dict> </dict> </dict> <dict> <key>match</key> <string>(\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))?$</string> <key>captures</key> <dict> <key>2</key> <dict> <key>name</key> <string>constant.numeric.decimal.cs</string> <key>patterns</key> <array> <dict> <key>match</key> <string>(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])</string> <key>name</key> <string>constant.numeric.other.separator.thousands.cs</string> </dict> </array> </dict> <key>3</key> <dict> <key>name</key> <string>constant.numeric.other.separator.thousands.cs</string> </dict> <key>5</key> <dict> <key>name</key> <string>constant.numeric.other.exponent.cs</string> </dict> <key>6</key> <dict> <key>name</key> <string>keyword.operator.arithmetic.cs</string> </dict> <key>7</key> <dict> <key>name</key> <string>keyword.operator.arithmetic.cs</string> </dict> <key>8</key> <dict> <key>name</key> <string>constant.numeric.decimal.cs</string> <key>patterns</key> <array> <dict> <key>match</key> <string>(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])</string> <key>name</key> <string>constant.numeric.other.separator.thousands.cs</string> </dict> </array> </dict> <key>9</key> <dict> <key>name</key> <string>constant.numeric.other.suffix.cs</string> </dict> </dict> </dict> <dict> <key>match</key> <string>(?:(?:[0-9a-zA-Z_]|_)|(?<=[eE])[+-]|\.\d)+</string> <key>name</key> <string>invalid.illegal.constant.numeric.cs</string> </dict> </array> </dict> </array> </dict> </dict> </dict> <key>char-literal</key> <dict> <key>name</key> <string>string.quoted.single.cs</string> <key>begin</key> <string>'</string> <key>beginCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.definition.char.begin.cs</string> </dict> </dict> <key>end</key> <string>(\')|((?:[^\\\n])$)</string> <key>endCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>punctuation.definition.char.end.cs</string> </dict> <key>2</key> <dict> <key>name</key> <string>invalid.illegal.newline.cs</string> </dict> </dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#char-character-escape</string> </dict> </array> </dict> <key>char-character-escape</key> <dict> <key>name</key> <string>constant.character.escape.cs</string> <key>match</key> <string>\\(x[0-9a-fA-F]{1,4}|u[0-9a-fA-F]{4}|.)</string> </dict> <key>string-literal</key> <dict> <key>name</key> <string>string.quoted.double.cs</string> <key>begin</key> <string>(?<!@)"</string> <key>beginCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.definition.string.begin.cs</string> </dict> </dict> <key>end</key> <string>(")|((?:[^\\\n])$)</string> <key>endCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>punctuation.definition.string.end.cs</string> </dict> <key>2</key> <dict> <key>name</key> <string>invalid.illegal.newline.cs</string> </dict> </dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#string-character-escape</string> </dict> </array> </dict> <key>string-character-escape</key> <dict> <key>name</key> <string>constant.character.escape.cs</string> <key>match</key> <string>\\(x[0-9a-fA-F]{1,4}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|.)</string> </dict> <key>verbatim-string-literal</key> <dict> <key>name</key> <string>string.quoted.double.cs</string> <key>begin</key> <string>@"</string> <key>beginCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.definition.string.begin.cs</string> </dict> </dict> <key>end</key> <string>"(?=[^"])</string> <key>endCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.definition.string.end.cs</string> </dict> </dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#verbatim-string-character-escape</string> </dict> </array> </dict> <key>verbatim-string-character-escape</key> <dict> <key>name</key> <string>constant.character.escape.cs</string> <key>match</key> <string>""</string> </dict> <key>raw-string-literal</key> <dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#raw-string-literal-more</string> </dict> <dict> <key>include</key> <string>#raw-string-literal-quadruple</string> </dict> <dict> <key>include</key> <string>#raw-string-literal-triple</string> </dict> </array> </dict> <key>raw-string-literal-triple</key> <dict> <key>name</key> <string>string.quoted.double.cs</string> <key>begin</key> <string>"""</string> <key>beginCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.definition.string.begin.cs</string> </dict> </dict> <key>end</key> <string>"""</string> <key>endCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.definition.string.end.cs</string> </dict> </dict> </dict> <key>raw-string-literal-quadruple</key> <dict> <key>name</key> <string>string.quoted.double.cs</string> <key>begin</key> <string>""""</string> <key>beginCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.definition.string.begin.cs</string> </dict> </dict> <key>end</key> <string>""""</string> <key>endCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.definition.string.end.cs</string> </dict> </dict> </dict> <key>raw-string-literal-more</key> <dict> <key>name</key> <string>string.quoted.double.cs</string> <key>begin</key> <string>"""""+</string> <key>beginCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.definition.string.begin.cs</string> </dict> </dict> <key>end</key> <string>"""""+</string> <key>endCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.definition.string.end.cs</string> </dict> </dict> </dict> <key>tuple-literal</key> <dict> <key>begin</key> <string>(\()(?=.*[:,])</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>punctuation.parenthesis.open.cs</string> </dict> </dict> <key>end</key> <string>\)</string> <key>endCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.parenthesis.close.cs</string> </dict> </dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#comment</string> </dict> <dict> <key>include</key> <string>#tuple-literal-element</string> </dict> <dict> <key>include</key> <string>#expression</string> </dict> <dict> <key>include</key> <string>#punctuation-comma</string> </dict> </array> </dict> <key>tuple-literal-element</key> <dict> <key>begin</key> <string>(?x) (@?[_[:alpha:]][_[:alnum:]]*)\s* (?=:)</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>entity.name.variable.tuple-element.cs</string> </dict> </dict> <key>end</key> <string>(:)</string> <key>endCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.separator.colon.cs</string> </dict> </dict> </dict> <key>assignment-expression</key> <dict> <key>begin</key> <string>(?:\*|/|%|\+|-|\?\?|\&|\^|<<|>>>?|\|)?=(?!=|>)</string> <key>beginCaptures</key> <dict> <key>0</key> <dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#assignment-operators</string> </dict> </array> </dict> </dict> <key>end</key> <string>(?=[,\)\];}])</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#ref-modifier</string> </dict> <dict> <key>include</key> <string>#expression</string> </dict> </array> </dict> <key>assignment-operators</key> <dict> <key>patterns</key> <array> <dict> <key>name</key> <string>keyword.operator.assignment.compound.cs</string> <key>match</key> <string>\*=|/=|%=|\+=|-=|\?\?=</string> </dict> <dict> <key>name</key> <string>keyword.operator.assignment.compound.bitwise.cs</string> <key>match</key> <string>\&=|\^=|<<=|>>>?=|\|=</string> </dict> <dict> <key>name</key> <string>keyword.operator.assignment.cs</string> <key>match</key> <string>\=</string> </dict> </array> </dict> <key>expression-operators</key> <dict> <key>patterns</key> <array> <dict> <key>name</key> <string>keyword.operator.bitwise.shift.cs</string> <key>match</key> <string><<|>>>?</string> </dict> <dict> <key>name</key> <string>keyword.operator.comparison.cs</string> <key>match</key> <string>==|!=</string> </dict> <dict> <key>name</key> <string>keyword.operator.relational.cs</string> <key>match</key> <string><=|>=|<|></string> </dict> <dict> <key>name</key> <string>keyword.operator.logical.cs</string> <key>match</key> <string>\!|&&|\|\|</string> </dict> <dict> <key>name</key> <string>keyword.operator.bitwise.cs</string> <key>match</key> <string>\&|~|\^|\|</string> </dict> <dict> <key>name</key> <string>keyword.operator.decrement.cs</string> <key>match</key> <string>--</string> </dict> <dict> <key>name</key> <string>keyword.operator.increment.cs</string> <key>match</key> <string>\+\+</string> </dict> <dict> <key>name</key> <string>keyword.operator.arithmetic.cs</string> <key>match</key> <string>\+|-(?!>)|\*|/|%</string> </dict> <dict> <key>name</key> <string>keyword.operator.null-coalescing.cs</string> <key>match</key> <string>\?\?</string> </dict> <dict> <key>name</key> <string>keyword.operator.range.cs</string> <key>match</key> <string>\.\.</string> </dict> </array> </dict> <key>with-expression</key> <dict> <key>begin</key> <string>(?<!\.)\b(with)\b\s*(?=\{|//|/\*|$)</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>keyword.operator.expression.with.cs</string> </dict> </dict> <key>end</key> <string>(?<=\})</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#comment</string> </dict> <dict> <key>include</key> <string>#initializer-expression</string> </dict> </array> </dict> <key>conditional-operator</key> <dict> <key>patterns</key> <array> <dict> <key>name</key> <string>keyword.operator.conditional.question-mark.cs</string> <key>match</key> <string>\?(?!\?|\s*[.\[])</string> </dict> <dict> <key>name</key> <string>keyword.operator.conditional.colon.cs</string> <key>match</key> <string>:</string> </dict> </array> </dict> <key>await-expression</key> <dict> <key>name</key> <string>keyword.operator.expression.await.cs</string> <key>match</key> <string>(?<!\.\s*)\b(await)\b</string> </dict> <key>parenthesized-expression</key> <dict> <key>begin</key> <string>\(</string> <key>beginCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.parenthesis.open.cs</string> </dict> </dict> <key>end</key> <string>\)</string> <key>endCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.parenthesis.close.cs</string> </dict> </dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#expression</string> </dict> </array> </dict> <key>initializer-expression</key> <dict> <key>begin</key> <string>\{</string> <key>beginCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.curlybrace.open.cs</string> </dict> </dict> <key>end</key> <string>\}</string> <key>endCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.curlybrace.close.cs</string> </dict> </dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#expression</string> </dict> <dict> <key>include</key> <string>#punctuation-comma</string> </dict> </array> </dict> <key>identifier</key> <dict> <key>name</key> <string>variable.other.readwrite.cs</string> <key>match</key> <string>@?[_[:alpha:]][_[:alnum:]]*</string> </dict> <key>cast-expression</key> <dict> <key>match</key> <string>(?x) (\()\s* (?<type_name> (?: (?: (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\s*\:\:\s*)? # alias-qualification (?<name_and_type_args> # identifier + type arguments (if any) \g<identifier>\s* (?<type_args>\s*<(?:[^<>]|\g<type_args>)+>\s*)? ) (?:\s*\.\s*\g<name_and_type_args>)* | # Are there any more names being dotted into? (?<tuple>\s*\((?:[^\(\)]|\g<tuple>)+\)) ) (?:\s*\?\s*)? # nullable suffix? (?:\s* # array suffix? \[ (?:\s*,\s*)* # commata for multi-dimensional arrays \] \s* (?:\?)? # arrays can be nullable reference types \s* )* ) )\s* (\))(?=\s*-*!*@?[_[:alnum:]\(])</string> <key>captures</key> <dict> <key>1</key> <dict> <key>name</key> <string>punctuation.parenthesis.open.cs</string> </dict> <key>2</key> <dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#type</string> </dict> </array> </dict> <key>7</key> <dict> <key>name</key> <string>punctuation.parenthesis.close.cs</string> </dict> </dict> </dict> <key>as-expression</key> <dict> <key>match</key> <string>(?x) (?<!\.)\b(as)\b\s* (?<type_name> (?: (?: (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\s*\:\:\s*)? # alias-qualification (?<name_and_type_args> # identifier + type arguments (if any) \g<identifier>\s* (?<type_args>\s*<(?:[^<>]|\g<type_args>)+>\s*)? ) (?:\s*\.\s*\g<name_and_type_args>)* | # Are there any more names being dotted into? (?<tuple>\s*\((?:[^\(\)]|\g<tuple>)+\)) ) (?:\s*\?(?!\?))? # nullable suffix? (?:\s* # array suffix? \[ \s*(?:,\s*)* # commata for multi-dimensional arrays \] (?:\s*\?(?!\?))? # arrays can be nullable reference types )* ) )?</string> <key>captures</key> <dict> <key>1</key> <dict> <key>name</key> <string>keyword.operator.expression.as.cs</string> </dict> <key>2</key> <dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#type</string> </dict> </array> </dict> </dict> </dict> <key>language-variable</key> <dict> <key>patterns</key> <array> <dict> <key>name</key> <string>variable.language.$1.cs</string> <key>match</key> <string>\b(base|this)\b</string> </dict> <dict> <key>name</key> <string>variable.other.$1.cs</string> <key>match</key> <string>\b(value)\b</string> </dict> </array> </dict> <key>invocation-expression</key> <dict> <key>begin</key> <string>(?x) (?: (?:(\?)\s*)? # preceding null-conditional operator? (\.)\s*| # preceding dot? (->)\s* # preceding pointer arrow? )? (@?[_[:alpha:]][_[:alnum:]]*)\s* # method name ( < (?<type_args> [^<>()]| \((?:[^<>()]|<[^<>()]*>|\([^<>()]*\))*\)| <\g<type_args>*> )* >\s* )? # type arguments (?=\() # open paren of argument list</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>keyword.operator.null-conditional.cs</string> </dict> <key>2</key> <dict> <key>name</key> <string>punctuation.accessor.cs</string> </dict> <key>3</key> <dict> <key>name</key> <string>punctuation.accessor.pointer.cs</string> </dict> <key>4</key> <dict> <key>name</key> <string>entity.name.function.cs</string> </dict> <key>5</key> <dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#type-arguments</string> </dict> </array> </dict> </dict> <key>end</key> <string>(?<=\))</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#argument-list</string> </dict> </array> </dict> <key>element-access-expression</key> <dict> <key>begin</key> <string>(?x) (?: (?:(\?)\s*)? # preceding null-conditional operator? (\.)\s*| # preceding dot? (->)\s* # preceding pointer arrow? )? (?:(@?[_[:alpha:]][_[:alnum:]]*)\s*)? # property name (?:(\?)\s*)? # null-conditional operator? (?=\[) # open bracket of argument list</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>keyword.operator.null-conditional.cs</string> </dict> <key>2</key> <dict> <key>name</key> <string>punctuation.accessor.cs</string> </dict> <key>3</key> <dict> <key>name</key> <string>punctuation.accessor.pointer.cs</string> </dict> <key>4</key> <dict> <key>name</key> <string>variable.other.object.property.cs</string> </dict> <key>5</key> <dict> <key>name</key> <string>keyword.operator.null-conditional.cs</string> </dict> </dict> <key>end</key> <string>(?<=\])(?!\s*\[)</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#bracketed-argument-list</string> </dict> </array> </dict> <key>member-access-expression</key> <dict> <key>patterns</key> <array> <dict> <key>match</key> <string>(?x) (?: (?:(\?)\s*)? # preceding null-conditional operator? (\.)\s*| # preceding dot? (->)\s* # preceding pointer arrow? ) (@?[_[:alpha:]][_[:alnum:]]*)\s* # property name (?![_[:alnum:]]|\(|(\?)?\[|<) # next character is not alpha-numeric, nor a (, [, or <. Also, test for ?[</string> <key>captures</key> <dict> <key>1</key> <dict> <key>name</key> <string>keyword.operator.null-conditional.cs</string> </dict> <key>2</key> <dict> <key>name</key> <string>punctuation.accessor.cs</string> </dict> <key>3</key> <dict> <key>name</key> <string>punctuation.accessor.pointer.cs</string> </dict> <key>4</key> <dict> <key>name</key> <string>variable.other.object.property.cs</string> </dict> </dict> </dict> <dict> <key>match</key> <string>(?x) (\.)?\s* (@?[_[:alpha:]][_[:alnum:]]*) (?<type_params>\s*<([^<>]|\g<type_params>)+>\s*) (?= (\s*\?)? \s*\.\s*@?[_[:alpha:]][_[:alnum:]]* )</string> <key>captures</key> <dict> <key>1</key> <dict> <key>name</key> <string>punctuation.accessor.cs</string> </dict> <key>2</key> <dict> <key>name</key> <string>variable.other.object.cs</string> </dict> <key>3</key> <dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#type-arguments</string> </dict> </array> </dict> </dict> </dict> <dict> <key>match</key> <string>(?x) (@?[_[:alpha:]][_[:alnum:]]*) (?= \s*(?:(?:\?\s*)?\.|->) \s*@?[_[:alpha:]][_[:alnum:]]* )</string> <key>captures</key> <dict> <key>1</key> <dict> <key>name</key> <string>variable.other.object.cs</string> </dict> </dict> </dict> </array> </dict> <key>object-creation-expression</key> <dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#object-creation-expression-with-parameters</string> </dict> <dict> <key>include</key> <string>#object-creation-expression-with-no-parameters</string> </dict> </array> </dict> <key>object-creation-expression-with-parameters</key> <dict> <key>begin</key> <string>(?x) (new)(?:\s+ (?<type_name> (?: (?: (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\s*\:\:\s*)? # alias-qualification (?<name_and_type_args> # identifier + type arguments (if any) \g<identifier>\s* (?<type_args>\s*<(?:[^<>]|\g<type_args>)+>\s*)? ) (?:\s*\.\s*\g<name_and_type_args>)* | # Are there any more names being dotted into? (?<tuple>\s*\((?:[^\(\)]|\g<tuple>)+\)) ) (?:\s*\?\s*)? # nullable suffix? (?:\s* # array suffix? \[ (?:\s*,\s*)* # commata for multi-dimensional arrays \] \s* (?:\?)? # arrays can be nullable reference types \s* )* ) ))?\s* (?=\()</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>keyword.operator.expression.new.cs</string> </dict> <key>2</key> <dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#type</string> </dict> </array> </dict> </dict> <key>end</key> <string>(?<=\))</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#argument-list</string> </dict> </array> </dict> <key>object-creation-expression-with-no-parameters</key> <dict> <key>match</key> <string>(?x) (new)\s+ (?<type_name> (?: (?: (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\s*\:\:\s*)? # alias-qualification (?<name_and_type_args> # identifier + type arguments (if any) \g<identifier>\s* (?<type_args>\s*<(?:[^<>]|\g<type_args>)+>\s*)? ) (?:\s*\.\s*\g<name_and_type_args>)* | # Are there any more names being dotted into? (?<tuple>\s*\((?:[^\(\)]|\g<tuple>)+\)) ) (?:\s*\?\s*)? # nullable suffix? (?:\s* # array suffix? \[ (?:\s*,\s*)* # commata for multi-dimensional arrays \] \s* (?:\?)? # arrays can be nullable reference types \s* )* ) )\s* (?=\{|//|/\*|$)</string> <key>captures</key> <dict> <key>1</key> <dict> <key>name</key> <string>keyword.operator.expression.new.cs</string> </dict> <key>2</key> <dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#type</string> </dict> </array> </dict> </dict> </dict> <key>array-creation-expression</key> <dict> <key>begin</key> <string>(?x) \b(new|stackalloc)\b\s* (?<type_name> (?: (?: (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\s*\:\:\s*)? # alias-qualification (?<name_and_type_args> # identifier + type arguments (if any) \g<identifier>\s* (?<type_args>\s*<(?:[^<>]|\g<type_args>)+>\s*)? ) (?:\s*\.\s*\g<name_and_type_args>)* | # Are there any more names being dotted into? (?<tuple>\s*\((?:[^\(\)]|\g<tuple>)+\)) ) (?:\s*\?\s*)? # nullable suffix? (?:\s* # array suffix? \[ (?:\s*,\s*)* # commata for multi-dimensional arrays \] \s* (?:\?)? # arrays can be nullable reference types \s* )* ) )?\s* (?=\[)</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>keyword.operator.expression.$1.cs</string> </dict> <key>2</key> <dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#type</string> </dict> </array> </dict> </dict> <key>end</key> <string>(?<=\])</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#bracketed-argument-list</string> </dict> </array> </dict> <key>anonymous-object-creation-expression</key> <dict> <key>begin</key> <string>\b(new)\b\s*(?=\{|//|/\*|$)</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>keyword.operator.expression.new.cs</string> </dict> </dict> <key>end</key> <string>(?<=\})</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#comment</string> </dict> <dict> <key>include</key> <string>#initializer-expression</string> </dict> </array> </dict> <key>bracketed-parameter-list</key> <dict> <key>begin</key> <string>(?=(\[))</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>punctuation.squarebracket.open.cs</string> </dict> </dict> <key>end</key> <string>(?=(\]))</string> <key>endCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>punctuation.squarebracket.close.cs</string> </dict> </dict> <key>patterns</key> <array> <dict> <key>begin</key> <string>(?<=\[)</string> <key>end</key> <string>(?=\])</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#comment</string> </dict> <dict> <key>include</key> <string>#attribute-section</string> </dict> <dict> <key>include</key> <string>#parameter</string> </dict> <dict> <key>include</key> <string>#punctuation-comma</string> </dict> <dict> <key>include</key> <string>#variable-initializer</string> </dict> </array> </dict> </array> </dict> <key>parenthesized-parameter-list</key> <dict> <key>begin</key> <string>(\()</string> <key>beginCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.parenthesis.open.cs</string> </dict> </dict> <key>end</key> <string>(\))</string> <key>endCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.parenthesis.close.cs</string> </dict> </dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#comment</string> </dict> <dict> <key>include</key> <string>#attribute-section</string> </dict> <dict> <key>include</key> <string>#parameter</string> </dict> <dict> <key>include</key> <string>#punctuation-comma</string> </dict> <dict> <key>include</key> <string>#variable-initializer</string> </dict> </array> </dict> <key>parameter</key> <dict> <key>match</key> <string>(?x) (?:(?:\b(ref|params|out|in|this)\b)\s+)? (?<type_name> (?: (?:ref\s+)? # ref return (?: (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\s*\:\:\s*)? # alias-qualification (?<name_and_type_args> # identifier + type arguments (if any) \g<identifier>\s* (?<type_args>\s*<(?:[^<>]|\g<type_args>)+>\s*)? ) (?:\s*\.\s*\g<name_and_type_args>)* | # Are there any more names being dotted into? (?<tuple>\s*\((?:[^()]|\g<tuple>)+\)) ) (?:\s*\?\s*)? # nullable suffix? (?:\s* # array suffix? \[ (?:\s*,\s*)* # commata for multi-dimensional arrays \] \s* (?:\?)? # arrays can be nullable reference types \s* )* ) )\s+ (\g<identifier>)</string> <key>captures</key> <dict> <key>1</key> <dict> <key>name</key> <string>storage.modifier.$1.cs</string> </dict> <key>2</key> <dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#type</string> </dict> </array> </dict> <key>7</key> <dict> <key>name</key> <string>entity.name.variable.parameter.cs</string> </dict> </dict> </dict> <key>argument-list</key> <dict> <key>begin</key> <string>\(</string> <key>beginCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.parenthesis.open.cs</string> </dict> </dict> <key>end</key> <string>\)</string> <key>endCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.parenthesis.close.cs</string> </dict> </dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#named-argument</string> </dict> <dict> <key>include</key> <string>#argument</string> </dict> <dict> <key>include</key> <string>#punctuation-comma</string> </dict> </array> </dict> <key>bracketed-argument-list</key> <dict> <key>begin</key> <string>\[</string> <key>beginCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.squarebracket.open.cs</string> </dict> </dict> <key>end</key> <string>\]</string> <key>endCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.squarebracket.close.cs</string> </dict> </dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#named-argument</string> </dict> <dict> <key>include</key> <string>#argument</string> </dict> <dict> <key>include</key> <string>#punctuation-comma</string> </dict> </array> </dict> <key>named-argument</key> <dict> <key>begin</key> <string>(@?[_[:alpha:]][_[:alnum:]]*)\s*(:)</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>entity.name.variable.parameter.cs</string> </dict> <key>2</key> <dict> <key>name</key> <string>punctuation.separator.colon.cs</string> </dict> </dict> <key>end</key> <string>(?=(,|\)|\]))</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#argument</string> </dict> </array> </dict> <key>argument</key> <dict> <key>patterns</key> <array> <dict> <key>name</key> <string>storage.modifier.$1.cs</string> <key>match</key> <string>\b(ref|in)\b</string> </dict> <dict> <key>begin</key> <string>\b(out)\b</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>storage.modifier.out.cs</string> </dict> </dict> <key>end</key> <string>(?=,|\)|\])</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#declaration-expression-local</string> </dict> <dict> <key>include</key> <string>#expression</string> </dict> </array> </dict> <dict> <key>include</key> <string>#expression</string> </dict> </array> </dict> <key>query-expression</key> <dict> <key>begin</key> <string>(?x) \b(from)\b\s* (?<type_name> (?: (?: (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\s*\:\:\s*)? # alias-qualification (?<name_and_type_args> # identifier + type arguments (if any) \g<identifier>\s* (?<type_args>\s*<(?:[^<>]|\g<type_args>)+>\s*)? ) (?:\s*\.\s*\g<name_and_type_args>)* | # Are there any more names being dotted into? (?<tuple>\s*\((?:[^\(\)]|\g<tuple>)+\)) ) (?:\s*\?\s*)? # nullable suffix? (?:\s* # array suffix? \[ (?:\s*,\s*)* # commata for multi-dimensional arrays \] \s* (?:\?)? # arrays can be nullable reference types \s* )* ) )? \s+(\g<identifier>)\b\s* \b(in)\b\s*</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>keyword.operator.expression.query.from.cs</string> </dict> <key>2</key> <dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#type</string> </dict> </array> </dict> <key>7</key> <dict> <key>name</key> <string>entity.name.variable.range-variable.cs</string> </dict> <key>8</key> <dict> <key>name</key> <string>keyword.operator.expression.query.in.cs</string> </dict> </dict> <key>end</key> <string>(?=;|\))</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#query-body</string> </dict> <dict> <key>include</key> <string>#expression</string> </dict> </array> </dict> <key>query-body</key> <dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#let-clause</string> </dict> <dict> <key>include</key> <string>#where-clause</string> </dict> <dict> <key>include</key> <string>#join-clause</string> </dict> <dict> <key>include</key> <string>#orderby-clause</string> </dict> <dict> <key>include</key> <string>#select-clause</string> </dict> <dict> <key>include</key> <string>#group-clause</string> </dict> </array> </dict> <key>let-clause</key> <dict> <key>begin</key> <string>(?x) \b(let)\b\s* (@?[_[:alpha:]][_[:alnum:]]*)\b\s* (=)\s*</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>keyword.operator.expression.query.let.cs</string> </dict> <key>2</key> <dict> <key>name</key> <string>entity.name.variable.range-variable.cs</string> </dict> <key>3</key> <dict> <key>name</key> <string>keyword.operator.assignment.cs</string> </dict> </dict> <key>end</key> <string>(?=;|\))</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#query-body</string> </dict> <dict> <key>include</key> <string>#expression</string> </dict> </array> </dict> <key>where-clause</key> <dict> <key>begin</key> <string>(?x) \b(where)\b\s*</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>keyword.operator.expression.query.where.cs</string> </dict> </dict> <key>end</key> <string>(?=;|\))</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#query-body</string> </dict> <dict> <key>include</key> <string>#expression</string> </dict> </array> </dict> <key>join-clause</key> <dict> <key>begin</key> <string>(?x) \b(join)\b\s* (?<type_name> (?: (?: (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\s*\:\:\s*)? # alias-qualification (?<name_and_type_args> # identifier + type arguments (if any) \g<identifier>\s* (?<type_args>\s*<(?:[^<>]|\g<type_args>)+>\s*)? ) (?:\s*\.\s*\g<name_and_type_args>)* | # Are there any more names being dotted into? (?<tuple>\s*\((?:[^\(\)]|\g<tuple>)+\)) ) (?:\s*\?\s*)? # nullable suffix? (?:\s* # array suffix? \[ (?:\s*,\s*)* # commata for multi-dimensional arrays \] \s* (?:\?)? # arrays can be nullable reference types \s* )* ) )? \s+(\g<identifier>)\b\s* \b(in)\b\s*</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>keyword.operator.expression.query.join.cs</string> </dict> <key>2</key> <dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#type</string> </dict> </array> </dict> <key>7</key> <dict> <key>name</key> <string>entity.name.variable.range-variable.cs</string> </dict> <key>8</key> <dict> <key>name</key> <string>keyword.operator.expression.query.in.cs</string> </dict> </dict> <key>end</key> <string>(?=;|\))</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#join-on</string> </dict> <dict> <key>include</key> <string>#join-equals</string> </dict> <dict> <key>include</key> <string>#join-into</string> </dict> <dict> <key>include</key> <string>#query-body</string> </dict> <dict> <key>include</key> <string>#expression</string> </dict> </array> </dict> <key>join-on</key> <dict> <key>match</key> <string>\b(on)\b\s*</string> <key>captures</key> <dict> <key>1</key> <dict> <key>name</key> <string>keyword.operator.expression.query.on.cs</string> </dict> </dict> </dict> <key>join-equals</key> <dict> <key>match</key> <string>\b(equals)\b\s*</string> <key>captures</key> <dict> <key>1</key> <dict> <key>name</key> <string>keyword.operator.expression.query.equals.cs</string> </dict> </dict> </dict> <key>join-into</key> <dict> <key>match</key> <string>(?x) \b(into)\b\s* (@?[_[:alpha:]][_[:alnum:]]*)\b\s*</string> <key>captures</key> <dict> <key>1</key> <dict> <key>name</key> <string>keyword.operator.expression.query.into.cs</string> </dict> <key>2</key> <dict> <key>name</key> <string>entity.name.variable.range-variable.cs</string> </dict> </dict> </dict> <key>orderby-clause</key> <dict> <key>begin</key> <string>\b(orderby)\b\s*</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>keyword.operator.expression.query.orderby.cs</string> </dict> </dict> <key>end</key> <string>(?=;|\))</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#ordering-direction</string> </dict> <dict> <key>include</key> <string>#query-body</string> </dict> <dict> <key>include</key> <string>#expression</string> </dict> <dict> <key>include</key> <string>#punctuation-comma</string> </dict> </array> </dict> <key>ordering-direction</key> <dict> <key>match</key> <string>\b(ascending|descending)\b</string> <key>captures</key> <dict> <key>1</key> <dict> <key>name</key> <string>keyword.operator.expression.query.$1.cs</string> </dict> </dict> </dict> <key>select-clause</key> <dict> <key>begin</key> <string>\b(select)\b\s*</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>keyword.operator.expression.query.select.cs</string> </dict> </dict> <key>end</key> <string>(?=;|\))</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#query-body</string> </dict> <dict> <key>include</key> <string>#expression</string> </dict> </array> </dict> <key>group-clause</key> <dict> <key>begin</key> <string>\b(group)\b\s*</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>keyword.operator.expression.query.group.cs</string> </dict> </dict> <key>end</key> <string>(?=;|\))</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#group-by</string> </dict> <dict> <key>include</key> <string>#group-into</string> </dict> <dict> <key>include</key> <string>#query-body</string> </dict> <dict> <key>include</key> <string>#expression</string> </dict> </array> </dict> <key>group-by</key> <dict> <key>match</key> <string>\b(by)\b\s*</string> <key>captures</key> <dict> <key>1</key> <dict> <key>name</key> <string>keyword.operator.expression.query.by.cs</string> </dict> </dict> </dict> <key>group-into</key> <dict> <key>match</key> <string>(?x) \b(into)\b\s* (@?[_[:alpha:]][_[:alnum:]]*)\b\s*</string> <key>captures</key> <dict> <key>1</key> <dict> <key>name</key> <string>keyword.operator.expression.query.into.cs</string> </dict> <key>2</key> <dict> <key>name</key> <string>entity.name.variable.range-variable.cs</string> </dict> </dict> </dict> <key>anonymous-method-expression</key> <dict> <key>patterns</key> <array> <dict> <key>begin</key> <string>(?x) ((?:\b(?:async|static)\b\s*)*) (?: (@?[_[:alpha:]][_[:alnum:]]*)\b| (\() (?<tuple>(?:[^()]|\(\g<tuple>\))*) (\)) )\s* (=>)</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>patterns</key> <array> <dict> <key>match</key> <string>async|static</string> <key>name</key> <string>storage.modifier.$0.cs</string> </dict> </array> </dict> <key>2</key> <dict> <key>name</key> <string>entity.name.variable.parameter.cs</string> </dict> <key>3</key> <dict> <key>name</key> <string>punctuation.parenthesis.open.cs</string> </dict> <key>4</key> <dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#comment</string> </dict> <dict> <key>include</key> <string>#explicit-anonymous-function-parameter</string> </dict> <dict> <key>include</key> <string>#implicit-anonymous-function-parameter</string> </dict> <dict> <key>include</key> <string>#default-argument</string> </dict> <dict> <key>include</key> <string>#punctuation-comma</string> </dict> </array> </dict> <key>5</key> <dict> <key>name</key> <string>punctuation.parenthesis.close.cs</string> </dict> <key>6</key> <dict> <key>name</key> <string>keyword.operator.arrow.cs</string> </dict> </dict> <key>end</key> <string>(?=[,;)}])</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#intrusive</string> </dict> <dict> <key>begin</key> <string>(?={)</string> <key>end</key> <string>(?=[,;)}])</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#block</string> </dict> <dict> <key>include</key> <string>#intrusive</string> </dict> </array> </dict> <dict> <key>begin</key> <string>\b(ref)\b|(?=\S)</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>storage.modifier.ref.cs</string> </dict> </dict> <key>end</key> <string>(?=[,;)}])</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#expression</string> </dict> </array> </dict> </array> </dict> <dict> <key>begin</key> <string>(?x) ((?:\b(?:async|static)\b\s*)*) \b(delegate)\b\s*</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>patterns</key> <array> <dict> <key>match</key> <string>async|static</string> <key>name</key> <string>storage.modifier.$0.cs</string> </dict> </array> </dict> <key>2</key> <dict> <key>name</key> <string>storage.type.delegate.cs</string> </dict> </dict> <key>end</key> <string>(?<=})|(?=[,;)}])</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#intrusive</string> </dict> <dict> <key>begin</key> <string>\(</string> <key>beginCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.parenthesis.open.cs</string> </dict> </dict> <key>end</key> <string>\)</string> <key>endCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.parenthesis.close.cs</string> </dict> </dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#intrusive</string> </dict> <dict> <key>include</key> <string>#explicit-anonymous-function-parameter</string> </dict> <dict> <key>include</key> <string>#punctuation-comma</string> </dict> </array> </dict> <dict> <key>include</key> <string>#block</string> </dict> </array> </dict> </array> </dict> <key>explicit-anonymous-function-parameter</key> <dict> <key>match</key> <string>(?x) (?:\b(ref|params|out|in)\b\s*)? (?<type_name> (?: (?: (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\s*\:\:\s*)? # alias-qualification (?<name_and_type_args> # identifier + type arguments (if any) \g<identifier>\s* (?<type_args><(?:[^<>]|\g<type_args>)*>\s*)? ) (?:\s*\.\s*\g<name_and_type_args>)* | # Are there any more names being dotted into? (?<tuple>\s*\((?:[^()]|\g<tuple>)*\)) ) (?:\s*\?\s*)? # nullable suffix? (?:\s* # array suffix? \[ (?:\s*,\s*)* # commata for multi-dimensional arrays \] \s* (?:\?)? # arrays can be nullable reference types \s* )* ) )\s* \b(\g<identifier>)\b</string> <key>captures</key> <dict> <key>1</key> <dict> <key>name</key> <string>storage.modifier.$1.cs</string> </dict> <key>2</key> <dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#type</string> </dict> </array> </dict> <key>7</key> <dict> <key>name</key> <string>entity.name.variable.parameter.cs</string> </dict> </dict> </dict> <key>implicit-anonymous-function-parameter</key> <dict> <key>match</key> <string>\@?[_[:alpha:]][_[:alnum:]]*\b</string> <key>name</key> <string>entity.name.variable.parameter.cs</string> </dict> <key>default-argument</key> <dict> <key>begin</key> <string>=</string> <key>beginCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>keyword.operator.assignment.cs</string> </dict> </dict> <key>end</key> <string>(?=,|\))</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#expression</string> </dict> </array> </dict> <key>type</key> <dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#comment</string> </dict> <dict> <key>include</key> <string>#ref-modifier</string> </dict> <dict> <key>include</key> <string>#readonly-modifier</string> </dict> <dict> <key>include</key> <string>#tuple-type</string> </dict> <dict> <key>include</key> <string>#type-builtin</string> </dict> <dict> <key>include</key> <string>#type-name</string> </dict> <dict> <key>include</key> <string>#type-arguments</string> </dict> <dict> <key>include</key> <string>#type-array-suffix</string> </dict> <dict> <key>include</key> <string>#type-nullable-suffix</string> </dict> <dict> <key>include</key> <string>#type-pointer-suffix</string> </dict> </array> </dict> <key>ref-modifier</key> <dict> <key>name</key> <string>storage.modifier.ref.cs</string> <key>match</key> <string>\bref\b</string> </dict> <key>readonly-modifier</key> <dict> <key>name</key> <string>storage.modifier.readonly.cs</string> <key>match</key> <string>\breadonly\b</string> </dict> <key>tuple-type</key> <dict> <key>begin</key> <string>\(</string> <key>beginCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.parenthesis.open.cs</string> </dict> </dict> <key>end</key> <string>\)</string> <key>endCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.parenthesis.close.cs</string> </dict> </dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#tuple-element</string> </dict> <dict> <key>include</key> <string>#punctuation-comma</string> </dict> </array> </dict> <key>tuple-element</key> <dict> <key>match</key> <string>(?x) (?<type_name> (?: (?: (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\s*\:\:\s*)? # alias-qualification (?<name_and_type_args> # identifier + type arguments (if any) \g<identifier>\s* (?<type_args>\s*<(?:[^<>]|\g<type_args>)+>\s*)? ) (?:\s*\.\s*\g<name_and_type_args>)* | # Are there any more names being dotted into? (?<tuple>\s*\((?:[^\(\)]|\g<tuple>)+\)) ) (?:\s*\?\s*)? # nullable suffix? (?:\s* # array suffix? \[ (?:\s*,\s*)* # commata for multi-dimensional arrays \] \s* (?:\?)? # arrays can be nullable reference types \s* )* ) ) (?:(?<tuple_name>\g<identifier>)\b)?</string> <key>captures</key> <dict> <key>1</key> <dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#type</string> </dict> </array> </dict> <key>6</key> <dict> <key>name</key> <string>entity.name.variable.tuple-element.cs</string> </dict> </dict> </dict> <key>type-builtin</key> <dict> <key>match</key> <string>\b(bool|s?byte|u?short|n?u?int|u?long|float|double|decimal|char|string|object|void|dynamic)\b</string> <key>captures</key> <dict> <key>1</key> <dict> <key>name</key> <string>keyword.type.$1.cs</string> </dict> </dict> </dict> <key>type-name</key> <dict> <key>patterns</key> <array> <dict> <key>match</key> <string>(@?[_[:alpha:]][_[:alnum:]]*)\s*(\:\:)</string> <key>captures</key> <dict> <key>1</key> <dict> <key>name</key> <string>entity.name.type.alias.cs</string> </dict> <key>2</key> <dict> <key>name</key> <string>punctuation.separator.coloncolon.cs</string> </dict> </dict> </dict> <dict> <key>match</key> <string>(@?[_[:alpha:]][_[:alnum:]]*)\s*(\.)</string> <key>captures</key> <dict> <key>1</key> <dict> <key>name</key> <string>entity.name.type.cs</string> </dict> <key>2</key> <dict> <key>name</key> <string>punctuation.accessor.cs</string> </dict> </dict> </dict> <dict> <key>match</key> <string>(\.)\s*(@?[_[:alpha:]][_[:alnum:]]*)</string> <key>captures</key> <dict> <key>1</key> <dict> <key>name</key> <string>punctuation.accessor.cs</string> </dict> <key>2</key> <dict> <key>name</key> <string>entity.name.type.cs</string> </dict> </dict> </dict> <dict> <key>name</key> <string>entity.name.type.cs</string> <key>match</key> <string>@?[_[:alpha:]][_[:alnum:]]*</string> </dict> </array> </dict> <key>type-arguments</key> <dict> <key>begin</key> <string><</string> <key>beginCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.definition.typeparameters.begin.cs</string> </dict> </dict> <key>end</key> <string>></string> <key>endCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.definition.typeparameters.end.cs</string> </dict> </dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#type</string> </dict> <dict> <key>include</key> <string>#punctuation-comma</string> </dict> </array> </dict> <key>type-array-suffix</key> <dict> <key>begin</key> <string>\[</string> <key>beginCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.squarebracket.open.cs</string> </dict> </dict> <key>end</key> <string>\]</string> <key>endCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.squarebracket.close.cs</string> </dict> </dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#intrusive</string> </dict> <dict> <key>include</key> <string>#punctuation-comma</string> </dict> </array> </dict> <key>type-nullable-suffix</key> <dict> <key>match</key> <string>\?</string> <key>name</key> <string>punctuation.separator.question-mark.cs</string> </dict> <key>type-pointer-suffix</key> <dict> <key>match</key> <string>\*</string> <key>name</key> <string>punctuation.separator.asterisk.cs</string> </dict> <key>operator-assignment</key> <dict> <key>name</key> <string>keyword.operator.assignment.cs</string> <key>match</key> <string>(?<!=|!)(=)(?!=)</string> </dict> <key>punctuation-comma</key> <dict> <key>name</key> <string>punctuation.separator.comma.cs</string> <key>match</key> <string>,</string> </dict> <key>punctuation-semicolon</key> <dict> <key>name</key> <string>punctuation.terminator.statement.cs</string> <key>match</key> <string>;</string> </dict> <key>punctuation-accessor</key> <dict> <key>name</key> <string>punctuation.accessor.cs</string> <key>match</key> <string>\.</string> </dict> <key>intrusive</key> <dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#preprocessor</string> </dict> <dict> <key>include</key> <string>#comment</string> </dict> </array> </dict> <key>preprocessor</key> <dict> <key>name</key> <string>meta.preprocessor.cs</string> <key>begin</key> <string>^\s*(\#)\s*</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>punctuation.separator.hash.cs</string> </dict> </dict> <key>end</key> <string>(?<=$)</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#comment</string> </dict> <dict> <key>include</key> <string>#preprocessor-define-or-undef</string> </dict> <dict> <key>include</key> <string>#preprocessor-if-or-elif</string> </dict> <dict> <key>include</key> <string>#preprocessor-else-or-endif</string> </dict> <dict> <key>include</key> <string>#preprocessor-warning-or-error</string> </dict> <dict> <key>include</key> <string>#preprocessor-region</string> </dict> <dict> <key>include</key> <string>#preprocessor-endregion</string> </dict> <dict> <key>include</key> <string>#preprocessor-load</string> </dict> <dict> <key>include</key> <string>#preprocessor-r</string> </dict> <dict> <key>include</key> <string>#preprocessor-line</string> </dict> <dict> <key>include</key> <string>#preprocessor-pragma-warning</string> </dict> <dict> <key>include</key> <string>#preprocessor-pragma-checksum</string> </dict> </array> </dict> <key>preprocessor-define-or-undef</key> <dict> <key>match</key> <string>\b(?:(define)|(undef))\b\s*\b([_[:alpha:]][_[:alnum:]]*)\b</string> <key>captures</key> <dict> <key>1</key> <dict> <key>name</key> <string>keyword.preprocessor.define.cs</string> </dict> <key>2</key> <dict> <key>name</key> <string>keyword.preprocessor.undef.cs</string> </dict> <key>3</key> <dict> <key>name</key> <string>entity.name.variable.preprocessor.symbol.cs</string> </dict> </dict> </dict> <key>preprocessor-if-or-elif</key> <dict> <key>begin</key> <string>\b(?:(if)|(elif))\b</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>keyword.preprocessor.if.cs</string> </dict> <key>2</key> <dict> <key>name</key> <string>keyword.preprocessor.elif.cs</string> </dict> </dict> <key>end</key> <string>(?=$)</string> <key>patterns</key> <array> <dict> <key>include</key> <string>#comment</string> </dict> <dict> <key>include</key> <string>#preprocessor-expression</string> </dict> </array> </dict> <key>preprocessor-else-or-endif</key> <dict> <key>match</key> <string>\b(?:(else)|(endif))\b</string> <key>captures</key> <dict> <key>1</key> <dict> <key>name</key> <string>keyword.preprocessor.else.cs</string> </dict> <key>2</key> <dict> <key>name</key> <string>keyword.preprocessor.endif.cs</string> </dict> </dict> </dict> <key>preprocessor-warning-or-error</key> <dict> <key>match</key> <string>\b(?:(warning)|(error))\b\s*(.*)(?=$)</string> <key>captures</key> <dict> <key>1</key> <dict> <key>name</key> <string>keyword.preprocessor.warning.cs</string> </dict> <key>2</key> <dict> <key>name</key> <string>keyword.preprocessor.error.cs</string> </dict> <key>3</key> <dict> <key>name</key> <string>string.unquoted.preprocessor.message.cs</string> </dict> </dict> </dict> <key>preprocessor-load</key> <dict> <key>begin</key> <string>\b(load)\b</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>keyword.preprocessor.load.cs</string> </dict> </dict> <key>end</key> <string>(?=$)</string> <key>patterns</key> <array> <dict> <key>match</key> <string>\"[^"]*\"</string> <key>captures</key> <dict> <key>0</key> <dict> <key>name</key> <string>string.quoted.double.cs</string> </dict> </dict> </dict> </array> </dict> <key>preprocessor-r</key> <dict> <key>begin</key> <string>\b(r)\b</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>keyword.preprocessor.r.cs</string> </dict> </dict> <key>end</key> <string>(?=$)</string> <key>patterns</key> <array> <dict> <key>match</key> <string>\"[^"]*\"</string> <key>captures</key> <dict> <key>0</key> <dict> <key>name</key> <string>string.quoted.double.cs</string> </dict> </dict> </dict> </array> </dict> <key>preprocessor-region</key> <dict> <key>match</key> <string>\b(region)\b\s*(.*)(?=$)</string> <key>captures</key> <dict> <key>1</key> <dict> <key>name</key> <string>keyword.preprocessor.region.cs</string> </dict> <key>2</key> <dict> <key>name</key> <string>string.unquoted.preprocessor.message.cs</string> </dict> </dict> </dict> <key>preprocessor-endregion</key> <dict> <key>match</key> <string>\b(endregion)\b</string> <key>captures</key> <dict> <key>1</key> <dict> <key>name</key> <string>keyword.preprocessor.endregion.cs</string> </dict> </dict> </dict> <key>preprocessor-line</key> <dict> <key>begin</key> <string>\b(line)\b</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>keyword.preprocessor.line.cs</string> </dict> </dict> <key>end</key> <string>(?=$)</string> <key>patterns</key> <array> <dict> <key>match</key> <string>\b(?:(default|hidden))</string> <key>captures</key> <dict> <key>1</key> <dict> <key>name</key> <string>keyword.preprocessor.default.cs</string> </dict> <key>2</key> <dict> <key>name</key> <string>keyword.preprocessor.hidden.cs</string> </dict> </dict> </dict> <dict> <key>match</key> <string>[0-9]+</string> <key>captures</key> <dict> <key>0</key> <dict> <key>name</key> <string>constant.numeric.decimal.cs</string> </dict> </dict> </dict> <dict> <key>match</key> <string>\"[^"]*\"</string> <key>captures</key> <dict> <key>0</key> <dict> <key>name</key> <string>string.quoted.double.cs</string> </dict> </dict> </dict> </array> </dict> <key>preprocessor-pragma-warning</key> <dict> <key>match</key> <string>\b(pragma)\b\s*\b(warning)\b\s*\b(?:(disable)|(restore))\b(\s*[0-9]+(?:\s*,\s*[0-9]+)?)?</string> <key>captures</key> <dict> <key>1</key> <dict> <key>name</key> <string>keyword.preprocessor.pragma.cs</string> </dict> <key>2</key> <dict> <key>name</key> <string>keyword.preprocessor.warning.cs</string> </dict> <key>3</key> <dict> <key>name</key> <string>keyword.preprocessor.disable.cs</string> </dict> <key>4</key> <dict> <key>name</key> <string>keyword.preprocessor.restore.cs</string> </dict> <key>5</key> <dict> <key>patterns</key> <array> <dict> <key>match</key> <string>[0-9]+</string> <key>captures</key> <dict> <key>0</key> <dict> <key>name</key> <string>constant.numeric.decimal.cs</string> </dict> </dict> </dict> <dict> <key>include</key> <string>#punctuation-comma</string> </dict> </array> </dict> </dict> </dict> <key>preprocessor-pragma-checksum</key> <dict> <key>match</key> <string>\b(pragma)\b\s*\b(checksum)\b\s*(\"[^"]*\")\s*(\"[^"]*\")\s*(\"[^"]*\")</string> <key>captures</key> <dict> <key>1</key> <dict> <key>name</key> <string>keyword.preprocessor.pragma.cs</string> </dict> <key>2</key> <dict> <key>name</key> <string>keyword.preprocessor.checksum.cs</string> </dict> <key>3</key> <dict> <key>name</key> <string>string.quoted.double.cs</string> </dict> <key>4</key> <dict> <key>name</key> <string>string.quoted.double.cs</string> </dict> <key>5</key> <dict> <key>name</key> <string>string.quoted.double.cs</string> </dict> </dict> </dict> <key>preprocessor-expression</key> <dict> <key>patterns</key> <array> <dict> <key>begin</key> <string>\(</string> <key>beginCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.parenthesis.open.cs</string> </dict> </dict> <key>end</key> <string>\)</string> <key>endCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.parenthesis.close.cs</string> </dict> </dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#preprocessor-expression</string> </dict> </array> </dict> <dict> <key>match</key> <string>\b(?:(true)|(false)|([_[:alpha:]][_[:alnum:]]*))\b</string> <key>captures</key> <dict> <key>1</key> <dict> <key>name</key> <string>constant.language.boolean.true.cs</string> </dict> <key>2</key> <dict> <key>name</key> <string>constant.language.boolean.false.cs</string> </dict> <key>3</key> <dict> <key>name</key> <string>entity.name.variable.preprocessor.symbol.cs</string> </dict> </dict> </dict> <dict> <key>match</key> <string>(==|!=)|(\!|&&|\|\|)</string> <key>captures</key> <dict> <key>1</key> <dict> <key>name</key> <string>keyword.operator.comparison.cs</string> </dict> <key>2</key> <dict> <key>name</key> <string>keyword.operator.logical.cs</string> </dict> </dict> </dict> </array> </dict> <key>comment</key> <dict> <key>patterns</key> <array> <dict> <key>name</key> <string>comment.block.documentation.cs</string> <key>begin</key> <string>(^\s+)?(///)(?!/)</string> <key>while</key> <string>^(\s*)(///)(?!/)</string> <key>captures</key> <dict> <key>1</key> <dict> <key>name</key> <string>punctuation.whitespace.comment.leading.cs</string> </dict> <key>2</key> <dict> <key>name</key> <string>punctuation.definition.comment.cs</string> </dict> </dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#xml-doc-comment</string> </dict> </array> </dict> <dict> <key>name</key> <string>comment.block.documentation.cs</string> <key>begin</key> <string>(^\s+)?(/\*\*)(?!/)</string> <key>end</key> <string>(^\s+)?(\*/)</string> <key>captures</key> <dict> <key>1</key> <dict> <key>name</key> <string>punctuation.whitespace.comment.leading.cs</string> </dict> <key>2</key> <dict> <key>name</key> <string>punctuation.definition.comment.cs</string> </dict> </dict> <key>patterns</key> <array> <dict> <key>begin</key> <string>\G(?=(?~\*/)$)</string> <key>while</key> <string>^(\s*+)(\*(?!/))?(?=(?~\*/)$)</string> <key>whileCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>punctuation.whitespace.comment.leading.cs</string> </dict> <key>2</key> <dict> <key>name</key> <string>punctuation.definition.comment.cs</string> </dict> </dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#xml-doc-comment</string> </dict> </array> </dict> <dict> <key>include</key> <string>#xml-doc-comment</string> </dict> </array> </dict> <dict> <key>name</key> <string>comment.line.double-slash.cs</string> <key>begin</key> <string>(^\s+)?(//).*$</string> <key>while</key> <string>^(\s*)(//).*$</string> <key>captures</key> <dict> <key>1</key> <dict> <key>name</key> <string>punctuation.whitespace.comment.leading.cs</string> </dict> <key>2</key> <dict> <key>name</key> <string>punctuation.definition.comment.cs</string> </dict> </dict> </dict> <dict> <key>name</key> <string>comment.block.cs</string> <key>begin</key> <string>/\*</string> <key>end</key> <string>\*/</string> <key>captures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.definition.comment.cs</string> </dict> </dict> </dict> </array> </dict> <key>xml-doc-comment</key> <dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#xml-comment</string> </dict> <dict> <key>include</key> <string>#xml-character-entity</string> </dict> <dict> <key>include</key> <string>#xml-cdata</string> </dict> <dict> <key>include</key> <string>#xml-tag</string> </dict> </array> </dict> <key>xml-tag</key> <dict> <key>name</key> <string>meta.tag.cs</string> <key>begin</key> <string>(?x) (</?) ( (?: ([-_[:alnum:]]+) (:) )? ([-_[:alnum:]]+) )</string> <key>beginCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>punctuation.definition.tag.cs</string> </dict> <key>2</key> <dict> <key>name</key> <string>entity.name.tag.cs</string> </dict> <key>3</key> <dict> <key>name</key> <string>entity.name.tag.namespace.cs</string> </dict> <key>4</key> <dict> <key>name</key> <string>punctuation.separator.colon.cs</string> </dict> <key>5</key> <dict> <key>name</key> <string>entity.name.tag.localname.cs</string> </dict> </dict> <key>end</key> <string>(/?>)</string> <key>endCaptures</key> <dict> <key>1</key> <dict> <key>name</key> <string>punctuation.definition.tag.cs</string> </dict> </dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#xml-attribute</string> </dict> </array> </dict> <key>xml-attribute</key> <dict> <key>patterns</key> <array> <dict> <key>match</key> <string>(?x) (?:^|\s+) ( (?: ([-_[:alnum:]]+) (:) )? ([-_[:alnum:]]+) ) (=)</string> <key>captures</key> <dict> <key>1</key> <dict> <key>name</key> <string>entity.other.attribute-name.cs</string> </dict> <key>2</key> <dict> <key>name</key> <string>entity.other.attribute-name.namespace.cs</string> </dict> <key>3</key> <dict> <key>name</key> <string>punctuation.separator.colon.cs</string> </dict> <key>4</key> <dict> <key>name</key> <string>entity.other.attribute-name.localname.cs</string> </dict> <key>5</key> <dict> <key>name</key> <string>punctuation.separator.equals.cs</string> </dict> </dict> </dict> <dict> <key>include</key> <string>#xml-string</string> </dict> </array> </dict> <key>xml-cdata</key> <dict> <key>name</key> <string>string.unquoted.cdata.cs</string> <key>begin</key> <string><!\[CDATA\[</string> <key>beginCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.definition.string.begin.cs</string> </dict> </dict> <key>end</key> <string>\]\]></string> <key>endCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.definition.string.end.cs</string> </dict> </dict> </dict> <key>xml-string</key> <dict> <key>patterns</key> <array> <dict> <key>name</key> <string>string.quoted.single.cs</string> <key>begin</key> <string>\'</string> <key>beginCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.definition.string.begin.cs</string> </dict> </dict> <key>end</key> <string>\'</string> <key>endCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.definition.string.end.cs</string> </dict> </dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#xml-character-entity</string> </dict> </array> </dict> <dict> <key>name</key> <string>string.quoted.double.cs</string> <key>begin</key> <string>\"</string> <key>beginCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.definition.string.begin.cs</string> </dict> </dict> <key>end</key> <string>\"</string> <key>endCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.definition.string.end.cs</string> </dict> </dict> <key>patterns</key> <array> <dict> <key>include</key> <string>#xml-character-entity</string> </dict> </array> </dict> </array> </dict> <key>xml-character-entity</key> <dict> <key>patterns</key> <array> <dict> <key>name</key> <string>constant.character.entity.cs</string> <key>match</key> <string>(?x) (&) ( (?:[[:alpha:]:_][[:alnum:]:_.-]*)| (?:\#[[:digit:]]+)| (?:\#x[[:xdigit:]]+) ) (;)</string> <key>captures</key> <dict> <key>1</key> <dict> <key>name</key> <string>punctuation.definition.constant.cs</string> </dict> <key>3</key> <dict> <key>name</key> <string>punctuation.definition.constant.cs</string> </dict> </dict> </dict> <dict> <key>name</key> <string>invalid.illegal.bad-ampersand.cs</string> <key>match</key> <string>&</string> </dict> </array> </dict> <key>xml-comment</key> <dict> <key>name</key> <string>comment.block.cs</string> <key>begin</key> <string><!--</string> <key>beginCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.definition.comment.cs</string> </dict> </dict> <key>end</key> <string>--></string> <key>endCaptures</key> <dict> <key>0</key> <dict> <key>name</key> <string>punctuation.definition.comment.cs</string> </dict> </dict> </dict> </dict> </dict> </plist>