#pragma once #include "libToken_global.h" #include "libtoken.h" #include #include #include namespace lib_token { /** * @brief 词法解析成果 */ class TokenContent : public IToken { private: int row_n, col_n; QString text_n, path_p; std::shared_ptr type_def; public: TokenContent(int r, int c, const QString& t, const QString& p, std::shared_ptr type); // WordBase interface public: virtual QString file() const override; virtual QString content() const override; virtual int row() const override; virtual int column() const override; virtual std::shared_ptr nextWord() const override; // Token interface public: virtual std::shared_ptr define() const override; }; } namespace example_novel { class LIBTOKEN_EXPORT LeftBracket : public lib_token::ITokenDefine, public std::enable_shared_from_this { // TokenDefine interface public: virtual QString typeName() const override; virtual int typeMark() const override; virtual QString regex() const override; virtual std::tuple, std::shared_ptr> analysis(std::shared_ptr content) const override; }; class LIBTOKEN_EXPORT RightBracket : public LeftBracket { public: virtual QString typeName() const override; virtual int typeMark() const override; virtual QString regex() const override; }; class LIBTOKEN_EXPORT ReferMark : public LeftBracket { public: virtual QString typeName() const override; virtual int typeMark() const override; virtual QString regex() const override; }; class LIBTOKEN_EXPORT NewLine : public LeftBracket { public: virtual QString typeName() const override; virtual int typeMark() const override; virtual QString regex() const override; }; class LIBTOKEN_EXPORT Split : public LeftBracket { public: virtual QString typeName() const override; virtual int typeMark() const override; virtual QString regex() const override; }; class LIBTOKEN_EXPORT Keywords : public lib_token::ITokenDefine, public std::enable_shared_from_this { private: QString value_store, name_store; int type_code; public: Keywords(const QString& val, const QString& nm, uint type_code); // TokenDefine interface public: virtual QString typeName() const override; virtual int typeMark() const override; virtual QString regex() const override; virtual std::tuple, std::shared_ptr> analysis(std::shared_ptr content) const override; }; class LIBTOKEN_EXPORT Numbers : public lib_token::ITokenDefine, public std::enable_shared_from_this { // TokenDefine interface public: virtual QString typeName() const override; virtual int typeMark() const override; virtual QString regex() const override; virtual std::tuple, std::shared_ptr> analysis(std::shared_ptr content) const override; }; class LIBTOKEN_EXPORT NameSection : public lib_token::ITokenDefine, public std::enable_shared_from_this { // TokenDefine interface public: virtual QString typeName() const override; virtual int typeMark() const override; virtual QString regex() const override; virtual std::tuple, std::shared_ptr> analysis(std::shared_ptr content) const override; }; class LIBTOKEN_EXPORT VTextSection : public lib_token::ITokenDefine, public std::enable_shared_from_this { // TokenDefine interface public: virtual QString typeName() const override; virtual int typeMark() const override; virtual QString regex() const override; virtual std::tuple, std::shared_ptr> analysis(std::shared_ptr content) const override; }; class LIBTOKEN_EXPORT DeclareSymbo : public lib_token::ITokenDefine, public std::enable_shared_from_this { public: // 通过 TokenDefine 继承 virtual QString typeName() const override; virtual int typeMark() const override; virtual QString regex() const override; virtual std::tuple, std::shared_ptr> analysis(std::shared_ptr content) const override; }; } // namespace example_novel