Change repeat to mean zero-or-more

This commit is contained in:
Max Brunsfeld 2014-02-15 15:43:32 -08:00
parent bf07522026
commit 5c1a0982df
12 changed files with 219 additions and 155 deletions

View file

@ -32,15 +32,9 @@ namespace tree_sitter {
value = set_union(apply(rule->left, grammar), apply(rule->right, grammar));
}
bool can_be_blank(const rule_ptr &rule) {
if (rule_can_be_blank(rule)) return true;
auto symbol = std::dynamic_pointer_cast<const Symbol>(rule);
return (symbol.get() && grammar.has_definition(*symbol) && rule_can_be_blank(grammar.rule(*symbol)));
}
void visit(const Seq *rule) {
value = apply(rule->left, grammar);
if (can_be_blank(rule->left)) {
if (rule_can_be_blank(rule->left, grammar)) {
value = set_union(value, apply(rule->right, grammar));
}
}