xo-reader2: fix clearing result in SchematikaReader

This commit is contained in:
Roland Conybeare 2026-01-23 16:34:33 -05:00
commit b7a813ec07
4 changed files with 33 additions and 0 deletions

View file

@ -11,6 +11,8 @@
#include <xo/expression2/detail/IExpression_DConstant.hpp>
#include <xo/object2/DFloat.hpp>
#include <xo/object2/number/IGCObject_DFloat.hpp>
#include <xo/object2/DBoolean.hpp>
#include <xo/object2/boolean/IGCObject_DBoolean.hpp>
#include <xo/gc/GCObject.hpp>
namespace xo {
@ -221,6 +223,26 @@ namespace xo {
DExprSeqState::on_bool_token(const Token & tk,
ParserStateMachine * p_psm)
{
switch (seqtype_) {
case exprseqtype::toplevel_interactive:
{
auto dvalue = DBoolean::box<AGCObject>(p_psm->expr_alloc(),
tk.bool_value());
auto * dconst = DConstant::make(p_psm->expr_alloc(), dvalue);
auto expr = with_facet<AExpression>::mkobj(dconst);
DProgressSsm::start(p_psm->parser_alloc(),
expr,
p_psm);
return;
}
case exprseqtype::toplevel_batch:
break;
case exprseqtype::N:
assert(false); // unreachable
break;
}
p_psm->illegal_input_on_token("DExprSeqState::on_bool_token",
tk,
this->get_expect_str());

View file

@ -142,6 +142,12 @@ namespace xo {
return this->result_;
}
void
SchematikaReader::reset_result()
{
this->parser_.reset_result();
}
void
SchematikaReader::reset_to_idle_toplevel()
{