diff --git a/include/xo/reader/expect_symbol_xs.hpp b/include/xo/reader/expect_symbol_xs.hpp index 144bc3d0..40cb25b6 100644 --- a/include/xo/reader/expect_symbol_xs.hpp +++ b/include/xo/reader/expect_symbol_xs.hpp @@ -18,7 +18,9 @@ namespace xo { public: expect_symbol_xs(); - static std::unique_ptr expect_symbol_expression(); + static std::unique_ptr make(); + + static void start(exprstatestack * p_stack); virtual void on_symbol_token(const token_type & tk, exprstatestack * p_stack, diff --git a/src/reader/define_xs.cpp b/src/reader/define_xs.cpp index b813dc4d..6eab1bb7 100644 --- a/src/reader/define_xs.cpp +++ b/src/reader/define_xs.cpp @@ -98,7 +98,7 @@ namespace xo { if (this->defxs_type_ == defexprstatetype::def_0) { this->defxs_type_ = defexprstatetype::def_1; - p_stack->push_exprstate(expect_symbol_xs::expect_symbol_expression()); + expect_symbol_xs::start(p_stack); } else { exprstate::on_def_token(tk, p_stack); } diff --git a/src/reader/expect_formal_arglist_xs.cpp b/src/reader/expect_formal_arglist_xs.cpp index 839a2f51..2c67c474 100644 --- a/src/reader/expect_formal_arglist_xs.cpp +++ b/src/reader/expect_formal_arglist_xs.cpp @@ -49,7 +49,7 @@ namespace xo { this->farglxs_type_ = formalarglstatetype::argl_1a; /* TODO: refactor to have setup method on each exprstate */ p_stack->push_exprstate(expect_formal_xs::make()); - p_stack->push_exprstate(expect_symbol_xs::expect_symbol_expression()); + expect_symbol_xs::start(p_stack); } else { exprstate::on_leftparen_token(tk, p_stack, p_emit_expr); } diff --git a/src/reader/expect_symbol_xs.cpp b/src/reader/expect_symbol_xs.cpp index 84faeaa3..e6fd2bb7 100644 --- a/src/reader/expect_symbol_xs.cpp +++ b/src/reader/expect_symbol_xs.cpp @@ -8,10 +8,16 @@ namespace xo { namespace scm { std::unique_ptr - expect_symbol_xs::expect_symbol_expression() { + expect_symbol_xs::make() { return std::make_unique(expect_symbol_xs()); } + void + expect_symbol_xs::start(exprstatestack * p_stack) + { + p_stack->push_exprstate(expect_symbol_xs::make()); + } + expect_symbol_xs::expect_symbol_xs() : exprstate(exprstatetype::expect_symbol) {}