From 03b5a87eeb87fb059c9d51696912bfa9c39c5929 Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Tue, 31 Mar 2015 20:25:04 +0200 Subject: generator: generate item sets recursively --- src/generator.hpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'src/generator.hpp') diff --git a/src/generator.hpp b/src/generator.hpp index d9bcaf6..880323b 100644 --- a/src/generator.hpp +++ b/src/generator.hpp @@ -38,12 +38,20 @@ class generator_t { private: std::multimap rules; std::multimap items; + std::map, unsigned> itemsets; void close_set(std::set *set); std::set get_set(const std::string &nonterm); - void print_item(const item_t &item); - void print_set(const std::set &set); + std::pair add_set(const std::set &set) { + auto ret = itemsets.emplace(set, itemsets.size()); + return std::make_pair(ret.second, ret.first->second); + } + + void generate_itemsets(); + + static void print_item(const item_t &item); + static void print_set(const std::set &set); public: generator_t(const std::set &rules0); -- cgit v1.2.3