From f8754913bb31827083a3696a267a7c59f3fa35a5 Mon Sep 17 00:00:00 2001 From: Roland Conybeare Date: Sun, 18 Aug 2024 23:43:59 -0400 Subject: [PATCH] xo-reader: refactor: simplify expect_symbol_xs api --- include/xo/reader/expect_symbol_xs.hpp | 4 +++- src/reader/define_xs.cpp | 2 +- src/reader/expect_formal_arglist_xs.cpp | 2 +- src/reader/expect_symbol_xs.cpp | 8 +++++++- 4 files changed, 12 insertions(+), 4 deletions(-) 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) {}