tree-sitter/spec/fixtures/grammars/arithmetic.cc
2015-12-18 13:46:10 -08:00

45 lines
997 B
C++

#include "tree_sitter/compiler.h"
#include "helpers.h"
namespace tree_sitter_examples {
extern const Grammar arithmetic = Grammar({
{ "program", sym("_expression") },
{ "_expression", choice({
sym("sum"),
sym("difference"),
sym("product"),
sym("quotient"),
sym("exponent"),
sym("group"),
sym("number"),
sym("variable") }) },
{ "sum", infix_op("+", "_expression", 1) },
{ "difference", infix_op("-", "_expression", 1) },
{ "product", infix_op("*", "_expression", 2) },
{ "quotient", infix_op("/", "_expression", 2) },
{ "exponent", infix_op("^", "_expression", 3) },
{ "group", in_parens(err(sym("_expression"))) },
{ "number", pattern("\\d+") },
{ "variable", token(seq({
pattern("[a-zA-Z\u03B1-\u03C9]"),
repeat(choice({
pattern("[a-zA-Z\u03B1-\u03C9]"),
pattern("[0-9]") })) })) },
{ "comment", pattern("#.*") },
}).extra_tokens({
sym("comment"),
pattern("\\s"),
});
} // namespace tree_sitter_examples