WsParser_VS/libToken/tokens_novel.h

129 lines
4.9 KiB
C++

#pragma once
#include "libToken_global.h"
#include "libtoken.h"
#include <QString>
#include <memory>
#include <tuple>
namespace lib_token {
/**
* @brief ´Ê·¨½âÎö³É¹û
*/
class TokenContent : public IToken {
private:
int row_n, col_n, doc_offset;
QString text_n, path_p;
std::shared_ptr<const ITokenDefine> type_def;
public:
TokenContent(int r, int c, uint64_t pos, const QString& t, const QString& p, std::shared_ptr<const ITokenDefine> paramType);
// WordBase interface
public:
virtual QString file() const override;
virtual uint64_t position() const override;
virtual QString content() const override;
virtual int row() const override;
virtual int column() const override;
virtual std::shared_ptr<const IWordBase> nextWord() const override;
// Token interface
public:
virtual std::shared_ptr<const ITokenDefine> define() const override;
};
}
namespace example_novel {
class LIBTOKEN_EXPORT LeftBracket : public lib_token::ITokenDefine, public std::enable_shared_from_this<LeftBracket> {
// TokenDefine interface
public:
virtual QString reviseWords() const override;
virtual int typeMark() const override;
virtual QString regex() const override;
virtual std::tuple<std::shared_ptr<const lib_token::IToken>, std::shared_ptr<const lib_token::IWordBase>>
analysis(std::shared_ptr<const lib_token::IWordBase> content) const override;
};
class LIBTOKEN_EXPORT RightBracket : public LeftBracket {
public:
virtual QString reviseWords() const override;
virtual int typeMark() const override;
virtual QString regex() const override;
};
class LIBTOKEN_EXPORT ReferMark : public LeftBracket {
public:
virtual QString reviseWords() const override;
virtual int typeMark() const override;
virtual QString regex() const override;
};
class LIBTOKEN_EXPORT Split : public LeftBracket {
public:
virtual QString reviseWords() 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<Keywords> {
private:
QString means_store;
int type_code;
public:
Keywords(const QString& val, uint type_code);
// TokenDefine interface
public:
virtual QString reviseWords() const override;
virtual int typeMark() const override;
virtual QString regex() const override;
virtual std::tuple<std::shared_ptr<const lib_token::IToken>, std::shared_ptr<const lib_token::IWordBase>>
analysis(std::shared_ptr<const lib_token::IWordBase> content) const override;
};
class LIBTOKEN_EXPORT Numbers : public lib_token::ITokenDefine, public std::enable_shared_from_this<Numbers> {
// TokenDefine interface
public:
virtual QString reviseWords() const override;
virtual int typeMark() const override;
virtual QString regex() const override;
virtual std::tuple<std::shared_ptr<const lib_token::IToken>, std::shared_ptr<const lib_token::IWordBase>>
analysis(std::shared_ptr<const lib_token::IWordBase> content) const override;
};
class LIBTOKEN_EXPORT NameSection : public lib_token::ITokenDefine, public std::enable_shared_from_this<NameSection> {
// TokenDefine interface
public:
virtual QString reviseWords() const override;
virtual int typeMark() const override;
virtual QString regex() const override;
virtual std::tuple<std::shared_ptr<const lib_token::IToken>, std::shared_ptr<const lib_token::IWordBase>>
analysis(std::shared_ptr<const lib_token::IWordBase> content) const override;
};
class LIBTOKEN_EXPORT VTextSection : public lib_token::ITokenDefine, public std::enable_shared_from_this<VTextSection> {
// TokenDefine interface
public:
virtual QString reviseWords() const override;
virtual int typeMark() const override;
virtual QString regex() const override;
virtual std::tuple<std::shared_ptr<const lib_token::IToken>, std::shared_ptr<const lib_token::IWordBase>>
analysis(std::shared_ptr<const lib_token::IWordBase> content) const override;
};
class LIBTOKEN_EXPORT DeclareSymbo : public lib_token::ITokenDefine, public std::enable_shared_from_this<DeclareSymbo> {
public:
// ͨ¹ý TokenDefine ¼Ì³Ð
virtual QString reviseWords() const override;
virtual int typeMark() const override;
virtual QString regex() const override;
virtual std::tuple<std::shared_ptr<const lib_token::IToken>, std::shared_ptr<const lib_token::IWordBase>>
analysis(std::shared_ptr<const lib_token::IWordBase> content) const override;
};
} // namespace example_novel