Clean up intern symbols function
This commit is contained in:
parent
5708a181c2
commit
b97e4f1de8
1 changed files with 6 additions and 13 deletions
|
|
@ -16,26 +16,19 @@ namespace tree_sitter {
|
|||
|
||||
namespace prepare_grammar {
|
||||
class InternSymbols : public rules::IdentityRuleFn {
|
||||
const Grammar grammar;
|
||||
using rules::IdentityRuleFn::apply_to;
|
||||
|
||||
int index_of(string rule_name) {
|
||||
for (size_t i = 0; i < grammar.rules.size(); i++)
|
||||
if (grammar.rules[i].first == rule_name)
|
||||
return i;
|
||||
return -1;
|
||||
}
|
||||
|
||||
rule_ptr apply_to(const rules::NamedSymbol *rule) {
|
||||
int index = index_of(rule->name);
|
||||
if (index == -1)
|
||||
missing_rule_name = rule->name;
|
||||
return make_shared<rules::Symbol>(index);
|
||||
for (size_t i = 0; i < grammar.rules.size(); i++)
|
||||
if (grammar.rules[i].first == rule->name)
|
||||
return make_shared<rules::Symbol>(i);
|
||||
missing_rule_name = rule->name;
|
||||
return rule_ptr();
|
||||
}
|
||||
|
||||
public:
|
||||
explicit InternSymbols(const Grammar &grammar) : grammar(grammar) {}
|
||||
|
||||
const Grammar grammar;
|
||||
string missing_rule_name;
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue