xo-parser: parserstatemachine -> consolidate on_typedescr() args
This commit is contained in:
parent
dbd2f69533
commit
370722b086
13 changed files with 20 additions and 31 deletions
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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*/
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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()));
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue