tm-grammars 1.22.19 → 1.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (234) hide show
  1. package/NOTICE +286 -1
  2. package/README.md +241 -239
  3. package/grammars/abap.json +36 -36
  4. package/grammars/actionscript-3.json +29 -29
  5. package/grammars/ada.json +78 -78
  6. package/grammars/angular-expression.json +62 -62
  7. package/grammars/angular-html.json +0 -1
  8. package/grammars/angular-inline-style.json +3 -3
  9. package/grammars/angular-inline-template.json +2 -2
  10. package/grammars/angular-template-blocks.json +3 -3
  11. package/grammars/angular-template.json +1 -1
  12. package/grammars/angular-ts.json +251 -251
  13. package/grammars/apache.json +31 -31
  14. package/grammars/apex.json +108 -108
  15. package/grammars/apl.json +18 -18
  16. package/grammars/applescript.json +11 -11
  17. package/grammars/ara.json +13 -13
  18. package/grammars/asciidoc.json +234 -234
  19. package/grammars/asm.json +90 -90
  20. package/grammars/astro.json +25 -25
  21. package/grammars/awk.json +8 -8
  22. package/grammars/ballerina.json +150 -150
  23. package/grammars/bat.json +28 -28
  24. package/grammars/beancount.json +33 -33
  25. package/grammars/berry.json +11 -11
  26. package/grammars/bibtex.json +12 -12
  27. package/grammars/bicep.json +12 -12
  28. package/grammars/blade.json +183 -183
  29. package/grammars/bsl.json +58 -58
  30. package/grammars/c.json +162 -162
  31. package/grammars/cadence.json +20 -20
  32. package/grammars/cairo.json +10 -10
  33. package/grammars/clarity.json +20 -20
  34. package/grammars/clojure.json +25 -25
  35. package/grammars/cmake.json +3 -3
  36. package/grammars/cobol.json +91 -91
  37. package/grammars/codeql.json +154 -154
  38. package/grammars/coffee.json +45 -45
  39. package/grammars/common-lisp.json +50 -50
  40. package/grammars/coq.json +10 -10
  41. package/grammars/cpp-macro.json +410 -410
  42. package/grammars/cpp.json +641 -641
  43. package/grammars/crystal.json +68 -68
  44. package/grammars/csharp.json +196 -196
  45. package/grammars/css.json +83 -83
  46. package/grammars/csv.json +1 -1
  47. package/grammars/cue.json +55 -55
  48. package/grammars/cypher.json +11 -11
  49. package/grammars/d.json +127 -32
  50. package/grammars/dart.json +18 -18
  51. package/grammars/dax.json +9 -9
  52. package/grammars/desktop.json +9 -9
  53. package/grammars/diff.json +3 -3
  54. package/grammars/dotenv.json +3 -3
  55. package/grammars/dream-maker.json +20 -20
  56. package/grammars/edge.json +8 -8
  57. package/grammars/elixir.json +44 -44
  58. package/grammars/elm.json +23 -23
  59. package/grammars/emacs-lisp.json +76 -76
  60. package/grammars/erb.json +2 -2
  61. package/grammars/erlang.json +29 -29
  62. package/grammars/es-tag-css.json +3 -3
  63. package/grammars/es-tag-glsl.json +3 -3
  64. package/grammars/es-tag-html.json +3 -3
  65. package/grammars/es-tag-sql.json +2 -2
  66. package/grammars/es-tag-xml.json +2 -2
  67. package/grammars/fennel.json +8 -8
  68. package/grammars/fish.json +10 -10
  69. package/grammars/fluent.json +10 -10
  70. package/grammars/fortran-fixed-form.json +1 -1
  71. package/grammars/fortran-free-form.json +106 -106
  72. package/grammars/fsharp.json +70 -70
  73. package/grammars/gdresource.json +15 -15
  74. package/grammars/gdscript.json +31 -27
  75. package/grammars/gdshader.json +18 -18
  76. package/grammars/genie.json +6 -6
  77. package/grammars/gherkin.json +1 -1
  78. package/grammars/git-commit.json +1 -1
  79. package/grammars/git-rebase.json +1 -1
  80. package/grammars/gleam.json +11 -11
  81. package/grammars/glimmer-js.json +35 -35
  82. package/grammars/glimmer-ts.json +35 -35
  83. package/grammars/glsl.json +4 -4
  84. package/grammars/gnuplot.json +41 -41
  85. package/grammars/go.json +155 -155
  86. package/grammars/graphql.json +20 -20
  87. package/grammars/groovy.json +44 -44
  88. package/grammars/hack.json +74 -74
  89. package/grammars/haml.json +24 -24
  90. package/grammars/handlebars.json +25 -25
  91. package/grammars/haskell.json +99 -99
  92. package/grammars/haxe.json +51 -51
  93. package/grammars/hcl.json +43 -43
  94. package/grammars/hjson.json +29 -29
  95. package/grammars/hlsl.json +15 -15
  96. package/grammars/html-derivative.json +0 -1
  97. package/grammars/html.json +28 -29
  98. package/grammars/http.json +17 -17
  99. package/grammars/hxml.json +3 -3
  100. package/grammars/hy.json +10 -10
  101. package/grammars/imba.json +168 -173
  102. package/grammars/ini.json +2 -2
  103. package/grammars/java.json +54 -54
  104. package/grammars/javascript.json +262 -262
  105. package/grammars/jinja-html.json +3 -3
  106. package/grammars/jinja.json +15 -15
  107. package/grammars/jison.json +18 -18
  108. package/grammars/json.json +6 -6
  109. package/grammars/json5.json +12 -12
  110. package/grammars/jsonc.json +6 -6
  111. package/grammars/jsonl.json +6 -6
  112. package/grammars/jsonnet.json +15 -15
  113. package/grammars/jssm.json +4 -4
  114. package/grammars/jsx.json +262 -262
  115. package/grammars/julia.json +45 -45
  116. package/grammars/kotlin.json +15 -15
  117. package/grammars/kusto.json +13 -13
  118. package/grammars/latex.json +260 -260
  119. package/grammars/lean.json +12 -12
  120. package/grammars/less.json +91 -91
  121. package/grammars/liquid.json +96 -62
  122. package/grammars/llvm.json +122 -0
  123. package/grammars/log.json +22 -22
  124. package/grammars/logo.json +2 -2
  125. package/grammars/lua.json +34 -34
  126. package/grammars/luau.json +20 -20
  127. package/grammars/make.json +22 -22
  128. package/grammars/markdown-vue.json +1 -1
  129. package/grammars/markdown.json +83 -83
  130. package/grammars/marko.json +19 -19
  131. package/grammars/matlab.json +29 -29
  132. package/grammars/mdc.json +17 -17
  133. package/grammars/mdx.json +278 -278
  134. package/grammars/mermaid.json +97 -97
  135. package/grammars/mipsasm.json +2 -2
  136. package/grammars/mojo.json +122 -122
  137. package/grammars/move.json +35 -35
  138. package/grammars/narrat.json +10 -10
  139. package/grammars/nextflow.json +11 -11
  140. package/grammars/nginx.json +45 -45
  141. package/grammars/nim.json +44 -44
  142. package/grammars/nix.json +71 -71
  143. package/grammars/nushell.json +36 -36
  144. package/grammars/objective-c.json +129 -129
  145. package/grammars/objective-cpp.json +245 -245
  146. package/grammars/ocaml.json +229 -229
  147. package/grammars/pascal.json +4 -4
  148. package/grammars/perl.json +64 -64
  149. package/grammars/php.json +199 -199
  150. package/grammars/plsql.json +10 -10
  151. package/grammars/po.json +4 -4
  152. package/grammars/polar.json +13 -13
  153. package/grammars/postcss.json +31 -31
  154. package/grammars/powerquery.json +10 -10
  155. package/grammars/powershell.json +54 -54
  156. package/grammars/prisma.json +13 -13
  157. package/grammars/prolog.json +3 -3
  158. package/grammars/proto.json +11 -11
  159. package/grammars/pug.json +30 -30
  160. package/grammars/puppet.json +35 -35
  161. package/grammars/purescript.json +843 -467
  162. package/grammars/python.json +126 -126
  163. package/grammars/qml.json +18 -18
  164. package/grammars/qss.json +7 -7
  165. package/grammars/r.json +17 -17
  166. package/grammars/racket.json +58 -58
  167. package/grammars/raku.json +15 -15
  168. package/grammars/razor.json +30 -30
  169. package/grammars/reg.json +3 -3
  170. package/grammars/regexp.json +15 -15
  171. package/grammars/rel.json +4 -4
  172. package/grammars/riscv.json +15 -15
  173. package/grammars/rst.json +26 -26
  174. package/grammars/ruby.json +103 -106
  175. package/grammars/rust.json +13 -13
  176. package/grammars/sas.json +9 -9
  177. package/grammars/sass.json +35 -35
  178. package/grammars/scala.json +75 -75
  179. package/grammars/scheme.json +16 -16
  180. package/grammars/scss.json +68 -68
  181. package/grammars/sdbl.json +18 -18
  182. package/grammars/shaderlab.json +8 -8
  183. package/grammars/shellscript.json +111 -111
  184. package/grammars/shellsession.json +1 -1
  185. package/grammars/smalltalk.json +5 -5
  186. package/grammars/solidity.json +20 -20
  187. package/grammars/soy.json +30 -30
  188. package/grammars/sparql.json +1 -1
  189. package/grammars/splunk.json +6 -6
  190. package/grammars/sql.json +8 -8
  191. package/grammars/ssh-config.json +2 -2
  192. package/grammars/stata.json +90 -90
  193. package/grammars/stylus.json +48 -48
  194. package/grammars/svelte.json +35 -25
  195. package/grammars/swift.json +114 -114
  196. package/grammars/system-verilog.json +25 -25
  197. package/grammars/systemd.json +16 -16
  198. package/grammars/talonscript.json +12 -12
  199. package/grammars/tasl.json +10 -10
  200. package/grammars/tcl.json +11 -11
  201. package/grammars/templ.json +34 -34
  202. package/grammars/terraform.json +42 -42
  203. package/grammars/tex.json +14 -14
  204. package/grammars/toml.json +15 -15
  205. package/grammars/tsx.json +262 -262
  206. package/grammars/turtle.json +2 -2
  207. package/grammars/twig.json +37 -37
  208. package/grammars/typescript.json +251 -251
  209. package/grammars/typespec.json +54 -273
  210. package/grammars/typst.json +34 -34
  211. package/grammars/v.json +32 -32
  212. package/grammars/vala.json +6 -6
  213. package/grammars/vb.json +7 -7
  214. package/grammars/verilog.json +4 -4
  215. package/grammars/vhdl.json +10 -10
  216. package/grammars/viml.json +22 -22
  217. package/grammars/vue-html.json +10 -10
  218. package/grammars/vue-sfc-style-variable-injection.json +1 -1
  219. package/grammars/vue.json +65 -65
  220. package/grammars/vyper.json +126 -126
  221. package/grammars/wasm.json +26 -26
  222. package/grammars/wenyan.json +7 -7
  223. package/grammars/wgsl.json +9 -9
  224. package/grammars/wikitext.json +66 -66
  225. package/grammars/wit.json +1409 -0
  226. package/grammars/wolfram.json +446 -446
  227. package/grammars/xml.json +11 -11
  228. package/grammars/xsl.json +1 -1
  229. package/grammars/yaml.json +24 -24
  230. package/grammars/zenscript.json +8 -8
  231. package/grammars/zig.json +11 -11
  232. package/index.d.ts +7 -0
  233. package/index.js +1003 -283
  234. package/package.json +1 -1
@@ -29,7 +29,7 @@
29
29
  }
30
30
  },
31
31
  "contentName": "meta.accessor.getter.cs",
32
- "end": "\\}",
32
+ "end": "}",
33
33
  "endCaptures": {
34
34
  "0": {
35
35
  "name": "punctuation.curlybrace.close.cs"
@@ -57,7 +57,7 @@
57
57
  }
58
58
  },
59
59
  "contentName": "meta.accessor.getter.cs",
60
- "end": "(?=;|\\})",
60
+ "end": "(?=[;}])",
61
61
  "patterns": [
62
62
  {
63
63
  "include": "#ref-modifier"
@@ -77,7 +77,7 @@
77
77
  }
78
78
  },
79
79
  "contentName": "meta.accessor.setter.cs",
80
- "end": "\\}",
80
+ "end": "}",
81
81
  "endCaptures": {
82
82
  "0": {
83
83
  "name": "punctuation.curlybrace.close.cs"
@@ -97,7 +97,7 @@
97
97
  }
98
98
  },
99
99
  "contentName": "meta.accessor.setter.cs",
