diff --git a/include/xo/reader/expect_expr_xs.hpp b/include/xo/reader/expect_expr_xs.hpp index f7bcb097..0259e6a6 100644 --- a/include/xo/reader/expect_expr_xs.hpp +++ b/include/xo/reader/expect_expr_xs.hpp @@ -26,8 +26,7 @@ namespace xo { rp * p_emit_expr) override; virtual void on_symbol_token(const token_type & tk, - exprstatestack * p_stack, - rp * p_emit_expr) override; + parserstatemachine * p_psm) override; virtual void on_f64_token(const token_type & tk, exprstatestack * p_stack, diff --git a/include/xo/reader/expect_symbol_xs.hpp b/include/xo/reader/expect_symbol_xs.hpp index 40cb25b6..63740aeb 100644 --- a/include/xo/reader/expect_symbol_xs.hpp +++ b/include/xo/reader/expect_symbol_xs.hpp @@ -23,8 +23,7 @@ namespace xo { static void start(exprstatestack * p_stack); virtual void on_symbol_token(const token_type & tk, - exprstatestack * p_stack, - rp * p_emit_expr) override; + parserstatemachine * p_psm) override; }; } /*namespace scm*/ } /*namespace xo*/ diff --git a/include/xo/reader/expect_type_xs.hpp b/include/xo/reader/expect_type_xs.hpp index 0e534a2a..86e5adf7 100644 --- a/include/xo/reader/expect_type_xs.hpp +++ b/include/xo/reader/expect_type_xs.hpp @@ -19,8 +19,7 @@ namespace xo { static void start(exprstatestack * p_stack); virtual void on_symbol_token(const token_type & tk, - exprstatestack * p_stack, - rp * p_emit_expr) override; + parserstatemachine * p_psm) override; private: static std::unique_ptr make(); diff --git a/include/xo/reader/exprseq_xs.hpp b/include/xo/reader/exprseq_xs.hpp index 6955e8a6..a5576001 100644 --- a/include/xo/reader/exprseq_xs.hpp +++ b/include/xo/reader/exprseq_xs.hpp @@ -26,8 +26,7 @@ namespace xo { virtual void on_def_token(const token_type & tk, parserstatemachine * p_psm) override; virtual void on_symbol_token(const token_type & tk, - exprstatestack * p_stack, - rp * p_emit_expr) override; + parserstatemachine * p_psm) override; // ----- victory methods ----- diff --git a/include/xo/reader/exprstate.hpp b/include/xo/reader/exprstate.hpp index f0bbf2f3..ab091fdc 100644 --- a/include/xo/reader/exprstate.hpp +++ b/include/xo/reader/exprstate.hpp @@ -126,8 +126,7 @@ namespace xo { parserstatemachine * p_psm); /** handle incoming symbol token **/ virtual void on_symbol_token(const token_type & tk, - exprstatestack * p_stack, - rp * p_emit_expr); + parserstatemachine * p_psm); /** handle incoming ',' token **/ virtual void on_comma_token(const token_type & tk, exprstatestack * p_stack, diff --git a/include/xo/reader/paren_xs.hpp b/include/xo/reader/paren_xs.hpp index 48cc6ea8..9e8c8dff 100644 --- a/include/xo/reader/paren_xs.hpp +++ b/include/xo/reader/paren_xs.hpp @@ -47,8 +47,7 @@ namespace xo { virtual void on_def_token(const token_type & tk, parserstatemachine * p_psm) override; virtual void on_symbol_token(const token_type & tk, - exprstatestack * p_stack, - rp * p_emit_expr) override; + parserstatemachine * p_psm) override; virtual void on_colon_token(const token_type & tk, exprstatestack * p_stack) override; virtual void on_semicolon_token(const token_type & tk, diff --git a/include/xo/reader/progress_xs.hpp b/include/xo/reader/progress_xs.hpp index 6efe21eb..06107bad 100644 --- a/include/xo/reader/progress_xs.hpp +++ b/include/xo/reader/progress_xs.hpp @@ -59,8 +59,7 @@ namespace xo { exprstatestack * p_stack, rp * p_emit_expr) override; virtual void on_symbol_token(const token_type & tk, - exprstatestack * p_stack, - rp * p_emit_expr) override; + parserstatemachine * p_psm) override; virtual void on_typedescr(TypeDescr td, exprstatestack * /*p_stack*/, rp * /*p_emit_expr*/) override; diff --git a/src/reader/expect_expr_xs.cpp b/src/reader/expect_expr_xs.cpp index bb90047f..9e28eb6e 100644 --- a/src/reader/expect_expr_xs.cpp +++ b/src/reader/expect_expr_xs.cpp @@ -65,8 +65,7 @@ namespace xo { void expect_expr_xs::on_symbol_token(const token_type & /*tk*/, - exprstatestack * /*p_stack*/, - rp * /*p_emit_expr*/) + parserstatemachine * /*p_psm*/) { /* todo: treat symbol as variable name */ diff --git a/src/reader/expect_symbol_xs.cpp b/src/reader/expect_symbol_xs.cpp index e6fd2bb7..12334e73 100644 --- a/src/reader/expect_symbol_xs.cpp +++ b/src/reader/expect_symbol_xs.cpp @@ -4,6 +4,7 @@ */ #include "expect_symbol_xs.hpp" +#include "parserstatemachine.hpp" namespace xo { namespace scm { @@ -24,14 +25,17 @@ namespace xo { void expect_symbol_xs::on_symbol_token(const token_type & tk, - exprstatestack * p_stack, - rp * p_emit_expr) + parserstatemachine * p_psm) { + auto p_stack = p_psm->p_stack_; + auto p_emit_expr = p_psm->p_emit_expr_; + /* have to do pop first, before sending symbol to * the o.g. symbol-requester */ std::unique_ptr self = p_stack->pop_exprstate(); + p_stack->top_exprstate().on_symbol(tk.text(), p_stack, p_emit_expr); return; diff --git a/src/reader/expect_type_xs.cpp b/src/reader/expect_type_xs.cpp index add0dc77..11ab04ed 100644 --- a/src/reader/expect_type_xs.cpp +++ b/src/reader/expect_type_xs.cpp @@ -4,7 +4,7 @@ */ #include "expect_type_xs.hpp" -#include "exprstate.hpp" +#include "parserstatemachine.hpp" #include "xo/reflect/Reflect.hpp" namespace xo { @@ -28,11 +28,13 @@ namespace xo { void expect_type_xs::on_symbol_token(const token_type & tk, - exprstatestack * p_stack, - rp * p_emit_expr) + parserstatemachine * p_psm) { 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; /* TODO: replace with typetable lookup */ diff --git a/src/reader/exprseq_xs.cpp b/src/reader/exprseq_xs.cpp index 25873606..76722e5b 100644 --- a/src/reader/exprseq_xs.cpp +++ b/src/reader/exprseq_xs.cpp @@ -42,8 +42,7 @@ namespace xo { void exprseq_xs::on_symbol_token(const token_type & tk, - exprstatestack * /*p_stack*/, - rp * /*p_emit_expr*/) + parserstatemachine * /*p_psm*/) { constexpr const char * c_self_name = "exprseq_xs::on_symbol_token"; diff --git a/src/reader/exprstate.cpp b/src/reader/exprstate.cpp index cd1342ff..97be6fec 100644 --- a/src/reader/exprstate.cpp +++ b/src/reader/exprstate.cpp @@ -67,12 +67,13 @@ namespace xo { void exprstate::on_symbol_token(const token_type & tk, - exprstatestack * p_stack, - rp * /*p_emit_expr*/) + parserstatemachine * p_psm) { 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())); constexpr const char * c_self_name = "exprstate::on_symbol_token"; @@ -279,7 +280,7 @@ namespace xo { return; case tokentype::tk_symbol: - this->on_symbol_token(tk, p_stack, p_emit_expr); + this->on_symbol_token(tk, p_psm); return; case tokentype::tk_leftparen: diff --git a/src/reader/paren_xs.cpp b/src/reader/paren_xs.cpp index 906a9b18..9ec0a0b8 100644 --- a/src/reader/paren_xs.cpp +++ b/src/reader/paren_xs.cpp @@ -1,6 +1,7 @@ /* @file paren_xs.cpp */ #include "paren_xs.hpp" +#include "parserstatemachine.hpp" #include "progress_xs.hpp" #include "expect_expr_xs.hpp" @@ -64,7 +65,7 @@ namespace xo { void paren_xs::on_def_token(const token_type & tk, - parserstatemachine * /*p_stack*/) + parserstatemachine * /*p_psm*/) { constexpr const char * c_self_name = "paren_xs::on_def"; @@ -73,12 +74,13 @@ namespace xo { void paren_xs::on_symbol_token(const token_type & /*tk*/, - exprstatestack * p_stack, - rp * /*p_emit_expr*/) + parserstatemachine * p_psm) { 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())); //constexpr const char * self_name = "paren_xs::on_symbol"; diff --git a/src/reader/progress_xs.cpp b/src/reader/progress_xs.cpp index 481cb895..431b0cb8 100644 --- a/src/reader/progress_xs.cpp +++ b/src/reader/progress_xs.cpp @@ -164,8 +164,7 @@ namespace xo { void progress_xs::on_symbol_token(const token_type & /*tk*/, - exprstatestack * /*p_stack*/, - rp * /*p_emit_expr*/) + parserstatemachine * /*p_psm*/) { /* illegal input, e.g. * foo bar