rename
This commit is contained in:
parent
805169bad1
commit
4c1e698b14
|
@ -178,7 +178,7 @@ namespace lib_syntax {
|
||||||
/**
|
/**
|
||||||
* @brief token匹配
|
* @brief token匹配
|
||||||
*/
|
*/
|
||||||
template<typename ELEM, lib_token::TokenProcs<ELEM> XProc = nullptr>
|
template<typename ELEM, lib_token::TokenProc<ELEM> XProc = nullptr>
|
||||||
requires std::derived_from<ELEM, ast_basic::IExprInstance>
|
requires std::derived_from<ELEM, ast_basic::IExprInstance>
|
||||||
class TokenMatch : public IBasicRule, public std::enable_shared_from_this<TokenMatch<ELEM, XProc>> {
|
class TokenMatch : public IBasicRule, public std::enable_shared_from_this<TokenMatch<ELEM, XProc>> {
|
||||||
private:
|
private:
|
||||||
|
|
|
@ -253,7 +253,7 @@ class MM : public lib_syntax::IBasicRule {
|
||||||
|
|
||||||
#include "syntax_templets.h"
|
#include "syntax_templets.h"
|
||||||
std::shared_ptr<const ExprRule> NovalSyntax::getSyntaxTree() {
|
std::shared_ptr<const ExprRule> NovalSyntax::getSyntaxTree() {
|
||||||
lib_composit::TypeList<MM, MM> vv;
|
lib_composit::__types_list<MM, MM> vv;
|
||||||
|
|
||||||
return std::make_shared<DocumentSyntax>();
|
return std::make_shared<DocumentSyntax>();
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,9 +4,9 @@
|
||||||
#include <concepts>
|
#include <concepts>
|
||||||
|
|
||||||
namespace lib_composit {
|
namespace lib_composit {
|
||||||
template<typename... TYPES> class TypeList;
|
template<typename... TYPES> class __types_list;
|
||||||
|
|
||||||
template<> class TypeList<> {
|
template<> class __types_list<> {
|
||||||
public:
|
public:
|
||||||
static QList<std::shared_ptr<const lib_syntax::IBasicRule>> getRules() {
|
static QList<std::shared_ptr<const lib_syntax::IBasicRule>> getRules() {
|
||||||
return QList<std::shared_ptr<const lib_syntax::IBasicRule>>();
|
return QList<std::shared_ptr<const lib_syntax::IBasicRule>>();
|
||||||
|
@ -15,25 +15,25 @@ namespace lib_composit {
|
||||||
|
|
||||||
template<typename T, typename... Rets>
|
template<typename T, typename... Rets>
|
||||||
requires std::derived_from<T, lib_syntax::IBasicRule>
|
requires std::derived_from<T, lib_syntax::IBasicRule>
|
||||||
class TypeList<T, Rets...> : public TypeList<Rets...> {
|
class __types_list<T, Rets...> : public __types_list<Rets...> {
|
||||||
public:
|
public:
|
||||||
static QList<std::shared_ptr<const lib_syntax::IBasicRule>> getRules() {
|
static QList<std::shared_ptr<const lib_syntax::IBasicRule>> getRules() {
|
||||||
auto list = TypeList<Rets...>::getRules();
|
auto list = __types_list<Rets...>::getRules();
|
||||||
list.prepend(std::make_shared<const T>());
|
list.prepend(std::make_shared<const T>());
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
template<typename... TYPES>
|
template<typename... TYPES>
|
||||||
class AnyR : public lib_syntax::Any, public TypeList<TYPES...> {
|
class AnyR : public lib_syntax::Any, public __types_list<TYPES...> {
|
||||||
public:
|
public:
|
||||||
AnyR() : Any(TypeList<TYPES...>::getRules()){ }
|
AnyR() : Any(__types_list<TYPES...>::getRules()){ }
|
||||||
};
|
};
|
||||||
|
|
||||||
template<typename... TYPES>
|
template<typename... TYPES>
|
||||||
class SeqsR : public lib_syntax::Seqs, public TypeList<TYPES...> {
|
class SeqsR : public lib_syntax::Seqs, public __types_list<TYPES...> {
|
||||||
public:
|
public:
|
||||||
SeqsR() : Seqs(TypeList<TYPES...>::getRules()){ }
|
SeqsR() : Seqs(__types_list<TYPES...>::getRules()){ }
|
||||||
};
|
};
|
||||||
|
|
||||||
template<typename TYPE, int min, int max>
|
template<typename TYPE, int min, int max>
|
||||||
|
@ -42,7 +42,7 @@ namespace lib_composit {
|
||||||
ReptR() : Rept(std::make_shared<TYPE>(), min, max){ }
|
ReptR() : Rept(std::make_shared<TYPE>(), min, max){ }
|
||||||
};
|
};
|
||||||
|
|
||||||
template<typename E, typename T, lib_token::TokenProcs<E> xproc = nullptr>
|
template<typename E, typename T, lib_token::TokenProc<E> xproc = nullptr>
|
||||||
requires std::derived_from<E, ast_basic::IExprInstance> && std::derived_from<T, lib_token::ITokenProcess>
|
requires std::derived_from<E, ast_basic::IExprInstance> && std::derived_from<T, lib_token::ITokenProcess>
|
||||||
class TokenR : public lib_syntax::TokenMatch<E, xproc> {
|
class TokenR : public lib_syntax::TokenMatch<E, xproc> {
|
||||||
public:
|
public:
|
||||||
|
|
|
@ -5,8 +5,8 @@
|
||||||
|
|
||||||
namespace lib_token {
|
namespace lib_token {
|
||||||
|
|
||||||
template<typename ExprT>
|
template<typename ExprT> requires std::derived_from<ExprT, ast_basic::IExprInstance>
|
||||||
using TokenProcs = void(*)(std::shared_ptr<ExprT> expr, std::shared_ptr<const lib_token::IToken> t);
|
using TokenProc = void(*)(std::shared_ptr<ExprT> expr, std::shared_ptr<const lib_token::IToken> t);
|
||||||
|
|
||||||
|
|
||||||
// 基础token实现 ===================================================
|
// 基础token实现 ===================================================
|
||||||
|
@ -48,7 +48,7 @@ namespace lib_token {
|
||||||
/**
|
/**
|
||||||
* @brief 动作Token
|
* @brief 动作Token
|
||||||
*/
|
*/
|
||||||
template<typename ExprT, TokenProcs<ExprT> proc>
|
template<typename ExprT, TokenProc<ExprT> p> requires std::derived_from<ExprT, ast_basic::IExprInstance>
|
||||||
class ActionToken : public IActionToken {
|
class ActionToken : public IActionToken {
|
||||||
private:
|
private:
|
||||||
std::shared_ptr<const IToken> _bind_content;
|
std::shared_ptr<const IToken> _bind_content;
|
||||||
|
@ -60,7 +60,7 @@ namespace lib_token {
|
||||||
|
|
||||||
virtual std::shared_ptr<ast_basic::IExprInstance> makeSure(std::shared_ptr<ast_basic::IExprInstance> expr) {
|
virtual std::shared_ptr<ast_basic::IExprInstance> makeSure(std::shared_ptr<ast_basic::IExprInstance> expr) {
|
||||||
auto expr_inst = std::dynamic_pointer_cast<ExprT>(expr);
|
auto expr_inst = std::dynamic_pointer_cast<ExprT>(expr);
|
||||||
proc(expr_inst, shared_from_this());
|
p(expr_inst, shared_from_this());
|
||||||
return expr;
|
return expr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -91,8 +91,7 @@ namespace lib_token {
|
||||||
/**
|
/**
|
||||||
* @brief 表达式起始token
|
* @brief 表达式起始token
|
||||||
*/
|
*/
|
||||||
template<typename NExpr>
|
template<typename NExpr> requires std::derived_from<NExpr, ast_basic::IExprInstance>
|
||||||
requires std::derived_from<NExpr, ast_basic::IExprInstance>
|
|
||||||
class ExprBeginToken : public IActionToken {
|
class ExprBeginToken : public IActionToken {
|
||||||
private:
|
private:
|
||||||
std::shared_ptr<const IActionToken> _prev_token = nullptr;
|
std::shared_ptr<const IActionToken> _prev_token = nullptr;
|
||||||
|
@ -149,8 +148,7 @@ namespace lib_token {
|
||||||
/**
|
/**
|
||||||
* @brief 表达式终止token
|
* @brief 表达式终止token
|
||||||
*/
|
*/
|
||||||
template<typename ExprT>
|
template<typename ExprT> requires std::derived_from<ExprT, ast_basic::IExprInstance>
|
||||||
requires std::derived_from<ExprT, ast_basic::IExprInstance>
|
|
||||||
class ExprEndToken : public IActionToken {
|
class ExprEndToken : public IActionToken {
|
||||||
private:
|
private:
|
||||||
std::shared_ptr<const IActionToken> _prev_token = nullptr;
|
std::shared_ptr<const IActionToken> _prev_token = nullptr;
|
||||||
|
|
Loading…
Reference in New Issue