xo-parser: parserstatemachine -> consolidate on_typedescr() args

This commit is contained in:
Roland Conybeare 2024-08-19 11:51:45 -04:00
commit 370722b086
13 changed files with 20 additions and 31 deletions

View file

@ -81,8 +81,7 @@ namespace xo {
exprstatestack * p_stack,
rp<Expression> * p_emit_expr) override;
virtual void on_typedescr(TypeDescr td,
exprstatestack * p_stack,
rp<Expression> * p_emit_expr) override;
parserstatemachine * p_psm) override;
virtual void on_def_token(const token_type & tk,
parserstatemachine * p_psm) override;
virtual void on_colon_token(const token_type & tk,

View file

@ -65,8 +65,7 @@ namespace xo {
#endif
virtual void on_typedescr(TypeDescr td,
exprstatestack * p_stack,
rp<Expression> * p_emit_expr) override;
parserstatemachine * p_psm) override;
virtual void print(std::ostream & os) const override;

View file

@ -31,8 +31,7 @@ namespace xo {
// ----- victory methods -----
virtual void on_typedescr(TypeDescr td,
exprstatestack * p_stack,
rp<Expression> * p_emit_expr) override;
parserstatemachine * p_psm) override;
virtual void on_expr(ref::brw<Expression> expr,
exprstatestack * p_stack,
rp<Expression> * p_emit_expr) override;

View file

@ -105,8 +105,7 @@ namespace xo {
/** update exprstate when expeccting a typedescr **/
virtual void on_typedescr(TypeDescr td,
exprstatestack * p_stack,
rp<Expression> * p_emit_expr);
parserstatemachine * p_psm);
/** update exprstate when expecting a formal parameter **/
virtual void on_formal(const rp<Variable> & formal,

View file

@ -41,8 +41,7 @@ namespace xo {
exprstatestack * p_stack,
rp<Expression> * p_emit_expr) override;
virtual void on_typedescr(TypeDescr td,
exprstatestack * /*p_stack*/,
rp<Expression> * /*p_emit_expr*/) override;
parserstatemachine * p_psm) override;
virtual void on_def_token(const token_type & tk,
parserstatemachine * p_psm) override;

View file

@ -61,8 +61,7 @@ namespace xo {
virtual void on_symbol_token(const token_type & tk,
parserstatemachine * p_psm) override;
virtual void on_typedescr(TypeDescr td,
exprstatestack * /*p_stack*/,
rp<Expression> * /*p_emit_expr*/) override;
parserstatemachine * p_psm) override;
virtual void on_def_token(const token_type & tk,
parserstatemachine * p_psm) override;

View file

@ -73,8 +73,7 @@ namespace xo {
void
define_xs::on_typedescr(TypeDescr td,
exprstatestack * p_stack,
rp<Expression> * p_emit_expr)
parserstatemachine * p_psm)
{
if (this->defxs_type_ == defexprstatetype::def_3) {
this->defxs_type_ = defexprstatetype::def_4;
@ -85,7 +84,7 @@ namespace xo {
return;
} else {
exprstate::on_typedescr(td, p_stack, p_emit_expr);
exprstate::on_typedescr(td, p_psm);
}
}

View file

@ -80,9 +80,10 @@ namespace xo {
void
expect_formal_xs::on_typedescr(TypeDescr td,
exprstatestack * p_stack,
rp<Expression> * p_emit_expr)
parserstatemachine * p_psm)
{
auto p_stack = p_psm->p_stack_;
if (this->formalxs_type_ == formalstatetype::formal_2) {
this->result_.assign_td(td);
@ -91,11 +92,9 @@ namespace xo {
rp<Variable> var = Variable::make(result_.name(),
result_.td());
parserstatemachine psm(p_stack, p_emit_expr);
p_stack->top_exprstate().on_formal(var, &psm);
p_stack->top_exprstate().on_formal(var, p_psm);
} else {
exprstate::on_typedescr(td, p_stack, p_emit_expr);
exprstate::on_typedescr(td, p_psm);
}
}

View file

@ -33,7 +33,6 @@ namespace xo {
const char * c_self_name = "expect_type_xs::on_symbol_token";
auto p_stack = p_psm->p_stack_;
auto p_emit_expr = p_psm->p_emit_expr_;
TypeDescr td = nullptr;
@ -59,7 +58,7 @@ namespace xo {
}
std::unique_ptr<exprstate> self = p_stack->pop_exprstate();
p_stack->top_exprstate().on_typedescr(td, p_stack, p_emit_expr);
p_stack->top_exprstate().on_typedescr(td, p_psm);
}
} /*namespace scm*/
} /*namespace xo*/

View file

@ -51,8 +51,7 @@ namespace xo {
void
exprseq_xs::on_typedescr(TypeDescr /*td*/,
exprstatestack * /*p_stack*/,
rp<Expression> * /*p_emit_expr*/)
parserstatemachine * /*p_psm*/)
{
/* unreachable - typedescr should never get delivered to exprseq */
assert(false);

View file

@ -83,14 +83,15 @@ namespace xo {
void
exprstate::on_typedescr(TypeDescr td,
exprstatestack * p_stack,
rp<Expression> * /*p_emit_expr*/)
parserstatemachine * p_psm)
{
/* returning type description to something that wants it */
constexpr bool c_debug_flag = true;
scope log(XO_DEBUG(c_debug_flag));
auto p_stack = p_psm->p_stack_;
log && log(xtag("exstype",
p_stack->top_exprstate().exs_type()));

View file

@ -92,8 +92,7 @@ namespace xo {
void
paren_xs::on_typedescr(TypeDescr /*td*/,
exprstatestack * /*p_stack*/,
rp<Expression> * /*p_emit_expr*/)
parserstatemachine * /*p_psm*/)
{
assert(false);
return;

View file

@ -175,8 +175,7 @@ namespace xo {
void
progress_xs::on_typedescr(TypeDescr /*td*/,
exprstatestack * /*p_stack*/,
rp<Expression> * /*p_emit_expr*/)
parserstatemachine * /*p_psm*/)
{
/* unreachable */
assert(false);