Meetup 16: Tree sitter for Reason and OCaml
· One min read
@Korven led the session explaining Tree sitter, how to write a grammar, debug tree-sitter-ocaml issies on helix. We even explored extending the Reason tree sitter grammar with a class definition. Here's the WIP snippet.
diff --git a/grammar.js b/grammar.js
index 9f587a4..7bc6748 100644
--- a/grammar.js
+++ b/grammar.js
@@ -56,6 +56,7 @@ module.exports = grammar(require("./embedded/ocaml"), {
$.expression_statement,
$.open_statement,
$.module_definition,
+ $.class_definition,
$.mutable_record_update,
),
@@ -71,6 +72,22 @@ module.exports = grammar(require("./embedded/ocaml"), {
$._semicolon,
),
+ class_definition: ($) =>
+ seq(
+ "class",
+ // TODO optional($._attribute),
+ $.class_binding,
+ $._semicolon,
+ ),
+
+ class_binding: ($) =>
+ seq(
+ field("name", choice($._class_name, alias("_", $.class_name))),
+ // optional($._module_typed),
+ seq("=", field("body", $._module_expression)),
+ // repeat($.item_attribute),
+ ),
+
module_binding: ($) =>
seq(
field("name", choice($._module_name, alias("_", $.module_name))),
Next Meetup
Checkout Upcoming Meetups
Stay in touch with us
Twitter: https://x.com/ReasonBangalore