xo-reader2 xo-expression2: + DSequenceSsm ++ utest
This commit is contained in:
parent
334057613e
commit
15f779d2f8
64 changed files with 514 additions and 154 deletions
|
|
@ -183,7 +183,7 @@ xo_add_genfacetimpl(
|
||||||
TARGET xo-reader2-facetimpl-printable-ifelsessm
|
TARGET xo-reader2-facetimpl-printable-ifelsessm
|
||||||
FACET_PKG xo_printable2
|
FACET_PKG xo_printable2
|
||||||
FACET Printable
|
FACET Printable
|
||||||
REPR Ifelsessm
|
REPR IfElseSsm
|
||||||
INPUT idl/IPrintable_DIfElseSsm.json5
|
INPUT idl/IPrintable_DIfElseSsm.json5
|
||||||
OUTPUT_HPP_DIR include/xo/reader2
|
OUTPUT_HPP_DIR include/xo/reader2
|
||||||
OUTPUT_IMPL_SUBDIR ssm
|
OUTPUT_IMPL_SUBDIR ssm
|
||||||
|
|
@ -192,6 +192,32 @@ xo_add_genfacetimpl(
|
||||||
|
|
||||||
# ----------------------------------------------------------------
|
# ----------------------------------------------------------------
|
||||||
|
|
||||||
|
# note: manual target; generated code committed to git
|
||||||
|
xo_add_genfacetimpl(
|
||||||
|
TARGET xo-reader2-facetimpl-syntaxstatemachine-sequencessm
|
||||||
|
FACET_PKG xo_reader2
|
||||||
|
FACET SyntaxStateMachine
|
||||||
|
REPR SequenceSsm
|
||||||
|
INPUT idl/ISyntaxStateMachine_DSequenceSsm.json5
|
||||||
|
OUTPUT_HPP_DIR include/xo/reader2
|
||||||
|
OUTPUT_IMPL_SUBDIR ssm
|
||||||
|
OUTPUT_CPP_DIR src/reader2
|
||||||
|
)
|
||||||
|
|
||||||
|
# note: manual target; generated code committed to git
|
||||||
|
xo_add_genfacetimpl(
|
||||||
|
TARGET xo-reader2-facetimpl-printable-sequencessm
|
||||||
|
FACET_PKG xo_printable2
|
||||||
|
FACET Printable
|
||||||
|
REPR SequenceSsm
|
||||||
|
INPUT idl/IPrintable_DSequenceSsm.json5
|
||||||
|
OUTPUT_HPP_DIR include/xo/reader2
|
||||||
|
OUTPUT_IMPL_SUBDIR ssm
|
||||||
|
OUTPUT_CPP_DIR src/reader2
|
||||||
|
)
|
||||||
|
|
||||||
|
# ----------------------------------------------------------------
|
||||||
|
|
||||||
# note: manual target; generated code committed to git
|
# note: manual target; generated code committed to git
|
||||||
xo_add_genfacetimpl(
|
xo_add_genfacetimpl(
|
||||||
TARGET xo-reader2-facetimpl-syntaxstatemachine-expectsymbolssm
|
TARGET xo-reader2-facetimpl-syntaxstatemachine-expectsymbolssm
|
||||||
|
|
|
||||||
13
idl/IPrintable_DSequenceSsm.json5
Normal file
13
idl/IPrintable_DSequenceSsm.json5
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
{
|
||||||
|
mode: "implementation",
|
||||||
|
includes: [ "<xo/printable2/Printable.hpp>",
|
||||||
|
"<xo/printable2/detail/IPrintable_Xfer.hpp>" ],
|
||||||
|
local_types: [],
|
||||||
|
namespace1: "xo",
|
||||||
|
namespace2: "scm",
|
||||||
|
facet_idl: "idl/Printable.json5",
|
||||||
|
brief: "provide APrintable interface for DSequenceSsm",
|
||||||
|
using_doxygen: true,
|
||||||
|
repr: "DSequenceSsm",
|
||||||
|
doc: [ "implement APrintable for DSequenceSsm" ],
|
||||||
|
}
|
||||||
13
idl/ISyntaxStateMachine_DSequenceSsm.json5
Normal file
13
idl/ISyntaxStateMachine_DSequenceSsm.json5
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
{
|
||||||
|
mode: "implementation",
|
||||||
|
includes: [ "\"SyntaxStateMachine.hpp\"",
|
||||||
|
"\"ssm/ISyntaxStateMachine_Xfer.hpp\"" ],
|
||||||
|
local_types: [ ],
|
||||||
|
namespace1: "xo",
|
||||||
|
namespace2: "scm",
|
||||||
|
facet_idl: "idl/SyntaxStateMachine.json5",
|
||||||
|
brief: "provide ASyntaxStateMachine interface for DSequenceSsm",
|
||||||
|
using_doxygen: true,
|
||||||
|
repr: "DSequenceSsm",
|
||||||
|
doc: [ "implement ASyntaxStateMachine for DSequenceSsm" ],
|
||||||
|
}
|
||||||
|
|
@ -46,6 +46,12 @@ namespace xo {
|
||||||
/** @defgroup scm-expectexpr-methods general methods **/
|
/** @defgroup scm-expectexpr-methods general methods **/
|
||||||
///@{
|
///@{
|
||||||
|
|
||||||
|
/** update state for this syntax on incoming leftbrace token @p tk,
|
||||||
|
* with overall parser state in @p p_psm
|
||||||
|
**/
|
||||||
|
void on_leftbrace_token(const Token & tk,
|
||||||
|
ParserStateMachine * p_psm);
|
||||||
|
|
||||||
/** step state machine for this syntax on incoming boolean literal token @p tkk
|
/** step state machine for this syntax on incoming boolean literal token @p tkk
|
||||||
* with overall parser state in @p p_psm
|
* with overall parser state in @p p_psm
|
||||||
**/
|
**/
|
||||||
|
|
|
||||||
|
|
@ -166,27 +166,8 @@ namespace xo {
|
||||||
///@}
|
///@}
|
||||||
|
|
||||||
#ifdef NOT_YET
|
#ifdef NOT_YET
|
||||||
// ----- inherited from exprstate -----
|
|
||||||
|
|
||||||
virtual const char * get_expect_str() const override;
|
|
||||||
|
|
||||||
virtual void on_if_token(const token_type & tk,
|
|
||||||
parserstatemachine * p_psm) override;
|
|
||||||
virtual void on_then_token(const token_type & tk,
|
|
||||||
parserstatemachine * p_psm) override;
|
|
||||||
virtual void on_else_token(const token_type & tk,
|
|
||||||
parserstatemachine * p_psm) override;
|
|
||||||
virtual void on_semicolon_token(const token_type & tk,
|
|
||||||
parserstatemachine * p_psm) override;
|
|
||||||
virtual void on_rightbrace_token(const token_type & tk,
|
virtual void on_rightbrace_token(const token_type & tk,
|
||||||
parserstatemachine * p_psm) override;
|
parserstatemachine * p_psm) override;
|
||||||
|
|
||||||
virtual void on_expr(bp<Expression> expr,
|
|
||||||
parserstatemachine * p_psm) override;
|
|
||||||
virtual void on_expr_with_semicolon(bp<Expression> expr,
|
|
||||||
parserstatemachine * p_psm) override;
|
|
||||||
|
|
||||||
virtual void print(std::ostream & os) const override;
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
@ -203,6 +184,8 @@ namespace xo {
|
||||||
ifexprstatetype ifstate_ = ifexprstatetype::invalid;
|
ifexprstatetype ifstate_ = ifexprstatetype::invalid;
|
||||||
/** scaffold ifelse-expression here.
|
/** scaffold ifelse-expression here.
|
||||||
* This will eventually be the output of this ssm
|
* This will eventually be the output of this ssm
|
||||||
|
*
|
||||||
|
* TODO: can use DIfElseExpr* here. See xo-object2//DList
|
||||||
**/
|
**/
|
||||||
obj<AExpression,DIfElseExpr> if_expr_;
|
obj<AExpression,DIfElseExpr> if_expr_;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "DSyntaxStateMachine.hpp"
|
#include "DSyntaxStateMachine.hpp"
|
||||||
//#include "exprstate.hpp"
|
#include <xo/expression2/DSequenceExpr.hpp>
|
||||||
|
|
||||||
namespace xo {
|
namespace xo {
|
||||||
namespace scm { class Sequence; }
|
namespace scm { class Sequence; }
|
||||||
|
|
@ -15,21 +15,29 @@ namespace xo {
|
||||||
namespace scm {
|
namespace scm {
|
||||||
class DSequenceSsm : public DSyntaxStateMachine<DSequenceSsm> {
|
class DSequenceSsm : public DSyntaxStateMachine<DSequenceSsm> {
|
||||||
public:
|
public:
|
||||||
using Sequence = xo::scm::Sequence;
|
//using Sequence = xo::scm::Sequence;
|
||||||
using Lambda = xo::scm::Lambda;
|
//using Lambda = xo::scm::Lambda;
|
||||||
|
using AAllocator = xo::mm::AAllocator;
|
||||||
|
using DArena = xo::mm::DArena;
|
||||||
|
using ppindentinfo = xo::print::ppindentinfo;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
const char * ssm_classname() const noexcept { return "DSequenceSsm"; }
|
static const char * ssm_classname() { return "DSequenceSsm"; }
|
||||||
|
|
||||||
#ifdef NOT_YET
|
|
||||||
/** start parsing a sequence-expr.
|
/** start parsing a sequence-expr.
|
||||||
* input begins with first expression in the sequence.
|
* input begins with first expression in the sequence.
|
||||||
**/
|
**/
|
||||||
static void start(parserstatemachine * p_psm);
|
static void start(ParserStateMachine * p_psm);
|
||||||
|
|
||||||
/** named ctor idiom **/
|
/** create instance using memory from @p parser_mm **/
|
||||||
static std::unique_ptr<sequence_xs> make();
|
static obj<ASyntaxStateMachine,DSequenceSsm> make(DArena & parser_mm,
|
||||||
|
obj<AAllocator> expr_mm);
|
||||||
|
|
||||||
|
/** create instance using memory from @p parser_mm **/
|
||||||
|
static DSequenceSsm * _make(DArena & parser_mm,
|
||||||
|
obj<AAllocator> expr_mm);
|
||||||
|
|
||||||
|
#ifdef NOT_YET
|
||||||
virtual void on_expr(bp<Expression> expr,
|
virtual void on_expr(bp<Expression> expr,
|
||||||
parserstatemachine * p_psm) override;
|
parserstatemachine * p_psm) override;
|
||||||
virtual void on_expr_with_semicolon(bp<Expression> expr,
|
virtual void on_expr_with_semicolon(bp<Expression> expr,
|
||||||
|
|
@ -37,18 +45,34 @@ namespace xo {
|
||||||
|
|
||||||
virtual void on_rightbrace_token(const token_type & tk,
|
virtual void on_rightbrace_token(const token_type & tk,
|
||||||
parserstatemachine * p_psm) override;
|
parserstatemachine * p_psm) override;
|
||||||
|
|
||||||
virtual void print(std::ostream & os) const override;
|
|
||||||
virtual bool pretty_print(const xo::print::ppindentinfo & ppii) const override;
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
private:
|
/** @defgroup scm-sequencessm-syntaxstatemachine-facet ssm facet **/
|
||||||
DSequenceSsm();
|
///@{
|
||||||
|
|
||||||
|
/** indentifies this state machine **/
|
||||||
|
syntaxstatetype ssm_type() const noexcept;
|
||||||
|
|
||||||
|
/** mnemonic for syntax sequence ssm expects given current state **/
|
||||||
|
std::string_view get_expect_str() const noexcept;
|
||||||
|
|
||||||
|
///@}
|
||||||
|
/** @defgroup scm-sequencessm-printable-facet printable facet **/
|
||||||
|
///@{
|
||||||
|
|
||||||
|
/** pretty printing support **/
|
||||||
|
bool pretty(const ppindentinfo & ppii) const;
|
||||||
|
|
||||||
|
///@}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
/** will build SequenceExpr from in-order contents of this array **/
|
explicit DSequenceSsm(DSequenceExpr * seq_expr);
|
||||||
DArray * expr_v_;
|
|
||||||
//std::vector<rp<Expression>> expr_v_;
|
private:
|
||||||
|
/** scaffold sequence-expression here.
|
||||||
|
* This will eventually be the output of this ssm
|
||||||
|
**/
|
||||||
|
DSequenceExpr * seq_expr_ = nullptr;
|
||||||
};
|
};
|
||||||
} /*namespace scm*/
|
} /*namespace scm*/
|
||||||
} /*namespace xo*/
|
} /*namespace xo*/
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
*
|
*
|
||||||
* Generated automagically from ingredients:
|
* Generated automagically from ingredients:
|
||||||
* 1. code generator:
|
* 1. code generator:
|
||||||
* [/home/roland/proj/xo-umbrella2-claude1/xo-facet/codegen/genfacet]
|
* [xo-facet/codegen/genfacet]
|
||||||
* arguments:
|
* arguments:
|
||||||
* --input [idl/SyntaxStateMachine.json5]
|
* --input [idl/SyntaxStateMachine.json5]
|
||||||
* 2. jinja2 template for facet .hpp file:
|
* 2. jinja2 template for facet .hpp file:
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
*
|
*
|
||||||
* Generated automagically from ingredients:
|
* Generated automagically from ingredients:
|
||||||
* 1. code generator:
|
* 1. code generator:
|
||||||
* [/home/roland/proj/xo-umbrella2-claude1/xo-facet/codegen/genfacet]
|
* [xo-facet/codegen/genfacet]
|
||||||
* arguments:
|
* arguments:
|
||||||
* --input [idl/SyntaxStateMachine.json5]
|
* --input [idl/SyntaxStateMachine.json5]
|
||||||
* 2. jinja2 template for abstract facet .hpp file:
|
* 2. jinja2 template for abstract facet .hpp file:
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
*
|
*
|
||||||
* Generated automagically from ingredients:
|
* Generated automagically from ingredients:
|
||||||
* 1. code generator:
|
* 1. code generator:
|
||||||
* [/home/roland/proj/xo-umbrella2-claude1/xo-facet/codegen/genfacet]
|
* [xo-facet/codegen/genfacet]
|
||||||
* arguments:
|
* arguments:
|
||||||
* --input [idl/IPrintable_DDefineSsm.json5]
|
* --input [idl/IPrintable_DDefineSsm.json5]
|
||||||
* 2. jinja2 template for abstract facet .hpp file:
|
* 2. jinja2 template for abstract facet .hpp file:
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
*
|
*
|
||||||
* Generated automagically from ingredients:
|
* Generated automagically from ingredients:
|
||||||
* 1. code generator:
|
* 1. code generator:
|
||||||
* [/home/roland/proj/xo-umbrella2-claude1/xo-facet/codegen/genfacet]
|
* [xo-facet/codegen/genfacet]
|
||||||
* arguments:
|
* arguments:
|
||||||
* --input [idl/IPrintable_DExpectExprSsm.json5]
|
* --input [idl/IPrintable_DExpectExprSsm.json5]
|
||||||
* 2. jinja2 template for abstract facet .hpp file:
|
* 2. jinja2 template for abstract facet .hpp file:
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
*
|
*
|
||||||
* Generated automagically from ingredients:
|
* Generated automagically from ingredients:
|
||||||
* 1. code generator:
|
* 1. code generator:
|
||||||
* [/home/roland/proj/xo-umbrella2-claude1/xo-facet/codegen/genfacet]
|
* [xo-facet/codegen/genfacet]
|
||||||
* arguments:
|
* arguments:
|
||||||
* --input [idl/IPrintable_DExpectFormalArgSsm.json5]
|
* --input [idl/IPrintable_DExpectFormalArgSsm.json5]
|
||||||
* 2. jinja2 template for abstract facet .hpp file:
|
* 2. jinja2 template for abstract facet .hpp file:
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
*
|
*
|
||||||
* Generated automagically from ingredients:
|
* Generated automagically from ingredients:
|
||||||
* 1. code generator:
|
* 1. code generator:
|
||||||
* [/home/roland/proj/xo-umbrella2-claude1/xo-facet/codegen/genfacet]
|
* [xo-facet/codegen/genfacet]
|
||||||
* arguments:
|
* arguments:
|
||||||
* --input [idl/IPrintable_DExpectFormalArglistSsm.json5]
|
* --input [idl/IPrintable_DExpectFormalArglistSsm.json5]
|
||||||
* 2. jinja2 template for abstract facet .hpp file:
|
* 2. jinja2 template for abstract facet .hpp file:
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
*
|
*
|
||||||
* Generated automagically from ingredients:
|
* Generated automagically from ingredients:
|
||||||
* 1. code generator:
|
* 1. code generator:
|
||||||
* [/home/roland/proj/xo-umbrella2-claude1/xo-facet/codegen/genfacet]
|
* [xo-facet/codegen/genfacet]
|
||||||
* arguments:
|
* arguments:
|
||||||
* --input [idl/IPrintable_DExpectSymbolSsm.json5]
|
* --input [idl/IPrintable_DExpectSymbolSsm.json5]
|
||||||
* 2. jinja2 template for abstract facet .hpp file:
|
* 2. jinja2 template for abstract facet .hpp file:
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
*
|
*
|
||||||
* Generated automagically from ingredients:
|
* Generated automagically from ingredients:
|
||||||
* 1. code generator:
|
* 1. code generator:
|
||||||
* [/home/roland/proj/xo-umbrella2-claude1/xo-facet/codegen/genfacet]
|
* [xo-facet/codegen/genfacet]
|
||||||
* arguments:
|
* arguments:
|
||||||
* --input [idl/IPrintable_DExpectTypeSsm.json5]
|
* --input [idl/IPrintable_DExpectTypeSsm.json5]
|
||||||
* 2. jinja2 template for abstract facet .hpp file:
|
* 2. jinja2 template for abstract facet .hpp file:
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
*
|
*
|
||||||
* Generated automagically from ingredients:
|
* Generated automagically from ingredients:
|
||||||
* 1. code generator:
|
* 1. code generator:
|
||||||
* [/home/roland/proj/xo-umbrella2-claude1/xo-facet/codegen/genfacet]
|
* [xo-facet/codegen/genfacet]
|
||||||
* arguments:
|
* arguments:
|
||||||
* --input [idl/IPrintable_DExprSeqState.json5]
|
* --input [idl/IPrintable_DExprSeqState.json5]
|
||||||
* 2. jinja2 template for abstract facet .hpp file:
|
* 2. jinja2 template for abstract facet .hpp file:
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
*
|
*
|
||||||
* Generated automagically from ingredients:
|
* Generated automagically from ingredients:
|
||||||
* 1. code generator:
|
* 1. code generator:
|
||||||
* [/home/roland/proj/xo-umbrella2-claude1/xo-facet/codegen/genfacet]
|
* [xo-facet/codegen/genfacet]
|
||||||
* arguments:
|
* arguments:
|
||||||
* --input [idl/IPrintable_DIfElseSsm.json5]
|
* --input [idl/IPrintable_DIfElseSsm.json5]
|
||||||
* 2. jinja2 template for abstract facet .hpp file:
|
* 2. jinja2 template for abstract facet .hpp file:
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
*
|
*
|
||||||
* Generated automagically from ingredients:
|
* Generated automagically from ingredients:
|
||||||
* 1. code generator:
|
* 1. code generator:
|
||||||
* [/home/roland/proj/xo-umbrella2-claude1/xo-facet/codegen/genfacet]
|
* [xo-facet/codegen/genfacet]
|
||||||
* arguments:
|
* arguments:
|
||||||
* --input [idl/IPrintable_DLambdaSsm.json5]
|
* --input [idl/IPrintable_DLambdaSsm.json5]
|
||||||
* 2. jinja2 template for abstract facet .hpp file:
|
* 2. jinja2 template for abstract facet .hpp file:
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
*
|
*
|
||||||
* Generated automagically from ingredients:
|
* Generated automagically from ingredients:
|
||||||
* 1. code generator:
|
* 1. code generator:
|
||||||
* [/home/roland/proj/xo-umbrella2-claude1/xo-facet/codegen/genfacet]
|
* [xo-facet/codegen/genfacet]
|
||||||
* arguments:
|
* arguments:
|
||||||
* --input [idl/IPrintable_DProgressSsm.json5]
|
* --input [idl/IPrintable_DProgressSsm.json5]
|
||||||
* 2. jinja2 template for abstract facet .hpp file:
|
* 2. jinja2 template for abstract facet .hpp file:
|
||||||
|
|
|
||||||
62
include/xo/reader2/ssm/IPrintable_DSequenceSsm.hpp
Normal file
62
include/xo/reader2/ssm/IPrintable_DSequenceSsm.hpp
Normal file
|
|
@ -0,0 +1,62 @@
|
||||||
|
/** @file IPrintable_DSequenceSsm.hpp
|
||||||
|
*
|
||||||
|
* Generated automagically from ingredients:
|
||||||
|
* 1. code generator:
|
||||||
|
* [xo-facet/codegen/genfacet]
|
||||||
|
* arguments:
|
||||||
|
* --input [idl/IPrintable_DSequenceSsm.json5]
|
||||||
|
* 2. jinja2 template for abstract facet .hpp file:
|
||||||
|
* [iface_facet_repr.hpp.j2]
|
||||||
|
* 3. idl for facet methods
|
||||||
|
* [idl/IPrintable_DSequenceSsm.json5]
|
||||||
|
**/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "Printable.hpp"
|
||||||
|
#include <xo/printable2/Printable.hpp>
|
||||||
|
#include <xo/printable2/detail/IPrintable_Xfer.hpp>
|
||||||
|
#include "DSequenceSsm.hpp"
|
||||||
|
|
||||||
|
namespace xo { namespace scm { class IPrintable_DSequenceSsm; } }
|
||||||
|
|
||||||
|
namespace xo {
|
||||||
|
namespace facet {
|
||||||
|
template <>
|
||||||
|
struct FacetImplementation<xo::print::APrintable,
|
||||||
|
xo::scm::DSequenceSsm>
|
||||||
|
{
|
||||||
|
using ImplType = xo::print::IPrintable_Xfer
|
||||||
|
<xo::scm::DSequenceSsm,
|
||||||
|
xo::scm::IPrintable_DSequenceSsm>;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace xo {
|
||||||
|
namespace scm {
|
||||||
|
/** @class IPrintable_DSequenceSsm
|
||||||
|
**/
|
||||||
|
class IPrintable_DSequenceSsm {
|
||||||
|
public:
|
||||||
|
/** @defgroup scm-printable-dsequencessm-type-traits **/
|
||||||
|
///@{
|
||||||
|
using ppindentinfo = xo::print::APrintable::ppindentinfo;
|
||||||
|
using Copaque = xo::print::APrintable::Copaque;
|
||||||
|
using Opaque = xo::print::APrintable::Opaque;
|
||||||
|
///@}
|
||||||
|
/** @defgroup scm-printable-dsequencessm-methods **/
|
||||||
|
///@{
|
||||||
|
// const methods
|
||||||
|
/** Pretty-printing support for this object.
|
||||||
|
See [xo-indentlog/xo/indentlog/pretty.hpp] **/
|
||||||
|
static bool pretty(const DSequenceSsm & self, const ppindentinfo & ppii);
|
||||||
|
|
||||||
|
// non-const methods
|
||||||
|
///@}
|
||||||
|
};
|
||||||
|
|
||||||
|
} /*namespace scm*/
|
||||||
|
} /*namespace xo*/
|
||||||
|
|
||||||
|
/* end */
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
*
|
*
|
||||||
* Generated automagically from ingredients:
|
* Generated automagically from ingredients:
|
||||||
* 1. code generator:
|
* 1. code generator:
|
||||||
* [/home/roland/proj/xo-umbrella2-claude1/xo-facet/codegen/genfacet]
|
* [xo-facet/codegen/genfacet]
|
||||||
* arguments:
|
* arguments:
|
||||||
* --input [idl/SyntaxStateMachine.json5]
|
* --input [idl/SyntaxStateMachine.json5]
|
||||||
* 2. jinja2 template for abstract facet .hpp file:
|
* 2. jinja2 template for abstract facet .hpp file:
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
*
|
*
|
||||||
* Generated automagically from ingredients:
|
* Generated automagically from ingredients:
|
||||||
* 1. code generator:
|
* 1. code generator:
|
||||||
* [/home/roland/proj/xo-umbrella2-claude1/xo-facet/codegen/genfacet]
|
* [xo-facet/codegen/genfacet]
|
||||||
* arguments:
|
* arguments:
|
||||||
* --input [idl/ISyntaxStateMachine_DDefineSsm.json5]
|
* --input [idl/ISyntaxStateMachine_DDefineSsm.json5]
|
||||||
* 2. jinja2 template for abstract facet .hpp file:
|
* 2. jinja2 template for abstract facet .hpp file:
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
*
|
*
|
||||||
* Generated automagically from ingredients:
|
* Generated automagically from ingredients:
|
||||||
* 1. code generator:
|
* 1. code generator:
|
||||||
* [/home/roland/proj/xo-umbrella2-claude1/xo-facet/codegen/genfacet]
|
* [xo-facet/codegen/genfacet]
|
||||||
* arguments:
|
* arguments:
|
||||||
* --input [idl/ISyntaxStateMachine_DExpectExprSsm.json5]
|
* --input [idl/ISyntaxStateMachine_DExpectExprSsm.json5]
|
||||||
* 2. jinja2 template for abstract facet .hpp file:
|
* 2. jinja2 template for abstract facet .hpp file:
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
*
|
*
|
||||||
* Generated automagically from ingredients:
|
* Generated automagically from ingredients:
|
||||||
* 1. code generator:
|
* 1. code generator:
|
||||||
* [/home/roland/proj/xo-umbrella2-claude1/xo-facet/codegen/genfacet]
|
* [xo-facet/codegen/genfacet]
|
||||||
* arguments:
|
* arguments:
|
||||||
* --input [idl/ISyntaxStateMachine_DExpectFormalArgSsm.json5]
|
* --input [idl/ISyntaxStateMachine_DExpectFormalArgSsm.json5]
|
||||||
* 2. jinja2 template for abstract facet .hpp file:
|
* 2. jinja2 template for abstract facet .hpp file:
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
*
|
*
|
||||||
* Generated automagically from ingredients:
|
* Generated automagically from ingredients:
|
||||||
* 1. code generator:
|
* 1. code generator:
|
||||||
* [/home/roland/proj/xo-umbrella2-claude1/xo-facet/codegen/genfacet]
|
* [xo-facet/codegen/genfacet]
|
||||||
* arguments:
|
* arguments:
|
||||||
* --input [idl/ISyntaxStateMachine_DExpectFormalArglistSsm.json5]
|
* --input [idl/ISyntaxStateMachine_DExpectFormalArglistSsm.json5]
|
||||||
* 2. jinja2 template for abstract facet .hpp file:
|
* 2. jinja2 template for abstract facet .hpp file:
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
*
|
*
|
||||||
* Generated automagically from ingredients:
|
* Generated automagically from ingredients:
|
||||||
* 1. code generator:
|
* 1. code generator:
|
||||||
* [/home/roland/proj/xo-umbrella2-claude1/xo-facet/codegen/genfacet]
|
* [xo-facet/codegen/genfacet]
|
||||||
* arguments:
|
* arguments:
|
||||||
* --input [idl/ISyntaxStateMachine_DExpectSymbolSsm.json5]
|
* --input [idl/ISyntaxStateMachine_DExpectSymbolSsm.json5]
|
||||||
* 2. jinja2 template for abstract facet .hpp file:
|
* 2. jinja2 template for abstract facet .hpp file:
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
*
|
*
|
||||||
* Generated automagically from ingredients:
|
* Generated automagically from ingredients:
|
||||||
* 1. code generator:
|
* 1. code generator:
|
||||||
* [/home/roland/proj/xo-umbrella2-claude1/xo-facet/codegen/genfacet]
|
* [xo-facet/codegen/genfacet]
|
||||||
* arguments:
|
* arguments:
|
||||||
* --input [idl/ISyntaxStateMachine_DExpectTypeSsm.json5]
|
* --input [idl/ISyntaxStateMachine_DExpectTypeSsm.json5]
|
||||||
* 2. jinja2 template for abstract facet .hpp file:
|
* 2. jinja2 template for abstract facet .hpp file:
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
*
|
*
|
||||||
* Generated automagically from ingredients:
|
* Generated automagically from ingredients:
|
||||||
* 1. code generator:
|
* 1. code generator:
|
||||||
* [/home/roland/proj/xo-umbrella2-claude1/xo-facet/codegen/genfacet]
|
* [xo-facet/codegen/genfacet]
|
||||||
* arguments:
|
* arguments:
|
||||||
* --input [idl/ISyntaxStateMachine_DExprSeqState.json5]
|
* --input [idl/ISyntaxStateMachine_DExprSeqState.json5]
|
||||||
* 2. jinja2 template for abstract facet .hpp file:
|
* 2. jinja2 template for abstract facet .hpp file:
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
*
|
*
|
||||||
* Generated automagically from ingredients:
|
* Generated automagically from ingredients:
|
||||||
* 1. code generator:
|
* 1. code generator:
|
||||||
* [/home/roland/proj/xo-umbrella2-claude1/xo-facet/codegen/genfacet]
|
* [xo-facet/codegen/genfacet]
|
||||||
* arguments:
|
* arguments:
|
||||||
* --input [idl/ISyntaxStateMachine_DIfElseSsm.json5]
|
* --input [idl/ISyntaxStateMachine_DIfElseSsm.json5]
|
||||||
* 2. jinja2 template for abstract facet .hpp file:
|
* 2. jinja2 template for abstract facet .hpp file:
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
*
|
*
|
||||||
* Generated automagically from ingredients:
|
* Generated automagically from ingredients:
|
||||||
* 1. code generator:
|
* 1. code generator:
|
||||||
* [/home/roland/proj/xo-umbrella2-claude1/xo-facet/codegen/genfacet]
|
* [xo-facet/codegen/genfacet]
|
||||||
* arguments:
|
* arguments:
|
||||||
* --input [idl/ISyntaxStateMachine_DLambdaSsm.json5]
|
* --input [idl/ISyntaxStateMachine_DLambdaSsm.json5]
|
||||||
* 2. jinja2 template for abstract facet .hpp file:
|
* 2. jinja2 template for abstract facet .hpp file:
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
*
|
*
|
||||||
* Generated automagically from ingredients:
|
* Generated automagically from ingredients:
|
||||||
* 1. code generator:
|
* 1. code generator:
|
||||||
* [/home/roland/proj/xo-umbrella2-claude1/xo-facet/codegen/genfacet]
|
* [xo-facet/codegen/genfacet]
|
||||||
* arguments:
|
* arguments:
|
||||||
* --input [idl/ISyntaxStateMachine_DProgressSsm.json5]
|
* --input [idl/ISyntaxStateMachine_DProgressSsm.json5]
|
||||||
* 2. jinja2 template for abstract facet .hpp file:
|
* 2. jinja2 template for abstract facet .hpp file:
|
||||||
|
|
|
||||||
77
include/xo/reader2/ssm/ISyntaxStateMachine_DSequenceSsm.hpp
Normal file
77
include/xo/reader2/ssm/ISyntaxStateMachine_DSequenceSsm.hpp
Normal file
|
|
@ -0,0 +1,77 @@
|
||||||
|
/** @file ISyntaxStateMachine_DSequenceSsm.hpp
|
||||||
|
*
|
||||||
|
* Generated automagically from ingredients:
|
||||||
|
* 1. code generator:
|
||||||
|
* [xo-facet/codegen/genfacet]
|
||||||
|
* arguments:
|
||||||
|
* --input [idl/ISyntaxStateMachine_DSequenceSsm.json5]
|
||||||
|
* 2. jinja2 template for abstract facet .hpp file:
|
||||||
|
* [iface_facet_repr.hpp.j2]
|
||||||
|
* 3. idl for facet methods
|
||||||
|
* [idl/ISyntaxStateMachine_DSequenceSsm.json5]
|
||||||
|
**/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "SyntaxStateMachine.hpp"
|
||||||
|
#include "SyntaxStateMachine.hpp"
|
||||||
|
#include "ssm/ISyntaxStateMachine_Xfer.hpp"
|
||||||
|
#include "DSequenceSsm.hpp"
|
||||||
|
|
||||||
|
namespace xo { namespace scm { class ISyntaxStateMachine_DSequenceSsm; } }
|
||||||
|
|
||||||
|
namespace xo {
|
||||||
|
namespace facet {
|
||||||
|
template <>
|
||||||
|
struct FacetImplementation<xo::scm::ASyntaxStateMachine,
|
||||||
|
xo::scm::DSequenceSsm>
|
||||||
|
{
|
||||||
|
using ImplType = xo::scm::ISyntaxStateMachine_Xfer
|
||||||
|
<xo::scm::DSequenceSsm,
|
||||||
|
xo::scm::ISyntaxStateMachine_DSequenceSsm>;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace xo {
|
||||||
|
namespace scm {
|
||||||
|
/** @class ISyntaxStateMachine_DSequenceSsm
|
||||||
|
**/
|
||||||
|
class ISyntaxStateMachine_DSequenceSsm {
|
||||||
|
public:
|
||||||
|
/** @defgroup scm-syntaxstatemachine-dsequencessm-type-traits **/
|
||||||
|
///@{
|
||||||
|
using TypeDescr = xo::scm::ASyntaxStateMachine::TypeDescr;
|
||||||
|
using Copaque = xo::scm::ASyntaxStateMachine::Copaque;
|
||||||
|
using Opaque = xo::scm::ASyntaxStateMachine::Opaque;
|
||||||
|
///@}
|
||||||
|
/** @defgroup scm-syntaxstatemachine-dsequencessm-methods **/
|
||||||
|
///@{
|
||||||
|
// const methods
|
||||||
|
/** identify a type of syntax state machine **/
|
||||||
|
static syntaxstatetype ssm_type(const DSequenceSsm & self) noexcept;
|
||||||
|
/** text describing expected/allowed input to this ssm in current state **/
|
||||||
|
static std::string_view get_expect_str(const DSequenceSsm & self) noexcept;
|
||||||
|
|
||||||
|
// non-const methods
|
||||||
|
/** operate state machine for incoming token @p tk **/
|
||||||
|
static void on_token(DSequenceSsm & self, const Token & tk, ParserStateMachine * p_psm);
|
||||||
|
/** update stat machine for incoming parsed symbol @p sym **/
|
||||||
|
static void on_parsed_symbol(DSequenceSsm & self, std::string_view sym, ParserStateMachine * p_psm);
|
||||||
|
/** operate state machine for incoming type description @p td **/
|
||||||
|
static void on_parsed_typedescr(DSequenceSsm & self, TypeDescr td, ParserStateMachine * p_psm);
|
||||||
|
/** operate state machine for formal emitted by nested ssm **/
|
||||||
|
static void on_parsed_formal(DSequenceSsm & self, const DUniqueString * param_name, TypeDescr param_type, ParserStateMachine * p_psm);
|
||||||
|
/** consume formal arglist emitted by nested ssm **/
|
||||||
|
static void on_parsed_formal_arglist(DSequenceSsm & self, DArray * arglist, ParserStateMachine * p_psm);
|
||||||
|
/** update state machine for incoming parsed expression @p expr **/
|
||||||
|
static void on_parsed_expression(DSequenceSsm & self, obj<AExpression> expr, ParserStateMachine * p_psm);
|
||||||
|
/** update state machine for incoming parsed expression @p expr followed by semicolon **/
|
||||||
|
static void on_parsed_expression_with_semicolon(DSequenceSsm & self, obj<AExpression> expr, ParserStateMachine * p_psm);
|
||||||
|
///@}
|
||||||
|
};
|
||||||
|
|
||||||
|
} /*namespace scm*/
|
||||||
|
} /*namespace xo*/
|
||||||
|
|
||||||
|
/* end */
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
*
|
*
|
||||||
* Generated automagically from ingredients:
|
* Generated automagically from ingredients:
|
||||||
* 1. code generator:
|
* 1. code generator:
|
||||||
* [/home/roland/proj/xo-umbrella2-claude1/xo-facet/codegen/genfacet]
|
* [xo-facet/codegen/genfacet]
|
||||||
* arguments:
|
* arguments:
|
||||||
* --input [idl/SyntaxStateMachine.json5]
|
* --input [idl/SyntaxStateMachine.json5]
|
||||||
* 2. jinja2 template for abstract facet .hpp file:
|
* 2. jinja2 template for abstract facet .hpp file:
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
*
|
*
|
||||||
* Generated automagically from ingredients:
|
* Generated automagically from ingredients:
|
||||||
* 1. code generator:
|
* 1. code generator:
|
||||||
* [/home/roland/proj/xo-umbrella2-claude1/xo-facet/codegen/genfacet]
|
* [xo-facet/codegen/genfacet]
|
||||||
* arguments:
|
* arguments:
|
||||||
* --input [idl/SyntaxStateMachine.json5]
|
* --input [idl/SyntaxStateMachine.json5]
|
||||||
* 2. jinja2 template for abstract facet .hpp file:
|
* 2. jinja2 template for abstract facet .hpp file:
|
||||||
|
|
|
||||||
|
|
@ -18,6 +18,21 @@ namespace xo {
|
||||||
enum class syntaxstatetype {
|
enum class syntaxstatetype {
|
||||||
invalid = -1,
|
invalid = -1,
|
||||||
|
|
||||||
|
/** handle define-expression. See @ref DDefineSsm **/
|
||||||
|
defexpr,
|
||||||
|
|
||||||
|
/** handle lambda-expression. See @ref DLambdaSsm **/
|
||||||
|
lambdaexpr,
|
||||||
|
|
||||||
|
/** handle ifelse-expression. See @ref DIfElseSsm **/
|
||||||
|
ifelseexpr,
|
||||||
|
|
||||||
|
/** handle sequence-expression. See @ref DSequenceSsm **/
|
||||||
|
sequence,
|
||||||
|
|
||||||
|
/** rhs expression. state exists to achieve 1-token lookahead **/
|
||||||
|
progress,
|
||||||
|
|
||||||
/** toplevel of some translation unit. See @ref DExprSeqState **/
|
/** toplevel of some translation unit. See @ref DExprSeqState **/
|
||||||
expect_toplevel_expression_sequence,
|
expect_toplevel_expression_sequence,
|
||||||
|
|
||||||
|
|
@ -36,18 +51,6 @@ namespace xo {
|
||||||
/** expecting a rhs expression. See @ref DExpectExprSsm **/
|
/** expecting a rhs expression. See @ref DExpectExprSsm **/
|
||||||
expect_rhs_expression,
|
expect_rhs_expression,
|
||||||
|
|
||||||
/** handle define-expression. See @ref DDefineSsm **/
|
|
||||||
defexpr,
|
|
||||||
|
|
||||||
/** handle lambda-expression. See @ref DLambdaSsm **/
|
|
||||||
lambdaexpr,
|
|
||||||
|
|
||||||
/** handle ifelse-expression. See @ref DIfElseSsm **/
|
|
||||||
ifelseexpr,
|
|
||||||
|
|
||||||
/** rhs expression. state exists to achieve 1-token lookahead **/
|
|
||||||
progress,
|
|
||||||
|
|
||||||
/** comes lasts, counts number of valid enums **/
|
/** comes lasts, counts number of valid enums **/
|
||||||
N
|
N
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -29,6 +29,10 @@ set(SELF_SRCS
|
||||||
ISyntaxStateMachine_DIfElseSsm.cpp
|
ISyntaxStateMachine_DIfElseSsm.cpp
|
||||||
IPrintable_DIfElseSsm.cpp
|
IPrintable_DIfElseSsm.cpp
|
||||||
|
|
||||||
|
DSequenceSsm.cpp
|
||||||
|
ISyntaxStateMachine_DSequenceSsm.cpp
|
||||||
|
IPrintable_DSequenceSsm.cpp
|
||||||
|
|
||||||
DLambdaSsm.cpp
|
DLambdaSsm.cpp
|
||||||
ISyntaxStateMachine_DLambdaSsm.cpp
|
ISyntaxStateMachine_DLambdaSsm.cpp
|
||||||
IPrintable_DLambdaSsm.cpp
|
IPrintable_DLambdaSsm.cpp
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
#include "SyntaxStateMachine.hpp"
|
#include "SyntaxStateMachine.hpp"
|
||||||
#include "ssm/ISyntaxStateMachine_DExpectExprSsm.hpp"
|
#include "ssm/ISyntaxStateMachine_DExpectExprSsm.hpp"
|
||||||
#include "ssm/ISyntaxStateMachine_DProgressSsm.hpp"
|
#include "ssm/ISyntaxStateMachine_DProgressSsm.hpp"
|
||||||
|
#include "DSequenceSsm.hpp"
|
||||||
#include "syntaxstatetype.hpp"
|
#include "syntaxstatetype.hpp"
|
||||||
#include <xo/expression2/DConstant.hpp>
|
#include <xo/expression2/DConstant.hpp>
|
||||||
#include <xo/expression2/detail/IExpression_DConstant.hpp>
|
#include <xo/expression2/detail/IExpression_DConstant.hpp>
|
||||||
|
|
@ -114,6 +115,10 @@ namespace xo {
|
||||||
scope log(XO_DEBUG(p_psm->debug_flag()), xtag("tk", tk));
|
scope log(XO_DEBUG(p_psm->debug_flag()), xtag("tk", tk));
|
||||||
|
|
||||||
switch (tk.tk_type()) {
|
switch (tk.tk_type()) {
|
||||||
|
case tokentype::tk_leftbrace:
|
||||||
|
this->on_leftbrace_token(tk, p_psm);
|
||||||
|
return;
|
||||||
|
|
||||||
case tokentype::tk_symbol:
|
case tokentype::tk_symbol:
|
||||||
this->on_symbol_token(tk, p_psm);
|
this->on_symbol_token(tk, p_psm);
|
||||||
return;
|
return;
|
||||||
|
|
@ -148,7 +153,6 @@ namespace xo {
|
||||||
case tokentype::tk_rightparen:
|
case tokentype::tk_rightparen:
|
||||||
case tokentype::tk_leftbracket:
|
case tokentype::tk_leftbracket:
|
||||||
case tokentype::tk_rightbracket:
|
case tokentype::tk_rightbracket:
|
||||||
case tokentype::tk_leftbrace:
|
|
||||||
case tokentype::tk_rightbrace:
|
case tokentype::tk_rightbrace:
|
||||||
case tokentype::tk_leftangle:
|
case tokentype::tk_leftangle:
|
||||||
case tokentype::tk_rightangle:
|
case tokentype::tk_rightangle:
|
||||||
|
|
@ -179,6 +183,15 @@ namespace xo {
|
||||||
Super::on_token(tk, p_psm);
|
Super::on_token(tk, p_psm);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
DExpectExprSsm::on_leftbrace_token(const Token & tk,
|
||||||
|
ParserStateMachine * p_psm)
|
||||||
|
{
|
||||||
|
(void)tk;
|
||||||
|
|
||||||
|
DSequenceSsm::start(p_psm);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
DExpectExprSsm::on_symbol_token(const Token & tk,
|
DExpectExprSsm::on_symbol_token(const Token & tk,
|
||||||
ParserStateMachine * p_psm)
|
ParserStateMachine * p_psm)
|
||||||
|
|
@ -377,7 +390,8 @@ namespace xo {
|
||||||
(ppii,
|
(ppii,
|
||||||
"DExpectExprSsm",
|
"DExpectExprSsm",
|
||||||
refrtag("allow_defs", allow_defs_),
|
refrtag("allow_defs", allow_defs_),
|
||||||
refrtag("cxl_on_rightbrace", cxl_on_rightbrace_)
|
refrtag("cxl_on_rightbrace", cxl_on_rightbrace_),
|
||||||
|
refrtag("expect", this->get_expect_str())
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -412,16 +426,6 @@ namespace xo {
|
||||||
paren_xs::start(p_psm);
|
paren_xs::start(p_psm);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
|
||||||
expect_expr_xs::on_leftbrace_token(const token_type & /*tk*/,
|
|
||||||
parserstatemachine * p_psm)
|
|
||||||
{
|
|
||||||
scope log(XO_DEBUG(p_psm->debug_flag()));
|
|
||||||
|
|
||||||
/* push lparen_0 to remember to look for subsequent rightparen. */
|
|
||||||
sequence_xs::start(p_psm);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
expect_expr_xs::on_rightbrace_token(const token_type & tk,
|
expect_expr_xs::on_rightbrace_token(const token_type & tk,
|
||||||
parserstatemachine * p_psm)
|
parserstatemachine * p_psm)
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
/** @file lambda_xs.cpp
|
/** @file DLambdaSsm.cpp
|
||||||
*
|
*
|
||||||
* @author Roland Conybeare, Jan 2026
|
* @author Roland Conybeare, Jan 2026
|
||||||
**/
|
**/
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,8 @@
|
||||||
/* @file DSequenceSsm.cpp */
|
/* @file DSequenceSsm.cpp */
|
||||||
|
|
||||||
#include "DSequenceSsm.hpp"
|
#include "DSequenceSsm.hpp"
|
||||||
|
#include "ssm/ISyntaxStateMachine_DSequenceSsm.hpp"
|
||||||
|
#include "DExpectExprSsm.hpp"
|
||||||
|
|
||||||
#ifdef NOT_YET
|
#ifdef NOT_YET
|
||||||
#include "expect_expr_xs.hpp"
|
#include "expect_expr_xs.hpp"
|
||||||
|
|
@ -11,31 +13,67 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace xo {
|
namespace xo {
|
||||||
using xo::scm::DefineExpr;
|
#ifdef NOT_YET
|
||||||
|
using xo::scm::DDefineExpr;
|
||||||
|
#endif
|
||||||
|
using xo::facet::typeseq;
|
||||||
|
|
||||||
namespace scm {
|
namespace scm {
|
||||||
#ifdef NOT_YET
|
|
||||||
std::unique_ptr<sequence_xs>
|
|
||||||
sequence_xs::make() {
|
|
||||||
return std::make_unique<sequence_xs>(sequence_xs());
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
void
|
void
|
||||||
sequence_xs::start(parserstatemachine * p_psm) {
|
DSequenceSsm::start(ParserStateMachine * p_psm)
|
||||||
p_psm->push_exprstate(sequence_xs::make());
|
{
|
||||||
|
p_psm->push_ssm(DSequenceSsm::make(p_psm->parser_alloc(),
|
||||||
|
p_psm->expr_alloc()));
|
||||||
/* want to accept anything that starts an expression,
|
/* want to accept anything that starts an expression,
|
||||||
* except that } ends it
|
* except that rightbrace '}' ends it
|
||||||
*/
|
*/
|
||||||
expect_expr_xs::start(true /*allow_defs*/,
|
DExpectExprSsm::start(p_psm->parser_alloc(),
|
||||||
|
true /*allow_defs*/,
|
||||||
true /*cxl_on_rightbrace*/,
|
true /*cxl_on_rightbrace*/,
|
||||||
p_psm);
|
p_psm);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
obj<ASyntaxStateMachine,DSequenceSsm>
|
||||||
|
DSequenceSsm::make(DArena & mm,
|
||||||
|
obj<AAllocator> expr_mm)
|
||||||
|
{
|
||||||
|
return obj<ASyntaxStateMachine,DSequenceSsm>(_make(mm, expr_mm));
|
||||||
|
}
|
||||||
|
|
||||||
|
DSequenceSsm *
|
||||||
|
DSequenceSsm::_make(DArena & mm,
|
||||||
|
obj<AAllocator> expr_mm)
|
||||||
|
{
|
||||||
|
void * mem = mm.alloc(typeseq::id<DSequenceSsm>(),
|
||||||
|
sizeof(DSequenceSsm));
|
||||||
|
|
||||||
|
DSequenceExpr * seq_expr = DSequenceExpr::_make_empty(expr_mm);
|
||||||
|
|
||||||
|
return new (mem) DSequenceSsm(seq_expr);
|
||||||
|
}
|
||||||
|
|
||||||
|
DSequenceSsm::DSequenceSsm(DSequenceExpr * seq_expr) : seq_expr_{seq_expr}
|
||||||
|
{}
|
||||||
|
|
||||||
|
#ifdef NOT_YET
|
||||||
sequence_xs::sequence_xs()
|
sequence_xs::sequence_xs()
|
||||||
: exprstate(exprstatetype::sequenceexpr)
|
: exprstate(exprstatetype::sequenceexpr)
|
||||||
{}
|
{}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
syntaxstatetype
|
||||||
|
DSequenceSsm::ssm_type() const noexcept
|
||||||
|
{
|
||||||
|
return syntaxstatetype::sequence;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string_view
|
||||||
|
DSequenceSsm::get_expect_str() const noexcept
|
||||||
|
{
|
||||||
|
return "expr|semicolon|rightbrace";
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef NOT_YET
|
||||||
void
|
void
|
||||||
sequence_xs::on_expr(bp<Expression> expr,
|
sequence_xs::on_expr(bp<Expression> expr,
|
||||||
parserstatemachine * p_psm)
|
parserstatemachine * p_psm)
|
||||||
|
|
@ -122,12 +160,16 @@ namespace xo {
|
||||||
sequence_xs::print(std::ostream & os) const {
|
sequence_xs::print(std::ostream & os) const {
|
||||||
os << "<sequence_xs" << xtag("expr_v.size", expr_v_.size()) << ">";
|
os << "<sequence_xs" << xtag("expr_v.size", expr_v_.size()) << ">";
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
bool
|
bool
|
||||||
sequence_xs::pretty_print(const xo::print::ppindentinfo & ppii) const
|
DSequenceSsm::pretty(const xo::print::ppindentinfo & ppii) const
|
||||||
{
|
{
|
||||||
return ppii.pps()->pretty_struct(ppii, "sequence_xs",
|
return ppii.pps()->pretty_struct
|
||||||
xrefrtag("expr_v.size", expr_v_.size()));
|
(ppii,
|
||||||
|
"SequenceSsm",
|
||||||
|
xrefrtag("seq_expr.size", seq_expr_->size()),
|
||||||
|
xrefrtag("expect", this->get_expect_str()));
|
||||||
}
|
}
|
||||||
|
|
||||||
} /*namespace scm*/
|
} /*namespace scm*/
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
*
|
*
|
||||||
* Generated automagically from ingredients:
|
* Generated automagically from ingredients:
|
||||||
* 1. code generator:
|
* 1. code generator:
|
||||||
* [/home/roland/proj/xo-umbrella2-claude1/xo-facet/codegen/genfacet]
|
* [xo-facet/codegen/genfacet]
|
||||||
* arguments:
|
* arguments:
|
||||||
* --input [idl/IPrintable_DDefineSsm.json5]
|
* --input [idl/IPrintable_DDefineSsm.json5]
|
||||||
* 2. jinja2 template for abstract facet .hpp file:
|
* 2. jinja2 template for abstract facet .hpp file:
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
*
|
*
|
||||||
* Generated automagically from ingredients:
|
* Generated automagically from ingredients:
|
||||||
* 1. code generator:
|
* 1. code generator:
|
||||||
* [/home/roland/proj/xo-umbrella2-claude1/xo-facet/codegen/genfacet]
|
* [xo-facet/codegen/genfacet]
|
||||||
* arguments:
|
* arguments:
|
||||||
* --input [idl/IPrintable_DExpectExprSsm.json5]
|
* --input [idl/IPrintable_DExpectExprSsm.json5]
|
||||||
* 2. jinja2 template for abstract facet .hpp file:
|
* 2. jinja2 template for abstract facet .hpp file:
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
*
|
*
|
||||||
* Generated automagically from ingredients:
|
* Generated automagically from ingredients:
|
||||||
* 1. code generator:
|
* 1. code generator:
|
||||||
* [/home/roland/proj/xo-umbrella2-claude1/xo-facet/codegen/genfacet]
|
* [xo-facet/codegen/genfacet]
|
||||||
* arguments:
|
* arguments:
|
||||||
* --input [idl/IPrintable_DExpectFormalArgSsm.json5]
|
* --input [idl/IPrintable_DExpectFormalArgSsm.json5]
|
||||||
* 2. jinja2 template for abstract facet .hpp file:
|
* 2. jinja2 template for abstract facet .hpp file:
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
*
|
*
|
||||||
* Generated automagically from ingredients:
|
* Generated automagically from ingredients:
|
||||||
* 1. code generator:
|
* 1. code generator:
|
||||||
* [/home/roland/proj/xo-umbrella2-claude1/xo-facet/codegen/genfacet]
|
* [xo-facet/codegen/genfacet]
|
||||||
* arguments:
|
* arguments:
|
||||||
* --input [idl/IPrintable_DExpectFormalArglistSsm.json5]
|
* --input [idl/IPrintable_DExpectFormalArglistSsm.json5]
|
||||||
* 2. jinja2 template for abstract facet .hpp file:
|
* 2. jinja2 template for abstract facet .hpp file:
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
*
|
*
|
||||||
* Generated automagically from ingredients:
|
* Generated automagically from ingredients:
|
||||||
* 1. code generator:
|
* 1. code generator:
|
||||||
* [/home/roland/proj/xo-umbrella2-claude1/xo-facet/codegen/genfacet]
|
* [xo-facet/codegen/genfacet]
|
||||||
* arguments:
|
* arguments:
|
||||||
* --input [idl/IPrintable_DExpectSymbolSsm.json5]
|
* --input [idl/IPrintable_DExpectSymbolSsm.json5]
|
||||||
* 2. jinja2 template for abstract facet .hpp file:
|
* 2. jinja2 template for abstract facet .hpp file:
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
*
|
*
|
||||||
* Generated automagically from ingredients:
|
* Generated automagically from ingredients:
|
||||||
* 1. code generator:
|
* 1. code generator:
|
||||||
* [/home/roland/proj/xo-umbrella2-claude1/xo-facet/codegen/genfacet]
|
* [xo-facet/codegen/genfacet]
|
||||||
* arguments:
|
* arguments:
|
||||||
* --input [idl/IPrintable_DExpectTypeSsm.json5]
|
* --input [idl/IPrintable_DExpectTypeSsm.json5]
|
||||||
* 2. jinja2 template for abstract facet .hpp file:
|
* 2. jinja2 template for abstract facet .hpp file:
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
*
|
*
|
||||||
* Generated automagically from ingredients:
|
* Generated automagically from ingredients:
|
||||||
* 1. code generator:
|
* 1. code generator:
|
||||||
* [/home/roland/proj/xo-umbrella2-claude1/xo-facet/codegen/genfacet]
|
* [xo-facet/codegen/genfacet]
|
||||||
* arguments:
|
* arguments:
|
||||||
* --input [idl/IPrintable_DExprSeqState.json5]
|
* --input [idl/IPrintable_DExprSeqState.json5]
|
||||||
* 2. jinja2 template for abstract facet .hpp file:
|
* 2. jinja2 template for abstract facet .hpp file:
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
*
|
*
|
||||||
* Generated automagically from ingredients:
|
* Generated automagically from ingredients:
|
||||||
* 1. code generator:
|
* 1. code generator:
|
||||||
* [/home/roland/proj/xo-umbrella2-claude1/xo-facet/codegen/genfacet]
|
* [xo-facet/codegen/genfacet]
|
||||||
* arguments:
|
* arguments:
|
||||||
* --input [idl/IPrintable_DIfElseSsm.json5]
|
* --input [idl/IPrintable_DIfElseSsm.json5]
|
||||||
* 2. jinja2 template for abstract facet .hpp file:
|
* 2. jinja2 template for abstract facet .hpp file:
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
*
|
*
|
||||||
* Generated automagically from ingredients:
|
* Generated automagically from ingredients:
|
||||||
* 1. code generator:
|
* 1. code generator:
|
||||||
* [/home/roland/proj/xo-umbrella2-claude1/xo-facet/codegen/genfacet]
|
* [xo-facet/codegen/genfacet]
|
||||||
* arguments:
|
* arguments:
|
||||||
* --input [idl/IPrintable_DLambdaSsm.json5]
|
* --input [idl/IPrintable_DLambdaSsm.json5]
|
||||||
* 2. jinja2 template for abstract facet .hpp file:
|
* 2. jinja2 template for abstract facet .hpp file:
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
*
|
*
|
||||||
* Generated automagically from ingredients:
|
* Generated automagically from ingredients:
|
||||||
* 1. code generator:
|
* 1. code generator:
|
||||||
* [/home/roland/proj/xo-umbrella2-claude1/xo-facet/codegen/genfacet]
|
* [xo-facet/codegen/genfacet]
|
||||||
* arguments:
|
* arguments:
|
||||||
* --input [idl/IPrintable_DProgressSsm.json5]
|
* --input [idl/IPrintable_DProgressSsm.json5]
|
||||||
* 2. jinja2 template for abstract facet .hpp file:
|
* 2. jinja2 template for abstract facet .hpp file:
|
||||||
|
|
|
||||||
28
src/reader2/IPrintable_DSequenceSsm.cpp
Normal file
28
src/reader2/IPrintable_DSequenceSsm.cpp
Normal file
|
|
@ -0,0 +1,28 @@
|
||||||
|
/** @file IPrintable_DSequenceSsm.cpp
|
||||||
|
*
|
||||||
|
* Generated automagically from ingredients:
|
||||||
|
* 1. code generator:
|
||||||
|
* [xo-facet/codegen/genfacet]
|
||||||
|
* arguments:
|
||||||
|
* --input [idl/IPrintable_DSequenceSsm.json5]
|
||||||
|
* 2. jinja2 template for abstract facet .hpp file:
|
||||||
|
* [iface_facet_any.hpp.j2]
|
||||||
|
* 3. idl for facet methods
|
||||||
|
* [idl/IPrintable_DSequenceSsm.json5]
|
||||||
|
**/
|
||||||
|
|
||||||
|
#include "ssm/IPrintable_DSequenceSsm.hpp"
|
||||||
|
|
||||||
|
namespace xo {
|
||||||
|
namespace scm {
|
||||||
|
auto
|
||||||
|
IPrintable_DSequenceSsm::pretty(const DSequenceSsm & self, const ppindentinfo & ppii) -> bool
|
||||||
|
{
|
||||||
|
return self.pretty(ppii);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
} /*namespace scm*/
|
||||||
|
} /*namespace xo*/
|
||||||
|
|
||||||
|
/* end IPrintable_DSequenceSsm.cpp */
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
*
|
*
|
||||||
* Generated automagically from ingredients:
|
* Generated automagically from ingredients:
|
||||||
* 1. code generator:
|
* 1. code generator:
|
||||||
* [/home/roland/proj/xo-umbrella2-claude1/xo-facet/codegen/genfacet]
|
* [xo-facet/codegen/genfacet]
|
||||||
* arguments:
|
* arguments:
|
||||||
* --input [idl/ISyntaxStateMachine_DDefineSsm.json5]
|
* --input [idl/ISyntaxStateMachine_DDefineSsm.json5]
|
||||||
* 2. jinja2 template for abstract facet .hpp file:
|
* 2. jinja2 template for abstract facet .hpp file:
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
*
|
*
|
||||||
* Generated automagically from ingredients:
|
* Generated automagically from ingredients:
|
||||||
* 1. code generator:
|
* 1. code generator:
|
||||||
* [/home/roland/proj/xo-umbrella2-claude1/xo-facet/codegen/genfacet]
|
* [xo-facet/codegen/genfacet]
|
||||||
* arguments:
|
* arguments:
|
||||||
* --input [idl/ISyntaxStateMachine_DExpectExprSsm.json5]
|
* --input [idl/ISyntaxStateMachine_DExpectExprSsm.json5]
|
||||||
* 2. jinja2 template for abstract facet .hpp file:
|
* 2. jinja2 template for abstract facet .hpp file:
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
*
|
*
|
||||||
* Generated automagically from ingredients:
|
* Generated automagically from ingredients:
|
||||||
* 1. code generator:
|
* 1. code generator:
|
||||||
* [/home/roland/proj/xo-umbrella2-claude1/xo-facet/codegen/genfacet]
|
* [xo-facet/codegen/genfacet]
|
||||||
* arguments:
|
* arguments:
|
||||||
* --input [idl/ISyntaxStateMachine_DExpectFormalArgSsm.json5]
|
* --input [idl/ISyntaxStateMachine_DExpectFormalArgSsm.json5]
|
||||||
* 2. jinja2 template for abstract facet .hpp file:
|
* 2. jinja2 template for abstract facet .hpp file:
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
*
|
*
|
||||||
* Generated automagically from ingredients:
|
* Generated automagically from ingredients:
|
||||||
* 1. code generator:
|
* 1. code generator:
|
||||||
* [/home/roland/proj/xo-umbrella2-claude1/xo-facet/codegen/genfacet]
|
* [xo-facet/codegen/genfacet]
|
||||||
* arguments:
|
* arguments:
|
||||||
* --input [idl/ISyntaxStateMachine_DExpectFormalArglistSsm.json5]
|
* --input [idl/ISyntaxStateMachine_DExpectFormalArglistSsm.json5]
|
||||||
* 2. jinja2 template for abstract facet .hpp file:
|
* 2. jinja2 template for abstract facet .hpp file:
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
*
|
*
|
||||||
* Generated automagically from ingredients:
|
* Generated automagically from ingredients:
|
||||||
* 1. code generator:
|
* 1. code generator:
|
||||||
* [/home/roland/proj/xo-umbrella2-claude1/xo-facet/codegen/genfacet]
|
* [xo-facet/codegen/genfacet]
|
||||||
* arguments:
|
* arguments:
|
||||||
* --input [idl/ISyntaxStateMachine_DExpectSymbolSsm.json5]
|
* --input [idl/ISyntaxStateMachine_DExpectSymbolSsm.json5]
|
||||||
* 2. jinja2 template for abstract facet .hpp file:
|
* 2. jinja2 template for abstract facet .hpp file:
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
*
|
*
|
||||||
* Generated automagically from ingredients:
|
* Generated automagically from ingredients:
|
||||||
* 1. code generator:
|
* 1. code generator:
|
||||||
* [/home/roland/proj/xo-umbrella2-claude1/xo-facet/codegen/genfacet]
|
* [xo-facet/codegen/genfacet]
|
||||||
* arguments:
|
* arguments:
|
||||||
* --input [idl/ISyntaxStateMachine_DExpectTypeSsm.json5]
|
* --input [idl/ISyntaxStateMachine_DExpectTypeSsm.json5]
|
||||||
* 2. jinja2 template for abstract facet .hpp file:
|
* 2. jinja2 template for abstract facet .hpp file:
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
*
|
*
|
||||||
* Generated automagically from ingredients:
|
* Generated automagically from ingredients:
|
||||||
* 1. code generator:
|
* 1. code generator:
|
||||||
* [/home/roland/proj/xo-umbrella2-claude1/xo-facet/codegen/genfacet]
|
* [xo-facet/codegen/genfacet]
|
||||||
* arguments:
|
* arguments:
|
||||||
* --input [idl/ISyntaxStateMachine_DExprSeqState.json5]
|
* --input [idl/ISyntaxStateMachine_DExprSeqState.json5]
|
||||||
* 2. jinja2 template for abstract facet .hpp file:
|
* 2. jinja2 template for abstract facet .hpp file:
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
*
|
*
|
||||||
* Generated automagically from ingredients:
|
* Generated automagically from ingredients:
|
||||||
* 1. code generator:
|
* 1. code generator:
|
||||||
* [/home/roland/proj/xo-umbrella2-claude1/xo-facet/codegen/genfacet]
|
* [xo-facet/codegen/genfacet]
|
||||||
* arguments:
|
* arguments:
|
||||||
* --input [idl/ISyntaxStateMachine_DIfElseSsm.json5]
|
* --input [idl/ISyntaxStateMachine_DIfElseSsm.json5]
|
||||||
* 2. jinja2 template for abstract facet .hpp file:
|
* 2. jinja2 template for abstract facet .hpp file:
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
*
|
*
|
||||||
* Generated automagically from ingredients:
|
* Generated automagically from ingredients:
|
||||||
* 1. code generator:
|
* 1. code generator:
|
||||||
* [/home/roland/proj/xo-umbrella2-claude1/xo-facet/codegen/genfacet]
|
* [xo-facet/codegen/genfacet]
|
||||||
* arguments:
|
* arguments:
|
||||||
* --input [idl/ISyntaxStateMachine_DLambdaSsm.json5]
|
* --input [idl/ISyntaxStateMachine_DLambdaSsm.json5]
|
||||||
* 2. jinja2 template for abstract facet .hpp file:
|
* 2. jinja2 template for abstract facet .hpp file:
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
*
|
*
|
||||||
* Generated automagically from ingredients:
|
* Generated automagically from ingredients:
|
||||||
* 1. code generator:
|
* 1. code generator:
|
||||||
* [/home/roland/proj/xo-umbrella2-claude1/xo-facet/codegen/genfacet]
|
* [xo-facet/codegen/genfacet]
|
||||||
* arguments:
|
* arguments:
|
||||||
* --input [idl/ISyntaxStateMachine_DProgressSsm.json5]
|
* --input [idl/ISyntaxStateMachine_DProgressSsm.json5]
|
||||||
* 2. jinja2 template for abstract facet .hpp file:
|
* 2. jinja2 template for abstract facet .hpp file:
|
||||||
|
|
|
||||||
69
src/reader2/ISyntaxStateMachine_DSequenceSsm.cpp
Normal file
69
src/reader2/ISyntaxStateMachine_DSequenceSsm.cpp
Normal file
|
|
@ -0,0 +1,69 @@
|
||||||
|
/** @file ISyntaxStateMachine_DSequenceSsm.cpp
|
||||||
|
*
|
||||||
|
* Generated automagically from ingredients:
|
||||||
|
* 1. code generator:
|
||||||
|
* [xo-facet/codegen/genfacet]
|
||||||
|
* arguments:
|
||||||
|
* --input [idl/ISyntaxStateMachine_DSequenceSsm.json5]
|
||||||
|
* 2. jinja2 template for abstract facet .hpp file:
|
||||||
|
* [iface_facet_any.hpp.j2]
|
||||||
|
* 3. idl for facet methods
|
||||||
|
* [idl/ISyntaxStateMachine_DSequenceSsm.json5]
|
||||||
|
**/
|
||||||
|
|
||||||
|
#include "ssm/ISyntaxStateMachine_DSequenceSsm.hpp"
|
||||||
|
|
||||||
|
namespace xo {
|
||||||
|
namespace scm {
|
||||||
|
auto
|
||||||
|
ISyntaxStateMachine_DSequenceSsm::ssm_type(const DSequenceSsm & self) noexcept -> syntaxstatetype
|
||||||
|
{
|
||||||
|
return self.ssm_type();
|
||||||
|
}
|
||||||
|
|
||||||
|
auto
|
||||||
|
ISyntaxStateMachine_DSequenceSsm::get_expect_str(const DSequenceSsm & self) noexcept -> std::string_view
|
||||||
|
{
|
||||||
|
return self.get_expect_str();
|
||||||
|
}
|
||||||
|
|
||||||
|
auto
|
||||||
|
ISyntaxStateMachine_DSequenceSsm::on_token(DSequenceSsm & self, const Token & tk, ParserStateMachine * p_psm) -> void
|
||||||
|
{
|
||||||
|
self.on_token(tk, p_psm);
|
||||||
|
}
|
||||||
|
auto
|
||||||
|
ISyntaxStateMachine_DSequenceSsm::on_parsed_symbol(DSequenceSsm & self, std::string_view sym, ParserStateMachine * p_psm) -> void
|
||||||
|
{
|
||||||
|
self.on_parsed_symbol(sym, p_psm);
|
||||||
|
}
|
||||||
|
auto
|
||||||
|
ISyntaxStateMachine_DSequenceSsm::on_parsed_typedescr(DSequenceSsm & self, TypeDescr td, ParserStateMachine * p_psm) -> void
|
||||||
|
{
|
||||||
|
self.on_parsed_typedescr(td, p_psm);
|
||||||
|
}
|
||||||
|
auto
|
||||||
|
ISyntaxStateMachine_DSequenceSsm::on_parsed_formal(DSequenceSsm & self, const DUniqueString * param_name, TypeDescr param_type, ParserStateMachine * p_psm) -> void
|
||||||
|
{
|
||||||
|
self.on_parsed_formal(param_name, param_type, p_psm);
|
||||||
|
}
|
||||||
|
auto
|
||||||
|
ISyntaxStateMachine_DSequenceSsm::on_parsed_formal_arglist(DSequenceSsm & self, DArray * arglist, ParserStateMachine * p_psm) -> void
|
||||||
|
{
|
||||||
|
self.on_parsed_formal_arglist(arglist, p_psm);
|
||||||
|
}
|
||||||
|
auto
|
||||||
|
ISyntaxStateMachine_DSequenceSsm::on_parsed_expression(DSequenceSsm & self, obj<AExpression> expr, ParserStateMachine * p_psm) -> void
|
||||||
|
{
|
||||||
|
self.on_parsed_expression(expr, p_psm);
|
||||||
|
}
|
||||||
|
auto
|
||||||
|
ISyntaxStateMachine_DSequenceSsm::on_parsed_expression_with_semicolon(DSequenceSsm & self, obj<AExpression> expr, ParserStateMachine * p_psm) -> void
|
||||||
|
{
|
||||||
|
self.on_parsed_expression_with_semicolon(expr, p_psm);
|
||||||
|
}
|
||||||
|
|
||||||
|
} /*namespace scm*/
|
||||||
|
} /*namespace xo*/
|
||||||
|
|
||||||
|
/* end ISyntaxStateMachine_DSequenceSsm.cpp */
|
||||||
|
|
@ -17,6 +17,8 @@
|
||||||
#include <xo/reader2/ssm/ISyntaxStateMachine_DIfElseSsm.hpp>
|
#include <xo/reader2/ssm/ISyntaxStateMachine_DIfElseSsm.hpp>
|
||||||
#include <xo/reader2/ssm/IPrintable_DIfElseSsm.hpp>
|
#include <xo/reader2/ssm/IPrintable_DIfElseSsm.hpp>
|
||||||
|
|
||||||
|
#include <xo/reader2/ssm/IPrintable_DSequenceSsm.hpp>
|
||||||
|
|
||||||
#include <xo/reader2/ssm/ISyntaxStateMachine_DExpectFormalArglistSsm.hpp>
|
#include <xo/reader2/ssm/ISyntaxStateMachine_DExpectFormalArglistSsm.hpp>
|
||||||
#include <xo/reader2/ssm/IPrintable_DExpectFormalArglistSsm.hpp>
|
#include <xo/reader2/ssm/IPrintable_DExpectFormalArglistSsm.hpp>
|
||||||
|
|
||||||
|
|
@ -63,6 +65,8 @@ namespace xo {
|
||||||
FacetRegistry::register_impl<ASyntaxStateMachine, DIfElseSsm>();
|
FacetRegistry::register_impl<ASyntaxStateMachine, DIfElseSsm>();
|
||||||
FacetRegistry::register_impl<APrintable, DIfElseSsm>();
|
FacetRegistry::register_impl<APrintable, DIfElseSsm>();
|
||||||
|
|
||||||
|
FacetRegistry::register_impl<APrintable, DSequenceSsm>();
|
||||||
|
|
||||||
FacetRegistry::register_impl<ASyntaxStateMachine, DExpectFormalArglistSsm>();
|
FacetRegistry::register_impl<ASyntaxStateMachine, DExpectFormalArglistSsm>();
|
||||||
FacetRegistry::register_impl<APrintable, DExpectFormalArglistSsm>();
|
FacetRegistry::register_impl<APrintable, DExpectFormalArglistSsm>();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,16 @@ namespace xo {
|
||||||
switch (x) {
|
switch (x) {
|
||||||
case syntaxstatetype::invalid:
|
case syntaxstatetype::invalid:
|
||||||
break;
|
break;
|
||||||
|
case syntaxstatetype::defexpr:
|
||||||
|
return "defexpr";
|
||||||
|
case syntaxstatetype::lambdaexpr:
|
||||||
|
return "lambdaexpr";
|
||||||
|
case syntaxstatetype::ifelseexpr:
|
||||||
|
return "ifelseexpr";
|
||||||
|
case syntaxstatetype::sequence:
|
||||||
|
return "sequence";
|
||||||
|
case syntaxstatetype::progress:
|
||||||
|
return "progress";
|
||||||
case syntaxstatetype::expect_toplevel_expression_sequence:
|
case syntaxstatetype::expect_toplevel_expression_sequence:
|
||||||
return "expect-toplevel-expression-sequence";
|
return "expect-toplevel-expression-sequence";
|
||||||
case syntaxstatetype::expect_formal_arglist:
|
case syntaxstatetype::expect_formal_arglist:
|
||||||
|
|
@ -25,14 +35,6 @@ namespace xo {
|
||||||
return "expect-type";
|
return "expect-type";
|
||||||
case syntaxstatetype::expect_rhs_expression:
|
case syntaxstatetype::expect_rhs_expression:
|
||||||
return "expect-rhs-expression";
|
return "expect-rhs-expression";
|
||||||
case syntaxstatetype::defexpr:
|
|
||||||
return "defexpr";
|
|
||||||
case syntaxstatetype::lambdaexpr:
|
|
||||||
return "lambdaexpr";
|
|
||||||
case syntaxstatetype::ifelseexpr:
|
|
||||||
return "ifelseexpr";
|
|
||||||
case syntaxstatetype::progress:
|
|
||||||
return "progress";
|
|
||||||
case syntaxstatetype::N:
|
case syntaxstatetype::N:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -363,7 +363,6 @@ namespace xo {
|
||||||
REQUIRE(result.is_incomplete());
|
REQUIRE(result.is_incomplete());
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef NOT_YET
|
|
||||||
{
|
{
|
||||||
auto & result = parser.on_token(Token::leftbrace_token());
|
auto & result = parser.on_token(Token::leftbrace_token());
|
||||||
|
|
||||||
|
|
@ -376,6 +375,7 @@ namespace xo {
|
||||||
REQUIRE(result.is_incomplete());
|
REQUIRE(result.is_incomplete());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef NOT_YET
|
||||||
{
|
{
|
||||||
auto & result = parser.on_token(Token::string_token("fooey"));
|
auto & result = parser.on_token(Token::string_token("fooey"));
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue