diff options
author | Matthias Schiffer <mschiffer@universe-factory.net> | 2015-04-10 03:18:56 +0200 |
---|---|---|
committer | Matthias Schiffer <mschiffer@universe-factory.net> | 2015-04-10 03:22:57 +0200 |
commit | 7a14a8ec2fd45a496bcaa15c13a7904ba09c4c95 (patch) | |
tree | ddf18d1df1a1b90e101aeb6eac999bd5efb3bfa7 /src/output.hpp | |
parent | 8feccee75dadbf970b2fb402a8c624ed9b25f041 (diff) | |
download | solar-7a14a8ec2fd45a496bcaa15c13a7904ba09c4c95.tar solar-7a14a8ec2fd45a496bcaa15c13a7904ba09c4c95.zip |
Split output_lr0_t out of output_t
Diffstat (limited to 'src/output.hpp')
-rw-r--r-- | src/output.hpp | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/src/output.hpp b/src/output.hpp index 0bff7d3..8c457dd 100644 --- a/src/output.hpp +++ b/src/output.hpp @@ -26,7 +26,7 @@ #pragma once -#include "generator_lr0.hpp" +#include "generator_slr.hpp" #include <cstdio> @@ -34,13 +34,11 @@ namespace solar { class output_t { -private: +protected: std::string prefix_str; std::string token_prefix_str; unsigned stack_size; - const generator_lr0_t *generator; - std::string header_filename; std::FILE *header_file; @@ -65,16 +63,19 @@ private: void emit_reduction(unsigned rule_id); void emit_reductions(); - void emit_state_shift(unsigned i); - void emit_state_reduce(const item_t &item, int rule_id); - void emit_state(unsigned i); void emit_states(); void emit_header_include(); void emit_source(); + void initialize(); + + virtual const generator_t * get_generator() = 0; + virtual void emit_state(unsigned i) = 0; + + output_t(const char *header, const char *source); + public: - output_t(const generator_lr0_t *generator0, const char *header, const char *source); - ~output_t(); + virtual ~output_t(); void write(); }; |