#pragma once #include "ast_basic.h" #include "ast_gen.h" #include "libsyntax.h" #include #include namespace example_novel { /** * @brief 节点类型 * ExprNode::typeMark() 返回值 */ enum NovelExprs { DESPITE = -1, DESC_SECTION = 0, FRAG_REFERS = 1, FRAG_DEFINES = 2, STORY_DEFINES = 3, DOC_DEFINES = 4, VOLUME_DEFINE = 5, ARTICLE_DEFINE = 6, }; class LIBSYNTAX_EXPORT NovalSyntax { public: /** * @brief 获取novel词法解析器 * @param path 文件路径 * @param name 文件名称 * @return */ static std::shared_ptr getLexReader(); /** * @brief 获取novel语法解析树 * @return */ static std::shared_ptr getParseTree(); static std::shared_ptr tidy(std::shared_ptr root, QList> docs); private: static void cache_load(std::shared_ptr root, QList> docs); static void node_register(std::shared_ptr root, QList> docs); }; } // namespace example_novel