@ -1,3 +1,28 @@
; 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
[
"="
"^^"
@ -28,6 +53,18 @@
"&"
"->"
"*"
"-="
"+="
"*="
"/="
"%="
"|="
"&="
"^="
">>="
"<<="
"--"
"++"
] @operator
[
@ -42,35 +79,63 @@
[
","
"."
";"
] @punctuation . delimiter
; Constants
; Strings and others literal types
( access_class ) @constant . builtin
[
( access_class )
( address )
( bitmask )
( file_handle )
( frequency )
( time )
] @constant . builtin
( integer )
( hll_number_literal )
] @constant . numeric. integer
[
( float )
( frequency )
( percentage )
( time )
] @constant . numeric . float
( integer ) @constant . numeric . integer
( character ) @constant . character
[
( string )
( hll_string_literal )
] @string
; Strings
( string ) @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
@ -83,11 +148,13 @@
( # 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
@ -97,15 +164,17 @@
label: ( identifier ) @function
( block ) )
; Parameter declarations
( parameter_declaration
command: ( identifier ) @keyword
( identifier ) ? @constant . builtin
macro: ( macro ) @variable . parameter )
; Variables, constants and labels
( macro ) @variable
( internal_c_variable) @variable
( macro ) @variable . builtin
( trace32_hll_variable) @variable . builtin
(
( command_expression
@ -116,17 +185,28 @@
( 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 )
( 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 )
@ -138,8 +218,10 @@
( repeat_block
command: ( identifier ) @keyword . control . loop )
( call_expression
function: ( identifier ) @function )
( type_identifier ) @type
; HLL variables
( identifier ) @variable
( hll_field_identifier ) @variable . other . member
( comment ) @comment