diff --git a/hlcode.YAML-tmLanguage b/hlcode.YAML-tmLanguage
index 9d24c70..cae245f 100644
--- a/hlcode.YAML-tmLanguage
+++ b/hlcode.YAML-tmLanguage
@@ -79,7 +79,7 @@ patterns:
"2": {name: keyword.hlcode}
end: '^(?=\d+ functions)'
patterns:
- - match: '^\t(@\d+) (native) (\w+@\w+) (.*)$'
+ - match: '^\t(@\d+) (native) (\??\w+@\w+) (.*)$'
captures:
"1": {name: constant.language.hlcode}
"2": {name: keyword.hlcode}
@@ -135,7 +135,7 @@ patterns:
patterns:
- begin: '^\t([a-zA-Z_$][\w$]*(?:\.[a-zA-Z_$][\w$]*)*) (no global)$'
beginCaptures:
- "1":
+ "1":
patterns:
- include: "#type-name"
"2": {name: keyword.hlcode}
@@ -222,9 +222,9 @@ repository:
- include: "#invalid"
types:
patterns:
- - match: '(?:ui8|ui16|[if](?:32|64)|bool|bytes|string|void|array|dyn(?:obj)?|type)(?=\b)'
+ - match: '(?:ui8|ui16|[if](?:32|64)|bool|bytes|string|void|dyn(?:obj)?|type)(?=\b)'
name: entity.name.type.hlcode
- - begin: (ref|null)(\()
+ - begin: (ref|null|array)(\()
beginCaptures:
"1": {name: entity.name.type.hlcode}
"2": {name: punctuation.definition.typeparams.begin.hlcode}
@@ -234,6 +234,8 @@ repository:
patterns:
- include: "#types"
- include: "#invalid"
+ - match: 'array'
+ name: entity.name.type.hlcode
- match: '(abstract)(\()([a-zA-Z_$][\w$]*)(\))'
captures:
"1": {name: entity.name.type.hlcode}
@@ -300,7 +302,7 @@ repository:
beginCaptures:
"0": {name: operator.hlcode}
end: " "
- endCaptures:
+ endCaptures:
"0": {name: text.hlcode}
patterns:
- include: "#type-name"
diff --git a/hlcode.tmLanguage b/hlcode.tmLanguage
index e6a9dd7..1152565 100644
--- a/hlcode.tmLanguage
+++ b/hlcode.tmLanguage
@@ -1 +1 @@
-nameHashLink bytecode dump filescopeNamesource.hlcodepatternsmatch^(hl) (v)(\d+)$captures1namekeyword.hlcode2nameconstant.language.hlcode3nameconstant.numeric.hlcodematch^(entry) (@\d+)$captures1namekeyword.hlcode2namesupport.function.hlcodebegin^(\d+) (strings)$beginCaptures1nameconstant.numeric.hlcode2namekeyword.hlcodeend^(?=\d+ bytes)patternsmatch^\t(@\d+) (:) (.*)$captures1nameconstant.language.hlcode2nameoperator.hlcode3namestring.hlcodeinclude#invalidbegin^(\d+) (bytes)$beginCaptures1nameconstant.numeric.hlcode2namekeyword.hlcodeend^(?=\d+ ints)patternsmatch^\t(@\d+) (:) (\d+)$captures1nameconstant.language.hlcode2nameoperator.hlcode3nameconstant.numeric.hlcodeinclude#invalidbegin^(\d+) (ints)$beginCaptures1nameconstant.numeric.hlcode2namekeyword.hlcodeend^(?=\d+ floats)patternsmatch^\t(@\d+) (:) (-?\d+)$captures1nameconstant.language.hlcode2nameoperator.hlcode3nameconstant.numeric.hlcodeinclude#invalidbegin^(\d+) (floats)$beginCaptures1nameconstant.numeric.hlcode2namekeyword.hlcodeend^(?=\d+ globals)patternsmatch^\t(@\d+) (:) (-?(?:\d+\.\d*|\.\d+))$captures1nameconstant.language.hlcode2nameoperator.hlcode3nameconstant.numeric.hlcodeinclude#invalidbegin^(\d+) (globals)$beginCaptures1nameconstant.numeric.hlcode2namekeyword.hlcodeend^(?=\d+ natives)patternsmatch^\t(@\d+) (:) (.*)$captures1nameconstant.language.hlcode2nameoperator.hlcode3patternsinclude#typesinclude#invalidinclude#invalidbegin^(\d+) (natives)$beginCaptures1nameconstant.numeric.hlcode2namekeyword.hlcodeend^(?=\d+ functions)patternsmatch^\t(@\d+) (native) (\w+@\w+) (.*)$captures1nameconstant.language.hlcode2namekeyword.hlcode3namesupport.function.hlcode4patternsinclude#typesinclude#invalidinclude#invalidbegin^(\d+) (functions)$beginCaptures1nameconstant.numeric.hlcode2namekeyword.hlcodeend^(?=\d+ objects protos)patternsbegin^\t(fun)(@\d+)(\()(\h+h)(\)) (.*)$beginCaptures1namekeyword.hlcode2namesupport.function.hlcode3namepunctuation.definition.param.begin.hlcode4nameconstant.numeric.hlcode5namepunctuation.definition.param.end.hlcode6patternsinclude#func-typeinclude#invalidend^(?=\tfun@\d+|\d+ objects protos)patternsinclude#line-commentmatch^[ \t]*(r)(\d+) (.*)$captures1namekeyword.hlcode2nameconstant.numeric.hlcode3patternsinclude#typesinclude#invalidmatch^[ \t]+(\.\d+)[ \t]+(@\h+)[ \t]+(.*)$captures1namestring.hlcode2nameconstant.numeric.hlcode3patternsinclude#opcodesinclude#invalidinclude#invalidinclude#invalidbegin^(\d+) (objects protos)$beginCaptures1nameconstant.numeric.hlcode2namekeyword.hlcodeend(?=^\d+ constant values)patternsbegin^\t([a-zA-Z_$][\w$]*(?:\.[a-zA-Z_$][\w$]*)*) (no global)$beginCaptures1patternsinclude#type-name2namekeyword.hlcodeend^(?=\t(?!\t)|\d+ constant values)patternsinclude#proto-bodybegin^\t([a-zA-Z_$][\w$]*(?:\.[a-zA-Z_$][\w$]*)*) (@\d+)$beginCaptures1patternsinclude#type-name2nameconstant.language.hlcodeend^(?=\t(?!\t)|\d+ constant values)patternsinclude#proto-bodyinclude#invalidinclude#invalidbegin^(\d+) (constant values)$beginCaptures1nameconstant.numeric.hlcode2namekeyword.hlcodeend(?=end)neverpatternsbegin^[ \t]+(@\d+) beginCaptures1nameconstant.language.hlcodeend (\[)((?:\d+(?:,\d+)*)?)(\])$endCaptures1namepunctuation.definition.brackets.begin.hlcode2patternsmatch\d+nameconstant.numeric.hlcodematch,nameoperator.hlcodeinclude#invalid3namepunctuation.definition.brackets.end.hlcodepatternsinclude#typesinclude#invalidrepositoryline-commentmatch[ \t]*;.*$namecomment.hlcodeinvalidmatch.nameinvalid.illegal.hlcodetype-namepatternsbegin@?[a-zA-Z_$][\w$]*(?=\.[a-zA-Z_$])beginCaptures0nameentity.name.type.hlcodeend(\.)([a-zA-Z_$][\w$]*)(?!\.)endCaptures1nameoperator.hlcode2nameentity.name.type.hlcodepatternsmatch(\.)([a-zA-Z_$][\w$]*)(?=\.)captures1nameoperator.hlcode2nameentity.name.type.hlcodeinclude#invalidmatch@?[A-Z_$][\w$]*(?![\w$]+[(:.])nameentity.name.type.hlcodefunc-typepatternsbegin\(beginCaptures0namepunctuation.definition.typeparams.begin.hlcodeend(\))(?=:(?:[a-zA-Z_$(]|@?\[))endCaptures0namepunctuation.definition.typeparams.end.hlcodepatternsinclude#typesmatch,nameoperator.hlcodeinclude#invalidbegin(:)(?=[a-zA-Z_$(]|@?\[)beginCaptures1nameoperator.hlcodeend(?=[),]|$)patternsinclude#typesinclude#invalidtypespatternsmatch(?:ui8|ui16|[if](?:32|64)|bool|bytes|string|void|array|dyn(?:obj)?|type)(?=\b)nameentity.name.type.hlcodebegin(ref|null)(\()beginCaptures1nameentity.name.type.hlcode2namepunctuation.definition.typeparams.begin.hlcodeend\)endCaptures0namepunctuation.definition.typeparams.end.hlcodepatternsinclude#typesinclude#invalidmatch(abstract)(\()([a-zA-Z_$][\w$]*)(\))captures1nameentity.name.type.hlcode2namepunctuation.definition.typeparams.begin.hlcode3nameentity.name.type.hlcode4namepunctuation.definition.typeparams.end.hlcodebegin(enum)(\()beginCaptures1nameentity.name.type.hlcode2namepunctuation.definition.typeparams.begin.hlcodeend\)endCaptures0namepunctuation.definition.typeparams.end.hlcodepatternsinclude#typesmatch,nameoperator.hlcodeinclude#invalidbegin(method)(:)(\()beginCaptures1nameentity.name.type.hlcode2nameoperator.hlcode3namepunctuation.definition.args.begin.hlcodeend(\))(:)(?=[a-zA-Z_$(]|@?\[)endCaptures1namepunctuation.definition.args.end.hlcode2nameoperator.hlcodepatternsinclude#typesmatch,nameoperator.hlcodeinclude#invalidinclude#func-typebegin(virtual)(\()beginCaptures1nameentity.name.type.hlcode2namepunctuation.definition.args.begin.hlcodeend\)endCaptures0namepunctuation.definition.args.end.hlcodepatternsbegin([a-zA-Z_$][\w$]*)(:)beginCaptures1namevariable.hlcode2nameoperator.hlcodeend(?=[,)])patternsinclude#typesinclude#invalidmatch,nameoperator.hlcodeinclude#invalidmatch\.{3}nameentity.name.type.hlcodeinclude#type-namebegin@?\[beginCaptures0namepunctuation.definition.obj.begin.hlcodeend\]endCaptures0namepunctuation.definition.obj.end.hlcodepatternsbegin>beginCaptures0nameoperator.hlcodeend endCaptures0nametext.hlcodepatternsinclude#type-nameinclude#invalidbegin(fields)(=)(\{)beginCaptures1namekeyword.hlcode2nameoperator.hlcode3namepunctuation.definition.fields.begin.hlcodeend\}endCaptures0namepunctuation.definition.fields.end.hlcodepatternsbegin([a-zA-Z_$][\w$]*)(:)beginCaptures1namevariable.hlcode2namekeyword.operator.hlcodeend(?=[},])patternsinclude#typesinclude#invalidmatch,nameoperator.hlcodeinclude#invalidbegin(proto)(=)(\{)beginCaptures1namekeyword.hlcode2nameoperator.hlcode3namepunctuation.definition.fields.begin.hlcodeend\}endCaptures0namepunctuation.definition.fields.end.hlcodepatternsmatch((?:virtual )?)([a-zA-Z_$][\w$]*)(@\d+)captures1namekeyword.hlcode2nameentity.name.function.hlcode3namesupport.function.hlcodematch,nameoperator.hlcodeinclude#invalidinclude#invalidopcodespatternsmatch(mov|neg|not|to(?:dyn|[su]float|int|virtual)|(?:un)?safecast|arraysize|get(?:type|tid)|enumindex|refdata) (\d+) *(,) *(\d+)$captures1namekeyword.hlcode2namevariable.hlcode3nameoperator.hlcode4namevariable.hlcodematch(int|float|string|bytes) (\d+) *(,) *(@\d+)$captures1namekeyword.hlcode2namevariable.hlcode3nameoperator.hlcode4nameconstant.language.hlcodematch(true|false|null(?:check)?|incr|decr|ret|new|(?:re)?throw) (\d+)$captures1namekeyword.hlcode2namevariable.hlcodematch(add|sub|mul|[su](?:div|mod|shr)|shl|and|x?or|set(?:ui8|ui16|mem)|refoffset) (\d+) *(,) *(\d+) *(,) *(\d+)$captures1namekeyword.hlcode2namevariable.hlcode3nameoperator.hlcode4namevariable.hlcode5nameoperator.hlcode6namevariable.hlcodebegin(call) (\d+)(,) ((?:[a-zA-Z_$][\w$]*\.)*)([a-zA-Z_$][\w$]*)(\()beginCaptures1namekeyword.hlcode2namevariable.hlcode3nameoperator.hlcode4patternsmatch[a-zA-Z_$][\w$]*(?=\.[a-zA-Z_$][\w$]*\()nameentity.name.type.hlcodebegin[a-zA-Z_$][\w$]*(?=\.)beginCaptures0nameentity.name.type.hlcodeend\.(?=[a-zA-Z_$][\w$]*\()endCaptures0nameoperator.hlcodepatternsmatch(\.)([a-zA-Z_$][\w$]*)(?![\w$]*\()captures1nameoperator.hlcode2nameentity.name.type.hlcode5nameentity.name.function.hlcode6namepunctuation.definition.params.begin.hlcodeend\)$endCaptures0namepunctuation.definition.params.end.hlcodepatternsmatch\d+namevariable.hlcodematch,nameoperator.hlcodeinclude#invalidbegin(call) (\d+)(,) (\w+@\w+)(\()beginCaptures1namekeyword.hlcode2namevariable.hlcode3nameoperator.hlcode4namesupport.function.hlcode5namepunctuation.definition.params.begin.hlcodeend\)$endCaptures0namepunctuation.definition.params.end.hlcodepatternsmatch\dnamevariable.hlcodematch,nameoperator.hlcodeinclude#invalidbegin(callmethod) (\d+)(,) (\d+)(\[)(\d+)(\])(\()beginCaptures1namekeyword.hlcode2namevariable.hlcode3nameoperator.hlcode4namevariable.hlcode5namepunctuation.definition.index.begin.hlcode6nameentity.name.function.hlcode7namepunctuation.definition.index.end.hlcode8namepunctuation.definition.params.begin.hlcodeend\)$endCaptures0namepunctuation.definition.params.end.hlcodepatternsmatch\d+namevariable.hlcodematch,nameoperator.hlcodeinclude#invalidbegin(callclosure) (\d+)(,) (\d+)(\()beginCaptures1namekeyword.hlcode2namevariable.hlcode3nameoperator.hlcode4namevariable.hlcode5namepunctuation.definition.params.begin.hlcodeend\)$endCaptures0namepunctuation.definition.params.end.hlcodepatternsmatch\d+namevariable.hlcodematch,nameoperator.hlcodeinclude#invalidbegin(callthis) (\d+)(,) (\[)(\d+)(\])(\()beginCaptures1namekeyword.hlcode2namevariable.hlcode3nameoperator.hlcode4namepunctuation.definition.index.begin.hlcode5nameentity.name.function.hlcode6namepunctuation.definition.index.end.hlcode7namepunctuation.definition.params.begin.hlcodeend\)$endCaptures0namepunctuation.definition.params.end.hlcodepatternsmatch\d+namevariable.hlcodematch,nameoperator.hlcodeinclude#invalidmatch(staticclosure) (\d+)(,) +([a-zA-Z_$][\w$]*)$captures1namekeyword.hlcode2namevariable.hlcode3nameoperator.hlcode4nameentity.name.function.hlcodematch(instanceclosure) (\d+)(,) +([a-zA-Z_$][\w$]*)(\()(\d+)(\))$captures1namekeyword.hlcode2namevariable.hlcode3nameoperator.hlcode4nameentity.name.function.hlcode5namepunctuation.definition.params.begin.hlcode6namevariable.hlcode7namepunctuation.definition.params.begin.hlcodematch(virtualclosure) (\d+)(,) *(\d+)(\[)(\d+)(\])$captures1namekeyword.hlcode2namevariable.hlcode3nameoperator.hlcode4namevariable.hlcode5namepunctuation.definition.params.begin.hlcode6nameentity.name.function.hlcode7namepunctuation.definition.params.begin.hlcodematch(global|enumalloc) (\d+) *(,) *(\d+)$captures1namekeyword.hlcode2namevariable.hlcode3nameoperator.hlcode4nameconstant.language.hlcodematch(setglobal) (\d+) *(,) *(\d+)$captures1namekeyword.hlcode2nameconstant.language.hlcode3nameoperator.hlcode4namevariable.hlcodematch(jalways) (-?\d+)$captures1namekeyword.hlcode2nameconstant.language.hlcodematch(j(?:true|false|null|notnull)|trap) (\d+) *(,) *(-?\d+)$captures1namekeyword.hlcode2namevariable.hlcode3nameoperator.hlcode4nameconstant.language.hlcodematch(j(?:s[gl]te?|(?:u|not)(?:lt|gte)|eq|noteq)) (\d+) *(,) *(\d+) *(,) *(-?\d+)$captures1namekeyword.hlcode2namevariable.hlcode3nameoperator.hlcode4namevariable.hlcode5nameoperator.hlcode6nameconstant.language.hlcodematch(get(?:ui8|ui16|mem|array)) (\d+)(,)(\d+)(\[)(\d+)(\])$captures1namekeyword.hlcode2namevariable.hlcode3nameoperator.hlcode4namevariable.hlcode5namepunctuation.definition.index.begin.hlcode6namevariable.hlcode7namepunctuation.definition.index.end.hlcodematch(setarray) (\d+)(\[)(\d+)(\])(,)(\d+)$captures1namekeyword.hlcode2namevariable.hlcode3namepunctuation.definition.index.begin.hlcode4namevariable.hlcode5namepunctuation.definition.index.end.hlcode6nameoperator.hlcode7namevariable.hlcodematch(type) (\d+) *(,) *(.*)$captures1namekeyword.hlcode2namevariable.hlcode3nameoperator.hlcode4patternsinclude#typesinclude#invalidmatch(ref) (\d+) *(,) *(&)(\d+)$captures1namekeyword.hlcode2nameconstant.language.hlcode3nameoperator.hlcode4namekeyword.operator.hlcode5namevariable.hlcodematch(unref) (\d+) *(,) *(\*)(\d+)$captures1namekeyword.hlcode2nameconstant.language.hlcode3nameoperator.hlcode4namekeyword.operator.hlcode5namevariable.hlcodematch(setref) (\*)(\d+) *(,) *(\d+)$captures1namekeyword.hlcode2namekeyword.operator.hlcode3nameconstant.language.hlcode4nameoperator.hlcode5namevariable.hlcodematch(label|assert|nop)$namekeyword.hlcodematch(field) (\d+)(,) *(\d+)(\[)(\d+)(\])$captures1namekeyword.hlcode2namevariable.hlcode3nameoperator.hlcode4namevariable.hlcode5namepunctuation.definition.index.begin.hlcode6nameconstant.language.hlcode7namepunctuation.definition.index.begin.hlcodematch(set(?:enum)?field) (\d+)(\[)(\d+)(\])(,)(\d+)$captures1namekeyword.hlcode2namevariable.hlcode3namepunctuation.definition.index.begin.hlcode4nameconstant.language.hlcode5namepunctuation.definition.index.end.hlcode6nameoperator.hlcode7namevariable.hlcodematch(getthis) (\d+)(,) *(\[)(\d+)(\])$captures1namekeyword.hlcode2namevariable.hlcode3nameoperator.hlcode4namepunctuation.definition.index.begin.hlcode5nameconstant.language.hlcode6namepunctuation.definition.index.begin.hlcodematch(setthis) (\[)(\d+)(\])(,)(\d+)$captures1namekeyword.hlcode2namepunctuation.definition.index.begin.hlcode3nameconstant.language.hlcode4namepunctuation.definition.index.end.hlcode5nameoperator.hlcode6namevariable.hlcodematch(dynget) (\d+)(,) *(\d+)(\[)(@\d+)(\])$captures1namekeyword.hlcode2namevariable.hlcode3nameoperator.hlcode4namevariable.hlcode5namepunctuation.definition.index.begin.hlcode6nameconstant.language.hlcode7namepunctuation.definition.index.begin.hlcodematch(dynset) (\d+)(\[)(@\d+)(\])(,)(\d+)$captures1namekeyword.hlcode2namevariable.hlcode3namepunctuation.definition.index.begin.hlcode4nameconstant.language.hlcode5namepunctuation.definition.index.end.hlcode6nameoperator.hlcode7namevariable.hlcodebegin(makeenum) (\d+)(,) (\d+)(\()beginCaptures1namekeyword.hlcode2namevariable.hlcode3nameoperator.hlcode4nameconstant.language.hlcode5namepunctuation.definition.params.begin.hlcodeend\)$endCaptures0namepunctuation.definition.params.end.hlcodepatternsmatch\d+namevariable.hlcodematch,nameoperator.hlcodeinclude#invalidmatch(enumfield) (\d+)(,) *(\d+)(\[)(\d+)(:)(\d+)(\])$captures1namekeyword.hlcode2namevariable.hlcode3nameoperator.hlcode4namevariable.hlcode5namepunctuation.definition.index.begin.hlcode6nameconstant.language.hlcode7nameoperator.hlcode8nameconstant.language.hlcode9namepunctuation.definition.index.end.hlcodebegin(switch) (\d+) (\[)beginCaptures1namekeyword.hlcode2namevariable.hlcode3namepunctuation.definition.indices.begin.hlcodeend(\]) (\d+)$endCaptures1namepunctuation.definition.indices.end.hlcode2nameconstant.language.hlcodepatternsmatch\d+namevariable.hlcodematch,nameoperator.hlcodeinclude#invalidmatch(endtrap) (true|false)$captures1namekeyword.hlcode2nameconstant.language.hlcodeproto-bodypatternsmatch^\t{2}(extends) (.*)$captures1namekeyword.hlcode2patternsinclude#typesinclude#invalidbegin^\t{2}(\d+) (fields)$beginCaptures1nameconstant.numeric.hlcode2namekeyword.hlcodeend^(?!\t{2} {2})patternsmatch^\t{2} {2}(@\d+) ([a-zA-Z_$][\w$]*) (.*)$captures1nameconstant.language.hlcode2namevariable.hlcode3patternsinclude#typesinclude#invalidinclude#invalidbegin^\t{2}(\d+) (methods)$beginCaptures1nameconstant.numeric.hlcode2namekeyword.hlcodeend^(?!\t{2} {2})patternsmatch^\t{2} {2}(@\d+) ([a-zA-Z_$][\w$]*) (fun)(@\d+)(?:(\[)(\d+)(\]))?$captures1nameconstant.language.hlcode2nameentity.name.function.hlcode3namekeyword.hlcode4namesupport.function.hlcode5namepunctuation.definition.index.begin.hlcode6nameentity.name.function.hlcode7namepunctuation.definition.index.end.hlcodeinclude#invalidbegin^\t{2}(\d+) (bindings)$beginCaptures1nameconstant.numeric.hlcode2namekeyword.hlcodeend^(?!\t{2} {2})patternsmatch^\t{2} {2}(@\d+) (fun)(@\d+)$captures1nameconstant.language.hlcode2namekeyword.hlcode3namesupport.function.hlcodeinclude#invalidinclude#illegal
\ No newline at end of file
+nameHashLink bytecode dump filescopeNamesource.hlcodepatternsmatch^(hl) (v)(\d+)$captures1namekeyword.hlcode2nameconstant.language.hlcode3nameconstant.numeric.hlcodematch^(entry) (@\d+)$captures1namekeyword.hlcode2namesupport.function.hlcodebegin^(\d+) (strings)$beginCaptures1nameconstant.numeric.hlcode2namekeyword.hlcodeend^(?=\d+ bytes)patternsmatch^\t(@\d+) (:) (.*)$captures1nameconstant.language.hlcode2nameoperator.hlcode3namestring.hlcodeinclude#invalidbegin^(\d+) (bytes)$beginCaptures1nameconstant.numeric.hlcode2namekeyword.hlcodeend^(?=\d+ ints)patternsmatch^\t(@\d+) (:) (\d+)$captures1nameconstant.language.hlcode2nameoperator.hlcode3nameconstant.numeric.hlcodeinclude#invalidbegin^(\d+) (ints)$beginCaptures1nameconstant.numeric.hlcode2namekeyword.hlcodeend^(?=\d+ floats)patternsmatch^\t(@\d+) (:) (-?\d+)$captures1nameconstant.language.hlcode2nameoperator.hlcode3nameconstant.numeric.hlcodeinclude#invalidbegin^(\d+) (floats)$beginCaptures1nameconstant.numeric.hlcode2namekeyword.hlcodeend^(?=\d+ globals)patternsmatch^\t(@\d+) (:) (-?(?:\d+\.\d*|\.\d+))$captures1nameconstant.language.hlcode2nameoperator.hlcode3nameconstant.numeric.hlcodeinclude#invalidbegin^(\d+) (globals)$beginCaptures1nameconstant.numeric.hlcode2namekeyword.hlcodeend^(?=\d+ natives)patternsmatch^\t(@\d+) (:) (.*)$captures1nameconstant.language.hlcode2nameoperator.hlcode3patternsinclude#typesinclude#invalidinclude#invalidbegin^(\d+) (natives)$beginCaptures1nameconstant.numeric.hlcode2namekeyword.hlcodeend^(?=\d+ functions)patternsmatch^\t(@\d+) (native) (\??\w+@\w+) (.*)$captures1nameconstant.language.hlcode2namekeyword.hlcode3namesupport.function.hlcode4patternsinclude#typesinclude#invalidinclude#invalidbegin^(\d+) (functions)$beginCaptures1nameconstant.numeric.hlcode2namekeyword.hlcodeend^(?=\d+ objects protos)patternsbegin^\t(fun)(@\d+)(\()(\h+h)(\)) (.*)$beginCaptures1namekeyword.hlcode2namesupport.function.hlcode3namepunctuation.definition.param.begin.hlcode4nameconstant.numeric.hlcode5namepunctuation.definition.param.end.hlcode6patternsinclude#func-typeinclude#invalidend^(?=\tfun@\d+|\d+ objects protos)patternsinclude#line-commentmatch^[ \t]*(r)(\d+) (.*)$captures1namekeyword.hlcode2nameconstant.numeric.hlcode3patternsinclude#typesinclude#invalidmatch^[ \t]+(\.\d+)[ \t]+(@\h+)[ \t]+(.*)$captures1namestring.hlcode2nameconstant.numeric.hlcode3patternsinclude#opcodesinclude#invalidinclude#invalidinclude#invalidbegin^(\d+) (objects protos)$beginCaptures1nameconstant.numeric.hlcode2namekeyword.hlcodeend(?=^\d+ constant values)patternsbegin^\t([a-zA-Z_$][\w$]*(?:\.[a-zA-Z_$][\w$]*)*) (no global)$beginCaptures1patternsinclude#type-name2namekeyword.hlcodeend^(?=\t(?!\t)|\d+ constant values)patternsinclude#proto-bodybegin^\t([a-zA-Z_$][\w$]*(?:\.[a-zA-Z_$][\w$]*)*) (@\d+)$beginCaptures1patternsinclude#type-name2nameconstant.language.hlcodeend^(?=\t(?!\t)|\d+ constant values)patternsinclude#proto-bodyinclude#invalidinclude#invalidbegin^(\d+) (constant values)$beginCaptures1nameconstant.numeric.hlcode2namekeyword.hlcodeend(?=end)neverpatternsbegin^[ \t]+(@\d+) beginCaptures1nameconstant.language.hlcodeend (\[)((?:\d+(?:,\d+)*)?)(\])$endCaptures1namepunctuation.definition.brackets.begin.hlcode2patternsmatch\d+nameconstant.numeric.hlcodematch,nameoperator.hlcodeinclude#invalid3namepunctuation.definition.brackets.end.hlcodepatternsinclude#typesinclude#invalidrepositoryline-commentmatch[ \t]*;.*$namecomment.hlcodeinvalidmatch.nameinvalid.illegal.hlcodetype-namepatternsbegin@?[a-zA-Z_$][\w$]*(?=\.[a-zA-Z_$])beginCaptures0nameentity.name.type.hlcodeend(\.)([a-zA-Z_$][\w$]*)(?!\.)endCaptures1nameoperator.hlcode2nameentity.name.type.hlcodepatternsmatch(\.)([a-zA-Z_$][\w$]*)(?=\.)captures1nameoperator.hlcode2nameentity.name.type.hlcodeinclude#invalidmatch@?[A-Z_$][\w$]*(?![\w$]+[(:.])nameentity.name.type.hlcodefunc-typepatternsbegin\(beginCaptures0namepunctuation.definition.typeparams.begin.hlcodeend(\))(?=:(?:[a-zA-Z_$(]|@?\[))endCaptures0namepunctuation.definition.typeparams.end.hlcodepatternsinclude#typesmatch,nameoperator.hlcodeinclude#invalidbegin(:)(?=[a-zA-Z_$(]|@?\[)beginCaptures1nameoperator.hlcodeend(?=[),]|$)patternsinclude#typesinclude#invalidtypespatternsmatch(?:ui8|ui16|[if](?:32|64)|bool|bytes|string|void|dyn(?:obj)?|type)(?=\b)nameentity.name.type.hlcodebegin(ref|null|array)(\()beginCaptures1nameentity.name.type.hlcode2namepunctuation.definition.typeparams.begin.hlcodeend\)endCaptures0namepunctuation.definition.typeparams.end.hlcodepatternsinclude#typesinclude#invalidmatcharraynameentity.name.type.hlcodematch(abstract)(\()([a-zA-Z_$][\w$]*)(\))captures1nameentity.name.type.hlcode2namepunctuation.definition.typeparams.begin.hlcode3nameentity.name.type.hlcode4namepunctuation.definition.typeparams.end.hlcodebegin(enum)(\()beginCaptures1nameentity.name.type.hlcode2namepunctuation.definition.typeparams.begin.hlcodeend\)endCaptures0namepunctuation.definition.typeparams.end.hlcodepatternsinclude#typesmatch,nameoperator.hlcodeinclude#invalidbegin(method)(:)(\()beginCaptures1nameentity.name.type.hlcode2nameoperator.hlcode3namepunctuation.definition.args.begin.hlcodeend(\))(:)(?=[a-zA-Z_$(]|@?\[)endCaptures1namepunctuation.definition.args.end.hlcode2nameoperator.hlcodepatternsinclude#typesmatch,nameoperator.hlcodeinclude#invalidinclude#func-typebegin(virtual)(\()beginCaptures1nameentity.name.type.hlcode2namepunctuation.definition.args.begin.hlcodeend\)endCaptures0namepunctuation.definition.args.end.hlcodepatternsbegin([a-zA-Z_$][\w$]*)(:)beginCaptures1namevariable.hlcode2nameoperator.hlcodeend(?=[,)])patternsinclude#typesinclude#invalidmatch,nameoperator.hlcodeinclude#invalidmatch\.{3}nameentity.name.type.hlcodeinclude#type-namebegin@?\[beginCaptures0namepunctuation.definition.obj.begin.hlcodeend\]endCaptures0namepunctuation.definition.obj.end.hlcodepatternsbegin>beginCaptures0nameoperator.hlcodeend endCaptures0nametext.hlcodepatternsinclude#type-nameinclude#invalidbegin(fields)(=)(\{)beginCaptures1namekeyword.hlcode2nameoperator.hlcode3namepunctuation.definition.fields.begin.hlcodeend\}endCaptures0namepunctuation.definition.fields.end.hlcodepatternsbegin([a-zA-Z_$][\w$]*)(:)beginCaptures1namevariable.hlcode2namekeyword.operator.hlcodeend(?=[},])patternsinclude#typesinclude#invalidmatch,nameoperator.hlcodeinclude#invalidbegin(proto)(=)(\{)beginCaptures1namekeyword.hlcode2nameoperator.hlcode3namepunctuation.definition.fields.begin.hlcodeend\}endCaptures0namepunctuation.definition.fields.end.hlcodepatternsmatch((?:virtual )?)([a-zA-Z_$][\w$]*)(@\d+)captures1namekeyword.hlcode2nameentity.name.function.hlcode3namesupport.function.hlcodematch,nameoperator.hlcodeinclude#invalidinclude#invalidopcodespatternsmatch(mov|neg|not|to(?:dyn|[su]float|int|virtual)|(?:un)?safecast|arraysize|get(?:type|tid)|enumindex|refdata) (\d+) *(,) *(\d+)$captures1namekeyword.hlcode2namevariable.hlcode3nameoperator.hlcode4namevariable.hlcodematch(int|float|string|bytes) (\d+) *(,) *(@\d+)$captures1namekeyword.hlcode2namevariable.hlcode3nameoperator.hlcode4nameconstant.language.hlcodematch(true|false|null(?:check)?|incr|decr|ret|new|(?:re)?throw) (\d+)$captures1namekeyword.hlcode2namevariable.hlcodematch(add|sub|mul|[su](?:div|mod|shr)|shl|and|x?or|set(?:ui8|ui16|mem)|refoffset) (\d+) *(,) *(\d+) *(,) *(\d+)$captures1namekeyword.hlcode2namevariable.hlcode3nameoperator.hlcode4namevariable.hlcode5nameoperator.hlcode6namevariable.hlcodebegin(call) (\d+)(,) ((?:[a-zA-Z_$][\w$]*\.)*)([a-zA-Z_$][\w$]*)(\()beginCaptures1namekeyword.hlcode2namevariable.hlcode3nameoperator.hlcode4patternsmatch[a-zA-Z_$][\w$]*(?=\.[a-zA-Z_$][\w$]*\()nameentity.name.type.hlcodebegin[a-zA-Z_$][\w$]*(?=\.)beginCaptures0nameentity.name.type.hlcodeend\.(?=[a-zA-Z_$][\w$]*\()endCaptures0nameoperator.hlcodepatternsmatch(\.)([a-zA-Z_$][\w$]*)(?![\w$]*\()captures1nameoperator.hlcode2nameentity.name.type.hlcode5nameentity.name.function.hlcode6namepunctuation.definition.params.begin.hlcodeend\)$endCaptures0namepunctuation.definition.params.end.hlcodepatternsmatch\d+namevariable.hlcodematch,nameoperator.hlcodeinclude#invalidbegin(call) (\d+)(,) (\w+@\w+)(\()beginCaptures1namekeyword.hlcode2namevariable.hlcode3nameoperator.hlcode4namesupport.function.hlcode5namepunctuation.definition.params.begin.hlcodeend\)$endCaptures0namepunctuation.definition.params.end.hlcodepatternsmatch\dnamevariable.hlcodematch,nameoperator.hlcodeinclude#invalidbegin(callmethod) (\d+)(,) (\d+)(\[)(\d+)(\])(\()beginCaptures1namekeyword.hlcode2namevariable.hlcode3nameoperator.hlcode4namevariable.hlcode5namepunctuation.definition.index.begin.hlcode6nameentity.name.function.hlcode7namepunctuation.definition.index.end.hlcode8namepunctuation.definition.params.begin.hlcodeend\)$endCaptures0namepunctuation.definition.params.end.hlcodepatternsmatch\d+namevariable.hlcodematch,nameoperator.hlcodeinclude#invalidbegin(callclosure) (\d+)(,) (\d+)(\()beginCaptures1namekeyword.hlcode2namevariable.hlcode3nameoperator.hlcode4namevariable.hlcode5namepunctuation.definition.params.begin.hlcodeend\)$endCaptures0namepunctuation.definition.params.end.hlcodepatternsmatch\d+namevariable.hlcodematch,nameoperator.hlcodeinclude#invalidbegin(callthis) (\d+)(,) (\[)(\d+)(\])(\()beginCaptures1namekeyword.hlcode2namevariable.hlcode3nameoperator.hlcode4namepunctuation.definition.index.begin.hlcode5nameentity.name.function.hlcode6namepunctuation.definition.index.end.hlcode7namepunctuation.definition.params.begin.hlcodeend\)$endCaptures0namepunctuation.definition.params.end.hlcodepatternsmatch\d+namevariable.hlcodematch,nameoperator.hlcodeinclude#invalidmatch(staticclosure) (\d+)(,) +([a-zA-Z_$][\w$]*)$captures1namekeyword.hlcode2namevariable.hlcode3nameoperator.hlcode4nameentity.name.function.hlcodematch(instanceclosure) (\d+)(,) +([a-zA-Z_$][\w$]*)(\()(\d+)(\))$captures1namekeyword.hlcode2namevariable.hlcode3nameoperator.hlcode4nameentity.name.function.hlcode5namepunctuation.definition.params.begin.hlcode6namevariable.hlcode7namepunctuation.definition.params.begin.hlcodematch(virtualclosure) (\d+)(,) *(\d+)(\[)(\d+)(\])$captures1namekeyword.hlcode2namevariable.hlcode3nameoperator.hlcode4namevariable.hlcode5namepunctuation.definition.params.begin.hlcode6nameentity.name.function.hlcode7namepunctuation.definition.params.begin.hlcodematch(global|enumalloc) (\d+) *(,) *(\d+)$captures1namekeyword.hlcode2namevariable.hlcode3nameoperator.hlcode4nameconstant.language.hlcodematch(setglobal) (\d+) *(,) *(\d+)$captures1namekeyword.hlcode2nameconstant.language.hlcode3nameoperator.hlcode4namevariable.hlcodematch(jalways) (-?\d+)$captures1namekeyword.hlcode2nameconstant.language.hlcodematch(j(?:true|false|null|notnull)|trap) (\d+) *(,) *(-?\d+)$captures1namekeyword.hlcode2namevariable.hlcode3nameoperator.hlcode4nameconstant.language.hlcodematch(j(?:s[gl]te?|(?:u|not)(?:lt|gte)|eq|noteq)) (\d+) *(,) *(\d+) *(,) *(-?\d+)$captures1namekeyword.hlcode2namevariable.hlcode3nameoperator.hlcode4namevariable.hlcode5nameoperator.hlcode6nameconstant.language.hlcodematch(get(?:ui8|ui16|mem|array)) (\d+)(,)(\d+)(\[)(\d+)(\])$captures1namekeyword.hlcode2namevariable.hlcode3nameoperator.hlcode4namevariable.hlcode5namepunctuation.definition.index.begin.hlcode6namevariable.hlcode7namepunctuation.definition.index.end.hlcodematch(setarray) (\d+)(\[)(\d+)(\])(,)(\d+)$captures1namekeyword.hlcode2namevariable.hlcode3namepunctuation.definition.index.begin.hlcode4namevariable.hlcode5namepunctuation.definition.index.end.hlcode6nameoperator.hlcode7namevariable.hlcodematch(type) (\d+) *(,) *(.*)$captures1namekeyword.hlcode2namevariable.hlcode3nameoperator.hlcode4patternsinclude#typesinclude#invalidmatch(ref) (\d+) *(,) *(&)(\d+)$captures1namekeyword.hlcode2nameconstant.language.hlcode3nameoperator.hlcode4namekeyword.operator.hlcode5namevariable.hlcodematch(unref) (\d+) *(,) *(\*)(\d+)$captures1namekeyword.hlcode2nameconstant.language.hlcode3nameoperator.hlcode4namekeyword.operator.hlcode5namevariable.hlcodematch(setref) (\*)(\d+) *(,) *(\d+)$captures1namekeyword.hlcode2namekeyword.operator.hlcode3nameconstant.language.hlcode4nameoperator.hlcode5namevariable.hlcodematch(label|assert|nop)$namekeyword.hlcodematch(field) (\d+)(,) *(\d+)(\[)(\d+)(\])$captures1namekeyword.hlcode2namevariable.hlcode3nameoperator.hlcode4namevariable.hlcode5namepunctuation.definition.index.begin.hlcode6nameconstant.language.hlcode7namepunctuation.definition.index.begin.hlcodematch(set(?:enum)?field) (\d+)(\[)(\d+)(\])(,)(\d+)$captures1namekeyword.hlcode2namevariable.hlcode3namepunctuation.definition.index.begin.hlcode4nameconstant.language.hlcode5namepunctuation.definition.index.end.hlcode6nameoperator.hlcode7namevariable.hlcodematch(getthis) (\d+)(,) *(\[)(\d+)(\])$captures1namekeyword.hlcode2namevariable.hlcode3nameoperator.hlcode4namepunctuation.definition.index.begin.hlcode5nameconstant.language.hlcode6namepunctuation.definition.index.begin.hlcodematch(setthis) (\[)(\d+)(\])(,)(\d+)$captures1namekeyword.hlcode2namepunctuation.definition.index.begin.hlcode3nameconstant.language.hlcode4namepunctuation.definition.index.end.hlcode5nameoperator.hlcode6namevariable.hlcodematch(dynget) (\d+)(,) *(\d+)(\[)(@\d+)(\])$captures1namekeyword.hlcode2namevariable.hlcode3nameoperator.hlcode4namevariable.hlcode5namepunctuation.definition.index.begin.hlcode6nameconstant.language.hlcode7namepunctuation.definition.index.begin.hlcodematch(dynset) (\d+)(\[)(@\d+)(\])(,)(\d+)$captures1namekeyword.hlcode2namevariable.hlcode3namepunctuation.definition.index.begin.hlcode4nameconstant.language.hlcode5namepunctuation.definition.index.end.hlcode6nameoperator.hlcode7namevariable.hlcodebegin(makeenum) (\d+)(,) (\d+)(\()beginCaptures1namekeyword.hlcode2namevariable.hlcode3nameoperator.hlcode4nameconstant.language.hlcode5namepunctuation.definition.params.begin.hlcodeend\)$endCaptures0namepunctuation.definition.params.end.hlcodepatternsmatch\d+namevariable.hlcodematch,nameoperator.hlcodeinclude#invalidmatch(enumfield) (\d+)(,) *(\d+)(\[)(\d+)(:)(\d+)(\])$captures1namekeyword.hlcode2namevariable.hlcode3nameoperator.hlcode4namevariable.hlcode5namepunctuation.definition.index.begin.hlcode6nameconstant.language.hlcode7nameoperator.hlcode8nameconstant.language.hlcode9namepunctuation.definition.index.end.hlcodebegin(switch) (\d+) (\[)beginCaptures1namekeyword.hlcode2namevariable.hlcode3namepunctuation.definition.indices.begin.hlcodeend(\]) (\d+)$endCaptures1namepunctuation.definition.indices.end.hlcode2nameconstant.language.hlcodepatternsmatch\d+namevariable.hlcodematch,nameoperator.hlcodeinclude#invalidmatch(endtrap) (true|false)$captures1namekeyword.hlcode2nameconstant.language.hlcodeproto-bodypatternsmatch^\t{2}(extends) (.*)$captures1namekeyword.hlcode2patternsinclude#typesinclude#invalidbegin^\t{2}(\d+) (fields)$beginCaptures1nameconstant.numeric.hlcode2namekeyword.hlcodeend^(?!\t{2} {2})patternsmatch^\t{2} {2}(@\d+) ([a-zA-Z_$][\w$]*) (.*)$captures1nameconstant.language.hlcode2namevariable.hlcode3patternsinclude#typesinclude#invalidinclude#invalidbegin^\t{2}(\d+) (methods)$beginCaptures1nameconstant.numeric.hlcode2namekeyword.hlcodeend^(?!\t{2} {2})patternsmatch^\t{2} {2}(@\d+) ([a-zA-Z_$][\w$]*) (fun)(@\d+)(?:(\[)(\d+)(\]))?$captures1nameconstant.language.hlcode2nameentity.name.function.hlcode3namekeyword.hlcode4namesupport.function.hlcode5namepunctuation.definition.index.begin.hlcode6nameentity.name.function.hlcode7namepunctuation.definition.index.end.hlcodeinclude#invalidbegin^\t{2}(\d+) (bindings)$beginCaptures1nameconstant.numeric.hlcode2namekeyword.hlcodeend^(?!\t{2} {2})patternsmatch^\t{2} {2}(@\d+) (fun)(@\d+)$captures1nameconstant.language.hlcode2namekeyword.hlcode3namesupport.function.hlcodeinclude#invalidinclude#illegal
\ No newline at end of file