; VM language syntax highlighting queries based on actual node types

; Arithmetic and logical commands
(arithmetic_command) @keyword

; Memory access commands
"push" @keyword
"pop" @keyword

; Memory segments
(memory_segment) @type

; Program flow commands
"label" @keyword.control
"goto" @keyword.control
"if-goto" @keyword.control

; Function commands
"function" @keyword.function
"call" @keyword.function
(return_command) @keyword.function

; Numbers (indices, counts)
(index) @constant.numeric
(local_vars_count) @constant.numeric
(args_count) @constant.numeric

; Identifiers
(label_name) @label
(function_name) @function

; Comments
(comment) @comment

; Specific memory segments highlighting
"argument" @type.builtin
"local" @type.builtin
"static" @type.builtin
"constant" @type.builtin
"this" @type.builtin
"that" @type.builtin
"pointer" @type.builtin
"temp" @type.builtin

; Arithmetic operations
"add" @operator
"sub" @operator
"neg" @operator
"eq" @operator
"gt" @operator
"lt" @operator
"and" @operator
"or" @operator
"not" @operator
