From ac6512dfd6e2459e63a655b994afe28f40e6a6d0 Mon Sep 17 00:00:00 2001 From: Roland Conybeare Date: Thu, 24 Jul 2025 07:50:34 -0500 Subject: [PATCH] xo-reader: work on apply expression parsing --- src/reader/apply_xs.cpp | 2 ++ src/reader/define_xs.cpp | 4 ++-- src/reader/parser.cpp | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/reader/apply_xs.cpp b/src/reader/apply_xs.cpp index d5f5daed..d6315a08 100644 --- a/src/reader/apply_xs.cpp +++ b/src/reader/apply_xs.cpp @@ -107,6 +107,7 @@ namespace xo { if (this->applyxs_type_ == applyexprstatetype::apply_3) { this->applyxs_type_ = applyexprstatetype::apply_2; + expect_expr_xs::start(p_psm); } else { constexpr const char * c_self_name = "apply_xs::on_comma_token"; const char * exp = this->get_expect_str(); @@ -125,6 +126,7 @@ namespace xo { if (this->applyxs_type_ == applyexprstatetype::apply_1) { this->applyxs_type_ = applyexprstatetype::apply_2; + expect_expr_xs::start(p_psm); } else { constexpr const char * c_self_name = "apply_xs::on_leftparen_token"; const char * exp = this->get_expect_str(); diff --git a/src/reader/define_xs.cpp b/src/reader/define_xs.cpp index c4e1a4a4..2403359a 100644 --- a/src/reader/define_xs.cpp +++ b/src/reader/define_xs.cpp @@ -153,7 +153,7 @@ namespace xo { { scope log(XO_DEBUG(p_psm->debug_flag())); - log && log("defxs_type", defxs_type_); + log && log(xtag("defxs_type", defxs_type_), xtag("env_stack_size", p_psm->env_stack_size())); if (this->defxs_type_ == defexprstatetype::def_1) { this->defxs_type_ = defexprstatetype::def_2; @@ -178,7 +178,7 @@ namespace xo { // For interactive top-level defs we want to evaluate as we go, // so need incremental bindings. - if (p_psm->env_stack_size() == 2) { + if (p_psm->env_stack_size() == 1) { /* remember variable binding in lexical context, * so we can refer to it later */ diff --git a/src/reader/parser.cpp b/src/reader/parser.cpp index 83615867..b650f297 100644 --- a/src/reader/parser.cpp +++ b/src/reader/parser.cpp @@ -64,7 +64,7 @@ namespace xo { /* stack_ is non-empty */ - log && log(xtag("top", psm_.xs_stack_.top_exprstate())); + log && log(xrefrtag("top", psm_.xs_stack_.top_exprstate())); psm_.xs_stack_.top_exprstate().on_input(tk, &psm_);