This commit is contained in:
codeboss 2025-02-12 10:26:39 +08:00
parent ed580127d3
commit d921431bc9
2 changed files with 8 additions and 5 deletions

View File

@ -36,16 +36,20 @@ namespace lib_composit {
SeqsR() : Seqs(__types_list<TYPES...>::getRules()){ } SeqsR() : Seqs(__types_list<TYPES...>::getRules()){ }
}; };
template<typename TYPE, int min, int max> template<typename TYPE, int min, int max> requires std::derived_from<TYPE, lib_syntax::IBasicRule>
class ReptR : public lib_syntax::Rept { class ReptR : public lib_syntax::Rept {
public: public:
ReptR() : Rept(std::make_shared<TYPE>(), min, max){ } ReptR() : Rept(std::make_shared<TYPE>(), min, max){ }
}; };
template<typename TYPE> class OptMulti : public ReptR<TYPE, 0, INT_MAX>{ };
template<typename TYPE> class Multi : public ReptR<TYPE, 1, INT_MAX>{ };
template<typename TYPE> class Opt : public ReptR<TYPE, 0, 1>{ };
template<typename E, typename T, lib_token::TokenProc<E> xproc = nullptr>
template<typename E, typename T, lib_token::TokenProc<E> p = 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, p> {
public: public:
TokenR() : TokenMatch<E, xproc>(std::make_shared<T>()){ } TokenR() : TokenMatch<E, p>(std::make_shared<T>()){ }
}; };
} }

View File

@ -54,7 +54,6 @@ namespace example_novel {
virtual std::tuple<std::shared_ptr<const lib_token::IToken>, std::shared_ptr<const lib_words::IPrimitiveWord>> virtual std::tuple<std::shared_ptr<const lib_token::IToken>, std::shared_ptr<const lib_words::IPrimitiveWord>>
analysis(std::shared_ptr<const lib_words::IPrimitiveWord> content) const override; analysis(std::shared_ptr<const lib_words::IPrimitiveWord> content) const override;
}; };
class LIBSYNTAX_EXPORT RankWord : public __keywords { class LIBSYNTAX_EXPORT RankWord : public __keywords {
public: public:
RankWord(); RankWord();