diff --git a/include/xo/reader/define_xs.hpp b/include/xo/reader/define_xs.hpp index 10d53459..dafafed4 100644 --- a/include/xo/reader/define_xs.hpp +++ b/include/xo/reader/define_xs.hpp @@ -42,7 +42,9 @@ namespace xo { defexprstatetype defxs_type() const { return defxs_type_; } +#ifdef OBSOLETE virtual bool admits_definition() const override; +#endif virtual bool admits_symbol() const override; virtual bool admits_colon() const override; virtual bool admits_semicolon() const override; diff --git a/include/xo/reader/exprseq_xs.hpp b/include/xo/reader/exprseq_xs.hpp index 28a17088..261cbd5a 100644 --- a/include/xo/reader/exprseq_xs.hpp +++ b/include/xo/reader/exprseq_xs.hpp @@ -15,6 +15,11 @@ namespace xo { * **/ class exprseq_xs : public exprstate { + public: + exprseq_xs(); + + static std::unique_ptr expect_toplevel_expression_sequence(); + public: // ----- token input methods ----- diff --git a/include/xo/reader/exprstate.hpp b/include/xo/reader/exprstate.hpp index c775a5b9..7b590f48 100644 --- a/include/xo/reader/exprstate.hpp +++ b/include/xo/reader/exprstate.hpp @@ -70,9 +70,11 @@ namespace xo { {} virtual ~exprstate() = default; +#ifdef RELOCATED static std::unique_ptr expect_toplevel_expression_sequence() { return std::make_unique(exprstate(exprstatetype::expect_toplevel_expression_sequence)); } +#endif static std::unique_ptr expect_rhs_expression() { return std::make_unique(exprstate(exprstatetype::expect_rhs_expression)); } @@ -85,10 +87,12 @@ namespace xo { exprstatetype exs_type() const { return exs_type_; } +#ifdef OBSOLETE /** true iff this parsing state admits a 'def' keyword * as next token **/ virtual bool admits_definition() const; +#endif /** true iff this parsing state admits a symbol as next token **/ virtual bool admits_symbol() const; /** true iff this parsing state admits a colon as next token **/ diff --git a/include/xo/reader/paren_xs.hpp b/include/xo/reader/paren_xs.hpp index 5992837a..670a62c3 100644 --- a/include/xo/reader/paren_xs.hpp +++ b/include/xo/reader/paren_xs.hpp @@ -31,7 +31,9 @@ namespace xo { static std::unique_ptr lparen_0(); +#ifdef OBSOLETE virtual bool admits_definition() const override; +#endif virtual bool admits_symbol() const override; virtual bool admits_colon() const override; virtual bool admits_semicolon() const override; diff --git a/include/xo/reader/progress_xs.hpp b/include/xo/reader/progress_xs.hpp index 0a0516cf..9df42717 100644 --- a/include/xo/reader/progress_xs.hpp +++ b/include/xo/reader/progress_xs.hpp @@ -22,7 +22,9 @@ namespace xo { static std::unique_ptr make(rp valex); +#ifdef OBSOLETE virtual bool admits_definition() const override; +#endif virtual bool admits_symbol() const override; virtual bool admits_colon() const override; virtual bool admits_semicolon() const override; diff --git a/src/reader/define_xs.cpp b/src/reader/define_xs.cpp index 95fde120..3d85c860 100644 --- a/src/reader/define_xs.cpp +++ b/src/reader/define_xs.cpp @@ -15,6 +15,7 @@ namespace xo { def_expr_{std::move(def_expr)} {} +#ifdef OBSOLETE bool define_xs::admits_definition() const { @@ -41,6 +42,7 @@ namespace xo { return false; } +#endif bool define_xs::admits_symbol() const { diff --git a/src/reader/exprseq_xs.cpp b/src/reader/exprseq_xs.cpp index 012e9b2e..e0a5af6f 100644 --- a/src/reader/exprseq_xs.cpp +++ b/src/reader/exprseq_xs.cpp @@ -5,6 +5,17 @@ namespace xo { namespace scm { + std::unique_ptr + exprseq_xs::expect_toplevel_expression_sequence() + { + return std::make_unique(exprseq_xs()); + } + + exprseq_xs::exprseq_xs() + : exprstate(exprstatetype::expect_toplevel_expression_sequence) + { + } + void exprseq_xs::on_def_token(const token_type & /*tk*/, exprstatestack * p_stack) @@ -29,5 +40,4 @@ namespace xo { } /*namespace scm*/ } /*namespace xo*/ - /* end exprseq_xs.cpp */ diff --git a/src/reader/exprstate.cpp b/src/reader/exprstate.cpp index 6116b349..b04aa227 100644 --- a/src/reader/exprstate.cpp +++ b/src/reader/exprstate.cpp @@ -323,8 +323,11 @@ namespace xo { void exprstate::on_def_token(const token_type & tk, - exprstatestack * p_stack) + exprstatestack * /*p_stack*/) { + this->illegal_input_error("exprstate::on_def_token", tk); + +#ifdef OBSOLETE constexpr bool c_debug_flag = true; scope log(XO_DEBUG(c_debug_flag)); @@ -347,6 +350,7 @@ namespace xo { * def pi : f64 = 3.14159265 * def sq(x : f64) -> f64 { (x * x) } */ +#endif } void diff --git a/src/reader/paren_xs.cpp b/src/reader/paren_xs.cpp index 6d464178..0911928d 100644 --- a/src/reader/paren_xs.cpp +++ b/src/reader/paren_xs.cpp @@ -14,8 +14,10 @@ namespace xo { return std::make_unique(paren_xs()); } +#ifdef OBSOLETE bool paren_xs::admits_definition() const { return false; } +#endif bool paren_xs::admits_symbol() const { return true; } diff --git a/src/reader/parser.cpp b/src/reader/parser.cpp index f056eeac..5ac71dd0 100644 --- a/src/reader/parser.cpp +++ b/src/reader/parser.cpp @@ -5,6 +5,7 @@ #include "parser.hpp" #include "define_xs.hpp" +#include "exprseq_xs.hpp" #include "xo/expression/DefineExpr.hpp" #include "xo/expression/Constant.hpp" #include "xo/expression/ConvertExpr.hpp" @@ -30,7 +31,7 @@ namespace xo { void parser::begin_translation_unit() { xs_stack_.push_exprstate - (exprstate::expect_toplevel_expression_sequence()); + (exprseq_xs::expect_toplevel_expression_sequence()); } rp diff --git a/src/reader/progress_xs.cpp b/src/reader/progress_xs.cpp index a355229e..baf4df55 100644 --- a/src/reader/progress_xs.cpp +++ b/src/reader/progress_xs.cpp @@ -14,8 +14,10 @@ namespace xo { gen_expr_{std::move(valex)} {} +#ifdef OBSOLETE bool progress_xs::admits_definition() const { return false; } +#endif bool progress_xs::admits_symbol() const { return false; }