diff --git a/include/xo/reader/exprstate.hpp b/include/xo/reader/exprstate.hpp index fa0b466f..ced48160 100644 --- a/include/xo/reader/exprstate.hpp +++ b/include/xo/reader/exprstate.hpp @@ -56,34 +56,23 @@ namespace xo { public: exprstate() = default; - exprstate(exprstatetype exs_type, - rp candidate_expr) - : exs_type_{exs_type}, - gen_expr_{std::move(candidate_expr)} {} + exprstate(exprstatetype exs_type) + : exs_type_{exs_type} + {} virtual ~exprstate() = default; static std::unique_ptr expect_toplevel_expression_sequence() { - return std::make_unique(exprstate(exprstatetype::expect_toplevel_expression_sequence, nullptr)); + return std::make_unique(exprstate(exprstatetype::expect_toplevel_expression_sequence)); } static std::unique_ptr expect_rhs_expression() { - return std::make_unique(exprstate(exprstatetype::expect_rhs_expression, nullptr)); + return std::make_unique(exprstate(exprstatetype::expect_rhs_expression)); } static std::unique_ptr expect_symbol() { - return std::make_unique(exprstate(exprstatetype::expect_symbol, nullptr)); + return std::make_unique(exprstate(exprstatetype::expect_symbol)); } static std::unique_ptr expect_type() { - return std::make_unique(exprstate(exprstatetype::expect_type, nullptr)); + return std::make_unique(exprstate(exprstatetype::expect_type)); } -#ifdef RELOCATED - static std::unique_ptr make_expr_progress(rp expr) { - return std::make_unique(exprstate(exprstatetype::expr_progress, expr)); - } -#endif -#ifdef RELOCATED - static std::unique_ptr lparen_0() { - return std::make_unique(exprstate(exprstatetype::lparen_0, nullptr)); - } -#endif exprstatetype exs_type() const { return exs_type_; } @@ -144,10 +133,8 @@ namespace xo { rp * p_emit_expr); protected: + /** explicit subtype: identifies derived class **/ exprstatetype exs_type_; - - /** generic expression **/ - rp gen_expr_; }; /*exprstate*/ inline std::ostream & diff --git a/include/xo/reader/paren_xs.hpp b/include/xo/reader/paren_xs.hpp index a6a8eb3e..91d4a633 100644 --- a/include/xo/reader/paren_xs.hpp +++ b/include/xo/reader/paren_xs.hpp @@ -78,6 +78,8 @@ namespace xo { * lparen_0 **/ parenexprstatetype parenxs_type_; + /** populate expression (representing parenthesized value) here **/ + rp gen_expr_; }; } /*namespace scm*/ } /*namespace xo*/ diff --git a/include/xo/reader/progress_xs.hpp b/include/xo/reader/progress_xs.hpp index 5b2ce28f..62fba624 100644 --- a/include/xo/reader/progress_xs.hpp +++ b/include/xo/reader/progress_xs.hpp @@ -58,10 +58,8 @@ namespace xo { virtual void print(std::ostream & os) const override; private: -#ifdef NOT_YET /** populate an expression here **/ rp gen_expr_; -#endif }; } /*namespace scm*/ } /*namespace xo*/ diff --git a/src/reader/define_xs.cpp b/src/reader/define_xs.cpp index d1f93984..5ecb82f5 100644 --- a/src/reader/define_xs.cpp +++ b/src/reader/define_xs.cpp @@ -10,8 +10,7 @@ namespace xo { } define_xs::define_xs(rp def_expr) - : exprstate(exprstatetype::defexpr, - nullptr /*gen_expr*/), + : exprstate(exprstatetype::defexpr), defxs_type_{defexprstatetype::def_0}, def_expr_{std::move(def_expr)} {} diff --git a/src/reader/progress_xs.cpp b/src/reader/progress_xs.cpp index 6e1d743a..2070e909 100644 --- a/src/reader/progress_xs.cpp +++ b/src/reader/progress_xs.cpp @@ -10,8 +10,8 @@ namespace xo { } progress_xs::progress_xs(rp valex) - : exprstate(exprstatetype::expr_progress, - std::move(valex)) + : exprstate(exprstatetype::expr_progress), + gen_expr_{std::move(valex)} {} bool