Make more things immutable
This commit is contained in:
parent
f7063ba1d8
commit
8a0a442a24
12 changed files with 40 additions and 60 deletions
|
|
@ -1,26 +1,14 @@
|
|||
#include "grammar.h"
|
||||
|
||||
using namespace std;
|
||||
|
||||
namespace tree_sitter {
|
||||
Grammar::Grammar(const rule_map &rules, const std::string &start_rule_name) :
|
||||
Grammar::Grammar(const rule_map_init_list &rules) :
|
||||
rules(rules),
|
||||
start_rule_name(start_rule_name) {};
|
||||
start_rule_name(rules.begin()->first) {}
|
||||
|
||||
std::unordered_map<std::string, rules::rule_ptr> build_rule_map(const initializer_list<string> &rule_names,
|
||||
const initializer_list<rules::rule_ptr> &rule_vals) {
|
||||
std::unordered_map<std::string, rules::rule_ptr> result;
|
||||
auto rule_name_i = rule_names.begin();
|
||||
auto rule_i = rule_vals.begin();
|
||||
while (rule_i != rule_vals.end()) {
|
||||
result[*rule_name_i] = *rule_i;
|
||||
rule_i++;
|
||||
rule_name_i++;
|
||||
}
|
||||
return result;
|
||||
const rules::rule_ptr Grammar::rule(const std::string &name) {
|
||||
auto iter = rules.find(name);
|
||||
return (iter == rules.end()) ?
|
||||
rules::rule_ptr(nullptr) :
|
||||
iter->second;
|
||||
}
|
||||
|
||||
Grammar::Grammar(const initializer_list<string> &names, const initializer_list<rules::rule_ptr> &values) :
|
||||
rules(build_rule_map(names, values)),
|
||||
start_rule_name(*names.begin()) {}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue