Give rules::Visitor a virtual destructor

This commit is contained in:
Max Brunsfeld 2014-04-27 23:19:11 -07:00
parent 4dd1f9fbce
commit 6ea4e6b2b0
4 changed files with 13 additions and 10 deletions

View file

@ -2,38 +2,38 @@
namespace tree_sitter_examples {
using namespace tree_sitter::rules;
rule_ptr comma_sep1(rule_ptr element) {
return seq({ element, repeat(seq({ str(","), element })) });
}
rule_ptr comma_sep(rule_ptr element) {
return choice({ comma_sep1(element), blank() });
}
rule_ptr optional(rule_ptr rule) {
return choice({ rule, blank() });
}
rule_ptr in_parens(rule_ptr rule) {
return seq({ str("("), rule, str(")") });
}
rule_ptr in_braces(rule_ptr rule) {
return seq({ str("{"), rule, str("}") });
}
rule_ptr in_brackets(rule_ptr rule) {
return seq({ str("["), rule, str("]") });
}
rule_ptr infix(int precedence, std::string op) {
return prec(precedence, seq({
sym("expression"),
str(op),
sym("expression") }));
}
rule_ptr prefix(int precedence, std::string op) {
return prec(precedence, seq({
str(op),

View file

@ -5,7 +5,7 @@
namespace tree_sitter_examples {
using namespace tree_sitter::rules;
rule_ptr comma_sep1(rule_ptr element);
rule_ptr comma_sep(rule_ptr element);
rule_ptr optional(rule_ptr rule);

View file

@ -12,8 +12,10 @@
namespace tree_sitter {
using std::vector;
namespace rules {
Visitor::~Visitor() {}
rule_ptr IdentityRuleFn::default_apply(const Rule *rule) {
return rule->copy();
}

View file

@ -28,6 +28,7 @@ namespace tree_sitter {
virtual void visit(const String *rule) = 0;
virtual void visit(const Symbol *rule) = 0;
virtual void visit(const ISymbol *rule) = 0;
virtual ~Visitor();
};
template<typename T>