xo-reader2: simplify DDefineSsm w/ DSyntaxStateMachine

This commit is contained in:
Roland Conybeare 2026-01-30 14:11:46 -05:00
commit a3cb9b6d8d
2 changed files with 22 additions and 138 deletions

View file

@ -5,12 +5,13 @@
#pragma once
#include "ParserStateMachine.hpp"
#include "DSyntaxStateMachine.hpp"
//#include "SyntaxStateMachine.hpp"
#include "syntaxstatetype.hpp"
#include <xo/expression2/detail/IExpression_DDefineExpr.hpp>
#include <xo/expression2/DDefineExpr.hpp>
#include <xo/facet/obj.hpp>
#include <string_view>
namespace xo {
namespace scm {
@ -69,8 +70,9 @@ namespace xo {
/** @class DDefineSsm
* @brief state machine for parsing a define expression
**/
class DDefineSsm {
class DDefineSsm : public DSyntaxStateMachine<DDefineSsm> {
public:
using Super = DSyntaxStateMachine<DDefineSsm>;
using TypeDescr = xo::reflect::TypeDescr;
using AAllocator = xo::mm::AAllocator;
using DArena = xo::mm::DArena;
@ -102,6 +104,8 @@ namespace xo {
/** @defgroup scm-definessm-access-methods **/
///@{
const char * ssm_classname() const noexcept { return "DDefineSsm"; }
/** identify this nested state machine **/
defexprstatetype defstate() const noexcept { return defstate_; }
@ -135,12 +139,6 @@ namespace xo {
void on_def_token(const Token & tk,
ParserStateMachine * p_psm);
/** update state for this syntax on incoming token @p tk,
* overall parser state in @p p_psm
**/
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
**/
@ -153,30 +151,6 @@ namespace xo {
void on_singleassign_token(const Token & tk,
ParserStateMachine * p_psm);
/** update state for this syntax on incoming string tokne @p tk,
* overall parser state in @p p_psm
**/
void on_string_token(const Token & tk,
ParserStateMachine * p_psm);
/** update state for this syntax on incoming f64 token @p tk,
* overall parser state in @p p_psm
**/
void on_f64_token(const Token & tk,
ParserStateMachine * p_psm);
/** update state for this syntax on incoming i64 token @p tk,
* overall parser state in @p p_psm
**/
void on_i64_token(const Token & tk,
ParserStateMachine * p_psm);
/** update state for this syntax on incoming bool token @p tk,
* overall parser state in @p p_psm
**/
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
**/
@ -195,6 +169,7 @@ namespace xo {
void on_parsed_typedescr(TypeDescr td,
ParserStateMachine * p_psm);
#ifdef OBSOLETE
/** update state for this ssm to consume param (name,value)
* emitted by nested @p_psm
**/
@ -207,6 +182,7 @@ namespace xo {
**/
void on_parsed_formal_arglist(DArray * arglist,
ParserStateMachine * p_psm);
#endif
/** update state for this syntax after parsing an expression @p expr,
* overall parser state in @p p_psm