diff --git a/src/reader2/DDefineSsm.cpp b/src/reader2/DDefineSsm.cpp index 6de3bd93..21ff70f0 100644 --- a/src/reader2/DDefineSsm.cpp +++ b/src/reader2/DDefineSsm.cpp @@ -11,6 +11,7 @@ #include "ssm/IPrintable_DDefineSsm.hpp" #include #include +#include #ifdef NOT_YET #include "parserstatemachine.hpp" @@ -22,6 +23,7 @@ namespace xo { using xo::print::APrintable; + using xo::facet::FacetRegistry; using xo::facet::with_facet; using xo::facet::typeseq; @@ -617,7 +619,7 @@ namespace xo { bool DDefineSsm::pretty(const ppindentinfo & ppii) const { - auto expr = with_facet::mkobj(def_expr_.data()); + auto expr = FacetRegistry::instance().variant(def_expr_); return ppii.pps()->pretty_struct (ppii, diff --git a/src/reader2/DProgressSsm.cpp b/src/reader2/DProgressSsm.cpp index f202728e..ec19e994 100644 --- a/src/reader2/DProgressSsm.cpp +++ b/src/reader2/DProgressSsm.cpp @@ -5,7 +5,10 @@ #include "DProgressSsm.hpp" #include "ssm/ISyntaxStateMachine_DProgressSsm.hpp" +#include +#include #include +#include #ifdef NOT_YET #include "apply_xs.hpp" @@ -25,6 +28,8 @@ namespace xo { using xo::scm::Variable; using xo::scm::Apply; #endif + using xo::print::APrintable; + using xo::facet::FacetRegistry; using xo::facet::with_facet; using xo::reflect::typeseq; @@ -211,12 +216,23 @@ namespace xo { DProgressSsm::on_semicolon_token(const Token & tk, ParserStateMachine * p_psm) { + constexpr bool c_debug_flag = true; + scope log(XO_DEBUG(c_debug_flag)); + /* note: implementation should parallel .on_rightparen_token() */ (void)tk; obj expr = this->assemble_expr(p_psm); + { + obj expr_pr = FacetRegistry::instance().variant(expr); + + assert(expr_pr); + + log && log(xtag("expr", expr_pr)); + } + p_psm->pop_ssm(); p_psm->on_parsed_expression_with_semicolon(expr); @@ -951,12 +967,23 @@ namespace xo { bool DProgressSsm::pretty(const xo::print::ppindentinfo & ppii) const { + scope log(XO_DEBUG(true)); + log && log(xtag("lhs_.tseq", lhs_._typeseq())); + log && log(xtag("rhs_.tseq", rhs_._typeseq())); + + obj lhs + = FacetRegistry::instance().variant(lhs_); + + obj rhs; + if (rhs_) + rhs = FacetRegistry::instance().variant(rhs_); + return ppii.pps()->pretty_struct (ppii, "DProgressSsm", - refrtag("lhs", lhs_), + refrtag("lhs", lhs), refrtag("op", op_type_), - refrtag("rhs", rhs_)); + cond(rhs, refrtag("rhs", rhs), "nullptr")); #ifdef NOPE if (ppii.upto()) {