From 370722b086411c96e9c46939edc37dbb87b6f4d5 Mon Sep 17 00:00:00 2001 From: Roland Conybeare Date: Mon, 19 Aug 2024 11:51:45 -0400 Subject: [PATCH] xo-parser: parserstatemachine -> consolidate on_typedescr() args --- include/xo/reader/define_xs.hpp | 3 +-- include/xo/reader/expect_formal_xs.hpp | 3 +-- include/xo/reader/exprseq_xs.hpp | 3 +-- include/xo/reader/exprstate.hpp | 3 +-- include/xo/reader/paren_xs.hpp | 3 +-- include/xo/reader/progress_xs.hpp | 3 +-- src/reader/define_xs.cpp | 5 ++--- src/reader/expect_formal_xs.cpp | 11 +++++------ src/reader/expect_type_xs.cpp | 3 +-- src/reader/exprseq_xs.cpp | 3 +-- src/reader/exprstate.cpp | 5 +++-- src/reader/paren_xs.cpp | 3 +-- src/reader/progress_xs.cpp | 3 +-- 13 files changed, 20 insertions(+), 31 deletions(-) diff --git a/include/xo/reader/define_xs.hpp b/include/xo/reader/define_xs.hpp index 9e616b31..6e3da294 100644 --- a/include/xo/reader/define_xs.hpp +++ b/include/xo/reader/define_xs.hpp @@ -81,8 +81,7 @@ namespace xo { exprstatestack * p_stack, rp * p_emit_expr) override; virtual void on_typedescr(TypeDescr td, - exprstatestack * p_stack, - rp * p_emit_expr) override; + parserstatemachine * p_psm) override; virtual void on_def_token(const token_type & tk, parserstatemachine * p_psm) override; virtual void on_colon_token(const token_type & tk, diff --git a/include/xo/reader/expect_formal_xs.hpp b/include/xo/reader/expect_formal_xs.hpp index b757f6f5..c1b2e0d4 100644 --- a/include/xo/reader/expect_formal_xs.hpp +++ b/include/xo/reader/expect_formal_xs.hpp @@ -65,8 +65,7 @@ namespace xo { #endif virtual void on_typedescr(TypeDescr td, - exprstatestack * p_stack, - rp * p_emit_expr) override; + parserstatemachine * p_psm) override; virtual void print(std::ostream & os) const override; diff --git a/include/xo/reader/exprseq_xs.hpp b/include/xo/reader/exprseq_xs.hpp index a5576001..2d2cec7b 100644 --- a/include/xo/reader/exprseq_xs.hpp +++ b/include/xo/reader/exprseq_xs.hpp @@ -31,8 +31,7 @@ namespace xo { // ----- victory methods ----- virtual void on_typedescr(TypeDescr td, - exprstatestack * p_stack, - rp * p_emit_expr) override; + parserstatemachine * p_psm) override; virtual void on_expr(ref::brw expr, exprstatestack * p_stack, rp * p_emit_expr) override; diff --git a/include/xo/reader/exprstate.hpp b/include/xo/reader/exprstate.hpp index 8a7cf0d4..f52cd65e 100644 --- a/include/xo/reader/exprstate.hpp +++ b/include/xo/reader/exprstate.hpp @@ -105,8 +105,7 @@ namespace xo { /** update exprstate when expeccting a typedescr **/ virtual void on_typedescr(TypeDescr td, - exprstatestack * p_stack, - rp * p_emit_expr); + parserstatemachine * p_psm); /** update exprstate when expecting a formal parameter **/ virtual void on_formal(const rp & formal, diff --git a/include/xo/reader/paren_xs.hpp b/include/xo/reader/paren_xs.hpp index b4225f4e..c250f020 100644 --- a/include/xo/reader/paren_xs.hpp +++ b/include/xo/reader/paren_xs.hpp @@ -41,8 +41,7 @@ namespace xo { exprstatestack * p_stack, rp * p_emit_expr) override; virtual void on_typedescr(TypeDescr td, - exprstatestack * /*p_stack*/, - rp * /*p_emit_expr*/) override; + parserstatemachine * p_psm) override; virtual void on_def_token(const token_type & tk, parserstatemachine * p_psm) override; diff --git a/include/xo/reader/progress_xs.hpp b/include/xo/reader/progress_xs.hpp index 965da117..92f3df04 100644 --- a/include/xo/reader/progress_xs.hpp +++ b/include/xo/reader/progress_xs.hpp @@ -61,8 +61,7 @@ namespace xo { virtual void on_symbol_token(const token_type & tk, parserstatemachine * p_psm) override; virtual void on_typedescr(TypeDescr td, - exprstatestack * /*p_stack*/, - rp * /*p_emit_expr*/) override; + parserstatemachine * p_psm) override; virtual void on_def_token(const token_type & tk, parserstatemachine * p_psm) override; diff --git a/src/reader/define_xs.cpp b/src/reader/define_xs.cpp index 0f5561dc..6bc17c13 100644 --- a/src/reader/define_xs.cpp +++ b/src/reader/define_xs.cpp @@ -73,8 +73,7 @@ namespace xo { void define_xs::on_typedescr(TypeDescr td, - exprstatestack * p_stack, - rp * p_emit_expr) + parserstatemachine * p_psm) { if (this->defxs_type_ == defexprstatetype::def_3) { this->defxs_type_ = defexprstatetype::def_4; @@ -85,7 +84,7 @@ namespace xo { return; } else { - exprstate::on_typedescr(td, p_stack, p_emit_expr); + exprstate::on_typedescr(td, p_psm); } } diff --git a/src/reader/expect_formal_xs.cpp b/src/reader/expect_formal_xs.cpp index 24484b5b..99275c02 100644 --- a/src/reader/expect_formal_xs.cpp +++ b/src/reader/expect_formal_xs.cpp @@ -80,9 +80,10 @@ namespace xo { void expect_formal_xs::on_typedescr(TypeDescr td, - exprstatestack * p_stack, - rp * p_emit_expr) + parserstatemachine * p_psm) { + auto p_stack = p_psm->p_stack_; + if (this->formalxs_type_ == formalstatetype::formal_2) { this->result_.assign_td(td); @@ -91,11 +92,9 @@ namespace xo { rp var = Variable::make(result_.name(), result_.td()); - parserstatemachine psm(p_stack, p_emit_expr); - - p_stack->top_exprstate().on_formal(var, &psm); + p_stack->top_exprstate().on_formal(var, p_psm); } else { - exprstate::on_typedescr(td, p_stack, p_emit_expr); + exprstate::on_typedescr(td, p_psm); } } diff --git a/src/reader/expect_type_xs.cpp b/src/reader/expect_type_xs.cpp index 11ab04ed..90f2932a 100644 --- a/src/reader/expect_type_xs.cpp +++ b/src/reader/expect_type_xs.cpp @@ -33,7 +33,6 @@ namespace xo { const char * c_self_name = "expect_type_xs::on_symbol_token"; auto p_stack = p_psm->p_stack_; - auto p_emit_expr = p_psm->p_emit_expr_; TypeDescr td = nullptr; @@ -59,7 +58,7 @@ namespace xo { } std::unique_ptr self = p_stack->pop_exprstate(); - p_stack->top_exprstate().on_typedescr(td, p_stack, p_emit_expr); + p_stack->top_exprstate().on_typedescr(td, p_psm); } } /*namespace scm*/ } /*namespace xo*/ diff --git a/src/reader/exprseq_xs.cpp b/src/reader/exprseq_xs.cpp index 76722e5b..2d9d7053 100644 --- a/src/reader/exprseq_xs.cpp +++ b/src/reader/exprseq_xs.cpp @@ -51,8 +51,7 @@ namespace xo { void exprseq_xs::on_typedescr(TypeDescr /*td*/, - exprstatestack * /*p_stack*/, - rp * /*p_emit_expr*/) + parserstatemachine * /*p_psm*/) { /* unreachable - typedescr should never get delivered to exprseq */ assert(false); diff --git a/src/reader/exprstate.cpp b/src/reader/exprstate.cpp index 013f88a5..de77cb52 100644 --- a/src/reader/exprstate.cpp +++ b/src/reader/exprstate.cpp @@ -83,14 +83,15 @@ namespace xo { void exprstate::on_typedescr(TypeDescr td, - exprstatestack * p_stack, - rp * /*p_emit_expr*/) + parserstatemachine * p_psm) { /* returning type description to something that wants it */ constexpr bool c_debug_flag = true; scope log(XO_DEBUG(c_debug_flag)); + auto p_stack = p_psm->p_stack_; + log && log(xtag("exstype", p_stack->top_exprstate().exs_type())); diff --git a/src/reader/paren_xs.cpp b/src/reader/paren_xs.cpp index 8f6dff50..a536612c 100644 --- a/src/reader/paren_xs.cpp +++ b/src/reader/paren_xs.cpp @@ -92,8 +92,7 @@ namespace xo { void paren_xs::on_typedescr(TypeDescr /*td*/, - exprstatestack * /*p_stack*/, - rp * /*p_emit_expr*/) + parserstatemachine * /*p_psm*/) { assert(false); return; diff --git a/src/reader/progress_xs.cpp b/src/reader/progress_xs.cpp index 12f62740..d319bcf1 100644 --- a/src/reader/progress_xs.cpp +++ b/src/reader/progress_xs.cpp @@ -175,8 +175,7 @@ namespace xo { void progress_xs::on_typedescr(TypeDescr /*td*/, - exprstatestack * /*p_stack*/, - rp * /*p_emit_expr*/) + parserstatemachine * /*p_psm*/) { /* unreachable */ assert(false);