From 3b1b4f03b52414881b96f27d25c8d97b25261a7c Mon Sep 17 00:00:00 2001 From: Roland Conybeare Date: Fri, 30 Jan 2026 14:33:44 -0500 Subject: [PATCH] xo-reader2: simplify DSyntaxStateMachine w/ DExpectFormalArglistSsm --- .../xo/reader2/DExpectFormalArglistSsm.hpp | 44 ++----------- .../src/reader2/DExpectFormalArglistSsm.cpp | 66 ++----------------- 2 files changed, 10 insertions(+), 100 deletions(-) diff --git a/xo-reader2/include/xo/reader2/DExpectFormalArglistSsm.hpp b/xo-reader2/include/xo/reader2/DExpectFormalArglistSsm.hpp index 81d7e85d..716dfc28 100644 --- a/xo-reader2/include/xo/reader2/DExpectFormalArglistSsm.hpp +++ b/xo-reader2/include/xo/reader2/DExpectFormalArglistSsm.hpp @@ -5,7 +5,7 @@ #pragma once -#include "SyntaxStateMachine.hpp" +#include "DSyntaxStateMachine.hpp" #include #include @@ -52,8 +52,9 @@ namespace xo { /** @class expect_formal_arglist * @brief parser state-machine for a formal parameter list **/ - class DExpectFormalArglistSsm { + class DExpectFormalArglistSsm : public DSyntaxStateMachine { public: + using Super = DSyntaxStateMachine; using DArena = xo::mm::DArena; using TypeDescr = xo::reflect::TypeDescr; using ppindentinfo = xo::print::ppindentinfo; @@ -71,6 +72,8 @@ namespace xo { /** @defgroup scm-expectformalarglistssm-methods general methods **/ ///@{ + const char * ssm_classname() const noexcept { return "DExpectFormalArglistSsm"; } + /** update state on incoming token @p tk, with overall parser state in @p p_psm **/ void on_leftparen_token(const Token & tk, ParserStateMachine * p_psm); @@ -99,18 +102,6 @@ namespace xo { void on_token(const Token & tk, ParserStateMachine * p_psm); - /** update state on parsed symbol @p sym emitted by nested ssm, - * with overall parser state in @p p_psm - **/ - void on_parsed_symbol(std::string_view sym, - ParserStateMachine * p_psm); - - /** update state on parsed typedescr @p td emitted by nested ssm, - * with overall parser state in @p p_psm - **/ - void on_parsed_typedescr(TypeDescr td, - ParserStateMachine * p_psm); - /** update state to consume parsed param (name,type) emitted by * nested ssm, with overall parser state in @p p_psm **/ @@ -118,31 +109,6 @@ namespace xo { 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 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); - -#ifdef NOT_YET - virtual void on_comma_token(const token_type & tk, - parserstatemachine * p_psm) override; - virtual void on_rightparen_token(const token_type & tk, - parserstatemachine * p_psm) override; -#endif - ///@} /** @defgroup scm-expectformalarglistssm-printable-facet printable facet methods **/ ///@{ diff --git a/xo-reader2/src/reader2/DExpectFormalArglistSsm.cpp b/xo-reader2/src/reader2/DExpectFormalArglistSsm.cpp index bebe4108..b34ad135 100644 --- a/xo-reader2/src/reader2/DExpectFormalArglistSsm.cpp +++ b/xo-reader2/src/reader2/DExpectFormalArglistSsm.cpp @@ -171,27 +171,7 @@ namespace xo { break; } - p_psm->illegal_input_on_token("DExpectFormalArglistSsm::on_token", - tk, - this->get_expect_str()); - } - - void - DExpectFormalArglistSsm::on_parsed_symbol(std::string_view sym, - ParserStateMachine * p_psm) - { - p_psm->illegal_input_on_symbol("DExpectFormalArglistSsm::on_parsed_symbol", - sym, - this->get_expect_str()); - } - - void - DExpectFormalArglistSsm::on_parsed_typedescr(TypeDescr td, - ParserStateMachine * p_psm) - { - p_psm->illegal_input_on_typedescr("DExpectFormalArglistSsm::on_parsed_typedescr", - td, - this->get_expect_str()); + Super::on_token(tk, p_psm); } void @@ -238,37 +218,7 @@ namespace xo { return; } - p_psm->illegal_parsed_formal("DExpectFormalArglistSsm::on_parsed_formal", - param_name, - param_type, - this->get_expect_str()); - } - - void - DExpectFormalArglistSsm::on_parsed_formal_arglist(DArray * arglist, - ParserStateMachine * p_psm) - { - p_psm->illegal_parsed_formal_arglist("DExpectFormalArglistSsm::on_parsed_formal_arglist", - arglist, - this->get_expect_str()); - } - - void - DExpectFormalArglistSsm::on_parsed_expression(obj expr, - ParserStateMachine * p_psm) - { - p_psm->illegal_parsed_expression("DExpectFormalArglistSsm::on_parsed_expression", - expr, - this->get_expect_str()); - } - - void - DExpectFormalArglistSsm::on_parsed_expression_with_semicolon(obj expr, - ParserStateMachine * p_psm) - { - p_psm->illegal_parsed_expression("DExpectFormalArglistSsm::on_parsed_expression_with_semicolon", - expr, - this->get_expect_str()); + Super::on_parsed_formal(param_name, param_type, p_psm); } void @@ -282,9 +232,7 @@ namespace xo { return; } - p_psm->illegal_input_on_token("DExpectFormalArglistSsm::on_token", - tk, - this->get_expect_str()); + Super::on_token(tk, p_psm); } void @@ -298,9 +246,7 @@ namespace xo { return; } - p_psm->illegal_input_on_token("DExpectFormalArglistSsm::on_comma_token", - tk, - this->get_expect_str()); + Super::on_token(tk, p_psm); } void @@ -315,9 +261,7 @@ namespace xo { return; } - p_psm->illegal_input_on_token("DExpectFormalArglistSsm::on_rightparen_token", - tk, - this->get_expect_str()); + Super::on_token(tk, p_psm); } bool