QtNovelUI/libParse/token_impls.h

105 lines
3.8 KiB
C++

#ifndef TOKEN_IMPLS_H
#define TOKEN_IMPLS_H
#include "lex_foundation.h"
namespace Lex {
/**
* \brief 閺傚洦婀扮拠宥堫嚔鐟欙絾鐎界€圭偟骞囩猾 */
class TokenWord : public WordBase {
public:
virtual ~TokenWord() = default;
/**
* \brief 閺傛澘缂撶拠宥堫嚔鐎圭偘绶 * \param file_path 閺傚洣娆㈢捄顖氱窞娑撳秴褰查崣 */
explicit TokenWord(const QString &file_path);
/**
* \brief 閼惧嘲褰囬崘鍛啇
*/
virtual QString content() const override;
/**
* \brief 閼惧嘲褰囬弬鍥︽鐠侯垰绶 */
virtual QString filePath() const override;
/**
* \brief 閼惧嘲褰囨禒锝囩垳鐞 */
virtual int row() const override;
/**
* \brief 閼惧嘲褰囨禒锝囩垳閸 */
virtual int column() const override;
/**
* @brief 鐠у鈧壈绻嶇粻妤冾儊閿涘奔鎱ㄩ弨瑙勫閺堝鍞寸€ * @param other
* @return
*/
// virtual WordBase &operator=(const WordBase &other) override;
/**
* \brief 鐠佸墽鐤嗙€圭偘绶ラ惃鍕敶鐎圭懓鐣炬稊 /// <param name="word">鐠囧秷顕㈤弬鍥ㄦ拱</param>
/// <param name="row">鐞涘苯鐣炬稊/param>
/// <param name="col">閸掓鐣炬稊/param>
*/
void reset(const QString &word, int row, int col);
private:
QString content_val;
QString filepath_val;
int row_val, column_val;
};
/**
* @brief 瑜版挸澧犵憴锝嗙€介崘鍛啇
*/
class TokenResult : public Token {
private:
TokenDef *const def_store;
WordBase *remains_store;
QString content_store;
QString filepath_store;
int row_store, col_store;
public:
/**
* @brief 閺嬪嫬缂揟oken鐟欙絾鐎界紒鎾寸亯鐎圭偘绶 * @param def 鐟欙絾鐎介張鍝勫煑鐎规矮绠 * @param word 閺傚洦婀扮€圭偘绶ラ崘鍛啇
* @param length 缂佹挻鐏夐柅鍌炲帳闂€鍨
*/
TokenResult(TokenDef *def, const WordBase &word, int length);
virtual ~TokenResult() = default;
/**
* @brief Token鐟欙絾鐎界€规矮绠 * @return 鐎规矮绠熺€圭偘绶ラ敍宀€顓搁悶鍡樻綀娑撳秶些娴 */
virtual TokenDef *def() const override;
/**
* @brief 鐟欙絾鐎介崜鈺€绗呴惃鍕敶鐎 * @return 閼惧嘲褰囬崜鈺€绗呴惃鍕槤鐠 */
virtual WordBase *remains() const override;
/**
* \brief 閼惧嘲褰嘥oken閸栧懎鎯堥崘鍛啇
* \return 閸愬懎顔 */
virtual QString content() const override;
/**
* \brief 閼惧嘲褰嘥oken缂佹垵鐣鹃惃鍕瀮濡楋綀鐭惧 * \return 鐠侯垰绶 */
virtual QString filePath() const override;
/**
* \brief 閺堢悡oken濠ф劒鍞惍浣筋攽鐎规矮绠 * \return 鐞涘苯褰 */
virtual int row() const override;
/**
* \brief 閺堢悡oken濠ф劒鍞惍浣稿灙鐎规矮绠 * \return 閸掓褰 */
virtual int column() const override;
/**
* @brief 閸愬懎顔愭径宥呭煑閿涘奔绗夋导姘叏閺€鐟扮暰娑斿琚崹瀣拨鐎规艾鎷伴崜鈺€缍戦崘鍛啇鐎规矮绠 * @param other 閸忔湹绮崘鍛啇
* @return
*/
// virtual WordBase &operator=(const WordBase &other);
};
} // namespace Lex
#endif // TOKEN_IMPLS_H