From ff8eb5a8d5687c4d58f10b48fc70041f115679b2 Mon Sep 17 00:00:00 2001 From: codeboss <2422523675@qq.com> Date: Sun, 2 Feb 2025 22:29:03 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B8=90=E8=BF=9B=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- StoryPresent/cmp_present.cpp | 4 ++-- StoryPresent/storyline_compare.cpp | 2 +- StoryPresent/storypresent.cpp | 4 ++-- StoryPresent/xast_parse.cpp | 8 ++++---- StoryPresent/xast_parse.h | 2 +- WsNovelParser/htmlprint.cpp | 16 ++++++++-------- libParse/parse_novel.cpp | 4 ++-- libSyntax/ast_novel.cpp | 18 +++++++++--------- libSyntax/ast_novel.h | 5 +++-- libSyntax/syntax_novel.cpp | 12 ++++++------ 10 files changed, 38 insertions(+), 37 deletions(-) diff --git a/StoryPresent/cmp_present.cpp b/StoryPresent/cmp_present.cpp index 5cce0f4..6ee213b 100644 --- a/StoryPresent/cmp_present.cpp +++ b/StoryPresent/cmp_present.cpp @@ -218,7 +218,7 @@ QVariant StorylineModel::data(const QModelIndex& index, int role) const { auto node = dynamic_pointer_cast(curr_node); return node->getTextNode()->getLines(); } - case SliceType::FragmentRefers: + case SliceType::PointRefers: { auto node = dynamic_pointer_cast(curr_node); return node->getTextNode()->getLines(); @@ -260,7 +260,7 @@ bool StorylineModel::setData(const QModelIndex& index, const QVariant& value, in auto defnode = dynamic_pointer_cast(curr_node); defnode->getTextNode()->setLines(value.toString()); }break; - case SliceType::FragmentRefers: + case SliceType::PointRefers: { auto refnode = dynamic_pointer_cast(curr_node); refnode->getTextNode()->setLines(value.toString()); diff --git a/StoryPresent/storyline_compare.cpp b/StoryPresent/storyline_compare.cpp index 5a752d0..f782b46 100644 --- a/StoryPresent/storyline_compare.cpp +++ b/StoryPresent/storyline_compare.cpp @@ -131,7 +131,7 @@ bool Compare::upstream_check(std::shared_ptr a, std::shared_ptr(prev_slice_a)->getLines(); desc_b = std::dynamic_pointer_cast(prev_slice_b)->getLines(); }break; - case SliceType::FragmentRefers: + case SliceType::PointRefers: { desc_a = std::dynamic_pointer_cast(prev_slice_a)->getTextNode()->getLines(); desc_b = std::dynamic_pointer_cast(prev_slice_b)->getTextNode()->getLines(); diff --git a/StoryPresent/storypresent.cpp b/StoryPresent/storypresent.cpp index fb6beaf..66dcc9c 100644 --- a/StoryPresent/storypresent.cpp +++ b/StoryPresent/storypresent.cpp @@ -54,7 +54,7 @@ void StoryPresent::loadXAST(const QString& ast_path) arrows << graph_data::Arrow(arrow_start, arrow_tail); arrow_start = arrow_tail; }break; - case SliceType::FragmentRefers: + case SliceType::PointRefers: { auto conv_refer = std::dynamic_pointer_cast(frag_temp); auto arrow_tail = conv_refer->fragmentRefer() + u8"@" + conv_refer->storyRefer(); @@ -88,7 +88,7 @@ void StoryPresent::nodeClickAccept(const QPointF& pos, const QString& node_name) auto fragm = std::dynamic_pointer_cast(temp_node); node_names << QString(u8"%1@%2").arg(fragm->name(), node_name); }break; - case SliceType::FragmentRefers: + case SliceType::PointRefers: { auto frefer = std::dynamic_pointer_cast(temp_node); node_names << QString(u8"%1@%2").arg(frefer->fragmentRefer(), frefer->storyRefer()); diff --git a/StoryPresent/xast_parse.cpp b/StoryPresent/xast_parse.cpp index 2908936..cfd10f3 100644 --- a/StoryPresent/xast_parse.cpp +++ b/StoryPresent/xast_parse.cpp @@ -141,7 +141,7 @@ shared_ptr __DesElement::getTextNode() const { } FragmentRefer::FragmentRefer(const QString& story, const QString& fragm, shared_ptr pnode) - : __DesElement(SliceType::FragmentRefers, pnode), story_refers(story), fragment_refers(fragm) { } + : __DesElement(SliceType::PointRefers, pnode), story_refers(story), fragment_refers(fragm) { } QString FragmentRefer::storyRefer() const { return this->story_refers; @@ -376,7 +376,7 @@ shared_ptr XAST_Parser::fragment_refer_build(shared_ptr<__Collect void XAST_Parser::fragments_plait(QHash> story_map, shared_ptr reflist) { auto slice = reflist->firstChild(); while (slice) { - if (slice->type() == SliceType::FragmentRefers) { + if (slice->type() == SliceType::PointRefers) { auto refer_inst = static_pointer_cast(slice); auto story_target = story_map[refer_inst->storyRefer()]; auto fragm_target = story_target->getFragment(refer_inst->fragmentRefer()); @@ -509,7 +509,7 @@ void xast_parse::XAST_Parser::write_story(std::shared_ptr inst, con case SliceType::FragmentDefines: this->write_fragmdef(1, std::dynamic_pointer_cast(temp), o); break; - case SliceType::FragmentRefers: + case SliceType::PointRefers: this->write_fragmref(1, std::dynamic_pointer_cast(temp), o); break; default: @@ -582,7 +582,7 @@ void xast_parse::XAST_Parser::write_article(int dep, std::shared_ptrwrite_text(dep + 1, std::dynamic_pointer_cast(temp), out); break; - case SliceType::FragmentRefers: + case SliceType::PointRefers: this->write_fragmref(dep + 1, std::dynamic_pointer_cast(temp), out); break; default: diff --git a/StoryPresent/xast_parse.h b/StoryPresent/xast_parse.h index 2e18a02..3b70b33 100644 --- a/StoryPresent/xast_parse.h +++ b/StoryPresent/xast_parse.h @@ -14,7 +14,7 @@ namespace xast_parse { StoryDefines, // 故事线定义 TextPragraph, // 文字段落 FragmentDefines, // 情节定义 - FragmentRefers, // 情节引用 + PointRefers, // 情节引用 VolumeDefines, // 卷宗定义 ArticleDefines, // 章节定义 }; diff --git a/WsNovelParser/htmlprint.cpp b/WsNovelParser/htmlprint.cpp index be09da2..bca5ad6 100644 --- a/WsNovelParser/htmlprint.cpp +++ b/WsNovelParser/htmlprint.cpp @@ -115,7 +115,7 @@ void StoryVolume::buildPageHTML(QDomElement& parent) const { parent_element.appendChild(article_group); }break; case NovelNode::PointRefers:{ - auto fragment_inst = std::dynamic_pointer_cast(child->element()); + auto fragment_inst = std::dynamic_pointer_cast(child->element()); auto refer_inst = this->getElement(fragment_inst->signature()); refer_inst->buildSliceHTML(parent_element); }break; @@ -142,7 +142,7 @@ std::shared_ptr printer::FragmentRef::hostFragment() const void FragmentRef::buildSliceHTML(QDomElement& dom_parent) const { auto syntax_access = this->accessPeers(); - auto refer_element = std::dynamic_pointer_cast(syntax_access->element()); + auto refer_element = std::dynamic_pointer_cast(syntax_access->element()); auto jump_to_host = this->hostFragment()->pageRefers(); auto doc = dom_parent.ownerDocument(); @@ -191,7 +191,7 @@ void FragmentRef::buildSliceHTML(QDomElement& dom_parent) const { void FragmentRef::buildPageHTML(QDomElement& parent) const { auto syntax_access = this->accessPeers(); - auto refer_element = std::dynamic_pointer_cast(syntax_access->element()); + auto refer_element = std::dynamic_pointer_cast(syntax_access->element()); auto doc = parent.ownerDocument(); @@ -340,7 +340,7 @@ void tools_printer::build_storyline(std::shared_ptr line, std::shared line->append(inst); }return; case NovelNode::PointRefers: { - auto refer_node = std::dynamic_pointer_cast(novel_node->element()); + auto refer_node = std::dynamic_pointer_cast(novel_node->element()); auto refer_fragment = this->fragment_defines[refer_node->referSignature()]; auto inst = std::make_shared(novel_node); refer_fragment->appendRefers(inst); @@ -361,7 +361,7 @@ void tools_printer::build_volumeline(std::shared_ptr volume, std::s } else { if (NovelNode::PointRefers == (NovelNode)novel_node->element()->typeMark()) { - auto refer_node = std::dynamic_pointer_cast(novel_node->element()); + auto refer_node = std::dynamic_pointer_cast(novel_node->element()); auto refer_fragment = this->fragment_defines[refer_node->referSignature()]; auto inst = std::make_shared(novel_node); refer_fragment->appendRefers(inst); @@ -459,7 +459,7 @@ QString printer::tools_printer::storylines_paint(const QListaccessPeers()->element()->typeMark()) { - auto frag_refer = std::dynamic_pointer_cast(frag->accessPeers()->element()); + auto frag_refer = std::dynamic_pointer_cast(frag->accessPeers()->element()); auto frag_src = node_records[frag_refer->referSignature()]; arrows_link += previous_node + u8"->" + get_node_name(frag_src) + QString(u8"[label=\"%1{%2}\"]\n") .arg(story_elem->name()).arg(story_elem->sort()); @@ -497,7 +497,7 @@ QString printer::tools_printer::volumes_paint(const QListchildren()) { if (fragment_access->element()->typeMark() == (int)example_novel::NovelNode::PointRefers) { - auto refer_fragment = std::dynamic_pointer_cast(fragment_access->element()); + auto refer_fragment = std::dynamic_pointer_cast(fragment_access->element()); nodes_description += QString(u8"fragment_%1[label=\"%2\",shape=\"plaintext\"]\n") .arg((qulonglong)refer_fragment.get()).arg(refer_fragment->fragmentRefer()); auto symbo_refer = node_records[refer_fragment->referSignature()]; @@ -789,7 +789,7 @@ bool printer::AstGenerate::visit(std::shared_ptr s } auto current_pnode = element_stack.last(); - auto refer_node = std::dynamic_pointer_cast(syntax_element->element()); + auto refer_node = std::dynamic_pointer_cast(syntax_element->element()); auto dom_refer = doc.createElement(u8"refer"); element_stack.append(dom_refer); current_pnode.appendChild(dom_refer); diff --git a/libParse/parse_novel.cpp b/libParse/parse_novel.cpp index f06c03a..47df5fd 100644 --- a/libParse/parse_novel.cpp +++ b/libParse/parse_novel.cpp @@ -14,7 +14,7 @@ using namespace example_novel; void FragmentExistsCheck::exists_check(std::shared_ptr root, std::shared_ptr target) const { if (target->element()->typeMark() == (int)NovelNode::PointRefers) { - auto refer = std::dynamic_pointer_cast(target->element()); + auto refer = std::dynamic_pointer_cast(target->element()); auto signature = refer->storyRefer() + u8"&" + refer->fragmentRefer(); if (!root->getNamedNodeBy((int)NovelNode::PointDefines, signature)) throw new SyntaxException(QString(u8"CheckError[0x0005]系统中不包含指定签名的节点:%1{%3:(%4)}") @@ -162,7 +162,7 @@ void FragmentGraphCheck::validCheck(std::shared_ptr root) c return def_node->signature(); }break; case (int)NovelNode::PointRefers: { - auto ref_node = std::dynamic_pointer_cast(node->element()); + auto ref_node = std::dynamic_pointer_cast(node->element()); return ref_node->referSignature(); }break; } diff --git a/libSyntax/ast_novel.cpp b/libSyntax/ast_novel.cpp index 344d604..c673429 100644 --- a/libSyntax/ast_novel.cpp +++ b/libSyntax/ast_novel.cpp @@ -25,33 +25,33 @@ bool TextSection::isAnonymous() const QString TextSection::signature() const { return u8"::section"; } -FragmentRefers::FragmentRefers(std::shared_ptr rule_bind) +PointRefers::PointRefers(std::shared_ptr rule_bind) : AbstractImpl(rule_bind) {} -QString FragmentRefers::storyRefer() const { return story_refs; } +QString PointRefers::storyRefer() const { return story_refs; } -void example_novel::FragmentRefers::setStoryRefer(const QString& refer) { +void example_novel::PointRefers::setStoryRefer(const QString& refer) { this->story_refs = refer; } -QString FragmentRefers::fragmentRefer() const { return fragment_ref; } +QString PointRefers::fragmentRefer() const { return fragment_ref; } -void example_novel::FragmentRefers::setFragmentRefer(const QString& refer) { +void example_novel::PointRefers::setFragmentRefer(const QString& refer) { this->fragment_ref = refer; } -QString FragmentRefers::referSignature() const { +QString PointRefers::referSignature() const { return storyRefer() + u8"&" + fragmentRefer(); } -int FragmentRefers::typeMark() const { return (int)NovelNode::PointRefers; } +int PointRefers::typeMark() const { return (int)NovelNode::PointRefers; } -bool FragmentRefers::isAnonymous() const +bool PointRefers::isAnonymous() const { return true; } -QString FragmentRefers::signature() const { +QString PointRefers::signature() const { QString signature = u8"@" + storyRefer() + u8"&" + fragmentRefer(); return parent()->signature() + signature; } diff --git a/libSyntax/ast_novel.h b/libSyntax/ast_novel.h index 19f006b..b487919 100644 --- a/libSyntax/ast_novel.h +++ b/libSyntax/ast_novel.h @@ -13,6 +13,7 @@ namespace example_novel { ArticleDefine = 6, VolumeDefine = 7, RankDeclaration = 8, + FragmentSlice = 9, }; class LIBSYNTAX_EXPORT AbstractImpl : public ast_basic::ExprElement, public ast_gen::SyntaxElement { @@ -44,9 +45,9 @@ namespace example_novel { virtual QString signature() const override; }; - class LIBSYNTAX_EXPORT FragmentRefers : public AbstractImpl { + class LIBSYNTAX_EXPORT PointRefers : public AbstractImpl { public: - FragmentRefers(std::shared_ptr rule_bind); + PointRefers(std::shared_ptr rule_bind); QString storyRefer() const; void setStoryRefer(const QString& refer); diff --git a/libSyntax/syntax_novel.cpp b/libSyntax/syntax_novel.cpp index e9f8959..8fb35d2 100644 --- a/libSyntax/syntax_novel.cpp +++ b/libSyntax/syntax_novel.cpp @@ -57,18 +57,18 @@ auto fragment_decl = ElementRule(u8"fragment_define", (int)Novel MR(FragmentDefine, rightb) )); -void frags_snm_set(std::shared_ptr inst, std::shared_ptr token) { +void frags_snm_set(std::shared_ptr inst, std::shared_ptr token) { inst->setStoryRefer(token->content()); } -void frags_fnm_set(std::shared_ptr inst, std::shared_ptr token) { +void frags_fnm_set(std::shared_ptr inst, std::shared_ptr token) { inst->setFragmentRefer(token->content()); } -auto fragment_refer = ElementRule(u8"fragment_refer", (int)NovelExprs::FRAG_REFERS).reloadRule( +auto fragment_refer = ElementRule(u8"fragment_refer", (int)NovelExprs::FRAG_REFERS).reloadRule( std::make_shared(Rules{ - MR(FragmentRefers, leftb), MR(FragmentRefers, refers), MR(FragmentRefers, frag_key), - MER(FragmentRefers, frags_fnm_set, name_text), MR(FragmentRefers, split_mark), MER(FragmentRefers, frags_snm_set, name_text) } << + MR(PointRefers, leftb), MR(PointRefers, refers), MR(PointRefers, frag_key), + MER(PointRefers, frags_fnm_set, name_text), MR(PointRefers, split_mark), MER(PointRefers, frags_snm_set, name_text) } << OptR(decl_expr) << - MR(FragmentRefers, rightb) + MR(PointRefers, rightb) )); void story_nmset(std::shared_ptr inst, std::shared_ptr token) {