This commit is contained in:
codeboss 2025-02-12 13:55:48 +08:00
parent 351c061479
commit 956bc5c85c
4 changed files with 22 additions and 22 deletions

View File

@ -49,7 +49,7 @@ void rank_set(std::shared_ptr<RankDeclare> inst, std::shared_ptr<const lib_token
inst->setRank(token->content().toInt());
}
using TextDeclsSyntaxDef = lib_composit::Multi<AnyR<TokenRn<TextSection, Numbers>, TokenRn<TextSection, NormalText>, TokenRn<TextSection, ReferMk>, TokenRn<TextSection, SplitMk>>>;
using TextDeclsSyntaxDef = lib_composit::Multi<AnyR<TMate<TextSection, Numbers>, TMate<TextSection, NormalText>, TMate<TextSection, ReferMk>, TMate<TextSection, SplitMk>>>;
class DeclSyntax : public ElementRule<TextSection, (int) NovelNode::TextSection, TextDeclsSyntaxDef> {
public:
DeclSyntax() : ElementRule<TextSection, (int) NovelNode::TextSection, TextDeclsSyntaxDef>("decl_section") { }
@ -62,9 +62,9 @@ public:
using PointSyntaxDef = lib_composit::SeqsR<TokenRn<PointDefines, LBracket>, TokenRn<PointDefines, PointWord>, TokenR<PointDefines, NameSection, point_nmset>,
using PointSyntaxDef = lib_composit::SeqsR<TMate<PointDefines, LBracket>, TMate<PointDefines, PointWord>, TAct<PointDefines, NameText, point_nmset>,
Opt<DeclSyntax>,
TokenRn<PointDefines, RBracket>>;
TMate<PointDefines, RBracket>>;
class PointSyntax : public ElementRule<PointDefines, (int) NovelNode::PointDefines, PointSyntaxDef> {
public:
PointSyntax() : ElementRule<PointDefines, (int) NovelNode::PointDefines, PointSyntaxDef>("point_define") { }
@ -77,9 +77,9 @@ public:
using ReferSyntaxDef = lib_composit::SeqsR<TokenRn<PointRefers, LBracket>, TokenRn<PointRefers, ReferMk>, TokenRn<PointRefers, PointWord>, TokenR<PointRefers, NameSection, ref_story_set>, TokenRn<PointRefers, ReferMk>, TokenR<PointRefers, NameSection, ref_slice_set>, TokenRn<PointRefers, ReferMk>, TokenR<PointRefers, NameSection, ref_point_set>,
using ReferSyntaxDef = lib_composit::SeqsR<TMate<PointRefers, LBracket>, TMate<PointRefers, ReferMk>, TMate<PointRefers, PointWord>, TAct<PointRefers, NameText, ref_story_set>, TMate<PointRefers, ReferMk>, TAct<PointRefers, NameText, ref_slice_set>, TMate<PointRefers, ReferMk>, TAct<PointRefers, NameText, ref_point_set>,
Opt<DeclSyntax>,
TokenRn<PointDefines, RBracket>>;
TMate<PointDefines, RBracket>>;
class ReferSyntax : public ElementRule<PointRefers, (int) NovelNode::PointRefers, ReferSyntaxDef> {
public:
ReferSyntax() : ElementRule < PointRefers, (int) NovelNode::PointRefers, ReferSyntaxDef>("point_refer") { }
@ -92,9 +92,9 @@ public:
using SliceSyntaxDef = lib_composit::SeqsR<TokenRn<FragmentSlice, LBracket>, TokenRn<FragmentSlice, SliceWord>, TokenR<FragmentSlice, NameSection, slice_nm_set>,
using SliceSyntaxDef = lib_composit::SeqsR<TMate<FragmentSlice, LBracket>, TMate<FragmentSlice, SliceWord>, TAct<FragmentSlice, NameText, slice_nm_set>,
lib_composit::OptMulti<AnyR<PointSyntax, ReferSyntax, DeclSyntax>>,
TokenRn<FragmentSlice, RBracket>>;
TMate<FragmentSlice, RBracket>>;
class SliceSyntax : public ElementRule<FragmentSlice, (int) NovelNode::FragmentSlice, SliceSyntaxDef> {
public:
SliceSyntax() : ElementRule<FragmentSlice, (int) NovelNode::FragmentSlice, SliceSyntaxDef>("slice_define") { }
@ -107,9 +107,9 @@ public:
using StorySyntaxDef = lib_composit::SeqsR<TokenRn<StoryDefine, LBracket>, TokenRn<StoryDefine, StoryWord>, TokenR<StoryDefine, NameSection, story_nmset>,
using StorySyntaxDef = lib_composit::SeqsR<TMate<StoryDefine, LBracket>, TMate<StoryDefine, StoryWord>, TAct<StoryDefine, NameText, story_nmset>,
lib_composit::OptMulti<AnyR<SliceSyntax, DeclSyntax>>,
TokenRn<StoryDefine, RBracket>>;
TMate<StoryDefine, RBracket>>;
class StorySyntax : public ElementRule<StoryDefine, (int) NovelNode::StoryDefine, StorySyntaxDef> {
public:
StorySyntax() : ElementRule<StoryDefine, (int) NovelNode::StoryDefine, StorySyntaxDef>("story_define") { }
@ -122,9 +122,9 @@ public:
using ArticleSyntaxDef = lib_composit::SeqsR<TokenRn<ArticleDefine, LBracket>, TokenRn<ArticleDefine, ArticleWord>, TokenR<ArticleDefine, NameSection, article_nset>,
using ArticleSyntaxDef = lib_composit::SeqsR<TMate<ArticleDefine, LBracket>, TMate<ArticleDefine, ArticleWord>, TAct<ArticleDefine, NameText, article_nset>,
lib_composit::OptMulti<AnyR<ReferSyntax, DeclSyntax>>,
TokenRn<ArticleDefine, RBracket>>;
TMate<ArticleDefine, RBracket>>;
class ArticleSyntax : public ElementRule<ArticleDefine, (int) NovelNode::ArticleDefine, ArticleSyntaxDef> {
public:
ArticleSyntax() : ElementRule<ArticleDefine, (int) NovelNode::ArticleDefine, ArticleSyntaxDef>("article_define") { }
@ -137,9 +137,9 @@ public:
using VolumeSyntaxDef = lib_composit::SeqsR<TokenRn<VolumeDefine, LBracket>, TokenRn<VolumeDefine, VolumeWord>, TokenR<VolumeDefine, NameSection, volume_nset>,
using VolumeSyntaxDef = lib_composit::SeqsR<TMate<VolumeDefine, LBracket>, TMate<VolumeDefine, VolumeWord>, TAct<VolumeDefine, NameText, volume_nset>,
lib_composit::OptMulti<AnyR<ArticleSyntax, DeclSyntax>>,
TokenRn<VolumeDefine, RBracket>>;
TMate<VolumeDefine, RBracket>>;
class VolumeSyntax : public ElementRule<VolumeDefine, (int) NovelNode::VolumeDefine, VolumeSyntaxDef> {
public:
VolumeSyntax() : ElementRule<VolumeDefine, (int) NovelNode::VolumeDefine, VolumeSyntaxDef>("volume_define") { }
@ -152,7 +152,7 @@ public:
using RankSyntaxDef = lib_composit::SeqsR<TokenRn<RankDeclare, DeclareSymbo>, TokenRn<RankDeclare, RankWord>, TokenR<RankDeclare, Numbers, rank_set>>;
using RankSyntaxDef = lib_composit::SeqsR<TMate<RankDeclare, DeclareSymbo>, TMate<RankDeclare, RankWord>, TAct<RankDeclare, Numbers, rank_set>>;
class RankSyntax : public ElementRule<RankDeclare, (int) NovelNode::RankDeclaration, RankSyntaxDef> {
public:
RankSyntax() : ElementRule<RankDeclare, (int) NovelNode::RankDeclaration, RankSyntaxDef>("rank_define") { }

View File

@ -48,9 +48,9 @@ namespace lib_composit {
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, p> {
class TAct : public lib_syntax::TokenMatch<E, p> {
public:
TokenR() : TokenMatch<E, p>(std::make_shared<T>()) { }
TAct() : TokenMatch<E, p>(std::make_shared<T>()) { }
};
template<typename ExprT> requires std::derived_from<ExprT, ast_basic::IExprInstance>
@ -59,5 +59,5 @@ namespace lib_composit {
}
template<typename E, typename T>
requires std::derived_from<E, ast_basic::IExprInstance>&& std::derived_from<T, lib_token::ITokenProcess>
class TokenRn : public TokenR<E, T, apntk> { };
class TMate : public TAct<E, T, apntk> { };
}

View File

@ -134,17 +134,17 @@ int SplitMk::typeMark() const
QString SplitMk::regex() const { return "&"; }
QString NameSection::reviseWords() const { return "名称"; }
QString NameText::reviseWords() const { return "名称"; }
int NameSection::typeMark() const
int NameText::typeMark() const
{
return 0x08000000;
}
QString NameSection::regex() const { return "^([^\\{\\}@&]+)"; }
QString NameText::regex() const { return "^([^\\{\\}@&]+)"; }
std::tuple<std::shared_ptr<const IToken>, std::shared_ptr<const IPrimitiveWord> >
NameSection::analysis(std::shared_ptr<const IPrimitiveWord> content) const
NameText::analysis(std::shared_ptr<const IPrimitiveWord> content) const
{
auto text = content->content();
QRegExp regx(regex());

View File

@ -91,7 +91,7 @@ namespace example_novel {
};
class LIBSYNTAX_EXPORT NameSection : public lib_token::ITokenProcess, public std::enable_shared_from_this<NameSection> {
class LIBSYNTAX_EXPORT NameText : public lib_token::ITokenProcess, public std::enable_shared_from_this<NameText> {
// TokenDefine interface
public:
virtual QString reviseWords() const override;