xo-reader: refactor: simplify exprseq_xs api

This commit is contained in:
Roland Conybeare 2024-08-18 23:56:50 -04:00
commit bd8f093a00
3 changed files with 11 additions and 4 deletions

View file

@ -18,7 +18,7 @@ namespace xo {
public:
exprseq_xs();
static std::unique_ptr<exprseq_xs> expect_toplevel_expression_sequence();
static void start(exprstatestack * p_stack);
public:
// ----- token input methods -----
@ -38,6 +38,8 @@ namespace xo {
exprstatestack * p_stack,
rp<Expression> * p_emit_expr) override;
private:
static std::unique_ptr<exprseq_xs> make();
};
} /*namespace scm*/
} /*namespace xo*/

View file

@ -7,11 +7,17 @@
namespace xo {
namespace scm {
std::unique_ptr<exprseq_xs>
exprseq_xs::expect_toplevel_expression_sequence()
exprseq_xs::make()
{
return std::make_unique<exprseq_xs>(exprseq_xs());
}
void
exprseq_xs::start(exprstatestack * p_stack)
{
p_stack->push_exprstate(exprseq_xs::make());
}
exprseq_xs::exprseq_xs()
: exprstate(exprstatetype::expect_toplevel_expression_sequence)
{

View file

@ -30,8 +30,7 @@ namespace xo {
void
parser::begin_translation_unit() {
xs_stack_.push_exprstate
(exprseq_xs::expect_toplevel_expression_sequence());
exprseq_xs::start(&xs_stack_);
}
rp<Expression>