From 7a14a8ec2fd45a496bcaa15c13a7904ba09c4c95 Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Fri, 10 Apr 2015 03:18:56 +0200 Subject: Split output_lr0_t out of output_t --- src/output.hpp | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) (limited to 'src/output.hpp') 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 @@ -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(); }; -- cgit v1.2.3