xo-reader2: scasffold for on_quoted_literal()
This commit is contained in:
parent
7b70296eb1
commit
3f8be97290
37 changed files with 212 additions and 16 deletions
|
|
@ -25,6 +25,7 @@
|
||||||
],
|
],
|
||||||
types: [
|
types: [
|
||||||
{ name: "TypeDescr", doc: [ "reflected c++ type" ], definition: "xo::reflect::TypeDescr" },
|
{ name: "TypeDescr", doc: [ "reflected c++ type" ], definition: "xo::reflect::TypeDescr" },
|
||||||
|
{ name: "AGCObject", doc: [ "gc-aware object" ], definition: "xo::mm::AGCObject" },
|
||||||
// { name: string, doc: [ string ], definition: string },
|
// { name: string, doc: [ string ], definition: string },
|
||||||
],
|
],
|
||||||
const_methods: [
|
const_methods: [
|
||||||
|
|
@ -107,7 +108,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "on_parsed_expression",
|
name: "on_parsed_expression",
|
||||||
doc: ["update state machine for incoming parsed expression @p expr"],
|
doc: ["update state machine for nested parsed expression @p expr"],
|
||||||
return_type: "void",
|
return_type: "void",
|
||||||
args: [
|
args: [
|
||||||
{type: "obj<AExpression>", name: "expr"},
|
{type: "obj<AExpression>", name: "expr"},
|
||||||
|
|
@ -124,6 +125,15 @@
|
||||||
{type: "ParserStateMachine *", name: "p_psm"},
|
{type: "ParserStateMachine *", name: "p_psm"},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: "on_quoted_literal",
|
||||||
|
doc: ["update state machine for nested quoted literal @p lit"],
|
||||||
|
return_type: "void",
|
||||||
|
args: [
|
||||||
|
{type: "obj<AGCObject>", name: "lit"},
|
||||||
|
{type: "ParserStateMachine *", name: "p_psm"},
|
||||||
|
],
|
||||||
|
}
|
||||||
],
|
],
|
||||||
router_facet_explicit_content: [ ],
|
router_facet_explicit_content: [ ],
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -30,6 +30,19 @@ namespace xo {
|
||||||
class DSyntaxStateMachine {
|
class DSyntaxStateMachine {
|
||||||
public:
|
public:
|
||||||
using TypeDescr = xo::reflect::TypeDescr;
|
using TypeDescr = xo::reflect::TypeDescr;
|
||||||
|
using AGCObject = xo::mm::AGCObject;
|
||||||
|
|
||||||
|
/** Explicit error path **/
|
||||||
|
void illegal_quoted_literal(obj<AGCObject> lit,
|
||||||
|
ParserStateMachine * p_psm)
|
||||||
|
{
|
||||||
|
// starting with c++23 can use "this auto&& self" instead
|
||||||
|
Derived & self = static_cast<Derived&>(*this);
|
||||||
|
|
||||||
|
p_psm->illegal_quoted_literal(Derived::ssm_classname(),
|
||||||
|
lit,
|
||||||
|
self.get_expect_str());
|
||||||
|
}
|
||||||
|
|
||||||
/** Default implementation for required SyntaxStateMachine facet method
|
/** Default implementation for required SyntaxStateMachine facet method
|
||||||
**/
|
**/
|
||||||
|
|
@ -148,6 +161,13 @@ namespace xo {
|
||||||
self.get_expect_str());
|
self.get_expect_str());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Default impplementation for required SyntaxStateMachine facet method **/
|
||||||
|
void on_quoted_literal(obj<AGCObject> lit,
|
||||||
|
ParserStateMachine * p_psm)
|
||||||
|
{
|
||||||
|
this->illegal_quoted_literal(lit, p_psm);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
} /*namespace scm*/
|
} /*namespace scm*/
|
||||||
|
|
|
||||||
|
|
@ -37,6 +37,7 @@ namespace xo {
|
||||||
using TypeDescr = xo::reflect::TypeDescr;
|
using TypeDescr = xo::reflect::TypeDescr;
|
||||||
using AAllocator = xo::mm::AAllocator;
|
using AAllocator = xo::mm::AAllocator;
|
||||||
using ArenaConfig = xo::mm::ArenaConfig;
|
using ArenaConfig = xo::mm::ArenaConfig;
|
||||||
|
using AGCObject = xo::mm::AGCObject;
|
||||||
using DArena = xo::mm::DArena;
|
using DArena = xo::mm::DArena;
|
||||||
using MemorySizeVisitor = xo::mm::MemorySizeVisitor;
|
using MemorySizeVisitor = xo::mm::MemorySizeVisitor;
|
||||||
using ArenaHashMapConfig = xo::map::ArenaHashMapConfig;
|
using ArenaHashMapConfig = xo::map::ArenaHashMapConfig;
|
||||||
|
|
@ -272,6 +273,13 @@ namespace xo {
|
||||||
const Token & tk,
|
const Token & tk,
|
||||||
std::string_view expect_str);
|
std::string_view expect_str);
|
||||||
|
|
||||||
|
/** report illegal quoted literal @p lit from nested ssm @p ssm_name.
|
||||||
|
* Possibly unreachable.
|
||||||
|
**/
|
||||||
|
void illegal_quoted_literal(std::string_view ssm_name,
|
||||||
|
obj<AGCObject> lit,
|
||||||
|
std::string_view expect_str);
|
||||||
|
|
||||||
/** report error - no binding for variable @p sym
|
/** report error - no binding for variable @p sym
|
||||||
**/
|
**/
|
||||||
void error_unbound_variable(std::string_view ssm_name,
|
void error_unbound_variable(std::string_view ssm_name,
|
||||||
|
|
|
||||||
|
|
@ -44,6 +44,8 @@ public:
|
||||||
using Opaque = void *;
|
using Opaque = void *;
|
||||||
/** reflected c++ type **/
|
/** reflected c++ type **/
|
||||||
using TypeDescr = xo::reflect::TypeDescr;
|
using TypeDescr = xo::reflect::TypeDescr;
|
||||||
|
/** gc-aware object **/
|
||||||
|
using AGCObject = xo::mm::AGCObject;
|
||||||
///@}
|
///@}
|
||||||
|
|
||||||
/** @defgroup scm-syntaxstatemachine-methods **/
|
/** @defgroup scm-syntaxstatemachine-methods **/
|
||||||
|
|
@ -71,10 +73,12 @@ public:
|
||||||
virtual void on_parsed_formal_with_token(Opaque data, const DUniqueString * param_name, TypeDescr param_type, const Token & tk, ParserStateMachine * p_psm) = 0;
|
virtual void on_parsed_formal_with_token(Opaque data, const DUniqueString * param_name, TypeDescr param_type, const Token & tk, ParserStateMachine * p_psm) = 0;
|
||||||
/** consume formal arglist emitted by nested ssm **/
|
/** consume formal arglist emitted by nested ssm **/
|
||||||
virtual void on_parsed_formal_arglist(Opaque data, DArray * arglist, ParserStateMachine * p_psm) = 0;
|
virtual void on_parsed_formal_arglist(Opaque data, DArray * arglist, ParserStateMachine * p_psm) = 0;
|
||||||
/** update state machine for incoming parsed expression @p expr **/
|
/** update state machine for nested parsed expression @p expr **/
|
||||||
virtual void on_parsed_expression(Opaque data, obj<AExpression> expr, ParserStateMachine * p_psm) = 0;
|
virtual void on_parsed_expression(Opaque data, obj<AExpression> expr, ParserStateMachine * p_psm) = 0;
|
||||||
/** update state machine @p p_psm for incoming parsed expression @p expr followed by token @p tk **/
|
/** update state machine @p p_psm for incoming parsed expression @p expr followed by token @p tk **/
|
||||||
virtual void on_parsed_expression_with_token(Opaque data, obj<AExpression> expr, const Token & tk, ParserStateMachine * p_psm) = 0;
|
virtual void on_parsed_expression_with_token(Opaque data, obj<AExpression> expr, const Token & tk, ParserStateMachine * p_psm) = 0;
|
||||||
|
/** update state machine for nested quoted literal @p lit **/
|
||||||
|
virtual void on_quoted_literal(Opaque data, obj<AGCObject> lit, ParserStateMachine * p_psm) = 0;
|
||||||
///@}
|
///@}
|
||||||
}; /*ASyntaxStateMachine*/
|
}; /*ASyntaxStateMachine*/
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -45,6 +45,7 @@ namespace scm {
|
||||||
/** integer identifying a type **/
|
/** integer identifying a type **/
|
||||||
using typeseq = xo::facet::typeseq;
|
using typeseq = xo::facet::typeseq;
|
||||||
using TypeDescr = ASyntaxStateMachine::TypeDescr;
|
using TypeDescr = ASyntaxStateMachine::TypeDescr;
|
||||||
|
using AGCObject = ASyntaxStateMachine::AGCObject;
|
||||||
|
|
||||||
///@}
|
///@}
|
||||||
/** @defgroup scm-syntaxstatemachine-any-methods **/
|
/** @defgroup scm-syntaxstatemachine-any-methods **/
|
||||||
|
|
@ -71,6 +72,7 @@ namespace scm {
|
||||||
[[noreturn]] void on_parsed_formal_arglist(Opaque, DArray *, ParserStateMachine *) override;
|
[[noreturn]] void on_parsed_formal_arglist(Opaque, DArray *, ParserStateMachine *) override;
|
||||||
[[noreturn]] void on_parsed_expression(Opaque, obj<AExpression>, ParserStateMachine *) override;
|
[[noreturn]] void on_parsed_expression(Opaque, obj<AExpression>, ParserStateMachine *) override;
|
||||||
[[noreturn]] void on_parsed_expression_with_token(Opaque, obj<AExpression>, const Token &, ParserStateMachine *) override;
|
[[noreturn]] void on_parsed_expression_with_token(Opaque, obj<AExpression>, const Token &, ParserStateMachine *) override;
|
||||||
|
[[noreturn]] void on_quoted_literal(Opaque, obj<AGCObject>, ParserStateMachine *) override;
|
||||||
|
|
||||||
///@}
|
///@}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -42,6 +42,7 @@ namespace xo {
|
||||||
/** @defgroup scm-syntaxstatemachine-dapplyssm-type-traits **/
|
/** @defgroup scm-syntaxstatemachine-dapplyssm-type-traits **/
|
||||||
///@{
|
///@{
|
||||||
using TypeDescr = xo::scm::ASyntaxStateMachine::TypeDescr;
|
using TypeDescr = xo::scm::ASyntaxStateMachine::TypeDescr;
|
||||||
|
using AGCObject = xo::scm::ASyntaxStateMachine::AGCObject;
|
||||||
using Copaque = xo::scm::ASyntaxStateMachine::Copaque;
|
using Copaque = xo::scm::ASyntaxStateMachine::Copaque;
|
||||||
using Opaque = xo::scm::ASyntaxStateMachine::Opaque;
|
using Opaque = xo::scm::ASyntaxStateMachine::Opaque;
|
||||||
///@}
|
///@}
|
||||||
|
|
@ -66,10 +67,12 @@ namespace xo {
|
||||||
static void on_parsed_formal_with_token(DApplySsm & self, const DUniqueString * param_name, TypeDescr param_type, const Token & tk, ParserStateMachine * p_psm);
|
static void on_parsed_formal_with_token(DApplySsm & self, const DUniqueString * param_name, TypeDescr param_type, const Token & tk, ParserStateMachine * p_psm);
|
||||||
/** consume formal arglist emitted by nested ssm **/
|
/** consume formal arglist emitted by nested ssm **/
|
||||||
static void on_parsed_formal_arglist(DApplySsm & self, DArray * arglist, ParserStateMachine * p_psm);
|
static void on_parsed_formal_arglist(DApplySsm & self, DArray * arglist, ParserStateMachine * p_psm);
|
||||||
/** update state machine for incoming parsed expression @p expr **/
|
/** update state machine for nested parsed expression @p expr **/
|
||||||
static void on_parsed_expression(DApplySsm & self, obj<AExpression> expr, ParserStateMachine * p_psm);
|
static void on_parsed_expression(DApplySsm & self, obj<AExpression> expr, ParserStateMachine * p_psm);
|
||||||
/** update state machine @p p_psm for incoming parsed expression @p expr followed by token @p tk **/
|
/** update state machine @p p_psm for incoming parsed expression @p expr followed by token @p tk **/
|
||||||
static void on_parsed_expression_with_token(DApplySsm & self, obj<AExpression> expr, const Token & tk, ParserStateMachine * p_psm);
|
static void on_parsed_expression_with_token(DApplySsm & self, obj<AExpression> expr, const Token & tk, ParserStateMachine * p_psm);
|
||||||
|
/** update state machine for nested quoted literal @p lit **/
|
||||||
|
static void on_quoted_literal(DApplySsm & self, obj<AGCObject> lit, ParserStateMachine * p_psm);
|
||||||
///@}
|
///@}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -42,6 +42,7 @@ namespace xo {
|
||||||
/** @defgroup scm-syntaxstatemachine-ddefinessm-type-traits **/
|
/** @defgroup scm-syntaxstatemachine-ddefinessm-type-traits **/
|
||||||
///@{
|
///@{
|
||||||
using TypeDescr = xo::scm::ASyntaxStateMachine::TypeDescr;
|
using TypeDescr = xo::scm::ASyntaxStateMachine::TypeDescr;
|
||||||
|
using AGCObject = xo::scm::ASyntaxStateMachine::AGCObject;
|
||||||
using Copaque = xo::scm::ASyntaxStateMachine::Copaque;
|
using Copaque = xo::scm::ASyntaxStateMachine::Copaque;
|
||||||
using Opaque = xo::scm::ASyntaxStateMachine::Opaque;
|
using Opaque = xo::scm::ASyntaxStateMachine::Opaque;
|
||||||
///@}
|
///@}
|
||||||
|
|
@ -66,10 +67,12 @@ namespace xo {
|
||||||
static void on_parsed_formal_with_token(DDefineSsm & self, const DUniqueString * param_name, TypeDescr param_type, const Token & tk, ParserStateMachine * p_psm);
|
static void on_parsed_formal_with_token(DDefineSsm & self, const DUniqueString * param_name, TypeDescr param_type, const Token & tk, ParserStateMachine * p_psm);
|
||||||
/** consume formal arglist emitted by nested ssm **/
|
/** consume formal arglist emitted by nested ssm **/
|
||||||
static void on_parsed_formal_arglist(DDefineSsm & self, DArray * arglist, ParserStateMachine * p_psm);
|
static void on_parsed_formal_arglist(DDefineSsm & self, DArray * arglist, ParserStateMachine * p_psm);
|
||||||
/** update state machine for incoming parsed expression @p expr **/
|
/** update state machine for nested parsed expression @p expr **/
|
||||||
static void on_parsed_expression(DDefineSsm & self, obj<AExpression> expr, ParserStateMachine * p_psm);
|
static void on_parsed_expression(DDefineSsm & self, obj<AExpression> expr, ParserStateMachine * p_psm);
|
||||||
/** update state machine @p p_psm for incoming parsed expression @p expr followed by token @p tk **/
|
/** update state machine @p p_psm for incoming parsed expression @p expr followed by token @p tk **/
|
||||||
static void on_parsed_expression_with_token(DDefineSsm & self, obj<AExpression> expr, const Token & tk, ParserStateMachine * p_psm);
|
static void on_parsed_expression_with_token(DDefineSsm & self, obj<AExpression> expr, const Token & tk, ParserStateMachine * p_psm);
|
||||||
|
/** update state machine for nested quoted literal @p lit **/
|
||||||
|
static void on_quoted_literal(DDefineSsm & self, obj<AGCObject> lit, ParserStateMachine * p_psm);
|
||||||
///@}
|
///@}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -42,6 +42,7 @@ namespace xo {
|
||||||
/** @defgroup scm-syntaxstatemachine-dexpectexprssm-type-traits **/
|
/** @defgroup scm-syntaxstatemachine-dexpectexprssm-type-traits **/
|
||||||
///@{
|
///@{
|
||||||
using TypeDescr = xo::scm::ASyntaxStateMachine::TypeDescr;
|
using TypeDescr = xo::scm::ASyntaxStateMachine::TypeDescr;
|
||||||
|
using AGCObject = xo::scm::ASyntaxStateMachine::AGCObject;
|
||||||
using Copaque = xo::scm::ASyntaxStateMachine::Copaque;
|
using Copaque = xo::scm::ASyntaxStateMachine::Copaque;
|
||||||
using Opaque = xo::scm::ASyntaxStateMachine::Opaque;
|
using Opaque = xo::scm::ASyntaxStateMachine::Opaque;
|
||||||
///@}
|
///@}
|
||||||
|
|
@ -66,10 +67,12 @@ namespace xo {
|
||||||
static void on_parsed_formal_with_token(DExpectExprSsm & self, const DUniqueString * param_name, TypeDescr param_type, const Token & tk, ParserStateMachine * p_psm);
|
static void on_parsed_formal_with_token(DExpectExprSsm & self, const DUniqueString * param_name, TypeDescr param_type, const Token & tk, ParserStateMachine * p_psm);
|
||||||
/** consume formal arglist emitted by nested ssm **/
|
/** consume formal arglist emitted by nested ssm **/
|
||||||
static void on_parsed_formal_arglist(DExpectExprSsm & self, DArray * arglist, ParserStateMachine * p_psm);
|
static void on_parsed_formal_arglist(DExpectExprSsm & self, DArray * arglist, ParserStateMachine * p_psm);
|
||||||
/** update state machine for incoming parsed expression @p expr **/
|
/** update state machine for nested parsed expression @p expr **/
|
||||||
static void on_parsed_expression(DExpectExprSsm & self, obj<AExpression> expr, ParserStateMachine * p_psm);
|
static void on_parsed_expression(DExpectExprSsm & self, obj<AExpression> expr, ParserStateMachine * p_psm);
|
||||||
/** update state machine @p p_psm for incoming parsed expression @p expr followed by token @p tk **/
|
/** update state machine @p p_psm for incoming parsed expression @p expr followed by token @p tk **/
|
||||||
static void on_parsed_expression_with_token(DExpectExprSsm & self, obj<AExpression> expr, const Token & tk, ParserStateMachine * p_psm);
|
static void on_parsed_expression_with_token(DExpectExprSsm & self, obj<AExpression> expr, const Token & tk, ParserStateMachine * p_psm);
|
||||||
|
/** update state machine for nested quoted literal @p lit **/
|
||||||
|
static void on_quoted_literal(DExpectExprSsm & self, obj<AGCObject> lit, ParserStateMachine * p_psm);
|
||||||
///@}
|
///@}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -42,6 +42,7 @@ namespace xo {
|
||||||
/** @defgroup scm-syntaxstatemachine-dexpectformalargssm-type-traits **/
|
/** @defgroup scm-syntaxstatemachine-dexpectformalargssm-type-traits **/
|
||||||
///@{
|
///@{
|
||||||
using TypeDescr = xo::scm::ASyntaxStateMachine::TypeDescr;
|
using TypeDescr = xo::scm::ASyntaxStateMachine::TypeDescr;
|
||||||
|
using AGCObject = xo::scm::ASyntaxStateMachine::AGCObject;
|
||||||
using Copaque = xo::scm::ASyntaxStateMachine::Copaque;
|
using Copaque = xo::scm::ASyntaxStateMachine::Copaque;
|
||||||
using Opaque = xo::scm::ASyntaxStateMachine::Opaque;
|
using Opaque = xo::scm::ASyntaxStateMachine::Opaque;
|
||||||
///@}
|
///@}
|
||||||
|
|
@ -66,10 +67,12 @@ namespace xo {
|
||||||
static void on_parsed_formal_with_token(DExpectFormalArgSsm & self, const DUniqueString * param_name, TypeDescr param_type, const Token & tk, ParserStateMachine * p_psm);
|
static void on_parsed_formal_with_token(DExpectFormalArgSsm & self, const DUniqueString * param_name, TypeDescr param_type, const Token & tk, ParserStateMachine * p_psm);
|
||||||
/** consume formal arglist emitted by nested ssm **/
|
/** consume formal arglist emitted by nested ssm **/
|
||||||
static void on_parsed_formal_arglist(DExpectFormalArgSsm & self, DArray * arglist, ParserStateMachine * p_psm);
|
static void on_parsed_formal_arglist(DExpectFormalArgSsm & self, DArray * arglist, ParserStateMachine * p_psm);
|
||||||
/** update state machine for incoming parsed expression @p expr **/
|
/** update state machine for nested parsed expression @p expr **/
|
||||||
static void on_parsed_expression(DExpectFormalArgSsm & self, obj<AExpression> expr, ParserStateMachine * p_psm);
|
static void on_parsed_expression(DExpectFormalArgSsm & self, obj<AExpression> expr, ParserStateMachine * p_psm);
|
||||||
/** update state machine @p p_psm for incoming parsed expression @p expr followed by token @p tk **/
|
/** update state machine @p p_psm for incoming parsed expression @p expr followed by token @p tk **/
|
||||||
static void on_parsed_expression_with_token(DExpectFormalArgSsm & self, obj<AExpression> expr, const Token & tk, ParserStateMachine * p_psm);
|
static void on_parsed_expression_with_token(DExpectFormalArgSsm & self, obj<AExpression> expr, const Token & tk, ParserStateMachine * p_psm);
|
||||||
|
/** update state machine for nested quoted literal @p lit **/
|
||||||
|
static void on_quoted_literal(DExpectFormalArgSsm & self, obj<AGCObject> lit, ParserStateMachine * p_psm);
|
||||||
///@}
|
///@}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -42,6 +42,7 @@ namespace xo {
|
||||||
/** @defgroup scm-syntaxstatemachine-dexpectformalarglistssm-type-traits **/
|
/** @defgroup scm-syntaxstatemachine-dexpectformalarglistssm-type-traits **/
|
||||||
///@{
|
///@{
|
||||||
using TypeDescr = xo::scm::ASyntaxStateMachine::TypeDescr;
|
using TypeDescr = xo::scm::ASyntaxStateMachine::TypeDescr;
|
||||||
|
using AGCObject = xo::scm::ASyntaxStateMachine::AGCObject;
|
||||||
using Copaque = xo::scm::ASyntaxStateMachine::Copaque;
|
using Copaque = xo::scm::ASyntaxStateMachine::Copaque;
|
||||||
using Opaque = xo::scm::ASyntaxStateMachine::Opaque;
|
using Opaque = xo::scm::ASyntaxStateMachine::Opaque;
|
||||||
///@}
|
///@}
|
||||||
|
|
@ -66,10 +67,12 @@ namespace xo {
|
||||||
static void on_parsed_formal_with_token(DExpectFormalArglistSsm & self, const DUniqueString * param_name, TypeDescr param_type, const Token & tk, ParserStateMachine * p_psm);
|
static void on_parsed_formal_with_token(DExpectFormalArglistSsm & self, const DUniqueString * param_name, TypeDescr param_type, const Token & tk, ParserStateMachine * p_psm);
|
||||||
/** consume formal arglist emitted by nested ssm **/
|
/** consume formal arglist emitted by nested ssm **/
|
||||||
static void on_parsed_formal_arglist(DExpectFormalArglistSsm & self, DArray * arglist, ParserStateMachine * p_psm);
|
static void on_parsed_formal_arglist(DExpectFormalArglistSsm & self, DArray * arglist, ParserStateMachine * p_psm);
|
||||||
/** update state machine for incoming parsed expression @p expr **/
|
/** update state machine for nested parsed expression @p expr **/
|
||||||
static void on_parsed_expression(DExpectFormalArglistSsm & self, obj<AExpression> expr, ParserStateMachine * p_psm);
|
static void on_parsed_expression(DExpectFormalArglistSsm & self, obj<AExpression> expr, ParserStateMachine * p_psm);
|
||||||
/** update state machine @p p_psm for incoming parsed expression @p expr followed by token @p tk **/
|
/** update state machine @p p_psm for incoming parsed expression @p expr followed by token @p tk **/
|
||||||
static void on_parsed_expression_with_token(DExpectFormalArglistSsm & self, obj<AExpression> expr, const Token & tk, ParserStateMachine * p_psm);
|
static void on_parsed_expression_with_token(DExpectFormalArglistSsm & self, obj<AExpression> expr, const Token & tk, ParserStateMachine * p_psm);
|
||||||
|
/** update state machine for nested quoted literal @p lit **/
|
||||||
|
static void on_quoted_literal(DExpectFormalArglistSsm & self, obj<AGCObject> lit, ParserStateMachine * p_psm);
|
||||||
///@}
|
///@}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -42,6 +42,7 @@ namespace xo {
|
||||||
/** @defgroup scm-syntaxstatemachine-dexpectsymbolssm-type-traits **/
|
/** @defgroup scm-syntaxstatemachine-dexpectsymbolssm-type-traits **/
|
||||||
///@{
|
///@{
|
||||||
using TypeDescr = xo::scm::ASyntaxStateMachine::TypeDescr;
|
using TypeDescr = xo::scm::ASyntaxStateMachine::TypeDescr;
|
||||||
|
using AGCObject = xo::scm::ASyntaxStateMachine::AGCObject;
|
||||||
using Copaque = xo::scm::ASyntaxStateMachine::Copaque;
|
using Copaque = xo::scm::ASyntaxStateMachine::Copaque;
|
||||||
using Opaque = xo::scm::ASyntaxStateMachine::Opaque;
|
using Opaque = xo::scm::ASyntaxStateMachine::Opaque;
|
||||||
///@}
|
///@}
|
||||||
|
|
@ -66,10 +67,12 @@ namespace xo {
|
||||||
static void on_parsed_formal_with_token(DExpectSymbolSsm & self, const DUniqueString * param_name, TypeDescr param_type, const Token & tk, ParserStateMachine * p_psm);
|
static void on_parsed_formal_with_token(DExpectSymbolSsm & self, const DUniqueString * param_name, TypeDescr param_type, const Token & tk, ParserStateMachine * p_psm);
|
||||||
/** consume formal arglist emitted by nested ssm **/
|
/** consume formal arglist emitted by nested ssm **/
|
||||||
static void on_parsed_formal_arglist(DExpectSymbolSsm & self, DArray * arglist, ParserStateMachine * p_psm);
|
static void on_parsed_formal_arglist(DExpectSymbolSsm & self, DArray * arglist, ParserStateMachine * p_psm);
|
||||||
/** update state machine for incoming parsed expression @p expr **/
|
/** update state machine for nested parsed expression @p expr **/
|
||||||
static void on_parsed_expression(DExpectSymbolSsm & self, obj<AExpression> expr, ParserStateMachine * p_psm);
|
static void on_parsed_expression(DExpectSymbolSsm & self, obj<AExpression> expr, ParserStateMachine * p_psm);
|
||||||
/** update state machine @p p_psm for incoming parsed expression @p expr followed by token @p tk **/
|
/** update state machine @p p_psm for incoming parsed expression @p expr followed by token @p tk **/
|
||||||
static void on_parsed_expression_with_token(DExpectSymbolSsm & self, obj<AExpression> expr, const Token & tk, ParserStateMachine * p_psm);
|
static void on_parsed_expression_with_token(DExpectSymbolSsm & self, obj<AExpression> expr, const Token & tk, ParserStateMachine * p_psm);
|
||||||
|
/** update state machine for nested quoted literal @p lit **/
|
||||||
|
static void on_quoted_literal(DExpectSymbolSsm & self, obj<AGCObject> lit, ParserStateMachine * p_psm);
|
||||||
///@}
|
///@}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -42,6 +42,7 @@ namespace xo {
|
||||||
/** @defgroup scm-syntaxstatemachine-dexpecttypessm-type-traits **/
|
/** @defgroup scm-syntaxstatemachine-dexpecttypessm-type-traits **/
|
||||||
///@{
|
///@{
|
||||||
using TypeDescr = xo::scm::ASyntaxStateMachine::TypeDescr;
|
using TypeDescr = xo::scm::ASyntaxStateMachine::TypeDescr;
|
||||||
|
using AGCObject = xo::scm::ASyntaxStateMachine::AGCObject;
|
||||||
using Copaque = xo::scm::ASyntaxStateMachine::Copaque;
|
using Copaque = xo::scm::ASyntaxStateMachine::Copaque;
|
||||||
using Opaque = xo::scm::ASyntaxStateMachine::Opaque;
|
using Opaque = xo::scm::ASyntaxStateMachine::Opaque;
|
||||||
///@}
|
///@}
|
||||||
|
|
@ -66,10 +67,12 @@ namespace xo {
|
||||||
static void on_parsed_formal_with_token(DExpectTypeSsm & self, const DUniqueString * param_name, TypeDescr param_type, const Token & tk, ParserStateMachine * p_psm);
|
static void on_parsed_formal_with_token(DExpectTypeSsm & self, const DUniqueString * param_name, TypeDescr param_type, const Token & tk, ParserStateMachine * p_psm);
|
||||||
/** consume formal arglist emitted by nested ssm **/
|
/** consume formal arglist emitted by nested ssm **/
|
||||||
static void on_parsed_formal_arglist(DExpectTypeSsm & self, DArray * arglist, ParserStateMachine * p_psm);
|
static void on_parsed_formal_arglist(DExpectTypeSsm & self, DArray * arglist, ParserStateMachine * p_psm);
|
||||||
/** update state machine for incoming parsed expression @p expr **/
|
/** update state machine for nested parsed expression @p expr **/
|
||||||
static void on_parsed_expression(DExpectTypeSsm & self, obj<AExpression> expr, ParserStateMachine * p_psm);
|
static void on_parsed_expression(DExpectTypeSsm & self, obj<AExpression> expr, ParserStateMachine * p_psm);
|
||||||
/** update state machine @p p_psm for incoming parsed expression @p expr followed by token @p tk **/
|
/** update state machine @p p_psm for incoming parsed expression @p expr followed by token @p tk **/
|
||||||
static void on_parsed_expression_with_token(DExpectTypeSsm & self, obj<AExpression> expr, const Token & tk, ParserStateMachine * p_psm);
|
static void on_parsed_expression_with_token(DExpectTypeSsm & self, obj<AExpression> expr, const Token & tk, ParserStateMachine * p_psm);
|
||||||
|
/** update state machine for nested quoted literal @p lit **/
|
||||||
|
static void on_quoted_literal(DExpectTypeSsm & self, obj<AGCObject> lit, ParserStateMachine * p_psm);
|
||||||
///@}
|
///@}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -42,6 +42,7 @@ namespace xo {
|
||||||
/** @defgroup scm-syntaxstatemachine-difelsessm-type-traits **/
|
/** @defgroup scm-syntaxstatemachine-difelsessm-type-traits **/
|
||||||
///@{
|
///@{
|
||||||
using TypeDescr = xo::scm::ASyntaxStateMachine::TypeDescr;
|
using TypeDescr = xo::scm::ASyntaxStateMachine::TypeDescr;
|
||||||
|
using AGCObject = xo::scm::ASyntaxStateMachine::AGCObject;
|
||||||
using Copaque = xo::scm::ASyntaxStateMachine::Copaque;
|
using Copaque = xo::scm::ASyntaxStateMachine::Copaque;
|
||||||
using Opaque = xo::scm::ASyntaxStateMachine::Opaque;
|
using Opaque = xo::scm::ASyntaxStateMachine::Opaque;
|
||||||
///@}
|
///@}
|
||||||
|
|
@ -66,10 +67,12 @@ namespace xo {
|
||||||
static void on_parsed_formal_with_token(DIfElseSsm & self, const DUniqueString * param_name, TypeDescr param_type, const Token & tk, ParserStateMachine * p_psm);
|
static void on_parsed_formal_with_token(DIfElseSsm & self, const DUniqueString * param_name, TypeDescr param_type, const Token & tk, ParserStateMachine * p_psm);
|
||||||
/** consume formal arglist emitted by nested ssm **/
|
/** consume formal arglist emitted by nested ssm **/
|
||||||
static void on_parsed_formal_arglist(DIfElseSsm & self, DArray * arglist, ParserStateMachine * p_psm);
|
static void on_parsed_formal_arglist(DIfElseSsm & self, DArray * arglist, ParserStateMachine * p_psm);
|
||||||
/** update state machine for incoming parsed expression @p expr **/
|
/** update state machine for nested parsed expression @p expr **/
|
||||||
static void on_parsed_expression(DIfElseSsm & self, obj<AExpression> expr, ParserStateMachine * p_psm);
|
static void on_parsed_expression(DIfElseSsm & self, obj<AExpression> expr, ParserStateMachine * p_psm);
|
||||||
/** update state machine @p p_psm for incoming parsed expression @p expr followed by token @p tk **/
|
/** update state machine @p p_psm for incoming parsed expression @p expr followed by token @p tk **/
|
||||||
static void on_parsed_expression_with_token(DIfElseSsm & self, obj<AExpression> expr, const Token & tk, ParserStateMachine * p_psm);
|
static void on_parsed_expression_with_token(DIfElseSsm & self, obj<AExpression> expr, const Token & tk, ParserStateMachine * p_psm);
|
||||||
|
/** update state machine for nested quoted literal @p lit **/
|
||||||
|
static void on_quoted_literal(DIfElseSsm & self, obj<AGCObject> lit, ParserStateMachine * p_psm);
|
||||||
///@}
|
///@}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -42,6 +42,7 @@ namespace xo {
|
||||||
/** @defgroup scm-syntaxstatemachine-dlambdassm-type-traits **/
|
/** @defgroup scm-syntaxstatemachine-dlambdassm-type-traits **/
|
||||||
///@{
|
///@{
|
||||||
using TypeDescr = xo::scm::ASyntaxStateMachine::TypeDescr;
|
using TypeDescr = xo::scm::ASyntaxStateMachine::TypeDescr;
|
||||||
|
using AGCObject = xo::scm::ASyntaxStateMachine::AGCObject;
|
||||||
using Copaque = xo::scm::ASyntaxStateMachine::Copaque;
|
using Copaque = xo::scm::ASyntaxStateMachine::Copaque;
|
||||||
using Opaque = xo::scm::ASyntaxStateMachine::Opaque;
|
using Opaque = xo::scm::ASyntaxStateMachine::Opaque;
|
||||||
///@}
|
///@}
|
||||||
|
|
@ -66,10 +67,12 @@ namespace xo {
|
||||||
static void on_parsed_formal_with_token(DLambdaSsm & self, const DUniqueString * param_name, TypeDescr param_type, const Token & tk, ParserStateMachine * p_psm);
|
static void on_parsed_formal_with_token(DLambdaSsm & self, const DUniqueString * param_name, TypeDescr param_type, const Token & tk, ParserStateMachine * p_psm);
|
||||||
/** consume formal arglist emitted by nested ssm **/
|
/** consume formal arglist emitted by nested ssm **/
|
||||||
static void on_parsed_formal_arglist(DLambdaSsm & self, DArray * arglist, ParserStateMachine * p_psm);
|
static void on_parsed_formal_arglist(DLambdaSsm & self, DArray * arglist, ParserStateMachine * p_psm);
|
||||||
/** update state machine for incoming parsed expression @p expr **/
|
/** update state machine for nested parsed expression @p expr **/
|
||||||
static void on_parsed_expression(DLambdaSsm & self, obj<AExpression> expr, ParserStateMachine * p_psm);
|
static void on_parsed_expression(DLambdaSsm & self, obj<AExpression> expr, ParserStateMachine * p_psm);
|
||||||
/** update state machine @p p_psm for incoming parsed expression @p expr followed by token @p tk **/
|
/** update state machine @p p_psm for incoming parsed expression @p expr followed by token @p tk **/
|
||||||
static void on_parsed_expression_with_token(DLambdaSsm & self, obj<AExpression> expr, const Token & tk, ParserStateMachine * p_psm);
|
static void on_parsed_expression_with_token(DLambdaSsm & self, obj<AExpression> expr, const Token & tk, ParserStateMachine * p_psm);
|
||||||
|
/** update state machine for nested quoted literal @p lit **/
|
||||||
|
static void on_quoted_literal(DLambdaSsm & self, obj<AGCObject> lit, ParserStateMachine * p_psm);
|
||||||
///@}
|
///@}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -42,6 +42,7 @@ namespace xo {
|
||||||
/** @defgroup scm-syntaxstatemachine-dparenssm-type-traits **/
|
/** @defgroup scm-syntaxstatemachine-dparenssm-type-traits **/
|
||||||
///@{
|
///@{
|
||||||
using TypeDescr = xo::scm::ASyntaxStateMachine::TypeDescr;
|
using TypeDescr = xo::scm::ASyntaxStateMachine::TypeDescr;
|
||||||
|
using AGCObject = xo::scm::ASyntaxStateMachine::AGCObject;
|
||||||
using Copaque = xo::scm::ASyntaxStateMachine::Copaque;
|
using Copaque = xo::scm::ASyntaxStateMachine::Copaque;
|
||||||
using Opaque = xo::scm::ASyntaxStateMachine::Opaque;
|
using Opaque = xo::scm::ASyntaxStateMachine::Opaque;
|
||||||
///@}
|
///@}
|
||||||
|
|
@ -66,10 +67,12 @@ namespace xo {
|
||||||
static void on_parsed_formal_with_token(DParenSsm & self, const DUniqueString * param_name, TypeDescr param_type, const Token & tk, ParserStateMachine * p_psm);
|
static void on_parsed_formal_with_token(DParenSsm & self, const DUniqueString * param_name, TypeDescr param_type, const Token & tk, ParserStateMachine * p_psm);
|
||||||
/** consume formal arglist emitted by nested ssm **/
|
/** consume formal arglist emitted by nested ssm **/
|
||||||
static void on_parsed_formal_arglist(DParenSsm & self, DArray * arglist, ParserStateMachine * p_psm);
|
static void on_parsed_formal_arglist(DParenSsm & self, DArray * arglist, ParserStateMachine * p_psm);
|
||||||
/** update state machine for incoming parsed expression @p expr **/
|
/** update state machine for nested parsed expression @p expr **/
|
||||||
static void on_parsed_expression(DParenSsm & self, obj<AExpression> expr, ParserStateMachine * p_psm);
|
static void on_parsed_expression(DParenSsm & self, obj<AExpression> expr, ParserStateMachine * p_psm);
|
||||||
/** update state machine @p p_psm for incoming parsed expression @p expr followed by token @p tk **/
|
/** update state machine @p p_psm for incoming parsed expression @p expr followed by token @p tk **/
|
||||||
static void on_parsed_expression_with_token(DParenSsm & self, obj<AExpression> expr, const Token & tk, ParserStateMachine * p_psm);
|
static void on_parsed_expression_with_token(DParenSsm & self, obj<AExpression> expr, const Token & tk, ParserStateMachine * p_psm);
|
||||||
|
/** update state machine for nested quoted literal @p lit **/
|
||||||
|
static void on_quoted_literal(DParenSsm & self, obj<AGCObject> lit, ParserStateMachine * p_psm);
|
||||||
///@}
|
///@}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -42,6 +42,7 @@ namespace xo {
|
||||||
/** @defgroup scm-syntaxstatemachine-dprogressssm-type-traits **/
|
/** @defgroup scm-syntaxstatemachine-dprogressssm-type-traits **/
|
||||||
///@{
|
///@{
|
||||||
using TypeDescr = xo::scm::ASyntaxStateMachine::TypeDescr;
|
using TypeDescr = xo::scm::ASyntaxStateMachine::TypeDescr;
|
||||||
|
using AGCObject = xo::scm::ASyntaxStateMachine::AGCObject;
|
||||||
using Copaque = xo::scm::ASyntaxStateMachine::Copaque;
|
using Copaque = xo::scm::ASyntaxStateMachine::Copaque;
|
||||||
using Opaque = xo::scm::ASyntaxStateMachine::Opaque;
|
using Opaque = xo::scm::ASyntaxStateMachine::Opaque;
|
||||||
///@}
|
///@}
|
||||||
|
|
@ -66,10 +67,12 @@ namespace xo {
|
||||||
static void on_parsed_formal_with_token(DProgressSsm & self, const DUniqueString * param_name, TypeDescr param_type, const Token & tk, ParserStateMachine * p_psm);
|
static void on_parsed_formal_with_token(DProgressSsm & self, const DUniqueString * param_name, TypeDescr param_type, const Token & tk, ParserStateMachine * p_psm);
|
||||||
/** consume formal arglist emitted by nested ssm **/
|
/** consume formal arglist emitted by nested ssm **/
|
||||||
static void on_parsed_formal_arglist(DProgressSsm & self, DArray * arglist, ParserStateMachine * p_psm);
|
static void on_parsed_formal_arglist(DProgressSsm & self, DArray * arglist, ParserStateMachine * p_psm);
|
||||||
/** update state machine for incoming parsed expression @p expr **/
|
/** update state machine for nested parsed expression @p expr **/
|
||||||
static void on_parsed_expression(DProgressSsm & self, obj<AExpression> expr, ParserStateMachine * p_psm);
|
static void on_parsed_expression(DProgressSsm & self, obj<AExpression> expr, ParserStateMachine * p_psm);
|
||||||
/** update state machine @p p_psm for incoming parsed expression @p expr followed by token @p tk **/
|
/** update state machine @p p_psm for incoming parsed expression @p expr followed by token @p tk **/
|
||||||
static void on_parsed_expression_with_token(DProgressSsm & self, obj<AExpression> expr, const Token & tk, ParserStateMachine * p_psm);
|
static void on_parsed_expression_with_token(DProgressSsm & self, obj<AExpression> expr, const Token & tk, ParserStateMachine * p_psm);
|
||||||
|
/** update state machine for nested quoted literal @p lit **/
|
||||||
|
static void on_quoted_literal(DProgressSsm & self, obj<AGCObject> lit, ParserStateMachine * p_psm);
|
||||||
///@}
|
///@}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -42,6 +42,7 @@ namespace xo {
|
||||||
/** @defgroup scm-syntaxstatemachine-dquotessm-type-traits **/
|
/** @defgroup scm-syntaxstatemachine-dquotessm-type-traits **/
|
||||||
///@{
|
///@{
|
||||||
using TypeDescr = xo::scm::ASyntaxStateMachine::TypeDescr;
|
using TypeDescr = xo::scm::ASyntaxStateMachine::TypeDescr;
|
||||||
|
using AGCObject = xo::scm::ASyntaxStateMachine::AGCObject;
|
||||||
using Copaque = xo::scm::ASyntaxStateMachine::Copaque;
|
using Copaque = xo::scm::ASyntaxStateMachine::Copaque;
|
||||||
using Opaque = xo::scm::ASyntaxStateMachine::Opaque;
|
using Opaque = xo::scm::ASyntaxStateMachine::Opaque;
|
||||||
///@}
|
///@}
|
||||||
|
|
@ -66,10 +67,12 @@ namespace xo {
|
||||||
static void on_parsed_formal_with_token(DQuoteSsm & self, const DUniqueString * param_name, TypeDescr param_type, const Token & tk, ParserStateMachine * p_psm);
|
static void on_parsed_formal_with_token(DQuoteSsm & self, const DUniqueString * param_name, TypeDescr param_type, const Token & tk, ParserStateMachine * p_psm);
|
||||||
/** consume formal arglist emitted by nested ssm **/
|
/** consume formal arglist emitted by nested ssm **/
|
||||||
static void on_parsed_formal_arglist(DQuoteSsm & self, DArray * arglist, ParserStateMachine * p_psm);
|
static void on_parsed_formal_arglist(DQuoteSsm & self, DArray * arglist, ParserStateMachine * p_psm);
|
||||||
/** update state machine for incoming parsed expression @p expr **/
|
/** update state machine for nested parsed expression @p expr **/
|
||||||
static void on_parsed_expression(DQuoteSsm & self, obj<AExpression> expr, ParserStateMachine * p_psm);
|
static void on_parsed_expression(DQuoteSsm & self, obj<AExpression> expr, ParserStateMachine * p_psm);
|
||||||
/** update state machine @p p_psm for incoming parsed expression @p expr followed by token @p tk **/
|
/** update state machine @p p_psm for incoming parsed expression @p expr followed by token @p tk **/
|
||||||
static void on_parsed_expression_with_token(DQuoteSsm & self, obj<AExpression> expr, const Token & tk, ParserStateMachine * p_psm);
|
static void on_parsed_expression_with_token(DQuoteSsm & self, obj<AExpression> expr, const Token & tk, ParserStateMachine * p_psm);
|
||||||
|
/** update state machine for nested quoted literal @p lit **/
|
||||||
|
static void on_quoted_literal(DQuoteSsm & self, obj<AGCObject> lit, ParserStateMachine * p_psm);
|
||||||
///@}
|
///@}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -42,6 +42,7 @@ namespace xo {
|
||||||
/** @defgroup scm-syntaxstatemachine-dsequencessm-type-traits **/
|
/** @defgroup scm-syntaxstatemachine-dsequencessm-type-traits **/
|
||||||
///@{
|
///@{
|
||||||
using TypeDescr = xo::scm::ASyntaxStateMachine::TypeDescr;
|
using TypeDescr = xo::scm::ASyntaxStateMachine::TypeDescr;
|
||||||
|
using AGCObject = xo::scm::ASyntaxStateMachine::AGCObject;
|
||||||
using Copaque = xo::scm::ASyntaxStateMachine::Copaque;
|
using Copaque = xo::scm::ASyntaxStateMachine::Copaque;
|
||||||
using Opaque = xo::scm::ASyntaxStateMachine::Opaque;
|
using Opaque = xo::scm::ASyntaxStateMachine::Opaque;
|
||||||
///@}
|
///@}
|
||||||
|
|
@ -66,10 +67,12 @@ namespace xo {
|
||||||
static void on_parsed_formal_with_token(DSequenceSsm & self, const DUniqueString * param_name, TypeDescr param_type, const Token & tk, ParserStateMachine * p_psm);
|
static void on_parsed_formal_with_token(DSequenceSsm & self, const DUniqueString * param_name, TypeDescr param_type, const Token & tk, ParserStateMachine * p_psm);
|
||||||
/** consume formal arglist emitted by nested ssm **/
|
/** consume formal arglist emitted by nested ssm **/
|
||||||
static void on_parsed_formal_arglist(DSequenceSsm & self, DArray * arglist, ParserStateMachine * p_psm);
|
static void on_parsed_formal_arglist(DSequenceSsm & self, DArray * arglist, ParserStateMachine * p_psm);
|
||||||
/** update state machine for incoming parsed expression @p expr **/
|
/** update state machine for nested parsed expression @p expr **/
|
||||||
static void on_parsed_expression(DSequenceSsm & self, obj<AExpression> expr, ParserStateMachine * p_psm);
|
static void on_parsed_expression(DSequenceSsm & self, obj<AExpression> expr, ParserStateMachine * p_psm);
|
||||||
/** update state machine @p p_psm for incoming parsed expression @p expr followed by token @p tk **/
|
/** update state machine @p p_psm for incoming parsed expression @p expr followed by token @p tk **/
|
||||||
static void on_parsed_expression_with_token(DSequenceSsm & self, obj<AExpression> expr, const Token & tk, ParserStateMachine * p_psm);
|
static void on_parsed_expression_with_token(DSequenceSsm & self, obj<AExpression> expr, const Token & tk, ParserStateMachine * p_psm);
|
||||||
|
/** update state machine for nested quoted literal @p lit **/
|
||||||
|
static void on_quoted_literal(DSequenceSsm & self, obj<AGCObject> lit, ParserStateMachine * p_psm);
|
||||||
///@}
|
///@}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -42,6 +42,7 @@ namespace xo {
|
||||||
/** @defgroup scm-syntaxstatemachine-dtoplevelseqssm-type-traits **/
|
/** @defgroup scm-syntaxstatemachine-dtoplevelseqssm-type-traits **/
|
||||||
///@{
|
///@{
|
||||||
using TypeDescr = xo::scm::ASyntaxStateMachine::TypeDescr;
|
using TypeDescr = xo::scm::ASyntaxStateMachine::TypeDescr;
|
||||||
|
using AGCObject = xo::scm::ASyntaxStateMachine::AGCObject;
|
||||||
using Copaque = xo::scm::ASyntaxStateMachine::Copaque;
|
using Copaque = xo::scm::ASyntaxStateMachine::Copaque;
|
||||||
using Opaque = xo::scm::ASyntaxStateMachine::Opaque;
|
using Opaque = xo::scm::ASyntaxStateMachine::Opaque;
|
||||||
///@}
|
///@}
|
||||||
|
|
@ -66,10 +67,12 @@ namespace xo {
|
||||||
static void on_parsed_formal_with_token(DToplevelSeqSsm & self, const DUniqueString * param_name, TypeDescr param_type, const Token & tk, ParserStateMachine * p_psm);
|
static void on_parsed_formal_with_token(DToplevelSeqSsm & self, const DUniqueString * param_name, TypeDescr param_type, const Token & tk, ParserStateMachine * p_psm);
|
||||||
/** consume formal arglist emitted by nested ssm **/
|
/** consume formal arglist emitted by nested ssm **/
|
||||||
static void on_parsed_formal_arglist(DToplevelSeqSsm & self, DArray * arglist, ParserStateMachine * p_psm);
|
static void on_parsed_formal_arglist(DToplevelSeqSsm & self, DArray * arglist, ParserStateMachine * p_psm);
|
||||||
/** update state machine for incoming parsed expression @p expr **/
|
/** update state machine for nested parsed expression @p expr **/
|
||||||
static void on_parsed_expression(DToplevelSeqSsm & self, obj<AExpression> expr, ParserStateMachine * p_psm);
|
static void on_parsed_expression(DToplevelSeqSsm & self, obj<AExpression> expr, ParserStateMachine * p_psm);
|
||||||
/** update state machine @p p_psm for incoming parsed expression @p expr followed by token @p tk **/
|
/** update state machine @p p_psm for incoming parsed expression @p expr followed by token @p tk **/
|
||||||
static void on_parsed_expression_with_token(DToplevelSeqSsm & self, obj<AExpression> expr, const Token & tk, ParserStateMachine * p_psm);
|
static void on_parsed_expression_with_token(DToplevelSeqSsm & self, obj<AExpression> expr, const Token & tk, ParserStateMachine * p_psm);
|
||||||
|
/** update state machine for nested quoted literal @p lit **/
|
||||||
|
static void on_quoted_literal(DToplevelSeqSsm & self, obj<AGCObject> lit, ParserStateMachine * p_psm);
|
||||||
///@}
|
///@}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -32,6 +32,7 @@ namespace scm {
|
||||||
/** integer identifying a type **/
|
/** integer identifying a type **/
|
||||||
using typeseq = ASyntaxStateMachine::typeseq;
|
using typeseq = ASyntaxStateMachine::typeseq;
|
||||||
using TypeDescr = ASyntaxStateMachine::TypeDescr;
|
using TypeDescr = ASyntaxStateMachine::TypeDescr;
|
||||||
|
using AGCObject = ASyntaxStateMachine::AGCObject;
|
||||||
///@}
|
///@}
|
||||||
|
|
||||||
/** @defgroup scm-syntaxstatemachine-xfer-methods **/
|
/** @defgroup scm-syntaxstatemachine-xfer-methods **/
|
||||||
|
|
@ -79,6 +80,9 @@ namespace scm {
|
||||||
void on_parsed_expression_with_token(Opaque data, obj<AExpression> expr, const Token & tk, ParserStateMachine * p_psm) override {
|
void on_parsed_expression_with_token(Opaque data, obj<AExpression> expr, const Token & tk, ParserStateMachine * p_psm) override {
|
||||||
return I::on_parsed_expression_with_token(_dcast(data), expr, tk, p_psm);
|
return I::on_parsed_expression_with_token(_dcast(data), expr, tk, p_psm);
|
||||||
}
|
}
|
||||||
|
void on_quoted_literal(Opaque data, obj<AGCObject> lit, ParserStateMachine * p_psm) override {
|
||||||
|
return I::on_quoted_literal(_dcast(data), lit, p_psm);
|
||||||
|
}
|
||||||
|
|
||||||
///@}
|
///@}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -32,6 +32,7 @@ public:
|
||||||
using DataPtr = Object::DataPtr;
|
using DataPtr = Object::DataPtr;
|
||||||
using typeseq = xo::reflect::typeseq;
|
using typeseq = xo::reflect::typeseq;
|
||||||
using TypeDescr = ASyntaxStateMachine::TypeDescr;
|
using TypeDescr = ASyntaxStateMachine::TypeDescr;
|
||||||
|
using AGCObject = ASyntaxStateMachine::AGCObject;
|
||||||
///@}
|
///@}
|
||||||
|
|
||||||
/** @defgroup scm-syntaxstatemachine-router-ctors **/
|
/** @defgroup scm-syntaxstatemachine-router-ctors **/
|
||||||
|
|
@ -85,6 +86,9 @@ public:
|
||||||
void on_parsed_expression_with_token(obj<AExpression> expr, const Token & tk, ParserStateMachine * p_psm) {
|
void on_parsed_expression_with_token(obj<AExpression> expr, const Token & tk, ParserStateMachine * p_psm) {
|
||||||
return O::iface()->on_parsed_expression_with_token(O::data(), expr, tk, p_psm);
|
return O::iface()->on_parsed_expression_with_token(O::data(), expr, tk, p_psm);
|
||||||
}
|
}
|
||||||
|
void on_quoted_literal(obj<AGCObject> lit, ParserStateMachine * p_psm) {
|
||||||
|
return O::iface()->on_quoted_literal(O::data(), lit, p_psm);
|
||||||
|
}
|
||||||
|
|
||||||
///@}
|
///@}
|
||||||
/** @defgroup scm-syntaxstatemachine-member-vars **/
|
/** @defgroup scm-syntaxstatemachine-member-vars **/
|
||||||
|
|
|
||||||
|
|
@ -83,6 +83,12 @@ ISyntaxStateMachine_Any::on_parsed_expression_with_token(Opaque, obj<AExpression
|
||||||
_fatal();
|
_fatal();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
auto
|
||||||
|
ISyntaxStateMachine_Any::on_quoted_literal(Opaque, obj<AGCObject>, ParserStateMachine *) -> void
|
||||||
|
{
|
||||||
|
_fatal();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
} /*namespace scm*/
|
} /*namespace scm*/
|
||||||
} /*namespace xo*/
|
} /*namespace xo*/
|
||||||
|
|
|
||||||
|
|
@ -67,6 +67,11 @@ namespace xo {
|
||||||
{
|
{
|
||||||
self.on_parsed_expression_with_token(expr, tk, p_psm);
|
self.on_parsed_expression_with_token(expr, tk, p_psm);
|
||||||
}
|
}
|
||||||
|
auto
|
||||||
|
ISyntaxStateMachine_DApplySsm::on_quoted_literal(DApplySsm & self, obj<AGCObject> lit, ParserStateMachine * p_psm) -> void
|
||||||
|
{
|
||||||
|
self.on_quoted_literal(lit, p_psm);
|
||||||
|
}
|
||||||
|
|
||||||
} /*namespace scm*/
|
} /*namespace scm*/
|
||||||
} /*namespace xo*/
|
} /*namespace xo*/
|
||||||
|
|
|
||||||
|
|
@ -67,6 +67,11 @@ namespace xo {
|
||||||
{
|
{
|
||||||
self.on_parsed_expression_with_token(expr, tk, p_psm);
|
self.on_parsed_expression_with_token(expr, tk, p_psm);
|
||||||
}
|
}
|
||||||
|
auto
|
||||||
|
ISyntaxStateMachine_DDefineSsm::on_quoted_literal(DDefineSsm & self, obj<AGCObject> lit, ParserStateMachine * p_psm) -> void
|
||||||
|
{
|
||||||
|
self.on_quoted_literal(lit, p_psm);
|
||||||
|
}
|
||||||
|
|
||||||
} /*namespace scm*/
|
} /*namespace scm*/
|
||||||
} /*namespace xo*/
|
} /*namespace xo*/
|
||||||
|
|
|
||||||
|
|
@ -67,6 +67,11 @@ namespace xo {
|
||||||
{
|
{
|
||||||
self.on_parsed_expression_with_token(expr, tk, p_psm);
|
self.on_parsed_expression_with_token(expr, tk, p_psm);
|
||||||
}
|
}
|
||||||
|
auto
|
||||||
|
ISyntaxStateMachine_DExpectExprSsm::on_quoted_literal(DExpectExprSsm & self, obj<AGCObject> lit, ParserStateMachine * p_psm) -> void
|
||||||
|
{
|
||||||
|
self.on_quoted_literal(lit, p_psm);
|
||||||
|
}
|
||||||
|
|
||||||
} /*namespace scm*/
|
} /*namespace scm*/
|
||||||
} /*namespace xo*/
|
} /*namespace xo*/
|
||||||
|
|
|
||||||
|
|
@ -67,6 +67,11 @@ namespace xo {
|
||||||
{
|
{
|
||||||
self.on_parsed_expression_with_token(expr, tk, p_psm);
|
self.on_parsed_expression_with_token(expr, tk, p_psm);
|
||||||
}
|
}
|
||||||
|
auto
|
||||||
|
ISyntaxStateMachine_DExpectFormalArgSsm::on_quoted_literal(DExpectFormalArgSsm & self, obj<AGCObject> lit, ParserStateMachine * p_psm) -> void
|
||||||
|
{
|
||||||
|
self.on_quoted_literal(lit, p_psm);
|
||||||
|
}
|
||||||
|
|
||||||
} /*namespace scm*/
|
} /*namespace scm*/
|
||||||
} /*namespace xo*/
|
} /*namespace xo*/
|
||||||
|
|
|
||||||
|
|
@ -67,6 +67,11 @@ namespace xo {
|
||||||
{
|
{
|
||||||
self.on_parsed_expression_with_token(expr, tk, p_psm);
|
self.on_parsed_expression_with_token(expr, tk, p_psm);
|
||||||
}
|
}
|
||||||
|
auto
|
||||||
|
ISyntaxStateMachine_DExpectFormalArglistSsm::on_quoted_literal(DExpectFormalArglistSsm & self, obj<AGCObject> lit, ParserStateMachine * p_psm) -> void
|
||||||
|
{
|
||||||
|
self.on_quoted_literal(lit, p_psm);
|
||||||
|
}
|
||||||
|
|
||||||
} /*namespace scm*/
|
} /*namespace scm*/
|
||||||
} /*namespace xo*/
|
} /*namespace xo*/
|
||||||
|
|
|
||||||
|
|
@ -67,6 +67,11 @@ namespace xo {
|
||||||
{
|
{
|
||||||
self.on_parsed_expression_with_token(expr, tk, p_psm);
|
self.on_parsed_expression_with_token(expr, tk, p_psm);
|
||||||
}
|
}
|
||||||
|
auto
|
||||||
|
ISyntaxStateMachine_DExpectSymbolSsm::on_quoted_literal(DExpectSymbolSsm & self, obj<AGCObject> lit, ParserStateMachine * p_psm) -> void
|
||||||
|
{
|
||||||
|
self.on_quoted_literal(lit, p_psm);
|
||||||
|
}
|
||||||
|
|
||||||
} /*namespace scm*/
|
} /*namespace scm*/
|
||||||
} /*namespace xo*/
|
} /*namespace xo*/
|
||||||
|
|
|
||||||
|
|
@ -67,6 +67,11 @@ namespace xo {
|
||||||
{
|
{
|
||||||
self.on_parsed_expression_with_token(expr, tk, p_psm);
|
self.on_parsed_expression_with_token(expr, tk, p_psm);
|
||||||
}
|
}
|
||||||
|
auto
|
||||||
|
ISyntaxStateMachine_DExpectTypeSsm::on_quoted_literal(DExpectTypeSsm & self, obj<AGCObject> lit, ParserStateMachine * p_psm) -> void
|
||||||
|
{
|
||||||
|
self.on_quoted_literal(lit, p_psm);
|
||||||
|
}
|
||||||
|
|
||||||
} /*namespace scm*/
|
} /*namespace scm*/
|
||||||
} /*namespace xo*/
|
} /*namespace xo*/
|
||||||
|
|
|
||||||
|
|
@ -67,6 +67,11 @@ namespace xo {
|
||||||
{
|
{
|
||||||
self.on_parsed_expression_with_token(expr, tk, p_psm);
|
self.on_parsed_expression_with_token(expr, tk, p_psm);
|
||||||
}
|
}
|
||||||
|
auto
|
||||||
|
ISyntaxStateMachine_DIfElseSsm::on_quoted_literal(DIfElseSsm & self, obj<AGCObject> lit, ParserStateMachine * p_psm) -> void
|
||||||
|
{
|
||||||
|
self.on_quoted_literal(lit, p_psm);
|
||||||
|
}
|
||||||
|
|
||||||
} /*namespace scm*/
|
} /*namespace scm*/
|
||||||
} /*namespace xo*/
|
} /*namespace xo*/
|
||||||
|
|
|
||||||
|
|
@ -67,6 +67,11 @@ namespace xo {
|
||||||
{
|
{
|
||||||
self.on_parsed_expression_with_token(expr, tk, p_psm);
|
self.on_parsed_expression_with_token(expr, tk, p_psm);
|
||||||
}
|
}
|
||||||
|
auto
|
||||||
|
ISyntaxStateMachine_DLambdaSsm::on_quoted_literal(DLambdaSsm & self, obj<AGCObject> lit, ParserStateMachine * p_psm) -> void
|
||||||
|
{
|
||||||
|
self.on_quoted_literal(lit, p_psm);
|
||||||
|
}
|
||||||
|
|
||||||
} /*namespace scm*/
|
} /*namespace scm*/
|
||||||
} /*namespace xo*/
|
} /*namespace xo*/
|
||||||
|
|
|
||||||
|
|
@ -67,6 +67,11 @@ namespace xo {
|
||||||
{
|
{
|
||||||
self.on_parsed_expression_with_token(expr, tk, p_psm);
|
self.on_parsed_expression_with_token(expr, tk, p_psm);
|
||||||
}
|
}
|
||||||
|
auto
|
||||||
|
ISyntaxStateMachine_DParenSsm::on_quoted_literal(DParenSsm & self, obj<AGCObject> lit, ParserStateMachine * p_psm) -> void
|
||||||
|
{
|
||||||
|
self.on_quoted_literal(lit, p_psm);
|
||||||
|
}
|
||||||
|
|
||||||
} /*namespace scm*/
|
} /*namespace scm*/
|
||||||
} /*namespace xo*/
|
} /*namespace xo*/
|
||||||
|
|
|
||||||
|
|
@ -67,6 +67,11 @@ namespace xo {
|
||||||
{
|
{
|
||||||
self.on_parsed_expression_with_token(expr, tk, p_psm);
|
self.on_parsed_expression_with_token(expr, tk, p_psm);
|
||||||
}
|
}
|
||||||
|
auto
|
||||||
|
ISyntaxStateMachine_DProgressSsm::on_quoted_literal(DProgressSsm & self, obj<AGCObject> lit, ParserStateMachine * p_psm) -> void
|
||||||
|
{
|
||||||
|
self.on_quoted_literal(lit, p_psm);
|
||||||
|
}
|
||||||
|
|
||||||
} /*namespace scm*/
|
} /*namespace scm*/
|
||||||
} /*namespace xo*/
|
} /*namespace xo*/
|
||||||
|
|
|
||||||
|
|
@ -67,6 +67,11 @@ namespace xo {
|
||||||
{
|
{
|
||||||
self.on_parsed_expression_with_token(expr, tk, p_psm);
|
self.on_parsed_expression_with_token(expr, tk, p_psm);
|
||||||
}
|
}
|
||||||
|
auto
|
||||||
|
ISyntaxStateMachine_DQuoteSsm::on_quoted_literal(DQuoteSsm & self, obj<AGCObject> lit, ParserStateMachine * p_psm) -> void
|
||||||
|
{
|
||||||
|
self.on_quoted_literal(lit, p_psm);
|
||||||
|
}
|
||||||
|
|
||||||
} /*namespace scm*/
|
} /*namespace scm*/
|
||||||
} /*namespace xo*/
|
} /*namespace xo*/
|
||||||
|
|
|
||||||
|
|
@ -67,6 +67,11 @@ namespace xo {
|
||||||
{
|
{
|
||||||
self.on_parsed_expression_with_token(expr, tk, p_psm);
|
self.on_parsed_expression_with_token(expr, tk, p_psm);
|
||||||
}
|
}
|
||||||
|
auto
|
||||||
|
ISyntaxStateMachine_DSequenceSsm::on_quoted_literal(DSequenceSsm & self, obj<AGCObject> lit, ParserStateMachine * p_psm) -> void
|
||||||
|
{
|
||||||
|
self.on_quoted_literal(lit, p_psm);
|
||||||
|
}
|
||||||
|
|
||||||
} /*namespace scm*/
|
} /*namespace scm*/
|
||||||
} /*namespace xo*/
|
} /*namespace xo*/
|
||||||
|
|
|
||||||
|
|
@ -67,6 +67,11 @@ namespace xo {
|
||||||
{
|
{
|
||||||
self.on_parsed_expression_with_token(expr, tk, p_psm);
|
self.on_parsed_expression_with_token(expr, tk, p_psm);
|
||||||
}
|
}
|
||||||
|
auto
|
||||||
|
ISyntaxStateMachine_DToplevelSeqSsm::on_quoted_literal(DToplevelSeqSsm & self, obj<AGCObject> lit, ParserStateMachine * p_psm) -> void
|
||||||
|
{
|
||||||
|
self.on_quoted_literal(lit, p_psm);
|
||||||
|
}
|
||||||
|
|
||||||
} /*namespace scm*/
|
} /*namespace scm*/
|
||||||
} /*namespace xo*/
|
} /*namespace xo*/
|
||||||
|
|
|
||||||
|
|
@ -569,6 +569,32 @@ namespace xo {
|
||||||
this->capture_error(ssm_name, errmsg);
|
this->capture_error(ssm_name, errmsg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
ParserStateMachine::illegal_quoted_literal(std::string_view ssm_name,
|
||||||
|
obj<AGCObject> lit,
|
||||||
|
std::string_view expect_str)
|
||||||
|
{
|
||||||
|
obj<APrintable> lit_pr
|
||||||
|
= FacetRegistry::instance().variant<APrintable,AGCObject>(lit);
|
||||||
|
|
||||||
|
/** TODO
|
||||||
|
* problem here: we have pretty() support for obj<AExpression>,
|
||||||
|
* but not "ordinary printing" support. So expression doesn't get printed
|
||||||
|
**/
|
||||||
|
auto errmsg_string = tostr("Unexpected quoted literal",
|
||||||
|
xtag("lit", lit_pr),
|
||||||
|
xtag("expecting", expect_str),
|
||||||
|
xtag("ssm", ssm_name),
|
||||||
|
xtag("via", "ParserStateMachine::illegal_quoted_literal"));
|
||||||
|
|
||||||
|
assert(expr_alloc_);
|
||||||
|
|
||||||
|
auto errmsg = DString::from_view(expr_alloc_,
|
||||||
|
std::string_view(errmsg_string));
|
||||||
|
|
||||||
|
this->capture_error(ssm_name, errmsg);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
ParserStateMachine::error_unbound_variable(std::string_view ssm_name,
|
ParserStateMachine::error_unbound_variable(std::string_view ssm_name,
|
||||||
std::string_view sym)
|
std::string_view sym)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue