diff --git a/include/xo/reader/exprseq_xs.hpp b/include/xo/reader/exprseq_xs.hpp index 261cbd5a..861a6321 100644 --- a/include/xo/reader/exprseq_xs.hpp +++ b/include/xo/reader/exprseq_xs.hpp @@ -25,6 +25,12 @@ namespace xo { virtual void on_def_token(const token_type & tk, exprstatestack * p_stack) override; + virtual void on_symbol_token(const token_type & tk, + exprstatestack * p_stack, + rp * p_emit_expr) override; + + // ----- victory methods ----- + }; } /*namespace scm*/ } /*namespace xo*/ diff --git a/src/reader/exprseq_xs.cpp b/src/reader/exprseq_xs.cpp index e0a5af6f..a127cdc8 100644 --- a/src/reader/exprseq_xs.cpp +++ b/src/reader/exprseq_xs.cpp @@ -37,6 +37,16 @@ namespace xo { * def sq(x : f64) -> f64 { (x * x) } */ } + + void + exprseq_xs::on_symbol_token(const token_type & tk, + exprstatestack * /*p_stack*/, + rp * /*p_emit_expr*/) + { + constexpr const char * c_self_name = "exprseq_xs::on_symbol_token"; + + this->illegal_input_error(c_self_name, tk); + } } /*namespace scm*/ } /*namespace xo*/ diff --git a/src/reader/exprstate.cpp b/src/reader/exprstate.cpp index beab670a..3e3ae9ec 100644 --- a/src/reader/exprstate.cpp +++ b/src/reader/exprstate.cpp @@ -315,13 +315,6 @@ namespace xo { switch (this->exs_type_) { case exprstatetype::expect_toplevel_expression_sequence: - throw std::runtime_error - (tostr(c_self_name, - ": unexpected symbol-token at top-level", - " (expecting decl|def)", - xtag("symbol", tk))); - break; - case exprstatetype::defexpr: case exprstatetype::parenexpr: /* unreachable - redirects to define_xs */ @@ -409,7 +402,7 @@ namespace xo { assert(false); return; } - } /*on_symbol*/ + } void exprstate::on_typedescr(TypeDescr /*td*/,