mirror of
https://github.com/tree-sitter/tree-sitter.git
synced 2026-09-10 07:36:22 -04:00
46 lines
978 B
C++
46 lines
978 B
C++
#include "tree_sitter/compiler.h"
|
|
#include "helpers.h"
|
|
|
|
namespace tree_sitter_examples {
|
|
|
|
extern const Grammar arithmetic{{
|
|
{ "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("#.*") },
|
|
}, {
|
|
sym("comment"),
|
|
pattern("\\s"),
|
|
}, {}};
|
|
|
|
} // namespace tree_sitter_examples
|