From 452c224110806c04f894c6be73cc4f0ba4c5731b Mon Sep 17 00:00:00 2001 From: Roland Conybeare Date: Thu, 8 Aug 2024 11:41:27 -0400 Subject: [PATCH] xo-reader: refactor: mv admits_semicolon for defexpr -> define_xs --- include/xo/reader/define_xs.hpp | 1 + src/reader/define_xs.cpp | 31 +++++++++++++++++++++++++++++++ src/reader/parser.cpp | 1 + 3 files changed, 33 insertions(+) diff --git a/include/xo/reader/define_xs.hpp b/include/xo/reader/define_xs.hpp index b41454e3..4cd4a297 100644 --- a/include/xo/reader/define_xs.hpp +++ b/include/xo/reader/define_xs.hpp @@ -23,6 +23,7 @@ namespace xo { virtual bool admits_definition() const override; virtual bool admits_symbol() const override; virtual bool admits_colon() const override; + virtual bool admits_semicolon() const override; // virtual void on_f64(..) override virtual void on_expr(ref::brw expr, diff --git a/src/reader/define_xs.cpp b/src/reader/define_xs.cpp index 5c760e5e..85efffea 100644 --- a/src/reader/define_xs.cpp +++ b/src/reader/define_xs.cpp @@ -115,6 +115,37 @@ namespace xo { return false; } + bool + define_xs::admits_semicolon() const { + switch (exs_type_) { + case exprstatetype::expect_toplevel_expression_sequence: + /* unreachable */ + assert(false); + return false; + case exprstatetype::def_0: + case exprstatetype::def_1: + case exprstatetype::def_2: + case exprstatetype::def_3: + case exprstatetype::def_4: + return false; + case exprstatetype::def_5: + return true; + case exprstatetype::lparen_0: + case exprstatetype::lparen_1: + case exprstatetype::expect_rhs_expression: + case exprstatetype::expect_symbol: + case exprstatetype::expect_type: + case exprstatetype::expr_progress: + case exprstatetype::invalid: + case exprstatetype::n_exprstatetype: + /* unreachable */ + assert(false); + return false; + } + + return false; + } + void define_xs::on_expr(ref::brw expr, exprstatestack * /* p_stack */, diff --git a/src/reader/parser.cpp b/src/reader/parser.cpp index f503932c..db116b48 100644 --- a/src/reader/parser.cpp +++ b/src/reader/parser.cpp @@ -71,6 +71,7 @@ namespace xo { case exprstatetype::def_4: case exprstatetype::def_5: /* unreachable */ + assert(false); return false; case exprstatetype::lparen_0: case exprstatetype::lparen_1: