xo-reader2: + ExpectSymbolSsm + SyntaxStateMachine.on_parsed_symbol

This commit is contained in:
Roland Conybeare 2026-01-19 11:32:39 -05:00
commit 83ef04c250
28 changed files with 537 additions and 52 deletions

View file

@ -10,21 +10,35 @@ namespace xo {
using xo::facet::typeseq;
namespace scm {
ParserStack::ParserStack(obj<ASyntaxStateMachine> ssm,
ParserStack::ParserStack(DArena::Checkpoint ckp,
obj<ASyntaxStateMachine> ssm,
ParserStack * parent)
: ssm_{ssm}, parent_{parent}
: ckp_{ckp}, ssm_{ssm}, parent_{parent}
{}
ParserStack *
ParserStack::push(ParserStack * stack,
obj<AAllocator> mm,
DArena & mm,
obj<ASyntaxStateMachine> ssm)
{
DArena::Checkpoint ckp = mm.checkpoint();
void * mem = mm.alloc(typeseq::id<ParserStack>(),
sizeof(ParserStack));
return new (mem) ParserStack(ssm, stack);
return new (mem) ParserStack(ckp, ssm, stack);
}
ParserStack *
ParserStack::pop(ParserStack * stack,
DArena & mm)
{
assert(stack);
mm.restore(stack->ckp());
return stack->parent();
}
} /*namespace scm*/