; Includes (import_statement "import" @include) (import_with_statement "import" @include "with" @include) ; Namespaces (module_declaration (identifier) @namespace) ; Builtins (primitive_type) @type.builtin ((member_expression object: (identifier) @type.builtin) (#eq? @type.builtin "sys")) ; Functions (call_expression function: (identifier) @function.call) ; Properties (object_property (identifier) @property ":" @punctuation.delimiter (_)) (object_property (compatible_identifier) @property ":" @punctuation.delimiter (_)) (property_identifier) @property ; Attributes (decorator "@" @attribute) (decorator (call_expression (identifier) @attribute)) (decorator (call_expression (member_expression object: (identifier) @attribute property: (property_identifier) @attribute))) ; Types (type_declaration (identifier) @type) (type_declaration (identifier) "=" (identifier) @type) (type_declaration (identifier) "=" (array_type (identifier) @type)) (type (identifier) @type) (resource_declaration (identifier) @type) (resource_expression (identifier) @type) ; Parameters (parameter_declaration (identifier) @parameter (_)) (call_expression function: (_) (arguments (identifier) @parameter)) (call_expression function: (_) (arguments (member_expression object: (identifier) @parameter))) ; Variables (variable_declaration (identifier) @variable (_)) (metadata_declaration (identifier) @variable (_)) (output_declaration (identifier) @variable (_)) (object_property (_) ":" (identifier) @variable) (for_statement "for" (for_loop_parameters (loop_variable) @variable (loop_enumerator) @variable)) ; Conditionals "if" @conditional (ternary_expression "?" @conditional.ternary ":" @conditional.ternary) ; Loops (for_statement "for" @repeat "in" ":" @punctuation.delimiter) ; Keywords [ "module" "metadata" "output" "param" "resource" "existing" "targetScope" "type" "var" ] @keyword ; Operators [ "+" "-" "*" "/" "%" "||" "&&" "|" "==" "!=" "=~" "!~" ">" ">=" "<=" "<" "??" "=" "!" ] @operator [ "in" ] @keyword.operator ; Literals (string) @string (import_string "'" @string (import_name) @namespace "@" @symbol (import_version) @string.special) (escape_sequence) @string.escape (number) @number (boolean) @boolean (null) @constant.builtin ; Misc (compatible_identifier "?" @punctuation.special) (nullable_return_type) @punctuation.special ["{" "}"] @punctuation.bracket ["[" "]"] @punctuation.bracket ["(" ")"] @punctuation.bracket [ "." "::" "=>" ] @punctuation.delimiter ; Interpolation (interpolation) @none (interpolation "${" @punctuation.special "}" @punctuation.special) (interpolation (identifier) @variable) ; Comments [ (comment) (diagnostic_comment) ] @comment @spell