2013-11-10 14:24:25 -08:00
|
|
|
#include "grammar.h"
|
|
|
|
|
|
2013-12-15 14:41:51 -08:00
|
|
|
using namespace std;
|
|
|
|
|
|
2013-11-10 14:24:25 -08:00
|
|
|
namespace tree_sitter {
|
2013-11-13 20:22:06 -08:00
|
|
|
Grammar::Grammar(const rule_map_init_list &rules) :
|
2013-11-10 14:24:25 -08:00
|
|
|
rules(rules),
|
2013-11-13 20:22:06 -08:00
|
|
|
start_rule_name(rules.begin()->first) {}
|
2013-11-12 18:37:02 -08:00
|
|
|
|
2013-11-20 19:00:20 -08:00
|
|
|
const rules::rule_ptr Grammar::rule(const std::string &name) const {
|
2013-11-13 20:22:06 -08:00
|
|
|
auto iter = rules.find(name);
|
|
|
|
|
return (iter == rules.end()) ?
|
|
|
|
|
rules::rule_ptr(nullptr) :
|
|
|
|
|
iter->second;
|
2013-11-10 14:24:25 -08:00
|
|
|
}
|
2013-12-15 14:41:51 -08:00
|
|
|
|
|
|
|
|
vector<string> Grammar::rule_names() const {
|
|
|
|
|
vector<string> result;
|
|
|
|
|
for (auto pair : rules) {
|
|
|
|
|
result.push_back(pair.first);
|
|
|
|
|
}
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
|
2013-11-10 14:24:25 -08:00
|
|
|
}
|