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:
+30
@@ -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),
|
||||
|
||||
Reference in New Issue
Block a user