Compare commits

..

No commits in common. "dc771fc7adda661fc0aa7f8896dc59fcfdc39051" and "f33195ab2834f86f95aed67e9c68cfdf6c6e5575" have entirely different histories.

3 changed files with 16 additions and 41 deletions

View File

@ -9,20 +9,17 @@ module.exports = grammar({
), ),
function_definition: $ => seq( function_definition: $ => seq(
'fn', "fn",
$.identifier, $.identifier,
$.parameter_list, $.parameter_list,
field("return_type", optional($._type)), $._type,
$.block, $.block,
), ),
parameter_list: $ => seq("(", /* TODO */ ")"), parameter_list: $ => seq("(", /* TODO */ ")"),
block: $ => seq( block: $ => seq(
"{", "{",
choice(
repeat($._statement), repeat($._statement),
"",
),
"}" "}"
), ),
@ -32,16 +29,9 @@ module.exports = grammar({
_return_statement: $ => seq("return", $._expression, ";"), _return_statement: $ => seq("return", $._expression, ";"),
_expression: $ => choice($.identifier, $.unary, $.binary), _expression: $ => choice($.identifier),
unary: $ => prec(4, choice(seq("-", $._expression), seq("!", $._expression))),
binary: $ => choice(prec.left(2, seq($._expression, "*", $._expression)), prec.left(1, seq($._expression, "+", $._expression))),
_type: $ => "bool", _type: $ => "bool",
_type: $ => choice(
$.primitive_type,
),
primitive_type: $ => choice("bool", "int"),
identifier: $ => /[a-z]+/, identifier: $ => /[a-z]+/,
} }

View File

@ -1,8 +0,0 @@
_default:
just --list
# Test out the grammar
test-grammar:
#!/usr/bin/env bash
tree-sitter generate
tree-sitter test

View File

@ -1,26 +1,19 @@
============= =============
Initial test Initial test
============= =============
fn main() {
} hello
----
(source_file
(function_definition
(identifier)
(parameter_list)
(block)
)
)
====
Another test
====
fn yolo() bool { }
---- ----
(source_file (source_file)
(function_definition
(identifier) (parameter_list) (primitive_type) (block)))
=====
Another
====
fn main() { }
------
()