xo-reader: mv symbol handling to expect_symbol_xs
This commit is contained in:
parent
be412cb5ae
commit
08497a371c
3 changed files with 19 additions and 12 deletions
|
|
@ -19,6 +19,10 @@ namespace xo {
|
|||
expect_symbol_xs();
|
||||
|
||||
static std::unique_ptr<expect_symbol_xs> expect_symbol_expression();
|
||||
|
||||
virtual void on_symbol_token(const token_type & tk,
|
||||
exprstatestack * p_stack,
|
||||
rp<Expression> * p_emit_expr) override;
|
||||
};
|
||||
} /*namespace scm*/
|
||||
} /*namespace xo*/
|
||||
|
|
|
|||
|
|
@ -16,6 +16,20 @@ namespace xo {
|
|||
: exprstate(exprstatetype::expect_symbol)
|
||||
{}
|
||||
|
||||
void
|
||||
expect_symbol_xs::on_symbol_token(const token_type & tk,
|
||||
exprstatestack * p_stack,
|
||||
rp<Expression> * p_emit_expr)
|
||||
{
|
||||
/* have to do pop first, before sending symbol to
|
||||
* the o.g. symbol-requester
|
||||
*/
|
||||
std::unique_ptr<exprstate> self = p_stack->pop_exprstate();
|
||||
|
||||
p_stack->top_exprstate().on_symbol(tk.text(),
|
||||
p_stack, p_emit_expr);
|
||||
return;
|
||||
}
|
||||
} /*namespace scm*/
|
||||
} /*namespace xo*/
|
||||
|
||||
|
|
|
|||
|
|
@ -198,22 +198,11 @@ namespace xo {
|
|||
case exprstatetype::defexpr:
|
||||
case exprstatetype::parenexpr:
|
||||
case exprstatetype::expect_rhs_expression:
|
||||
case exprstatetype::expect_symbol:
|
||||
/* unreachable - redirected to define_xs etc */
|
||||
assert(false);
|
||||
return;
|
||||
|
||||
case exprstatetype::expect_symbol:
|
||||
{
|
||||
/* have to do pop first, before sending symbol to
|
||||
* the o.g. symbol-requester
|
||||
*/
|
||||
std::unique_ptr<exprstate> self = p_stack->pop_exprstate();
|
||||
|
||||
p_stack->top_exprstate().on_symbol(tk.text(),
|
||||
p_stack, p_emit_expr);
|
||||
return;
|
||||
}
|
||||
|
||||
case exprstatetype::expect_type: {
|
||||
TypeDescr td = nullptr;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue