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