100
- "end": "(?=;|\\})",
100
+ "end": "(?=[;}])",
101
101
  "patterns": [
102
102
  {
103
103
  "include": "#ref-modifier"
@@ -163,7 +163,7 @@
163
163
  "include": "#intrusive"
164
164
  },
165
165
  {
166
- "begin": "(?={)",
166
+ "begin": "(?=\\{)",
167
167
  "end": "(?=[,;)}])",
168
168
  "patterns": [
169
169
  {
@@ -249,7 +249,7 @@
249
249
  "name": "keyword.operator.expression.new.cs"
250
250
  }
251
251
  },
252
- "end": "(?<=\\})",
252
+ "end": "(?<=})",
253
253
  "patterns": [
254
254
  {
255
255
  "include": "#comment"
@@ -272,7 +272,7 @@
272
272
  "name": "storage.modifier.out.cs"
273
273
  }
274
274
  },
275
- "end": "(?=,|\\)|\\])",
275
+ "end": "(?=[,)\\]])",
276
276
  "patterns": [
277
277
  {
278
278
  "include": "#declaration-expression-local"
@@ -313,7 +313,7 @@
313
313
  ]
314
314
  },
315
315
  "array-creation-expression": {
316
- "begin": "\\b(new|stackalloc)\\b\\s*(?<type_name>(?:(?:(?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)?(?<name_and_type_args>\\g<identifier>\\s*(?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?)(?:\\s*\\.\\s*\\g<name_and_type_args>)*|(?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\)))(?:\\s*\\?\\s*)?(?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*(?:\\?)?\\s*)*))?\\s*(?=\\[)",
316
+ "begin": "\\b(new|stackalloc)\\b\\s*(?<type_name>(?:(?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*::\\s*)?(?<name_and_type_args>\\g<identifier>\\s*(?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?)(?:\\s*\\.\\s*\\g<name_and_type_args>)*|(?<tuple>\\s*\\((?:[^()]|\\g<tuple>)+\\)))(?:\\s*\\?\\s*)?(?:\\s*\\[(?:\\s*,\\s*)*]\\s*\\??\\s*)*)?\\s*(?=\\[)",
317
317
  "beginCaptures": {
318
318
  "1": {
319
319
  "name": "keyword.operator.expression.$1.cs"
@@ -326,7 +326,7 @@
326
326
  ]
327
327
  }
328
328
  },
329
- "end": "(?<=\\])",
329
+ "end": "(?<=])",
330
330
  "patterns": [
331
331
  {
332
332
  "include": "#bracketed-argument-list"
@@ -346,10 +346,10 @@
346
346
  ]
347
347
  }
348
348
  },
349
- "match": "(?<!\\.)\\b(as)\\b\\s*(?<type_name>(?:(?:(?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)?(?<name_and_type_args>\\g<identifier>\\s*(?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?)(?:\\s*\\.\\s*\\g<name_and_type_args>)*|(?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\)))(?:\\s*\\?(?!\\?))?(?:\\s*\\[\\s*(?:,\\s*)*\\](?:\\s*\\?(?!\\?))?)*))?"
349
+ "match": "(?<!\\.)\\b(as)\\b\\s*(?<type_name>(?:(?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*::\\s*)?(?<name_and_type_args>\\g<identifier>\\s*(?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?)(?:\\s*\\.\\s*\\g<name_and_type_args>)*|(?<tuple>\\s*\\((?:[^()]|\\g<tuple>)+\\)))(?:\\s*\\?(?!\\?))?(?:\\s*\\[\\s*(?:,\\s*)*](?:\\s*\\?(?!\\?))?)*)?"
350
350
  },
351
351
  "assignment-expression": {
352
- "begin": "(?:\\*|/|%|\\+|-|\\?\\?|\\&|\\^|<<|>>>?|\\|)?=(?!=|>)",
352
+ "begin": "(?:[*/%+\\-]|\\?\\?|[\\&\\^]|<<|>>>?|\\|)?=(?![=>])",
353
353
  "beginCaptures": {
354
354
  "0": {
355
355
  "patterns": [
@@ -359,7 +359,7 @@
359
359
  ]
360
360
  }
361
361
  },
362
- "end": "(?=[,\\)\\];}])",
362
+ "end": "(?=[,)\\];}])",
363
363
  "patterns": [
364
364
  {
365
365
  "include": "#ref-modifier"
@@ -376,11 +376,11 @@
376
376
  "name": "keyword.operator.assignment.compound.cs"
377
377
  },
378
378
  {
379
- "match": "\\&=|\\^=|<<=|>>>?=|\\|=",
379
+ "match": "&=|\\^=|<<=|>>>?=|\\|=",
380
380
  "name": "keyword.operator.assignment.compound.bitwise.cs"
381
381
  },
382
382
  {
383
- "match": "\\=",
383
+ "match": "=",
384
384
  "name": "keyword.operator.assignment.cs"
385
385
  }
386
386
  ]
@@ -430,7 +430,7 @@
430
430
  "name": "entity.name.variable.property.cs"
431
431
  }
432
432
  },
433
- "end": "(?=(,|\\)))",
433
+ "end": "(?=([,)]))",
434
434
  "patterns": [
435
435
  {
436
436
  "include": "#operator-assignment"
@@ -441,7 +441,7 @@
441
441
  ]
442
442
  },
443
443
  "attribute-section": {
444
- "begin": "(\\[)(assembly|module|field|event|method|param|property|return|type)?(\\:)?",
444
+ "begin": "(\\[)(assembly|module|field|event|method|param|property|return|type)?(:)?",
445
445
  "beginCaptures": {
446
446
  "1": {
447
447
  "name": "punctuation.squarebracket.open.cs"
@@ -453,7 +453,7 @@
453
453
  "name": "punctuation.separator.colon.cs"
454
454
  }
455
455
  },
456
- "end": "(\\])",
456
+ "end": "(])",
457
457
  "endCaptures": {
458
458
  "1": {
459
459
  "name": "punctuation.squarebracket.close.cs"
@@ -482,7 +482,7 @@
482
482
  "name": "keyword.operator.expression.await.cs"
483
483
  }
484
484
  },
485
- "end": "(?<=})|(?=;|})",
485
+ "end": "(?<=})|(?=[;}])",
486
486
  "patterns": [
487
487
  {
488
488
  "include": "#foreach-statement"
@@ -522,7 +522,7 @@
522
522
  "name": "punctuation.curlybrace.open.cs"
523
523
  }
524
524
  },
525
- "end": "\\}",
525
+ "end": "}",
526
526
  "endCaptures": {
527
527
  "0": {
528
528
  "name": "punctuation.curlybrace.close.cs"
@@ -553,7 +553,7 @@
553
553
  "name": "punctuation.squarebracket.open.cs"
554
554
  }
555
555
  },
556
- "end": "\\]",
556
+ "end": "]",
557
557
  "endCaptures": {
558
558
  "0": {
559
559
  "name": "punctuation.squarebracket.close.cs"
@@ -578,7 +578,7 @@
578
578
  "name": "punctuation.squarebracket.open.cs"
579
579
  }
580
580
  },
581
- "end": "(?=(\\]))",
581
+ "end": "(?=(]))",
582
582
  "endCaptures": {
583
583
  "1": {
584
584
  "name": "punctuation.squarebracket.close.cs"
@@ -587,7 +587,7 @@
587
587
  "patterns": [
588
588
  {
589
589
  "begin": "(?<=\\[)",
590
- "end": "(?=\\])",
590
+ "end": "(?=])",
591
591
  "patterns": [
592
592
  {
593
593
  "include": "#comment"
@@ -638,7 +638,7 @@
638
638
  "name": "punctuation.parenthesis.close.cs"
639
639
  }
640
640
  },
641
- "match": "(\\()\\s*(?<type_name>(?:(?:(?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)?(?<name_and_type_args>\\g<identifier>\\s*(?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?)(?:\\s*\\.\\s*\\g<name_and_type_args>)*|(?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\)))(?:\\s*\\?\\s*)?(?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*(?:\\?)?\\s*)*))\\s*(\\))(?=\\s*-*!*@?[_[:alnum:]\\(])"
641
+ "match": "(\\()\\s*(?<type_name>(?:(?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*::\\s*)?(?<name_and_type_args>\\g<identifier>\\s*(?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?)(?:\\s*\\.\\s*\\g<name_and_type_args>)*|(?<tuple>\\s*\\((?:[^()]|\\g<tuple>)+\\)))(?:\\s*\\?\\s*)?(?:\\s*\\[(?:\\s*,\\s*)*]\\s*\\??\\s*)*)\\s*(\\))(?=\\s*-*!*@?[_[:alnum:](])"
642
642
  },
643
643
  "casted-constant-pattern": {
644
644
  "begin": "(\\()([\\s.:@_[:alnum:]]+)(\\))(?=[\\s+\\-!~]*@?[_[:alnum:]('\"]+)",
@@ -660,7 +660,7 @@
660
660
  "name": "punctuation.parenthesis.close.cs"
661
661
  }
662
662
  },
663
- "end": "(?=[)}\\],;:?=&|^]|!=|\\b(and|or|when)\\b)",
663
+ "end": "(?=[)}\\],;:?=\\&|\\^]|!=|\\b(and|or|when)\\b)",
664
664
  "patterns": [
665
665
  {
666
666
  "include": "#casted-constant-pattern"
@@ -696,7 +696,7 @@
696
696
  "name": "punctuation.separator.coloncolon.cs"
697
697
  }
698
698
  },
699
- "match": "(@?[_[:alpha:]][_[:alnum:]]*)\\s*(\\:\\:)"
699
+ "match": "(@?[_[:alpha:]][_[:alnum:]]*)\\s*(::)"
700
700
  },
701
701
  {
702
702
  "captures": {
@@ -710,7 +710,7 @@
710
710
  "match": "(@?[_[:alpha:]][_[:alnum:]]*)\\s*(\\.)"
711
711
  },
712
712
  {
713
- "match": "\\@?[_[:alpha:]][_[:alnum:]]*",
713
+ "match": "@?[_[:alpha:]][_[:alnum:]]*",
714
714
  "name": "variable.other.constant.cs"
715
715
  }
716
716
  ]
@@ -722,7 +722,7 @@
722
722
  "name": "keyword.control.exception.catch.cs"
723
723
  }
724
724
  },
725
- "end": "(?<=\\})",
725
+ "end": "(?<=})",
726
726
  "patterns": [
727
727
  {
728
728
  "begin": "\\(",
@@ -751,7 +751,7 @@
751
751
  "name": "entity.name.variable.local.cs"
752
752
  }
753
753
  },
754
- "match": "(?<type_name>(?:(?:(?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)?(?<name_and_type_args>\\g<identifier>\\s*(?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?)(?:\\s*\\.\\s*\\g<name_and_type_args>)*|(?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\)))(?:\\s*\\?\\s*)?(?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*(?:\\?)?\\s*)*))\\s*(?:(\\g<identifier>)\\b)?"
754
+ "match": "(?<type_name>(?:(?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*::\\s*)?(?<name_and_type_args>\\g<identifier>\\s*(?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?)(?:\\s*\\.\\s*\\g<name_and_type_args>)*|(?<tuple>\\s*\\((?:[^()]|\\g<tuple>)+\\)))(?:\\s*\\?\\s*)?(?:\\s*\\[(?:\\s*,\\s*)*]\\s*\\??\\s*)*)\\s*(?:(\\g<identifier>)\\b)?"
755
755
  }
756
756
  ]
757
757
  },
@@ -767,7 +767,7 @@
767
767
  ]
768
768
  },
769
769
  "char-character-escape": {
770
- "match": "\\\\(x[0-9a-fA-F]{1,4}|u[0-9a-fA-F]{4}|.)",
770
+ "match": "\\\\(x\\h{1,4}|u\\h{4}|.)",
771
771
  "name": "constant.character.escape.cs"
772
772
  },
773
773
  "char-literal": {
@@ -777,7 +777,7 @@
777
777
  "name": "punctuation.definition.char.begin.cs"
778
778
  }
779
779
  },
