xo-reader2: + on_parsed_expression_with_semicolon + DefineSsm works

This commit is contained in:
Roland Conybeare 2026-01-22 17:15:05 -05:00
commit 56aceac9e8
36 changed files with 426 additions and 19 deletions

View file

@ -578,6 +578,12 @@ namespace xo {
DDefineSsm::on_semicolon_token(const Token & tk,
ParserStateMachine * p_psm)
{
if (defstate_ == defexprstatetype::def_6) {
p_psm->pop_ssm();
p_psm->on_parsed_expression_with_semicolon(def_expr_);
return;
}
p_psm->illegal_input_on_token("DDefineSsm::on_semicolon_token",
tk,
this->get_expect_str());
@ -587,11 +593,27 @@ namespace xo {
DDefineSsm::on_parsed_expression(obj<AExpression> expr,
ParserStateMachine * p_psm)
{
if (defstate_ == defexprstatetype::def_5)
{
this->defstate_ = defexprstatetype::def_6;
def_expr_.data()->assign_rhs(expr);
return;
}
p_psm->illegal_parsed_expression("DDefineSsm::on_parsed_expression",
expr,
this->get_expect_str());
}
void
DDefineSsm::on_parsed_expression_with_semicolon(obj<AExpression> expr,
ParserStateMachine * p_psm)
{
this->on_parsed_expression(expr, p_psm);
this->on_semicolon_token(Token::semicolon_token(), p_psm);
}
bool
DDefineSsm::pretty(const ppindentinfo & ppii) const
{