xo-reader: refactor: mv exprstate.cvt_expr -> define_xs

This commit is contained in:
Roland Conybeare 2024-08-08 15:15:07 -04:00
commit cbd411bbf8
4 changed files with 20 additions and 15 deletions

View file

@ -27,6 +27,9 @@ namespace xo {
* @brief state to provide parsing of a define-expression
**/
class define_xs : public exprstate {
public:
using ConvertExprAccess = xo::ast::ConvertExprAccess;
public:
define_xs(rp<DefineExprAccess> def_expr);
virtual ~define_xs() = default;
@ -66,6 +69,8 @@ namespace xo {
exprstatestack * p_stack,
rp<Expression> * /*p_emit_expr*/) override;
virtual void print(std::ostream & os) const override;
private:
/**
* def foo : f64 = 1 ;
@ -88,6 +93,10 @@ namespace xo {
*
**/
defexprstatetype defxs_type_;
/** scafford a convert-expression here.
* May be nested within a def_expr
**/
rp<ConvertExprAccess> cvt_expr_;
};
} /*namespace scm*/
} /*namespace xo*/

View file

@ -21,14 +21,6 @@ namespace xo {
expect_toplevel_expression_sequence,
defexpr,
#ifdef OBSOLETE
def_0,
def_1,
def_2,
def_3,
def_4,
def_5,
#endif
/* lparen_0: look for expression; capture + advance to lparen_1 */
lparen_0,
@ -74,7 +66,6 @@ namespace xo {
public:
using Expression = xo::ast::Expression;
using DefineExprAccess = xo::ast::DefineExprAccess;
using ConvertExprAccess = xo::ast::ConvertExprAccess;
using exprtype = xo::ast::exprtype;
using token_type = token<char>;
using TypeDescr = xo::reflect::TypeDescr;
@ -173,10 +164,6 @@ namespace xo {
rp<Expression> gen_expr_;
/** scaffold a define-expression here **/
rp<DefineExprAccess> def_expr_;
/** scafford a convert-expression here.
* May be nested within a def_expr
**/
rp<ConvertExprAccess> cvt_expr_;
}; /*exprstate*/
inline std::ostream &

View file

@ -462,6 +462,17 @@ namespace xo {
assert(false);
}
void
define_xs::print(std::ostream & os) const {
os << "<define_xs"
<< xtag("type", exs_type_);
if (def_expr_)
os << xtag("def_expr", def_expr_);
if (cvt_expr_)
os << xtag("cvt_expr", cvt_expr_);
os << ">";
}
} /*namespace scm*/
} /*namespace xo*/

View file

@ -930,8 +930,6 @@ namespace xo {
<< xtag("type", exs_type_);
if (def_expr_)
os << xtag("def_expr", def_expr_);
if (cvt_expr_)
os << xtag("cvt_expr", cvt_expr_);
os << ">";
}