780
- "end": "(\\')|((?:[^\\\\\\n])$)",
780
+ "end": "(')|([^\\\\\\n]$)",
781
781
  "endCaptures": {
782
782
  "1": {
783
783
  "name": "punctuation.definition.char.end.cs"
@@ -795,7 +795,7 @@
795
795
  },
796
796
  "class-declaration": {
797
797
  "begin": "(?=(\\brecord\\b\\s+)?\\bclass\\b)",
798
- "end": "(?<=\\})|(?=;)",
798
+ "end": "(?<=})|(?=;)",
799
799
  "patterns": [
800
800
  {
801
801
  "begin": "(\\b(record)\\b\\s+)?\\b(class)\\b\\s+(@?[_[:alpha:]][_[:alnum:]]*)\\s*",
@@ -836,7 +836,7 @@
836
836
  "name": "punctuation.curlybrace.open.cs"
837
837
  }
838
838
  },
839
- "end": "\\}",
839
+ "end": "}",
840
840
  "endCaptures": {
841
841
  "0": {
842
842
  "name": "punctuation.curlybrace.close.cs"
@@ -1043,7 +1043,7 @@
1043
1043
  },
1044
1044
  "constructor-declaration": {
1045
1045
  "begin": "(?=@?[_[:alpha:]][_[:alnum:]]*\\s*\\()",
1046
- "end": "(?<=\\})|(?=;)",
1046
+ "end": "(?<=})|(?=;)",
1047
1047
  "patterns": [
1048
1048
  {
1049
1049
  "captures": {
@@ -1116,7 +1116,7 @@
1116
1116
  "name": "keyword.control.context.$1.cs"
1117
1117
  },
1118
1118
  "conversion-operator-declaration": {
1119
- "begin": "(?<explicit_or_implicit_keyword>(?:\\b(?:explicit|implicit)))\\s*(?<operator_keyword>(?:\\b(?:operator)))\\s*(?<type_name>(?:(?:ref\\s+(?:readonly\\s+)?)?(?:(?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)?(?<name_and_type_args>\\g<identifier>\\s*(?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?)(?:\\s*\\.\\s*\\g<name_and_type_args>)*|(?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\)))(?:\\s*\\?\\s*)?(?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*(?:\\?)?\\s*)*))\\s*(?=\\()",
1119
+ "begin": "(?<explicit_or_implicit_keyword>\\b(?:explicit|implicit))\\s*(?<operator_keyword>\\boperator)\\s*(?<type_name>(?:ref\\s+(?:readonly\\s+)?)?(?:(?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*::\\s*)?(?<name_and_type_args>\\g<identifier>\\s*(?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?)(?:\\s*\\.\\s*\\g<name_and_type_args>)*|(?<tuple>\\s*\\((?:[^()]|\\g<tuple>)+\\)))(?:\\s*\\?\\s*)?(?:\\s*\\[(?:\\s*,\\s*)*]\\s*\\??\\s*)*)\\s*(?=\\()",
1120
1120
  "beginCaptures": {
1121
1121
  "1": {
1122
1122
  "patterns": [
@@ -1149,7 +1149,7 @@
1149
1149
  ]
1150
1150
  }
1151
1151
  },
1152
- "end": "(?<=\\})|(?=;)",
1152
+ "end": "(?<=})|(?=;)",
1153
1153
  "patterns": [
1154
1154
  {
1155
1155
  "include": "#comment"
@@ -1181,7 +1181,7 @@
1181
1181
  "name": "entity.name.variable.local.cs"
1182
1182
  }
1183
1183
  },
1184
- "match": "(?:\\b(var)\\b|(?<type_name>(?:(?:(?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)?(?<name_and_type_args>\\g<identifier>\\s*(?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?)(?:\\s*\\.\\s*\\g<name_and_type_args>)*|(?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\)))(?:\\s*\\?\\s*)?(?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*(?:\\?)?\\s*)*)))\\s+(\\g<identifier>)\\b\\s*(?=[,)\\]])"
1184
+ "match": "(?:\\b(var)\\b|(?<type_name>(?:(?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*::\\s*)?(?<name_and_type_args>\\g<identifier>\\s*(?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?)(?:\\s*\\.\\s*\\g<name_and_type_args>)*|(?<tuple>\\s*\\((?:[^()]|\\g<tuple>)+\\)))(?:\\s*\\?\\s*)?(?:\\s*\\[(?:\\s*,\\s*)*]\\s*\\??\\s*)*))\\s+(\\g<identifier>)\\b\\s*(?=[,)\\]])"
1185
1185
  },
1186
1186
  "declaration-expression-tuple": {
1187
1187
  "captures": {
@@ -1199,7 +1199,7 @@
1199
1199
  "name": "entity.name.variable.tuple-element.cs"
1200
1200
  }
1201
1201
  },
1202
- "match": "(?:\\b(var)\\b|(?<type_name>(?:(?:(?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)?(?<name_and_type_args>\\g<identifier>\\s*(?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?)(?:\\s*\\.\\s*\\g<name_and_type_args>)*|(?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\)))(?:\\s*\\?\\s*)?(?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*(?:\\?)?\\s*)*)))\\s+(\\g<identifier>)\\b\\s*(?=[,)])"
1202
+ "match": "(?:\\b(var)\\b|(?<type_name>(?:(?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*::\\s*)?(?<name_and_type_args>\\g<identifier>\\s*(?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?)(?:\\s*\\.\\s*\\g<name_and_type_args>)*|(?<tuple>\\s*\\((?:[^()]|\\g<tuple>)+\\)))(?:\\s*\\?\\s*)?(?:\\s*\\[(?:\\s*,\\s*)*]\\s*\\??\\s*)*))\\s+(\\g<identifier>)\\b\\s*(?=[,)])"
1203
1203
  },
1204
1204
  "declarations": {
1205
1205
  "patterns": [
@@ -1221,7 +1221,7 @@
1221
1221
  "name": "keyword.operator.assignment.cs"
1222
1222
  }
1223
1223
  },
1224
- "end": "(?=,|\\))",
1224
+ "end": "(?=[,)])",
1225
1225
  "patterns": [
1226
1226
  {
1227
1227
  "include": "#expression"
@@ -1237,7 +1237,7 @@
1237
1237
  "match": "\\b(default)\\b"
1238
1238
  },
1239
1239
  "delegate-declaration": {
1240
- "begin": "(?:\\b(delegate)\\b)\\s+(?<type_name>(?:(?:ref\\s+(?:readonly\\s+)?)?(?:(?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)?(?<name_and_type_args>\\g<identifier>\\s*(?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?)(?:\\s*\\.\\s*\\g<name_and_type_args>)*|(?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\)))(?:\\s*\\?\\s*)?(?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*(?:\\?)?\\s*)*))\\s+(\\g<identifier>)\\s*(<([^<>]+)>)?\\s*(?=\\()",
1240
+ "begin": "\\b(delegate)\\b\\s+(?<type_name>(?:ref\\s+(?:readonly\\s+)?)?(?:(?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*::\\s*)?(?<name_and_type_args>\\g<identifier>\\s*(?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?)(?:\\s*\\.\\s*\\g<name_and_type_args>)*|(?<tuple>\\s*\\((?:[^()]|\\g<tuple>)+\\)))(?:\\s*\\?\\s*)?(?:\\s*\\[(?:\\s*,\\s*)*]\\s*\\??\\s*)*)\\s+(\\g<identifier>)\\s*(<([^<>]+)>)?\\s*(?=\\()",
1241
1241
  "beginCaptures": {
1242
1242
  "1": {
1243
1243
  "name": "storage.type.delegate.cs"
@@ -1315,7 +1315,7 @@
1315
1315
  "name": "entity.name.function.cs"
1316
1316
  }
1317
1317
  },
1318
- "end": "(?<=\\})|(?=;)",
1318
+ "end": "(?<=})|(?=;)",
1319
1319
  "patterns": [
1320
1320
  {
1321
1321
  "include": "#comment"
@@ -1358,7 +1358,7 @@
1358
1358
  "name": "keyword.control.loop.do.cs"
1359
1359
  }
1360
1360
  },
1361
- "end": "(?=;|})",
1361
+ "end": "(?=[;}])",
1362
1362
  "patterns": [
1363
1363
  {
1364
1364
  "include": "#statement"
@@ -1366,7 +1366,7 @@
1366
1366
  ]
1367
1367
  },
1368
1368
  "double-raw-interpolation": {
1369
- "begin": "(?<=[^\\{][^\\{]|^)((?:\\{)*)(\\{\\{)(?=[^\\{])",
1369
+ "begin": "(?<=[^{][^{]|^)(\\{*)(\\{\\{)(?=[^{])",
1370
1370
  "beginCaptures": {
1371
1371
  "1": {
1372
1372
  "name": "string.quoted.double.cs"
@@ -1375,7 +1375,7 @@
1375
1375
  "name": "punctuation.definition.interpolation.begin.cs"
1376
1376
  }
1377
1377
  },
1378
- "end": "\\}\\}",
1378
+ "end": "}}",
1379
1379
  "endCaptures": {
1380
1380
  "0": {
1381
1381
  "name": "punctuation.definition.interpolation.end.cs"
@@ -1407,7 +1407,7 @@
1407
1407
  "name": "keyword.operator.null-conditional.cs"
1408
1408
  }
1409
1409
  },
1410
- "end": "(?<=\\])(?!\\s*\\[)",
1410
+ "end": "(?<=])(?!\\s*\\[)",
1411
1411
  "patterns": [
1412
1412
  {
1413
1413
  "include": "#bracketed-argument-list"
@@ -1430,11 +1430,11 @@
1430
1430
  },
1431
1431
  "enum-declaration": {
1432
1432
  "begin": "(?=\\benum\\b)",
1433
- "end": "(?<=\\})",
1433
+ "end": "(?<=})|(?=;)",
1434
1434
  "patterns": [
1435
1435
  {
1436
1436
  "begin": "(?=enum)",
1437
- "end": "(?=\\{)",
1437
+ "end": "(?=\\{)|(?=;)",
1438
1438
  "patterns": [
1439
1439
  {
1440
1440
  "include": "#comment"
@@ -1473,7 +1473,7 @@
1473
1473
  "name": "punctuation.curlybrace.open.cs"
1474
1474
  }
1475
1475
  },
1476
- "end": "\\}",
1476
+ "end": "}",
1477
1477
  "endCaptures": {
1478
1478
  "0": {
1479
1479
  "name": "punctuation.curlybrace.close.cs"
@@ -1499,7 +1499,7 @@
1499
1499
  "name": "entity.name.variable.enum-member.cs"
1500
1500
  }
1501
1501
  },
1502
- "end": "(?=(,|\\}))",
1502
+ "end": "(?=([,}]))",
1503
1503
  "patterns": [
1504
1504
  {
1505
1505
  "include": "#comment"
@@ -1526,7 +1526,7 @@
1526
1526
  "name": "punctuation.curlybrace.open.cs"
1527
1527
  }
1528
1528
  },
1529
- "end": "\\}",
1529
+ "end": "}",
1530
1530
  "endCaptures": {
1531
1531
  "0": {
1532
1532
  "name": "punctuation.curlybrace.close.cs"
@@ -1540,13 +1540,13 @@
1540
1540
  "include": "#attribute-section"
1541
1541
  },
1542
1542
  {
1543
- "begin": "\\b(add|remove)\\b\\s*(?=\\{|;|=>|//|/\\*|$)",
1543
+ "begin": "\\b(add|remove)\\b\\s*(?=[{;]|=>|//|/\\*|$)",
1544
1544
  "beginCaptures": {
1545
1545
  "1": {
1546
1546
  "name": "storage.type.accessor.$1.cs"
1547
1547
  }
1548
1548
  },
1549
- "end": "(?<=\\}|;)|(?=\\})",
1549
+ "end": "(?<=[};])|(?=})",
1550
1550
  "patterns": [
1551
1551
  {
1552
1552
  "include": "#accessor-setter"
@@ -1556,7 +1556,7 @@
1556
1556
  ]
1557
1557
  },
1558
1558
  "event-declaration": {
1559
- "begin": "\\b(event)\\b\\s*(?<return_type>(?<type_name>(?:(?:(?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)?(?<name_and_type_args>\\g<identifier>\\s*(?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?)(?:\\s*\\.\\s*\\g<name_and_type_args>)*|(?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\)))(?:\\s*\\?\\s*)?(?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*(?:\\?)?\\s*)*))\\s+)(?<interface_name>\\g<type_name>\\s*\\.\\s*)?(\\g<identifier>)\\s*(?=\\{|;|,|=|//|/\\*|$)",
1559
+ "begin": "\\b(event)\\b\\s*(?<return_type>(?<type_name>(?:(?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*::\\s*)?(?<name_and_type_args>\\g<identifier>\\s*(?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?)(?:\\s*\\.\\s*\\g<name_and_type_args>)*|(?<tuple>\\s*\\((?:[^()]|\\g<tuple>)+\\)))(?:\\s*\\?\\s*)?(?:\\s*\\[(?:\\s*,\\s*)*]\\s*\\??\\s*)*)\\s+)(?<interface_name>\\g<type_name>\\s*\\.\\s*)?(\\g<identifier>)\\s*(?=[{;,=]|//|/\\*|$)",
1560
1560
  "beginCaptures": {
1561
1561
  "1": {
1562
1562
  "name": "storage.type.event.cs"
@@ -1582,7 +1582,7 @@
1582
1582
  "name": "entity.name.variable.event.cs"
1583
1583
  }
1584
1584
  },
1585
- "end": "(?<=\\})|(?=;)",
1585
+ "end": "(?<=})|(?=;)",
1586
1586
  "patterns": [
1587
1587
  {
1588
1588
  "include": "#comment"
@@ -1632,7 +1632,7 @@
1632
1632
  "name": "entity.name.variable.parameter.cs"
1633
1633
  }
1634
1634
  },
1635
- "match": "(?:\\b(ref|params|out|in)\\b\\s*)?(?<type_name>(?:(?:(?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)?(?<name_and_type_args>\\g<identifier>\\s*(?<type_args><(?:[^<>]|\\g<type_args>)*>\\s*)?)(?:\\s*\\.\\s*\\g<name_and_type_args>)*|(?<tuple>\\s*\\((?:[^()]|\\g<tuple>)*\\)))(?:\\s*\\?\\s*)?(?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*(?:\\?)?\\s*)*))\\s*\\b(\\g<identifier>)\\b"
1635
+ "match": "(?:\\b(ref|params|out|in)\\b\\s*)?(?<type_name>(?:(?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*::\\s*)?(?<name_and_type_args>\\g<identifier>\\s*(?<type_args><(?:[^<>]|\\g<type_args>)*>\\s*)?)(?:\\s*\\.\\s*\\g<name_and_type_args>)*|(?<tuple>\\s*\\((?:[^()]|\\g<tuple>)*\\)))(?:\\s*\\?\\s*)?(?:\\s*\\[(?:\\s*,\\s*)*]\\s*\\??\\s*)*)\\s*\\b(\\g<identifier>)\\b"
1636
1636
  },
1637
1637
  "expression": {
1638
1638
  "patterns": [
@@ -1744,7 +1744,7 @@
1744
1744
  "name": "keyword.operator.arrow.cs"
1745
1745
  }
1746
1746
  },
1747
- "end": "(?=[,\\);}])",
1747
+ "end": "(?=[,);}])",
1748
1748
  "patterns": [
1749
1749
  {
1750
1750
  "include": "#ref-modifier"
@@ -1787,15 +1787,15 @@
1787
1787
  "name": "keyword.operator.comparison.cs"
1788
1788
  },
1789
1789
  {
1790
- "match": "<=|>=|<|>",
1790
+ "match": "<=|>=|[<>]",
1791
1791
  "name": "keyword.operator.relational.cs"
1792
1792
  },
1793
1793
  {
1794
- "match": "\\!|&&|\\|\\|",
1794
+ "match": "!|&&|\\|\\|",
1795
1795
  "name": "keyword.operator.logical.cs"
1796
1796
  },
1797
1797
  {
1798
- "match": "\\&|~|\\^|\\|",
1798
+ "match": "[\\&~\\^|]",
1799
1799
  "name": "keyword.operator.bitwise.cs"
1800
1800
  },
1801
1801
  {
@@ -1807,7 +1807,7 @@
1807
1807
  "name": "keyword.operator.increment.cs"
1808
1808
  },
1809
1809
  {
1810
- "match": "\\+|-(?!>)|\\*|/|%",
1810
+ "match": "\\+|-(?!>)|[*/%]",
1811
1811
  "name": "keyword.operator.arithmetic.cs"
1812
1812
  },
1813
1813
  {
@@ -1833,13 +1833,13 @@
1833
1833
  "end": "(?=;)",
1834
1834
  "patterns": [
1835
1835
  {
1836
- "match": "\\@?[_[:alpha:]][_[:alnum:]]*",
1836
+ "match": "@?[_[:alpha:]][_[:alnum:]]*",
1837
1837
  "name": "variable.other.alias.cs"
1838
1838
  }
1839
1839
  ]
1840
1840
  },
1841
1841
  "field-declaration": {
1842
- "begin": "(?<type_name>(?:(?:(?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)?(?<name_and_type_args>\\g<identifier>\\s*(?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?)(?:\\s*\\.\\s*\\g<name_and_type_args>)*|(?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\)))(?:\\s*\\?\\s*)?(?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*(?:\\?)?\\s*)*))\\s+(\\g<identifier>)\\s*(?!=>|==)(?=,|;|=|$)",
1842
+ "begin": "(?<type_name>(?:(?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*::\\s*)?(?<name_and_type_args>\\g<identifier>\\s*(?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?)(?:\\s*\\.\\s*\\g<name_and_type_args>)*|(?<tuple>\\s*\\((?:[^()]|\\g<tuple>)+\\)))(?:\\s*\\?\\s*)?(?:\\s*\\[(?:\\s*,\\s*)*]\\s*\\??\\s*)*)\\s+(\\g<identifier>)\\s*(?!=[>=])(?=[,;=]|$)",
1843
1843
  "beginCaptures": {
1844
1844
  "1": {
1845
1845
  "patterns": [
@@ -1879,7 +1879,7 @@
1879
1879
  "name": "keyword.control.exception.finally.cs"
1880
1880
  }
1881
1881
  },
1882
- "end": "(?<=\\})",
1882
+ "end": "(?<=})",
1883
1883
  "patterns": [
1884
1884
  {
1885
1885
  "include": "#comment"
@@ -1896,7 +1896,7 @@
1896
1896
  "name": "keyword.control.context.fixed.cs"
1897
1897
  }
1898
1898
  },
1899
- "end": "(?<=\\))|(?=;|})",
1899
+ "end": "(?<=\\))|(?=[;}])",
1900
1900
  "patterns": [
1901
1901
  {
1902
1902
  "include": "#intrusive"
@@ -1932,7 +1932,7 @@
1932
1932
  "name": "keyword.control.loop.for.cs"
1933
1933
  }
1934
1934
  },
1935
- "end": "(?<=\\))|(?=;|})",
1935
+ "end": "(?<=\\))|(?=[;}])",
1936
1936
  "patterns": [
1937
1937
  {
1938
1938
  "begin": "\\(",
@@ -1949,8 +1949,8 @@
1949
1949
  },
1950
1950
  "patterns": [
1951
1951
  {
1952
- "begin": "(?=[^;\\)])",
1953
- "end": "(?=;|\\))",
1952
+ "begin": "(?=[^;)])",
1953
+ "end": "(?=[;)])",
1954
1954
  "patterns": [
1955
1955
  {
1956
1956
  "include": "#intrusive"
@@ -1989,7 +1989,7 @@
1989
1989
  "name": "keyword.control.loop.foreach.cs"
1990
1990
  }
1991
1991
  },
1992
- "end": "(?<=\\))|(?=;|})",
1992
+ "end": "(?<=\\))|(?=[;}])",
1993
1993
  "patterns": [
1994
1994
  {
1995
1995
  "include": "#intrusive"
@@ -2033,7 +2033,7 @@
2033
2033
  "name": "keyword.control.loop.in.cs"
2034
2034
  }
2035
2035
  },
2036
- "match": "(?:(?:(\\bref)\\s+)?(\\bvar\\b)|(?<type_name>(?:(?:ref\\s+)?(?:(?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)?(?<name_and_type_args>\\g<identifier>\\s*(?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?)(?:\\s*\\.\\s*\\g<name_and_type_args>)*|(?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\)))(?:\\s*\\?\\s*)?(?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*(?:\\?)?\\s*)*)))\\s+(\\g<identifier>)\\s+\\b(in)\\b"
2036
+ "match": "(?:(?:(\\bref)\\s+)?(\\bvar\\b)|(?<type_name>(?:ref\\s+)?(?:(?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*::\\s*)?(?<name_and_type_args>\\g<identifier>\\s*(?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?)(?:\\s*\\.\\s*\\g<name_and_type_args>)*|(?<tuple>\\s*\\((?:[^()]|\\g<tuple>)+\\)))(?:\\s*\\?\\s*)?(?:\\s*\\[(?:\\s*,\\s*)*]\\s*\\??\\s*)*))\\s+(\\g<identifier>)\\s+\\b(in)\\b"
2037
2037
  },
2038
2038
  {
2039
2039
  "captures": {
@@ -2051,7 +2051,7 @@
2051
2051
  "name": "keyword.control.loop.in.cs"
2052
2052
  }
2053
2053
  },
2054
- "match": "(?:\\b(var)\\b\\s*)?(?<tuple>\\((?:[^\\(\\)]|\\g<tuple>)+\\))\\s+\\b(in)\\b"
2054
+ "match": "(?:\\b(var)\\b\\s*)?(?<tuple>\\((?:[^()]|\\g<tuple>)+\\))\\s+\\b(in)\\b"
2055
2055
  },
2056
2056
  {
2057
2057
  "include": "#expression"
@@ -2172,7 +2172,7 @@
2172
2172
  "name": "keyword.operator.expression.query.group.cs"
2173
2173
  }
2174
2174
  },
2175
- "end": "(?=;|\\))",
2175
+ "end": "(?=[;)])",
2176
2176
  "patterns": [
2177
2177
  {
2178
2178
  "include": "#group-by"
@@ -2237,11 +2237,11 @@
2237
2237
  ]
2238
2238
  },
2239
2239
  "implicit-anonymous-function-parameter": {
2240
- "match": "\\@?[_[:alpha:]][_[:alnum:]]*\\b",
2240
+ "match": "@?[_[:alpha:]][_[:alnum:]]*\\b",
2241
2241
  "name": "entity.name.variable.parameter.cs"
2242
2242
  },
2243
2243
  "indexer-declaration": {
2244
- "begin": "(?<return_type>(?<type_name>(?:(?:ref\\s+(?:readonly\\s+)?)?(?:(?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)?(?<name_and_type_args>\\g<identifier>\\s*(?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?)(?:\\s*\\.\\s*\\g<name_and_type_args>)*|(?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\)))(?:\\s*\\?\\s*)?(?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*(?:\\?)?\\s*)*))\\s+)(?<interface_name>\\g<type_name>\\s*\\.\\s*)?(?<indexer_name>this)\\s*(?=\\[)",
2244
+ "begin": "(?<return_type>(?<type_name>(?:ref\\s+(?:readonly\\s+)?)?(?:(?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*::\\s*)?(?<name_and_type_args>\\g<identifier>\\s*(?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?)(?:\\s*\\.\\s*\\g<name_and_type_args>)*|(?<tuple>\\s*\\((?:[^()]|\\g<tuple>)+\\)))(?:\\s*\\?\\s*)?(?:\\s*\\[(?:\\s*,\\s*)*]\\s*\\??\\s*)*)\\s+)(?<interface_name>\\g<type_name>\\s*\\.\\s*)?(?<indexer_name>this)\\s*(?=\\[)",
2245
2245
  "beginCaptures": {
2246
2246
  "1": {
2247
2247
  "patterns": [
@@ -2264,7 +2264,7 @@
2264
2264
  "name": "variable.language.this.cs"
2265
2265
  }
2266
2266
  },
2267
- "end": "(?<=\\})|(?=;)",
2267
+ "end": "(?<=})|(?=;)",
2268
2268
  "patterns": [
2269
2269
  {
2270
2270
  "include": "#comment"
@@ -2290,7 +2290,7 @@
2290
2290
  "name": "punctuation.curlybrace.open.cs"
2291
2291
  }
2292
2292
  },
2293
- "end": "\\}",
2293
+ "end": "}",
2294
2294
  "endCaptures": {
2295
2295
  "0": {
2296
2296
  "name": "punctuation.curlybrace.close.cs"
@@ -2307,7 +2307,7 @@
2307
2307
  },
2308
2308
  "interface-declaration": {
2309
2309
  "begin": "(?=\\binterface\\b)",
2310
- "end": "(?<=\\})",
2310
+ "end": "(?<=})|(?=;)",
2311
2311
  "patterns": [
2312
2312
  {
2313
2313
  "begin": "(interface)\\b\\s+(@?[_[:alpha:]][_[:alnum:]]*)",
@@ -2319,7 +2319,7 @@
2319
2319
  "name": "entity.name.type.interface.cs"
2320
2320
  }
2321
2321
  },
2322
- "end": "(?=\\{)",
2322
+ "end": "(?=\\{)|(?=;)",
2323
2323
  "patterns": [
2324
2324
  {
2325
2325
  "include": "#comment"
@@ -2342,7 +2342,7 @@
2342
2342
  "name": "punctuation.curlybrace.open.cs"
2343
2343
  }
2344
2344
  },
2345
- "end": "\\}",
2345
+ "end": "}",
2346
2346
  "endCaptures": {
2347
2347
  "0": {
2348
2348
  "name": "punctuation.curlybrace.close.cs"
@@ -2403,7 +2403,7 @@
2403
2403
  "name": "punctuation.definition.string.begin.cs"
2404
2404
  }
2405
2405
  },
2406
- "end": "(\")|((?:[^\\\\\\n])$)",
2406
+ "end": "(\")|([^\\\\\\n]$)",
2407
2407
  "endCaptures": {
2408
2408
  "1": {
2409
2409
  "name": "punctuation.definition.string.end.cs"
@@ -2423,7 +2423,7 @@
2423
2423
  ]
2424
2424
  },
2425
2425
  "interpolation": {
2426
- "begin": "(?<=[^\\{]|^)((?:\\{\\{)*)(\\{)(?=[^\\{])",
2426
+ "begin": "(?<=[^{]|^)((?:\\{\\{)*)(\\{)(?=[^{])",
2427
2427
  "beginCaptures": {
2428
2428
  "1": {
2429
2429
  "name": "string.quoted.double.cs"
@@ -2432,7 +2432,7 @@
2432
2432
  "name": "punctuation.definition.interpolation.begin.cs"
2433
2433
  }
2434
2434
  },
2435
- "end": "\\}",
2435
+ "end": "}",
2436
2436
  "endCaptures": {
2437
2437
  "0": {
2438
2438
  "name": "punctuation.definition.interpolation.end.cs"
@@ -2492,7 +2492,7 @@
2492
2492
  "name": "keyword.operator.expression.pattern.is.cs"
2493
2493
  }
2494
2494
  },
2495
- "end": "(?=[)}\\],;:?=&|^]|!=)",
2495
+ "end": "(?=[)}\\],;:?=\\&|\\^]|!=)",
2496
2496
  "patterns": [
2497
2497
  {
2498
2498
  "include": "#pattern"
@@ -2500,7 +2500,7 @@
2500
2500
  ]
2501
2501
  },
2502
2502
  "join-clause": {
2503
- "begin": "\\b(join)\\b\\s*(?<type_name>(?:(?:(?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)?(?<name_and_type_args>\\g<identifier>\\s*(?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?)(?:\\s*\\.\\s*\\g<name_and_type_args>)*|(?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\)))(?:\\s*\\?\\s*)?(?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*(?:\\?)?\\s*)*))?\\s+(\\g<identifier>)\\b\\s*\\b(in)\\b\\s*",
2503
+ "begin": "\\b(join)\\b\\s*(?<type_name>(?:(?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*::\\s*)?(?<name_and_type_args>\\g<identifier>\\s*(?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?)(?:\\s*\\.\\s*\\g<name_and_type_args>)*|(?<tuple>\\s*\\((?:[^()]|\\g<tuple>)+\\)))(?:\\s*\\?\\s*)?(?:\\s*\\[(?:\\s*,\\s*)*]\\s*\\??\\s*)*)?\\s+(\\g<identifier>)\\b\\s*\\b(in)\\b\\s*",
2504
2504
  "beginCaptures": {
2505
2505
  "1": {
2506
2506
  "name": "keyword.operator.expression.query.join.cs"
@@ -2519,7 +2519,7 @@
2519
2519
  "name": "keyword.operator.expression.query.in.cs"
2520
2520
  }
2521
2521
  },
2522
- "end": "(?=;|\\))",
2522
+ "end": "(?=[;)])",
2523
2523
  "patterns": [
2524
2524
  {
2525
2525
  "include": "#join-on"
@@ -2601,7 +2601,7 @@
2601
2601
  "name": "keyword.operator.assignment.cs"
2602
2602
  }
2603
2603
  },
2604
- "end": "(?=;|\\))",
2604
+ "end": "(?=[;)])",
2605
2605
  "patterns": [
2606
2606
  {
2607
2607
  "include": "#query-body"
@@ -2613,7 +2613,7 @@
2613
2613
  },
2614
2614
  "list-pattern": {
2615
2615
  "begin": "(?=\\[)",
2616
- "end": "(?=[)}\\],;:?=&|^]|!=|\\b(and|or|when)\\b)",
2616
+ "end": "(?=[)}\\],;:?=\\&|\\^]|!=|\\b(and|or|when)\\b)",
2617
2617
  "patterns": [
2618
2618
  {
2619
2619
  "begin": "\\[",
@@ -2622,7 +2622,7 @@
2622
2622
  "name": "punctuation.squarebracket.open.cs"
2623
2623
  }
2624
2624
  },
2625
- "end": "\\]",
2625
+ "end": "]",
2626
2626
  "endCaptures": {
2627
2627
  "0": {
2628
2628
  "name": "punctuation.squarebracket.close.cs"
@@ -2638,8 +2638,8 @@
2638
2638
  ]
2639
2639
  },
2640
2640
  {
2641
- "begin": "(?<=\\])",
2642
- "end": "(?=[)}\\],;:?=&|^]|!=|\\b(and|or|when)\\b)",
2641
+ "begin": "(?<=])",
2642
+ "end": "(?=[)}\\],;:?=\\&|\\^]|!=|\\b(and|or|when)\\b)",
2643
2643
  "patterns": [
2644
2644
  {
2645
2645
  "include": "#intrusive"
@@ -2680,7 +2680,7 @@
2680
2680
  ]
2681
2681
  },
2682
2682
  "local-constant-declaration": {
2683
- "begin": "(?<const_keyword>\\b(?:const)\\b)\\s*(?<type_name>(?:(?:(?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)?(?<name_and_type_args>\\g<identifier>\\s*(?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?)(?:\\s*\\.\\s*\\g<name_and_type_args>)*|(?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\)))(?:\\s*\\?\\s*)?(?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*(?:\\?)?\\s*)*))\\s+(\\g<identifier>)\\s*(?=,|;|=)",
2683
+ "begin": "(?<const_keyword>\\bconst\\b)\\s*(?<type_name>(?:(?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*::\\s*)?(?<name_and_type_args>\\g<identifier>\\s*(?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?)(?:\\s*\\.\\s*\\g<name_and_type_args>)*|(?<tuple>\\s*\\((?:[^()]|\\g<tuple>)+\\)))(?:\\s*\\?\\s*)?(?:\\s*\\[(?:\\s*,\\s*)*]\\s*\\??\\s*)*)\\s+(\\g<identifier>)\\s*(?=[,;=])",
2684
2684
  "beginCaptures": {
2685
2685
  "1": {
2686
2686
  "name": "storage.modifier.const.cs"
@@ -2730,7 +2730,7 @@
2730
2730
  ]
2731
2731
  },
2732
2732
  "local-function-declaration": {
2733
- "begin": "\\b((?:(?:async|unsafe|static|extern)\\s+)*)(?<type_name>(?:ref\\s+(?:readonly\\s+)?)?(?:(?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)?(?<name_and_type_args>\\g<identifier>\\s*(?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?)(?:\\s*\\.\\s*\\g<name_and_type_args>)*|(?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\)))(?:\\s*\\?)?(?:\\s*\\[\\s*(?:,\\s*)*\\](?:\\s*\\?)?)*)\\s+(\\g<identifier>)\\s*(<[^<>]+>)?\\s*(?=\\()",
2733
+ "begin": "\\b((?:(?:async|unsafe|static|extern)\\s+)*)(?<type_name>(?:ref\\s+(?:readonly\\s+)?)?(?:(?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*::\\s*)?(?<name_and_type_args>\\g<identifier>\\s*(?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?)(?:\\s*\\.\\s*\\g<name_and_type_args>)*|(?<tuple>\\s*\\((?:[^()]|\\g<tuple>)+\\)))(?:\\s*\\?)?(?:\\s*\\[\\s*(?:,\\s*)*](?:\\s*\\?)?)*)\\s+(\\g<identifier>)\\s*(<[^<>]+>)?\\s*(?=\\()",
2734
2734
  "beginCaptures": {
2735
2735
  "1": {
2736
2736
  "patterns": [
@@ -2757,7 +2757,7 @@
2757
2757
  ]
2758
2758
  }
2759
2759
  },
2760
- "end": "(?<=\\})|(?=;)",
2760
+ "end": "(?<=})|(?=;)",
2761
2761
  "patterns": [
2762
2762
  {
2763
2763
  "include": "#comment"
@@ -2777,7 +2777,7 @@
2777
2777
  ]
2778
2778
  },
2779
2779
  "local-tuple-var-deconstruction": {
2780
- "begin": "(?:\\b(var)\\b\\s*)(?<tuple>\\((?:[^\\(\\)]|\\g<tuple>)+\\))\\s*(?=;|=|\\))",
2780
+ "begin": "\\b(var)\\b\\s*(?<tuple>\\((?:[^()]|\\g<tuple>)+\\))\\s*(?=[;=)])",
2781
2781
  "beginCaptures": {
2782
2782
  "1": {
2783
2783
  "name": "storage.type.var.cs"
@@ -2790,7 +2790,7 @@
2790
2790
  ]
2791
2791
  }
2792
2792
  },
2793
- "end": "(?=;|\\))",
2793
+ "end": "(?=[;)])",
2794
2794
  "patterns": [
2795
2795
  {
2796
2796
  "include": "#comment"
@@ -2801,7 +2801,7 @@
2801
2801
  ]
2802
2802
  },
2803
2803
  "local-variable-declaration": {
2804
- "begin": "(?:(?:(\\bref)\\s+(?:(\\breadonly)\\s+)?)?(\\bvar\\b)|(?<type_name>(?:(?:ref\\s+(?:readonly\\s+)?)?(?:(?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)?(?<name_and_type_args>\\g<identifier>\\s*(?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?)(?:\\s*\\.\\s*\\g<name_and_type_args>)*|(?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\)))(?:\\s*[?*]\\s*)?(?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*(?:\\?)?\\s*)*)))\\s+(\\g<identifier>)\\s*(?!=>)(?=,|;|=|\\))",
2804
+ "begin": "(?:(?:(\\bref)\\s+(?:(\\breadonly)\\s+)?)?(\\bvar\\b)|(?<type_name>(?:ref\\s+(?:readonly\\s+)?)?(?:(?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*::\\s*)?(?<name_and_type_args>\\g<identifier>\\s*(?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?)(?:\\s*\\.\\s*\\g<name_and_type_args>)*|(?<tuple>\\s*\\((?:[^()]|\\g<tuple>)+\\)))(?:\\s*[?*]\\s*)?(?:\\s*\\[(?:\\s*,\\s*)*]\\s*\\??\\s*)*))\\s+(\\g<identifier>)\\s*(?!=>)(?=[,;=)])",
2805
2805
  "beginCaptures": {
2806
2806
  "1": {
2807
2807
  "name": "storage.modifier.ref.cs"
@@ -2847,7 +2847,7 @@
2847
2847
  "name": "keyword.control.context.lock.cs"
2848
2848
  }
2849
2849
  },
2850
- "end": "(?<=\\))|(?=;|})",
2850
+ "end": "(?<=\\))|(?=[;}])",
2851
2851
  "patterns": [
2852
2852
  {
2853
2853
  "include": "#intrusive"
@@ -2893,7 +2893,7 @@
2893
2893
  "name": "variable.other.object.property.cs"
2894
2894
  }
2895
2895
  },
2896
- "match": "(?:(?:(\\?)\\s*)?(\\.)\\s*|(->)\\s*)(@?[_[:alpha:]][_[:alnum:]]*)\\s*(?![_[:alnum:]]|\\(|(\\?)?\\[|<)"
2896
+ "match": "(?:(?:(\\?)\\s*)?(\\.)\\s*|(->)\\s*)(@?[_[:alpha:]][_[:alnum:]]*)\\s*(?![_[:alnum:](]|(\\?)?\\[|<)"
2897
2897
  },
2898
2898
  {
2899
2899
  "captures": {
@@ -2924,7 +2924,7 @@
2924
2924
  ]
2925
2925
  },
2926
2926
  "method-declaration": {
2927
- "begin": "(?<return_type>(?<type_name>(?:(?:ref\\s+(?:readonly\\s+)?)?(?:(?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)?(?<name_and_type_args>\\g<identifier>\\s*(?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?)(?:\\s*\\.\\s*\\g<name_and_type_args>)*|(?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\)))(?:\\s*\\?\\s*)?(?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*(?:\\?)?\\s*)*))\\s+)(?<interface_name>\\g<type_name>\\s*\\.\\s*)?(\\g<identifier>)\\s*(<([^<>]+)>)?\\s*(?=\\()",
2927
+ "begin": "(?<return_type>(?<type_name>(?:ref\\s+(?:readonly\\s+)?)?(?:(?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*::\\s*)?(?<name_and_type_args>\\g<identifier>\\s*(?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?)(?:\\s*\\.\\s*\\g<name_and_type_args>)*|(?<tuple>\\s*\\((?:[^()]|\\g<tuple>)+\\)))(?:\\s*\\?\\s*)?(?:\\s*\\[(?:\\s*,\\s*)*]\\s*\\??\\s*)*)\\s+)(?<interface_name>\\g<type_name>\\s*\\.\\s*)?(\\g<identifier>)\\s*(<([^<>]+)>)?\\s*(?=\\()",
2928
2928
  "beginCaptures": {
2929
2929
  "1": {
2930
2930
  "patterns": [
@@ -2954,7 +2954,7 @@
2954
2954
  ]
2955
2955
  }
2956
2956
  },
2957
- "end": "(?<=\\})|(?=;)",
2957
+ "end": "(?<=})|(?=;)",
2958
2958
  "patterns": [
2959
2959
  {
2960
2960
  "include": "#comment"
@@ -2983,7 +2983,7 @@
2983
2983
  "name": "punctuation.separator.colon.cs"
2984
2984
  }
2985
2985
  },
2986
- "end": "(?=(,|\\)|\\]))",
2986
+ "end": "(?=([,)\\]]))",
2987
2987
  "patterns": [
2988
2988
  {
2989
2989
  "include": "#argument"
@@ -2997,7 +2997,7 @@
2997
2997
  "name": "storage.type.namespace.cs"
2998
2998
  }
2999
2999
  },
3000
- "end": "(?<=\\})|(?=;)",
3000
+ "end": "(?<=})|(?=;)",
3001
3001
  "patterns": [
3002
3002
  {
3003
3003
  "include": "#comment"
@@ -3016,7 +3016,7 @@
3016
3016
  "name": "punctuation.curlybrace.open.cs"
3017
3017
  }
3018
3018
  },
3019
- "end": "\\}",
3019
+ "end": "}",
3020
3020
  "endCaptures": {
3021
3021
  "0": {
3022
3022
  "name": "punctuation.curlybrace.close.cs"
@@ -3057,7 +3057,7 @@
3057
3057
  "name": "constant.numeric.decimal.cs",
3058
3058
  "patterns": [
3059
3059
  {
3060
- "match": "(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])",
3060
+ "match": "(?<=\\h)_(?=\\h)",
3061
3061
  "name": "constant.numeric.other.separator.thousands.cs"
3062
3062
  }
3063
3063
  ]
@@ -3069,7 +3069,7 @@
3069
3069
  "name": "constant.numeric.decimal.cs",
3070
3070
  "patterns": [
3071
3071
  {
3072
- "match": "(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])",
3072
+ "match": "(?<=\\h)_(?=\\h)",
3073
3073
  "name": "constant.numeric.other.separator.thousands.cs"
3074
3074
  }
3075
3075
  ]
@@ -3084,7 +3084,7 @@
3084
3084
  "name": "constant.numeric.decimal.cs",
3085
3085
  "patterns": [
3086
3086
  {
3087
- "match": "(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])",
3087
+ "match": "(?<=\\h)_(?=\\h)",
3088
3088
  "name": "constant.numeric.other.separator.thousands.cs"
3089
3089
  }
3090
3090
  ]
@@ -3099,7 +3099,7 @@
3099
3099
  "name": "keyword.operator.arithmetic.cs"
3100
3100
  }
3101
3101
  },
3102
- "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))?$"
3102
+ "match": "(\\G(?=[0-9.])(?!0[xXbB]))([0-9](?:[0-9]|((?<=\\h)_(?=\\h)))*)?((?:(?<=[0-9])|\\.(?=[0-9])))([0-9](?:[0-9]|((?<=\\h)_(?=\\h)))*)?((?<!_)([eE])(\\+?)(-?)([0-9](?:[0-9]|(?<=\\h)_(?=\\h))*))?([fFdDmM](?!\\w))?$"
3103
3103
  },
3104
3104
  {
3105
3105
  "captures": {
@@ -3110,7 +3110,7 @@
3110
3110
  "name": "constant.numeric.binary.cs",
3111
3111
  "patterns": [
3112
3112
  {
3113
- "match": "(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])",
3113
+ "match": "(?<=\\h)_(?=\\h)",
3114
3114
  "name": "constant.numeric.other.separator.thousands.cs"
3115
3115
  }
3116
3116
  ]
@@ -3122,7 +3122,7 @@
3122
3122
  "name": "constant.numeric.other.suffix.cs"
3123
3123
  }
3124
3124
  },
3125
- "match": "(\\G0[bB])([01_](?:[01_]|((?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)((?:(?:(?:(?:(?:[uU]|[uU]l)|[uU]L)|l[uU]?)|L[uU]?)|[fFdDmM])(?!\\w))?$"
3125
+ "match": "(\\G0[bB])([01_](?:[01_]|((?<=\\h)_(?=\\h)))*)((?:(?:(?:(?:(?:[uU]|[uU]l)|[uU]L)|l[uU]?)|L[uU]?)|[fFdDmM])(?!\\w))?$"
3126
3126
  },
3127
3127
  {
3128
3128
  "captures": {
@@ -3133,7 +3133,7 @@
3133
3133
  "name": "constant.numeric.hex.cs",
3134
3134
  "patterns": [
3135
3135
  {
3136
- "match": "(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])",
3136
+ "match": "(?<=\\h)_(?=\\h)",
3137
3137
  "name": "constant.numeric.other.separator.thousands.cs"
3138
3138
  }
3139
3139
  ]
@@ -3145,7 +3145,7 @@
3145
3145
  "name": "constant.numeric.other.suffix.cs"
3146
3146
  }
3147
3147
  },
3148
- "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))?$"
3148
+ "match": "(\\G0[xX])(\\h(?:\\h|((?<=\\h)_(?=\\h)))*)((?:(?:(?:(?:(?:[uU]|[uU]l)|[uU]L)|l[uU]?)|L[uU]?)|[fFdDmM])(?!\\w))?$"
3149
3149
  },
3150
3150
  {
3151
3151
  "captures": {
@@ -3153,7 +3153,7 @@
3153
3153
  "name": "constant.numeric.decimal.cs",
3154
3154
  "patterns": [
3155
3155
  {
3156
- "match": "(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])",
3156
+ "match": "(?<=\\h)_(?=\\h)",
3157
3157
  "name": "constant.numeric.other.separator.thousands.cs"
3158
3158
  }
3159
3159
  ]
@@ -3174,7 +3174,7 @@
3174
3174
  "name": "constant.numeric.decimal.cs",
3175
3175
  "patterns": [
3176
3176
  {
3177
- "match": "(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])",
3177
+ "match": "(?<=\\h)_(?=\\h)",
3178
3178
  "name": "constant.numeric.other.separator.thousands.cs"
3179
3179
  }
3180
3180
  ]
@@ -3183,10 +3183,10 @@
3183
3183
  "name": "constant.numeric.other.suffix.cs"
3184
3184
  }
3185
3185
  },
3186
- "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))?$"
3186
+ "match": "(\\G(?=[0-9.])(?!0[xXbB]))([0-9](?:[0-9]|((?<=\\h)_(?=\\h)))*)((?<!_)([eE])(\\+?)(-?)([0-9](?:[0-9]|(?<=\\h)_(?=\\h))*))?((?:(?:(?:(?:(?:[uU]|[uU]l)|[uU]L)|l[uU]?)|L[uU]?)|[fFdDmM])(?!\\w))?$"
3187
3187
  },
3188
3188
  {
3189
- "match": "(?:(?:[0-9a-zA-Z_]|_)|(?<=[eE])[+-]|\\.\\d)+",
3189
+ "match": "(?:[0-9a-zA-Z_]|(?<=[eE])[+\\-]|\\.\\d)+",
3190
3190
  "name": "invalid.illegal.constant.numeric.cs"
3191
3191
  }
3192
3192
  ]
@@ -3194,7 +3194,7 @@
3194
3194
  ]
3195
3195
  }
3196
3196
  },
3197
- "match": "(?<!\\w)\\.?\\d(?:(?:[0-9a-zA-Z_]|_)|(?<=[eE])[+-]|\\.\\d)*"
3197
+ "match": "(?<!\\w)\\.?\\d(?:[0-9a-zA-Z_]|(?<=[eE])[+\\-]|\\.\\d)*"
3198
3198
  },
3199
3199
  "object-creation-expression": {
3200
3200
  "patterns": [
@@ -3219,10 +3219,10 @@
3219
3219
  ]
3220
3220
  }
3221
3221
  },
3222
- "match": "(new)\\s+(?<type_name>(?:(?:(?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)?(?<name_and_type_args>\\g<identifier>\\s*(?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?)(?:\\s*\\.\\s*\\g<name_and_type_args>)*|(?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\)))(?:\\s*\\?\\s*)?(?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*(?:\\?)?\\s*)*))\\s*(?=\\{|//|/\\*|$)"
3222
+ "match": "(new)\\s+(?<type_name>(?:(?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*::\\s*)?(?<name_and_type_args>\\g<identifier>\\s*(?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?)(?:\\s*\\.\\s*\\g<name_and_type_args>)*|(?<tuple>\\s*\\((?:[^()]|\\g<tuple>)+\\)))(?:\\s*\\?\\s*)?(?:\\s*\\[(?:\\s*,\\s*)*]\\s*\\??\\s*)*)\\s*(?=\\{|//|/\\*|$)"
3223
3223
  },
3224
3224
  "object-creation-expression-with-parameters": {
3225
- "begin": "(new)(?:\\s+(?<type_name>(?:(?:(?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)?(?<name_and_type_args>\\g<identifier>\\s*(?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?)(?:\\s*\\.\\s*\\g<name_and_type_args>)*|(?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\)))(?:\\s*\\?\\s*)?(?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*(?:\\?)?\\s*)*)))?\\s*(?=\\()",
3225
+ "begin": "(new)(?:\\s+(?<type_name>(?:(?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*::\\s*)?(?<name_and_type_args>\\g<identifier>\\s*(?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?)(?:\\s*\\.\\s*\\g<name_and_type_args>)*|(?<tuple>\\s*\\((?:[^()]|\\g<tuple>)+\\)))(?:\\s*\\?\\s*)?(?:\\s*\\[(?:\\s*,\\s*)*]\\s*\\??\\s*)*))?\\s*(?=\\()",
3226
3226
  "beginCaptures": {
3227
3227
  "1": {
3228
3228
  "name": "keyword.operator.expression.new.cs"
@@ -3243,11 +3243,11 @@
3243
3243
  ]
3244
3244
  },
3245
3245
  "operator-assignment": {
3246
- "match": "(?<!=|!)(=)(?!=)",
3246
+ "match": "(?<![=!])(=)(?!=)",
3247
3247
  "name": "keyword.operator.assignment.cs"
3248
3248
  },
3249
3249
  "operator-declaration": {
3250
- "begin": "(?<type_name>(?:(?:ref\\s+(?:readonly\\s+)?)?(?:(?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)?(?<name_and_type_args>\\g<identifier>\\s*(?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?)(?:\\s*\\.\\s*\\g<name_and_type_args>)*|(?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\)))(?:\\s*\\?\\s*)?(?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*(?:\\?)?\\s*)*))\\s*\\b(?<operator_keyword>operator)\\b\\s*(?<operator>[+\\-*/%&|\\^!=~<>]+|true|false)\\s*(?=\\()",
3250
+ "begin": "(?<type_name>(?:ref\\s+(?:readonly\\s+)?)?(?:(?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*::\\s*)?(?<name_and_type_args>\\g<identifier>\\s*(?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?)(?:\\s*\\.\\s*\\g<name_and_type_args>)*|(?<tuple>\\s*\\((?:[^()]|\\g<tuple>)+\\)))(?:\\s*\\?\\s*)?(?:\\s*\\[(?:\\s*,\\s*)*]\\s*\\??\\s*)*)\\s*\\b(?<operator_keyword>operator)\\b\\s*(?<operator>[+\\-*/%\\&|\\^!=~<>]+|true|false)\\s*(?=\\()",
3251
3251
  "beginCaptures": {
3252
3252
  "1": {
3253
3253
  "patterns": [
@@ -3263,7 +3263,7 @@
3263
3263
  "name": "entity.name.function.cs"
3264
3264
  }
3265
3265
  },
3266
- "end": "(?<=\\})|(?=;)",
3266
+ "end": "(?<=})|(?=;)",
3267
3267
  "patterns": [
3268
3268
  {
3269
3269
  "include": "#comment"
@@ -3286,7 +3286,7 @@
3286
3286
  "name": "keyword.operator.expression.query.orderby.cs"
3287
3287
  }
3288
3288
  },
3289
- "end": "(?=;|\\))",
3289
+ "end": "(?=[;)])",
3290
3290
  "patterns": [
3291
3291
  {
3292
3292
  "include": "#ordering-direction"
@@ -3326,7 +3326,7 @@
3326
3326
  "name": "entity.name.variable.parameter.cs"
3327
3327
  }
3328
3328
  },
3329
- "match": "(?:(?:\\b(ref|params|out|in|this)\\b)\\s+)?(?<type_name>(?:(?:ref\\s+)?(?:(?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)?(?<name_and_type_args>\\g<identifier>\\s*(?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?)(?:\\s*\\.\\s*\\g<name_and_type_args>)*|(?<tuple>\\s*\\((?:[^()]|\\g<tuple>)+\\)))(?:\\s*\\?\\s*)?(?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*(?:\\?)?\\s*)*))\\s+(\\g<identifier>)"
3329
+ "match": "(?:\\b(ref|params|out|in|this)\\b\\s+)?(?<type_name>(?:ref\\s+)?(?:(?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*::\\s*)?(?<name_and_type_args>\\g<identifier>\\s*(?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?)(?:\\s*\\.\\s*\\g<name_and_type_args>)*|(?<tuple>\\s*\\((?:[^()]|\\g<tuple>)+\\)))(?:\\s*\\?\\s*)?(?:\\s*\\[(?:\\s*,\\s*)*]\\s*\\??\\s*)*)\\s+(\\g<identifier>)"
3330
3330
  },
3331
3331
  "parenthesized-expression": {
3332
3332
  "begin": "\\(",
@@ -3417,7 +3417,7 @@
3417
3417
  },
3418
3418
  "positional-pattern": {
3419
3419
  "begin": "(?=\\()",
3420
- "end": "(?=[)}\\],;:?=&|^]|!=|\\b(and|or|when)\\b)",
3420
+ "end": "(?=[)}\\],;:?=\\&|\\^]|!=|\\b(and|or|when)\\b)",
3421
3421
  "patterns": [
3422
3422
  {
3423
3423
  "begin": "\\(",
@@ -3443,7 +3443,7 @@
3443
3443
  },
3444
3444
  {
3445
3445
  "begin": "(?<=\\))",
3446
- "end": "(?=[)}\\],;:?=&|^]|!=|\\b(and|or|when)\\b)",
3446
+ "end": "(?=[)}\\],;:?=\\&|\\^]|!=|\\b(and|or|when)\\b)",
3447
3447
  "patterns": [
3448
3448
  {
3449
3449
  "include": "#intrusive"
@@ -3459,7 +3459,7 @@
3459
3459
  ]
3460
3460
  },
3461
3461
  "preprocessor": {
3462
- "begin": "^\\s*(\\#)\\s*",
3462
+ "begin": "^\\s*(#)\\s*",
3463
3463
  "beginCaptures": {
3464
3464
  "1": {
3465
3465
  "name": "punctuation.separator.hash.cs"
@@ -3583,7 +3583,7 @@
3583
3583
  "name": "keyword.operator.logical.cs"
3584
3584
  }
3585
3585
  },
3586
- "match": "(==|!=)|(\\!|&&|\\|\\|)"
3586
+ "match": "(==|!=)|(!|&&|\\|\\|)"
3587
3587
  }
3588
3588
  ]
3589
3589
  },
@@ -3625,7 +3625,7 @@
3625
3625
  "name": "keyword.preprocessor.hidden.cs"
3626
3626
  }
3627
3627
  },
3628
- "match": "\\b(?:(default|hidden))"
3628
+ "match": "\\b(default|hidden)"
3629
3629
  },
3630
3630
  {
3631
3631
  "captures": {
@@ -3641,7 +3641,7 @@
3641
3641
  "name": "string.quoted.double.cs"
3642
3642
  }
3643
3643
  },
3644
- "match": "\\\"[^\"]*\\\""
3644
+ "match": "\"[^\"]*\""
3645
3645
  }
3646
3646
  ]
3647
3647
  },
@@ -3660,7 +3660,7 @@
3660
3660
  "name": "string.quoted.double.cs"
3661
3661
  }
3662
3662
  },
3663
- "match": "\\\"[^\"]*\\\""
3663
+ "match": "\"[^\"]*\""
3664
3664
  }
3665
3665
  ]
3666
3666
  },
@@ -3682,7 +3682,7 @@
3682
3682
  "name": "string.quoted.double.cs"
3683
3683
  }
3684
3684
  },
3685
- "match": "\\b(pragma)\\b\\s*\\b(checksum)\\b\\s*(\\\"[^\"]*\\\")\\s*(\\\"[^\"]*\\\")\\s*(\\\"[^\"]*\\\")"
3685
+ "match": "\\b(pragma)\\b\\s*\\b(checksum)\\b\\s*(\"[^\"]*\")\\s*(\"[^\"]*\")\\s*(\"[^\"]*\")"
3686
3686
  },
3687
3687
  "preprocessor-pragma-warning": {
3688
3688
  "captures": {
@@ -3731,7 +3731,7 @@
3731
3731
  "name": "string.quoted.double.cs"
3732
3732
  }
3733
3733
  },
3734
- "match": "\\\"[^\"]*\\\""
3734
+ "match": "\"[^\"]*\""
3735
3735
  }
3736
3736
  ]
3737
3737
  },
@@ -3767,7 +3767,7 @@
3767
3767
  "name": "punctuation.curlybrace.open.cs"
3768
3768
  }
3769
3769
  },
3770
- "end": "\\}",
3770
+ "end": "}",
3771
3771
  "endCaptures": {
3772
3772
  "0": {
3773
3773
  "name": "punctuation.curlybrace.close.cs"
@@ -3785,13 +3785,13 @@
3785
3785
  "name": "storage.modifier.$1.cs"
3786
3786
  },
3787
3787
  {
3788
- "begin": "\\b(get)\\b\\s*(?=\\{|;|=>|//|/\\*|$)",
3788
+ "begin": "\\b(get)\\b\\s*(?=[{;]|=>|//|/\\*|$)",
3789
3789
  "beginCaptures": {
3790
3790
  "1": {
3791
3791
  "name": "storage.type.accessor.$1.cs"
3792
3792
  }
3793
3793
  },
3794
- "end": "(?<=\\}|;)|(?=\\})",
3794
+ "end": "(?<=[};])|(?=})",
3795
3795
  "patterns": [
3796
3796
  {
3797
3797
  "include": "#accessor-getter"
@@ -3799,13 +3799,13 @@
3799
3799
  ]
3800
3800
  },
3801
3801
  {
3802
- "begin": "\\b(set|init)\\b\\s*(?=\\{|;|=>|//|/\\*|$)",
3802
+ "begin": "\\b(set|init)\\b\\s*(?=[{;]|=>|//|/\\*|$)",
3803
3803
  "beginCaptures": {
3804
3804
  "1": {
3805
3805
  "name": "storage.type.accessor.$1.cs"
3806
3806
  }
3807
3807
  },
3808
- "end": "(?<=\\}|;)|(?=\\})",
3808
+ "end": "(?<=[};])|(?=})",
3809
3809
  "patterns": [
3810
3810
  {
3811
3811
  "include": "#accessor-setter"
@@ -3815,7 +3815,7 @@
3815
3815
  ]
3816
3816
  },
3817
3817
  "property-declaration": {
3818
- "begin": "(?![[:word:][:space:]]*\\b(?:class|interface|struct|enum|event)\\b)(?<return_type>(?<type_name>(?:(?:ref\\s+(?:readonly\\s+)?)?(?:(?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)?(?<name_and_type_args>\\g<identifier>\\s*(?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?)(?:\\s*\\.\\s*\\g<name_and_type_args>)*|(?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\)))(?:\\s*\\?\\s*)?(?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*(?:\\?)?\\s*)*))\\s+)(?<interface_name>\\g<type_name>\\s*\\.\\s*)?(?<property_name>\\g<identifier>)\\s*(?=\\{|=>|//|/\\*|$)",
3818
+ "begin": "(?![[:word:]\\s]*\\b(?:class|interface|struct|enum|event)\\b)(?<return_type>(?<type_name>(?:ref\\s+(?:readonly\\s+)?)?(?:(?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*::\\s*)?(?<name_and_type_args>\\g<identifier>\\s*(?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?)(?:\\s*\\.\\s*\\g<name_and_type_args>)*|(?<tuple>\\s*\\((?:[^()]|\\g<tuple>)+\\)))(?:\\s*\\?\\s*)?(?:\\s*\\[(?:\\s*,\\s*)*]\\s*\\??\\s*)*)\\s+)(?<interface_name>\\g<type_name>\\s*\\.\\s*)?(?<property_name>\\g<identifier>)\\s*(?=\\{|=>|//|/\\*|$)",
3819
3819
  "beginCaptures": {
3820
3820
  "1": {
3821
3821
  "patterns": [
@@ -3838,7 +3838,7 @@
3838
3838
  "name": "entity.name.variable.property.cs"
3839
3839
  }
3840
3840
  },
3841
- "end": "(?<=\\})|(?=;)",
3841
+ "end": "(?<=})|(?=;)",
3842
3842
  "patterns": [
3843
3843
  {
3844
3844
  "include": "#comment"
@@ -3858,8 +3858,8 @@
3858
3858
  ]
3859
3859
  },
3860
3860
  "property-pattern": {
3861
- "begin": "(?={)",
3862
- "end": "(?=[)}\\],;:?=&|^]|!=|\\b(and|or|when)\\b)",
3861
+ "begin": "(?=\\{)",
3862
+ "end": "(?=[)}\\],;:?=\\&|\\^]|!=|\\b(and|or|when)\\b)",
3863
3863
  "patterns": [
3864
3864
  {
3865
3865
  "begin": "\\{",
@@ -3868,7 +3868,7 @@
3868
3868
  "name": "punctuation.curlybrace.open.cs"
3869
3869
  }
3870
3870
  },
3871
- "end": "\\}",
3871
+ "end": "}",
3872
3872
  "endCaptures": {
3873
3873
  "0": {
3874
3874
  "name": "punctuation.curlybrace.close.cs"
@@ -3884,8 +3884,8 @@
3884
3884
  ]
3885
3885
  },
3886
3886
  {
3887
- "begin": "(?<=\\})",
3888
- "end": "(?=[)}\\],;:?=&|^]|!=|\\b(and|or|when)\\b)",
3887
+ "begin": "(?<=})",
3888
+ "end": "(?=[)}\\],;:?=\\&|\\^]|!=|\\b(and|or|when)\\b)",
3889
3889
  "patterns": [
3890
3890
  {
3891
3891
  "include": "#intrusive"
@@ -3932,7 +3932,7 @@
3932
3932
  ]
3933
3933
  },
3934
3934
  "query-expression": {
3935
- "begin": "\\b(from)\\b\\s*(?<type_name>(?:(?:(?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)?(?<name_and_type_args>\\g<identifier>\\s*(?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?)(?:\\s*\\.\\s*\\g<name_and_type_args>)*|(?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\)))(?:\\s*\\?\\s*)?(?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*(?:\\?)?\\s*)*))?\\s+(\\g<identifier>)\\b\\s*\\b(in)\\b\\s*",
3935
+ "begin": "\\b(from)\\b\\s*(?<type_name>(?:(?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*::\\s*)?(?<name_and_type_args>\\g<identifier>\\s*(?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?)(?:\\s*\\.\\s*\\g<name_and_type_args>)*|(?<tuple>\\s*\\((?:[^()]|\\g<tuple>)+\\)))(?:\\s*\\?\\s*)?(?:\\s*\\[(?:\\s*,\\s*)*]\\s*\\??\\s*)*)?\\s+(\\g<identifier>)\\b\\s*\\b(in)\\b\\s*",
3936
3936
  "beginCaptures": {
3937
3937
  "1": {
3938
3938
  "name": "keyword.operator.expression.query.from.cs"
@@ -3951,7 +3951,7 @@
3951
3951
  "name": "keyword.operator.expression.query.in.cs"
3952
3952
  }
3953
3953
  },
3954
- "end": "(?=;|\\))",
3954
+ "end": "(?=[;)])",
3955
3955
  "patterns": [
3956
3956
  {
3957
3957
  "include": "#query-body"
@@ -4094,7 +4094,7 @@
4094
4094
  ]
4095
4095
  },
4096
4096
  "raw-interpolation": {
4097
- "begin": "(?<=[^\\{]|^)((?:\\{)*)(\\{)(?=[^\\{])",
4097
+ "begin": "(?<=[^{]|^)(\\{*)(\\{)(?=[^{])",
4098
4098
  "beginCaptures": {
4099
4099
  "1": {
4100
4100
  "name": "string.quoted.double.cs"
@@ -4103,7 +4103,7 @@
4103
4103
  "name": "punctuation.definition.interpolation.begin.cs"
4104
4104
  }
4105
4105
  },
4106
- "end": "\\}",
4106
+ "end": "}",
4107
4107
  "endCaptures": {
4108
4108
  "0": {
4109
4109
  "name": "punctuation.definition.interpolation.end.cs"
@@ -4180,7 +4180,7 @@
4180
4180
  },
4181
4181
  "record-declaration": {
4182
4182
  "begin": "(?=\\brecord\\b)",
4183
- "end": "(?<=\\})|(?=;)",
4183
+ "end": "(?<=})|(?=;)",
4184
4184
  "patterns": [
4185
4185
  {
4186
4186
  "begin": "(record)\\b\\s+(@?[_[:alpha:]][_[:alnum:]]*)",
@@ -4218,7 +4218,7 @@
4218
4218
  "name": "punctuation.curlybrace.open.cs"
4219
4219
  }
4220
4220
  },
4221
- "end": "\\}",
4221
+ "end": "}",
4222
4222
  "endCaptures": {
4223
4223
  "0": {
4224
4224
  "name": "punctuation.curlybrace.close.cs"
@@ -4249,7 +4249,7 @@
4249
4249
  "name": "keyword.operator.relational.cs"
4250
4250
  }
4251
4251
  },
4252
- "end": "(?=[)}\\],;:?=&|^]|!=|\\b(and|or|when)\\b)",
4252
+ "end": "(?=[)}\\],;:?=\\&|\\^]|!=|\\b(and|or|when)\\b)",
4253
4253
  "patterns": [
4254
4254
  {
4255
4255
  "include": "#expression"
@@ -4293,7 +4293,7 @@
4293
4293
  "name": "keyword.operator.expression.query.select.cs"
4294
4294
  }
4295
4295
  },
4296
- "end": "(?=;|\\))",
4296
+ "end": "(?=[;)])",
4297
4297
  "patterns": [
4298
4298
  {
4299
4299
  "include": "#query-body"
@@ -4405,7 +4405,7 @@
4405
4405
  "name": "storage.modifier.$1.cs"
4406
4406
  },
4407
4407
  "string-character-escape": {
4408
- "match": "\\\\(x[0-9a-fA-F]{1,4}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|.)",
4408
+ "match": "\\\\(x\\h{1,4}|U\\h{8}|u\\h{4}|.)",
4409
4409
  "name": "constant.character.escape.cs"
4410
4410
  },
4411
4411
  "string-literal": {
@@ -4415,7 +4415,7 @@
4415
4415
  "name": "punctuation.definition.string.begin.cs"
4416
4416
  }
4417
4417
  },
4418
- "end": "(\")|((?:[^\\\\\\n])$)",
4418
+ "end": "(\")|([^\\\\\\n]$)",
4419
4419
  "endCaptures": {
4420
4420
  "1": {
4421
4421
  "name": "punctuation.definition.string.end.cs"
@@ -4433,7 +4433,7 @@
4433
4433
  },
4434
4434
  "struct-declaration": {
4435
4435
  "begin": "(?=(\\brecord\\b\\s+)?\\bstruct\\b)",
4436
- "end": "(?<=\\})|(?=;)",
4436
+ "end": "(?<=})|(?=;)",
4437
4437
  "patterns": [
4438
4438
  {
4439
4439
  "begin": "(\\b(record)\\b\\s+)?(struct)\\b\\s+(@?[_[:alpha:]][_[:alnum:]]*)",
@@ -4474,7 +4474,7 @@
4474
4474
  "name": "punctuation.curlybrace.open.cs"
4475
4475
  }
4476
4476
  },
4477
- "end": "\\}",
4477
+ "end": "}",
4478
4478
  "endCaptures": {
4479
4479
  "0": {
4480
4480
  "name": "punctuation.curlybrace.close.cs"
@@ -4501,7 +4501,7 @@
4501
4501
  "1": {
4502
4502
  "patterns": [
4503
4503
  {
4504
- "match": "\\@?[_[:alpha:]][_[:alnum:]]*",
4504
+ "match": "@?[_[:alpha:]][_[:alnum:]]*",
4505
4505
  "name": "variable.other.object.property.cs"
4506
4506
  },
4507
4507
  {
@@ -4527,7 +4527,7 @@
4527
4527
  "name": "punctuation.curlybrace.open.cs"
4528
4528
  }
4529
4529
  },
4530
- "end": "\\}",
4530
+ "end": "}",
4531
4531
  "endCaptures": {
4532
4532
  "0": {
4533
4533
  "name": "punctuation.curlybrace.close.cs"
@@ -4544,7 +4544,7 @@
4544
4544
  "name": "keyword.operator.arrow.cs"
4545
4545
  }
4546
4546
  },
4547
- "end": "(?=,|})",
4547
+ "end": "(?=[,}])",
4548
4548
  "patterns": [
4549
4549
  {
4550
4550
  "include": "#expression"
@@ -4558,7 +4558,7 @@
4558
4558
  "name": "keyword.control.conditional.when.cs"
4559
4559
  }
4560
4560
  },
4561
- "end": "(?==>|,|})",
4561
+ "end": "(?==>|[,}])",
4562
4562
  "patterns": [
4563
4563
  {
4564
4564
  "include": "#case-guard"
@@ -4567,7 +4567,7 @@
4567
4567
  },
4568
4568
  {
4569
4569
  "begin": "(?!\\s)",
4570
- "end": "(?=\\bwhen\\b|=>|,|})",
4570
+ "end": "(?=\\bwhen\\b|=>|[,}])",
4571
4571
  "patterns": [
4572
4572
  {
4573
4573
  "include": "#pattern"
@@ -4597,7 +4597,7 @@
4597
4597
  "name": "keyword.control.conditional.when.cs"
4598
4598
  }
4599
4599
  },
4600
- "end": "(?=:|})",
4600
+ "end": "(?=[:}])",
4601
4601
  "patterns": [
4602
4602
  {
4603
4603
  "include": "#case-guard"
@@ -4606,7 +4606,7 @@
4606
4606
  },
4607
4607
  {
4608
4608
  "begin": "(?!\\s)",
4609
- "end": "(?=\\bwhen\\b|:|})",
4609
+ "end": "(?=\\bwhen\\b|[:}])",
4610
4610
  "patterns": [
4611
4611
  {
4612
4612
  "include": "#pattern"
@@ -4646,7 +4646,7 @@
4646
4646
  "name": "punctuation.curlybrace.open.cs"
4647
4647
  }
4648
4648
  },
4649
- "end": "\\}",
4649
+ "end": "}",
4650
4650
  "endCaptures": {
4651
4651
  "0": {
4652
4652
  "name": "punctuation.curlybrace.close.cs"
@@ -4677,7 +4677,7 @@
4677
4677
  },
4678
4678
  {
4679
4679
  "begin": "(?=\\()",
4680
- "end": "(?<=\\})|(?=\\})",
4680
+ "end": "(?<=})|(?=})",
4681
4681
  "patterns": [
4682
4682
  {
4683
4683
  "include": "#switch-statement"
@@ -4686,7 +4686,7 @@
4686
4686
  },
4687
4687
  {
4688
4688
  "begin": "(?=\\{)",
4689
- "end": "(?<=\\})|(?=\\})",
4689
+ "end": "(?<=})|(?=})",
4690
4690
  "patterns": [
4691
4691
  {
4692
4692
  "include": "#switch-expression"
@@ -4724,7 +4724,7 @@
4724
4724
  "name": "keyword.control.exception.try.cs"
4725
4725
  }
4726
4726
  },
4727
- "end": "(?<=\\})",
4727
+ "end": "(?<=})",
4728
4728
  "patterns": [
4729
4729
  {
4730
4730
  "include": "#comment"
@@ -4793,7 +4793,7 @@
4793
4793
  ]
4794
4794
  }
4795
4795
  },
4796
- "match": "(?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))\\s*(?!=>|==)(?==)"
4796
+ "match": "(?<tuple>\\s*\\((?:[^()]|\\g<tuple>)+\\))\\s*(?!=[>=])(?==)"
4797
4797
  },
4798
4798
  "tuple-deconstruction-element-list": {
4799
4799
  "begin": "\\(",
@@ -4844,7 +4844,7 @@
4844
4844
  "name": "entity.name.variable.tuple-element.cs"
4845
4845
  }
4846
4846
  },
4847
- "match": "(?<type_name>(?:(?:(?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)?(?<name_and_type_args>\\g<identifier>\\s*(?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?)(?:\\s*\\.\\s*\\g<name_and_type_args>)*|(?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\)))(?:\\s*\\?\\s*)?(?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*(?:\\?)?\\s*)*))(?:(?<tuple_name>\\g<identifier>)\\b)?"
4847
+ "match": "(?<type_name>(?:(?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*::\\s*)?(?<name_and_type_args>\\g<identifier>\\s*(?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?)(?:\\s*\\.\\s*\\g<name_and_type_args>)*|(?<tuple>\\s*\\((?:[^()]|\\g<tuple>)+\\)))(?:\\s*\\?\\s*)?(?:\\s*\\[(?:\\s*,\\s*)*]\\s*\\??\\s*)*)(?:(?<tuple_name>\\g<identifier>)\\b)?"
4848
4848
  },
4849
4849
  "tuple-literal": {
4850
4850
  "begin": "(\\()(?=.*[:,])",
@@ -4973,7 +4973,7 @@
4973
4973
  "name": "punctuation.squarebracket.open.cs"
4974
4974
  }
4975
4975
  },
4976
- "end": "\\]",
4976
+ "end": "]",
4977
4977
  "endCaptures": {
4978
4978
  "0": {
4979
4979
  "name": "punctuation.squarebracket.close.cs"
@@ -5044,7 +5044,7 @@
5044
5044
  "name": "punctuation.separator.coloncolon.cs"
5045
5045
  }
5046
5046
  },
5047
- "match": "(@?[_[:alpha:]][_[:alnum:]]*)\\s*(\\:\\:)"
5047
+ "match": "(@?[_[:alpha:]][_[:alnum:]]*)\\s*(::)"
5048
5048
  },
5049
5049
  {
5050
5050
  "captures": {
@@ -5101,13 +5101,13 @@
5101
5101
  ]
5102
5102
  },
5103
5103
  "type-parameter-list": {
5104
- "begin": "\\<",
5104
+ "begin": "<",
5105
5105
  "beginCaptures": {
5106
5106
  "0": {
5107
5107
  "name": "punctuation.definition.typeparameters.begin.cs"
5108
5108
  }
5109
5109
  },
5110
- "end": "\\>",
5110
+ "end": ">",
5111
5111
  "endCaptures": {
5112
5112
  "0": {
5113
5113
  "name": "punctuation.definition.typeparameters.end.cs"
@@ -5135,11 +5135,11 @@
5135
5135
  },
5136
5136
  "type-pattern": {
5137
5137
  "begin": "(?=@?[_[:alpha:]][_[:alnum:]]*)",
5138
- "end": "(?=[)}\\],;:?=&|^]|!=|\\b(and|or|when)\\b)",
5138
+ "end": "(?=[)}\\],;:?=\\&|\\^]|!=|\\b(and|or|when)\\b)",
5139
5139
  "patterns": [
5140
5140
  {
5141
5141
  "begin": "\\G",
5142
- "end": "(?!\\G[@_[:alpha:]])(?=[\\({@_[:alpha:])}\\],;:=&|^]|(?:\\s|^)\\?|!=|\\b(and|or|when)\\b)",
5142
+ "end": "(?!\\G[@_[:alpha:]])(?=[({@_[:alpha:])}\\],;:=\\&|\\^]|(?:\\s|^)\\?|!=|\\b(and|or|when)\\b)",
5143
5143
  "patterns": [
5144
5144
  {
5145
5145
  "include": "#intrusive"
@@ -5150,8 +5150,8 @@
5150
5150
  ]
5151
5151
  },
5152
5152
  {
5153
- "begin": "(?=[\\({@_[:alpha:]])",
5154
- "end": "(?=[)}\\],;:?=&|^]|!=|\\b(and|or|when)\\b)",
5153
+ "begin": "(?=[({@_[:alpha:]])",
5154
+ "end": "(?=[)}\\],;:?=\\&|\\^]|!=|\\b(and|or|when)\\b)",
5155
5155
  "patterns": [
5156
5156
  {
5157
5157
  "include": "#intrusive"
@@ -5188,19 +5188,19 @@
5188
5188
  "name": "punctuation.separator.coloncolon.cs"
5189
5189
  }
5190
5190
  },
5191
- "end": "(?<=[_[:alnum:]])|(?=[.<\\[\\({)}\\],;:?=&|^]|!=|\\b(and|or|when)\\b)",
5191
+ "end": "(?<=[_[:alnum:]])|(?=[.<\\[({)}\\],;:?=\\&|\\^]|!=|\\b(and|or|when)\\b)",
5192
5192
  "patterns": [
5193
5193
  {
5194
5194
  "include": "#intrusive"
5195
5195
  },
5196
5196
  {
5197
- "match": "\\@?[_[:alpha:]][_[:alnum:]]*",
5197
+ "match": "@?[_[:alpha:]][_[:alnum:]]*",
5198
5198
  "name": "entity.name.type.cs"
5199
5199
  }
5200
5200
  ]
5201
5201
  },
5202
5202
  {
5203
- "match": "\\@?[_[:alpha:]][_[:alnum:]]*",
5203
+ "match": "@?[_[:alpha:]][_[:alnum:]]*",
5204
5204
  "name": "entity.name.type.cs"
5205
5205
  },
5206
5206
  {
@@ -5210,13 +5210,13 @@
5210
5210
  "name": "punctuation.accessor.cs"
5211
5211
  }
5212
5212
  },
5213
- "end": "(?<=[_[:alnum:]])|(?=[<\\[\\({)}\\],;:?=&|^]|!=|\\b(and|or|when)\\b)",
5213
+ "end": "(?<=[_[:alnum:]])|(?=[<\\[({)}\\],;:?=\\&|\\^]|!=|\\b(and|or|when)\\b)",
5214
5214
  "patterns": [
5215
5215
  {
5216
5216
  "include": "#intrusive"
5217
5217
  },
5218
5218
  {
5219
- "match": "\\@?[_[:alpha:]][_[:alnum:]]*",
5219
+ "match": "@?[_[:alpha:]][_[:alnum:]]*",
5220
5220
  "name": "entity.name.type.cs"
5221
5221
  }
5222
5222
  ]
@@ -5303,7 +5303,7 @@
5303
5303
  "include": "#comment"
5304
5304
  },
5305
5305
  {
5306
- "match": "\\@?[_[:alpha:]][_[:alnum:]]*",
5306
+ "match": "@?[_[:alpha:]][_[:alnum:]]*",
5307
5307
  "name": "entity.name.type.namespace.cs"
5308
5308
  },
5309
5309
  {
@@ -5323,7 +5323,7 @@
5323
5323
  "name": "keyword.control.context.using.cs"
5324
5324
  }
5325
5325
  },
5326
- "end": "(?<=\\))|(?=;|})",
5326
+ "end": "(?<=\\))|(?=[;}])",
5327
5327
  "patterns": [
5328
5328
  {
5329
5329
  "include": "#intrusive"
@@ -5368,7 +5368,7 @@
5368
5368
  "name": "storage.type.var.cs"
5369
5369
  }
5370
5370
  },
5371
- "end": "(?=[)}\\],;:?=&|^]|!=|\\b(and|or|when)\\b)",
5371
+ "end": "(?=[)}\\],;:?=\\&|\\^]|!=|\\b(and|or|when)\\b)",
5372
5372
  "patterns": [
5373
5373
  {
5374
5374
  "include": "#designation-pattern"
@@ -5376,13 +5376,13 @@
5376
5376
  ]
5377
5377
  },
5378
5378
  "variable-initializer": {
5379
- "begin": "(?<!=|!)(=)(?!=|>)",
5379
+ "begin": "(?<![=!])(=)(?![=>])",
5380
5380
  "beginCaptures": {
5381
5381
  "1": {
5382
5382
  "name": "keyword.operator.assignment.cs"
5383
5383
  }
5384
5384
  },
5385
- "end": "(?=[,\\)\\];}])",
5385
+ "end": "(?=[,)\\];}])",
5386
5386
  "patterns": [
5387
5387
  {
5388
5388
  "include": "#ref-modifier"
@@ -5471,7 +5471,7 @@
5471
5471
  "name": "keyword.operator.expression.query.where.cs"
5472
5472
  }
5473
5473
  },
5474
- "end": "(?=;|\\))",
5474
+ "end": "(?=[;)])",
5475
5475
  "patterns": [
5476
5476
  {
5477
5477
  "include": "#query-body"
@@ -5488,7 +5488,7 @@
5488
5488
  "name": "keyword.control.loop.while.cs"
5489
5489
  }
5490
5490
  },
5491
- "end": "(?<=\\})|(?=;)",
5491
+ "end": "(?<=})|(?=;)",
5492
5492
  "patterns": [
5493
5493
  {
5494
5494
  "begin": "\\(",
@@ -5521,7 +5521,7 @@
5521
5521
  "name": "keyword.operator.expression.with.cs"
5522
5522
  }
5523
5523
  },
5524
- "end": "(?<=\\})",
5524
+ "end": "(?<=})",
5525
5525
  "patterns": [
5526
5526
  {
5527
5527
  "include": "#comment"
@@ -5551,7 +5551,7 @@
5551
5551
  "name": "punctuation.separator.equals.cs"
5552
5552
  }
5553
5553
  },
5554
- "match": "(?:^|\\s+)((?:([-_[:alnum:]]+)(:))?([-_[:alnum:]]+))(=)"
5554
+ "match": "(?:^|\\s+)((?:([\\-_[:alnum:]]+)(:))?([\\-_[:alnum:]]+))(=)"
5555
5555
  },
5556
5556
  {
5557
5557
  "include": "#xml-string"
@@ -5565,7 +5565,7 @@
5565
5565
  "name": "punctuation.definition.string.begin.cs"
5566
5566
  }
5567
5567
  },
5568
- "end": "\\]\\]>",
5568
+ "end": "]]>",
5569
5569
  "endCaptures": {
5570
5570
  "0": {
5571
5571
  "name": "punctuation.definition.string.end.cs"
@@ -5584,7 +5584,7 @@
5584
5584
  "name": "punctuation.definition.constant.cs"
5585
5585
  }
5586
5586
  },
5587
- "match": "(&)((?:[[:alpha:]:_][[:alnum:]:_.-]*)|(?:\\#[[:digit:]]+)|(?:\\#x[[:xdigit:]]+))(;)",
5587
+ "match": "(&)([[:alpha:]:_][[:alnum:]:_.\\-]*|#\\d+|#x\\h+)(;)",
5588
5588
  "name": "constant.character.entity.cs"
5589
5589
  },
5590
5590
  {
@@ -5627,13 +5627,13 @@
5627
5627
  "xml-string": {
5628
5628
  "patterns": [
5629
5629
  {
5630
- "begin": "\\'",
5630
+ "begin": "'",
5631
5631
  "beginCaptures": {
5632
5632
  "0": {
5633
5633
  "name": "punctuation.definition.string.begin.cs"
5634
5634
  }
5635
5635
  },
5636
- "end": "\\'",
5636
+ "end": "'",
5637
5637
  "endCaptures": {
5638
5638
  "0": {
5639
5639
  "name": "punctuation.definition.string.end.cs"
@@ -5647,13 +5647,13 @@
5647
5647
  ]
5648
5648
  },
5649
5649
  {
5650
- "begin": "\\\"",
5650
+ "begin": "\"",
5651
5651
  "beginCaptures": {
5652
5652
  "0": {
5653
5653
  "name": "punctuation.definition.string.begin.cs"
5654
5654
  }
5655
5655
  },
5656
- "end": "\\\"",
5656
+ "end": "\"",
5657
5657
  "endCaptures": {
5658
5658
  "0": {
5659
5659
  "name": "punctuation.definition.string.end.cs"
@@ -5669,7 +5669,7 @@
5669
5669
  ]
5670
5670
  },
5671
5671
  "xml-tag": {
5672
- "begin": "(</?)((?:([-_[:alnum:]]+)(:))?([-_[:alnum:]]+))",
5672
+ "begin": "(</?)((?:([\\-_[:alnum:]]+)(:))?([\\-_[:alnum:]]+))",
5673
5673
  "beginCaptures": {
5674
5674
  "1": {
5675
5675
  "name": "punctuation.definition.tag.cs"