summaryrefslogtreecommitdiffstats
path: root/src/generator_lr0.hpp
diff options
context:
space:
mode:
authorMatthias Schiffer <mschiffer@universe-factory.net>2015-04-09 19:14:14 +0200
committerMatthias Schiffer <mschiffer@universe-factory.net>2015-04-09 19:14:14 +0200
commit35c02202fd782b32feef350a012cd3b55d5b6b12 (patch)
treec285d3454c69605c735539f7eeae58902de7af09 /src/generator_lr0.hpp
parent5887ec38e1ff7f23c50140ccbb12debcab281abd (diff)
downloadsolar-35c02202fd782b32feef350a012cd3b55d5b6b12.tar
solar-35c02202fd782b32feef350a012cd3b55d5b6b12.zip
generator: move LR(0)-specific code to generator_lr0_t
Diffstat (limited to 'src/generator_lr0.hpp')
-rw-r--r--src/generator_lr0.hpp15
1 files changed, 14 insertions, 1 deletions
diff --git a/src/generator_lr0.hpp b/src/generator_lr0.hpp
index c434ed6..063a518 100644
--- a/src/generator_lr0.hpp
+++ b/src/generator_lr0.hpp
@@ -32,8 +32,21 @@
namespace solar {
class generator_lr0_t : public generator_t {
+private:
+ std::map<size_t, size_t> reductions;
+
+protected:
+ virtual bool has_reduce_conflict(size_t from, const symbol_t &sym);
+ virtual void add_reduction(size_t from, size_t to);
+
public:
- generator_lr0_t(const grammar_t &grammar) : generator_t(grammar) {}
+ const std::map<size_t, size_t> & get_reductions() const {
+ return reductions;
+ }
+
+ generator_lr0_t(const grammar_t &grammar) : generator_t(grammar) {
+ generate();
+ }
};
}