#pragma once /** * StoryChain文件定义. */ #include #include #include "ParseFrame.h" #include "XSyntaxBase.h" #include "ComnDef.h" namespace Parse { class NodeStoryPoint; /** * 故事脉络节点定义. */ class NodeStoryChain : public Result::NamedNode { public: /** * 构建一个新的脉络节点. * * \param src_path 源文件路径 */ explicit NodeStoryChain(Result::DocCore *doc, const QString &name); virtual ~NodeStoryChain() = default; /** * 获取此解析节点关联的源文件路径. * * \return 路径字符串 */ virtual QString srcPath() const; // 通过 NamedNode 继承 virtual bool check(QList& reasons) const override; virtual QString toString() const override; }; /** * 故事脉络定制解析器. */ class NodeStoryChainParser : public Syntax::XSyntaxBase { public: NodeStoryChainParser(Result::ParseCore *core); virtual ~NodeStoryChainParser() = default; Result::ParseCore* project() const; private: Result::ParseCore *pjt_ref; }; /** * 故事节点. */ class NodeStoryPoint : public Result::NamedNode { public: explicit NodeStoryPoint(NodeStoryChain *chain, const QString &name); virtual ~NodeStoryPoint() = default; /** * 获取此解析节点依附的脉络节点 * * \return 脉络节点 */ virtual NodeStoryChain* storyChain() const; // 通过 NamedNode 继承 virtual bool check(QList& reasons) const override; virtual QString toString() const override; }; /** * 故事节点定制解析器. */ class NodeStoryPointParser : public Syntax::XSyntaxBase { public: explicit NodeStoryPointParser(NodeStoryChainParser *chain); virtual ~NodeStoryPointParser() = default; NodeStoryChainParser* storyChainParser() const; virtual Result::DocCore* docRef() const override; private: NodeStoryChainParser *const parent_parser; }; /** * 节点描述内容节点. */ class NodeStoryDesGroup : public Result::DesNode { public: NodeStoryDesGroup(DesNode *parent_refer); virtual ~NodeStoryDesGroup() = default; // 通过 DesNode 继承 virtual bool check(QList&) const override; virtual QString toString() const override; }; class NodeStoryPureTextDesGroupParser : public Syntax::XSyntaxBase { public: explicit NodeStoryPureTextDesGroupParser(XSyntaxBase *pparser); virtual ~NodeStoryPureTextDesGroupParser() = default; private: XSyntaxBase *const parent_parser; }; /** * 描述内容文字块. */ class NodeStoryDesBlock : public Result::DesNode { public: explicit NodeStoryDesBlock(DesNode *parent_node, const QString &text); virtual ~NodeStoryDesBlock() = default; // 通过 DesNode 继承 virtual bool check(QList&) const override; virtual QString toString() const override; private: QString text_block; }; class StoryChainDocumentParser : public Syntax::ParseFrame { public: StoryChainDocumentParser(Result::ParseCore *pjt); virtual ~StoryChainDocumentParser() = default; }; }