From a5e2f622a4fcade434d1b6c5c68a151c7e006385 Mon Sep 17 00:00:00 2001 From: Roland Conybeare Date: Mon, 19 Aug 2024 00:13:59 -0400 Subject: [PATCH] xo-reader: refactor: simplify expect_formal_xs api --- include/xo/reader/expect_formal_xs.hpp | 5 ++++- src/reader/expect_formal_arglist_xs.cpp | 4 ++-- src/reader/expect_formal_xs.cpp | 5 +++++ 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/include/xo/reader/expect_formal_xs.hpp b/include/xo/reader/expect_formal_xs.hpp index 79b8bf05..892e447f 100644 --- a/include/xo/reader/expect_formal_xs.hpp +++ b/include/xo/reader/expect_formal_xs.hpp @@ -47,7 +47,7 @@ namespace xo { public: expect_formal_xs(); - static std::unique_ptr make(); + static void start(exprstatestack * p_stack); virtual void on_symbol(const std::string & symbol_name, exprstatestack * p_stack, @@ -71,6 +71,9 @@ namespace xo { virtual void print(std::ostream & os) const override; + private: + static std::unique_ptr make(); + private: /** parsing state-machine state **/ formalstatetype formalxs_type_ = formalstatetype::formal_0; diff --git a/src/reader/expect_formal_arglist_xs.cpp b/src/reader/expect_formal_arglist_xs.cpp index 6f2a4e13..19087cce 100644 --- a/src/reader/expect_formal_arglist_xs.cpp +++ b/src/reader/expect_formal_arglist_xs.cpp @@ -54,7 +54,7 @@ namespace xo { if (farglxs_type_ == formalarglstatetype::argl_0) { this->farglxs_type_ = formalarglstatetype::argl_1a; /* TODO: refactor to have setup method on each exprstate */ - p_stack->push_exprstate(expect_formal_xs::make()); + expect_formal_xs::start(p_stack); expect_symbol_xs::start(p_stack); } else { exprstate::on_leftparen_token(tk, p_stack, p_emit_expr); @@ -81,7 +81,7 @@ namespace xo { { if (farglxs_type_ == formalarglstatetype::argl_1b) { this->farglxs_type_ = formalarglstatetype::argl_1a; - p_stack->push_exprstate(expect_formal_xs::make()); + expect_formal_xs::start(p_stack); } else { exprstate::on_comma_token(tk, p_stack, p_emit_expr); } diff --git a/src/reader/expect_formal_xs.cpp b/src/reader/expect_formal_xs.cpp index b796a209..31c0ccf9 100644 --- a/src/reader/expect_formal_xs.cpp +++ b/src/reader/expect_formal_xs.cpp @@ -34,6 +34,11 @@ namespace xo { return std::make_unique(expect_formal_xs()); } + void + expect_formal_xs::start(exprstatestack * p_stack) { + p_stack->push_exprstate(expect_formal_xs::make()); + } + expect_formal_xs::expect_formal_xs() : exprstate(exprstatetype::expect_formal) {}