diff options
author | Matthias Schiffer <mschiffer@universe-factory.net> | 2015-04-09 19:14:14 +0200 |
---|---|---|
committer | Matthias Schiffer <mschiffer@universe-factory.net> | 2015-04-09 19:14:14 +0200 |
commit | 35c02202fd782b32feef350a012cd3b55d5b6b12 (patch) | |
tree | c285d3454c69605c735539f7eeae58902de7af09 /src/generator_lr0.hpp | |
parent | 5887ec38e1ff7f23c50140ccbb12debcab281abd (diff) | |
download | solar-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.hpp | 15 |
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(); + } }; } |