diff --git a/xo-reader2/include/xo/reader2/DExprSeqState.hpp b/xo-reader2/include/xo/reader2/DExprSeqState.hpp index a7b19c28..62ae9f5e 100644 --- a/xo-reader2/include/xo/reader2/DExprSeqState.hpp +++ b/xo-reader2/include/xo/reader2/DExprSeqState.hpp @@ -5,8 +5,7 @@ #pragma once -#include "ParserStateMachine.hpp" -#include "SyntaxStateMachine.hpp" +#include "DSyntaxStateMachine.hpp" #include "syntaxstatetype.hpp" #include @@ -37,8 +36,9 @@ namespace xo { * * Similar to exprseq_xs in xo-expresion **/ - class DExprSeqState { + class DExprSeqState : public DSyntaxStateMachine { public: + using Super = DSyntaxStateMachine; using TypeDescr = xo::reflect::TypeDescr; using AAllocator = xo::mm::AAllocator; using ppindentinfo = xo::print::ppindentinfo; @@ -54,6 +54,8 @@ namespace xo { ParserStateMachine * p_psm); public: + const char * ssm_classname() const noexcept { return "DExprSeqState"; } + /** @defgroup scm-exprseq-ssm-facet syntaxstatemachine facet methods **/ ///@{ @@ -91,16 +93,6 @@ namespace xo { **/ void on_if_token(const Token & tk, ParserStateMachine * p_psm); - /** update state for this syntax on incoming colon token @p tk, - * overall parser state in @p p_psm - **/ - void on_colon_token(const Token & tk, ParserStateMachine * p_psm); - - /** update state for this syntax on incoming single-assign token @p tk, - * overall parser state in @p p_psm - **/ - void on_singleassign_token(const Token & tk, ParserStateMachine * p_psm); - /** update state for this syntax on incoming string token @p tk, * overall parser state in @p p_psm **/ @@ -121,36 +113,6 @@ namespace xo { **/ void on_bool_token(const Token & tk, ParserStateMachine * p_psm); - /** update state for this syntax on incoming semicolon token @p tk, - * overall parser state in @p p_psm - **/ - void on_semicolon_token(const Token & tk, ParserStateMachine * p_psm); - - /** update state for this syntax on parsed symbol @p sym - * from immediately-downstream ssm. - * overall parser state in @p p_psm - **/ - void on_parsed_symbol(std::string_view sym, ParserStateMachine * p_psm); - - /** update state for this syntax on parsed type-description @p td - * from nested ssm. - * overall parser state in @p p_psm - **/ - void on_parsed_typedescr(TypeDescr td, ParserStateMachine * p_psm); - - /** update this ssm to consume parsed formal param (name, value) - * emitted by nested ssm, with overall parser state in @p p_psm - **/ - void on_parsed_formal(const DUniqueString * param_name, - TypeDescr param_type, - 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 for this syntax on parsed expression @p expr * from nested ssm. * overall parser state in @p p_psm diff --git a/xo-reader2/src/reader2/DExprSeqState.cpp b/xo-reader2/src/reader2/DExprSeqState.cpp index 12847350..ca6bfa27 100644 --- a/xo-reader2/src/reader2/DExprSeqState.cpp +++ b/xo-reader2/src/reader2/DExprSeqState.cpp @@ -131,14 +131,6 @@ namespace xo { this->on_if_token(tk, p_psm); return; - case tokentype::tk_colon: - this->on_colon_token(tk, p_psm); - return; - - case tokentype::tk_singleassign: - this->on_singleassign_token(tk, p_psm); - return; - case tokentype::tk_string: this->on_string_token(tk, p_psm); return; @@ -155,10 +147,6 @@ namespace xo { this->on_bool_token(tk, p_psm); return; - case tokentype::tk_semicolon: - this->on_semicolon_token(tk, p_psm); - return; - // all the not-yet handled cases case tokentype::tk_invalid: case tokentype::tk_leftparen: @@ -173,7 +161,10 @@ namespace xo { case tokentype::tk_greatequal: case tokentype::tk_dot: case tokentype::tk_comma: + case tokentype::tk_colon: + case tokentype::tk_semicolon: case tokentype::tk_doublecolon: + case tokentype::tk_singleassign: case tokentype::tk_assign: case tokentype::tk_yields: case tokentype::tk_plus: @@ -225,9 +216,7 @@ namespace xo { break; } - p_psm->illegal_input_on_token("DExprSeqState::on_symbol_token", - tk, - this->get_expect_str()); + Super::on_token(tk, p_psm); } void @@ -264,9 +253,7 @@ namespace xo { break; } - p_psm->illegal_input_on_token("DExprSeqState::on_lambda_token", - tk, - this->get_expect_str()); + Super::on_token(tk, p_psm); } void @@ -286,27 +273,7 @@ namespace xo { break; } - p_psm->illegal_input_on_token("DExprSeqState::on_if_token", - tk, - this->get_expect_str()); - } - - void - DExprSeqState::on_colon_token(const Token & tk, - ParserStateMachine * p_psm) - { - p_psm->illegal_input_on_token("DExprSeqState::on_colon_token", - tk, - this->get_expect_str()); - } - - void - DExprSeqState::on_singleassign_token(const Token & tk, - ParserStateMachine * p_psm) - { - p_psm->illegal_input_on_token("DExprSeqState::on_singleassign_token", - tk, - this->get_expect_str()); + Super::on_token(tk, p_psm); } void @@ -333,9 +300,7 @@ namespace xo { break; } - p_psm->illegal_input_on_token("DExprSeqState::on_string_token", - tk, - this->get_expect_str()); + Super::on_token(tk, p_psm); } void @@ -361,9 +326,7 @@ namespace xo { break; } - p_psm->illegal_input_on_token("DExprSeqState::on_f64_token", - tk, - this->get_expect_str()); + Super::on_token(tk, p_psm); } void @@ -389,9 +352,7 @@ namespace xo { break; } - p_psm->illegal_input_on_token("DExprSeqState::on_i64_token", - tk, - this->get_expect_str()); + Super::on_token(tk, p_psm); } void @@ -417,56 +378,7 @@ namespace xo { break; } - p_psm->illegal_input_on_token("DExprSeqState::on_bool_token", - tk, - this->get_expect_str()); - } - - void - DExprSeqState::on_semicolon_token(const Token & tk, - ParserStateMachine * p_psm) - { - p_psm->illegal_input_on_token("DExprSeqState::on_semicolon_token", - tk, - this->get_expect_str()); - } - - void - DExprSeqState::on_parsed_symbol(std::string_view sym, - ParserStateMachine * p_psm) - { - p_psm->illegal_input_on_symbol("DExprSeqState::on_parsed_symbol", - sym, - this->get_expect_str()); - } - - void - DExprSeqState::on_parsed_typedescr(TypeDescr td, - ParserStateMachine * p_psm) - { - p_psm->illegal_input_on_typedescr("DExprSeqState::on_parsed_typedescr", - td, - this->get_expect_str()); - } - - void - DExprSeqState::on_parsed_formal(const DUniqueString * param_name, - TypeDescr param_type, - ParserStateMachine * p_psm) - { - p_psm->illegal_parsed_formal("DExprSeqState::on_parsed_formal", - param_name, - param_type, - this->get_expect_str()); - } - - void - DExprSeqState::on_parsed_formal_arglist(DArray * arglist, - ParserStateMachine * p_psm) - { - p_psm->illegal_parsed_formal_arglist("DExprSeqState::on_parsed_formal_arglist", - arglist, - this->get_expect_str()); + Super::on_token(tk, p_psm); } void