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()){ }
};
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 {
public:
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>
class TokenR : public lib_syntax::TokenMatch<E, xproc> {
class TokenR : public lib_syntax::TokenMatch<E, p> {
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>>
analysis(std::shared_ptr<const lib_words::IPrimitiveWord> content) const override;
};
class LIBSYNTAX_EXPORT RankWord : public __keywords {
public:
RankWord();