diff options
author | Matthias Schiffer <mschiffer@universe-factory.net> | 2015-04-09 04:46:39 +0200 |
---|---|---|
committer | Matthias Schiffer <mschiffer@universe-factory.net> | 2015-04-09 04:46:39 +0200 |
commit | 7a65ee0c61b04b09f10655f03be2fc082c8d5b2b (patch) | |
tree | bb8448b9dee4220fd4e864a789ee4748d191593f /src/generator.cpp | |
parent | ffe1e7bb96ffdedb8b3a3154b4fde65050c12bef (diff) | |
download | solar-7a65ee0c61b04b09f10655f03be2fc082c8d5b2b.tar solar-7a65ee0c61b04b09f10655f03be2fc082c8d5b2b.zip |
Introduce rule_t and grammar_t
Diffstat (limited to 'src/generator.cpp')
-rw-r--r-- | src/generator.cpp | 15 |
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)); |