about summary refs log tree commit diff stats
path: root/tree-sitter/dsk/test-build/grammar.js
diff options
context:
space:
mode:
Diffstat (limited to 'tree-sitter/dsk/test-build/grammar.js')
-rw-r--r--tree-sitter/dsk/test-build/grammar.js48
1 files changed, 48 insertions, 0 deletions
diff --git a/tree-sitter/dsk/test-build/grammar.js b/tree-sitter/dsk/test-build/grammar.js
new file mode 100644
index 0000000..697a76d
--- /dev/null
+++ b/tree-sitter/dsk/test-build/grammar.js
@@ -0,0 +1,48 @@
+/**
+ * Simple test grammar for build system verification
+ */
+
+module.exports = grammar({
+  name: 'test_lang',
+
+  word: $ => $.identifier,
+
+  rules: {
+    // Root rule
+    source_file: $ => repeat(choice($.statement, $.expression)),
+
+    // Basic tokens
+    identifier: $ => /[a-zA-Z_][a-zA-Z0-9_]*/,
+    number: $ => /\d+/,
+    string: $ => /"[^"]*"/,
+
+    // Expressions
+    expression: $ => choice(
+      $.identifier,
+      $.number,
+      $.string
+    ),
+
+    // Statements
+    statement: $ => choice(
+      $.variable_declaration
+    ),
+
+    // Variable declaration
+    variable_declaration: $ => seq(
+      'let',
+      $.identifier,
+      '=',
+      $.expression,
+      ';'
+    ),
+
+    // Comments
+    line_comment: $ => seq('//', /[^\n]*/)
+  },
+
+  extras: $ => [
+    /\s/,
+    $.line_comment
+  ]
+});