github-linguist 6.0.0 → 6.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -62,13 +62,13 @@
62
62
  "match": "(?x)\n (\\() (\\?P= \\w+(?:\\s+[[:alnum:]]+)?) (\\))\n",
63
63
  "captures": {
64
64
  "1": {
65
- "name": "punctuation.parenthesis.backreference.named.begin.regexp support.other.parenthesis.regexp"
65
+ "name": "support.other.parenthesis.regexp punctuation.parenthesis.backreference.named.begin.regexp"
66
66
  },
67
67
  "2": {
68
68
  "name": "entity.name.tag.named.backreference.regexp"
69
69
  },
70
70
  "3": {
71
- "name": "punctuation.parenthesis.backreference.named.end.regexp support.other.parenthesis.regexp"
71
+ "name": "support.other.parenthesis.regexp punctuation.parenthesis.backreference.named.end.regexp"
72
72
  }
73
73
  }
74
74
  },
@@ -138,7 +138,7 @@
138
138
  ],
139
139
  "beginCaptures": {
140
140
  "1": {
141
- "name": "constant.other.set.regexp punctuation.character.set.begin.regexp"
141
+ "name": "punctuation.character.set.begin.regexp constant.other.set.regexp"
142
142
  },
143
143
  "2": {
144
144
  "name": "keyword.operator.negation.regexp"
@@ -149,7 +149,7 @@
149
149
  },
150
150
  "endCaptures": {
151
151
  "1": {
152
- "name": "constant.other.set.regexp punctuation.character.set.end.regexp"
152
+ "name": "punctuation.character.set.end.regexp constant.other.set.regexp"
153
153
  },
154
154
  "2": {
155
155
  "name": "invalid.illegal.newline.python"
@@ -223,7 +223,7 @@
223
223
  },
224
224
  "endCaptures": {
225
225
  "1": {
226
- "name": "punctuation.parenthesis.conditional.end.regexp keyword.operator.conditional.negative.regexp"
226
+ "name": "keyword.operator.conditional.negative.regexp punctuation.parenthesis.conditional.end.regexp"
227
227
  },
228
228
  "2": {
229
229
  "name": "invalid.illegal.newline.python"
@@ -330,7 +330,7 @@
330
330
  },
331
331
  "endCaptures": {
332
332
  "1": {
333
- "name": "punctuation.parenthesis.lookahead.end.regexp keyword.operator.lookahead.regexp"
333
+ "name": "keyword.operator.lookahead.regexp punctuation.parenthesis.lookahead.end.regexp"
334
334
  },
335
335
  "2": {
336
336
  "name": "invalid.illegal.newline.python"
@@ -355,7 +355,7 @@
355
355
  },
356
356
  "endCaptures": {
357
357
  "1": {
358
- "name": "punctuation.parenthesis.lookahead.end.regexp keyword.operator.lookahead.negative.regexp"
358
+ "name": "keyword.operator.lookahead.negative.regexp punctuation.parenthesis.lookahead.end.regexp"
359
359
  },
360
360
  "2": {
361
361
  "name": "invalid.illegal.newline.python"
@@ -380,7 +380,7 @@
380
380
  },
381
381
  "endCaptures": {
382
382
  "1": {
383
- "name": "punctuation.parenthesis.lookbehind.end.regexp keyword.operator.lookbehind.regexp"
383
+ "name": "keyword.operator.lookbehind.regexp punctuation.parenthesis.lookbehind.end.regexp"
384
384
  },
385
385
  "2": {
386
386
  "name": "invalid.illegal.newline.python"
@@ -405,7 +405,7 @@
405
405
  },
406
406
  "endCaptures": {
407
407
  "1": {
408
- "name": "punctuation.parenthesis.lookbehind.end.regexp keyword.operator.lookbehind.negative.regexp"
408
+ "name": "keyword.operator.lookbehind.negative.regexp punctuation.parenthesis.lookbehind.end.regexp"
409
409
  },
410
410
  "2": {
411
411
  "name": "invalid.illegal.newline.python"
@@ -423,7 +423,7 @@
423
423
  ],
424
424
  "beginCaptures": {
425
425
  "1": {
426
- "name": "punctuation.parenthesis.named.begin.regexp support.other.parenthesis.regexp"
426
+ "name": "support.other.parenthesis.regexp punctuation.parenthesis.named.begin.regexp"
427
427
  },
428
428
  "2": {
429
429
  "name": "entity.name.tag.named.group.regexp"
@@ -431,7 +431,7 @@
431
431
  },
432
432
  "endCaptures": {
433
433
  "1": {
434
- "name": "punctuation.parenthesis.named.end.regexp support.other.parenthesis.regexp"
434
+ "name": "support.other.parenthesis.regexp punctuation.parenthesis.named.end.regexp"
435
435
  },
436
436
  "2": {
437
437
  "name": "invalid.illegal.newline.python"
@@ -448,12 +448,12 @@
448
448
  ],
449
449
  "beginCaptures": {
450
450
  "0": {
451
- "name": "punctuation.parenthesis.begin.regexp support.other.parenthesis.regexp"
451
+ "name": "support.other.parenthesis.regexp punctuation.parenthesis.begin.regexp"
452
452
  }
453
453
  },
454
454
  "endCaptures": {
455
455
  "1": {
456
- "name": "punctuation.parenthesis.end.regexp support.other.parenthesis.regexp"
456
+ "name": "support.other.parenthesis.regexp punctuation.parenthesis.end.regexp"
457
457
  },
458
458
  "2": {
459
459
  "name": "invalid.illegal.newline.python"
@@ -470,12 +470,12 @@
470
470
  ],
471
471
  "beginCaptures": {
472
472
  "0": {
473
- "name": "punctuation.parenthesis.non-capturing.begin.regexp support.other.parenthesis.regexp"
473
+ "name": "support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.begin.regexp"
474
474
  }
475
475
  },
476
476
  "endCaptures": {
477
477
  "1": {
478
- "name": "punctuation.parenthesis.non-capturing.end.regexp support.other.parenthesis.regexp"
478
+ "name": "support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.end.regexp"
479
479
  },
480
480
  "2": {
481
481
  "name": "invalid.illegal.newline.python"
@@ -34,7 +34,7 @@
34
34
  },
35
35
  {
36
36
  "name": "keyword.operator.rexx",
37
- "match": "([\\+-/*%\u0026|()¬\\\\=\u003c\u003e~])"
37
+ "match": "([\\+-/*%\u0026|()¬\\\\=\u003c\u003e])"
38
38
  },
39
39
  {
40
40
  "name": "keyword.rexx",
@@ -77,7 +77,7 @@
77
77
  },
78
78
  {
79
79
  "name": "keyword.other.sas",
80
- "match": "(?i:(%(macro|mend|do|if|then|end|while|until|goto|include)\\b))\\s*(\\w*)",
80
+ "match": "(?i:(%(bquote|do|else|end|eval|global|goto|if|inc|include|index|input|length|let|list|local|lowcase|macro|mend|nrbquote|nrquote|nrstr|put|qscan|qsysfunc|quote|run|scan|str|substr|syscall|sysevalf|sysexec|sysfunc|sysrc|then|to|unquote|upcase|until|while|window)\\b))\\s*(\\w*)",
81
81
  "captures": {
82
82
  "1": {
83
83
  "name": "support.class.sas"
@@ -138,7 +138,7 @@
138
138
  },
139
139
  {
140
140
  "name": "support.function.sas",
141
- "match": "\\b(?i:(_all_|_character_|_cmd_|_freq_|_i_|_infile_|_last_|_msg_|_null_|_numeric_|_temporary_|_type_|abort|abs|addr|adjrsq|airy|alpha|alter|altlog|altprint|and|arcos|array|arsin|as|atan|attrc|attrib|attrn|authserver|autoexec|awscontrol|awsdef|awsmenu|awsmenumerge|awstitle|backward|band|base|betainv|between|blocksize|blshift|bnot|bor|brshift|bufno|bufsize|bxor|by|byerr|byline|byte|calculated|call|cards|cards4|catcache|cbufno|cdf|ceil|center|cexist|change|chisq|cinv|class|cleanup|close|cnonct|cntllev|coalesce|codegen|col|collate|collin|column|comamid|comaux1|comaux2|comdef|compbl|compound|compress|config|continue|convert|cos|cosh|cpuid|create|cross|crosstab|css|curobs|cv|daccdb|daccdbsl|daccsl|daccsyd|dacctab|dairy|datalines|datalines4|datejul|datepart|datetime|day|dbcslang|dbcstype|dclose|ddm|delete|delimiter|depdb|depdbsl|depsl|depsyd|deptab|dequote|descending|descript|design=|device|dflang|dhms|dif|digamma|dim|dinfo|display|distinct|dkricond|dkrocond|dlm|dnum|do|dopen|doptname|doptnum|dread|drop|dropnote|dsname|dsnferr|echo|else|emaildlg|emailid|emailpw|emailserver|emailsys|encrypt|end|endsas|engine|eof|eov|erf|erfc|error|errorcheck|errors|exist|exp|fappend|fclose|fcol|fdelete|feedback|fetch|fetchobs|fexist|fget|file|fileclose|fileexist|filefmt|filename|fileref|filevar|finfo|finv|fipname|fipnamel|fipstate|first|firstobs|floor|fmterr|fmtsearch|fnonct|fnote|font|fontalias|footnote[1-9]?|fopen|foptname|foptnum|force|formatted|formchar|formdelim|formdlim|forward|fpoint|fpos|fput|fread|frewind|frlen|from|fsep|fuzz|fwrite|gaminv|gamma|getoption|getvarc|getvarn|go|goto|group|gwindow|hbar|hbound|helpenv|helploc|hms|honorappearance|hosthelp|hostprint|hour|hpct|html|hvar|ibessel|ibr|id|if|index|indexc|indexw|initcmd|initstmt|inner|input|inputc|inputn|inr|insert|int|intck|intnx|into|intrr|invaliddata|irr|is|jbessel|join|juldate|keep|kentb|kurtosis|label|lag|last|lbound|leave|left|length|levels|lgamma|lib|libname|library|libref|line|linesize|link|list|log|log10|log2|logpdf|logpmf|logsdf|lostcard|lowcase|lrecl|ls|macro|macrogen|maps|mautosource|max|maxdec|maxr|mdy|mean|measures|median|memtype|merge|merror|min|minute|missing|missover|mlogic|mod|mode|model|modify|month|mopen|mort|mprint|mrecall|msglevel|msymtabmax|mvarsize|myy|n|nest|netpv|new|news|nmiss|no|nobatch|nobs|nocaps|nocardimage|nocenter|nocharcode|nocmdmac|nocol|nocum|nodate|nodbcs|nodetails|nodmr|nodms|nodmsbatch|nodup|nodupkey|noduplicates|noechoauto|noequals|noerrorabend|noexitwindows|nofullstimer|noicon|noimplmac|noint|nolist|noloadlist|nomiss|nomlogic|nomprint|nomrecall|nomsgcase|nomstored|nomultenvappl|nonotes|nonumber|noobs|noovp|nopad|nopercent|noprint|noprintinit|normal|norow|norsasuser|nosetinit|nosource2|nosplash|nosymbolgen|note|notes|notitle|notitles|notsorted|noverbose|noxsync|noxwait|npv|null|number|numkeys|nummousekeys|nway|obs|ods|on|open|option|order|ordinal|otherwise|out|outer|outp=|output|over|ovp|p(1|5|10|25|50|75|90|95|99)|pad|pad2|page|pageno|pagesize|paired|parm|parmcards|path|pathdll|pathname|pdf|peek|peekc|pfkey|pmf|point|poisson|poke|position|printer|probbeta|probbnml|probchi|probf|probgam|probhypr|probit|probnegb|probnorm|probsig|probt|procleave|prt|ps|put|putc|putn|pw|pwreq|qtr|quote|r|ranbin|rancau|ranexp|rangam|range|ranks|rannor|ranpoi|rantbl|rantri|ranuni|read|recfm|register|regr|remote|remove|rename|repeat|replace|resolve|retain|return|reuse|reverse|rewind|right|round|rsquare|rtf|rtrace|rtraceloc|s|s2|samploc|sasautos|sascontrol|sasfrscr|sashelp|sasmsg|sasmstore|sasscript|sasuser|saving|scan|sdf|second|select|selection|separated|seq|serror|set|setcomm|setot|sign|simple|sin|sinh|siteinfo|skewness|skip|sle|sls|sortedby|sortpgm|sortseq|sortsize|soundex|source2|spedis|splashlocation|split|spool|sqrt|start|std|stderr|stdin|stfips|stimer|stname|stnamel|stop|stopover|subgroup|subpopn|substr|sum|sumwgt|symbol|symbolgen|symget|symput|sysget|sysin|sysleave|sysmsg|sysparm|sysprint|sysprintfont|sysprod|sysrc|system|t|table|tables|tan|tanh|tapeclose|tbufsize|terminal|test|then|timepart|tinv|title[1-9]?|tnonct|to|today|tol|tooldef|totper|transformout|translate|trantab|tranwrd|trigamma|trim|trimn|trunc|truncover|type|unformatted|uniform|union|until|upcase|update|user|usericon|uss|validate|value|var|varfmt|varinfmt|varlabel|varlen|varname|varnum|varray|varrayx|vartype|verify|vformat|vformatd|vformatdx|vformatn|vformatnx|vformatw|vformatwx|vformatx|vinarray|vinarrayx|vinformat|vinformatd|vinformatdx|vinformatn|vinformatnx|vinformatw|vinformatwx|vinformatx|vlabel|vlabelx|vlength|vlengthx|vname|vnamex|vnferr|vtype|vtypex|weekday|weight|when|where|while|wincharset|window|work|workinit|workterm|write|wsum|x|xsync|xwait|yearcutoff|yes|yyq|zipfips|zipname|zipnamel|zipstate))\\b",
141
+ "match": "\\b(?i:(_all_|_character_|_cmd_|_freq_|_i_|_infile_|_last_|_msg_|_null_|_numeric_|_temporary_|_type_|abort|abs|addr|adjrsq|airy|alpha|alter|altlog|altprint|and|arcos|array|arsin|as|atan|attrc|attrib|attrn|authserver|autoexec|awscontrol|awsdef|awsmenu|awsmenumerge|awstitle|backward|band|base|betainv|between|blocksize|blshift|bnot|bor|brshift|bufno|bufsize|bxor|by|byerr|byline|byte|calculated|call|cards|cards4|case|catcache|cbufno|cdf|ceil|center|cexist|change|chisq|cinv|class|cleanup|close|cnonct|cntllev|coalesce|codegen|col|collate|collin|column|comamid|comaux1|comaux2|comdef|compbl|compound|compress|config|continue|convert|cos|cosh|cpuid|create|cross|crosstab|css|curobs|cv|daccdb|daccdbsl|daccsl|daccsyd|dacctab|dairy|datalines|datalines4|date|datejul|datepart|datetime|day|dbcslang|dbcstype|dclose|ddm|delete|delimiter|depdb|depdbsl|depsl|depsyd|deptab|dequote|descending|descript|design=|device|dflang|dhms|dif|digamma|dim|dinfo|display|distinct|dkricond|dkrocond|dlm|dnum|do|dopen|doptname|doptnum|dread|drop|dropnote|dsname|dsnferr|echo|else|emaildlg|emailid|emailpw|emailserver|emailsys|encrypt|end|endsas|engine|eof|eov|erf|erfc|error|errorcheck|errors|exist|exp|fappend|fclose|fcol|fdelete|feedback|fetch|fetchobs|fexist|fget|file|fileclose|fileexist|filefmt|filename|fileref|filevar|finfo|finv|fipname|fipnamel|fipstate|first|firstobs|floor|fmterr|fmtsearch|fnonct|fnote|font|fontalias|footnote[1-9]?|fopen|foptname|foptnum|force|formatted|formchar|formdelim|formdlim|forward|fpoint|fpos|fput|fread|frewind|frlen|from|fsep|full|fuzz|fwrite|gaminv|gamma|getoption|getvarc|getvarn|go|goto|group|gwindow|hbar|hbound|helpenv|helploc|hms|honorappearance|hosthelp|hostprint|hour|hpct|html|hvar|ibessel|ibr|id|if|index|indexc|indexw|infile|informat|initcmd|initstmt|inner|input|inputc|inputn|inr|insert|int|intck|intnx|into|intrr|invaliddata|irr|is|jbessel|join|juldate|keep|kentb|kurtosis|label|lag|last|lbound|leave|left|length|levels|lgamma|lib|libname|library|libref|line|linesize|link|list|log|log10|log2|logpdf|logpmf|logsdf|lostcard|lowcase|lrecl|ls|macro|macrogen|maps|mautosource|max|maxdec|maxr|mdy|mean|measures|median|memtype|merge|merror|min|minute|missing|missover|mlogic|mod|mode|model|modify|month|mopen|mort|mprint|mrecall|msglevel|msymtabmax|mvarsize|myy|n|nest|netpv|new|news|nmiss|no|nobatch|nobs|nocaps|nocardimage|nocenter|nocharcode|nocmdmac|nocol|nocum|nodate|nodbcs|nodetails|nodmr|nodms|nodmsbatch|nodup|nodupkey|noduplicates|noechoauto|noequals|noerrorabend|noexitwindows|nofullstimer|noicon|noimplmac|noint|nolist|noloadlist|nomiss|nomlogic|nomprint|nomrecall|nomsgcase|nomstored|nomultenvappl|nonotes|nonumber|noobs|noovp|nopad|nopercent|noprint|noprintinit|normal|norow|norsasuser|nosetinit|nosource2|nosplash|nosymbolgen|note|notes|notitle|notitles|notsorted|noverbose|noxsync|noxwait|npv|null|number|numkeys|nummousekeys|nway|obs|ods|on|open|option|order|ordinal|otherwise|out|outer|outp=|output|over|ovp|p(1|5|10|25|50|75|90|95|99)|pad|pad2|page|pageno|pagesize|paired|parm|parmcards|path|pathdll|pathname|pdf|peek|peekc|pfkey|pmf|point|poisson|poke|position|printer|probbeta|probbnml|probchi|probf|probgam|probhypr|probit|probnegb|probnorm|probsig|probt|procleave|project|prt|ps|put|putc|putn|pw|pwreq|qtr|quote|r|ranbin|rancau|ranexp|rangam|range|ranks|rannor|ranpoi|rantbl|rantri|ranuni|read|recfm|register|regr|remote|remove|rename|repeat|replace|resolve|retain|return|reuse|reverse|rewind|right|round|rsquare|rtf|rtrace|rtraceloc|s|s2|samploc|sasautos|sascontrol|sasfrscr|sashelp|sasmsg|sasmstore|sasscript|sasuser|saving|scan|sdf|second|select|selection|separated|seq|serror|set|setcomm|setot|sign|simple|sin|sinh|siteinfo|skewness|skip|sle|sls|sortedby|sortpgm|sortseq|sortsize|soundex|source2|spedis|splashlocation|split|spool|sqrt|start|std|stderr|stdin|stfips|stimer|stname|stnamel|stop|stopover|strip|subgroup|subpopn|substr|sum|sumwgt|symbol|symbolgen|symget|symput|sysget|sysin|sysleave|sysmsg|sysparm|sysprint|sysprintfont|sysprod|sysrc|system|t|table|tables|tan|tanh|tapeclose|tbufsize|terminal|test|then|time|timepart|tinv|title[1-9]?|tnonct|to|today|tol|tooldef|totper|transformout|translate|trantab|tranwrd|trigamma|trim|trimn|trunc|truncover|type|unformatted|uniform|union|until|upcase|update|user|usericon|uss|validate|value|var|varfmt|varinfmt|varlabel|varlen|varname|varnum|varray|varrayx|vartype|verify|vformat|vformatd|vformatdx|vformatn|vformatnx|vformatw|vformatwx|vformatx|vinarray|vinarrayx|vinformat|vinformatd|vinformatdx|vinformatn|vinformatnx|vinformatw|vinformatwx|vinformatx|vlabel|vlabelx|vlength|vlengthx|vname|vnamex|vnferr|vtype|vtypex|weekday|weight|when|where|while|wincharset|window|work|workinit|workterm|write|wsum|wsumx|x|xsync|xwait|year|yearcutoff|yes|yyq|zipfips|zipname|zipnamel|zipstate))\\b",
142
142
  "captures": {
143
143
  "1": {
144
144
  "name": "support.class.sas"
@@ -66,7 +66,7 @@
66
66
  },
67
67
  {
68
68
  "name": "keyword.control",
69
- "match": "\\b(var|import|function|constant|view|pure|payable|storage|memory|if|else|for|while|do|break|continue|returns?|private|public|internal|external|inherited|this|suicide|selfdestruct|new|is|throw|revert|assert|require|\\_)\\b"
69
+ "match": "\\b(var|import|function|constant|view|pure|storage|memory|if|else|for|while|do|break|continue|returns?|private|public|internal|external|inherited|this|suicide|selfdestruct|new|is|throw|revert|assert|require|\\_)\\b"
70
70
  },
71
71
  {
72
72
  "match": "\\b([A-Za-z_]\\w+)(\\s+(?:private|public|internal|external|inherited))?\\s+([A-Za-z_]\\w*)\\;",
@@ -21,11 +21,11 @@
21
21
  "repository": {
22
22
  "access-modifier": {
23
23
  "name": "storage.modifier.ts",
24
- "match": "{{startOfIdentifier}}(abstract|public|protected|private|readonly|static){{endOfIdentifier}}"
24
+ "match": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(abstract|public|protected|private|readonly|static)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
25
25
  },
26
26
  "after-operator-block-as-object-literal": {
27
27
  "name": "meta.objectliteral.ts",
28
- "begin": "(?\u003c=[=(,\\[?+!]|{{lookBehindAwait}}|{{lookBehindReturn}}|{{lookBehindYield}}|{{lookBehindThrow}}|{{lookBehindIn}}|{{lookBehindOf}}|{{lookBehindTypeof}}|\u0026\u0026|\\|\\||\\*)\\s*(\\{)",
28
+ "begin": "(?\u003c=[=(,\\[?+!]|^await|[^\\._$[:alnum:]]await|^return|[^\\._$[:alnum:]]return|^yield|[^\\._$[:alnum:]]yield|^throw|[^\\._$[:alnum:]]throw|^in|[^\\._$[:alnum:]]in|^of|[^\\._$[:alnum:]]of|^typeof|[^\\._$[:alnum:]]typeof|\u0026\u0026|\\|\\||\\*)\\s*(\\{)",
29
29
  "end": "\\}",
30
30
  "patterns": [
31
31
  {
@@ -95,7 +95,7 @@
95
95
  "patterns": [
96
96
  {
97
97
  "name": "meta.arrow.ts",
98
- "match": "(?:{{startOfIdentifier}}(\\basync)\\s+)?({{identifier}})\\s*(?==\u003e)",
98
+ "match": "(?:(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(\\basync)\\s+)?([_$[:alpha:]][_$[:alnum:]]*)\\s*(?==\u003e)",
99
99
  "captures": {
100
100
  "1": {
101
101
  "name": "storage.modifier.async.ts"
@@ -107,7 +107,7 @@
107
107
  },
108
108
  {
109
109
  "name": "meta.arrow.ts",
110
- "begin": "(?x) (?:\n {{startOfIdentifier}}(\\basync)\n)? ((?\u003c![})!\\]])\\s*\n (?=\n {{arrowLookup}}\n )\n)",
110
+ "begin": "(?x) (?:\n (?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(\\basync)\n)? ((?\u003c![})!\\]])\\s*\n (?=\n # sure shot arrow functions even if =\u003e is on new line\n(\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [\u003c]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=\u003e] # \u003c typeparam extends\n) |\n# arrow function possible to detect only with =\u003e on same line\n(\n (\u003c\\s*([_$[:alpha:]]|(\\{[^\\{\\}]*\\})|(\\([^\\(\\)]*\\))|(\\[[^\\[\\]]*\\]))([^=\u003c\u003e]|=[^\u003c]|\\\u003c\\s*([_$[:alpha:]]|(\\{[^\\{\\}]*\\})|(\\([^\\(\\)]*\\))|(\\[[^\\[\\]]*\\]))([^=\u003c\u003e]|=[^\u003c])*\\\u003e)*\u003e\\s*)? # typeparameters\n \\(\\s*([_$[:alpha:]\\{\\[]([^()]|\\((\\s*[^()]*)?\\))*)?\\) # parameteres\n (\\s*:\\s*([^\u003c\u003e\\(\\)]|\\\u003c[^\u003c\u003e]+\\\u003e|\\([^\\(\\)]+\\))+)? # return type\n \\s*=\u003e # arrow operator\n)\n )\n)",
111
111
  "end": "(?==\u003e|\\{|(^\\s*(export|function|class|interface|let|var|const|import|enum|namespace|module|type|abstract|declare)\\s+))",
112
112
  "patterns": [
113
113
  {
@@ -199,11 +199,11 @@
199
199
  "patterns": [
200
200
  {
201
201
  "name": "constant.language.boolean.true.ts",
202
- "match": "{{startOfIdentifier}}true{{endOfIdentifier}}"
202
+ "match": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))true(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
203
203
  },
204
204
  {
205
205
  "name": "constant.language.boolean.false.ts",
206
- "match": "{{startOfIdentifier}}false{{endOfIdentifier}}"
206
+ "match": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))false(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
207
207
  }
208
208
  ]
209
209
  },
@@ -233,7 +233,7 @@
233
233
  "patterns": [
234
234
  {
235
235
  "name": "cast.expr.ts",
236
- "begin": "(?:(?\u003c={{lookBehindReturn}}|{{lookBehindThrow}}|{{lookBehindYield}}|{{lookBehindAwait}}|{{lookBehindDefault}}|[=(,:\u003e*?\\\u0026\\|\\^]|[^_$[:alnum:]](?:\\+\\+|\\-\\-)|[^\\+]\\+|[^\\-]\\-))\\s*(\u003c)(?!\u003c?\\=)",
236
+ "begin": "(?:(?\u003c=^return|[^\\._$[:alnum:]]return|^throw|[^\\._$[:alnum:]]throw|^yield|[^\\._$[:alnum:]]yield|^await|[^\\._$[:alnum:]]await|^default|[^\\._$[:alnum:]]default|[=(,:\u003e*?\\\u0026\\|\\^]|[^_$[:alnum:]](?:\\+\\+|\\-\\-)|[^\\+]\\+|[^\\-]\\-))\\s*(\u003c)(?!\u003c?\\=)",
237
237
  "end": "(\\\u003e)\\s*",
238
238
  "patterns": [
239
239
  {
@@ -253,7 +253,7 @@
253
253
  },
254
254
  {
255
255
  "name": "cast.expr.ts",
256
- "begin": "(?:(?\u003c=^))\\s*(\u003c)(?={{identifier}}\\s*\u003e)",
256
+ "begin": "(?:(?\u003c=^))\\s*(\u003c)(?=[_$[:alpha:]][_$[:alnum:]]*\\s*\u003e)",
257
257
  "end": "(\\\u003e)\\s*",
258
258
  "patterns": [
259
259
  {
@@ -275,7 +275,7 @@
275
275
  },
276
276
  "class-declaration": {
277
277
  "name": "meta.class.ts",
278
- "begin": "{{startOfIdentifier}}(?:(export)\\s+)?\\b(?:(abstract)\\s+)?\\b(class)\\b(?=\\s+|/[/*])",
278
+ "begin": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(?:(export)\\s+)?\\b(?:(abstract)\\s+)?\\b(class)\\b(?=\\s+|/[/*])",
279
279
  "end": "(?\u003c=\\})",
280
280
  "patterns": [
281
281
  {
@@ -303,7 +303,7 @@
303
303
  "include": "#class-or-interface-heritage"
304
304
  },
305
305
  {
306
- "match": "{{identifier}}",
306
+ "match": "[_$[:alpha:]][_$[:alnum:]]*",
307
307
  "captures": {
308
308
  "0": {
309
309
  "name": "entity.name.type.class.ts"
@@ -320,7 +320,7 @@
320
320
  },
321
321
  "class-expression": {
322
322
  "name": "meta.class.ts",
323
- "begin": "{{startOfIdentifier}}(class)\\b(?=\\s+|[\u003c{]|/[/*])",
323
+ "begin": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(class)\\b(?=\\s+|[\u003c{]|/[/*])",
324
324
  "end": "(?\u003c=\\})",
325
325
  "patterns": [
326
326
  {
@@ -395,7 +395,7 @@
395
395
  }
396
396
  },
397
397
  "class-or-interface-heritage": {
398
- "begin": "{{startOfIdentifier}}(?:\\b(extends|implements)\\b){{endOfIdentifier}}",
398
+ "begin": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(?:\\b(extends|implements)\\b)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
399
399
  "end": "(?=\\{)",
400
400
  "patterns": [
401
401
  {
@@ -411,7 +411,7 @@
411
411
  "include": "#expressionWithoutIdentifiers"
412
412
  },
413
413
  {
414
- "match": "({{identifier}})\\s*{{propertyAccess}}(?=\\s*{{identifier}}(\\s*{{propertyAccessPreIdentifier}}{{identifier}})*\\s*)",
414
+ "match": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))(?=\\s*[_$[:alpha:]][_$[:alnum:]]*(\\s*\\??\\.\\s*[_$[:alpha:]][_$[:alnum:]]*)*\\s*)",
415
415
  "captures": {
416
416
  "1": {
417
417
  "name": "entity.name.type.module.ts"
@@ -425,7 +425,7 @@
425
425
  }
426
426
  },
427
427
  {
428
- "match": "({{identifier}})",
428
+ "match": "([_$[:alpha:]][_$[:alnum:]]*)",
429
429
  "captures": {
430
430
  "1": {
431
431
  "name": "entity.other.inherited-class.ts"
@@ -519,35 +519,35 @@
519
519
  },
520
520
  {
521
521
  "name": "keyword.control.trycatch.ts",
522
- "match": "{{startOfIdentifier}}(catch|finally|throw|try){{endOfIdentifier}}"
522
+ "match": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(catch|finally|throw|try)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
523
523
  },
524
524
  {
525
525
  "name": "keyword.control.loop.ts",
526
- "match": "{{startOfIdentifier}}(break|continue|do|goto|while){{endOfIdentifier}}"
526
+ "match": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(break|continue|do|goto|while)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
527
527
  },
528
528
  {
529
529
  "name": "keyword.control.flow.ts",
530
- "match": "{{startOfIdentifier}}(return){{endOfIdentifier}}"
530
+ "match": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(return)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
531
531
  },
532
532
  {
533
533
  "name": "keyword.control.switch.ts",
534
- "match": "{{startOfIdentifier}}(case|default|switch){{endOfIdentifier}}"
534
+ "match": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(case|default|switch)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
535
535
  },
536
536
  {
537
537
  "name": "keyword.control.conditional.ts",
538
- "match": "{{startOfIdentifier}}(else|if){{endOfIdentifier}}"
538
+ "match": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(else|if)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
539
539
  },
540
540
  {
541
541
  "name": "keyword.control.with.ts",
542
- "match": "{{startOfIdentifier}}(with){{endOfIdentifier}}"
542
+ "match": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(with)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
543
543
  },
544
544
  {
545
545
  "name": "keyword.other.debugger.ts",
546
- "match": "{{startOfIdentifier}}(debugger){{endOfIdentifier}}"
546
+ "match": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(debugger)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
547
547
  },
548
548
  {
549
549
  "name": "storage.modifier.ts",
550
- "match": "{{startOfIdentifier}}(declare){{endOfIdentifier}}"
550
+ "match": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(declare)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
551
551
  }
552
552
  ]
553
553
  },
@@ -610,7 +610,7 @@
610
610
  },
611
611
  "decorator": {
612
612
  "name": "meta.decorator.ts",
613
- "begin": "{{startOfIdentifier}}\\@",
613
+ "begin": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))\\@",
614
614
  "end": "(?=\\s)",
615
615
  "patterns": [
616
616
  {
@@ -671,7 +671,7 @@
671
671
  ]
672
672
  },
673
673
  "destructuring-parameter-rest": {
674
- "match": "(?:(\\.\\.\\.)\\s*)?({{identifier}})",
674
+ "match": "(?:(\\.\\.\\.)\\s*)?([_$[:alpha:]][_$[:alnum:]]*)",
675
675
  "captures": {
676
676
  "1": {
677
677
  "name": "keyword.operator.rest.ts"
@@ -685,7 +685,7 @@
685
685
  "patterns": [
686
686
  {
687
687
  "name": "meta.object-binding-pattern-variable.ts",
688
- "begin": "(?\u003c!=|:|{{lookBehindOf}}|{{lookBehindIn}})\\s*(?=\\{)",
688
+ "begin": "(?\u003c!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\{)",
689
689
  "end": "(?=$|^|[;,=}]|(\\s+(of|in)\\s+))",
690
690
  "patterns": [
691
691
  {
@@ -701,7 +701,7 @@
701
701
  },
702
702
  {
703
703
  "name": "meta.array-binding-pattern-variable.ts",
704
- "begin": "(?\u003c!=|:|{{lookBehindOf}}|{{lookBehindIn}})\\s*(?=\\[)",
704
+ "begin": "(?\u003c!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\[)",
705
705
  "end": "(?=$|^|[;,=}]|(\\s+(of|in)\\s+))",
706
706
  "patterns": [
707
707
  {
@@ -718,7 +718,7 @@
718
718
  ]
719
719
  },
720
720
  "destructuring-variable-rest": {
721
- "match": "(?:(\\.\\.\\.)\\s*)?({{identifier}})",
721
+ "match": "(?:(\\.\\.\\.)\\s*)?([_$[:alpha:]][_$[:alnum:]]*)",
722
722
  "captures": {
723
723
  "1": {
724
724
  "name": "keyword.operator.rest.ts"
@@ -730,7 +730,7 @@
730
730
  },
731
731
  "directives": {
732
732
  "name": "comment.line.triple-slash.directive.ts",
733
- "begin": "^(///)\\s*(?=\u003c(reference|amd-dependency|amd-module)(\\s+(path|types|no-default-lib|name)\\s*=\\s*({{quotedStrings}}))+\\s*/\u003e\\s*$)",
733
+ "begin": "^(///)\\s*(?=\u003c(reference|amd-dependency|amd-module)(\\s+(path|types|no-default-lib|name)\\s*=\\s*((\\'([^\\'\\\\]|\\\\\\'|\\\\)*\\')|(\\\"([^\\\"\\\\]|\\\\\\\"|\\\\)*\\\")))+\\s*/\u003e\\s*$)",
734
734
  "end": "(?=^)",
735
735
  "patterns": [
736
736
  {
@@ -1093,7 +1093,7 @@
1093
1093
  },
1094
1094
  "enum-declaration": {
1095
1095
  "name": "meta.enum.declaration.ts",
1096
- "begin": "{{startOfIdentifier}}(?:(\\bexport)\\s+)?(?:\\b(const)\\s+)?\\b(enum)\\s+({{identifier}})",
1096
+ "begin": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(?:(\\bexport)\\s+)?(?:\\b(const)\\s+)?\\b(enum)\\s+([_$[:alpha:]][_$[:alnum:]]*)",
1097
1097
  "end": "(?\u003c=\\})",
1098
1098
  "patterns": [
1099
1099
  {
@@ -1107,7 +1107,7 @@
1107
1107
  "include": "#comment"
1108
1108
  },
1109
1109
  {
1110
- "begin": "({{identifier}})",
1110
+ "begin": "([_$[:alpha:]][_$[:alnum:]]*)",
1111
1111
  "end": "(?=,|\\}|$)",
1112
1112
  "patterns": [
1113
1113
  {
@@ -1124,7 +1124,7 @@
1124
1124
  }
1125
1125
  },
1126
1126
  {
1127
- "begin": "(?=({{nonIdentifierPropertyName}}))",
1127
+ "begin": "(?=((\\'([^\\'\\\\]|\\\\\\'|\\\\)*\\')|(\\\"([^\\\"\\\\]|\\\\\\\"|\\\\)*\\\")|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\])))",
1128
1128
  "end": "(?=,|\\}|$)",
1129
1129
  "patterns": [
1130
1130
  {
@@ -1175,7 +1175,7 @@
1175
1175
  "export-declaration": {
1176
1176
  "patterns": [
1177
1177
  {
1178
- "match": "{{startOfIdentifier}}(export)\\s+(as)\\s+(namespace)\\s+({{identifier}})",
1178
+ "match": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(export)\\s+(as)\\s+(namespace)\\s+([_$[:alpha:]][_$[:alnum:]]*)",
1179
1179
  "captures": {
1180
1180
  "1": {
1181
1181
  "name": "keyword.control.export.ts"
@@ -1193,7 +1193,7 @@
1193
1193
  },
1194
1194
  {
1195
1195
  "name": "meta.export.default.ts",
1196
- "begin": "{{startOfIdentifier}}(export)(?:(?:\\s*(=))|(?:\\s+(default)(?=\\s+)))",
1196
+ "begin": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(export)(?:(?:\\s*(=))|(?:\\s+(default)(?=\\s+)))",
1197
1197
  "end": "(?=;|$|\\babstract\\b|\\basync\\b|\\bclass\\b|\\bconst\\b|\\bdeclare\\b|\\benum\\b|\\bexport\\b|\\bfunction\\b|\\bimport\\b|\\binterface\\b|\\blet\\b|\\bmodule\\b|\\bnamespace\\b|\\btype\\b|\\bvar\\b)",
1198
1198
  "patterns": [
1199
1199
  {
@@ -1214,7 +1214,7 @@
1214
1214
  },
1215
1215
  {
1216
1216
  "name": "meta.export.ts",
1217
- "begin": "{{startOfIdentifier}}(export)(?!\\s*:){{endOfIdentifier}}",
1217
+ "begin": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(export)(?!\\s*:)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
1218
1218
  "end": "(?=;|$|\\babstract\\b|\\basync\\b|\\bclass\\b|\\bconst\\b|\\bdeclare\\b|\\benum\\b|\\bexport\\b|\\bfunction\\b|\\bimport\\b|\\binterface\\b|\\blet\\b|\\bmodule\\b|\\bnamespace\\b|\\btype\\b|\\bvar\\b)",
1219
1219
  "patterns": [
1220
1220
  {
@@ -1246,10 +1246,10 @@
1246
1246
  "patterns": [
1247
1247
  {
1248
1248
  "name": "keyword.control.flow.ts",
1249
- "match": "{{startOfIdentifier}}(await){{endOfIdentifier}}"
1249
+ "match": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(await)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
1250
1250
  },
1251
1251
  {
1252
- "match": "{{startOfIdentifier}}(yield){{endOfIdentifier}}(?:\\s*(\\*))?",
1252
+ "match": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(yield)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?:\\s*(\\*))?",
1253
1253
  "captures": {
1254
1254
  "1": {
1255
1255
  "name": "keyword.control.flow.ts"
@@ -1261,34 +1261,34 @@
1261
1261
  },
1262
1262
  {
1263
1263
  "name": "keyword.operator.expression.delete.ts",
1264
- "match": "{{startOfIdentifier}}delete{{endOfIdentifier}}"
1264
+ "match": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))delete(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
1265
1265
  },
1266
1266
  {
1267
1267
  "name": "keyword.operator.expression.in.ts",
1268
- "match": "{{startOfIdentifier}}in{{endOfIdentifier}}"
1268
+ "match": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))in(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
1269
1269
  },
1270
1270
  {
1271
1271
  "name": "keyword.operator.expression.of.ts",
1272
- "match": "{{startOfIdentifier}}of{{endOfIdentifier}}"
1272
+ "match": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))of(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
1273
1273
  },
1274
1274
  {
1275
1275
  "name": "keyword.operator.expression.instanceof.ts",
1276
- "match": "{{startOfIdentifier}}instanceof{{endOfIdentifier}}"
1276
+ "match": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))instanceof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
1277
1277
  },
1278
1278
  {
1279
1279
  "name": "keyword.operator.new.ts",
1280
- "match": "{{startOfIdentifier}}new{{endOfIdentifier}}"
1280
+ "match": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))new(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
1281
1281
  },
1282
1282
  {
1283
1283
  "include": "#typeof-operator"
1284
1284
  },
1285
1285
  {
1286
1286
  "name": "keyword.operator.expression.void.ts",
1287
- "match": "{{startOfIdentifier}}void{{endOfIdentifier}}"
1287
+ "match": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))void(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
1288
1288
  },
1289
1289
  {
1290
- "begin": "{{startOfIdentifier}}(as)\\s+",
1291
- "end": "(?=$|^|[;,:})\\]]|({{startOfIdentifier}}(as)\\s+))",
1290
+ "begin": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(as)\\s+",
1291
+ "end": "(?=$|^|[;,:})\\]]|((?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(as)\\s+))",
1292
1292
  "patterns": [
1293
1293
  {
1294
1294
  "include": "#type"
@@ -1422,15 +1422,15 @@
1422
1422
  },
1423
1423
  "field-declaration": {
1424
1424
  "name": "meta.field.declaration.ts",
1425
- "begin": "(?\u003c!\\()(?:{{startOfIdentifier}}(readonly)\\s+)?(?={{propertyName}}\\s*(\\?\\s*)?(=|:))",
1426
- "end": "(?=\\}|;|,|$|(^(?!{{propertyName}}\\s*(\\?\\s*)?(=|:))))|(?\u003c=\\})",
1425
+ "begin": "(?\u003c!\\()(?:(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(readonly)\\s+)?(?=(([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\\\'|\\\\)*\\')|(\\\"([^\\\"\\\\]|\\\\\\\"|\\\\)*\\\")|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\?\\s*)?(=|:))",
1426
+ "end": "(?=\\}|;|,|$|(^(?!(([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\\\'|\\\\)*\\')|(\\\"([^\\\"\\\\]|\\\\\\\"|\\\\)*\\\")|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\?\\s*)?(=|:))))|(?\u003c=\\})",
1427
1427
  "patterns": [
1428
1428
  {
1429
1429
  "include": "#variable-initializer"
1430
1430
  },
1431
1431
  {
1432
- "begin": "(?={{propertyName}}\\s*(\\?\\s*)?(=|:))",
1433
- "end": "(?=[};,=]|$|(^(?!{{propertyName}}\\s*(\\?\\s*)?(=|:))))|(?\u003c=\\})",
1432
+ "begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\\\'|\\\\)*\\')|(\\\"([^\\\"\\\\]|\\\\\\\"|\\\\)*\\\")|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\?\\s*)?(=|:))",
1433
+ "end": "(?=[};,=]|$|(^(?!(([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\\\'|\\\\)*\\')|(\\\"([^\\\"\\\\]|\\\\\\\"|\\\\)*\\\")|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\?\\s*)?(=|:))))|(?\u003c=\\})",
1434
1434
  "patterns": [
1435
1435
  {
1436
1436
  "include": "#type-annotation"
@@ -1446,11 +1446,11 @@
1446
1446
  },
1447
1447
  {
1448
1448
  "name": "meta.definition.property.ts entity.name.function.ts",
1449
- "match": "(?x)({{identifier}})(?=(\\?\\s*)?{{functionLikeAssignmentOrType}})"
1449
+ "match": "(?x)([_$[:alpha:]][_$[:alnum:]]*)(?=(\\?\\s*)?\\s*\n# function assignment |\n(=\\s*(\n ((async\\s+)?(\n (function\\s*[(\u003c*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=\u003e)\n )) |\n ((async\\s*)?(\n # sure shot arrow functions even if =\u003e is on new line\n(\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [\u003c]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=\u003e] # \u003c typeparam extends\n) |\n# arrow function possible to detect only with =\u003e on same line\n(\n (\u003c\\s*([_$[:alpha:]]|(\\{[^\\{\\}]*\\})|(\\([^\\(\\)]*\\))|(\\[[^\\[\\]]*\\]))([^=\u003c\u003e]|=[^\u003c]|\\\u003c\\s*([_$[:alpha:]]|(\\{[^\\{\\}]*\\})|(\\([^\\(\\)]*\\))|(\\[[^\\[\\]]*\\]))([^=\u003c\u003e]|=[^\u003c])*\\\u003e)*\u003e\\s*)? # typeparameters\n \\(\\s*([_$[:alpha:]\\{\\[]([^()]|\\((\\s*[^()]*)?\\))*)?\\) # parameteres\n (\\s*:\\s*([^\u003c\u003e\\(\\)]|\\\u003c[^\u003c\u003e]+\\\u003e|\\([^\\(\\)]+\\))+)? # return type\n \\s*=\u003e # arrow operator\n)\n ))\n)) |\n# typeannotation is fn type: \u003c | () | (... | (param: | (param, | (param? | (param= | (param) =\u003e\n(:\\s*(\n (\u003c) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=\u003e)\n ))\n ))\n)) |\n(:\\s*(=\u003e|(\\([^\\(\\)]*\\))|(\u003c[^\u003c\u003e]*\u003e)|[^\u003c\u003e(),=])+=\\s*(\n ((async\\s+)?(\n (function\\s*[(\u003c*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=\u003e)\n )) |\n ((async\\s*)?(\n # sure shot arrow functions even if =\u003e is on new line\n(\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [\u003c]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=\u003e] # \u003c typeparam extends\n) |\n# arrow function possible to detect only with =\u003e on same line\n(\n (\u003c\\s*([_$[:alpha:]]|(\\{[^\\{\\}]*\\})|(\\([^\\(\\)]*\\))|(\\[[^\\[\\]]*\\]))([^=\u003c\u003e]|=[^\u003c]|\\\u003c\\s*([_$[:alpha:]]|(\\{[^\\{\\}]*\\})|(\\([^\\(\\)]*\\))|(\\[[^\\[\\]]*\\]))([^=\u003c\u003e]|=[^\u003c])*\\\u003e)*\u003e\\s*)? # typeparameters\n \\(\\s*([_$[:alpha:]\\{\\[]([^()]|\\((\\s*[^()]*)?\\))*)?\\) # parameteres\n (\\s*:\\s*([^\u003c\u003e\\(\\)]|\\\u003c[^\u003c\u003e]+\\\u003e|\\([^\\(\\)]+\\))+)? # return type\n \\s*=\u003e # arrow operator\n)\n ))\n)))"
1450
1450
  },
1451
1451
  {
1452
1452
  "name": "meta.definition.property.ts variable.object.property.ts",
1453
- "match": "{{identifier}}"
1453
+ "match": "[_$[:alpha:]][_$[:alnum:]]*"
1454
1454
  },
1455
1455
  {
1456
1456
  "name": "keyword.operator.optional.ts",
@@ -1466,7 +1466,7 @@
1466
1466
  }
1467
1467
  },
1468
1468
  "for-loop": {
1469
- "begin": "{{startOfIdentifier}}(for)(?:\\s+(await))?\\s*(\\()",
1469
+ "begin": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(for)(?:\\s+(await))?\\s*(\\()",
1470
1470
  "end": "\\)",
1471
1471
  "patterns": [
1472
1472
  {
@@ -1516,13 +1516,13 @@
1516
1516
  ]
1517
1517
  },
1518
1518
  "function-call": {
1519
- "begin": "(?=(({{identifier}}\\s*{{propertyAccessPreIdentifier}})*|({{propertyAccessPreIdentifier}})?)({{identifier}}){{functionCallLookup}})",
1520
- "end": "(?\u003c=\\))(?!(({{identifier}}\\s*{{propertyAccessPreIdentifier}})*|({{propertyAccessPreIdentifier}})?)({{identifier}}){{functionCallLookup}})",
1519
+ "begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*)\\s*(\\?\\.\\s*)?(\u003c\\s*(([_$[:alpha:]]|(\\{[^\\{\\}]*\\})|(\\([^\\(\\)]*\\))|(\\[[^\\[\\]]*\\]))|(\\'[^\\']*\\')|(\\\"[^\\\"]*\\\")|(\\`[^\\`]*\\`))([^\u003c\u003e\\(]|(\\([^\\(\\)]*\\))|(?\u003c==)\\\u003e|\\\u003c\\s*(([_$[:alpha:]]|(\\{[^\\{\\}]*\\})|(\\([^\\(\\)]*\\))|(\\[[^\\[\\]]*\\]))|(\\'[^\\']*\\')|(\\\"[^\\\"]*\\\")|(\\`[^\\`]*\\`))([^\u003c\u003e\\(]|(\\([^\\(\\)]*\\))|(?\u003c==)\\\u003e)*(?!=)\\\u003e)*(?!=)\u003e\\s*)?\\()",
1520
+ "end": "(?\u003c=\\))(?!(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*)\\s*(\\?\\.\\s*)?(\u003c\\s*(([_$[:alpha:]]|(\\{[^\\{\\}]*\\})|(\\([^\\(\\)]*\\))|(\\[[^\\[\\]]*\\]))|(\\'[^\\']*\\')|(\\\"[^\\\"]*\\\")|(\\`[^\\`]*\\`))([^\u003c\u003e\\(]|(\\([^\\(\\)]*\\))|(?\u003c==)\\\u003e|\\\u003c\\s*(([_$[:alpha:]]|(\\{[^\\{\\}]*\\})|(\\([^\\(\\)]*\\))|(\\[[^\\[\\]]*\\]))|(\\'[^\\']*\\')|(\\\"[^\\\"]*\\\")|(\\`[^\\`]*\\`))([^\u003c\u003e\\(]|(\\([^\\(\\)]*\\))|(?\u003c==)\\\u003e)*(?!=)\\\u003e)*(?!=)\u003e\\s*)?\\()",
1521
1521
  "patterns": [
1522
1522
  {
1523
1523
  "name": "meta.function-call.ts",
1524
- "begin": "(?=(({{identifier}}\\s*{{propertyAccessPreIdentifier}})*|({{propertyAccessPreIdentifier}})?)({{identifier}}))",
1525
- "end": "(?={{functionCallLookup}})",
1524
+ "begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*))",
1525
+ "end": "(?=\\s*(\\?\\.\\s*)?(\u003c\\s*(([_$[:alpha:]]|(\\{[^\\{\\}]*\\})|(\\([^\\(\\)]*\\))|(\\[[^\\[\\]]*\\]))|(\\'[^\\']*\\')|(\\\"[^\\\"]*\\\")|(\\`[^\\`]*\\`))([^\u003c\u003e\\(]|(\\([^\\(\\)]*\\))|(?\u003c==)\\\u003e|\\\u003c\\s*(([_$[:alpha:]]|(\\{[^\\{\\}]*\\})|(\\([^\\(\\)]*\\))|(\\[[^\\[\\]]*\\]))|(\\'[^\\']*\\')|(\\\"[^\\\"]*\\\")|(\\`[^\\`]*\\`))([^\u003c\u003e\\(]|(\\([^\\(\\)]*\\))|(?\u003c==)\\\u003e)*(?!=)\\\u003e)*(?!=)\u003e\\s*)?\\()",
1526
1526
  "patterns": [
1527
1527
  {
1528
1528
  "include": "#literal"
@@ -1538,11 +1538,11 @@
1538
1538
  },
1539
1539
  {
1540
1540
  "name": "keyword.operator.expression.import.ts",
1541
- "match": "(?:{{startOfIdentifier}}import(?=\\s*[\\(]\\s*[\\\"\\'\\`]))"
1541
+ "match": "(?:(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))import(?=\\s*[\\(]\\s*[\\\"\\'\\`]))"
1542
1542
  },
1543
1543
  {
1544
1544
  "name": "entity.name.function.ts",
1545
- "match": "({{identifier}})"
1545
+ "match": "([_$[:alpha:]][_$[:alnum:]]*)"
1546
1546
  }
1547
1547
  ]
1548
1548
  },
@@ -1583,7 +1583,7 @@
1583
1583
  },
1584
1584
  "function-declaration": {
1585
1585
  "name": "meta.function.ts",
1586
- "begin": "{{startOfIdentifier}}(?:(export)\\s+)?(?:(async)\\s+)?(function\\b)(?:\\s*(\\*))?(?:(?:\\s+|(?\u003c=\\*))({{identifier}}))?\\s*",
1586
+ "begin": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(?:(export)\\s+)?(?:(async)\\s+)?(function\\b)(?:\\s*(\\*))?(?:(?:\\s+|(?\u003c=\\*))([_$[:alpha:]][_$[:alnum:]]*))?\\s*",
1587
1587
  "end": "(?=$|^|;)|(?\u003c=\\})",
1588
1588
  "patterns": [
1589
1589
  {
@@ -1610,7 +1610,7 @@
1610
1610
  },
1611
1611
  "function-expression": {
1612
1612
  "name": "meta.function.expression.ts",
1613
- "begin": "{{startOfIdentifier}}(?:(async)\\s+)?(function\\b)(?:\\s*(\\*))?(?:(?:\\s+|(?\u003c=\\*))({{identifier}}))?\\s*",
1613
+ "begin": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(?:(async)\\s+)?(function\\b)(?:\\s*(\\*))?(?:(?:\\s+|(?\u003c=\\*))([_$[:alpha:]][_$[:alnum:]]*))?\\s*",
1614
1614
  "end": "(?\u003c=\\})",
1615
1615
  "patterns": [
1616
1616
  {
@@ -1677,7 +1677,7 @@
1677
1677
  "include": "#object-identifiers"
1678
1678
  },
1679
1679
  {
1680
- "match": "(?x)(?:{{propertyAccess}}\\s*)?({{identifier}})(?=\\s*={{functionOrArrowLookup}})",
1680
+ "match": "(?x)(?:(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*)?([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*=\\s*(\n ((async\\s+)?(\n (function\\s*[(\u003c*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=\u003e)\n )) |\n ((async\\s*)?(\n # sure shot arrow functions even if =\u003e is on new line\n(\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [\u003c]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=\u003e] # \u003c typeparam extends\n) |\n# arrow function possible to detect only with =\u003e on same line\n(\n (\u003c\\s*([_$[:alpha:]]|(\\{[^\\{\\}]*\\})|(\\([^\\(\\)]*\\))|(\\[[^\\[\\]]*\\]))([^=\u003c\u003e]|=[^\u003c]|\\\u003c\\s*([_$[:alpha:]]|(\\{[^\\{\\}]*\\})|(\\([^\\(\\)]*\\))|(\\[[^\\[\\]]*\\]))([^=\u003c\u003e]|=[^\u003c])*\\\u003e)*\u003e\\s*)? # typeparameters\n \\(\\s*([_$[:alpha:]\\{\\[]([^()]|\\((\\s*[^()]*)?\\))*)?\\) # parameteres\n (\\s*:\\s*([^\u003c\u003e\\(\\)]|\\\u003c[^\u003c\u003e]+\\\u003e|\\([^\\(\\)]+\\))+)? # return type\n \\s*=\u003e # arrow operator\n)\n ))\n))",
1681
1681
  "captures": {
1682
1682
  "1": {
1683
1683
  "name": "punctuation.accessor.ts"
@@ -1691,7 +1691,7 @@
1691
1691
  }
1692
1692
  },
1693
1693
  {
1694
- "match": "{{propertyAccess}}\\s*{{constantVar}}",
1694
+ "match": "(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])",
1695
1695
  "captures": {
1696
1696
  "1": {
1697
1697
  "name": "punctuation.accessor.ts"
@@ -1705,7 +1705,7 @@
1705
1705
  }
1706
1706
  },
1707
1707
  {
1708
- "match": "{{propertyAccess}}\\s*({{identifier}})",
1708
+ "match": "(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*([_$[:alpha:]][_$[:alnum:]]*)",
1709
1709
  "captures": {
1710
1710
  "1": {
1711
1711
  "name": "punctuation.accessor.ts"
@@ -1720,17 +1720,17 @@
1720
1720
  },
1721
1721
  {
1722
1722
  "name": "variable.other.constant.ts",
1723
- "match": "{{constantVar}}"
1723
+ "match": "([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])"
1724
1724
  },
1725
1725
  {
1726
1726
  "name": "variable.other.readwrite.ts",
1727
- "match": "{{identifier}}"
1727
+ "match": "[_$[:alpha:]][_$[:alnum:]]*"
1728
1728
  }
1729
1729
  ]
1730
1730
  },
1731
1731
  "import-declaration": {
1732
1732
  "name": "meta.import.ts",
1733
- "begin": "{{startOfIdentifier}}(?:(\\bexport)\\s+)?\\b(import)(?!\\s*[:\\(]){{endOfIdentifier}}",
1733
+ "begin": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(?:(\\bexport)\\s+)?\\b(import)(?!\\s*[:\\(])(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
1734
1734
  "end": "(?=;|$|^)",
1735
1735
  "patterns": [
1736
1736
  {
@@ -1750,7 +1750,7 @@
1750
1750
  "patterns": [
1751
1751
  {
1752
1752
  "name": "meta.import-equals.external.ts",
1753
- "begin": "{{startOfIdentifier}}(?:(\\bexport)\\s+)?\\b(import)\\s+({{identifier}})\\s*(=)\\s*(require)\\s*(\\()",
1753
+ "begin": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(?:(\\bexport)\\s+)?\\b(import)\\s+([_$[:alpha:]][_$[:alnum:]]*)\\s*(=)\\s*(require)\\s*(\\()",
1754
1754
  "end": "\\)",
1755
1755
  "patterns": [
1756
1756
  {
@@ -1788,14 +1788,14 @@
1788
1788
  },
1789
1789
  {
1790
1790
  "name": "meta.import-equals.internal.ts",
1791
- "begin": "{{startOfIdentifier}}(?:(\\bexport)\\s+)?\\b(import)\\s+({{identifier}})\\s*(=)\\s*(?!require\\b)",
1791
+ "begin": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(?:(\\bexport)\\s+)?\\b(import)\\s+([_$[:alpha:]][_$[:alnum:]]*)\\s*(=)\\s*(?!require\\b)",
1792
1792
  "end": "(?=;|$|^)",
1793
1793
  "patterns": [
1794
1794
  {
1795
1795
  "include": "#comment"
1796
1796
  },
1797
1797
  {
1798
- "match": "({{identifier}})\\s*{{propertyAccess}}",
1798
+ "match": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
1799
1799
  "captures": {
1800
1800
  "1": {
1801
1801
  "name": "entity.name.type.module.ts"
@@ -1810,7 +1810,7 @@
1810
1810
  },
1811
1811
  {
1812
1812
  "name": "variable.other.readwrite.ts",
1813
- "match": "({{identifier}})"
1813
+ "match": "([_$[:alpha:]][_$[:alnum:]]*)"
1814
1814
  }
1815
1815
  ],
1816
1816
  "beginCaptures": {
@@ -1856,7 +1856,7 @@
1856
1856
  "include": "#comment"
1857
1857
  },
1858
1858
  {
1859
- "match": "{{startOfIdentifier}}(?:(\\bdefault)|(\\*)|(\\b{{identifier}}))\\s+(as)\\s+(\\b{{identifier}})",
1859
+ "match": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(?:(\\bdefault)|(\\*)|(\\b[_$[:alpha:]][_$[:alnum:]]*))\\s+(as)\\s+(\\b[_$[:alpha:]][_$[:alnum:]]*)",
1860
1860
  "captures": {
1861
1861
  "1": {
1862
1862
  "name": "keyword.control.default.ts"
@@ -1888,7 +1888,7 @@
1888
1888
  },
1889
1889
  {
1890
1890
  "name": "variable.other.readwrite.alias.ts",
1891
- "match": "({{identifier}})"
1891
+ "match": "([_$[:alpha:]][_$[:alnum:]]*)"
1892
1892
  }
1893
1893
  ]
1894
1894
  },
@@ -1914,7 +1914,7 @@
1914
1914
  },
1915
1915
  "indexer-declaration": {
1916
1916
  "name": "meta.indexer.declaration.ts",
1917
- "begin": "(?:{{startOfIdentifier}}(readonly)\\s*)?(\\[)\\s*({{identifier}})\\s*(?=:)",
1917
+ "begin": "(?:(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(readonly)\\s*)?(\\[)\\s*([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=:)",
1918
1918
  "end": "(\\])\\s*(\\?\\s*)?|$",
1919
1919
  "patterns": [
1920
1920
  {
@@ -1943,7 +1943,7 @@
1943
1943
  },
1944
1944
  "indexer-mapped-type-declaration": {
1945
1945
  "name": "meta.indexer.mappedtype.declaration.ts",
1946
- "begin": "(?:{{startOfIdentifier}}(readonly)\\s*)?(\\[)\\s*({{identifier}})\\s+(in)\\s+",
1946
+ "begin": "(?:(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(readonly)\\s*)?(\\[)\\s*([_$[:alpha:]][_$[:alnum:]]*)\\s+(in)\\s+",
1947
1947
  "end": "(\\])\\s*(\\?\\s*)?|$",
1948
1948
  "patterns": [
1949
1949
  {
@@ -2036,7 +2036,7 @@
2036
2036
  },
2037
2037
  "interface-declaration": {
2038
2038
  "name": "meta.interface.ts",
2039
- "begin": "{{startOfIdentifier}}(?:(export)\\s+)?\\b(?:(abstract)\\s+)?\\b(interface)\\b(?=\\s+|/[/*])",
2039
+ "begin": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(?:(export)\\s+)?\\b(?:(abstract)\\s+)?\\b(interface)\\b(?=\\s+|/[/*])",
2040
2040
  "end": "(?\u003c=\\})",
2041
2041
  "patterns": [
2042
2042
  {
@@ -2046,7 +2046,7 @@
2046
2046
  "include": "#class-or-interface-heritage"
2047
2047
  },
2048
2048
  {
2049
- "match": "{{identifier}}",
2049
+ "match": "[_$[:alpha:]][_$[:alnum:]]*",
2050
2050
  "captures": {
2051
2051
  "0": {
2052
2052
  "name": "entity.name.type.interface.ts"
@@ -2138,7 +2138,7 @@
2138
2138
  "patterns": [
2139
2139
  {
2140
2140
  "name": "meta.method.declaration.ts",
2141
- "begin": "{{startOfIdentifier}}(?:\\b(public|private|protected)\\s+)?(?:\\b(abstract)\\s+)?(?:\\b(async)\\s+)?(?:\\b(get|set)\\s+)(?:(\\*)\\s*)?(?=({{propertyName}}\\s*(\\??))\\s*[\\(\\\u003c])",
2141
+ "begin": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(?:\\b(public|private|protected)\\s+)?(?:\\b(abstract)\\s+)?(?:\\b(async)\\s+)?(?:\\b(get|set)\\s+)(?:(\\*)\\s*)?(?=((([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\\\'|\\\\)*\\')|(\\\"([^\\\"\\\\]|\\\\\\\"|\\\\)*\\\")|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??))\\s*[\\(\\\u003c])",
2142
2142
  "end": "(?=\\}|;|,|$)|(?\u003c=\\})",
2143
2143
  "patterns": [
2144
2144
  {
@@ -2168,7 +2168,7 @@
2168
2168
  },
2169
2169
  {
2170
2170
  "name": "meta.method.declaration.ts",
2171
- "begin": "{{startOfIdentifier}}(?:\\b(public|private|protected)\\s+)?(?:\\b(abstract)\\s+)?(?:\\b(async)\\s+)?(?:(?:\\b(?:(new)|(constructor))\\b(?!:){{endOfIdentifier}})|(?:(\\*)\\s*)?(?=({{propertyName}}\\s*(\\??))?\\s*[\\(\\\u003c]))",
2171
+ "begin": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(?:\\b(public|private|protected)\\s+)?(?:\\b(abstract)\\s+)?(?:\\b(async)\\s+)?(?:(?:\\b(?:(new)|(constructor))\\b(?!:)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))|(?:(\\*)\\s*)?(?=((([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\\\'|\\\\)*\\')|(\\\"([^\\\"\\\\]|\\\\\\\"|\\\\)*\\\")|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??))?\\s*[\\(\\\u003c]))",
2172
2172
  "end": "(?=\\}|;|,|$)|(?\u003c=\\})",
2173
2173
  "patterns": [
2174
2174
  {
@@ -2202,7 +2202,7 @@
2202
2202
  ]
2203
2203
  },
2204
2204
  "method-declaration-name": {
2205
- "begin": "(?={{propertyName}}\\s*(\\??)\\s*[\\(\\\u003c])",
2205
+ "begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\\\'|\\\\)*\\')|(\\\"([^\\\"\\\\]|\\\\\\\"|\\\\)*\\\")|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??)\\s*[\\(\\\u003c])",
2206
2206
  "end": "(?=\\(|\\\u003c)",
2207
2207
  "patterns": [
2208
2208
  {
@@ -2213,7 +2213,7 @@
2213
2213
  },
2214
2214
  {
2215
2215
  "name": "meta.definition.method.ts entity.name.function.ts",
2216
- "match": "{{identifier}}"
2216
+ "match": "[_$[:alpha:]][_$[:alnum:]]*"
2217
2217
  },
2218
2218
  {
2219
2219
  "name": "keyword.operator.optional.ts",
@@ -2223,7 +2223,7 @@
2223
2223
  },
2224
2224
  "namespace-declaration": {
2225
2225
  "name": "meta.namespace.declaration.ts",
2226
- "begin": "(?:{{startOfIdentifier}}(?:(\\bexport)\\s+)?\\b(namespace|module)\\s+(?=[_$[:alpha:]\"'`]))",
2226
+ "begin": "(?:(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(?:(\\bexport)\\s+)?\\b(namespace|module)\\s+(?=[_$[:alpha:]\"'`]))",
2227
2227
  "end": "(?\u003c=\\})|(?=;|\\babstract\\b|\\basync\\b|\\bclass\\b|\\bconst\\b|\\bdeclare\\b|\\benum\\b|\\bexport\\b|\\bfunction\\b|\\bimport\\b|\\binterface\\b|\\blet\\b|\\bmodule\\b|\\bnamespace\\b|\\btype\\b|\\bvar\\b)",
2228
2228
  "patterns": [
2229
2229
  {
@@ -2234,7 +2234,7 @@
2234
2234
  },
2235
2235
  {
2236
2236
  "name": "entity.name.type.module.ts",
2237
- "match": "({{identifier}})"
2237
+ "match": "([_$[:alpha:]][_$[:alnum:]]*)"
2238
2238
  },
2239
2239
  {
2240
2240
  "include": "#punctuation-accessor"
@@ -2254,8 +2254,8 @@
2254
2254
  },
2255
2255
  "new-expr": {
2256
2256
  "name": "new.expr.ts",
2257
- "begin": "{{startOfIdentifier}}(new){{endOfIdentifier}}",
2258
- "end": "(?\u003c=\\))|(?=[;),}\\]]|$|({{startOfIdentifier}}new{{endOfIdentifier}})|({{startOfIdentifier}}function((\\s+{{identifier}})|(\\s*[\\(]))))",
2257
+ "begin": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(new)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
2258
+ "end": "(?\u003c=\\))|(?=[;),}\\]]|$|((?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))new(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))|((?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))function((\\s+[_$[:alpha:]][_$[:alnum:]]*)|(\\s*[\\(]))))",
2259
2259
  "patterns": [
2260
2260
  {
2261
2261
  "include": "#paren-expression"
@@ -2275,7 +2275,7 @@
2275
2275
  },
2276
2276
  "null-literal": {
2277
2277
  "name": "constant.language.null.ts",
2278
- "match": "{{startOfIdentifier}}null{{endOfIdentifier}}"
2278
+ "match": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))null(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
2279
2279
  },
2280
2280
  "numeric-literal": {
2281
2281
  "patterns": [
@@ -2323,11 +2323,11 @@
2323
2323
  "patterns": [
2324
2324
  {
2325
2325
  "name": "constant.language.nan.ts",
2326
- "match": "{{startOfIdentifier}}NaN{{endOfIdentifier}}"
2326
+ "match": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))NaN(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
2327
2327
  },
2328
2328
  {
2329
2329
  "name": "constant.language.infinity.ts",
2330
- "match": "{{startOfIdentifier}}Infinity{{endOfIdentifier}}"
2330
+ "match": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))Infinity(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
2331
2331
  }
2332
2332
  ]
2333
2333
  },
@@ -2337,7 +2337,7 @@
2337
2337
  "include": "#comment"
2338
2338
  },
2339
2339
  {
2340
- "begin": "(?={{propertyName}}\\s*(:))",
2340
+ "begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\\\'|\\\\)*\\')|(\\\"([^\\\"\\\\]|\\\\\\\"|\\\\)*\\\")|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(:))",
2341
2341
  "end": "(?=,|\\})",
2342
2342
  "patterns": [
2343
2343
  {
@@ -2363,7 +2363,7 @@
2363
2363
  ]
2364
2364
  },
2365
2365
  "object-binding-element-propertyName": {
2366
- "begin": "(?={{propertyName}}\\s*(:))",
2366
+ "begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\\\'|\\\\)*\\')|(\\\"([^\\\"\\\\]|\\\\\\\"|\\\\)*\\\")|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(:))",
2367
2367
  "end": "(:)",
2368
2368
  "patterns": [
2369
2369
  {
@@ -2374,7 +2374,7 @@
2374
2374
  },
2375
2375
  {
2376
2376
  "name": "variable.object.property.ts",
2377
- "match": "({{identifier}})"
2377
+ "match": "([_$[:alpha:]][_$[:alnum:]]*)"
2378
2378
  }
2379
2379
  ],
2380
2380
  "endCaptures": {
@@ -2409,10 +2409,10 @@
2409
2409
  "patterns": [
2410
2410
  {
2411
2411
  "name": "support.class.ts",
2412
- "match": "({{identifier}})(?=\\s*{{propertyAccessPreIdentifier}}prototype\\b(?!\\$))"
2412
+ "match": "([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*\\??\\.\\s*prototype\\b(?!\\$))"
2413
2413
  },
2414
2414
  {
2415
- "match": "(?x){{propertyAccess}}\\s*(?:\n ({{constantIdentifier}}) |\n ({{identifier}})\n)(?=\\s*{{propertyAccessPreIdentifier}}{{identifier}})",
2415
+ "match": "(?x)(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(?:\n ([[:upper:]][_$[:digit:][:upper:]]*) |\n ([_$[:alpha:]][_$[:alnum:]]*)\n)(?=\\s*\\??\\.\\s*[_$[:alpha:]][_$[:alnum:]]*)",
2416
2416
  "captures": {
2417
2417
  "1": {
2418
2418
  "name": "punctuation.accessor.ts"
@@ -2429,7 +2429,7 @@
2429
2429
  }
2430
2430
  },
2431
2431
  {
2432
- "match": "(?x)(?:\n ({{constantIdentifier}}) |\n ({{identifier}})\n)(?=\\s*{{propertyAccessPreIdentifier}}{{identifier}})",
2432
+ "match": "(?x)(?:\n ([[:upper:]][_$[:digit:][:upper:]]*) |\n ([_$[:alpha:]][_$[:alnum:]]*)\n)(?=\\s*\\??\\.\\s*[_$[:alpha:]][_$[:alnum:]]*)",
2433
2433
  "captures": {
2434
2434
  "1": {
2435
2435
  "name": "variable.other.constant.object.ts"
@@ -2463,7 +2463,7 @@
2463
2463
  },
2464
2464
  "object-literal-method-declaration": {
2465
2465
  "name": "meta.method.declaration.ts",
2466
- "begin": "{{startOfIdentifier}}(?:\\b(async)\\s+)?(?:\\b(get|set)\\s+)?(?:(\\*)\\s*)?(?=({{propertyName}}\\s*(\\??))\\s*[\\(\\\u003c])",
2466
+ "begin": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(?:\\b(async)\\s+)?(?:\\b(get|set)\\s+)?(?:(\\*)\\s*)?(?=((([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\\\'|\\\\)*\\')|(\\\"([^\\\"\\\\]|\\\\\\\"|\\\\)*\\\")|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??))\\s*[\\(\\\u003c])",
2467
2467
  "end": "(?=\\}|;|,)|(?\u003c=\\})",
2468
2468
  "patterns": [
2469
2469
  {
@@ -2473,7 +2473,7 @@
2473
2473
  "include": "#function-body"
2474
2474
  },
2475
2475
  {
2476
- "begin": "{{startOfIdentifier}}(?:\\b(async)\\s+)?(?:\\b(get|set)\\s+)?(?:(\\*)\\s*)?(?=({{propertyName}}\\s*(\\??))\\s*[\\(\\\u003c])",
2476
+ "begin": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(?:\\b(async)\\s+)?(?:\\b(get|set)\\s+)?(?:(\\*)\\s*)?(?=((([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\\\'|\\\\)*\\')|(\\\"([^\\\"\\\\]|\\\\\\\"|\\\\)*\\\")|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??))\\s*[\\(\\\u003c])",
2477
2477
  "end": "(?=\\(|\\\u003c)",
2478
2478
  "patterns": [
2479
2479
  {
@@ -2547,7 +2547,7 @@
2547
2547
  },
2548
2548
  {
2549
2549
  "name": "meta.object.member.ts",
2550
- "match": "(?x)(?:({{identifier}})\\s*(?=:{{functionOrArrowLookup}}))",
2550
+ "match": "(?x)(?:([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=:\\s*(\n ((async\\s+)?(\n (function\\s*[(\u003c*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=\u003e)\n )) |\n ((async\\s*)?(\n # sure shot arrow functions even if =\u003e is on new line\n(\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [\u003c]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=\u003e] # \u003c typeparam extends\n) |\n# arrow function possible to detect only with =\u003e on same line\n(\n (\u003c\\s*([_$[:alpha:]]|(\\{[^\\{\\}]*\\})|(\\([^\\(\\)]*\\))|(\\[[^\\[\\]]*\\]))([^=\u003c\u003e]|=[^\u003c]|\\\u003c\\s*([_$[:alpha:]]|(\\{[^\\{\\}]*\\})|(\\([^\\(\\)]*\\))|(\\[[^\\[\\]]*\\]))([^=\u003c\u003e]|=[^\u003c])*\\\u003e)*\u003e\\s*)? # typeparameters\n \\(\\s*([_$[:alpha:]\\{\\[]([^()]|\\((\\s*[^()]*)?\\))*)?\\) # parameteres\n (\\s*:\\s*([^\u003c\u003e\\(\\)]|\\\u003c[^\u003c\u003e]+\\\u003e|\\([^\\(\\)]+\\))+)? # return type\n \\s*=\u003e # arrow operator\n)\n ))\n)))",
2551
2551
  "captures": {
2552
2552
  "0": {
2553
2553
  "name": "meta.object-literal.key.ts"
@@ -2559,7 +2559,7 @@
2559
2559
  },
2560
2560
  {
2561
2561
  "name": "meta.object.member.ts",
2562
- "match": "(?:{{identifier}})\\s*(?=:)",
2562
+ "match": "(?:[_$[:alpha:]][_$[:alnum:]]*)\\s*(?=:)",
2563
2563
  "captures": {
2564
2564
  "0": {
2565
2565
  "name": "meta.object-literal.key.ts"
@@ -2583,7 +2583,7 @@
2583
2583
  },
2584
2584
  {
2585
2585
  "name": "meta.object.member.ts",
2586
- "match": "({{identifier}})\\s*(?=,|\\}|$)",
2586
+ "match": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=,|\\}|$)",
2587
2587
  "captures": {
2588
2588
  "1": {
2589
2589
  "name": "variable.other.readwrite.ts"
@@ -2592,7 +2592,7 @@
2592
2592
  },
2593
2593
  {
2594
2594
  "name": "meta.object.member.ts",
2595
- "begin": "(?={{identifier}}\\s*=)",
2595
+ "begin": "(?=[_$[:alpha:]][_$[:alnum:]]*\\s*=)",
2596
2596
  "end": "(?=,|\\}|$)",
2597
2597
  "patterns": [
2598
2598
  {
@@ -2675,7 +2675,7 @@
2675
2675
  }
2676
2676
  },
2677
2677
  {
2678
- "match": "(?x)(?:\\s*\\b(public|private|protected|readonly)\\s+)?(\\.\\.\\.)?\\s*(?\u003c!=|:){{startOfIdentifier}}(?:(this)|({{identifier}})){{endOfIdentifier}}\\s*(\\??)(?={{functionLikeAssignmentOrType}})",
2678
+ "match": "(?x)(?:\\s*\\b(public|private|protected|readonly)\\s+)?(\\.\\.\\.)?\\s*(?\u003c!=|:)(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)(?=\\s*\n# function assignment |\n(=\\s*(\n ((async\\s+)?(\n (function\\s*[(\u003c*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=\u003e)\n )) |\n ((async\\s*)?(\n # sure shot arrow functions even if =\u003e is on new line\n(\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [\u003c]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=\u003e] # \u003c typeparam extends\n) |\n# arrow function possible to detect only with =\u003e on same line\n(\n (\u003c\\s*([_$[:alpha:]]|(\\{[^\\{\\}]*\\})|(\\([^\\(\\)]*\\))|(\\[[^\\[\\]]*\\]))([^=\u003c\u003e]|=[^\u003c]|\\\u003c\\s*([_$[:alpha:]]|(\\{[^\\{\\}]*\\})|(\\([^\\(\\)]*\\))|(\\[[^\\[\\]]*\\]))([^=\u003c\u003e]|=[^\u003c])*\\\u003e)*\u003e\\s*)? # typeparameters\n \\(\\s*([_$[:alpha:]\\{\\[]([^()]|\\((\\s*[^()]*)?\\))*)?\\) # parameteres\n (\\s*:\\s*([^\u003c\u003e\\(\\)]|\\\u003c[^\u003c\u003e]+\\\u003e|\\([^\\(\\)]+\\))+)? # return type\n \\s*=\u003e # arrow operator\n)\n ))\n)) |\n# typeannotation is fn type: \u003c | () | (... | (param: | (param, | (param? | (param= | (param) =\u003e\n(:\\s*(\n (\u003c) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=\u003e)\n ))\n ))\n)) |\n(:\\s*(=\u003e|(\\([^\\(\\)]*\\))|(\u003c[^\u003c\u003e]*\u003e)|[^\u003c\u003e(),=])+=\\s*(\n ((async\\s+)?(\n (function\\s*[(\u003c*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=\u003e)\n )) |\n ((async\\s*)?(\n # sure shot arrow functions even if =\u003e is on new line\n(\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [\u003c]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=\u003e] # \u003c typeparam extends\n) |\n# arrow function possible to detect only with =\u003e on same line\n(\n (\u003c\\s*([_$[:alpha:]]|(\\{[^\\{\\}]*\\})|(\\([^\\(\\)]*\\))|(\\[[^\\[\\]]*\\]))([^=\u003c\u003e]|=[^\u003c]|\\\u003c\\s*([_$[:alpha:]]|(\\{[^\\{\\}]*\\})|(\\([^\\(\\)]*\\))|(\\[[^\\[\\]]*\\]))([^=\u003c\u003e]|=[^\u003c])*\\\u003e)*\u003e\\s*)? # typeparameters\n \\(\\s*([_$[:alpha:]\\{\\[]([^()]|\\((\\s*[^()]*)?\\))*)?\\) # parameteres\n (\\s*:\\s*([^\u003c\u003e\\(\\)]|\\\u003c[^\u003c\u003e]+\\\u003e|\\([^\\(\\)]+\\))+)? # return type\n \\s*=\u003e # arrow operator\n)\n ))\n)))",
2679
2679
  "captures": {
2680
2680
  "1": {
2681
2681
  "name": "storage.modifier.ts"
@@ -2695,7 +2695,7 @@
2695
2695
  }
2696
2696
  },
2697
2697
  {
2698
- "match": "(?x)(?:\\s*\\b(public|private|protected|readonly)\\s+)?(\\.\\.\\.)?\\s*(?\u003c!=|:){{startOfIdentifier}}(?:(this)|({{identifier}})){{endOfIdentifier}}\\s*(\\??)",
2698
+ "match": "(?x)(?:\\s*\\b(public|private|protected|readonly)\\s+)?(\\.\\.\\.)?\\s*(?\u003c!=|:)(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)",
2699
2699
  "captures": {
2700
2700
  "1": {
2701
2701
  "name": "storage.modifier.ts"
@@ -2722,7 +2722,7 @@
2722
2722
  "include": "#comment"
2723
2723
  },
2724
2724
  {
2725
- "begin": "(?={{propertyName}}\\s*(:))",
2725
+ "begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\\\'|\\\\)*\\')|(\\\"([^\\\"\\\\]|\\\\\\\"|\\\\)*\\\")|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(:))",
2726
2726
  "end": "(?=,|\\})",
2727
2727
  "patterns": [
2728
2728
  {
@@ -2793,10 +2793,10 @@
2793
2793
  },
2794
2794
  "property-accessor": {
2795
2795
  "name": "storage.type.property.ts",
2796
- "match": "{{startOfIdentifier}}(get|set){{endOfIdentifier}}"
2796
+ "match": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(get|set)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
2797
2797
  },
2798
2798
  "punctuation-accessor": {
2799
- "match": "{{propertyAccess}}",
2799
+ "match": "(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
2800
2800
  "captures": {
2801
2801
  "1": {
2802
2802
  "name": "punctuation.accessor.ts"
@@ -2864,7 +2864,7 @@
2864
2864
  "patterns": [
2865
2865
  {
2866
2866
  "name": "string.regexp.ts",
2867
- "begin": "(?\u003c=[=(:,\\[?+!]|{{lookBehindReturn}}|{{lookBehindCase}}|=\u003e|\u0026\u0026|\\|\\||\\*\\/)\\s*(\\/)(?![\\/*])(?=(?:[^\\/\\\\\\[]|\\\\.|\\[([^\\]\\\\]|\\\\.)+\\])+\\/(?![\\/*])[gimuy]*(?!\\s*[a-zA-Z0-9_$]))",
2867
+ "begin": "(?\u003c=[=(:,\\[?+!]|^return|[^\\._$[:alnum:]]return|^case|[^\\._$[:alnum:]]case|=\u003e|\u0026\u0026|\\|\\||\\*\\/)\\s*(\\/)(?![\\/*])(?=(?:[^\\/\\\\\\[]|\\\\.|\\[([^\\]\\\\]|\\\\.)+\\])+\\/(?![\\/*])[gimuy]*(?!\\s*[a-zA-Z0-9_$]))",
2868
2868
  "end": "(/)([gimuy]*)",
2869
2869
  "patterns": [
2870
2870
  {
@@ -3155,28 +3155,28 @@
3155
3155
  },
3156
3156
  "super-literal": {
3157
3157
  "name": "variable.language.super.ts",
3158
- "match": "{{startOfIdentifier}}super\\b(?!\\$)"
3158
+ "match": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))super\\b(?!\\$)"
3159
3159
  },
3160
3160
  "support-objects": {
3161
3161
  "patterns": [
3162
3162
  {
3163
3163
  "name": "variable.language.arguments.ts",
3164
- "match": "{{startOfIdentifier}}(arguments)\\b(?!\\$)"
3164
+ "match": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(arguments)\\b(?!\\$)"
3165
3165
  },
3166
3166
  {
3167
3167
  "name": "support.class.builtin.ts",
3168
- "match": "(?x){{startOfIdentifier}}(Array|ArrayBuffer|Atomics|Boolean|DataView|Date|Float32Array|Float64Array|Function|Generator\n |GeneratorFunction|Int8Array|Int16Array|Int32Array|Intl|Map|Number|Object|Promise|Proxy\n |Reflect|RegExp|Set|SharedArrayBuffer|SIMD|String|Symbol|TypedArray\n |Uint8Array|Uint16Array|Uint32Array|Uint8ClampedArray|WeakMap|WeakSet)\\b(?!\\$)"
3168
+ "match": "(?x)(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(Array|ArrayBuffer|Atomics|Boolean|DataView|Date|Float32Array|Float64Array|Function|Generator\n |GeneratorFunction|Int8Array|Int16Array|Int32Array|Intl|Map|Number|Object|Promise|Proxy\n |Reflect|RegExp|Set|SharedArrayBuffer|SIMD|String|Symbol|TypedArray\n |Uint8Array|Uint16Array|Uint32Array|Uint8ClampedArray|WeakMap|WeakSet)\\b(?!\\$)"
3169
3169
  },
3170
3170
  {
3171
3171
  "name": "support.class.error.ts",
3172
- "match": "{{startOfIdentifier}}((Eval|Internal|Range|Reference|Syntax|Type|URI)?Error)\\b(?!\\$)"
3172
+ "match": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))((Eval|Internal|Range|Reference|Syntax|Type|URI)?Error)\\b(?!\\$)"
3173
3173
  },
3174
3174
  {
3175
3175
  "name": "support.function.ts",
3176
- "match": "(?x){{startOfIdentifier}}(clear(Interval|Timeout)|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|escape|eval|\n isFinite|isNaN|parseFloat|parseInt|require|set(Interval|Timeout)|super|unescape|uneval)(?=\\s*\\()"
3176
+ "match": "(?x)(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(clear(Interval|Timeout)|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|escape|eval|\n isFinite|isNaN|parseFloat|parseInt|require|set(Interval|Timeout)|super|unescape|uneval)(?=\\s*\\()"
3177
3177
  },
3178
3178
  {
3179
- "match": "(?x){{startOfIdentifier}}(Math)(?:\\s*{{propertyAccess}}\\s*(?:\n (abs|acos|acosh|asin|asinh|atan|atan2|atanh|cbrt|ceil|clz32|cos|cosh|exp|\n expm1|floor|fround|hypot|imul|log|log10|log1p|log2|max|min|pow|random|\n round|sign|sin|sinh|sqrt|tan|tanh|trunc)\n |\n (E|LN10|LN2|LOG10E|LOG2E|PI|SQRT1_2|SQRT2)))?\\b(?!\\$)",
3179
+ "match": "(?x)(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(Math)(?:\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(?:\n (abs|acos|acosh|asin|asinh|atan|atan2|atanh|cbrt|ceil|clz32|cos|cosh|exp|\n expm1|floor|fround|hypot|imul|log|log10|log1p|log2|max|min|pow|random|\n round|sign|sin|sinh|sqrt|tan|tanh|trunc)\n |\n (E|LN10|LN2|LOG10E|LOG2E|PI|SQRT1_2|SQRT2)))?\\b(?!\\$)",
3180
3180
  "captures": {
3181
3181
  "1": {
3182
3182
  "name": "support.constant.math.ts"
@@ -3196,7 +3196,7 @@
3196
3196
  }
3197
3197
  },
3198
3198
  {
3199
- "match": "(?x){{startOfIdentifier}}(console)(?:\\s*{{propertyAccess}}\\s*(\n assert|clear|count|debug|dir|error|group|groupCollapsed|groupEnd|info|log\n |profile|profileEnd|table|time|timeEnd|timeStamp|trace|warn))?\\b(?!\\$)",
3199
+ "match": "(?x)(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(console)(?:\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(\n assert|clear|count|debug|dir|error|group|groupCollapsed|groupEnd|info|log\n |profile|profileEnd|table|time|timeEnd|timeStamp|trace|warn))?\\b(?!\\$)",
3200
3200
  "captures": {
3201
3201
  "1": {
3202
3202
  "name": "support.class.console.ts"
@@ -3213,7 +3213,7 @@
3213
3213
  }
3214
3214
  },
3215
3215
  {
3216
- "match": "{{startOfIdentifier}}(JSON)(?:\\s*{{propertyAccess}}\\s*(parse|stringify))?\\b(?!\\$)",
3216
+ "match": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(JSON)(?:\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(parse|stringify))?\\b(?!\\$)",
3217
3217
  "captures": {
3218
3218
  "1": {
3219
3219
  "name": "support.constant.json.ts"
@@ -3230,7 +3230,7 @@
3230
3230
  }
3231
3231
  },
3232
3232
  {
3233
- "match": "(?x) {{propertyAccess}} \\s* (?:\n (constructor|length|prototype|__proto__)\n |\n (EPSILON|MAX_SAFE_INTEGER|MAX_VALUE|MIN_SAFE_INTEGER|MIN_VALUE|NEGATIVE_INFINITY|POSITIVE_INFINITY))\\b(?!\\$)",
3233
+ "match": "(?x) (?:(\\.)|(\\?\\.(?!\\s*[[:digit:]]))) \\s* (?:\n (constructor|length|prototype|__proto__)\n |\n (EPSILON|MAX_SAFE_INTEGER|MAX_VALUE|MIN_SAFE_INTEGER|MIN_VALUE|NEGATIVE_INFINITY|POSITIVE_INFINITY))\\b(?!\\$)",
3234
3234
  "captures": {
3235
3235
  "1": {
3236
3236
  "name": "punctuation.accessor.ts"
@@ -3247,7 +3247,7 @@
3247
3247
  }
3248
3248
  },
3249
3249
  {
3250
- "match": "(?x) {{startOfIdentifier}} \\b (?:\n (document|event|navigator|performance|screen|window)\n |\n (AnalyserNode|ArrayBufferView|Attr|AudioBuffer|AudioBufferSourceNode|AudioContext|AudioDestinationNode|AudioListener\n |AudioNode|AudioParam|BatteryManager|BeforeUnloadEvent|BiquadFilterNode|Blob|BufferSource|ByteString|CSS|CSSConditionRule\n |CSSCounterStyleRule|CSSGroupingRule|CSSMatrix|CSSMediaRule|CSSPageRule|CSSPrimitiveValue|CSSRule|CSSRuleList|CSSStyleDeclaration\n |CSSStyleRule|CSSStyleSheet|CSSSupportsRule|CSSValue|CSSValueList|CanvasGradient|CanvasImageSource|CanvasPattern\n |CanvasRenderingContext2D|ChannelMergerNode|ChannelSplitterNode|CharacterData|ChromeWorker|CloseEvent|Comment|CompositionEvent\n |Console|ConvolverNode|Coordinates|Credential|CredentialsContainer|Crypto|CryptoKey|CustomEvent|DOMError|DOMException\n |DOMHighResTimeStamp|DOMImplementation|DOMString|DOMStringList|DOMStringMap|DOMTimeStamp|DOMTokenList|DataTransfer\n |DataTransferItem|DataTransferItemList|DedicatedWorkerGlobalScope|DelayNode|DeviceProximityEvent|DirectoryEntry\n |DirectoryEntrySync|DirectoryReader|DirectoryReaderSync|Document|DocumentFragment|DocumentTouch|DocumentType|DragEvent\n |DynamicsCompressorNode|Element|Entry|EntrySync|ErrorEvent|Event|EventListener|EventSource|EventTarget|FederatedCredential\n |FetchEvent|File|FileEntry|FileEntrySync|FileException|FileList|FileReader|FileReaderSync|FileSystem|FileSystemSync\n |FontFace|FormData|GainNode|Gamepad|GamepadButton|GamepadEvent|Geolocation|GlobalEventHandlers|HTMLAnchorElement\n |HTMLAreaElement|HTMLAudioElement|HTMLBRElement|HTMLBaseElement|HTMLBodyElement|HTMLButtonElement|HTMLCanvasElement\n |HTMLCollection|HTMLContentElement|HTMLDListElement|HTMLDataElement|HTMLDataListElement|HTMLDialogElement|HTMLDivElement\n |HTMLDocument|HTMLElement|HTMLEmbedElement|HTMLFieldSetElement|HTMLFontElement|HTMLFormControlsCollection|HTMLFormElement\n |HTMLHRElement|HTMLHeadElement|HTMLHeadingElement|HTMLHtmlElement|HTMLIFrameElement|HTMLImageElement|HTMLInputElement\n |HTMLKeygenElement|HTMLLIElement|HTMLLabelElement|HTMLLegendElement|HTMLLinkElement|HTMLMapElement|HTMLMediaElement\n |HTMLMetaElement|HTMLMeterElement|HTMLModElement|HTMLOListElement|HTMLObjectElement|HTMLOptGroupElement|HTMLOptionElement\n |HTMLOptionsCollection|HTMLOutputElement|HTMLParagraphElement|HTMLParamElement|HTMLPreElement|HTMLProgressElement\n |HTMLQuoteElement|HTMLScriptElement|HTMLSelectElement|HTMLShadowElement|HTMLSourceElement|HTMLSpanElement|HTMLStyleElement\n |HTMLTableCaptionElement|HTMLTableCellElement|HTMLTableColElement|HTMLTableDataCellElement|HTMLTableElement|HTMLTableHeaderCellElement\n |HTMLTableRowElement|HTMLTableSectionElement|HTMLTextAreaElement|HTMLTimeElement|HTMLTitleElement|HTMLTrackElement\n |HTMLUListElement|HTMLUnknownElement|HTMLVideoElement|HashChangeEvent|History|IDBCursor|IDBCursorWithValue|IDBDatabase\n |IDBEnvironment|IDBFactory|IDBIndex|IDBKeyRange|IDBMutableFile|IDBObjectStore|IDBOpenDBRequest|IDBRequest|IDBTransaction\n |IDBVersionChangeEvent|IIRFilterNode|IdentityManager|ImageBitmap|ImageBitmapFactories|ImageData|Index|InputDeviceCapabilities\n |InputEvent|InstallEvent|InstallTrigger|KeyboardEvent|LinkStyle|LocalFileSystem|LocalFileSystemSync|Location|MIDIAccess\n |MIDIConnectionEvent|MIDIInput|MIDIInputMap|MIDIOutputMap|MediaElementAudioSourceNode|MediaError|MediaKeyMessageEvent\n |MediaKeySession|MediaKeyStatusMap|MediaKeySystemAccess|MediaKeySystemConfiguration|MediaKeys|MediaRecorder|MediaStream\n |MediaStreamAudioDestinationNode|MediaStreamAudioSourceNode|MessageChannel|MessageEvent|MessagePort|MouseEvent\n |MutationObserver|MutationRecord|NamedNodeMap|Navigator|NavigatorConcurrentHardware|NavigatorGeolocation|NavigatorID\n |NavigatorLanguage|NavigatorOnLine|Node|NodeFilter|NodeIterator|NodeList|NonDocumentTypeChildNode|Notification\n |OfflineAudioCompletionEvent|OfflineAudioContext|OscillatorNode|PageTransitionEvent|PannerNode|ParentNode|PasswordCredential\n |Path2D|PaymentAddress|PaymentRequest|PaymentResponse|Performance|PerformanceEntry|PerformanceFrameTiming|PerformanceMark\n |PerformanceMeasure|PerformanceNavigation|PerformanceNavigationTiming|PerformanceObserver|PerformanceObserverEntryList\n |PerformanceResourceTiming|PerformanceTiming|PeriodicSyncEvent|PeriodicWave|Plugin|Point|PointerEvent|PopStateEvent\n |PortCollection|Position|PositionError|PositionOptions|PresentationConnectionClosedEvent|PresentationConnectionList\n |PresentationReceiver|ProcessingInstruction|ProgressEvent|PromiseRejectionEvent|PushEvent|PushRegistrationManager\n |RTCCertificate|RTCConfiguration|RTCPeerConnection|RTCSessionDescriptionCallback|RTCStatsReport|RadioNodeList|RandomSource\n |Range|ReadableByteStream|RenderingContext|SVGAElement|SVGAngle|SVGAnimateColorElement|SVGAnimateElement|SVGAnimateMotionElement\n |SVGAnimateTransformElement|SVGAnimatedAngle|SVGAnimatedBoolean|SVGAnimatedEnumeration|SVGAnimatedInteger|SVGAnimatedLength\n |SVGAnimatedLengthList|SVGAnimatedNumber|SVGAnimatedNumberList|SVGAnimatedPoints|SVGAnimatedPreserveAspectRatio\n |SVGAnimatedRect|SVGAnimatedString|SVGAnimatedTransformList|SVGAnimationElement|SVGCircleElement|SVGClipPathElement\n |SVGCursorElement|SVGDefsElement|SVGDescElement|SVGElement|SVGEllipseElement|SVGEvent|SVGFilterElement|SVGFontElement\n |SVGFontFaceElement|SVGFontFaceFormatElement|SVGFontFaceNameElement|SVGFontFaceSrcElement|SVGFontFaceUriElement\n |SVGForeignObjectElement|SVGGElement|SVGGlyphElement|SVGGradientElement|SVGHKernElement|SVGImageElement|SVGLength\n |SVGLengthList|SVGLineElement|SVGLinearGradientElement|SVGMPathElement|SVGMaskElement|SVGMatrix|SVGMissingGlyphElement\n |SVGNumber|SVGNumberList|SVGPathElement|SVGPatternElement|SVGPoint|SVGPolygonElement|SVGPolylineElement|SVGPreserveAspectRatio\n |SVGRadialGradientElement|SVGRect|SVGRectElement|SVGSVGElement|SVGScriptElement|SVGSetElement|SVGStopElement|SVGStringList\n |SVGStylable|SVGStyleElement|SVGSwitchElement|SVGSymbolElement|SVGTRefElement|SVGTSpanElement|SVGTests|SVGTextElement\n |SVGTextPositioningElement|SVGTitleElement|SVGTransform|SVGTransformList|SVGTransformable|SVGUseElement|SVGVKernElement\n |SVGViewElement|ServiceWorker|ServiceWorkerContainer|ServiceWorkerGlobalScope|ServiceWorkerRegistration|ServiceWorkerState\n |ShadowRoot|SharedWorker|SharedWorkerGlobalScope|SourceBufferList|StereoPannerNode|Storage|StorageEvent|StyleSheet\n |StyleSheetList|SubtleCrypto|SyncEvent|Text|TextMetrics|TimeEvent|TimeRanges|Touch|TouchEvent|TouchList|Transferable\n |TreeWalker|UIEvent|USVString|VRDisplayCapabilities|ValidityState|WaveShaperNode|WebGL|WebGLActiveInfo|WebGLBuffer\n |WebGLContextEvent|WebGLFramebuffer|WebGLProgram|WebGLRenderbuffer|WebGLRenderingContext|WebGLShader|WebGLShaderPrecisionFormat\n |WebGLTexture|WebGLTimerQueryEXT|WebGLTransformFeedback|WebGLUniformLocation|WebGLVertexArrayObject|WebGLVertexArrayObjectOES\n |WebSocket|WebSockets|WebVTT|WheelEvent|Window|WindowBase64|WindowEventHandlers|WindowTimers|Worker|WorkerGlobalScope\n |WorkerLocation|WorkerNavigator|XMLHttpRequest|XMLHttpRequestEventTarget|XMLSerializer|XPathExpression|XPathResult\n |XSLTProcessor))\\b(?!\\$)",
3250
+ "match": "(?x) (?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.)) \\b (?:\n (document|event|navigator|performance|screen|window)\n |\n (AnalyserNode|ArrayBufferView|Attr|AudioBuffer|AudioBufferSourceNode|AudioContext|AudioDestinationNode|AudioListener\n |AudioNode|AudioParam|BatteryManager|BeforeUnloadEvent|BiquadFilterNode|Blob|BufferSource|ByteString|CSS|CSSConditionRule\n |CSSCounterStyleRule|CSSGroupingRule|CSSMatrix|CSSMediaRule|CSSPageRule|CSSPrimitiveValue|CSSRule|CSSRuleList|CSSStyleDeclaration\n |CSSStyleRule|CSSStyleSheet|CSSSupportsRule|CSSValue|CSSValueList|CanvasGradient|CanvasImageSource|CanvasPattern\n |CanvasRenderingContext2D|ChannelMergerNode|ChannelSplitterNode|CharacterData|ChromeWorker|CloseEvent|Comment|CompositionEvent\n |Console|ConvolverNode|Coordinates|Credential|CredentialsContainer|Crypto|CryptoKey|CustomEvent|DOMError|DOMException\n |DOMHighResTimeStamp|DOMImplementation|DOMString|DOMStringList|DOMStringMap|DOMTimeStamp|DOMTokenList|DataTransfer\n |DataTransferItem|DataTransferItemList|DedicatedWorkerGlobalScope|DelayNode|DeviceProximityEvent|DirectoryEntry\n |DirectoryEntrySync|DirectoryReader|DirectoryReaderSync|Document|DocumentFragment|DocumentTouch|DocumentType|DragEvent\n |DynamicsCompressorNode|Element|Entry|EntrySync|ErrorEvent|Event|EventListener|EventSource|EventTarget|FederatedCredential\n |FetchEvent|File|FileEntry|FileEntrySync|FileException|FileList|FileReader|FileReaderSync|FileSystem|FileSystemSync\n |FontFace|FormData|GainNode|Gamepad|GamepadButton|GamepadEvent|Geolocation|GlobalEventHandlers|HTMLAnchorElement\n |HTMLAreaElement|HTMLAudioElement|HTMLBRElement|HTMLBaseElement|HTMLBodyElement|HTMLButtonElement|HTMLCanvasElement\n |HTMLCollection|HTMLContentElement|HTMLDListElement|HTMLDataElement|HTMLDataListElement|HTMLDialogElement|HTMLDivElement\n |HTMLDocument|HTMLElement|HTMLEmbedElement|HTMLFieldSetElement|HTMLFontElement|HTMLFormControlsCollection|HTMLFormElement\n |HTMLHRElement|HTMLHeadElement|HTMLHeadingElement|HTMLHtmlElement|HTMLIFrameElement|HTMLImageElement|HTMLInputElement\n |HTMLKeygenElement|HTMLLIElement|HTMLLabelElement|HTMLLegendElement|HTMLLinkElement|HTMLMapElement|HTMLMediaElement\n |HTMLMetaElement|HTMLMeterElement|HTMLModElement|HTMLOListElement|HTMLObjectElement|HTMLOptGroupElement|HTMLOptionElement\n |HTMLOptionsCollection|HTMLOutputElement|HTMLParagraphElement|HTMLParamElement|HTMLPreElement|HTMLProgressElement\n |HTMLQuoteElement|HTMLScriptElement|HTMLSelectElement|HTMLShadowElement|HTMLSourceElement|HTMLSpanElement|HTMLStyleElement\n |HTMLTableCaptionElement|HTMLTableCellElement|HTMLTableColElement|HTMLTableDataCellElement|HTMLTableElement|HTMLTableHeaderCellElement\n |HTMLTableRowElement|HTMLTableSectionElement|HTMLTextAreaElement|HTMLTimeElement|HTMLTitleElement|HTMLTrackElement\n |HTMLUListElement|HTMLUnknownElement|HTMLVideoElement|HashChangeEvent|History|IDBCursor|IDBCursorWithValue|IDBDatabase\n |IDBEnvironment|IDBFactory|IDBIndex|IDBKeyRange|IDBMutableFile|IDBObjectStore|IDBOpenDBRequest|IDBRequest|IDBTransaction\n |IDBVersionChangeEvent|IIRFilterNode|IdentityManager|ImageBitmap|ImageBitmapFactories|ImageData|Index|InputDeviceCapabilities\n |InputEvent|InstallEvent|InstallTrigger|KeyboardEvent|LinkStyle|LocalFileSystem|LocalFileSystemSync|Location|MIDIAccess\n |MIDIConnectionEvent|MIDIInput|MIDIInputMap|MIDIOutputMap|MediaElementAudioSourceNode|MediaError|MediaKeyMessageEvent\n |MediaKeySession|MediaKeyStatusMap|MediaKeySystemAccess|MediaKeySystemConfiguration|MediaKeys|MediaRecorder|MediaStream\n |MediaStreamAudioDestinationNode|MediaStreamAudioSourceNode|MessageChannel|MessageEvent|MessagePort|MouseEvent\n |MutationObserver|MutationRecord|NamedNodeMap|Navigator|NavigatorConcurrentHardware|NavigatorGeolocation|NavigatorID\n |NavigatorLanguage|NavigatorOnLine|Node|NodeFilter|NodeIterator|NodeList|NonDocumentTypeChildNode|Notification\n |OfflineAudioCompletionEvent|OfflineAudioContext|OscillatorNode|PageTransitionEvent|PannerNode|ParentNode|PasswordCredential\n |Path2D|PaymentAddress|PaymentRequest|PaymentResponse|Performance|PerformanceEntry|PerformanceFrameTiming|PerformanceMark\n |PerformanceMeasure|PerformanceNavigation|PerformanceNavigationTiming|PerformanceObserver|PerformanceObserverEntryList\n |PerformanceResourceTiming|PerformanceTiming|PeriodicSyncEvent|PeriodicWave|Plugin|Point|PointerEvent|PopStateEvent\n |PortCollection|Position|PositionError|PositionOptions|PresentationConnectionClosedEvent|PresentationConnectionList\n |PresentationReceiver|ProcessingInstruction|ProgressEvent|PromiseRejectionEvent|PushEvent|PushRegistrationManager\n |RTCCertificate|RTCConfiguration|RTCPeerConnection|RTCSessionDescriptionCallback|RTCStatsReport|RadioNodeList|RandomSource\n |Range|ReadableByteStream|RenderingContext|SVGAElement|SVGAngle|SVGAnimateColorElement|SVGAnimateElement|SVGAnimateMotionElement\n |SVGAnimateTransformElement|SVGAnimatedAngle|SVGAnimatedBoolean|SVGAnimatedEnumeration|SVGAnimatedInteger|SVGAnimatedLength\n |SVGAnimatedLengthList|SVGAnimatedNumber|SVGAnimatedNumberList|SVGAnimatedPoints|SVGAnimatedPreserveAspectRatio\n |SVGAnimatedRect|SVGAnimatedString|SVGAnimatedTransformList|SVGAnimationElement|SVGCircleElement|SVGClipPathElement\n |SVGCursorElement|SVGDefsElement|SVGDescElement|SVGElement|SVGEllipseElement|SVGEvent|SVGFilterElement|SVGFontElement\n |SVGFontFaceElement|SVGFontFaceFormatElement|SVGFontFaceNameElement|SVGFontFaceSrcElement|SVGFontFaceUriElement\n |SVGForeignObjectElement|SVGGElement|SVGGlyphElement|SVGGradientElement|SVGHKernElement|SVGImageElement|SVGLength\n |SVGLengthList|SVGLineElement|SVGLinearGradientElement|SVGMPathElement|SVGMaskElement|SVGMatrix|SVGMissingGlyphElement\n |SVGNumber|SVGNumberList|SVGPathElement|SVGPatternElement|SVGPoint|SVGPolygonElement|SVGPolylineElement|SVGPreserveAspectRatio\n |SVGRadialGradientElement|SVGRect|SVGRectElement|SVGSVGElement|SVGScriptElement|SVGSetElement|SVGStopElement|SVGStringList\n |SVGStylable|SVGStyleElement|SVGSwitchElement|SVGSymbolElement|SVGTRefElement|SVGTSpanElement|SVGTests|SVGTextElement\n |SVGTextPositioningElement|SVGTitleElement|SVGTransform|SVGTransformList|SVGTransformable|SVGUseElement|SVGVKernElement\n |SVGViewElement|ServiceWorker|ServiceWorkerContainer|ServiceWorkerGlobalScope|ServiceWorkerRegistration|ServiceWorkerState\n |ShadowRoot|SharedWorker|SharedWorkerGlobalScope|SourceBufferList|StereoPannerNode|Storage|StorageEvent|StyleSheet\n |StyleSheetList|SubtleCrypto|SyncEvent|Text|TextMetrics|TimeEvent|TimeRanges|Touch|TouchEvent|TouchList|Transferable\n |TreeWalker|UIEvent|USVString|VRDisplayCapabilities|ValidityState|WaveShaperNode|WebGL|WebGLActiveInfo|WebGLBuffer\n |WebGLContextEvent|WebGLFramebuffer|WebGLProgram|WebGLRenderbuffer|WebGLRenderingContext|WebGLShader|WebGLShaderPrecisionFormat\n |WebGLTexture|WebGLTimerQueryEXT|WebGLTransformFeedback|WebGLUniformLocation|WebGLVertexArrayObject|WebGLVertexArrayObjectOES\n |WebSocket|WebSockets|WebVTT|WheelEvent|Window|WindowBase64|WindowEventHandlers|WindowTimers|Worker|WorkerGlobalScope\n |WorkerLocation|WorkerNavigator|XMLHttpRequest|XMLHttpRequestEventTarget|XMLSerializer|XPathExpression|XPathResult\n |XSLTProcessor))\\b(?!\\$)",
3251
3251
  "captures": {
3252
3252
  "1": {
3253
3253
  "name": "support.variable.dom.ts"
@@ -3258,7 +3258,7 @@
3258
3258
  }
3259
3259
  },
3260
3260
  {
3261
- "match": "(?x) {{propertyAccess}} \\s* (?:\n (ATTRIBUTE_NODE|CDATA_SECTION_NODE|COMMENT_NODE|DOCUMENT_FRAGMENT_NODE|DOCUMENT_NODE|DOCUMENT_TYPE_NODE\n |DOMSTRING_SIZE_ERR|ELEMENT_NODE|ENTITY_NODE|ENTITY_REFERENCE_NODE|HIERARCHY_REQUEST_ERR|INDEX_SIZE_ERR\n |INUSE_ATTRIBUTE_ERR|INVALID_CHARACTER_ERR|NO_DATA_ALLOWED_ERR|NO_MODIFICATION_ALLOWED_ERR|NOT_FOUND_ERR\n |NOT_SUPPORTED_ERR|NOTATION_NODE|PROCESSING_INSTRUCTION_NODE|TEXT_NODE|WRONG_DOCUMENT_ERR)\n |\n (_content|[xyz]|abbr|above|accept|acceptCharset|accessKey|action|align|[av]Link(?:color)?|all|alt|anchors|appCodeName\n |appCore|applets|appMinorVersion|appName|appVersion|archive|areas|arguments|attributes|availHeight|availLeft|availTop\n |availWidth|axis|background|backgroundColor|backgroundImage|below|bgColor|body|border|borderBottomWidth|borderColor\n |borderLeftWidth|borderRightWidth|borderStyle|borderTopWidth|borderWidth|bottom|bufferDepth|callee|caller|caption\n |cellPadding|cells|cellSpacing|ch|characterSet|charset|checked|childNodes|chOff|cite|classes|className|clear\n |clientInformation|clip|clipBoardData|closed|code|codeBase|codeType|color|colorDepth|cols|colSpan|compact|complete\n |components|content|controllers|cookie|cookieEnabled|cords|cpuClass|crypto|current|data|dateTime|declare|defaultCharset\n |defaultChecked|defaultSelected|defaultStatus|defaultValue|defaultView|defer|description|dialogArguments|dialogHeight\n |dialogLeft|dialogTop|dialogWidth|dir|directories|disabled|display|docmain|doctype|documentElement|elements|embeds\n |enabledPlugin|encoding|enctype|entities|event|expando|external|face|fgColor|filename|firstChild|fontFamily|fontSize\n |fontWeight|form|formName|forms|frame|frameBorder|frameElement|frames|hasFocus|hash|headers|height|history|host\n |hostname|href|hreflang|hspace|htmlFor|httpEquiv|id|ids|ignoreCase|images|implementation|index|innerHeight|innerWidth\n |input|isMap|label|lang|language|lastChild|lastIndex|lastMatch|lastModified|lastParen|layer[sXY]|left|leftContext\n |lineHeight|link|linkColor|links|listStyleType|localName|location|locationbar|longDesc|lowsrc|lowSrc|marginBottom\n |marginHeight|marginLeft|marginRight|marginTop|marginWidth|maxLength|media|menubar|method|mimeTypes|multiline|multiple\n |name|nameProp|namespaces|namespaceURI|next|nextSibling|nodeName|nodeType|nodeValue|noHref|noResize|noShade|notationName\n |notations|noWrap|object|offscreenBuffering|onLine|onreadystatechange|opener|opsProfile|options|oscpu|outerHeight\n |outerWidth|ownerDocument|paddingBottom|paddingLeft|paddingRight|paddingTop|page[XY]|page[XY]Offset|parent|parentLayer\n |parentNode|parentWindow|pathname|personalbar|pixelDepth|pkcs11|platform|plugins|port|prefix|previous|previousDibling\n |product|productSub|profile|profileend|prompt|prompter|protocol|publicId|readOnly|readyState|referrer|rel|responseText\n |responseXML|rev|right|rightContext|rowIndex|rows|rowSpan|rules|scheme|scope|screen[XY]|screenLeft|screenTop|scripts\n |scrollbars|scrolling|sectionRowIndex|security|securityPolicy|selected|selectedIndex|selection|self|shape|siblingAbove\n |siblingBelow|size|source|specified|standby|start|status|statusbar|statusText|style|styleSheets|suffixes|summary\n |systemId|systemLanguage|tagName|tags|target|tBodies|text|textAlign|textDecoration|textIndent|textTransform|tFoot|tHead\n |title|toolbar|top|type|undefined|uniqueID|updateInterval|URL|URLUnencoded|useMap|userAgent|userLanguage|userProfile\n |vAlign|value|valueType|vendor|vendorSub|version|visibility|vspace|whiteSpace|width|X[MS]LDocument|zIndex))\\b(?!\\$|\\s*{{typeParameters}}?\\()",
3261
+ "match": "(?x) (?:(\\.)|(\\?\\.(?!\\s*[[:digit:]]))) \\s* (?:\n (ATTRIBUTE_NODE|CDATA_SECTION_NODE|COMMENT_NODE|DOCUMENT_FRAGMENT_NODE|DOCUMENT_NODE|DOCUMENT_TYPE_NODE\n |DOMSTRING_SIZE_ERR|ELEMENT_NODE|ENTITY_NODE|ENTITY_REFERENCE_NODE|HIERARCHY_REQUEST_ERR|INDEX_SIZE_ERR\n |INUSE_ATTRIBUTE_ERR|INVALID_CHARACTER_ERR|NO_DATA_ALLOWED_ERR|NO_MODIFICATION_ALLOWED_ERR|NOT_FOUND_ERR\n |NOT_SUPPORTED_ERR|NOTATION_NODE|PROCESSING_INSTRUCTION_NODE|TEXT_NODE|WRONG_DOCUMENT_ERR)\n |\n (_content|[xyz]|abbr|above|accept|acceptCharset|accessKey|action|align|[av]Link(?:color)?|all|alt|anchors|appCodeName\n |appCore|applets|appMinorVersion|appName|appVersion|archive|areas|arguments|attributes|availHeight|availLeft|availTop\n |availWidth|axis|background|backgroundColor|backgroundImage|below|bgColor|body|border|borderBottomWidth|borderColor\n |borderLeftWidth|borderRightWidth|borderStyle|borderTopWidth|borderWidth|bottom|bufferDepth|callee|caller|caption\n |cellPadding|cells|cellSpacing|ch|characterSet|charset|checked|childNodes|chOff|cite|classes|className|clear\n |clientInformation|clip|clipBoardData|closed|code|codeBase|codeType|color|colorDepth|cols|colSpan|compact|complete\n |components|content|controllers|cookie|cookieEnabled|cords|cpuClass|crypto|current|data|dateTime|declare|defaultCharset\n |defaultChecked|defaultSelected|defaultStatus|defaultValue|defaultView|defer|description|dialogArguments|dialogHeight\n |dialogLeft|dialogTop|dialogWidth|dir|directories|disabled|display|docmain|doctype|documentElement|elements|embeds\n |enabledPlugin|encoding|enctype|entities|event|expando|external|face|fgColor|filename|firstChild|fontFamily|fontSize\n |fontWeight|form|formName|forms|frame|frameBorder|frameElement|frames|hasFocus|hash|headers|height|history|host\n |hostname|href|hreflang|hspace|htmlFor|httpEquiv|id|ids|ignoreCase|images|implementation|index|innerHeight|innerWidth\n |input|isMap|label|lang|language|lastChild|lastIndex|lastMatch|lastModified|lastParen|layer[sXY]|left|leftContext\n |lineHeight|link|linkColor|links|listStyleType|localName|location|locationbar|longDesc|lowsrc|lowSrc|marginBottom\n |marginHeight|marginLeft|marginRight|marginTop|marginWidth|maxLength|media|menubar|method|mimeTypes|multiline|multiple\n |name|nameProp|namespaces|namespaceURI|next|nextSibling|nodeName|nodeType|nodeValue|noHref|noResize|noShade|notationName\n |notations|noWrap|object|offscreenBuffering|onLine|onreadystatechange|opener|opsProfile|options|oscpu|outerHeight\n |outerWidth|ownerDocument|paddingBottom|paddingLeft|paddingRight|paddingTop|page[XY]|page[XY]Offset|parent|parentLayer\n |parentNode|parentWindow|pathname|personalbar|pixelDepth|pkcs11|platform|plugins|port|prefix|previous|previousDibling\n |product|productSub|profile|profileend|prompt|prompter|protocol|publicId|readOnly|readyState|referrer|rel|responseText\n |responseXML|rev|right|rightContext|rowIndex|rows|rowSpan|rules|scheme|scope|screen[XY]|screenLeft|screenTop|scripts\n |scrollbars|scrolling|sectionRowIndex|security|securityPolicy|selected|selectedIndex|selection|self|shape|siblingAbove\n |siblingBelow|size|source|specified|standby|start|status|statusbar|statusText|style|styleSheets|suffixes|summary\n |systemId|systemLanguage|tagName|tags|target|tBodies|text|textAlign|textDecoration|textIndent|textTransform|tFoot|tHead\n |title|toolbar|top|type|undefined|uniqueID|updateInterval|URL|URLUnencoded|useMap|userAgent|userLanguage|userProfile\n |vAlign|value|valueType|vendor|vendorSub|version|visibility|vspace|whiteSpace|width|X[MS]LDocument|zIndex))\\b(?!\\$|\\s*(\u003c\\s*([_$[:alpha:]]|(\\{[^\\{\\}]*\\})|(\\([^\\(\\)]*\\))|(\\[[^\\[\\]]*\\]))([^=\u003c\u003e]|=[^\u003c]|\\\u003c\\s*([_$[:alpha:]]|(\\{[^\\{\\}]*\\})|(\\([^\\(\\)]*\\))|(\\[[^\\[\\]]*\\]))([^=\u003c\u003e]|=[^\u003c])*\\\u003e)*\u003e\\s*)?\\()",
3262
3262
  "captures": {
3263
3263
  "1": {
3264
3264
  "name": "punctuation.accessor.ts"
@@ -3276,10 +3276,10 @@
3276
3276
  },
3277
3277
  {
3278
3278
  "name": "support.class.node.ts",
3279
- "match": "(?x){{startOfIdentifier}}(Buffer|EventEmitter|Server|Pipe|Socket|REPLServer|ReadStream|WriteStream|Stream\n |Inflate|Deflate|InflateRaw|DeflateRaw|GZip|GUnzip|Unzip|Zip)\\b(?!\\$)"
3279
+ "match": "(?x)(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(Buffer|EventEmitter|Server|Pipe|Socket|REPLServer|ReadStream|WriteStream|Stream\n |Inflate|Deflate|InflateRaw|DeflateRaw|GZip|GUnzip|Unzip|Zip)\\b(?!\\$)"
3280
3280
  },
3281
3281
  {
3282
- "match": "(?x){{startOfIdentifier}}(process)(?:{{propertyAccess}}(?:\n (arch|argv|config|connected|env|execArgv|execPath|exitCode|mainModule|pid|platform|release|stderr|stdin|stdout|title|version|versions)\n |\n (abort|chdir|cwd|disconnect|exit|[sg]ete?[gu]id|send|[sg]etgroups|initgroups|kill|memoryUsage|nextTick|umask|uptime|hrtime)\n))?\\b(?!\\$)",
3282
+ "match": "(?x)(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(process)(?:(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))(?:\n (arch|argv|config|connected|env|execArgv|execPath|exitCode|mainModule|pid|platform|release|stderr|stdin|stdout|title|version|versions)\n |\n (abort|chdir|cwd|disconnect|exit|[sg]ete?[gu]id|send|[sg]etgroups|initgroups|kill|memoryUsage|nextTick|umask|uptime|hrtime)\n))?\\b(?!\\$)",
3283
3283
  "captures": {
3284
3284
  "1": {
3285
3285
  "name": "support.variable.object.process.ts"
@@ -3299,7 +3299,7 @@
3299
3299
  }
3300
3300
  },
3301
3301
  {
3302
- "match": "{{startOfIdentifier}}(?:(exports)|(module)(?:{{propertyAccess}}(exports|id|filename|loaded|parent|children))?)\\b(?!\\$)",
3302
+ "match": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(?:(exports)|(module)(?:(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))(exports|id|filename|loaded|parent|children))?)\\b(?!\\$)",
3303
3303
  "captures": {
3304
3304
  "1": {
3305
3305
  "name": "support.type.object.module.ts"
@@ -3320,10 +3320,10 @@
3320
3320
  },
3321
3321
  {
3322
3322
  "name": "support.variable.object.node.ts",
3323
- "match": "{{startOfIdentifier}}(global|GLOBAL|root|__dirname|__filename)\\b(?!\\$)"
3323
+ "match": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(global|GLOBAL|root|__dirname|__filename)\\b(?!\\$)"
3324
3324
  },
3325
3325
  {
3326
- "match": "(?x) {{propertyAccess}} \\s*\n(?:\n (on(?:Rowsinserted|Rowsdelete|Rowenter|Rowexit|Resize|Resizestart|Resizeend|Reset|\n Readystatechange|Mouseout|Mouseover|Mousedown|Mouseup|Mousemove|\n Before(?:cut|deactivate|unload|update|paste|print|editfocus|activate)|\n Blur|Scrolltop|Submit|Select|Selectstart|Selectionchange|Hover|Help|\n Change|Contextmenu|Controlselect|Cut|Cellchange|Clock|Close|Deactivate|\n Datasetchanged|Datasetcomplete|Dataavailable|Drop|Drag|Dragstart|Dragover|\n Dragdrop|Dragenter|Dragend|Dragleave|Dblclick|Unload|Paste|Propertychange|Error|\n Errorupdate|Keydown|Keyup|Keypress|Focus|Load|Activate|Afterupdate|Afterprint|Abort)\n ) |\n (shift|showModelessDialog|showModalDialog|showHelp|scroll|scrollX|scrollByPages|\n scrollByLines|scrollY|scrollTo|stop|strike|sizeToContent|sidebar|signText|sort|\n sup|sub|substr|substring|splice|split|send|set(?:Milliseconds|Seconds|Minutes|Hours|\n Month|Year|FullYear|Date|UTC(?:Milliseconds|Seconds|Minutes|Hours|Month|FullYear|Date)|\n Time|Hotkeys|Cursor|ZOptions|Active|Resizable|RequestHeader)|search|slice|\n savePreferences|small|home|handleEvent|navigate|char|charCodeAt|charAt|concat|\n contextual|confirm|compile|clear|captureEvents|call|createStyleSheet|createPopup|\n createEventObject|to(?:GMTString|UTCString|String|Source|UpperCase|LowerCase|LocaleString)|\n test|taint|taintEnabled|indexOf|italics|disableExternalCapture|dump|detachEvent|unshift|\n untaint|unwatch|updateCommands|join|javaEnabled|pop|push|plugins.refresh|paddings|parse|\n print|prompt|preference|enableExternalCapture|exec|execScript|valueOf|UTC|find|file|\n fileModifiedDate|fileSize|fileCreatedDate|fileUpdatedDate|fixed|fontsize|fontcolor|\n forward|fromCharCode|watch|link|load|lastIndexOf|anchor|attachEvent|atob|apply|alert|\n abort|routeEvents|resize|resizeBy|resizeTo|recalc|returnValue|replace|reverse|reload|\n releaseCapture|releaseEvents|go|get(?:Milliseconds|Seconds|Minutes|Hours|Month|Day|Year|FullYear|\n Time|Date|TimezoneOffset|UTC(?:Milliseconds|Seconds|Minutes|Hours|Day|Month|FullYear|Date)|\n Attention|Selection|ResponseHeader|AllResponseHeaders)|moveBy|moveBelow|moveTo|\n moveToAbsolute|moveAbove|mergeAttributes|match|margins|btoa|big|bold|borderWidths|blink|back\n ) |\n (acceptNode|add|addEventListener|addTextTrack|adoptNode|after|animate|append|\n appendChild|appendData|before|blur|canPlayType|captureStream|\n caretPositionFromPoint|caretRangeFromPoint|checkValidity|clear|click|\n cloneContents|cloneNode|cloneRange|close|closest|collapse|\n compareBoundaryPoints|compareDocumentPosition|comparePoint|contains|\n convertPointFromNode|convertQuadFromNode|convertRectFromNode|createAttribute|\n createAttributeNS|createCaption|createCDATASection|createComment|\n createContextualFragment|createDocument|createDocumentFragment|\n createDocumentType|createElement|createElementNS|createEntityReference|\n createEvent|createExpression|createHTMLDocument|createNodeIterator|\n createNSResolver|createProcessingInstruction|createRange|createShadowRoot|\n createTBody|createTextNode|createTFoot|createTHead|createTreeWalker|delete|\n deleteCaption|deleteCell|deleteContents|deleteData|deleteRow|deleteTFoot|\n deleteTHead|detach|disconnect|dispatchEvent|elementFromPoint|elementsFromPoint|\n enableStyleSheetsForSet|entries|evaluate|execCommand|exitFullscreen|\n exitPointerLock|expand|extractContents|fastSeek|firstChild|focus|forEach|get|\n getAll|getAnimations|getAttribute|getAttributeNames|getAttributeNode|\n getAttributeNodeNS|getAttributeNS|getBoundingClientRect|getBoxQuads|\n getClientRects|getContext|getDestinationInsertionPoints|getElementById|\n getElementsByClassName|getElementsByName|getElementsByTagName|\n getElementsByTagNameNS|getItem|getNamedItem|getSelection|getStartDate|\n getVideoPlaybackQuality|has|hasAttribute|hasAttributeNS|hasAttributes|\n hasChildNodes|hasFeature|hasFocus|importNode|initEvent|insertAdjacentElement|\n insertAdjacentHTML|insertAdjacentText|insertBefore|insertCell|insertData|\n insertNode|insertRow|intersectsNode|isDefaultNamespace|isEqualNode|\n isPointInRange|isSameNode|item|key|keys|lastChild|load|lookupNamespaceURI|\n lookupPrefix|matches|move|moveAttribute|moveAttributeNode|moveChild|\n moveNamedItem|namedItem|nextNode|nextSibling|normalize|observe|open|\n parentNode|pause|play|postMessage|prepend|preventDefault|previousNode|\n previousSibling|probablySupportsContext|queryCommandEnabled|\n queryCommandIndeterm|queryCommandState|queryCommandSupported|queryCommandValue|\n querySelector|querySelectorAll|registerContentHandler|registerElement|\n registerProtocolHandler|releaseCapture|releaseEvents|remove|removeAttribute|\n removeAttributeNode|removeAttributeNS|removeChild|removeEventListener|\n removeItem|replace|replaceChild|replaceData|replaceWith|reportValidity|\n requestFullscreen|requestPointerLock|reset|scroll|scrollBy|scrollIntoView|\n scrollTo|seekToNextFrame|select|selectNode|selectNodeContents|set|setAttribute|\n setAttributeNode|setAttributeNodeNS|setAttributeNS|setCapture|\n setCustomValidity|setEnd|setEndAfter|setEndBefore|setItem|setNamedItem|\n setRangeText|setSelectionRange|setSinkId|setStart|setStartAfter|setStartBefore|\n slice|splitText|stepDown|stepUp|stopImmediatePropagation|stopPropagation|\n submit|substringData|supports|surroundContents|takeRecords|terminate|toBlob|\n toDataURL|toggle|toString|values|write|writeln\n )\n)(?=\\s*\\()",
3326
+ "match": "(?x) (?:(\\.)|(\\?\\.(?!\\s*[[:digit:]]))) \\s*\n(?:\n (on(?:Rowsinserted|Rowsdelete|Rowenter|Rowexit|Resize|Resizestart|Resizeend|Reset|\n Readystatechange|Mouseout|Mouseover|Mousedown|Mouseup|Mousemove|\n Before(?:cut|deactivate|unload|update|paste|print|editfocus|activate)|\n Blur|Scrolltop|Submit|Select|Selectstart|Selectionchange|Hover|Help|\n Change|Contextmenu|Controlselect|Cut|Cellchange|Clock|Close|Deactivate|\n Datasetchanged|Datasetcomplete|Dataavailable|Drop|Drag|Dragstart|Dragover|\n Dragdrop|Dragenter|Dragend|Dragleave|Dblclick|Unload|Paste|Propertychange|Error|\n Errorupdate|Keydown|Keyup|Keypress|Focus|Load|Activate|Afterupdate|Afterprint|Abort)\n ) |\n (shift|showModelessDialog|showModalDialog|showHelp|scroll|scrollX|scrollByPages|\n scrollByLines|scrollY|scrollTo|stop|strike|sizeToContent|sidebar|signText|sort|\n sup|sub|substr|substring|splice|split|send|set(?:Milliseconds|Seconds|Minutes|Hours|\n Month|Year|FullYear|Date|UTC(?:Milliseconds|Seconds|Minutes|Hours|Month|FullYear|Date)|\n Time|Hotkeys|Cursor|ZOptions|Active|Resizable|RequestHeader)|search|slice|\n savePreferences|small|home|handleEvent|navigate|char|charCodeAt|charAt|concat|\n contextual|confirm|compile|clear|captureEvents|call|createStyleSheet|createPopup|\n createEventObject|to(?:GMTString|UTCString|String|Source|UpperCase|LowerCase|LocaleString)|\n test|taint|taintEnabled|indexOf|italics|disableExternalCapture|dump|detachEvent|unshift|\n untaint|unwatch|updateCommands|join|javaEnabled|pop|push|plugins.refresh|paddings|parse|\n print|prompt|preference|enableExternalCapture|exec|execScript|valueOf|UTC|find|file|\n fileModifiedDate|fileSize|fileCreatedDate|fileUpdatedDate|fixed|fontsize|fontcolor|\n forward|fromCharCode|watch|link|load|lastIndexOf|anchor|attachEvent|atob|apply|alert|\n abort|routeEvents|resize|resizeBy|resizeTo|recalc|returnValue|replace|reverse|reload|\n releaseCapture|releaseEvents|go|get(?:Milliseconds|Seconds|Minutes|Hours|Month|Day|Year|FullYear|\n Time|Date|TimezoneOffset|UTC(?:Milliseconds|Seconds|Minutes|Hours|Day|Month|FullYear|Date)|\n Attention|Selection|ResponseHeader|AllResponseHeaders)|moveBy|moveBelow|moveTo|\n moveToAbsolute|moveAbove|mergeAttributes|match|margins|btoa|big|bold|borderWidths|blink|back\n ) |\n (acceptNode|add|addEventListener|addTextTrack|adoptNode|after|animate|append|\n appendChild|appendData|before|blur|canPlayType|captureStream|\n caretPositionFromPoint|caretRangeFromPoint|checkValidity|clear|click|\n cloneContents|cloneNode|cloneRange|close|closest|collapse|\n compareBoundaryPoints|compareDocumentPosition|comparePoint|contains|\n convertPointFromNode|convertQuadFromNode|convertRectFromNode|createAttribute|\n createAttributeNS|createCaption|createCDATASection|createComment|\n createContextualFragment|createDocument|createDocumentFragment|\n createDocumentType|createElement|createElementNS|createEntityReference|\n createEvent|createExpression|createHTMLDocument|createNodeIterator|\n createNSResolver|createProcessingInstruction|createRange|createShadowRoot|\n createTBody|createTextNode|createTFoot|createTHead|createTreeWalker|delete|\n deleteCaption|deleteCell|deleteContents|deleteData|deleteRow|deleteTFoot|\n deleteTHead|detach|disconnect|dispatchEvent|elementFromPoint|elementsFromPoint|\n enableStyleSheetsForSet|entries|evaluate|execCommand|exitFullscreen|\n exitPointerLock|expand|extractContents|fastSeek|firstChild|focus|forEach|get|\n getAll|getAnimations|getAttribute|getAttributeNames|getAttributeNode|\n getAttributeNodeNS|getAttributeNS|getBoundingClientRect|getBoxQuads|\n getClientRects|getContext|getDestinationInsertionPoints|getElementById|\n getElementsByClassName|getElementsByName|getElementsByTagName|\n getElementsByTagNameNS|getItem|getNamedItem|getSelection|getStartDate|\n getVideoPlaybackQuality|has|hasAttribute|hasAttributeNS|hasAttributes|\n hasChildNodes|hasFeature|hasFocus|importNode|initEvent|insertAdjacentElement|\n insertAdjacentHTML|insertAdjacentText|insertBefore|insertCell|insertData|\n insertNode|insertRow|intersectsNode|isDefaultNamespace|isEqualNode|\n isPointInRange|isSameNode|item|key|keys|lastChild|load|lookupNamespaceURI|\n lookupPrefix|matches|move|moveAttribute|moveAttributeNode|moveChild|\n moveNamedItem|namedItem|nextNode|nextSibling|normalize|observe|open|\n parentNode|pause|play|postMessage|prepend|preventDefault|previousNode|\n previousSibling|probablySupportsContext|queryCommandEnabled|\n queryCommandIndeterm|queryCommandState|queryCommandSupported|queryCommandValue|\n querySelector|querySelectorAll|registerContentHandler|registerElement|\n registerProtocolHandler|releaseCapture|releaseEvents|remove|removeAttribute|\n removeAttributeNode|removeAttributeNS|removeChild|removeEventListener|\n removeItem|replace|replaceChild|replaceData|replaceWith|reportValidity|\n requestFullscreen|requestPointerLock|reset|scroll|scrollBy|scrollIntoView|\n scrollTo|seekToNextFrame|select|selectNode|selectNodeContents|set|setAttribute|\n setAttributeNode|setAttributeNodeNS|setAttributeNS|setCapture|\n setCustomValidity|setEnd|setEndAfter|setEndBefore|setItem|setNamedItem|\n setRangeText|setSelectionRange|setSinkId|setStart|setStartAfter|setStartBefore|\n slice|splitText|stepDown|stepUp|stopImmediatePropagation|stopPropagation|\n submit|substringData|supports|surroundContents|takeRecords|terminate|toBlob|\n toDataURL|toggle|toString|values|write|writeln\n )\n)(?=\\s*\\()",
3327
3327
  "captures": {
3328
3328
  "1": {
3329
3329
  "name": "punctuation.accessor.ts"
@@ -3346,12 +3346,12 @@
3346
3346
  },
3347
3347
  "switch-statement": {
3348
3348
  "name": "switch-statement.expr.ts",
3349
- "begin": "{{startOfIdentifier}}(?=\\bswitch\\s*\\()",
3349
+ "begin": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(?=\\bswitch\\s*\\()",
3350
3350
  "end": "\\}",
3351
3351
  "patterns": [
3352
3352
  {
3353
3353
  "name": "switch-expression.expr.ts",
3354
- "begin": "{{startOfIdentifier}}(switch)\\s*(\\()",
3354
+ "begin": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(switch)\\s*(\\()",
3355
3355
  "end": "\\)",
3356
3356
  "patterns": [
3357
3357
  {
@@ -3379,7 +3379,7 @@
3379
3379
  "patterns": [
3380
3380
  {
3381
3381
  "name": "case-clause.expr.ts",
3382
- "begin": "{{startOfIdentifier}}(case|default(?=:)){{endOfIdentifier}}",
3382
+ "begin": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(case|default(?=:))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
3383
3383
  "end": ":",
3384
3384
  "patterns": [
3385
3385
  {
@@ -3416,7 +3416,7 @@
3416
3416
  },
3417
3417
  "template": {
3418
3418
  "name": "string.template.ts",
3419
- "begin": "({{identifier}})?(`)",
3419
+ "begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
3420
3420
  "end": "`",
3421
3421
  "patterns": [
3422
3422
  {
@@ -3482,7 +3482,7 @@
3482
3482
  },
3483
3483
  "this-literal": {
3484
3484
  "name": "variable.language.this.ts",
3485
- "match": "{{startOfIdentifier}}this\\b(?!\\$)"
3485
+ "match": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))this\\b(?!\\$)"
3486
3486
  },
3487
3487
  "type": {
3488
3488
  "patterns": [
@@ -3529,7 +3529,7 @@
3529
3529
  },
3530
3530
  "type-alias-declaration": {
3531
3531
  "name": "meta.type.declaration.ts",
3532
- "begin": "{{startOfIdentifier}}(?:(\\bexport)\\s+)?\\b(type)\\b\\s+({{identifier}})\\s*",
3532
+ "begin": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(?:(\\bexport)\\s+)?\\b(type)\\b\\s+([_$[:alpha:]][_$[:alnum:]]*)\\s*",
3533
3533
  "end": "(?=[};]|\\babstract\\b|\\basync\\b|\\bclass\\b|\\bconst\\b|\\bdeclare\\b|\\benum\\b|\\bexport\\b|\\bfunction\\b|\\bimport\\b|\\binterface\\b|\\blet\\b|\\bmodule\\b|\\bnamespace\\b|\\btype\\b|\\bvar\\b)",
3534
3534
  "patterns": [
3535
3535
  {
@@ -3598,13 +3598,13 @@
3598
3598
  },
3599
3599
  "type-builtin-literals": {
3600
3600
  "name": "support.type.builtin.ts",
3601
- "match": "{{startOfIdentifier}}(this|true|false|undefined|null|object){{endOfIdentifier}}"
3601
+ "match": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(this|true|false|undefined|null|object)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
3602
3602
  },
3603
3603
  "type-fn-type-parameters": {
3604
3604
  "patterns": [
3605
3605
  {
3606
3606
  "name": "meta.type.constructor.ts",
3607
- "match": "{{startOfIdentifier}}(new)\\b(?=\\s*\\\u003c)",
3607
+ "match": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(new)\\b(?=\\s*\\\u003c)",
3608
3608
  "captures": {
3609
3609
  "1": {
3610
3610
  "name": "keyword.control.new.ts"
@@ -3613,7 +3613,7 @@
3613
3613
  },
3614
3614
  {
3615
3615
  "name": "meta.type.constructor.ts",
3616
- "begin": "{{startOfIdentifier}}(new)\\b\\s*(?=\\()",
3616
+ "begin": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(new)\\b\\s*(?=\\()",
3617
3617
  "end": "(?\u003c=\\))",
3618
3618
  "patterns": [
3619
3619
  {
@@ -3697,7 +3697,7 @@
3697
3697
  "type-name": {
3698
3698
  "patterns": [
3699
3699
  {
3700
- "match": "({{identifier}})\\s*{{propertyAccess}}",
3700
+ "match": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
3701
3701
  "captures": {
3702
3702
  "1": {
3703
3703
  "name": "entity.name.type.module.ts"
@@ -3712,7 +3712,7 @@
3712
3712
  },
3713
3713
  {
3714
3714
  "name": "entity.name.type.ts",
3715
- "match": "{{identifier}}"
3715
+ "match": "[_$[:alpha:]][_$[:alnum:]]*"
3716
3716
  }
3717
3717
  ]
3718
3718
  },
@@ -3804,7 +3804,7 @@
3804
3804
  },
3805
3805
  {
3806
3806
  "name": "keyword.operator.expression.keyof.ts",
3807
- "match": "{{startOfIdentifier}}keyof{{endOfIdentifier}}"
3807
+ "match": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))keyof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
3808
3808
  }
3809
3809
  ]
3810
3810
  },
@@ -3818,7 +3818,7 @@
3818
3818
  },
3819
3819
  {
3820
3820
  "name": "storage.modifier.ts",
3821
- "match": "{{startOfIdentifier}}(extends){{endOfIdentifier}}"
3821
+ "match": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(extends)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
3822
3822
  },
3823
3823
  {
3824
3824
  "name": "keyword.operator.assignment.ts",
@@ -3867,11 +3867,11 @@
3867
3867
  },
3868
3868
  "type-predicate-operator": {
3869
3869
  "name": "keyword.operator.expression.is.ts",
3870
- "match": "{{startOfIdentifier}}is{{endOfIdentifier}}"
3870
+ "match": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))is(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
3871
3871
  },
3872
3872
  "type-primitive": {
3873
3873
  "name": "support.type.primitive.ts",
3874
- "match": "{{startOfIdentifier}}(string|number|boolean|symbol|any|void|never){{endOfIdentifier}}"
3874
+ "match": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(string|number|boolean|symbol|any|void|never)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
3875
3875
  },
3876
3876
  "type-tuple": {
3877
3877
  "name": "meta.type.tuple.ts",
@@ -3898,15 +3898,15 @@
3898
3898
  },
3899
3899
  "typeof-operator": {
3900
3900
  "name": "keyword.operator.expression.typeof.ts",
3901
- "match": "{{startOfIdentifier}}typeof{{endOfIdentifier}}"
3901
+ "match": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))typeof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
3902
3902
  },
3903
3903
  "undefined-literal": {
3904
3904
  "name": "constant.language.undefined.ts",
3905
- "match": "{{startOfIdentifier}}undefined{{endOfIdentifier}}"
3905
+ "match": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))undefined(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
3906
3906
  },
3907
3907
  "var-expr": {
3908
3908
  "name": "meta.var.expr.ts",
3909
- "begin": "{{startOfIdentifier}}(?:(\\bexport)\\s+)?\\b(var|let|const(?!\\s+enum\\b)){{endOfIdentifier}}",
3909
+ "begin": "(?\u003c![_$[:alnum:]])(?:(?\u003c=\\.\\.\\.)|(?\u003c!\\.))(?:(\\bexport)\\s+)?\\b(var|let|const(?!\\s+enum\\b))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
3910
3910
  "end": "(?=$|^|;|}|(\\s+(of|in)\\s+))",
3911
3911
  "patterns": [
3912
3912
  {
@@ -3961,7 +3961,7 @@
3961
3961
  "patterns": [
3962
3962
  {
3963
3963
  "name": "meta.var-single-variable.expr.ts",
3964
- "begin": "(?x)({{identifier}})(?={{functionLikeAssignmentOrType}})",
3964
+ "begin": "(?x)([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*\n# function assignment |\n(=\\s*(\n ((async\\s+)?(\n (function\\s*[(\u003c*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=\u003e)\n )) |\n ((async\\s*)?(\n # sure shot arrow functions even if =\u003e is on new line\n(\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [\u003c]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=\u003e] # \u003c typeparam extends\n) |\n# arrow function possible to detect only with =\u003e on same line\n(\n (\u003c\\s*([_$[:alpha:]]|(\\{[^\\{\\}]*\\})|(\\([^\\(\\)]*\\))|(\\[[^\\[\\]]*\\]))([^=\u003c\u003e]|=[^\u003c]|\\\u003c\\s*([_$[:alpha:]]|(\\{[^\\{\\}]*\\})|(\\([^\\(\\)]*\\))|(\\[[^\\[\\]]*\\]))([^=\u003c\u003e]|=[^\u003c])*\\\u003e)*\u003e\\s*)? # typeparameters\n \\(\\s*([_$[:alpha:]\\{\\[]([^()]|\\((\\s*[^()]*)?\\))*)?\\) # parameteres\n (\\s*:\\s*([^\u003c\u003e\\(\\)]|\\\u003c[^\u003c\u003e]+\\\u003e|\\([^\\(\\)]+\\))+)? # return type\n \\s*=\u003e # arrow operator\n)\n ))\n)) |\n# typeannotation is fn type: \u003c | () | (... | (param: | (param, | (param? | (param= | (param) =\u003e\n(:\\s*(\n (\u003c) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=\u003e)\n ))\n ))\n)) |\n(:\\s*(=\u003e|(\\([^\\(\\)]*\\))|(\u003c[^\u003c\u003e]*\u003e)|[^\u003c\u003e(),=])+=\\s*(\n ((async\\s+)?(\n (function\\s*[(\u003c*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=\u003e)\n )) |\n ((async\\s*)?(\n # sure shot arrow functions even if =\u003e is on new line\n(\n [(]\\s*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [\u003c]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=\u003e] # \u003c typeparam extends\n) |\n# arrow function possible to detect only with =\u003e on same line\n(\n (\u003c\\s*([_$[:alpha:]]|(\\{[^\\{\\}]*\\})|(\\([^\\(\\)]*\\))|(\\[[^\\[\\]]*\\]))([^=\u003c\u003e]|=[^\u003c]|\\\u003c\\s*([_$[:alpha:]]|(\\{[^\\{\\}]*\\})|(\\([^\\(\\)]*\\))|(\\[[^\\[\\]]*\\]))([^=\u003c\u003e]|=[^\u003c])*\\\u003e)*\u003e\\s*)? # typeparameters\n \\(\\s*([_$[:alpha:]\\{\\[]([^()]|\\((\\s*[^()]*)?\\))*)?\\) # parameteres\n (\\s*:\\s*([^\u003c\u003e\\(\\)]|\\\u003c[^\u003c\u003e]+\\\u003e|\\([^\\(\\)]+\\))+)? # return type\n \\s*=\u003e # arrow operator\n)\n ))\n)))",
3965
3965
  "end": "(?=$|^|[;,=}]|(\\s+(of|in)\\s+))",
3966
3966
  "patterns": [
3967
3967
  {
@@ -3976,7 +3976,7 @@
3976
3976
  },
3977
3977
  {
3978
3978
  "name": "meta.var-single-variable.expr.ts",
3979
- "begin": "{{constantVar}}",
3979
+ "begin": "([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])",
3980
3980
  "end": "(?=$|^|[;,=}]|(\\s+(of|in)\\s+))",
3981
3981
  "patterns": [
3982
3982
  {
@@ -3991,7 +3991,7 @@
3991
3991
  },
3992
3992
  {
3993
3993
  "name": "meta.var-single-variable.expr.ts",
3994
- "begin": "({{identifier}})",
3994
+ "begin": "([_$[:alpha:]][_$[:alnum:]]*)",
3995
3995
  "end": "(?=$|^|[;,=}]|(\\s+(of|in)\\s+))",
3996
3996
  "patterns": [
3997
3997
  {