feat: add TYPE/STRUCT and DATA_BLOCK support to tree-sitter grammar

- Add type_definition rule for UDT files (TYPE/STRUCT/END_STRUCT/END_TYPE)
- Add data_block rule for DB files (DATA_BLOCK/BEGIN/END_DATA_BLOCK)
- Add NON_RETAIN and RETAIN modifiers support in data blocks
- Keywords now highlighted correctly in .udt and .db files
This commit is contained in:
2026-02-20 23:42:28 +01:00
parent 553192e7a1
commit 7b25cf6202
4 changed files with 62784 additions and 53370 deletions
+30
View File
@@ -28,10 +28,40 @@ module.exports = grammar({
$.organization_block,
$.function_block,
$.function,
$.type_definition,
$.data_block,
$.statement
)
),
type_definition: $ => seq(
alias('TYPE', $.keyword),
field('name', choice($.string, $.identifier)),
optional(seq(alias('TITLE', $.keyword), '=', choice($.string, $.identifier))),
optional($.attribute_list),
optional(seq(alias('VERSION', $.keyword), ':', $.number)),
alias('STRUCT', $.keyword),
repeat(choice($.var_item, $.block_comment)),
alias('END_STRUCT', $.keyword),
alias('END_TYPE', $.keyword)
),
data_block: $ => seq(
alias('DATA_BLOCK', $.keyword),
field('name', choice($.string, $.identifier)),
optional(seq(alias('TITLE', $.keyword), '=', choice($.string, $.identifier))),
optional($.attribute_list),
optional(seq(alias('VERSION', $.keyword), ':', $.number)),
optional(choice(
alias('NON_RETAIN', $.keyword),
alias('RETAIN', $.keyword)
)),
optional($.var_declaration),
alias('BEGIN', $.keyword),
repeat($.statement),
alias('END_DATA_BLOCK', $.keyword)
),
organization_block: $ => seq(
alias('ORGANIZATION_BLOCK', $.keyword),
field('name', $.string),