#include "compiler/syntax_grammar.h" #include #include #include #include "compiler/rules/symbol.h" namespace tree_sitter { using std::string; using std::pair; using std::vector; using std::set; SyntaxGrammar::SyntaxGrammar() {} SyntaxGrammar::SyntaxGrammar(const vector> &rules, const vector> &aux_rules) : rules(rules), aux_rules(aux_rules) {} SyntaxGrammar::SyntaxGrammar(const vector> &rules, const vector> &aux_rules, const set &ubiquitous_tokens) : rules(rules), aux_rules(aux_rules), ubiquitous_tokens(ubiquitous_tokens) {} const rules::rule_ptr &SyntaxGrammar::rule(const rules::Symbol &symbol) const { return symbol.is_auxiliary() ? aux_rules[symbol.index].second : rules[symbol.index].second; } const string &SyntaxGrammar::rule_name(const rules::Symbol &symbol) const { return symbol.is_auxiliary() ? aux_rules[symbol.index].first : rules[symbol.index].first; } } // namespace tree_sitter