From 5a51036bc1e0b5b0bffa599dd2caf171d6924546 Mon Sep 17 00:00:00 2001
From: Christoph Sax <xasc@users.noreply.github.com>
Date: Fri, 4 Aug 2023 16:20:12 +0200
Subject: [PATCH] Update t32 language queries to version 2.2.1 (#7811)

Version 2.2.1 of the grammar adds extended support for HLL (C, C++,..)
expressions. Quite a few node types were added, renamed or removed in
the process.

This change brings the highlight queries in sync with the ones found in
the repository of the grammar. The highlighting tests "look" okay after
updating the queries.

Recently, Codeberg had some reliability issues. That is why the language
is now using the mirror repository on GitLab as source instead.

Co-authored-by: Christoph Sax <christoph.sax@mailbox.org>
---
 languages.toml                     |   2 +-
 runtime/queries/t32/highlights.scm | 134 +++++++++++++++++++++++------
 2 files changed, 109 insertions(+), 27 deletions(-)

diff --git a/languages.toml b/languages.toml
index c51d6506..a58e5b5f 100644
--- a/languages.toml
+++ b/languages.toml
@@ -2691,7 +2691,7 @@ indent = { tab-width = 2, unit = "  " }
 
 [[grammar]]
 name = "t32"
-source = { git = "https://codeberg.org/xasc/tree-sitter-t32", rev = "1dd98248b01e4a3933c1b85b58bab0875e2ba437" }
+source = { git = "https://gitlab.com/xasc/tree-sitter-t32", rev = "6da5e3cbabd376b566d04282005e52ffe67ef74a" }
 
 [[language]]
 name = "webc"
diff --git a/runtime/queries/t32/highlights.scm b/runtime/queries/t32/highlights.scm
index c3bba814..8a29cee2 100644
--- a/runtime/queries/t32/highlights.scm
+++ b/runtime/queries/t32/highlights.scm
@@ -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,49 +53,89 @@
   "&"
   "->"
   "*"
+  "-="
+  "+="
+  "*="
+  "/="
+  "%="
+  "|="
+  "&="
+  "^="
+  ">>="
+  "<<="
+  "--"
+  "++"
 ] @operator
 
 [
- "("
- ")"
- "{"
- "}"
- "["
- "]"
+  "("
+  ")"
+  "{"
+  "}"
+  "["
+  "]"
 ] @punctuation.bracket
 
 [
   ","
   "."
-  ";"
 ] @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
+[
+  (string)
+  (hll_string_literal)
+] @string
 
-(character) @constant.character
-
-; 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.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