summaryrefslogtreecommitdiffstats
path: root/src/generator.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/generator.cpp')
-rw-r--r--src/generator.cpp15
1 files changed, 5 insertions, 10 deletions
diff --git a/src/generator.cpp b/src/generator.cpp
index 16f08d0..a0f88d8 100644
--- a/src/generator.cpp
+++ b/src/generator.cpp
@@ -36,7 +36,7 @@ std::set<item_t> generator_t::get_set(const std::string &nonterm) {
auto entries = nonterms.equal_range(nonterm);
for (auto entry = entries.first; entry != entries.second; ++entry)
- set.insert(std::get<0>(rules[entry->second]));
+ set.insert(grammar.rules[entry->second].item);
return set;
}
@@ -117,15 +117,10 @@ void generator_t::generate_itemsets() {
}
}
-generator_t::generator_t(const std::vector<std::tuple<item_t, std::vector<std::string>, std::string>> &rules0,
- const std::map<std::string, std::string> &nonterm_types0,
- const std::map<symbol_t, std::pair<std::string, std::string>> &term_types0,
- const std::string &header_block0, const std::string &source_block0,
- const std::vector<std::pair<std::string, std::string>> &extra_args0)
- : rules(rules0), nonterm_types(nonterm_types0), term_types(term_types0),
- header_block(header_block0), source_block(source_block0), extra_args(extra_args0) {
- for (size_t i = 0; i < rules.size(); i++) {
- item_t rule = std::get<0>(rules[i]);
+generator_t::generator_t(const grammar_t &grammar0)
+ : grammar(grammar0) {
+ for (size_t i = 0; i < grammar.rules.size(); i++) {
+ item_t rule = grammar.rules[i].item;
nonterminals.insert(rule.get_lhs());
nonterms.insert(std::make_pair(rule.get_lhs(), i));