xo-reader: refactor: mv on_singleassign def-expr -> define_xs

This commit is contained in:
Roland Conybeare 2024-08-08 14:22:48 -04:00
commit 5c14ff9884
3 changed files with 29 additions and 10 deletions

View file

@ -475,6 +475,32 @@ namespace xo {
assert(false);
}
}
void
define_xs::on_singleassign(exprstatestack * p_stack)
{
constexpr bool c_debug_flag = true;
scope log(XO_DEBUG(c_debug_flag));
constexpr const char * self_name = "exprstate::on_singleassign";
if (!this->admits_singleassign())
{
throw std::runtime_error(tostr(self_name,
": unexpected equals for parsing state",
xtag("state", *this)));
}
if ((this->exs_type_ == exprstatetype::def_1)
|| (this->exs_type_ == exprstatetype::def_3))
{
this->exs_type_ = exprstatetype::def_4;
p_stack->push_exprstate(exprstate::expect_rhs_expression());
} else {
assert(false);
}
}
} /*namespace scm*/
} /*namespace xo*/