From 216eea9d2c59338aff782a3a07d068d2e179c94d Mon Sep 17 00:00:00 2001 From: Roland Conybeare Date: Thu, 1 Aug 2024 13:26:18 +1000 Subject: [PATCH] xo-parser: simplify: drop exprir.expr --- include/xo/parser/parser.hpp | 7 ------ src/parser/parser.cpp | 41 +++++------------------------------- 2 files changed, 5 insertions(+), 43 deletions(-) diff --git a/include/xo/parser/parser.hpp b/include/xo/parser/parser.hpp index 6e703376..db6ea524 100644 --- a/include/xo/parser/parser.hpp +++ b/include/xo/parser/parser.hpp @@ -19,7 +19,6 @@ namespace xo { empty, symbol, - expression, typedescr, n_exprirtype @@ -51,16 +50,12 @@ namespace xo { exprir(exprirtype xir_type, const std::string & x) : xir_type_{xir_type}, symbol_name_{x} {} - exprir(exprirtype xir_type, - rp expr) - : xir_type_{xir_type}, expr_{std::move(expr)} {} exprir(exprirtype xir_type, TypeDescr td) : xir_type_{xir_type}, td_{td} {} exprirtype xir_type() const { return xir_type_; } const std::string & symbol_name() const { return symbol_name_; } - const rp & expr() const { return expr_; } TypeDescr td() const { return td_; } void print(std::ostream & os) const; @@ -70,8 +65,6 @@ namespace xo { exprirtype xir_type_ = exprirtype::invalid; /** xir_type=symbol: a symbol (type or variable) name **/ std::string symbol_name_; - /** xir_type=expression: a completed expression **/ - rp expr_; /** xir_type=typedescr: object identifying/describing a datatype **/ TypeDescr td_ = nullptr; }; diff --git a/src/parser/parser.cpp b/src/parser/parser.cpp index b3e27701..8772e7fd 100644 --- a/src/parser/parser.cpp +++ b/src/parser/parser.cpp @@ -28,8 +28,6 @@ namespace xo { return "empty"; case exprirtype::symbol: return "symbol"; - case exprirtype::expression: - return "expression"; case exprirtype::typedescr: return "typedescr"; case exprirtype::n_exprirtype: @@ -43,8 +41,7 @@ namespace xo { exprir::print(std::ostream & os) const { os << "short_name()); os << ">"; @@ -576,8 +573,8 @@ namespace xo { void exprstate::on_exprir(const exprir & ir, - exprstatestack * p_stack, - rp * p_emit_expr) + exprstatestack * /*p_stack*/, + rp * /*p_emit_expr*/) { constexpr bool c_debug_flag = true; scope log(XO_DEBUG(c_debug_flag)); @@ -592,11 +589,6 @@ namespace xo { * parser::include_token() returns */ - if (ir.xir_type() == exprirtype::expression) { - *p_emit_expr = ir.expr(); - return; - } - /* NOT IMPLEMENTED */ assert(false); return; @@ -619,31 +611,8 @@ namespace xo { assert(false); return; case exprstatetype::def_4: - /* have all the ingredients to create an expression - * representing a definition - * - * 1. if ir_type is a symbol, interpret as variable name. - * Need to be able to locate variable by type - * 2. if ir_type is an expression, adopt as rhs - */ - if (ir.xir_type() == exprirtype::expression) { - /* TODO: do something with def_lhs_td */ - - rp rhs_value = ir.expr(); - - if (def_lhs_td_) - rhs_value = ConvertExpr::make(def_lhs_td_, rhs_value); - - rp def = DefineExpr::make(this->def_lhs_symbol_, - rhs_value); - - p_stack->pop_exprstate(); - return p_stack->top_exprstate().on_expr(def, - p_stack, p_emit_expr); - } else { - assert(false); - return; - } + assert(false); + return; case exprstatetype::expect_rhs_expression: case exprstatetype::expect_type: