From e301b05805c2900ac5fea6e473614966b50859df Mon Sep 17 00:00:00 2001 From: Martino Ferrari Date: Mon, 8 Jun 2026 17:38:46 +0200 Subject: [PATCH] Updated to latest grammars --- .gitignore | 1 + extension.toml | 6 +- grammars/marte.wasm | Bin 20573 -> 75425 bytes languages/marte/folds.scm | 10 +++ languages/marte/highlights.scm | 133 +++++++++++++++++++++++++++++---- languages/marte/indents.scm | 33 ++++++++ languages/marte/locals.scm | 28 +++++++ languages/marte/tags.scm | 41 ++++++++++ 8 files changed, 233 insertions(+), 19 deletions(-) create mode 100644 languages/marte/folds.scm create mode 100644 languages/marte/indents.scm create mode 100644 languages/marte/locals.scm create mode 100644 languages/marte/tags.scm diff --git a/.gitignore b/.gitignore index 24657b9..3b31662 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,7 @@ # will have compiled files and executables debug target +grammars # These are backup files generated by rustfmt **/*.rs.bk diff --git a/extension.toml b/extension.toml index d55b7a5..35aef30 100644 --- a/extension.toml +++ b/extension.toml @@ -1,6 +1,6 @@ id = "Marte" name = "MARTe" -version = "0.0.6" +version = "0.0.7" schema_version = 1 description = "MARTe language support for Zed" themes = [] @@ -11,8 +11,8 @@ kind = "Rust" version = "0.2.0" [grammars.marte] -repository = "https://github.com/MARTe-Community/tree-sitter-marte" -rev = "1edbdc955fe6c0cf5bccd33368f0eb03a62d2682" +repository = "https://github.com/Mandarancio/tree-sitter-marte" +rev = "f092e34c05412013534f98f0aa93a09b8ebe4d04" [language_servers.mdt] name = "mdt" diff --git a/grammars/marte.wasm b/grammars/marte.wasm index 84a1f0883a1959f841a38e0bee70ee62d68f1253..493cd0c3445f483fcd211ab882fed6f598fb63af 100755 GIT binary patch literal 75425 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 U&{}2pqIG6fkNRR2DozOg9|)X=1poj5 literal 20573 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 Fe*p57+4uke diff --git a/languages/marte/folds.scm b/languages/marte/folds.scm new file mode 100644 index 0000000..ff95e85 --- /dev/null +++ b/languages/marte/folds.scm @@ -0,0 +1,10 @@ +; ── Fold directive blocks ────────────────────────────────────────── +(if_block) @fold +(else_if_clause) @fold +(else_clause) @fold +(foreach_block) @fold +(template_definition) @fold + +; ── Fold subnodes and array literals ─────────────────────────────── +(subnode) @fold +(array_literal) @fold diff --git a/languages/marte/highlights.scm b/languages/marte/highlights.scm index 6ad7955..42ded80 100644 --- a/languages/marte/highlights.scm +++ b/languages/marte/highlights.scm @@ -1,17 +1,118 @@ -(property) @property -(attribute) @attribute -(marte_common) @keyword -(app) @function -(string_literal) @string -(definition) @constructor -(builtintype) @type.builtin -(number) @number -(comment) @comment -(assign) @operator -(obrace) @punctuation.bracket -(cbrace) @punctuation.bracket -(opar) @punctuation.bracket -(cpar) @punctuation.bracket -(vbar) @operator -(comma) @punctuation.delimiter +; ── Keywords / Directives ────────────────────────────────────────────── +"package" @keyword +"var" @keyword +"let" @keyword +"if" @keyword.conditional +"else" @keyword.conditional +"end" @keyword +"foreach" @keyword.repeat +"in" @keyword +"template" @keyword +"use" @keyword +"as" @keyword +; ── Boolean ───────────────────────────────────────────────────────────── +"true" @boolean +"false" @boolean + +; ── Types ─────────────────────────────────────────────────────────────── +(builtin_type) @type.builtin +(type_bound) @type + +; ── Strings ───────────────────────────────────────────────────────────── +(string_literal) @string + +; ── Numbers ───────────────────────────────────────────────────────────── +(number) @number + +; ── Default identifier capture (overridden by specific rules below) ───── +(identifier) @variable + +; ── Variables ─────────────────────────────────────────────────────────── +(variable_reference) @variable + +; ── Comments ──────────────────────────────────────────────────────────── +(comment) @comment +(docstring) @comment.documentation +(pragma) @comment.note + +; ── Operators ─────────────────────────────────────────────────────────── +"=" @operator +"+" @operator +"-" @operator +"*" @operator +"/" @operator +"%" @operator +"^" @operator +"&" @operator +"|" @operator +"||" @operator +"&&" @operator +".." @operator +"==" @operator +"!=" @operator +"<" @operator +">" @operator +"<=" @operator +">=" @operator +"!" @operator + +; ── Objects ───────────────────────────────────────────────────────────── +(object_definition + name: (identifier) @constructor) +(object_definition + prefix: "$" @constructor) +(object_definition + prefix: "+" @constructor) + +; ── Punctuation ───────────────────────────────────────────────────────── +":" @punctuation.delimiter +"::" @punctuation.delimiter +"," @punctuation.delimiter +"." @punctuation.delimiter +"{" @punctuation.bracket +"}" @punctuation.bracket +"(" @punctuation.bracket +")" @punctuation.bracket +"[" @punctuation.bracket +"]" @punctuation.bracket + +; ── Templates ─────────────────────────────────────────────────────────── +(template_definition + name: (identifier) @function) +(template_use + template: (identifier) @function) +(template_use + instance: (identifier) @variable) + +; ── Signal Shorthand ──────────────────────────────────────────────────── +(signal_shorthand + datasource: (identifier) @namespace) +(signal_shorthand + signal: (identifier) @variable) + +; ── Variables / Constants ─────────────────────────────────────────────── +(var_declaration + name: (identifier) @variable) +(let_declaration + name: (identifier) @constant) + +; ── Package ───────────────────────────────────────────────────────────── +(package_declaration + uri: (package_uri) @namespace) + +; ── Fields ────────────────────────────────────────────────────────────── +(field + name: (identifier) @property) + +; ── Parameters / Arguments ────────────────────────────────────────────── +(parameter + name: (identifier) @variable.parameter) +(argument + name: (identifier) @variable.parameter) + +; ── Type Expressions ──────────────────────────────────────────────────── +(type_expression + (identifier) @type) + +(dynamic_object) @constructor diff --git a/languages/marte/indents.scm b/languages/marte/indents.scm new file mode 100644 index 0000000..25b9ec1 --- /dev/null +++ b/languages/marte/indents.scm @@ -0,0 +1,33 @@ +; ── Indent after opening braces ───────────────────────────────────── +(subnode "{" @indent) @branch +(array_literal "{" @indent) @branch + +; ── Dedent on closing braces ─────────────────────────────────────── +"}" @dedent + +; ── Indent block bodies (if, foreach, template) ──────────────────── +(if_block + "if" @branch + (_) @indent) @branch + +(else_if_clause + "if" @branch + (_) @indent) @branch + +(else_clause + "else" @branch + (_) @indent) @branch + +(foreach_block + "foreach" @branch + (_) @indent) @branch + +(template_definition + "template" @branch + (_) @indent) @branch + +; ── Dedent on end keywords ───────────────────────────────────────── +"end" @dedent + +; ── Dedent on else/else if (close previous block, open new) ──────── +"else" @dedent diff --git a/languages/marte/locals.scm b/languages/marte/locals.scm new file mode 100644 index 0000000..e4af373 --- /dev/null +++ b/languages/marte/locals.scm @@ -0,0 +1,28 @@ +; ── Variable declarations: define the name as a local ────────────── +(var_declaration + name: (identifier) @local.definition) + +; ── Constant declarations ────────────────────────────────────────── +(let_declaration + name: (identifier) @local.definition) + +; ── Foreach loop variable ────────────────────────────────────────── +(foreach_block + value: (identifier) @local.definition) + +; ── Foreach key variable (when present) ──────────────────────────── +(foreach_block + key: (identifier) @local.definition) + +; ── Template parameters ──────────────────────────────────────────── +(parameter + name: (identifier) @local.definition) + +; ── Variable references: point back to definitions ───────────────── +(variable_reference + (identifier) @local.reference) + +; ── Scope blocks for locals ──────────────────────────────────────── +; (file-level variables are global; foreach/template create scopes) +(foreach_block) @local.scope +(template_definition) @local.scope diff --git a/languages/marte/tags.scm b/languages/marte/tags.scm new file mode 100644 index 0000000..3e3d735 --- /dev/null +++ b/languages/marte/tags.scm @@ -0,0 +1,41 @@ +; ── Object definitions (prefixed with + or $) ────────────────────── +(object_definition + prefix: "+" + name: (identifier) @name) @definition.class + +(object_definition + prefix: "$" + name: (identifier) @name) @definition.interface + +; ── Signal shorthand entries ─────────────────────────────────────── +(signal_shorthand + signal: (identifier) @name) @definition.field + +; ── Top-level fields (configuration values) ──────────────────────── +(source_file + (definition + (field + name: (identifier) @name))) @definition.property + +; ── Variable declarations ────────────────────────────────────────── +(var_declaration + name: (identifier) @name) @definition.variable + +; ── Constants ────────────────────────────────────────────────────── +(let_declaration + name: (identifier) @name) @definition.constant + +; ── Template definitions ─────────────────────────────────────────── +(template_definition + name: (identifier) @name) @definition.function + +; ── Template instantiations ──────────────────────────────────────── +(template_use + instance: (identifier) @name) @definition.variable + +; ── Package declaration ──────────────────────────────────────────── +(package_declaration + uri: (package_uri) @name) @definition.module + +; ── Docstrings attach to next definition ─────────────────────────── +(docstring) @documentation