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();
|
expect_symbol_xs();
|
||||||
|
|
||||||
static std::unique_ptr<expect_symbol_xs> expect_symbol_expression();
|
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 scm*/
|
||||||
} /*namespace xo*/
|
} /*namespace xo*/
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,20 @@ namespace xo {
|
||||||
: exprstate(exprstatetype::expect_symbol)
|
: 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 scm*/
|
||||||
} /*namespace xo*/
|
} /*namespace xo*/
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -198,22 +198,11 @@ namespace xo {
|
||||||
case exprstatetype::defexpr:
|
case exprstatetype::defexpr:
|
||||||
case exprstatetype::parenexpr:
|
case exprstatetype::parenexpr:
|
||||||
case exprstatetype::expect_rhs_expression:
|
case exprstatetype::expect_rhs_expression:
|
||||||
|
case exprstatetype::expect_symbol:
|
||||||
/* unreachable - redirected to define_xs etc */
|
/* unreachable - redirected to define_xs etc */
|
||||||
assert(false);
|
assert(false);
|
||||||
return;
|
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: {
|
case exprstatetype::expect_type: {
|
||||||
TypeDescr td = nullptr;
|
TypeDescr td = nullptr;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue