From 6d73caf308f1b6670af86bee70b45703027c55cc Mon Sep 17 00:00:00 2001 From: Roland Conybeare Date: Mon, 19 Aug 2024 00:06:34 -0400 Subject: [PATCH] xo-reader: refactor: simplify progress_xs api --- include/xo/reader/progress_xs.hpp | 11 +++++++++-- src/reader/expect_expr_xs.cpp | 6 +++--- src/reader/paren_xs.cpp | 2 +- src/reader/progress_xs.cpp | 10 ++++++++++ 4 files changed, 23 insertions(+), 6 deletions(-) diff --git a/include/xo/reader/progress_xs.hpp b/include/xo/reader/progress_xs.hpp index eeaee588..466b4b02 100644 --- a/include/xo/reader/progress_xs.hpp +++ b/include/xo/reader/progress_xs.hpp @@ -47,8 +47,11 @@ namespace xo { return dynamic_cast(x); } - static std::unique_ptr make(rp valex, - optype optype = optype::invalid); + static void start(rp valex, + optype optype, + exprstatestack * p_stack); + static void start(rp valex, + exprstatestack * p_stack); bool admits_f64() const; @@ -89,6 +92,10 @@ namespace xo { virtual void print(std::ostream & os) const override; + private: + static std::unique_ptr make(rp valex, + optype optype = optype::invalid); + private: /** assemble expression representing * value of diff --git a/src/reader/expect_expr_xs.cpp b/src/reader/expect_expr_xs.cpp index edc67357..c91205d0 100644 --- a/src/reader/expect_expr_xs.cpp +++ b/src/reader/expect_expr_xs.cpp @@ -110,9 +110,9 @@ namespace xo { * def pi = 3.14159265; * \---tk---/ */ - p_stack->push_exprstate - (progress_xs::make - (Constant::make(tk.f64_value()))); + progress_xs::start + (Constant::make(tk.f64_value()), + p_stack); } void diff --git a/src/reader/paren_xs.cpp b/src/reader/paren_xs.cpp index cfd20f95..06329bde 100644 --- a/src/reader/paren_xs.cpp +++ b/src/reader/paren_xs.cpp @@ -183,7 +183,7 @@ namespace xo { switch (this->parenxs_type_) { case parenexprstatetype::lparen_0: { this->parenxs_type_ = parenexprstatetype::lparen_1; /* wants on_rightparen */ - p_stack->push_exprstate(progress_xs::make(expr.promote())); + progress_xs::start(expr.promote(), p_stack); return; } diff --git a/src/reader/progress_xs.cpp b/src/reader/progress_xs.cpp index 93862147..61d1cd77 100644 --- a/src/reader/progress_xs.cpp +++ b/src/reader/progress_xs.cpp @@ -52,6 +52,16 @@ namespace xo { return std::make_unique(progress_xs(std::move(valex), op)); } + void + progress_xs::start(rp valex, optype op, exprstatestack * p_stack) { + p_stack->push_exprstate(progress_xs::make(valex, op)); + } + + void + progress_xs::start(rp valex, exprstatestack * p_stack) { + p_stack->push_exprstate(progress_xs::make(valex)); + } + progress_xs::progress_xs(rp valex, optype op) : exprstate(exprstatetype::expr_progress), lhs_{std::move(valex)},