Path: blob/main/extensions/csharp/syntaxes/csharp.tmLanguage.json
5221 views
{1"information_for_contributors": [2"This file has been converted from https://github.com/dotnet/csharp-tmLanguage/blob/master/grammars/csharp.tmLanguage",3"If you want to provide a fix or improvement, please create a pull request against the original repository.",4"Once accepted there, we are happy to receive an update request."5],6"version": "https://github.com/dotnet/csharp-tmLanguage/commit/2e6860d87d4019b0b793b1e21e9e5c82185a01aa",7"name": "C#",8"scopeName": "source.cs",9"patterns": [10{11"include": "#preprocessor"12},13{14"include": "#comment"15},16{17"include": "#directives"18},19{20"include": "#declarations"21},22{23"include": "#script-top-level"24}25],26"repository": {27"directives": {28"patterns": [29{30"include": "#extern-alias-directive"31},32{33"include": "#using-directive"34},35{36"include": "#attribute-section"37},38{39"include": "#punctuation-semicolon"40}41]42},43"declarations": {44"patterns": [45{46"include": "#namespace-declaration"47},48{49"include": "#type-declarations"50},51{52"include": "#punctuation-semicolon"53}54]55},56"script-top-level": {57"patterns": [58{59"include": "#statement"60},61{62"include": "#method-declaration"63},64{65"include": "#punctuation-semicolon"66}67]68},69"type-declarations": {70"patterns": [71{72"include": "#preprocessor"73},74{75"include": "#comment"76},77{78"include": "#storage-modifier"79},80{81"include": "#class-declaration"82},83{84"include": "#delegate-declaration"85},86{87"include": "#enum-declaration"88},89{90"include": "#interface-declaration"91},92{93"include": "#struct-declaration"94},95{96"include": "#record-declaration"97},98{99"include": "#attribute-section"100},101{102"include": "#punctuation-semicolon"103}104]105},106"class-or-struct-members": {107"patterns": [108{109"include": "#preprocessor"110},111{112"include": "#comment"113},114{115"include": "#storage-modifier"116},117{118"include": "#type-declarations"119},120{121"include": "#constructor-declaration"122},123{124"include": "#property-declaration"125},126{127"include": "#fixed-size-buffer-declaration"128},129{130"include": "#field-declaration"131},132{133"include": "#event-declaration"134},135{136"include": "#indexer-declaration"137},138{139"include": "#variable-initializer"140},141{142"include": "#destructor-declaration"143},144{145"include": "#operator-declaration"146},147{148"include": "#conversion-operator-declaration"149},150{151"include": "#method-declaration"152},153{154"include": "#attribute-section"155},156{157"include": "#punctuation-semicolon"158}159]160},161"interface-members": {162"patterns": [163{164"include": "#preprocessor"165},166{167"include": "#comment"168},169{170"include": "#storage-modifier"171},172{173"include": "#property-declaration"174},175{176"include": "#event-declaration"177},178{179"include": "#indexer-declaration"180},181{182"include": "#method-declaration"183},184{185"include": "#operator-declaration"186},187{188"include": "#attribute-section"189},190{191"include": "#punctuation-semicolon"192}193]194},195"statement": {196"patterns": [197{198"include": "#preprocessor"199},200{201"include": "#comment"202},203{204"include": "#while-statement"205},206{207"include": "#do-statement"208},209{210"include": "#for-statement"211},212{213"include": "#foreach-statement"214},215{216"include": "#if-statement"217},218{219"include": "#else-part"220},221{222"include": "#goto-statement"223},224{225"include": "#return-statement"226},227{228"include": "#break-or-continue-statement"229},230{231"include": "#throw-statement"232},233{234"include": "#yield-statement"235},236{237"include": "#await-statement"238},239{240"include": "#try-statement"241},242{243"include": "#expression-operator-expression"244},245{246"include": "#context-control-statement"247},248{249"include": "#context-control-paren-statement"250},251{252"include": "#labeled-statement"253},254{255"include": "#object-creation-expression"256},257{258"include": "#array-creation-expression"259},260{261"include": "#anonymous-object-creation-expression"262},263{264"include": "#local-declaration"265},266{267"include": "#block"268},269{270"include": "#expression"271},272{273"include": "#punctuation-semicolon"274}275]276},277"expression": {278"patterns": [279{280"include": "#preprocessor"281},282{283"include": "#comment"284},285{286"include": "#expression-operator-expression"287},288{289"include": "#type-operator-expression"290},291{292"include": "#default-literal-expression"293},294{295"include": "#throw-expression"296},297{298"include": "#raw-interpolated-string"299},300{301"include": "#interpolated-string"302},303{304"include": "#verbatim-interpolated-string"305},306{307"include": "#type-builtin"308},309{310"include": "#language-variable"311},312{313"include": "#switch-statement-or-expression"314},315{316"include": "#with-expression"317},318{319"include": "#conditional-operator"320},321{322"include": "#assignment-expression"323},324{325"include": "#expression-operators"326},327{328"include": "#await-expression"329},330{331"include": "#query-expression"332},333{334"include": "#as-expression"335},336{337"include": "#is-expression"338},339{340"include": "#boolean-literal"341},342{343"include": "#null-literal"344},345{346"include": "#anonymous-method-expression"347},348{349"include": "#object-creation-expression"350},351{352"include": "#array-creation-expression"353},354{355"include": "#anonymous-object-creation-expression"356},357{358"include": "#invocation-expression"359},360{361"include": "#member-access-expression"362},363{364"include": "#element-access-expression"365},366{367"include": "#cast-expression"368},369{370"include": "#literal"371},372{373"include": "#parenthesized-expression"374},375{376"include": "#tuple-deconstruction-assignment"377},378{379"include": "#initializer-expression"380},381{382"include": "#identifier"383}384]385},386"extern-alias-directive": {387"begin": "\\b(extern)\\s+(alias)\\b",388"beginCaptures": {389"1": {390"name": "keyword.other.directive.extern.cs"391},392"2": {393"name": "keyword.other.directive.alias.cs"394}395},396"end": "(?=;)",397"patterns": [398{399"match": "\\@?[_[:alpha:]][_[:alnum:]]*",400"name": "variable.other.alias.cs"401}402]403},404"using-directive": {405"patterns": [406{407"begin": "\\b(?:(global)\\s+)?(using)\\s+(static)\\b\\s*(?:(unsafe)\\b\\s*)?",408"beginCaptures": {409"1": {410"name": "keyword.other.directive.global.cs"411},412"2": {413"name": "keyword.other.directive.using.cs"414},415"3": {416"name": "keyword.other.directive.static.cs"417},418"4": {419"name": "storage.modifier.unsafe.cs"420}421},422"end": "(?=;)",423"patterns": [424{425"include": "#type"426}427]428},429{430"begin": "\\b(?:(global)\\s+)?(using)\\b\\s*(?:(unsafe)\\b\\s*)?(@?[_[:alpha:]][_[:alnum:]]*)\\s*(=)",431"beginCaptures": {432"1": {433"name": "keyword.other.directive.global.cs"434},435"2": {436"name": "keyword.other.directive.using.cs"437},438"3": {439"name": "storage.modifier.unsafe.cs"440},441"4": {442"name": "entity.name.type.alias.cs"443},444"5": {445"name": "keyword.operator.assignment.cs"446}447},448"end": "(?=;)",449"patterns": [450{451"include": "#comment"452},453{454"include": "#type"455}456]457},458{459"begin": "\\b(?:(global)\\s+)?(using)\\b\\s*+(?!\\(|var\\b)",460"beginCaptures": {461"1": {462"name": "keyword.other.directive.global.cs"463},464"2": {465"name": "keyword.other.directive.using.cs"466}467},468"end": "(?=;)",469"patterns": [470{471"include": "#comment"472},473{474"name": "entity.name.type.namespace.cs",475"match": "\\@?[_[:alpha:]][_[:alnum:]]*"476},477{478"include": "#punctuation-accessor"479},480{481"include": "#operator-assignment"482}483]484}485]486},487"attribute-section": {488"begin": "(\\[)(assembly|module|field|event|method|param|property|return|typevar|type)?(\\:)?",489"beginCaptures": {490"1": {491"name": "punctuation.squarebracket.open.cs"492},493"2": {494"name": "keyword.other.attribute-specifier.cs"495},496"3": {497"name": "punctuation.separator.colon.cs"498}499},500"end": "(\\])",501"endCaptures": {502"1": {503"name": "punctuation.squarebracket.close.cs"504}505},506"patterns": [507{508"include": "#comment"509},510{511"include": "#attribute"512},513{514"include": "#punctuation-comma"515}516]517},518"attribute": {519"patterns": [520{521"include": "#type-name"522},523{524"include": "#type-arguments"525},526{527"include": "#attribute-arguments"528}529]530},531"attribute-arguments": {532"begin": "(\\()",533"beginCaptures": {534"1": {535"name": "punctuation.parenthesis.open.cs"536}537},538"end": "(\\))",539"endCaptures": {540"1": {541"name": "punctuation.parenthesis.close.cs"542}543},544"patterns": [545{546"include": "#attribute-named-argument"547},548{549"include": "#expression"550},551{552"include": "#punctuation-comma"553}554]555},556"attribute-named-argument": {557"begin": "(@?[_[:alpha:]][_[:alnum:]]*)\\s*(?==)",558"beginCaptures": {559"1": {560"name": "entity.name.variable.property.cs"561}562},563"end": "(?=(,|\\)))",564"patterns": [565{566"include": "#operator-assignment"567},568{569"include": "#expression"570}571]572},573"namespace-declaration": {574"begin": "\\b(namespace)\\s+",575"beginCaptures": {576"1": {577"name": "storage.type.namespace.cs"578}579},580"end": "(?<=\\})|(?=;)",581"patterns": [582{583"include": "#comment"584},585{586"name": "entity.name.type.namespace.cs",587"match": "@?[_[:alpha:]][_[:alnum:]]*"588},589{590"include": "#punctuation-accessor"591},592{593"begin": "\\{",594"beginCaptures": {595"0": {596"name": "punctuation.curlybrace.open.cs"597}598},599"end": "\\}",600"endCaptures": {601"0": {602"name": "punctuation.curlybrace.close.cs"603}604},605"patterns": [606{607"include": "#declarations"608},609{610"include": "#using-directive"611},612{613"include": "#punctuation-semicolon"614}615]616}617]618},619"storage-modifier": {620"name": "storage.modifier.$1.cs",621"match": "(?<!\\.)\\b(new|public|protected|internal|private|abstract|virtual|override|sealed|static|partial|readonly|volatile|const|extern|async|unsafe|ref|required|file)\\b"622},623"class-declaration": {624"begin": "(?=(\\brecord\\b\\s+)?\\bclass\\b)",625"end": "(?<=\\})|(?=;)",626"patterns": [627{628"begin": "(?x)\n(\\b(record)\\b\\s+)?\n\\b(class)\\b\\s+\n(@?[_[:alpha:]][_[:alnum:]]*)\\s*",629"beginCaptures": {630"2": {631"name": "storage.type.record.cs"632},633"3": {634"name": "storage.type.class.cs"635},636"4": {637"name": "entity.name.type.class.cs"638}639},640"end": "(?=\\{)|(?=;)",641"patterns": [642{643"include": "#comment"644},645{646"include": "#type-parameter-list"647},648{649"include": "#parenthesized-parameter-list"650},651{652"include": "#base-types"653},654{655"include": "#generic-constraints"656}657]658},659{660"begin": "\\{",661"beginCaptures": {662"0": {663"name": "punctuation.curlybrace.open.cs"664}665},666"end": "\\}",667"endCaptures": {668"0": {669"name": "punctuation.curlybrace.close.cs"670}671},672"patterns": [673{674"include": "#class-or-struct-members"675}676]677},678{679"include": "#preprocessor"680},681{682"include": "#comment"683}684]685},686"delegate-declaration": {687"begin": "(?x)\n(?:\\b(delegate)\\b)\\s+\n(?<type_name>\n (?:\n (?:ref\\s+(?:readonly\\s+)?)? # ref return\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)* | # Are there any more names being dotted into?\n (?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s* # array suffix?\n \\[\n (?:\\s*,\\s*)* # commata for multi-dimensional arrays\n \\]\n \\s*\n (?:\\?)? # arrays can be nullable reference types\n \\s*\n )*\n )\n)\\s+\n(\\g<identifier>)\\s*\n(<([^<>]+)>)?\\s*\n(?=\\()",688"beginCaptures": {689"1": {690"name": "storage.type.delegate.cs"691},692"2": {693"patterns": [694{695"include": "#type"696}697]698},699"7": {700"name": "entity.name.type.delegate.cs"701},702"8": {703"patterns": [704{705"include": "#type-parameter-list"706}707]708}709},710"end": "(?=;)",711"patterns": [712{713"include": "#comment"714},715{716"include": "#parenthesized-parameter-list"717},718{719"include": "#generic-constraints"720}721]722},723"enum-declaration": {724"begin": "(?=\\benum\\b)",725"end": "(?<=\\})|(?=;)",726"patterns": [727{728"begin": "(?=enum)",729"end": "(?=\\{)|(?=;)",730"patterns": [731{732"include": "#comment"733},734{735"match": "(enum)\\s+(@?[_[:alpha:]][_[:alnum:]]*)",736"captures": {737"1": {738"name": "storage.type.enum.cs"739},740"2": {741"name": "entity.name.type.enum.cs"742}743}744},745{746"begin": ":",747"beginCaptures": {748"0": {749"name": "punctuation.separator.colon.cs"750}751},752"end": "(?=\\{)",753"patterns": [754{755"include": "#type"756}757]758}759]760},761{762"begin": "\\{",763"beginCaptures": {764"0": {765"name": "punctuation.curlybrace.open.cs"766}767},768"end": "\\}",769"endCaptures": {770"0": {771"name": "punctuation.curlybrace.close.cs"772}773},774"patterns": [775{776"include": "#preprocessor"777},778{779"include": "#comment"780},781{782"include": "#attribute-section"783},784{785"include": "#punctuation-comma"786},787{788"begin": "@?[_[:alpha:]][_[:alnum:]]*",789"beginCaptures": {790"0": {791"name": "entity.name.variable.enum-member.cs"792}793},794"end": "(?=(,|\\}))",795"patterns": [796{797"include": "#comment"798},799{800"include": "#variable-initializer"801}802]803}804]805},806{807"include": "#preprocessor"808},809{810"include": "#comment"811}812]813},814"interface-declaration": {815"begin": "(?=\\binterface\\b)",816"end": "(?<=\\})|(?=;)",817"patterns": [818{819"begin": "(?x)\n(interface)\\b\\s+\n(@?[_[:alpha:]][_[:alnum:]]*)",820"beginCaptures": {821"1": {822"name": "storage.type.interface.cs"823},824"2": {825"name": "entity.name.type.interface.cs"826}827},828"end": "(?=\\{)|(?=;)",829"patterns": [830{831"include": "#comment"832},833{834"include": "#type-parameter-list"835},836{837"include": "#base-types"838},839{840"include": "#generic-constraints"841}842]843},844{845"begin": "\\{",846"beginCaptures": {847"0": {848"name": "punctuation.curlybrace.open.cs"849}850},851"end": "\\}",852"endCaptures": {853"0": {854"name": "punctuation.curlybrace.close.cs"855}856},857"patterns": [858{859"include": "#interface-members"860}861]862},863{864"include": "#preprocessor"865},866{867"include": "#comment"868}869]870},871"record-declaration": {872"begin": "(?=\\brecord\\b)",873"end": "(?<=\\})|(?=;)",874"patterns": [875{876"begin": "(?x)\n(record)\\b\\s+\n(@?[_[:alpha:]][_[:alnum:]]*)",877"beginCaptures": {878"1": {879"name": "storage.type.record.cs"880},881"2": {882"name": "entity.name.type.class.cs"883}884},885"end": "(?=\\{)|(?=;)",886"patterns": [887{888"include": "#comment"889},890{891"include": "#type-parameter-list"892},893{894"include": "#parenthesized-parameter-list"895},896{897"include": "#base-types"898},899{900"include": "#generic-constraints"901}902]903},904{905"begin": "\\{",906"beginCaptures": {907"0": {908"name": "punctuation.curlybrace.open.cs"909}910},911"end": "\\}",912"endCaptures": {913"0": {914"name": "punctuation.curlybrace.close.cs"915}916},917"patterns": [918{919"include": "#class-or-struct-members"920}921]922},923{924"include": "#preprocessor"925},926{927"include": "#comment"928}929]930},931"struct-declaration": {932"begin": "(?=(\\brecord\\b\\s+)?\\bstruct\\b)",933"end": "(?<=\\})|(?=;)",934"patterns": [935{936"begin": "(?x)\n(\\b(record)\\b\\s+)?\n(struct)\\b\\s+\n(@?[_[:alpha:]][_[:alnum:]]*)",937"beginCaptures": {938"2": {939"name": "storage.type.record.cs"940},941"3": {942"name": "storage.type.struct.cs"943},944"4": {945"name": "entity.name.type.struct.cs"946}947},948"end": "(?=\\{)|(?=;)",949"patterns": [950{951"include": "#comment"952},953{954"include": "#type-parameter-list"955},956{957"include": "#parenthesized-parameter-list"958},959{960"include": "#base-types"961},962{963"include": "#generic-constraints"964}965]966},967{968"begin": "\\{",969"beginCaptures": {970"0": {971"name": "punctuation.curlybrace.open.cs"972}973},974"end": "\\}",975"endCaptures": {976"0": {977"name": "punctuation.curlybrace.close.cs"978}979},980"patterns": [981{982"include": "#class-or-struct-members"983}984]985},986{987"include": "#preprocessor"988},989{990"include": "#comment"991}992]993},994"type-parameter-list": {995"begin": "\\<",996"beginCaptures": {997"0": {998"name": "punctuation.definition.typeparameters.begin.cs"999}1000},1001"end": "\\>",1002"endCaptures": {1003"0": {1004"name": "punctuation.definition.typeparameters.end.cs"1005}1006},1007"patterns": [1008{1009"match": "\\b(in|out)\\b",1010"name": "storage.modifier.$1.cs"1011},1012{1013"match": "(@?[_[:alpha:]][_[:alnum:]]*)\\b",1014"name": "entity.name.type.type-parameter.cs"1015},1016{1017"include": "#comment"1018},1019{1020"include": "#punctuation-comma"1021},1022{1023"include": "#attribute-section"1024}1025]1026},1027"base-types": {1028"begin": ":",1029"beginCaptures": {1030"0": {1031"name": "punctuation.separator.colon.cs"1032}1033},1034"end": "(?=\\{|where|;)",1035"patterns": [1036{1037"include": "#base-class-constructor-call"1038},1039{1040"include": "#type"1041},1042{1043"include": "#punctuation-comma"1044},1045{1046"include": "#preprocessor"1047}1048]1049},1050"base-class-constructor-call": {1051"begin": "(?x)\n(?:\n (@?[_[:alpha:]][_[:alnum:]]*)\\s*(\\.) # qualified name part\n)*\n(@?[_[:alpha:]][_[:alnum:]]*)\\s* # type name\n(\n <\n (?<type_args>\n [^<>()]|\n \\((?:[^<>()]|<[^<>()]*>|\\([^<>()]*\\))*\\)|\n <\\g<type_args>*>\n )*\n >\\s*\n)? # optional type arguments\n(?=\\() # followed by argument list",1052"beginCaptures": {1053"1": {1054"name": "entity.name.type.cs"1055},1056"2": {1057"name": "punctuation.accessor.cs"1058},1059"3": {1060"name": "entity.name.type.cs"1061},1062"4": {1063"patterns": [1064{1065"include": "#type-arguments"1066}1067]1068}1069},1070"end": "(?<=\\))",1071"patterns": [1072{1073"include": "#argument-list"1074}1075]1076},1077"generic-constraints": {1078"begin": "(where)\\s+(@?[_[:alpha:]][_[:alnum:]]*)\\s*(:)",1079"beginCaptures": {1080"1": {1081"name": "storage.modifier.where.cs"1082},1083"2": {1084"name": "entity.name.type.type-parameter.cs"1085},1086"3": {1087"name": "punctuation.separator.colon.cs"1088}1089},1090"end": "(?=\\{|where|;|=>)",1091"patterns": [1092{1093"name": "storage.type.class.cs",1094"match": "\\bclass\\b"1095},1096{1097"name": "storage.type.struct.cs",1098"match": "\\bstruct\\b"1099},1100{1101"name": "keyword.other.constraint.default.cs",1102"match": "\\bdefault\\b"1103},1104{1105"name": "keyword.other.constraint.notnull.cs",1106"match": "\\bnotnull\\b"1107},1108{1109"name": "keyword.other.constraint.unmanaged.cs",1110"match": "\\bunmanaged\\b"1111},1112{1113"match": "(new)\\s*(\\()\\s*(\\))",1114"captures": {1115"1": {1116"name": "keyword.operator.expression.new.cs"1117},1118"2": {1119"name": "punctuation.parenthesis.open.cs"1120},1121"3": {1122"name": "punctuation.parenthesis.close.cs"1123}1124}1125},1126{1127"include": "#type"1128},1129{1130"include": "#punctuation-comma"1131},1132{1133"include": "#generic-constraints"1134}1135]1136},1137"fixed-size-buffer-declaration": {1138"begin": "(?x)\n\\b(fixed)\\b\\s+\n(?<type_name>\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)* # Are there any more names being dotted into?\n )\n)\\s+\n(\\g<identifier>)\\s* # buffer name\n(?=\\[)",1139"beginCaptures": {1140"1": {1141"name": "storage.modifier.fixed.cs"1142},1143"2": {1144"patterns": [1145{1146"include": "#type"1147}1148]1149},1150"6": {1151"name": "entity.name.variable.field.cs"1152}1153},1154"end": "(?=;)",1155"patterns": [1156{1157"include": "#bracketed-argument-list"1158},1159{1160"include": "#comment"1161}1162]1163},1164"field-declaration": {1165"begin": "(?x)\n(?<type_name>\n (?:\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)* | # Are there any more names being dotted into?\n (?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s* # array suffix?\n \\[\n (?:\\s*,\\s*)* # commata for multi-dimensional arrays\n \\]\n \\s*\n (?:\\?)? # arrays can be nullable reference types\n \\s*\n )*\n )\n)\\s+\n(\\g<identifier>)\\s* # first field name\n(?!=>|==)(?=,|;|=|$)",1166"beginCaptures": {1167"1": {1168"patterns": [1169{1170"include": "#type"1171}1172]1173},1174"6": {1175"name": "entity.name.variable.field.cs"1176}1177},1178"end": "(?=;)",1179"patterns": [1180{1181"name": "entity.name.variable.field.cs",1182"match": "@?[_[:alpha:]][_[:alnum:]]*"1183},1184{1185"include": "#punctuation-comma"1186},1187{1188"include": "#comment"1189},1190{1191"include": "#variable-initializer"1192},1193{1194"include": "#class-or-struct-members"1195}1196]1197},1198"property-declaration": {1199"begin": "(?x)\n\n# The negative lookahead below ensures that we don't match nested types\n# or other declarations as properties.\n(?![[:word:][:space:]]*\\b(?:class|interface|struct|enum|event)\\b)\n\n(?<return_type>\n (?<type_name>\n (?:\n (?:ref\\s+(?:readonly\\s+)?)? # ref return\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)* | # Are there any more names being dotted into?\n (?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s* # array suffix?\n \\[\n (?:\\s*,\\s*)* # commata for multi-dimensional arrays\n \\]\n \\s*\n (?:\\?)? # arrays can be nullable reference types\n \\s*\n )*\n )\n )\\s+\n)\n(?<interface_name>\\g<type_name>\\s*\\.\\s*)?\n(?<property_name>\\g<identifier>)\\s*\n(?=\\{|=>|//|/\\*|$)",1200"beginCaptures": {1201"1": {1202"patterns": [1203{1204"include": "#type"1205}1206]1207},1208"7": {1209"patterns": [1210{1211"include": "#type"1212},1213{1214"include": "#punctuation-accessor"1215}1216]1217},1218"8": {1219"name": "entity.name.variable.property.cs"1220}1221},1222"end": "(?<=\\})|(?=;)",1223"patterns": [1224{1225"include": "#comment"1226},1227{1228"include": "#property-accessors"1229},1230{1231"include": "#accessor-getter-expression"1232},1233{1234"include": "#variable-initializer"1235},1236{1237"include": "#class-or-struct-members"1238}1239]1240},1241"indexer-declaration": {1242"begin": "(?x)\n(?<return_type>\n (?<type_name>\n (?:\n (?:ref\\s+(?:readonly\\s+)?)? # ref return\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)* | # Are there any more names being dotted into?\n (?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s* # array suffix?\n \\[\n (?:\\s*,\\s*)* # commata for multi-dimensional arrays\n \\]\n \\s*\n (?:\\?)? # arrays can be nullable reference types\n \\s*\n )*\n )\n )\\s+\n)\n(?<interface_name>\\g<type_name>\\s*\\.\\s*)?\n(?<indexer_name>this)\\s*\n(?=\\[)",1243"beginCaptures": {1244"1": {1245"patterns": [1246{1247"include": "#type"1248}1249]1250},1251"7": {1252"patterns": [1253{1254"include": "#type"1255},1256{1257"include": "#punctuation-accessor"1258}1259]1260},1261"8": {1262"name": "variable.language.this.cs"1263}1264},1265"end": "(?<=\\})|(?=;)",1266"patterns": [1267{1268"include": "#comment"1269},1270{1271"include": "#bracketed-parameter-list"1272},1273{1274"include": "#property-accessors"1275},1276{1277"include": "#accessor-getter-expression"1278},1279{1280"include": "#variable-initializer"1281}1282]1283},1284"event-declaration": {1285"begin": "(?x)\n\\b(event)\\b\\s*\n(?<return_type>\n (?<type_name>\n (?:\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)* | # Are there any more names being dotted into?\n (?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s* # array suffix?\n \\[\n (?:\\s*,\\s*)* # commata for multi-dimensional arrays\n \\]\n \\s*\n (?:\\?)? # arrays can be nullable reference types\n \\s*\n )*\n )\n )\\s+\n)\n(?<interface_name>\\g<type_name>\\s*\\.\\s*)?\n(\\g<identifier>)\\s* # first event name\n(?=\\{|;|,|=|//|/\\*|$)",1286"beginCaptures": {1287"1": {1288"name": "storage.type.event.cs"1289},1290"2": {1291"patterns": [1292{1293"include": "#type"1294}1295]1296},1297"8": {1298"patterns": [1299{1300"include": "#type"1301},1302{1303"include": "#punctuation-accessor"1304}1305]1306},1307"9": {1308"name": "entity.name.variable.event.cs"1309}1310},1311"end": "(?<=\\})|(?=;)",1312"patterns": [1313{1314"include": "#comment"1315},1316{1317"include": "#event-accessors"1318},1319{1320"name": "entity.name.variable.event.cs",1321"match": "@?[_[:alpha:]][_[:alnum:]]*"1322},1323{1324"include": "#punctuation-comma"1325},1326{1327"begin": "=",1328"beginCaptures": {1329"0": {1330"name": "keyword.operator.assignment.cs"1331}1332},1333"end": "(?<=,)|(?=;)",1334"patterns": [1335{1336"include": "#expression"1337},1338{1339"include": "#punctuation-comma"1340}1341]1342}1343]1344},1345"property-accessors": {1346"begin": "\\{",1347"beginCaptures": {1348"0": {1349"name": "punctuation.curlybrace.open.cs"1350}1351},1352"end": "\\}",1353"endCaptures": {1354"0": {1355"name": "punctuation.curlybrace.close.cs"1356}1357},1358"patterns": [1359{1360"include": "#comment"1361},1362{1363"include": "#attribute-section"1364},1365{1366"name": "storage.modifier.$1.cs",1367"match": "\\b(private|protected|internal)\\b"1368},1369{1370"begin": "(?:\\b(readonly)\\s+)?\\b(get)\\b\\s*(?=\\{|;|=>|//|/\\*|$)",1371"beginCaptures": {1372"1": {1373"name": "storage.modifier.readonly.cs"1374},1375"2": {1376"name": "storage.type.accessor.get.cs"1377}1378},1379"end": "(?<=\\}|;)|(?=\\})",1380"patterns": [1381{1382"include": "#accessor-getter"1383}1384]1385},1386{1387"begin": "\\b(set|init)\\b\\s*(?=\\{|;|=>|//|/\\*|$)",1388"beginCaptures": {1389"1": {1390"name": "storage.type.accessor.$1.cs"1391}1392},1393"end": "(?<=\\}|;)|(?=\\})",1394"patterns": [1395{1396"include": "#accessor-setter"1397}1398]1399}1400]1401},1402"event-accessors": {1403"begin": "\\{",1404"beginCaptures": {1405"0": {1406"name": "punctuation.curlybrace.open.cs"1407}1408},1409"end": "\\}",1410"endCaptures": {1411"0": {1412"name": "punctuation.curlybrace.close.cs"1413}1414},1415"patterns": [1416{1417"include": "#comment"1418},1419{1420"include": "#attribute-section"1421},1422{1423"begin": "\\b(add|remove)\\b\\s*(?=\\{|;|=>|//|/\\*|$)",1424"beginCaptures": {1425"1": {1426"name": "storage.type.accessor.$1.cs"1427}1428},1429"end": "(?<=\\}|;)|(?=\\})",1430"patterns": [1431{1432"include": "#accessor-setter"1433}1434]1435}1436]1437},1438"accessor-getter": {1439"patterns": [1440{1441"begin": "\\{",1442"beginCaptures": {1443"0": {1444"name": "punctuation.curlybrace.open.cs"1445}1446},1447"end": "\\}",1448"endCaptures": {1449"0": {1450"name": "punctuation.curlybrace.close.cs"1451}1452},1453"contentName": "meta.accessor.getter.cs",1454"patterns": [1455{1456"include": "#statement"1457}1458]1459},1460{1461"include": "#accessor-getter-expression"1462},1463{1464"include": "#punctuation-semicolon"1465}1466]1467},1468"accessor-getter-expression": {1469"begin": "=>",1470"beginCaptures": {1471"0": {1472"name": "keyword.operator.arrow.cs"1473}1474},1475"end": "(?=;|\\})",1476"contentName": "meta.accessor.getter.cs",1477"patterns": [1478{1479"include": "#ref-modifier"1480},1481{1482"include": "#expression"1483}1484]1485},1486"accessor-setter": {1487"patterns": [1488{1489"begin": "\\{",1490"beginCaptures": {1491"0": {1492"name": "punctuation.curlybrace.open.cs"1493}1494},1495"end": "\\}",1496"endCaptures": {1497"0": {1498"name": "punctuation.curlybrace.close.cs"1499}1500},1501"contentName": "meta.accessor.setter.cs",1502"patterns": [1503{1504"include": "#statement"1505}1506]1507},1508{1509"begin": "=>",1510"beginCaptures": {1511"0": {1512"name": "keyword.operator.arrow.cs"1513}1514},1515"end": "(?=;|\\})",1516"contentName": "meta.accessor.setter.cs",1517"patterns": [1518{1519"include": "#ref-modifier"1520},1521{1522"include": "#expression"1523}1524]1525},1526{1527"include": "#punctuation-semicolon"1528}1529]1530},1531"method-declaration": {1532"begin": "(?x)\n(?<return_type>\n (?<type_name>\n (?:\n (?:ref\\s+(?:readonly\\s+)?)? # ref return\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)* | # Are there any more names being dotted into?\n (?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s* # array suffix?\n \\[\n (?:\\s*,\\s*)* # commata for multi-dimensional arrays\n \\]\n \\s*\n (?:\\?)? # arrays can be nullable reference types\n \\s*\n )*\n )\n )\\s+\n)\n(?<interface_name>\\g<type_name>\\s*\\.\\s*)?\n(\\g<identifier>)\\s*\n(<([^<>]+)>)?\\s*\n(?=\\()",1533"beginCaptures": {1534"1": {1535"patterns": [1536{1537"include": "#type"1538}1539]1540},1541"7": {1542"patterns": [1543{1544"include": "#type"1545},1546{1547"include": "#punctuation-accessor"1548}1549]1550},1551"8": {1552"name": "entity.name.function.cs"1553},1554"9": {1555"patterns": [1556{1557"include": "#type-parameter-list"1558}1559]1560}1561},1562"end": "(?<=\\})|(?=;)",1563"patterns": [1564{1565"include": "#comment"1566},1567{1568"include": "#parenthesized-parameter-list"1569},1570{1571"include": "#generic-constraints"1572},1573{1574"include": "#expression-body"1575},1576{1577"include": "#block"1578}1579]1580},1581"constructor-declaration": {1582"begin": "(@?[_[:alpha:]][_[:alnum:]]*)\\s*(?=\\(|$)",1583"beginCaptures": {1584"1": {1585"name": "entity.name.function.cs"1586}1587},1588"end": "(?<=\\})|(?=;)",1589"patterns": [1590{1591"begin": "(:)",1592"beginCaptures": {1593"1": {1594"name": "punctuation.separator.colon.cs"1595}1596},1597"end": "(?=\\{|=>)",1598"patterns": [1599{1600"include": "#constructor-initializer"1601}1602]1603},1604{1605"include": "#parenthesized-parameter-list"1606},1607{1608"include": "#preprocessor"1609},1610{1611"include": "#comment"1612},1613{1614"include": "#expression-body"1615},1616{1617"include": "#block"1618}1619]1620},1621"constructor-initializer": {1622"begin": "\\b(base|this)\\b\\s*(?=\\()",1623"beginCaptures": {1624"1": {1625"name": "variable.language.$1.cs"1626}1627},1628"end": "(?<=\\))",1629"patterns": [1630{1631"include": "#argument-list"1632}1633]1634},1635"destructor-declaration": {1636"begin": "(~)(@?[_[:alpha:]][_[:alnum:]]*)\\s*(?=\\()",1637"beginCaptures": {1638"1": {1639"name": "punctuation.tilde.cs"1640},1641"2": {1642"name": "entity.name.function.cs"1643}1644},1645"end": "(?<=\\})|(?=;)",1646"patterns": [1647{1648"include": "#comment"1649},1650{1651"include": "#parenthesized-parameter-list"1652},1653{1654"include": "#expression-body"1655},1656{1657"include": "#block"1658}1659]1660},1661"operator-declaration": {1662"begin": "(?x)\n(?<type_name>\n (?:\n (?:ref\\s+(?:readonly\\s+)?)? # ref return\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)* | # Are there any more names being dotted into?\n (?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s* # array suffix?\n \\[\n (?:\\s*,\\s*)* # commata for multi-dimensional arrays\n \\]\n \\s*\n (?:\\?)? # arrays can be nullable reference types\n \\s*\n )*\n )\n)\\s*\n\\b(?<operator_keyword>operator)\\b\\s*\n(?<operator>[+\\-*/%&|\\^!=~<>]+|true|false)\\s*\n(?=\\()",1663"beginCaptures": {1664"1": {1665"patterns": [1666{1667"include": "#type"1668}1669]1670},1671"6": {1672"name": "storage.type.operator.cs"1673},1674"7": {1675"name": "entity.name.function.cs"1676}1677},1678"end": "(?<=\\})|(?=;)",1679"patterns": [1680{1681"include": "#comment"1682},1683{1684"include": "#parenthesized-parameter-list"1685},1686{1687"include": "#expression-body"1688},1689{1690"include": "#block"1691}1692]1693},1694"conversion-operator-declaration": {1695"begin": "(?x)\n(?<explicit_or_implicit_keyword>(?:\\b(?:explicit|implicit)))\\s*\n(?<operator_keyword>(?:\\b(?:operator)))\\s*\n(?<type_name>\n (?:\n (?:ref\\s+(?:readonly\\s+)?)? # ref return\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)* | # Are there any more names being dotted into?\n (?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s* # array suffix?\n \\[\n (?:\\s*,\\s*)* # commata for multi-dimensional arrays\n \\]\n \\s*\n (?:\\?)? # arrays can be nullable reference types\n \\s*\n )*\n )\n)\\s*\n(?=\\()",1696"beginCaptures": {1697"1": {1698"patterns": [1699{1700"match": "\\b(explicit)\\b",1701"captures": {1702"1": {1703"name": "storage.modifier.explicit.cs"1704}1705}1706},1707{1708"match": "\\b(implicit)\\b",1709"captures": {1710"1": {1711"name": "storage.modifier.implicit.cs"1712}1713}1714}1715]1716},1717"2": {1718"name": "storage.type.operator.cs"1719},1720"3": {1721"patterns": [1722{1723"include": "#type"1724}1725]1726}1727},1728"end": "(?<=\\})|(?=;)",1729"patterns": [1730{1731"include": "#comment"1732},1733{1734"include": "#parenthesized-parameter-list"1735},1736{1737"include": "#expression-body"1738},1739{1740"include": "#block"1741}1742]1743},1744"block": {1745"begin": "\\{",1746"beginCaptures": {1747"0": {1748"name": "punctuation.curlybrace.open.cs"1749}1750},1751"end": "\\}",1752"endCaptures": {1753"0": {1754"name": "punctuation.curlybrace.close.cs"1755}1756},1757"patterns": [1758{1759"include": "#statement"1760}1761]1762},1763"variable-initializer": {1764"begin": "(?<!=|!)(=)(?!=|>)",1765"beginCaptures": {1766"1": {1767"name": "keyword.operator.assignment.cs"1768}1769},1770"end": "(?=[,\\)\\];}])",1771"patterns": [1772{1773"include": "#ref-modifier"1774},1775{1776"include": "#expression"1777}1778]1779},1780"expression-body": {1781"begin": "=>",1782"beginCaptures": {1783"0": {1784"name": "keyword.operator.arrow.cs"1785}1786},1787"end": "(?=[,\\);}])",1788"patterns": [1789{1790"include": "#ref-modifier"1791},1792{1793"include": "#expression"1794}1795]1796},1797"goto-statement": {1798"begin": "(?<!\\.)\\b(goto)\\b",1799"beginCaptures": {1800"1": {1801"name": "keyword.control.flow.goto.cs"1802}1803},1804"end": "(?=[;}])",1805"patterns": [1806{1807"begin": "\\b(case)\\b",1808"beginCaptures": {1809"1": {1810"name": "keyword.control.conditional.case.cs"1811}1812},1813"end": "(?=[;}])",1814"patterns": [1815{1816"include": "#expression"1817}1818]1819},1820{1821"match": "\\b(default)\\b",1822"captures": {1823"1": {1824"name": "keyword.control.conditional.default.cs"1825}1826}1827},1828{1829"name": "entity.name.label.cs",1830"match": "@?[_[:alpha:]][_[:alnum:]]*"1831}1832]1833},1834"return-statement": {1835"begin": "(?<!\\.)\\b(return)\\b",1836"beginCaptures": {1837"1": {1838"name": "keyword.control.flow.return.cs"1839}1840},1841"end": "(?=[;}])",1842"patterns": [1843{1844"include": "#ref-modifier"1845},1846{1847"include": "#expression"1848}1849]1850},1851"break-or-continue-statement": {1852"match": "(?<!\\.)\\b(break|continue)\\b",1853"name": "keyword.control.flow.$1.cs"1854},1855"throw-statement": {1856"begin": "(?<!\\.)\\b(throw)\\b",1857"beginCaptures": {1858"1": {1859"name": "keyword.control.flow.throw.cs"1860}1861},1862"end": "(?=[;}])",1863"patterns": [1864{1865"include": "#expression"1866}1867]1868},1869"yield-statement": {1870"patterns": [1871{1872"include": "#yield-return-statement"1873},1874{1875"include": "#yield-break-statement"1876}1877]1878},1879"yield-return-statement": {1880"begin": "(?<!\\.)\\b(yield)\\b\\s*\\b(return)\\b",1881"beginCaptures": {1882"1": {1883"name": "keyword.control.flow.yield.cs"1884},1885"2": {1886"name": "keyword.control.flow.return.cs"1887}1888},1889"end": "(?=[;}])",1890"patterns": [1891{1892"include": "#expression"1893}1894]1895},1896"yield-break-statement": {1897"match": "(?<!\\.)\\b(yield)\\b\\s*\\b(break)\\b",1898"captures": {1899"1": {1900"name": "keyword.control.flow.yield.cs"1901},1902"2": {1903"name": "keyword.control.flow.break.cs"1904}1905}1906},1907"await-statement": {1908"begin": "(?<!\\.\\s*)\\b(await)\\b",1909"beginCaptures": {1910"1": {1911"name": "keyword.operator.expression.await.cs"1912}1913},1914"end": "(?<=})|(?=;|})",1915"patterns": [1916{1917"include": "#foreach-statement"1918},1919{1920"include": "#using-statement"1921},1922{1923"include": "#expression"1924}1925]1926},1927"if-statement": {1928"begin": "(?<!\\.)\\b(if)\\b\\s*(?=\\()",1929"beginCaptures": {1930"1": {1931"name": "keyword.control.conditional.if.cs"1932}1933},1934"end": "(?<=})|(?=;)",1935"patterns": [1936{1937"begin": "\\(",1938"beginCaptures": {1939"0": {1940"name": "punctuation.parenthesis.open.cs"1941}1942},1943"end": "\\)",1944"endCaptures": {1945"0": {1946"name": "punctuation.parenthesis.close.cs"1947}1948},1949"patterns": [1950{1951"include": "#expression"1952}1953]1954},1955{1956"include": "#statement"1957}1958]1959},1960"else-part": {1961"begin": "(?<!\\.)\\b(else)\\b",1962"beginCaptures": {1963"1": {1964"name": "keyword.control.conditional.else.cs"1965}1966},1967"end": "(?<=})|(?=;)",1968"patterns": [1969{1970"include": "#statement"1971}1972]1973},1974"switch-statement-or-expression": {1975"begin": "(?<!\\.)\\b(switch)\\b",1976"beginCaptures": {1977"1": {1978"name": "keyword.control.conditional.switch.cs"1979}1980},1981"end": "(?<=})|(?=})",1982"patterns": [1983{1984"include": "#intrusive"1985},1986{1987"begin": "(?=\\()",1988"end": "(?<=\\})|(?=\\})",1989"patterns": [1990{1991"include": "#switch-statement"1992}1993]1994},1995{1996"begin": "(?=\\{)",1997"end": "(?<=\\})|(?=\\})",1998"patterns": [1999{2000"include": "#switch-expression"2001}2002]2003}2004]2005},2006"switch-statement": {2007"patterns": [2008{2009"include": "#intrusive"2010},2011{2012"begin": "\\(",2013"beginCaptures": {2014"0": {2015"name": "punctuation.parenthesis.open.cs"2016}2017},2018"end": "\\)",2019"endCaptures": {2020"0": {2021"name": "punctuation.parenthesis.close.cs"2022}2023},2024"patterns": [2025{2026"include": "#expression"2027}2028]2029},2030{2031"begin": "\\{",2032"beginCaptures": {2033"0": {2034"name": "punctuation.curlybrace.open.cs"2035}2036},2037"end": "\\}",2038"endCaptures": {2039"0": {2040"name": "punctuation.curlybrace.close.cs"2041}2042},2043"patterns": [2044{2045"include": "#switch-label"2046},2047{2048"include": "#statement"2049}2050]2051}2052]2053},2054"switch-label": {2055"begin": "\\b(case|default)\\b",2056"beginCaptures": {2057"1": {2058"name": "keyword.control.conditional.$1.cs"2059}2060},2061"end": "(:)|(?=})",2062"endCaptures": {2063"1": {2064"name": "punctuation.separator.colon.cs"2065}2066},2067"patterns": [2068{2069"begin": "\\b(when)\\b",2070"beginCaptures": {2071"1": {2072"name": "keyword.control.conditional.when.cs"2073}2074},2075"end": "(?=:|})",2076"patterns": [2077{2078"include": "#case-guard"2079}2080]2081},2082{2083"begin": "(?!\\s)",2084"end": "(?=\\bwhen\\b|:|})",2085"patterns": [2086{2087"include": "#pattern"2088}2089]2090}2091]2092},2093"switch-expression": {2094"begin": "\\{",2095"beginCaptures": {2096"0": {2097"name": "punctuation.curlybrace.open.cs"2098}2099},2100"end": "\\}",2101"endCaptures": {2102"0": {2103"name": "punctuation.curlybrace.close.cs"2104}2105},2106"patterns": [2107{2108"include": "#punctuation-comma"2109},2110{2111"begin": "=>",2112"beginCaptures": {2113"0": {2114"name": "keyword.operator.arrow.cs"2115}2116},2117"end": "(?=,|})",2118"patterns": [2119{2120"include": "#expression"2121}2122]2123},2124{2125"begin": "\\b(when)\\b",2126"beginCaptures": {2127"1": {2128"name": "keyword.control.conditional.when.cs"2129}2130},2131"end": "(?==>|,|})",2132"patterns": [2133{2134"include": "#case-guard"2135}2136]2137},2138{2139"begin": "(?!\\s)",2140"end": "(?=\\bwhen\\b|=>|,|})",2141"patterns": [2142{2143"include": "#pattern"2144}2145]2146}2147]2148},2149"case-guard": {2150"patterns": [2151{2152"include": "#parenthesized-expression"2153},2154{2155"include": "#expression"2156}2157]2158},2159"is-expression": {2160"begin": "(?<!\\.)\\b(is)\\b",2161"beginCaptures": {2162"1": {2163"name": "keyword.operator.expression.pattern.is.cs"2164}2165},2166"end": "(?=[)}\\],;:?=&|^]|!=)",2167"patterns": [2168{2169"include": "#pattern"2170}2171]2172},2173"pattern": {2174"patterns": [2175{2176"include": "#intrusive"2177},2178{2179"include": "#combinator-pattern"2180},2181{2182"include": "#discard-pattern"2183},2184{2185"include": "#constant-pattern"2186},2187{2188"include": "#relational-pattern"2189},2190{2191"include": "#var-pattern"2192},2193{2194"include": "#type-pattern"2195},2196{2197"include": "#positional-pattern"2198},2199{2200"include": "#property-pattern"2201},2202{2203"include": "#list-pattern"2204},2205{2206"include": "#slice-pattern"2207}2208]2209},2210"combinator-pattern": {2211"match": "\\b(and|or|not)\\b",2212"name": "keyword.operator.expression.pattern.combinator.$1.cs"2213},2214"discard-pattern": {2215"match": "_(?![_[:alnum:]])",2216"name": "variable.language.discard.cs"2217},2218"constant-pattern": {2219"patterns": [2220{2221"include": "#boolean-literal"2222},2223{2224"include": "#null-literal"2225},2226{2227"include": "#numeric-literal"2228},2229{2230"include": "#char-literal"2231},2232{2233"include": "#string-literal"2234},2235{2236"include": "#raw-string-literal"2237},2238{2239"include": "#verbatim-string-literal"2240},2241{2242"include": "#type-operator-expression"2243},2244{2245"include": "#expression-operator-expression"2246},2247{2248"include": "#expression-operators"2249},2250{2251"include": "#casted-constant-pattern"2252}2253]2254},2255"casted-constant-pattern": {2256"begin": "(?x)\n(\\()\n ([\\s.:@_[:alnum:]]+)\n(\\))\n(?=[\\s+\\-!~]*@?[_[:alnum:]('\"]+)",2257"beginCaptures": {2258"1": {2259"name": "punctuation.parenthesis.open.cs"2260},2261"2": {2262"patterns": [2263{2264"include": "#type-builtin"2265},2266{2267"include": "#type-name"2268}2269]2270},2271"3": {2272"name": "punctuation.parenthesis.close.cs"2273}2274},2275"end": "(?=[)}\\],;:?=&|^]|!=|\\b(and|or|when)\\b)",2276"patterns": [2277{2278"include": "#casted-constant-pattern"2279},2280{2281"begin": "\\(",2282"beginCaptures": {2283"0": {2284"name": "punctuation.parenthesis.open.cs"2285}2286},2287"end": "\\)",2288"endCaptures": {2289"0": {2290"name": "punctuation.parenthesis.close.cs"2291}2292},2293"patterns": [2294{2295"include": "#constant-pattern"2296}2297]2298},2299{2300"include": "#constant-pattern"2301},2302{2303"match": "(@?[_[:alpha:]][_[:alnum:]]*)\\s*(\\:\\:)",2304"captures": {2305"1": {2306"name": "entity.name.type.alias.cs"2307},2308"2": {2309"name": "punctuation.separator.coloncolon.cs"2310}2311}2312},2313{2314"match": "(@?[_[:alpha:]][_[:alnum:]]*)\\s*(\\.)",2315"captures": {2316"1": {2317"name": "entity.name.type.cs"2318},2319"2": {2320"name": "punctuation.accessor.cs"2321}2322}2323},2324{2325"match": "\\@?[_[:alpha:]][_[:alnum:]]*",2326"name": "variable.other.constant.cs"2327}2328]2329},2330"relational-pattern": {2331"begin": "<=?|>=?",2332"beginCaptures": {2333"0": {2334"name": "keyword.operator.relational.cs"2335}2336},2337"end": "(?=[)}\\],;:?=&|^]|!=|\\b(and|or|when)\\b)",2338"patterns": [2339{2340"include": "#expression"2341}2342]2343},2344"var-pattern": {2345"begin": "\\b(var)\\b",2346"beginCaptures": {2347"1": {2348"name": "storage.type.var.cs"2349}2350},2351"end": "(?=[)}\\],;:?=&|^]|!=|\\b(and|or|when)\\b)",2352"patterns": [2353{2354"include": "#designation-pattern"2355}2356]2357},2358"designation-pattern": {2359"patterns": [2360{2361"include": "#intrusive"2362},2363{2364"begin": "\\(",2365"beginCaptures": {2366"0": {2367"name": "punctuation.parenthesis.open.cs"2368}2369},2370"end": "\\)",2371"endCaptures": {2372"0": {2373"name": "punctuation.parenthesis.close.cs"2374}2375},2376"patterns": [2377{2378"include": "#punctuation-comma"2379},2380{2381"include": "#designation-pattern"2382}2383]2384},2385{2386"include": "#simple-designation-pattern"2387}2388]2389},2390"simple-designation-pattern": {2391"patterns": [2392{2393"include": "#discard-pattern"2394},2395{2396"match": "@?[_[:alpha:]][_[:alnum:]]*",2397"name": "entity.name.variable.local.cs"2398}2399]2400},2401"type-pattern": {2402"begin": "(?=@?[_[:alpha:]][_[:alnum:]]*)",2403"end": "(?=[)}\\],;:?=&|^]|!=|\\b(and|or|when)\\b)",2404"patterns": [2405{2406"begin": "\\G",2407"end": "(?!\\G[@_[:alpha:]])(?=[\\({@_[:alpha:])}\\],;:=&|^]|(?:\\s|^)\\?|!=|\\b(and|or|when)\\b)",2408"patterns": [2409{2410"include": "#intrusive"2411},2412{2413"include": "#type-subpattern"2414}2415]2416},2417{2418"begin": "(?=[\\({@_[:alpha:]])",2419"end": "(?=[)}\\],;:?=&|^]|!=|\\b(and|or|when)\\b)",2420"patterns": [2421{2422"include": "#intrusive"2423},2424{2425"include": "#positional-pattern"2426},2427{2428"include": "#property-pattern"2429},2430{2431"include": "#simple-designation-pattern"2432}2433]2434}2435]2436},2437"type-subpattern": {2438"patterns": [2439{2440"include": "#type-builtin"2441},2442{2443"begin": "(@?[_[:alpha:]][_[:alnum:]]*)\\s*(::)",2444"beginCaptures": {2445"1": {2446"name": "entity.name.type.alias.cs"2447},2448"2": {2449"name": "punctuation.separator.coloncolon.cs"2450}2451},2452"end": "(?<=[_[:alnum:]])|(?=[.<\\[\\({)}\\],;:?=&|^]|!=|\\b(and|or|when)\\b)",2453"patterns": [2454{2455"include": "#intrusive"2456},2457{2458"match": "\\@?[_[:alpha:]][_[:alnum:]]*",2459"name": "entity.name.type.cs"2460}2461]2462},2463{2464"match": "\\@?[_[:alpha:]][_[:alnum:]]*",2465"name": "entity.name.type.cs"2466},2467{2468"begin": "\\.",2469"beginCaptures": {2470"0": {2471"name": "punctuation.accessor.cs"2472}2473},2474"end": "(?<=[_[:alnum:]])|(?=[<\\[\\({)}\\],;:?=&|^]|!=|\\b(and|or|when)\\b)",2475"patterns": [2476{2477"include": "#intrusive"2478},2479{2480"match": "\\@?[_[:alpha:]][_[:alnum:]]*",2481"name": "entity.name.type.cs"2482}2483]2484},2485{2486"include": "#type-arguments"2487},2488{2489"include": "#type-array-suffix"2490},2491{2492"match": "(?<!\\s)\\?",2493"name": "punctuation.separator.question-mark.cs"2494}2495]2496},2497"positional-pattern": {2498"begin": "(?=\\()",2499"end": "(?=[)}\\],;:?=&|^]|!=|\\b(and|or|when)\\b)",2500"patterns": [2501{2502"begin": "\\(",2503"beginCaptures": {2504"0": {2505"name": "punctuation.parenthesis.open.cs"2506}2507},2508"end": "\\)",2509"endCaptures": {2510"0": {2511"name": "punctuation.parenthesis.close.cs"2512}2513},2514"patterns": [2515{2516"include": "#subpattern"2517},2518{2519"include": "#punctuation-comma"2520}2521]2522},2523{2524"begin": "(?<=\\))",2525"end": "(?=[)}\\],;:?=&|^]|!=|\\b(and|or|when)\\b)",2526"patterns": [2527{2528"include": "#intrusive"2529},2530{2531"include": "#property-pattern"2532},2533{2534"include": "#simple-designation-pattern"2535}2536]2537}2538]2539},2540"property-pattern": {2541"begin": "(?={)",2542"end": "(?=[)}\\],;:?=&|^]|!=|\\b(and|or|when)\\b)",2543"patterns": [2544{2545"begin": "\\{",2546"beginCaptures": {2547"0": {2548"name": "punctuation.curlybrace.open.cs"2549}2550},2551"end": "\\}",2552"endCaptures": {2553"0": {2554"name": "punctuation.curlybrace.close.cs"2555}2556},2557"patterns": [2558{2559"include": "#subpattern"2560},2561{2562"include": "#punctuation-comma"2563}2564]2565},2566{2567"begin": "(?<=\\})",2568"end": "(?=[)}\\],;:?=&|^]|!=|\\b(and|or|when)\\b)",2569"patterns": [2570{2571"include": "#intrusive"2572},2573{2574"include": "#simple-designation-pattern"2575}2576]2577}2578]2579},2580"subpattern": {2581"patterns": [2582{2583"match": "(@?[_[:alpha:]][_[:alnum:]]*(?:\\s*\\.\\s*@?[_[:alpha:]][_[:alnum:]]*)*)\\s*(:)",2584"captures": {2585"1": {2586"patterns": [2587{2588"match": "\\@?[_[:alpha:]][_[:alnum:]]*",2589"name": "variable.other.object.property.cs"2590},2591{2592"include": "#punctuation-accessor"2593}2594]2595},2596"2": {2597"name": "punctuation.separator.colon.cs"2598}2599}2600},2601{2602"include": "#pattern"2603}2604]2605},2606"list-pattern": {2607"begin": "(?=\\[)",2608"end": "(?=[)}\\],;:?=&|^]|!=|\\b(and|or|when)\\b)",2609"patterns": [2610{2611"begin": "\\[",2612"beginCaptures": {2613"0": {2614"name": "punctuation.squarebracket.open.cs"2615}2616},2617"end": "\\]",2618"endCaptures": {2619"0": {2620"name": "punctuation.squarebracket.close.cs"2621}2622},2623"patterns": [2624{2625"include": "#pattern"2626},2627{2628"include": "#punctuation-comma"2629}2630]2631},2632{2633"begin": "(?<=\\])",2634"end": "(?=[)}\\],;:?=&|^]|!=|\\b(and|or|when)\\b)",2635"patterns": [2636{2637"include": "#intrusive"2638},2639{2640"include": "#simple-designation-pattern"2641}2642]2643}2644]2645},2646"slice-pattern": {2647"match": "\\.\\.",2648"name": "keyword.operator.range.cs"2649},2650"do-statement": {2651"begin": "(?<!\\.)\\b(do)\\b",2652"beginCaptures": {2653"1": {2654"name": "keyword.control.loop.do.cs"2655}2656},2657"end": "(?=;|})",2658"patterns": [2659{2660"include": "#statement"2661}2662]2663},2664"while-statement": {2665"begin": "(?<!\\.)\\b(while)\\b\\s*(?=\\()",2666"beginCaptures": {2667"1": {2668"name": "keyword.control.loop.while.cs"2669}2670},2671"end": "(?<=\\})|(?=;)",2672"patterns": [2673{2674"begin": "\\(",2675"beginCaptures": {2676"0": {2677"name": "punctuation.parenthesis.open.cs"2678}2679},2680"end": "\\)",2681"endCaptures": {2682"0": {2683"name": "punctuation.parenthesis.close.cs"2684}2685},2686"patterns": [2687{2688"include": "#expression"2689}2690]2691},2692{2693"include": "#statement"2694}2695]2696},2697"for-statement": {2698"begin": "\\b(for)\\b",2699"beginCaptures": {2700"1": {2701"name": "keyword.control.loop.for.cs"2702}2703},2704"end": "(?<=\\))|(?=;|})",2705"patterns": [2706{2707"begin": "\\(",2708"beginCaptures": {2709"0": {2710"name": "punctuation.parenthesis.open.cs"2711}2712},2713"end": "\\)",2714"endCaptures": {2715"0": {2716"name": "punctuation.parenthesis.close.cs"2717}2718},2719"patterns": [2720{2721"begin": "(?=[^;\\)])",2722"end": "(?=;|\\))",2723"patterns": [2724{2725"include": "#intrusive"2726},2727{2728"include": "#local-variable-declaration"2729},2730{2731"include": "#local-tuple-var-deconstruction"2732},2733{2734"include": "#tuple-deconstruction-assignment"2735},2736{2737"include": "#expression"2738}2739]2740},2741{2742"begin": "(?=;)",2743"end": "(?=\\))",2744"patterns": [2745{2746"include": "#intrusive"2747},2748{2749"include": "#expression"2750},2751{2752"include": "#punctuation-comma"2753},2754{2755"include": "#punctuation-semicolon"2756}2757]2758}2759]2760}2761]2762},2763"foreach-statement": {2764"begin": "\\b(foreach)\\b",2765"beginCaptures": {2766"1": {2767"name": "keyword.control.loop.foreach.cs"2768}2769},2770"end": "(?<=\\))|(?=;|})",2771"patterns": [2772{2773"include": "#intrusive"2774},2775{2776"begin": "\\(",2777"beginCaptures": {2778"0": {2779"name": "punctuation.parenthesis.open.cs"2780}2781},2782"end": "\\)",2783"endCaptures": {2784"0": {2785"name": "punctuation.parenthesis.close.cs"2786}2787},2788"patterns": [2789{2790"include": "#intrusive"2791},2792{2793"match": "(?x)\n(?:\n (?:(\\bref)\\s+)?(\\bvar\\b)| # ref local\n (?<type_name>\n (?:\n (?:ref\\s+)? # ref local\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)* | # Are there any more names being dotted into?\n (?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s* # array suffix?\n \\[\n (?:\\s*,\\s*)* # commata for multi-dimensional arrays\n \\]\n \\s*\n (?:\\?)? # arrays can be nullable reference types\n \\s*\n )*\n )\n )\n)\\s+\n(\\g<identifier>)\\s+\n\\b(in)\\b",2794"captures": {2795"1": {2796"name": "storage.modifier.ref.cs"2797},2798"2": {2799"name": "storage.type.var.cs"2800},2801"3": {2802"patterns": [2803{2804"include": "#type"2805}2806]2807},2808"8": {2809"name": "entity.name.variable.local.cs"2810},2811"9": {2812"name": "keyword.control.loop.in.cs"2813}2814}2815},2816{2817"match": "(?x) # match foreach (var (x, y) in ...)\n(?:\\b(var)\\b\\s*)?\n(?<tuple>\\((?:[^\\(\\)]|\\g<tuple>)+\\))\\s+\n\\b(in)\\b",2818"captures": {2819"1": {2820"name": "storage.type.var.cs"2821},2822"2": {2823"patterns": [2824{2825"include": "#tuple-declaration-deconstruction-element-list"2826}2827]2828},2829"3": {2830"name": "keyword.control.loop.in.cs"2831}2832}2833},2834{2835"include": "#expression"2836}2837]2838}2839]2840},2841"try-statement": {2842"patterns": [2843{2844"include": "#try-block"2845},2846{2847"include": "#catch-clause"2848},2849{2850"include": "#finally-clause"2851}2852]2853},2854"try-block": {2855"begin": "(?<!\\.)\\b(try)\\b",2856"beginCaptures": {2857"1": {2858"name": "keyword.control.exception.try.cs"2859}2860},2861"end": "(?<=\\})",2862"patterns": [2863{2864"include": "#comment"2865},2866{2867"include": "#block"2868}2869]2870},2871"finally-clause": {2872"begin": "(?<!\\.)\\b(finally)\\b",2873"beginCaptures": {2874"1": {2875"name": "keyword.control.exception.finally.cs"2876}2877},2878"end": "(?<=\\})",2879"patterns": [2880{2881"include": "#comment"2882},2883{2884"include": "#block"2885}2886]2887},2888"catch-clause": {2889"begin": "(?<!\\.)\\b(catch)\\b",2890"beginCaptures": {2891"1": {2892"name": "keyword.control.exception.catch.cs"2893}2894},2895"end": "(?<=\\})",2896"patterns": [2897{2898"begin": "\\(",2899"beginCaptures": {2900"0": {2901"name": "punctuation.parenthesis.open.cs"2902}2903},2904"end": "\\)",2905"endCaptures": {2906"0": {2907"name": "punctuation.parenthesis.close.cs"2908}2909},2910"patterns": [2911{2912"match": "(?x)\n(?<type_name>\n (?:\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)* | # Are there any more names being dotted into?\n (?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s* # array suffix?\n \\[\n (?:\\s*,\\s*)* # commata for multi-dimensional arrays\n \\]\n \\s*\n (?:\\?)? # arrays can be nullable reference types\n \\s*\n )*\n )\n)\\s*\n(?:(\\g<identifier>)\\b)?",2913"captures": {2914"1": {2915"patterns": [2916{2917"include": "#type"2918}2919]2920},2921"6": {2922"name": "entity.name.variable.local.cs"2923}2924}2925}2926]2927},2928{2929"include": "#when-clause"2930},2931{2932"include": "#comment"2933},2934{2935"include": "#block"2936}2937]2938},2939"when-clause": {2940"begin": "(?<!\\.)\\b(when)\\b\\s*(\\()",2941"beginCaptures": {2942"1": {2943"name": "keyword.control.exception.when.cs"2944},2945"2": {2946"name": "punctuation.parenthesis.open.cs"2947}2948},2949"end": "\\)",2950"endCaptures": {2951"0": {2952"name": "punctuation.parenthesis.close.cs"2953}2954},2955"patterns": [2956{2957"include": "#expression"2958},2959{2960"include": "#comment"2961}2962]2963},2964"context-control-statement": {2965"match": "\\b(checked|unchecked|unsafe)\\b(?!\\s*[@_[:alpha:](])",2966"name": "keyword.control.context.$1.cs"2967},2968"context-control-paren-statement": {2969"patterns": [2970{2971"include": "#fixed-statement"2972},2973{2974"include": "#lock-statement"2975},2976{2977"include": "#using-statement"2978}2979]2980},2981"fixed-statement": {2982"begin": "\\b(fixed)\\b",2983"beginCaptures": {2984"1": {2985"name": "keyword.control.context.fixed.cs"2986}2987},2988"end": "(?<=\\))|(?=;|})",2989"patterns": [2990{2991"include": "#intrusive"2992},2993{2994"begin": "\\(",2995"beginCaptures": {2996"0": {2997"name": "punctuation.parenthesis.open.cs"2998}2999},3000"end": "\\)",3001"endCaptures": {3002"0": {3003"name": "punctuation.parenthesis.close.cs"3004}3005},3006"patterns": [3007{3008"include": "#intrusive"3009},3010{3011"include": "#local-variable-declaration"3012}3013]3014}3015]3016},3017"lock-statement": {3018"begin": "\\b(lock)\\b",3019"beginCaptures": {3020"1": {3021"name": "keyword.control.context.lock.cs"3022}3023},3024"end": "(?<=\\))|(?=;|})",3025"patterns": [3026{3027"include": "#intrusive"3028},3029{3030"begin": "\\(",3031"beginCaptures": {3032"0": {3033"name": "punctuation.parenthesis.open.cs"3034}3035},3036"end": "\\)",3037"endCaptures": {3038"0": {3039"name": "punctuation.parenthesis.close.cs"3040}3041},3042"patterns": [3043{3044"include": "#intrusive"3045},3046{3047"include": "#expression"3048}3049]3050}3051]3052},3053"using-statement": {3054"begin": "\\b(using)\\b",3055"beginCaptures": {3056"1": {3057"name": "keyword.control.context.using.cs"3058}3059},3060"end": "(?<=\\))|(?=;|})",3061"patterns": [3062{3063"include": "#intrusive"3064},3065{3066"begin": "\\(",3067"beginCaptures": {3068"0": {3069"name": "punctuation.parenthesis.open.cs"3070}3071},3072"end": "\\)",3073"endCaptures": {3074"0": {3075"name": "punctuation.parenthesis.close.cs"3076}3077},3078"patterns": [3079{3080"include": "#intrusive"3081},3082{3083"include": "#await-expression"3084},3085{3086"include": "#local-variable-declaration"3087},3088{3089"include": "#expression"3090}3091]3092},3093{3094"include": "#local-variable-declaration"3095}3096]3097},3098"labeled-statement": {3099"match": "(@?[_[:alpha:]][_[:alnum:]]*)\\s*(:)",3100"captures": {3101"1": {3102"name": "entity.name.label.cs"3103},3104"2": {3105"name": "punctuation.separator.colon.cs"3106}3107}3108},3109"local-declaration": {3110"patterns": [3111{3112"include": "#local-constant-declaration"3113},3114{3115"include": "#local-variable-declaration"3116},3117{3118"include": "#local-function-declaration"3119},3120{3121"include": "#local-tuple-var-deconstruction"3122},3123{3124"include": "#local-tuple-declaration-deconstruction"3125}3126]3127},3128"local-variable-declaration": {3129"begin": "(?x)\n(?:\n (?:(\\bref)\\s+(?:(\\breadonly)\\s+)?)?(\\bvar\\b)| # ref local\n (?<type_name>\n (?:\n (?:ref\\s+(?:readonly\\s+)?)? # ref local\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)* | # Are there any more names being dotted into?\n (?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))\n )\n (?:\\s*\\*\\s*)* # pointer suffix?\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s* # array suffix?\n \\[\n (?:\\s*,\\s*)* # commata for multi-dimensional arrays\n \\]\n \\s*\n (?:\\?)? # arrays can be nullable reference types\n \\s*\n )*\n )\n )\n)\\s+\n(\\g<identifier>)\\s*\n(?!=>)\n(?=,|;|=|\\))",3130"beginCaptures": {3131"1": {3132"name": "storage.modifier.ref.cs"3133},3134"2": {3135"name": "storage.modifier.readonly.cs"3136},3137"3": {3138"name": "storage.type.var.cs"3139},3140"4": {3141"patterns": [3142{3143"include": "#type"3144}3145]3146},3147"9": {3148"name": "entity.name.variable.local.cs"3149}3150},3151"end": "(?=[;)}])",3152"patterns": [3153{3154"name": "entity.name.variable.local.cs",3155"match": "@?[_[:alpha:]][_[:alnum:]]*"3156},3157{3158"include": "#punctuation-comma"3159},3160{3161"include": "#comment"3162},3163{3164"include": "#variable-initializer"3165}3166]3167},3168"local-constant-declaration": {3169"begin": "(?x)\n(?<const_keyword>\\b(?:const)\\b)\\s*\n(?<type_name>\n (?:\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)* | # Are there any more names being dotted into?\n (?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s* # array suffix?\n \\[\n (?:\\s*,\\s*)* # commata for multi-dimensional arrays\n \\]\n \\s*\n (?:\\?)? # arrays can be nullable reference types\n \\s*\n )*\n )\n)\\s+\n(\\g<identifier>)\\s*\n(?=,|;|=)",3170"beginCaptures": {3171"1": {3172"name": "storage.modifier.const.cs"3173},3174"2": {3175"patterns": [3176{3177"include": "#type"3178}3179]3180},3181"7": {3182"name": "entity.name.variable.local.cs"3183}3184},3185"end": "(?=;)",3186"patterns": [3187{3188"name": "entity.name.variable.local.cs",3189"match": "@?[_[:alpha:]][_[:alnum:]]*"3190},3191{3192"include": "#punctuation-comma"3193},3194{3195"include": "#comment"3196},3197{3198"include": "#variable-initializer"3199}3200]3201},3202"local-function-declaration": {3203"begin": "(?x)\n\\b((?:(?:async|unsafe|static|extern)\\s+)*)\n(?<type_name>\n (?:ref\\s+(?:readonly\\s+)?)? # ref return\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)* | # Are there any more names being dotted into?\n (?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))\n )\n (?:\\s*\\?)? # nullable suffix?\n (?:\\s* # array suffix?\n \\[\n \\s*(?:,\\s*)* # commata for multi-dimensional arrays\n \\]\n (?:\\s*\\?)? # arrays can be nullable reference types\n )*\n)\\s+\n(\\g<identifier>)\\s*\n(<[^<>]+>)?\\s*\n(?=\\()",3204"beginCaptures": {3205"1": {3206"patterns": [3207{3208"include": "#storage-modifier"3209}3210]3211},3212"2": {3213"patterns": [3214{3215"include": "#type"3216}3217]3218},3219"7": {3220"name": "entity.name.function.cs"3221},3222"8": {3223"patterns": [3224{3225"include": "#type-parameter-list"3226}3227]3228}3229},3230"end": "(?<=\\})|(?=;)",3231"patterns": [3232{3233"include": "#comment"3234},3235{3236"include": "#parenthesized-parameter-list"3237},3238{3239"include": "#generic-constraints"3240},3241{3242"include": "#expression-body"3243},3244{3245"include": "#block"3246}3247]3248},3249"local-tuple-var-deconstruction": {3250"begin": "(?x) # e.g. var (x, y) = GetPoint();\n(?:\\b(var)\\b\\s*)\n(?<tuple>\\((?:[^\\(\\)]|\\g<tuple>)+\\))\\s*\n(?=;|=|\\))",3251"beginCaptures": {3252"1": {3253"name": "storage.type.var.cs"3254},3255"2": {3256"patterns": [3257{3258"include": "#tuple-declaration-deconstruction-element-list"3259}3260]3261}3262},3263"end": "(?=;|\\))",3264"patterns": [3265{3266"include": "#comment"3267},3268{3269"include": "#variable-initializer"3270}3271]3272},3273"local-tuple-declaration-deconstruction": {3274"match": "(?x) # e.g. (int x, var y) = GetPoint();\n(?<tuple>\\((?:[^\\(\\)]|\\g<tuple>)+\\))\\s*\n(?!=>|==)(?==)",3275"captures": {3276"1": {3277"patterns": [3278{3279"include": "#tuple-declaration-deconstruction-element-list"3280}3281]3282}3283}3284},3285"tuple-deconstruction-assignment": {3286"match": "(?x)\n(?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))\\s*\n(?!=>|==)(?==)",3287"captures": {3288"1": {3289"patterns": [3290{3291"include": "#tuple-deconstruction-element-list"3292}3293]3294}3295}3296},3297"tuple-declaration-deconstruction-element-list": {3298"begin": "\\(",3299"beginCaptures": {3300"0": {3301"name": "punctuation.parenthesis.open.cs"3302}3303},3304"end": "\\)",3305"endCaptures": {3306"0": {3307"name": "punctuation.parenthesis.close.cs"3308}3309},3310"patterns": [3311{3312"include": "#comment"3313},3314{3315"include": "#tuple-declaration-deconstruction-element-list"3316},3317{3318"include": "#declaration-expression-tuple"3319},3320{3321"include": "#punctuation-comma"3322},3323{3324"match": "(?x) # e.g. x\n(@?[_[:alpha:]][_[:alnum:]]*)\\b\\s*\n(?=[,)])",3325"captures": {3326"1": {3327"name": "entity.name.variable.tuple-element.cs"3328}3329}3330}3331]3332},3333"tuple-deconstruction-element-list": {3334"begin": "\\(",3335"beginCaptures": {3336"0": {3337"name": "punctuation.parenthesis.open.cs"3338}3339},3340"end": "\\)",3341"endCaptures": {3342"0": {3343"name": "punctuation.parenthesis.close.cs"3344}3345},3346"patterns": [3347{3348"include": "#comment"3349},3350{3351"include": "#tuple-deconstruction-element-list"3352},3353{3354"include": "#declaration-expression-tuple"3355},3356{3357"include": "#punctuation-comma"3358},3359{3360"match": "(?x) # e.g. x\n(@?[_[:alpha:]][_[:alnum:]]*)\\b\\s*\n(?=[,)])",3361"captures": {3362"1": {3363"name": "variable.other.readwrite.cs"3364}3365}3366}3367]3368},3369"declaration-expression-local": {3370"match": "(?x) # e.g. int x OR var x\n(?:\n \\b(var)\\b|\n (?<type_name>\n (?:\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)* | # Are there any more names being dotted into?\n (?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s* # array suffix?\n \\[\n (?:\\s*,\\s*)* # commata for multi-dimensional arrays\n \\]\n \\s*\n (?:\\?)? # arrays can be nullable reference types\n \\s*\n )*\n )\n )\n)\\s+\n(\\g<identifier>)\\b\\s*\n(?=[,)\\]])",3371"captures": {3372"1": {3373"name": "storage.type.var.cs"3374},3375"2": {3376"patterns": [3377{3378"include": "#type"3379}3380]3381},3382"7": {3383"name": "entity.name.variable.local.cs"3384}3385}3386},3387"declaration-expression-tuple": {3388"match": "(?x) # e.g. int x OR var x\n(?:\n \\b(var)\\b|\n (?<type_name>\n (?:\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)* | # Are there any more names being dotted into?\n (?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s* # array suffix?\n \\[\n (?:\\s*,\\s*)* # commata for multi-dimensional arrays\n \\]\n \\s*\n (?:\\?)? # arrays can be nullable reference types\n \\s*\n )*\n )\n )\n)\\s+\n(\\g<identifier>)\\b\\s*\n(?=[,)])",3389"captures": {3390"1": {3391"name": "storage.type.var.cs"3392},3393"2": {3394"patterns": [3395{3396"include": "#type"3397}3398]3399},3400"7": {3401"name": "entity.name.variable.tuple-element.cs"3402}3403}3404},3405"expression-operator-expression": {3406"begin": "\\b(checked|unchecked|nameof)\\s*(\\()",3407"beginCaptures": {3408"1": {3409"name": "keyword.operator.expression.$1.cs"3410},3411"2": {3412"name": "punctuation.parenthesis.open.cs"3413}3414},3415"end": "\\)",3416"endCaptures": {3417"0": {3418"name": "punctuation.parenthesis.close.cs"3419}3420},3421"patterns": [3422{3423"include": "#expression"3424}3425]3426},3427"type-operator-expression": {3428"begin": "\\b(default|sizeof|typeof)\\s*(\\()",3429"beginCaptures": {3430"1": {3431"name": "keyword.operator.expression.$1.cs"3432},3433"2": {3434"name": "punctuation.parenthesis.open.cs"3435}3436},3437"end": "\\)",3438"endCaptures": {3439"0": {3440"name": "punctuation.parenthesis.close.cs"3441}3442},3443"patterns": [3444{3445"include": "#type"3446}3447]3448},3449"default-literal-expression": {3450"match": "\\b(default)\\b",3451"captures": {3452"1": {3453"name": "keyword.operator.expression.default.cs"3454}3455}3456},3457"throw-expression": {3458"match": "\\b(throw)\\b",3459"captures": {3460"1": {3461"name": "keyword.control.flow.throw.cs"3462}3463}3464},3465"interpolated-string": {3466"name": "string.quoted.double.cs",3467"begin": "\\$\"",3468"beginCaptures": {3469"0": {3470"name": "punctuation.definition.string.begin.cs"3471}3472},3473"end": "(\")|((?:[^\\\\\\n])$)",3474"endCaptures": {3475"1": {3476"name": "punctuation.definition.string.end.cs"3477},3478"2": {3479"name": "invalid.illegal.newline.cs"3480}3481},3482"patterns": [3483{3484"include": "#string-character-escape"3485},3486{3487"include": "#interpolation"3488}3489]3490},3491"verbatim-interpolated-string": {3492"name": "string.quoted.double.cs",3493"begin": "(?:\\$@|@\\$)\"",3494"beginCaptures": {3495"0": {3496"name": "punctuation.definition.string.begin.cs"3497}3498},3499"end": "\"(?=[^\"])",3500"endCaptures": {3501"0": {3502"name": "punctuation.definition.string.end.cs"3503}3504},3505"patterns": [3506{3507"include": "#verbatim-string-character-escape"3508},3509{3510"include": "#interpolation"3511}3512]3513},3514"interpolation": {3515"name": "meta.embedded.interpolation.cs",3516"begin": "(?<=[^\\{]|^)((?:\\{\\{)*)(\\{)(?=[^\\{])",3517"beginCaptures": {3518"1": {3519"name": "string.quoted.double.cs"3520},3521"2": {3522"name": "punctuation.definition.interpolation.begin.cs"3523}3524},3525"end": "\\}",3526"endCaptures": {3527"0": {3528"name": "punctuation.definition.interpolation.end.cs"3529}3530},3531"patterns": [3532{3533"include": "#expression"3534}3535]3536},3537"raw-interpolated-string": {3538"patterns": [3539{3540"include": "#raw-interpolated-string-five-or-more-quote-one-or-more-interpolation"3541},3542{3543"include": "#raw-interpolated-string-three-or-more-quote-three-or-more-interpolation"3544},3545{3546"include": "#raw-interpolated-string-quadruple-quote-double-interpolation"3547},3548{3549"include": "#raw-interpolated-string-quadruple-quote-single-interpolation"3550},3551{3552"include": "#raw-interpolated-string-triple-quote-double-interpolation"3553},3554{3555"include": "#raw-interpolated-string-triple-quote-single-interpolation"3556}3557]3558},3559"raw-interpolated-string-triple-quote-single-interpolation": {3560"name": "string.quoted.double.cs",3561"begin": "\\$\"\"\"",3562"beginCaptures": {3563"0": {3564"name": "punctuation.definition.string.begin.cs"3565}3566},3567"end": "\"\"\"",3568"endCaptures": {3569"0": {3570"name": "punctuation.definition.string.end.cs"3571}3572},3573"patterns": [3574{3575"include": "#raw-interpolation"3576}3577]3578},3579"raw-interpolated-string-triple-quote-double-interpolation": {3580"name": "string.quoted.double.cs",3581"begin": "\\$\\$\"\"\"",3582"beginCaptures": {3583"0": {3584"name": "punctuation.definition.string.begin.cs"3585}3586},3587"end": "\"\"\"",3588"endCaptures": {3589"0": {3590"name": "punctuation.definition.string.end.cs"3591}3592},3593"patterns": [3594{3595"include": "#double-raw-interpolation"3596}3597]3598},3599"raw-interpolated-string-quadruple-quote-single-interpolation": {3600"name": "string.quoted.double.cs",3601"begin": "\\$\"\"\"\"",3602"beginCaptures": {3603"0": {3604"name": "punctuation.definition.string.begin.cs"3605}3606},3607"end": "\"\"\"\"",3608"endCaptures": {3609"0": {3610"name": "punctuation.definition.string.end.cs"3611}3612},3613"patterns": [3614{3615"include": "#raw-interpolation"3616}3617]3618},3619"raw-interpolated-string-quadruple-quote-double-interpolation": {3620"name": "string.quoted.double.cs",3621"begin": "\\$\\$\"\"\"\"",3622"beginCaptures": {3623"0": {3624"name": "punctuation.definition.string.begin.cs"3625}3626},3627"end": "\"\"\"\"",3628"endCaptures": {3629"0": {3630"name": "punctuation.definition.string.end.cs"3631}3632},3633"patterns": [3634{3635"include": "#double-raw-interpolation"3636}3637]3638},3639"raw-interpolated-string-three-or-more-quote-three-or-more-interpolation": {3640"name": "string.quoted.double.cs",3641"begin": "\\$\\$\\$+\"\"\"+",3642"beginCaptures": {3643"0": {3644"name": "punctuation.definition.string.begin.cs"3645}3646},3647"end": "\"\"\"+",3648"endCaptures": {3649"0": {3650"name": "punctuation.definition.string.end.cs"3651}3652}3653},3654"raw-interpolated-string-five-or-more-quote-one-or-more-interpolation": {3655"name": "string.quoted.double.cs",3656"begin": "\\$+\"\"\"\"\"+",3657"beginCaptures": {3658"0": {3659"name": "punctuation.definition.string.begin.cs"3660}3661},3662"end": "\"\"\"\"\"+",3663"endCaptures": {3664"0": {3665"name": "punctuation.definition.string.end.cs"3666}3667}3668},3669"raw-interpolation": {3670"name": "meta.embedded.interpolation.cs",3671"begin": "(?<=[^\\{]|^)((?:\\{)*)(\\{)(?=[^\\{])",3672"beginCaptures": {3673"1": {3674"name": "string.quoted.double.cs"3675},3676"2": {3677"name": "punctuation.definition.interpolation.begin.cs"3678}3679},3680"end": "\\}",3681"endCaptures": {3682"0": {3683"name": "punctuation.definition.interpolation.end.cs"3684}3685},3686"patterns": [3687{3688"include": "#expression"3689}3690]3691},3692"double-raw-interpolation": {3693"name": "meta.embedded.interpolation.cs",3694"begin": "(?<=[^\\{][^\\{]|^)((?:\\{)*)(\\{\\{)(?=[^\\{])",3695"beginCaptures": {3696"1": {3697"name": "string.quoted.double.cs"3698},3699"2": {3700"name": "punctuation.definition.interpolation.begin.cs"3701}3702},3703"end": "\\}\\}",3704"endCaptures": {3705"0": {3706"name": "punctuation.definition.interpolation.end.cs"3707}3708},3709"patterns": [3710{3711"include": "#expression"3712}3713]3714},3715"literal": {3716"patterns": [3717{3718"include": "#boolean-literal"3719},3720{3721"include": "#null-literal"3722},3723{3724"include": "#numeric-literal"3725},3726{3727"include": "#char-literal"3728},3729{3730"include": "#raw-string-literal"3731},3732{3733"include": "#string-literal"3734},3735{3736"include": "#verbatim-string-literal"3737},3738{3739"include": "#tuple-literal"3740}3741]3742},3743"boolean-literal": {3744"patterns": [3745{3746"name": "constant.language.boolean.true.cs",3747"match": "(?<!\\.)\\btrue\\b"3748},3749{3750"name": "constant.language.boolean.false.cs",3751"match": "(?<!\\.)\\bfalse\\b"3752}3753]3754},3755"null-literal": {3756"name": "constant.language.null.cs",3757"match": "(?<!\\.)\\bnull\\b"3758},3759"numeric-literal": {3760"match": "(?<!\\w)\\.?\\d(?:(?:[0-9a-zA-Z_]|_)|(?<=[eE])[+-]|\\.\\d)*",3761"captures": {3762"0": {3763"patterns": [3764{3765"begin": "(?=.)",3766"end": "$",3767"patterns": [3768{3769"match": "(\\G(?=[0-9.])(?!0[xXbB]))([0-9](?:[0-9]|((?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)?((?:(?<=[0-9])|\\.(?=[0-9])))([0-9](?:[0-9]|((?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)?((?<!_)([eE])(\\+?)(\\-?)((?:[0-9](?:[0-9]|(?:(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)))?([fFdDmM](?!\\w))?$",3770"captures": {3771"2": {3772"name": "constant.numeric.decimal.cs",3773"patterns": [3774{3775"match": "(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])",3776"name": "constant.numeric.other.separator.thousands.cs"3777}3778]3779},3780"3": {3781"name": "constant.numeric.other.separator.thousands.cs"3782},3783"4": {3784"name": "constant.numeric.other.separator.decimals.cs"3785},3786"5": {3787"name": "constant.numeric.decimal.cs",3788"patterns": [3789{3790"match": "(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])",3791"name": "constant.numeric.other.separator.thousands.cs"3792}3793]3794},3795"6": {3796"name": "constant.numeric.other.separator.thousands.cs"3797},3798"8": {3799"name": "constant.numeric.other.exponent.cs"3800},3801"9": {3802"name": "keyword.operator.arithmetic.cs"3803},3804"10": {3805"name": "keyword.operator.arithmetic.cs"3806},3807"11": {3808"name": "constant.numeric.decimal.cs",3809"patterns": [3810{3811"match": "(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])",3812"name": "constant.numeric.other.separator.thousands.cs"3813}3814]3815},3816"12": {3817"name": "constant.numeric.other.suffix.cs"3818}3819}3820},3821{3822"match": "(\\G0[bB])([01_](?:[01_]|((?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)((?:(?:(?:(?:(?:[uU]|[uU]l)|[uU]L)|l[uU]?)|L[uU]?)|[fFdDmM])(?!\\w))?$",3823"captures": {3824"1": {3825"name": "constant.numeric.other.preffix.binary.cs"3826},3827"2": {3828"name": "constant.numeric.binary.cs",3829"patterns": [3830{3831"match": "(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])",3832"name": "constant.numeric.other.separator.thousands.cs"3833}3834]3835},3836"3": {3837"name": "constant.numeric.other.separator.thousands.cs"3838},3839"4": {3840"name": "constant.numeric.other.suffix.cs"3841}3842}3843},3844{3845"match": "(\\G0[xX])([0-9a-fA-F](?:[0-9a-fA-F]|((?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)((?:(?:(?:(?:(?:[uU]|[uU]l)|[uU]L)|l[uU]?)|L[uU]?)|[fFdDmM])(?!\\w))?$",3846"captures": {3847"1": {3848"name": "constant.numeric.other.preffix.hex.cs"3849},3850"2": {3851"name": "constant.numeric.hex.cs",3852"patterns": [3853{3854"match": "(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])",3855"name": "constant.numeric.other.separator.thousands.cs"3856}3857]3858},3859"3": {3860"name": "constant.numeric.other.separator.thousands.cs"3861},3862"4": {3863"name": "constant.numeric.other.suffix.cs"3864}3865}3866},3867{3868"match": "(\\G(?=[0-9.])(?!0[xXbB]))([0-9](?:[0-9]|((?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)((?<!_)([eE])(\\+?)(\\-?)((?:[0-9](?:[0-9]|(?:(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)))?((?:(?:(?:(?:(?:[uU]|[uU]l)|[uU]L)|l[uU]?)|L[uU]?)|[fFdDmM])(?!\\w))?$",3869"captures": {3870"2": {3871"name": "constant.numeric.decimal.cs",3872"patterns": [3873{3874"match": "(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])",3875"name": "constant.numeric.other.separator.thousands.cs"3876}3877]3878},3879"3": {3880"name": "constant.numeric.other.separator.thousands.cs"3881},3882"5": {3883"name": "constant.numeric.other.exponent.cs"3884},3885"6": {3886"name": "keyword.operator.arithmetic.cs"3887},3888"7": {3889"name": "keyword.operator.arithmetic.cs"3890},3891"8": {3892"name": "constant.numeric.decimal.cs",3893"patterns": [3894{3895"match": "(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])",3896"name": "constant.numeric.other.separator.thousands.cs"3897}3898]3899},3900"9": {3901"name": "constant.numeric.other.suffix.cs"3902}3903}3904},3905{3906"match": "(?:(?:[0-9a-zA-Z_]|_)|(?<=[eE])[+-]|\\.\\d)+",3907"name": "invalid.illegal.constant.numeric.cs"3908}3909]3910}3911]3912}3913}3914},3915"char-literal": {3916"name": "string.quoted.single.cs",3917"begin": "'",3918"beginCaptures": {3919"0": {3920"name": "punctuation.definition.char.begin.cs"3921}3922},3923"end": "(\\')|((?:[^\\\\\\n])$)",3924"endCaptures": {3925"1": {3926"name": "punctuation.definition.char.end.cs"3927},3928"2": {3929"name": "invalid.illegal.newline.cs"3930}3931},3932"patterns": [3933{3934"include": "#char-character-escape"3935}3936]3937},3938"char-character-escape": {3939"name": "constant.character.escape.cs",3940"match": "\\\\(x[0-9a-fA-F]{1,4}|u[0-9a-fA-F]{4}|.)"3941},3942"string-literal": {3943"name": "string.quoted.double.cs",3944"begin": "(?<!@)\"",3945"beginCaptures": {3946"0": {3947"name": "punctuation.definition.string.begin.cs"3948}3949},3950"end": "(\")|((?:[^\\\\\\n])$)",3951"endCaptures": {3952"1": {3953"name": "punctuation.definition.string.end.cs"3954},3955"2": {3956"name": "invalid.illegal.newline.cs"3957}3958},3959"patterns": [3960{3961"include": "#string-character-escape"3962}3963]3964},3965"string-character-escape": {3966"name": "constant.character.escape.cs",3967"match": "\\\\(x[0-9a-fA-F]{1,4}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|.)"3968},3969"verbatim-string-literal": {3970"name": "string.quoted.double.cs",3971"begin": "@\"",3972"beginCaptures": {3973"0": {3974"name": "punctuation.definition.string.begin.cs"3975}3976},3977"end": "\"(?=[^\"])",3978"endCaptures": {3979"0": {3980"name": "punctuation.definition.string.end.cs"3981}3982},3983"patterns": [3984{3985"include": "#verbatim-string-character-escape"3986}3987]3988},3989"verbatim-string-character-escape": {3990"name": "constant.character.escape.cs",3991"match": "\"\""3992},3993"raw-string-literal": {3994"patterns": [3995{3996"include": "#raw-string-literal-more"3997},3998{3999"include": "#raw-string-literal-quadruple"4000},4001{4002"include": "#raw-string-literal-triple"4003}4004]4005},4006"raw-string-literal-triple": {4007"name": "string.quoted.double.cs",4008"begin": "\"\"\"",4009"beginCaptures": {4010"0": {4011"name": "punctuation.definition.string.begin.cs"4012}4013},4014"end": "\"\"\"",4015"endCaptures": {4016"0": {4017"name": "punctuation.definition.string.end.cs"4018}4019}4020},4021"raw-string-literal-quadruple": {4022"name": "string.quoted.double.cs",4023"begin": "\"\"\"\"",4024"beginCaptures": {4025"0": {4026"name": "punctuation.definition.string.begin.cs"4027}4028},4029"end": "\"\"\"\"",4030"endCaptures": {4031"0": {4032"name": "punctuation.definition.string.end.cs"4033}4034}4035},4036"raw-string-literal-more": {4037"name": "string.quoted.double.cs",4038"begin": "\"\"\"\"\"+",4039"beginCaptures": {4040"0": {4041"name": "punctuation.definition.string.begin.cs"4042}4043},4044"end": "\"\"\"\"\"+",4045"endCaptures": {4046"0": {4047"name": "punctuation.definition.string.end.cs"4048}4049}4050},4051"tuple-literal": {4052"begin": "(\\()(?=.*[:,])",4053"beginCaptures": {4054"1": {4055"name": "punctuation.parenthesis.open.cs"4056}4057},4058"end": "\\)",4059"endCaptures": {4060"0": {4061"name": "punctuation.parenthesis.close.cs"4062}4063},4064"patterns": [4065{4066"include": "#comment"4067},4068{4069"include": "#tuple-literal-element"4070},4071{4072"include": "#expression"4073},4074{4075"include": "#punctuation-comma"4076}4077]4078},4079"tuple-literal-element": {4080"begin": "(?x)\n(@?[_[:alpha:]][_[:alnum:]]*)\\s*\n(?=:)",4081"beginCaptures": {4082"1": {4083"name": "entity.name.variable.tuple-element.cs"4084}4085},4086"end": "(:)",4087"endCaptures": {4088"0": {4089"name": "punctuation.separator.colon.cs"4090}4091}4092},4093"assignment-expression": {4094"begin": "(?:\\*|/|%|\\+|-|\\?\\?|\\&|\\^|<<|>>>?|\\|)?=(?!=|>)",4095"beginCaptures": {4096"0": {4097"patterns": [4098{4099"include": "#assignment-operators"4100}4101]4102}4103},4104"end": "(?=[,\\)\\];}])",4105"patterns": [4106{4107"include": "#ref-modifier"4108},4109{4110"include": "#expression"4111}4112]4113},4114"assignment-operators": {4115"patterns": [4116{4117"name": "keyword.operator.assignment.compound.cs",4118"match": "\\*=|/=|%=|\\+=|-=|\\?\\?="4119},4120{4121"name": "keyword.operator.assignment.compound.bitwise.cs",4122"match": "\\&=|\\^=|<<=|>>>?=|\\|="4123},4124{4125"name": "keyword.operator.assignment.cs",4126"match": "\\="4127}4128]4129},4130"expression-operators": {4131"patterns": [4132{4133"name": "keyword.operator.bitwise.shift.cs",4134"match": "<<|>>>?"4135},4136{4137"name": "keyword.operator.comparison.cs",4138"match": "==|!="4139},4140{4141"name": "keyword.operator.relational.cs",4142"match": "<=|>=|<|>"4143},4144{4145"name": "keyword.operator.logical.cs",4146"match": "\\!|&&|\\|\\|"4147},4148{4149"name": "keyword.operator.bitwise.cs",4150"match": "\\&|~|\\^|\\|"4151},4152{4153"name": "keyword.operator.decrement.cs",4154"match": "--"4155},4156{4157"name": "keyword.operator.increment.cs",4158"match": "\\+\\+"4159},4160{4161"name": "keyword.operator.arithmetic.cs",4162"match": "\\+|-(?!>)|\\*|/|%"4163},4164{4165"name": "keyword.operator.null-coalescing.cs",4166"match": "\\?\\?"4167},4168{4169"name": "keyword.operator.range.cs",4170"match": "\\.\\."4171}4172]4173},4174"with-expression": {4175"begin": "(?<!\\.)\\b(with)\\b\\s*(?=\\{|//|/\\*|$)",4176"beginCaptures": {4177"1": {4178"name": "keyword.operator.expression.with.cs"4179}4180},4181"end": "(?<=\\})",4182"patterns": [4183{4184"include": "#comment"4185},4186{4187"include": "#initializer-expression"4188}4189]4190},4191"conditional-operator": {4192"patterns": [4193{4194"name": "keyword.operator.conditional.question-mark.cs",4195"match": "\\?(?!\\?|\\s*[.\\[])"4196},4197{4198"name": "keyword.operator.conditional.colon.cs",4199"match": ":"4200}4201]4202},4203"await-expression": {4204"name": "keyword.operator.expression.await.cs",4205"match": "(?<!\\.\\s*)\\b(await)\\b"4206},4207"parenthesized-expression": {4208"begin": "\\(",4209"beginCaptures": {4210"0": {4211"name": "punctuation.parenthesis.open.cs"4212}4213},4214"end": "\\)",4215"endCaptures": {4216"0": {4217"name": "punctuation.parenthesis.close.cs"4218}4219},4220"patterns": [4221{4222"include": "#expression"4223}4224]4225},4226"initializer-expression": {4227"begin": "\\{",4228"beginCaptures": {4229"0": {4230"name": "punctuation.curlybrace.open.cs"4231}4232},4233"end": "\\}",4234"endCaptures": {4235"0": {4236"name": "punctuation.curlybrace.close.cs"4237}4238},4239"patterns": [4240{4241"include": "#expression"4242},4243{4244"include": "#punctuation-comma"4245}4246]4247},4248"identifier": {4249"name": "variable.other.readwrite.cs",4250"match": "@?[_[:alpha:]][_[:alnum:]]*"4251},4252"cast-expression": {4253"match": "(?x)\n(\\()\\s*\n(?<type_name>\n (?:\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)* | # Are there any more names being dotted into?\n (?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s* # array suffix?\n \\[\n (?:\\s*,\\s*)* # commata for multi-dimensional arrays\n \\]\n \\s*\n (?:\\?)? # arrays can be nullable reference types\n \\s*\n )*\n )\n)\\s*\n(\\))(?=\\s*-*!*@?[_[:alnum:]\\(])",4254"captures": {4255"1": {4256"name": "punctuation.parenthesis.open.cs"4257},4258"2": {4259"patterns": [4260{4261"include": "#type"4262}4263]4264},4265"7": {4266"name": "punctuation.parenthesis.close.cs"4267}4268}4269},4270"as-expression": {4271"match": "(?x)\n(?<!\\.)\\b(as)\\b\\s*\n(?<type_name>\n (?:\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)* | # Are there any more names being dotted into?\n (?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))\n )\n (?:\\s*\\?(?!\\?))? # nullable suffix?\n (?:\\s* # array suffix?\n \\[\n \\s*(?:,\\s*)* # commata for multi-dimensional arrays\n \\]\n (?:\\s*\\?(?!\\?))? # arrays can be nullable reference types\n )*\n )\n)?",4272"captures": {4273"1": {4274"name": "keyword.operator.expression.as.cs"4275},4276"2": {4277"patterns": [4278{4279"include": "#type"4280}4281]4282}4283}4284},4285"language-variable": {4286"patterns": [4287{4288"name": "variable.language.$1.cs",4289"match": "\\b(base|this)\\b"4290},4291{4292"name": "variable.other.$1.cs",4293"match": "\\b(value)\\b"4294}4295]4296},4297"invocation-expression": {4298"begin": "(?x)\n(?:\n (?:(\\?)\\s*)? # preceding null-conditional operator?\n (\\.)\\s*| # preceding dot?\n (->)\\s* # preceding pointer arrow?\n)?\n(@?[_[:alpha:]][_[:alnum:]]*)\\s* # method name\n(\n <\n (?<type_args>\n [^<>()]|\n \\((?:[^<>()]|<[^<>()]*>|\\([^<>()]*\\))*\\)|\n <\\g<type_args>*>\n )*\n >\\s*\n)? # type arguments\n(?=\\() # open paren of argument list",4299"beginCaptures": {4300"1": {4301"name": "keyword.operator.null-conditional.cs"4302},4303"2": {4304"name": "punctuation.accessor.cs"4305},4306"3": {4307"name": "punctuation.accessor.pointer.cs"4308},4309"4": {4310"name": "entity.name.function.cs"4311},4312"5": {4313"patterns": [4314{4315"include": "#type-arguments"4316}4317]4318}4319},4320"end": "(?<=\\))",4321"patterns": [4322{4323"include": "#argument-list"4324}4325]4326},4327"element-access-expression": {4328"begin": "(?x)\n(?:\n (?:(\\?)\\s*)? # preceding null-conditional operator?\n (\\.)\\s*| # preceding dot?\n (->)\\s* # preceding pointer arrow?\n)?\n(?:(@?[_[:alpha:]][_[:alnum:]]*)\\s*)? # property name\n(?:(\\?)\\s*)? # null-conditional operator?\n(?=\\[) # open bracket of argument list",4329"beginCaptures": {4330"1": {4331"name": "keyword.operator.null-conditional.cs"4332},4333"2": {4334"name": "punctuation.accessor.cs"4335},4336"3": {4337"name": "punctuation.accessor.pointer.cs"4338},4339"4": {4340"name": "variable.other.object.property.cs"4341},4342"5": {4343"name": "keyword.operator.null-conditional.cs"4344}4345},4346"end": "(?<=\\])(?!\\s*\\[)",4347"patterns": [4348{4349"include": "#bracketed-argument-list"4350}4351]4352},4353"member-access-expression": {4354"patterns": [4355{4356"match": "(?x)\n(?:\n (?:(\\?)\\s*)? # preceding null-conditional operator?\n (\\.)\\s*| # preceding dot?\n (->)\\s* # preceding pointer arrow?\n)\n(@?[_[:alpha:]][_[:alnum:]]*)\\s* # property name\n(?![_[:alnum:]]|\\(|(\\?)?\\[|<) # next character is not alpha-numeric, nor a (, [, or <. Also, test for ?[",4357"captures": {4358"1": {4359"name": "keyword.operator.null-conditional.cs"4360},4361"2": {4362"name": "punctuation.accessor.cs"4363},4364"3": {4365"name": "punctuation.accessor.pointer.cs"4366},4367"4": {4368"name": "variable.other.object.property.cs"4369}4370}4371},4372{4373"match": "(?x)\n(\\.)?\\s*\n(@?[_[:alpha:]][_[:alnum:]]*)\n(?<type_params>\\s*<([^<>]|\\g<type_params>)+>\\s*)\n(?=\n (\\s*\\?)?\n \\s*\\.\\s*@?[_[:alpha:]][_[:alnum:]]*\n)",4374"captures": {4375"1": {4376"name": "punctuation.accessor.cs"4377},4378"2": {4379"name": "variable.other.object.cs"4380},4381"3": {4382"patterns": [4383{4384"include": "#type-arguments"4385}4386]4387}4388}4389},4390{4391"match": "(?x)\n(@?[_[:alpha:]][_[:alnum:]]*)\n(?=\n \\s*(?:(?:\\?\\s*)?\\.|->)\n \\s*@?[_[:alpha:]][_[:alnum:]]*\n)",4392"captures": {4393"1": {4394"name": "variable.other.object.cs"4395}4396}4397}4398]4399},4400"object-creation-expression": {4401"patterns": [4402{4403"include": "#object-creation-expression-with-parameters"4404},4405{4406"include": "#object-creation-expression-with-no-parameters"4407}4408]4409},4410"object-creation-expression-with-parameters": {4411"begin": "(?x)\n(new)(?:\\s+\n(?<type_name>\n (?:\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)* | # Are there any more names being dotted into?\n (?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s* # array suffix?\n \\[\n (?:\\s*,\\s*)* # commata for multi-dimensional arrays\n \\]\n \\s*\n (?:\\?)? # arrays can be nullable reference types\n \\s*\n )*\n )\n))?\\s*\n(?=\\()",4412"beginCaptures": {4413"1": {4414"name": "keyword.operator.expression.new.cs"4415},4416"2": {4417"patterns": [4418{4419"include": "#type"4420}4421]4422}4423},4424"end": "(?<=\\))",4425"patterns": [4426{4427"include": "#argument-list"4428}4429]4430},4431"object-creation-expression-with-no-parameters": {4432"match": "(?x)\n(new)\\s+\n(?<type_name>\n (?:\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)* | # Are there any more names being dotted into?\n (?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s* # array suffix?\n \\[\n (?:\\s*,\\s*)* # commata for multi-dimensional arrays\n \\]\n \\s*\n (?:\\?)? # arrays can be nullable reference types\n \\s*\n )*\n )\n)\\s*\n(?=\\{|//|/\\*|$)",4433"captures": {4434"1": {4435"name": "keyword.operator.expression.new.cs"4436},4437"2": {4438"patterns": [4439{4440"include": "#type"4441}4442]4443}4444}4445},4446"array-creation-expression": {4447"begin": "(?x)\n\\b(new|stackalloc)\\b\\s*\n(?<type_name>\n (?:\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)* | # Are there any more names being dotted into?\n (?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))\n )\n (?:\\s*\\*\\s*)* # pointer suffix?\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s* # array suffix?\n \\[\n (?:\\s*,\\s*)* # commata for multi-dimensional arrays\n \\]\n \\s*\n (?:\\?)? # arrays can be nullable reference types\n \\s*\n )*\n )\n)?\\s*\n(?=\\[)",4448"beginCaptures": {4449"1": {4450"name": "keyword.operator.expression.$1.cs"4451},4452"2": {4453"patterns": [4454{4455"include": "#type"4456}4457]4458}4459},4460"end": "(?<=\\])",4461"patterns": [4462{4463"include": "#bracketed-argument-list"4464}4465]4466},4467"anonymous-object-creation-expression": {4468"begin": "\\b(new)\\b\\s*(?=\\{|//|/\\*|$)",4469"beginCaptures": {4470"1": {4471"name": "keyword.operator.expression.new.cs"4472}4473},4474"end": "(?<=\\})",4475"patterns": [4476{4477"include": "#comment"4478},4479{4480"include": "#initializer-expression"4481}4482]4483},4484"bracketed-parameter-list": {4485"begin": "(?=(\\[))",4486"beginCaptures": {4487"1": {4488"name": "punctuation.squarebracket.open.cs"4489}4490},4491"end": "(?=(\\]))",4492"endCaptures": {4493"1": {4494"name": "punctuation.squarebracket.close.cs"4495}4496},4497"patterns": [4498{4499"begin": "(?<=\\[)",4500"end": "(?=\\])",4501"patterns": [4502{4503"include": "#comment"4504},4505{4506"include": "#attribute-section"4507},4508{4509"include": "#parameter"4510},4511{4512"include": "#punctuation-comma"4513},4514{4515"include": "#variable-initializer"4516}4517]4518}4519]4520},4521"parenthesized-parameter-list": {4522"begin": "(\\()",4523"beginCaptures": {4524"0": {4525"name": "punctuation.parenthesis.open.cs"4526}4527},4528"end": "(\\))",4529"endCaptures": {4530"0": {4531"name": "punctuation.parenthesis.close.cs"4532}4533},4534"patterns": [4535{4536"include": "#comment"4537},4538{4539"include": "#attribute-section"4540},4541{4542"include": "#parameter"4543},4544{4545"include": "#punctuation-comma"4546},4547{4548"include": "#variable-initializer"4549}4550]4551},4552"parameter": {4553"match": "(?x)\n(?:(?:\\b(ref|params|out|in|this)\\b)\\s+)?\n(?<type_name>\n (?:\n (?:ref\\s+)? # ref return\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)* | # Are there any more names being dotted into?\n (?<tuple>\\s*\\((?:[^()]|\\g<tuple>)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s* # array suffix?\n \\[\n (?:\\s*,\\s*)* # commata for multi-dimensional arrays\n \\]\n \\s*\n (?:\\?)? # arrays can be nullable reference types\n \\s*\n )*\n )\n)\\s+\n(\\g<identifier>)",4554"captures": {4555"1": {4556"name": "storage.modifier.$1.cs"4557},4558"2": {4559"patterns": [4560{4561"include": "#type"4562}4563]4564},4565"7": {4566"name": "entity.name.variable.parameter.cs"4567}4568}4569},4570"argument-list": {4571"begin": "\\(",4572"beginCaptures": {4573"0": {4574"name": "punctuation.parenthesis.open.cs"4575}4576},4577"end": "\\)",4578"endCaptures": {4579"0": {4580"name": "punctuation.parenthesis.close.cs"4581}4582},4583"patterns": [4584{4585"include": "#named-argument"4586},4587{4588"include": "#argument"4589},4590{4591"include": "#punctuation-comma"4592}4593]4594},4595"bracketed-argument-list": {4596"begin": "\\[",4597"beginCaptures": {4598"0": {4599"name": "punctuation.squarebracket.open.cs"4600}4601},4602"end": "\\]",4603"endCaptures": {4604"0": {4605"name": "punctuation.squarebracket.close.cs"4606}4607},4608"patterns": [4609{4610"include": "#named-argument"4611},4612{4613"include": "#argument"4614},4615{4616"include": "#punctuation-comma"4617}4618]4619},4620"named-argument": {4621"begin": "(@?[_[:alpha:]][_[:alnum:]]*)\\s*(:)",4622"beginCaptures": {4623"1": {4624"name": "entity.name.variable.parameter.cs"4625},4626"2": {4627"name": "punctuation.separator.colon.cs"4628}4629},4630"end": "(?=(,|\\)|\\]))",4631"patterns": [4632{4633"include": "#argument"4634}4635]4636},4637"argument": {4638"patterns": [4639{4640"name": "storage.modifier.$1.cs",4641"match": "\\b(ref|in)\\b"4642},4643{4644"begin": "\\b(out)\\b",4645"beginCaptures": {4646"1": {4647"name": "storage.modifier.out.cs"4648}4649},4650"end": "(?=,|\\)|\\])",4651"patterns": [4652{4653"include": "#declaration-expression-local"4654},4655{4656"include": "#expression"4657}4658]4659},4660{4661"include": "#expression"4662}4663]4664},4665"query-expression": {4666"begin": "(?x)\n\\b(from)\\b\\s*\n(?<type_name>\n (?:\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)* | # Are there any more names being dotted into?\n (?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s* # array suffix?\n \\[\n (?:\\s*,\\s*)* # commata for multi-dimensional arrays\n \\]\n \\s*\n (?:\\?)? # arrays can be nullable reference types\n \\s*\n )*\n )\n)?\n\\s+(\\g<identifier>)\\b\\s*\n\\b(in)\\b\\s*",4667"beginCaptures": {4668"1": {4669"name": "keyword.operator.expression.query.from.cs"4670},4671"2": {4672"patterns": [4673{4674"include": "#type"4675}4676]4677},4678"7": {4679"name": "entity.name.variable.range-variable.cs"4680},4681"8": {4682"name": "keyword.operator.expression.query.in.cs"4683}4684},4685"end": "(?=;|\\))",4686"patterns": [4687{4688"include": "#query-body"4689},4690{4691"include": "#expression"4692}4693]4694},4695"query-body": {4696"patterns": [4697{4698"include": "#let-clause"4699},4700{4701"include": "#where-clause"4702},4703{4704"include": "#join-clause"4705},4706{4707"include": "#orderby-clause"4708},4709{4710"include": "#select-clause"4711},4712{4713"include": "#group-clause"4714}4715]4716},4717"let-clause": {4718"begin": "(?x)\n\\b(let)\\b\\s*\n(@?[_[:alpha:]][_[:alnum:]]*)\\b\\s*\n(=)\\s*",4719"beginCaptures": {4720"1": {4721"name": "keyword.operator.expression.query.let.cs"4722},4723"2": {4724"name": "entity.name.variable.range-variable.cs"4725},4726"3": {4727"name": "keyword.operator.assignment.cs"4728}4729},4730"end": "(?=;|\\))",4731"patterns": [4732{4733"include": "#query-body"4734},4735{4736"include": "#expression"4737}4738]4739},4740"where-clause": {4741"begin": "(?x)\n\\b(where)\\b\\s*",4742"beginCaptures": {4743"1": {4744"name": "keyword.operator.expression.query.where.cs"4745}4746},4747"end": "(?=;|\\))",4748"patterns": [4749{4750"include": "#query-body"4751},4752{4753"include": "#expression"4754}4755]4756},4757"join-clause": {4758"begin": "(?x)\n\\b(join)\\b\\s*\n(?<type_name>\n (?:\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)* | # Are there any more names being dotted into?\n (?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s* # array suffix?\n \\[\n (?:\\s*,\\s*)* # commata for multi-dimensional arrays\n \\]\n \\s*\n (?:\\?)? # arrays can be nullable reference types\n \\s*\n )*\n )\n)?\n\\s+(\\g<identifier>)\\b\\s*\n\\b(in)\\b\\s*",4759"beginCaptures": {4760"1": {4761"name": "keyword.operator.expression.query.join.cs"4762},4763"2": {4764"patterns": [4765{4766"include": "#type"4767}4768]4769},4770"7": {4771"name": "entity.name.variable.range-variable.cs"4772},4773"8": {4774"name": "keyword.operator.expression.query.in.cs"4775}4776},4777"end": "(?=;|\\))",4778"patterns": [4779{4780"include": "#join-on"4781},4782{4783"include": "#join-equals"4784},4785{4786"include": "#join-into"4787},4788{4789"include": "#query-body"4790},4791{4792"include": "#expression"4793}4794]4795},4796"join-on": {4797"match": "\\b(on)\\b\\s*",4798"captures": {4799"1": {4800"name": "keyword.operator.expression.query.on.cs"4801}4802}4803},4804"join-equals": {4805"match": "\\b(equals)\\b\\s*",4806"captures": {4807"1": {4808"name": "keyword.operator.expression.query.equals.cs"4809}4810}4811},4812"join-into": {4813"match": "(?x)\n\\b(into)\\b\\s*\n(@?[_[:alpha:]][_[:alnum:]]*)\\b\\s*",4814"captures": {4815"1": {4816"name": "keyword.operator.expression.query.into.cs"4817},4818"2": {4819"name": "entity.name.variable.range-variable.cs"4820}4821}4822},4823"orderby-clause": {4824"begin": "\\b(orderby)\\b\\s*",4825"beginCaptures": {4826"1": {4827"name": "keyword.operator.expression.query.orderby.cs"4828}4829},4830"end": "(?=;|\\))",4831"patterns": [4832{4833"include": "#ordering-direction"4834},4835{4836"include": "#query-body"4837},4838{4839"include": "#expression"4840},4841{4842"include": "#punctuation-comma"4843}4844]4845},4846"ordering-direction": {4847"match": "\\b(ascending|descending)\\b",4848"captures": {4849"1": {4850"name": "keyword.operator.expression.query.$1.cs"4851}4852}4853},4854"select-clause": {4855"begin": "\\b(select)\\b\\s*",4856"beginCaptures": {4857"1": {4858"name": "keyword.operator.expression.query.select.cs"4859}4860},4861"end": "(?=;|\\))",4862"patterns": [4863{4864"include": "#query-body"4865},4866{4867"include": "#expression"4868}4869]4870},4871"group-clause": {4872"begin": "\\b(group)\\b\\s*",4873"beginCaptures": {4874"1": {4875"name": "keyword.operator.expression.query.group.cs"4876}4877},4878"end": "(?=;|\\))",4879"patterns": [4880{4881"include": "#group-by"4882},4883{4884"include": "#group-into"4885},4886{4887"include": "#query-body"4888},4889{4890"include": "#expression"4891}4892]4893},4894"group-by": {4895"match": "\\b(by)\\b\\s*",4896"captures": {4897"1": {4898"name": "keyword.operator.expression.query.by.cs"4899}4900}4901},4902"group-into": {4903"match": "(?x)\n\\b(into)\\b\\s*\n(@?[_[:alpha:]][_[:alnum:]]*)\\b\\s*",4904"captures": {4905"1": {4906"name": "keyword.operator.expression.query.into.cs"4907},4908"2": {4909"name": "entity.name.variable.range-variable.cs"4910}4911}4912},4913"anonymous-method-expression": {4914"patterns": [4915{4916"begin": "(?x)\n((?:\\b(?:async|static)\\b\\s*)*)\n(?:\n (@?[_[:alpha:]][_[:alnum:]]*)\\b|\n (\\()\n (?<tuple>(?:[^()]|\\(\\g<tuple>\\))*)\n (\\))\n)\\s*\n(=>)",4917"beginCaptures": {4918"1": {4919"patterns": [4920{4921"match": "async|static",4922"name": "storage.modifier.$0.cs"4923}4924]4925},4926"2": {4927"name": "entity.name.variable.parameter.cs"4928},4929"3": {4930"name": "punctuation.parenthesis.open.cs"4931},4932"4": {4933"patterns": [4934{4935"include": "#comment"4936},4937{4938"include": "#explicit-anonymous-function-parameter"4939},4940{4941"include": "#implicit-anonymous-function-parameter"4942},4943{4944"include": "#default-argument"4945},4946{4947"include": "#punctuation-comma"4948}4949]4950},4951"5": {4952"name": "punctuation.parenthesis.close.cs"4953},4954"6": {4955"name": "keyword.operator.arrow.cs"4956}4957},4958"end": "(?=[,;)}])",4959"patterns": [4960{4961"include": "#intrusive"4962},4963{4964"begin": "(?={)",4965"end": "(?=[,;)}])",4966"patterns": [4967{4968"include": "#block"4969},4970{4971"include": "#intrusive"4972}4973]4974},4975{4976"begin": "\\b(ref)\\b|(?=\\S)",4977"beginCaptures": {4978"1": {4979"name": "storage.modifier.ref.cs"4980}4981},4982"end": "(?=[,;)}])",4983"patterns": [4984{4985"include": "#expression"4986}4987]4988}4989]4990},4991{4992"begin": "(?x)\n((?:\\b(?:async|static)\\b\\s*)*)\n\\b(delegate)\\b\\s*",4993"beginCaptures": {4994"1": {4995"patterns": [4996{4997"match": "async|static",4998"name": "storage.modifier.$0.cs"4999}5000]5001},5002"2": {5003"name": "storage.type.delegate.cs"5004}5005},5006"end": "(?<=})|(?=[,;)}])",5007"patterns": [5008{5009"include": "#intrusive"5010},5011{5012"begin": "\\(",5013"beginCaptures": {5014"0": {5015"name": "punctuation.parenthesis.open.cs"5016}5017},5018"end": "\\)",5019"endCaptures": {5020"0": {5021"name": "punctuation.parenthesis.close.cs"5022}5023},5024"patterns": [5025{5026"include": "#intrusive"5027},5028{5029"include": "#explicit-anonymous-function-parameter"5030},5031{5032"include": "#punctuation-comma"5033}5034]5035},5036{5037"include": "#block"5038}5039]5040}5041]5042},5043"explicit-anonymous-function-parameter": {5044"match": "(?x)\n(?:\\b(ref|params|out|in)\\b\\s*)?\n(?<type_name>\n (?:\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args><(?:[^<>]|\\g<type_args>)*>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)* | # Are there any more names being dotted into?\n (?<tuple>\\s*\\((?:[^()]|\\g<tuple>)*\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s* # array suffix?\n \\[\n (?:\\s*,\\s*)* # commata for multi-dimensional arrays\n \\]\n \\s*\n (?:\\?)? # arrays can be nullable reference types\n \\s*\n )*\n )\n)\\s*\n\\b(\\g<identifier>)\\b",5045"captures": {5046"1": {5047"name": "storage.modifier.$1.cs"5048},5049"2": {5050"patterns": [5051{5052"include": "#type"5053}5054]5055},5056"7": {5057"name": "entity.name.variable.parameter.cs"5058}5059}5060},5061"implicit-anonymous-function-parameter": {5062"match": "\\@?[_[:alpha:]][_[:alnum:]]*\\b",5063"name": "entity.name.variable.parameter.cs"5064},5065"default-argument": {5066"begin": "=",5067"beginCaptures": {5068"0": {5069"name": "keyword.operator.assignment.cs"5070}5071},5072"end": "(?=,|\\))",5073"patterns": [5074{5075"include": "#expression"5076}5077]5078},5079"type": {5080"patterns": [5081{5082"include": "#comment"5083},5084{5085"include": "#ref-modifier"5086},5087{5088"include": "#readonly-modifier"5089},5090{5091"include": "#tuple-type"5092},5093{5094"include": "#type-builtin"5095},5096{5097"include": "#type-name"5098},5099{5100"include": "#type-arguments"5101},5102{5103"include": "#type-array-suffix"5104},5105{5106"include": "#type-nullable-suffix"5107},5108{5109"include": "#type-pointer-suffix"5110}5111]5112},5113"ref-modifier": {5114"name": "storage.modifier.ref.cs",5115"match": "\\bref\\b"5116},5117"readonly-modifier": {5118"name": "storage.modifier.readonly.cs",5119"match": "\\breadonly\\b"5120},5121"tuple-type": {5122"begin": "\\(",5123"beginCaptures": {5124"0": {5125"name": "punctuation.parenthesis.open.cs"5126}5127},5128"end": "\\)",5129"endCaptures": {5130"0": {5131"name": "punctuation.parenthesis.close.cs"5132}5133},5134"patterns": [5135{5136"include": "#tuple-element"5137},5138{5139"include": "#punctuation-comma"5140}5141]5142},5143"tuple-element": {5144"match": "(?x)\n(?<type_name>\n (?:\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)* | # Are there any more names being dotted into?\n (?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s* # array suffix?\n \\[\n (?:\\s*,\\s*)* # commata for multi-dimensional arrays\n \\]\n \\s*\n (?:\\?)? # arrays can be nullable reference types\n \\s*\n )*\n )\n)\n(?:(?<tuple_name>\\g<identifier>)\\b)?",5145"captures": {5146"1": {5147"patterns": [5148{5149"include": "#type"5150}5151]5152},5153"6": {5154"name": "entity.name.variable.tuple-element.cs"5155}5156}5157},5158"type-builtin": {5159"match": "\\b(bool|s?byte|u?short|n?u?int|u?long|float|double|decimal|char|string|object|void|dynamic)\\b",5160"captures": {5161"1": {5162"name": "keyword.type.$1.cs"5163}5164}5165},5166"type-name": {5167"patterns": [5168{5169"match": "(@?[_[:alpha:]][_[:alnum:]]*)\\s*(\\:\\:)",5170"captures": {5171"1": {5172"name": "entity.name.type.alias.cs"5173},5174"2": {5175"name": "punctuation.separator.coloncolon.cs"5176}5177}5178},5179{5180"match": "(@?[_[:alpha:]][_[:alnum:]]*)\\s*(\\.)",5181"captures": {5182"1": {5183"name": "entity.name.type.cs"5184},5185"2": {5186"name": "punctuation.accessor.cs"5187}5188}5189},5190{5191"match": "(\\.)\\s*(@?[_[:alpha:]][_[:alnum:]]*)",5192"captures": {5193"1": {5194"name": "punctuation.accessor.cs"5195},5196"2": {5197"name": "entity.name.type.cs"5198}5199}5200},5201{5202"name": "entity.name.type.cs",5203"match": "@?[_[:alpha:]][_[:alnum:]]*"5204}5205]5206},5207"type-arguments": {5208"begin": "<",5209"beginCaptures": {5210"0": {5211"name": "punctuation.definition.typeparameters.begin.cs"5212}5213},5214"end": ">",5215"endCaptures": {5216"0": {5217"name": "punctuation.definition.typeparameters.end.cs"5218}5219},5220"patterns": [5221{5222"include": "#type"5223},5224{5225"include": "#punctuation-comma"5226}5227]5228},5229"type-array-suffix": {5230"begin": "\\[",5231"beginCaptures": {5232"0": {5233"name": "punctuation.squarebracket.open.cs"5234}5235},5236"end": "\\]",5237"endCaptures": {5238"0": {5239"name": "punctuation.squarebracket.close.cs"5240}5241},5242"patterns": [5243{5244"include": "#intrusive"5245},5246{5247"include": "#punctuation-comma"5248}5249]5250},5251"type-nullable-suffix": {5252"match": "\\?",5253"name": "punctuation.separator.question-mark.cs"5254},5255"type-pointer-suffix": {5256"match": "\\*",5257"name": "punctuation.separator.asterisk.cs"5258},5259"operator-assignment": {5260"name": "keyword.operator.assignment.cs",5261"match": "(?<!=|!)(=)(?!=)"5262},5263"punctuation-comma": {5264"name": "punctuation.separator.comma.cs",5265"match": ","5266},5267"punctuation-semicolon": {5268"name": "punctuation.terminator.statement.cs",5269"match": ";"5270},5271"punctuation-accessor": {5272"name": "punctuation.accessor.cs",5273"match": "\\."5274},5275"intrusive": {5276"patterns": [5277{5278"include": "#preprocessor"5279},5280{5281"include": "#comment"5282}5283]5284},5285"preprocessor": {5286"name": "meta.preprocessor.cs",5287"begin": "^\\s*(\\#)\\s*",5288"beginCaptures": {5289"1": {5290"name": "punctuation.separator.hash.cs"5291}5292},5293"end": "(?<=$)",5294"patterns": [5295{5296"include": "#preprocessor-comment"5297},5298{5299"include": "#preprocessor-define-or-undef"5300},5301{5302"include": "#preprocessor-if-or-elif"5303},5304{5305"include": "#preprocessor-else-or-endif"5306},5307{5308"include": "#preprocessor-warning-or-error"5309},5310{5311"include": "#preprocessor-region"5312},5313{5314"include": "#preprocessor-endregion"5315},5316{5317"include": "#preprocessor-load"5318},5319{5320"include": "#preprocessor-r"5321},5322{5323"include": "#preprocessor-line"5324},5325{5326"include": "#preprocessor-pragma-warning"5327},5328{5329"include": "#preprocessor-pragma-checksum"5330},5331{5332"include": "#preprocessor-app-directive"5333}5334]5335},5336"preprocessor-comment": {5337"patterns": [5338{5339"name": "comment.line.double-slash.cs",5340"match": "(//).*(?=$)",5341"captures": {5342"1": {5343"name": "punctuation.definition.comment.cs"5344}5345}5346},5347{5348"name": "comment.block.cs",5349"begin": "/\\*",5350"end": "\\*/",5351"captures": {5352"0": {5353"name": "punctuation.definition.comment.cs"5354}5355}5356}5357]5358},5359"preprocessor-define-or-undef": {5360"match": "\\b(?:(define)|(undef))\\b\\s*\\b([_[:alpha:]][_[:alnum:]]*)\\b",5361"captures": {5362"1": {5363"name": "keyword.preprocessor.define.cs"5364},5365"2": {5366"name": "keyword.preprocessor.undef.cs"5367},5368"3": {5369"name": "entity.name.variable.preprocessor.symbol.cs"5370}5371}5372},5373"preprocessor-if-or-elif": {5374"begin": "\\b(?:(if)|(elif))\\b",5375"beginCaptures": {5376"1": {5377"name": "keyword.preprocessor.if.cs"5378},5379"2": {5380"name": "keyword.preprocessor.elif.cs"5381}5382},5383"end": "(?=$)",5384"patterns": [5385{5386"include": "#preprocessor-comment"5387},5388{5389"include": "#preprocessor-expression"5390}5391]5392},5393"preprocessor-else-or-endif": {5394"match": "\\b(?:(else)|(endif))\\b",5395"captures": {5396"1": {5397"name": "keyword.preprocessor.else.cs"5398},5399"2": {5400"name": "keyword.preprocessor.endif.cs"5401}5402}5403},5404"preprocessor-warning-or-error": {5405"match": "\\b(?:(warning)|(error))\\b\\s*(.*)(?=$)",5406"captures": {5407"1": {5408"name": "keyword.preprocessor.warning.cs"5409},5410"2": {5411"name": "keyword.preprocessor.error.cs"5412},5413"3": {5414"name": "string.unquoted.preprocessor.message.cs"5415}5416}5417},5418"preprocessor-load": {5419"begin": "\\b(load)\\b",5420"beginCaptures": {5421"1": {5422"name": "keyword.preprocessor.load.cs"5423}5424},5425"end": "(?=$)",5426"patterns": [5427{5428"match": "\\\"[^\"]*\\\"",5429"captures": {5430"0": {5431"name": "string.quoted.double.cs"5432}5433}5434}5435]5436},5437"preprocessor-r": {5438"begin": "\\b(r)\\b",5439"beginCaptures": {5440"1": {5441"name": "keyword.preprocessor.r.cs"5442}5443},5444"end": "(?=$)",5445"patterns": [5446{5447"match": "\\\"[^\"]*\\\"",5448"captures": {5449"0": {5450"name": "string.quoted.double.cs"5451}5452}5453}5454]5455},5456"preprocessor-region": {5457"match": "\\b(region)\\b\\s*(.*)(?=$)",5458"captures": {5459"1": {5460"name": "keyword.preprocessor.region.cs"5461},5462"2": {5463"name": "string.unquoted.preprocessor.message.cs"5464}5465}5466},5467"preprocessor-endregion": {5468"match": "\\b(endregion)\\b",5469"captures": {5470"1": {5471"name": "keyword.preprocessor.endregion.cs"5472}5473}5474},5475"preprocessor-line": {5476"begin": "\\b(line)\\b",5477"beginCaptures": {5478"1": {5479"name": "keyword.preprocessor.line.cs"5480}5481},5482"end": "(?=$)",5483"patterns": [5484{5485"match": "\\b(?:(default|hidden))",5486"captures": {5487"1": {5488"name": "keyword.preprocessor.default.cs"5489},5490"2": {5491"name": "keyword.preprocessor.hidden.cs"5492}5493}5494},5495{5496"match": "[0-9]+",5497"captures": {5498"0": {5499"name": "constant.numeric.decimal.cs"5500}5501}5502},5503{5504"match": "\\\"[^\"]*\\\"",5505"captures": {5506"0": {5507"name": "string.quoted.double.cs"5508}5509}5510}5511]5512},5513"preprocessor-pragma-warning": {5514"match": "\\b(pragma)\\b\\s*\\b(warning)\\b\\s*\\b(?:(disable)|(restore))\\b(\\s*[0-9]+(?:\\s*,\\s*[0-9]+)?)?",5515"captures": {5516"1": {5517"name": "keyword.preprocessor.pragma.cs"5518},5519"2": {5520"name": "keyword.preprocessor.warning.cs"5521},5522"3": {5523"name": "keyword.preprocessor.disable.cs"5524},5525"4": {5526"name": "keyword.preprocessor.restore.cs"5527},5528"5": {5529"patterns": [5530{5531"match": "[0-9]+",5532"captures": {5533"0": {5534"name": "constant.numeric.decimal.cs"5535}5536}5537},5538{5539"include": "#punctuation-comma"5540}5541]5542}5543}5544},5545"preprocessor-pragma-checksum": {5546"match": "\\b(pragma)\\b\\s*\\b(checksum)\\b\\s*(\\\"[^\"]*\\\")\\s*(\\\"[^\"]*\\\")\\s*(\\\"[^\"]*\\\")",5547"captures": {5548"1": {5549"name": "keyword.preprocessor.pragma.cs"5550},5551"2": {5552"name": "keyword.preprocessor.checksum.cs"5553},5554"3": {5555"name": "string.quoted.double.cs"5556},5557"4": {5558"name": "string.quoted.double.cs"5559},5560"5": {5561"name": "string.quoted.double.cs"5562}5563}5564},5565"preprocessor-app-directive": {5566"begin": "\\s*(:)\\s*",5567"beginCaptures": {5568"1": {5569"name": "punctuation.separator.colon.cs"5570}5571},5572"end": "(?=$)",5573"patterns": [5574{5575"include": "#preprocessor-app-directive-package"5576},5577{5578"include": "#preprocessor-app-directive-property"5579},5580{5581"include": "#preprocessor-app-directive-project"5582},5583{5584"include": "#preprocessor-app-directive-sdk"5585},5586{5587"include": "#preprocessor-app-directive-generic"5588}5589]5590},5591"preprocessor-app-directive-package": {5592"match": "\\b(package)\\b\\s*([_[:alpha:]][_.[:alnum:]]*)?(@)?(.*)?\\s*",5593"captures": {5594"1": {5595"name": "keyword.preprocessor.package.cs"5596},5597"2": {5598"patterns": [5599{5600"include": "#preprocessor-app-directive-package-name"5601}5602]5603},5604"3": {5605"name": "punctuation.separator.at.cs"5606},5607"4": {5608"name": "string.unquoted.preprocessor.message.cs"5609}5610}5611},5612"preprocessor-app-directive-property": {5613"match": "\\b(property)\\b\\s*([_[:alpha:]][_[:alnum:]]*)?(=)?(.*)?\\s*",5614"captures": {5615"1": {5616"name": "keyword.preprocessor.property.cs"5617},5618"2": {5619"name": "entity.name.variable.preprocessor.symbol.cs"5620},5621"3": {5622"name": "punctuation.separator.equals.cs"5623},5624"4": {5625"name": "string.unquoted.preprocessor.message.cs"5626}5627}5628},5629"preprocessor-app-directive-project": {5630"match": "\\b(project)\\b\\s*(.*)?\\s*",5631"captures": {5632"1": {5633"name": "keyword.preprocessor.project.cs"5634},5635"2": {5636"name": "string.unquoted.preprocessor.message.cs"5637}5638}5639},5640"preprocessor-app-directive-sdk": {5641"match": "\\b(sdk)\\b\\s*([_[:alpha:]][_.[:alnum:]]*)?(@)?(.*)?\\s*",5642"captures": {5643"1": {5644"name": "keyword.preprocessor.sdk.cs"5645},5646"2": {5647"patterns": [5648{5649"include": "#preprocessor-app-directive-package-name"5650}5651]5652},5653"3": {5654"name": "punctuation.separator.at.cs"5655},5656"4": {5657"name": "string.unquoted.preprocessor.message.cs"5658}5659}5660},5661"preprocessor-app-directive-package-name": {5662"patterns": [5663{5664"match": "(\\.)([_[:alpha:]][_[:alnum:]]*)",5665"captures": {5666"1": {5667"name": "punctuation.dot.cs"5668},5669"2": {5670"name": "entity.name.variable.preprocessor.symbol.cs"5671}5672}5673},5674{5675"name": "entity.name.variable.preprocessor.symbol.cs",5676"match": "[_[:alpha:]][_[:alnum:]]*"5677}5678]5679},5680"preprocessor-app-directive-generic": {5681"match": "\\b(.*)?\\s*",5682"captures": {5683"1": {5684"name": "string.unquoted.preprocessor.message.cs"5685}5686}5687},5688"preprocessor-expression": {5689"patterns": [5690{5691"begin": "\\(",5692"beginCaptures": {5693"0": {5694"name": "punctuation.parenthesis.open.cs"5695}5696},5697"end": "\\)",5698"endCaptures": {5699"0": {5700"name": "punctuation.parenthesis.close.cs"5701}5702},5703"patterns": [5704{5705"include": "#preprocessor-expression"5706}5707]5708},5709{5710"match": "\\b(?:(true)|(false)|([_[:alpha:]][_[:alnum:]]*))\\b",5711"captures": {5712"1": {5713"name": "constant.language.boolean.true.cs"5714},5715"2": {5716"name": "constant.language.boolean.false.cs"5717},5718"3": {5719"name": "entity.name.variable.preprocessor.symbol.cs"5720}5721}5722},5723{5724"match": "(==|!=)|(\\!|&&|\\|\\|)",5725"captures": {5726"1": {5727"name": "keyword.operator.comparison.cs"5728},5729"2": {5730"name": "keyword.operator.logical.cs"5731}5732}5733}5734]5735},5736"comment": {5737"patterns": [5738{5739"name": "comment.block.documentation.cs",5740"begin": "(^\\s+)?(///)(?!/)",5741"while": "^(\\s*)(///)(?!/)",5742"captures": {5743"1": {5744"name": "punctuation.whitespace.comment.leading.cs"5745},5746"2": {5747"name": "punctuation.definition.comment.cs"5748}5749},5750"patterns": [5751{5752"include": "#xml-doc-comment"5753}5754]5755},5756{5757"name": "comment.block.documentation.cs",5758"begin": "(^\\s+)?(/\\*\\*)(?!/)",5759"end": "(^\\s+)?(\\*/)",5760"captures": {5761"1": {5762"name": "punctuation.whitespace.comment.leading.cs"5763},5764"2": {5765"name": "punctuation.definition.comment.cs"5766}5767},5768"patterns": [5769{5770"begin": "\\G(?=(?~\\*/)$)",5771"while": "^(\\s*+)(\\*(?!/))?(?=(?~\\*/)$)",5772"whileCaptures": {5773"1": {5774"name": "punctuation.whitespace.comment.leading.cs"5775},5776"2": {5777"name": "punctuation.definition.comment.cs"5778}5779},5780"patterns": [5781{5782"include": "#xml-doc-comment"5783}5784]5785},5786{5787"include": "#xml-doc-comment"5788}5789]5790},5791{5792"name": "comment.line.double-slash.cs",5793"begin": "(^\\s+)?(//).*$",5794"while": "^(\\s*)(//).*$",5795"captures": {5796"1": {5797"name": "punctuation.whitespace.comment.leading.cs"5798},5799"2": {5800"name": "punctuation.definition.comment.cs"5801}5802}5803},5804{5805"name": "comment.block.cs",5806"begin": "/\\*",5807"end": "\\*/",5808"captures": {5809"0": {5810"name": "punctuation.definition.comment.cs"5811}5812}5813}5814]5815},5816"xml-doc-comment": {5817"patterns": [5818{5819"include": "#xml-comment"5820},5821{5822"include": "#xml-character-entity"5823},5824{5825"include": "#xml-cdata"5826},5827{5828"include": "#xml-tag"5829}5830]5831},5832"xml-tag": {5833"name": "meta.tag.cs",5834"begin": "(?x)\n(</?)\n(\n (?:\n ([-_[:alnum:]]+)\n (:)\n )?\n ([-_[:alnum:]]+)\n)",5835"beginCaptures": {5836"1": {5837"name": "punctuation.definition.tag.cs"5838},5839"2": {5840"name": "entity.name.tag.cs"5841},5842"3": {5843"name": "entity.name.tag.namespace.cs"5844},5845"4": {5846"name": "punctuation.separator.colon.cs"5847},5848"5": {5849"name": "entity.name.tag.localname.cs"5850}5851},5852"end": "(/?>)",5853"endCaptures": {5854"1": {5855"name": "punctuation.definition.tag.cs"5856}5857},5858"patterns": [5859{5860"include": "#xml-attribute"5861}5862]5863},5864"xml-attribute": {5865"patterns": [5866{5867"match": "(?x)\n(?:^|\\s+)\n(\n (?:\n ([-_[:alnum:]]+)\n (:)\n )?\n ([-_[:alnum:]]+)\n)\n(=)",5868"captures": {5869"1": {5870"name": "entity.other.attribute-name.cs"5871},5872"2": {5873"name": "entity.other.attribute-name.namespace.cs"5874},5875"3": {5876"name": "punctuation.separator.colon.cs"5877},5878"4": {5879"name": "entity.other.attribute-name.localname.cs"5880},5881"5": {5882"name": "punctuation.separator.equals.cs"5883}5884}5885},5886{5887"include": "#xml-string"5888}5889]5890},5891"xml-cdata": {5892"name": "string.unquoted.cdata.cs",5893"begin": "<!\\[CDATA\\[",5894"beginCaptures": {5895"0": {5896"name": "punctuation.definition.string.begin.cs"5897}5898},5899"end": "\\]\\]>",5900"endCaptures": {5901"0": {5902"name": "punctuation.definition.string.end.cs"5903}5904}5905},5906"xml-string": {5907"patterns": [5908{5909"name": "string.quoted.single.cs",5910"begin": "\\'",5911"beginCaptures": {5912"0": {5913"name": "punctuation.definition.string.begin.cs"5914}5915},5916"end": "\\'",5917"endCaptures": {5918"0": {5919"name": "punctuation.definition.string.end.cs"5920}5921},5922"patterns": [5923{5924"include": "#xml-character-entity"5925}5926]5927},5928{5929"name": "string.quoted.double.cs",5930"begin": "\\\"",5931"beginCaptures": {5932"0": {5933"name": "punctuation.definition.string.begin.cs"5934}5935},5936"end": "\\\"",5937"endCaptures": {5938"0": {5939"name": "punctuation.definition.string.end.cs"5940}5941},5942"patterns": [5943{5944"include": "#xml-character-entity"5945}5946]5947}5948]5949},5950"xml-character-entity": {5951"patterns": [5952{5953"name": "constant.character.entity.cs",5954"match": "(?x)\n(&)\n(\n (?:[[:alpha:]:_][[:alnum:]:_.-]*)|\n (?:\\#[[:digit:]]+)|\n (?:\\#x[[:xdigit:]]+)\n)\n(;)",5955"captures": {5956"1": {5957"name": "punctuation.definition.constant.cs"5958},5959"3": {5960"name": "punctuation.definition.constant.cs"5961}5962}5963},5964{5965"name": "invalid.illegal.bad-ampersand.cs",5966"match": "&"5967}5968]5969},5970"xml-comment": {5971"name": "comment.block.cs",5972"begin": "<!--",5973"beginCaptures": {5974"0": {5975"name": "punctuation.definition.comment.cs"5976}5977},5978"end": "-->",5979"endCaptures": {5980"0": {5981"name": "punctuation.definition.comment.cs"5982}5983}5984}5985}5986}59875988