; Operators in command and conditional HLL expressions (hll_comma_expression "," @operator) (hll_conditional_expression [ "?" ":" ] @operator) ; Keywords, punctuation and operators [ "enum" "struct" "union" ] @keyword.storage.type "sizeof" @keyword.operator [ "const" "volatile" ] @keyword.storage.modifier [ "=" "^^" "||" "&&" "+" "-" "*" "/" "%" "|" "^" "==" "!=" ">" ">=" "<=" "<" "<<" ">>" ".." "--" "++" "+" "-" "~" "!" "&" "->" "*" "-=" "+=" "*=" "/=" "%=" "|=" "&=" "^=" ">>=" "<<=" "--" "++" ] @operator [ "(" ")" "{" "}" "[" "]" ] @punctuation.bracket [ "," "." ] @punctuation.delimiter ; Strings and others literal types (access_class) @constant.builtin [ (address) (bitmask) (file_handle) (integer) (hll_number_literal) ] @constant.numeric.integer [ (float) (frequency) (percentage) (time) ] @constant.numeric.float [ (string) (hll_string_literal) ] @string (hll_escape_sequence) @constant.character.escape (path) @string.special.path (symbol) @string.special.symbol [ (character) (hll_char_literal) ] @constant.character ; Types in HLL expressions [ (hll_type_identifier) (hll_type_descriptor) ] @type (hll_type_qualifier) @keyword.storage.modifier (hll_primitive_type) @type.builtin ; HLL call expressions (hll_call_expression function: (hll_field_expression field: (hll_field_identifier) @function)) (hll_call_expression function: (identifier) @function) ; Returns ( (command_expression command: (identifier) @keyword.return) (#match? @keyword.return "^[eE][nN][dD]([dD][oO])?$") ) ( (command_expression command: (identifier) @keyword.return) (#match? @keyword.return "^[rR][eE][tT][uU][rR][nN]$") ) ; Subroutine calls (subroutine_call_expression command: (identifier) @keyword subroutine: (identifier) @function) ; Subroutine blocks (subroutine_block command: (identifier) @keyword subroutine: (identifier) @function) (labeled_expression label: (identifier) @function (block)) ; Parameter declarations (parameter_declaration command: (identifier) @keyword (identifier)? @constant.builtin macro: (macro) @variable.parameter) ; Variables, constants and labels (macro) @variable.builtin (trace32_hll_variable) @variable.builtin ( (command_expression command: (identifier) @keyword arguments: (argument_list . (identifier) @label)) (#match? @keyword "^[gG][oO][tT][oO]$") ) (labeled_expression label: (identifier) @label) (option_expression (identifier) @constant.builtin) (format_expression (identifier) @constant.builtin) ( (argument_list (identifier) @constant.builtin) (#match? @constant.builtin "^[%/][a-zA-Z][a-zA-Z0-9.]*$") ) (argument_list (identifier) @constant.builtin) ; Commands (command_expression command: (identifier) @keyword) (macro_definition command: (identifier) @keyword) (call_expression function: (identifier) @function.builtin) ; Control flow (if_block command: (identifier) @keyword.control.conditional.if) (else_block command: (identifier) @keyword.control.control.else) (while_block command: (identifier) @keyword.control.repeat.while) (repeat_block command: (identifier) @keyword.control.loop) ; HLL variables (identifier) @variable (hll_field_identifier) @variable.other.member (comment) @comment