diff --git a/include/xo/reader2/DExpectFormalArgSsm.hpp b/include/xo/reader2/DExpectFormalArgSsm.hpp index 51eb6536..5308c701 100644 --- a/include/xo/reader2/DExpectFormalArgSsm.hpp +++ b/include/xo/reader2/DExpectFormalArgSsm.hpp @@ -5,7 +5,7 @@ #pragma once -#include "SyntaxStateMachine.hpp" +#include "DSyntaxStateMachine.hpp" //#include //#include "exprstate.hpp" @@ -44,8 +44,9 @@ namespace xo { /** @class expect_formal_xs * @brief parser state-machine for a typed formal parameter **/ - class DExpectFormalArgSsm { + class DExpectFormalArgSsm : public DSyntaxStateMachine { public: + using Super = DSyntaxStateMachine; using TypeDescr = xo::reflect::TypeDescr; using DArena = xo::mm::DArena; using ppindentinfo = xo::print::ppindentinfo; @@ -70,6 +71,8 @@ namespace xo { /** @defgroup scm-expectformalargssm-methods general methods **/ ///@{ + const char * ssm_classname() const noexcept { return "DExpectFormalArgSsm"; } + /** update state on incoming colon token @p tk; * with overall parser state in @p p_psm **/ @@ -104,32 +107,6 @@ namespace xo { void on_parsed_typedescr(TypeDescr td, ParserStateMachine * p_psm); - /** consume parsed formal (name,type) = (@p sym, @p td) from nested ssm - * with overall parser state in @p p_psm. - * (In practice not reachable) - **/ - void on_parsed_formal(const DUniqueString * sym, - TypeDescr td, - ParserStateMachine * p_psm); - - /** consume formal params @p arglist from completed nested ssm, - * with overall parser state in @p p_psm. - **/ - void on_parsed_formal_arglist(DArray * arglist, - ParserStateMachine * p_psm); - - /** update state on parsed expression emitted by nested ssm - * with overall parser state in @p p_psm - **/ - void on_parsed_expression(obj expr, - ParserStateMachine * p_psm); - - /** update state on parsed expression, along with following semicolon, - * emitted by nested ssm with overall parser state in @p p_psm - **/ - void on_parsed_expression_with_semicolon(obj expr, - ParserStateMachine * p_psm); - ///@} /** @defgroup scm-expectformalargssm-printable-facet printable facet methods **/ ///@{ @@ -139,26 +116,12 @@ namespace xo { ///@} -#ifdef NOT_YET - - virtual void on_symbol(const std::string & symbol_name, - parserstatemachine * p_psm) override; - - // virtual void on_comma_token(...) override; - #ifdef PROBABLY_NOT virtual void on_rightparen_token(const token_type & tk, exprstatestack * p_stack, rp * p_emit_expr) override; #endif - virtual void on_typedescr(TypeDescr td, - parserstatemachine * p_psm) override; - - private: - static std::unique_ptr make(); -#endif - private: /** parsing state-machine state **/ formalstatetype fstate_ = formalstatetype::formal_0; diff --git a/src/reader2/DExpectFormalArgSsm.cpp b/src/reader2/DExpectFormalArgSsm.cpp index 4aaf7c4b..d865cd71 100644 --- a/src/reader2/DExpectFormalArgSsm.cpp +++ b/src/reader2/DExpectFormalArgSsm.cpp @@ -138,9 +138,7 @@ namespace xo { break; } - p_psm->illegal_input_on_token("DExpectFormalArgSsm::on_token", - tk, - this->get_expect_str()); + Super::on_token(tk, p_psm); } void @@ -156,9 +154,7 @@ namespace xo { return; } - p_psm->illegal_input_on_token("DExpectFormalArgSsm::on_colon_token", - tk, - this->get_expect_str()); + Super::on_token(tk, p_psm); } void @@ -175,9 +171,7 @@ namespace xo { return; } - p_psm->illegal_input_on_symbol("DExpectFormalArgSsm::on_parsed_symbol", - sym, - this->get_expect_str()); + Super::on_parsed_symbol(sym, p_psm); } void @@ -193,50 +187,7 @@ namespace xo { return; } - p_psm->illegal_input_on_typedescr("DExpectFormalArgSsm::on_parsed_typedescr", - td, - this->get_expect_str()); - } - - void - DExpectFormalArgSsm::on_parsed_formal(const DUniqueString * param_name, - TypeDescr param_type, - ParserStateMachine * p_psm) - { - // NOTE: (param_name,param_type) *produced* by this SSM, - // but never *consumed* - - p_psm->illegal_parsed_formal("DExpectFormalArgSsm::on_parsed_formal", - param_name, - param_type, - this->get_expect_str()); - } - - void - DExpectFormalArgSsm::on_parsed_formal_arglist(DArray * arglist, - ParserStateMachine * p_psm) - { - p_psm->illegal_parsed_formal_arglist("DExpectFormalArgSsm::on_parsed_formal_arglist", - arglist, - this->get_expect_str()); - } - - void - DExpectFormalArgSsm::on_parsed_expression(obj expr, - ParserStateMachine * p_psm) - { - p_psm->illegal_parsed_expression("DExpectFormalArgSsm::on_parsed_expression", - expr, - this->get_expect_str()); - } - - void - DExpectFormalArgSsm::on_parsed_expression_with_semicolon(obj expr, - ParserStateMachine * p_psm) - { - p_psm->illegal_parsed_expression("DExpectFormalArgSsm::on_parsed_expression_with_semicolon", - expr, - this->get_expect_str()); + Super::on_parsed_typedescr(td, p_psm); } #ifdef NOT_YET