2024-03-17 07:58:28 +00:00
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#include "libToken_global.h"
|
|
|
|
|
#include "libtoken.h"
|
|
|
|
|
#include <QString>
|
|
|
|
|
#include <memory>
|
|
|
|
|
#include <tuple>
|
|
|
|
|
|
2024-06-20 04:49:26 +00:00
|
|
|
|
namespace lib_token {
|
|
|
|
|
/**
|
|
|
|
|
* @brief <EFBFBD>ʷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>
|
|
|
|
|
*/
|
|
|
|
|
class TokenContent : public IToken {
|
|
|
|
|
private:
|
2024-06-27 04:55:07 +00:00
|
|
|
|
int row_n, col_n, doc_offset;
|
2024-06-20 04:49:26 +00:00
|
|
|
|
QString text_n, path_p;
|
|
|
|
|
std::shared_ptr<const ITokenDefine> type_def;
|
|
|
|
|
|
|
|
|
|
public:
|
2024-07-12 05:44:45 +00:00
|
|
|
|
TokenContent(int r, int c, uint64_t pos, const QString& t, const QString& p, std::shared_ptr<const ITokenDefine> paramType);
|
2024-06-20 04:49:26 +00:00
|
|
|
|
|
|
|
|
|
// WordBase interface
|
|
|
|
|
public:
|
|
|
|
|
virtual QString file() const override;
|
2024-07-12 05:44:45 +00:00
|
|
|
|
virtual uint64_t position() const override;
|
2024-06-20 04:49:26 +00:00
|
|
|
|
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;
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
2024-03-17 07:58:28 +00:00
|
|
|
|
namespace example_novel {
|
2024-06-20 04:49:26 +00:00
|
|
|
|
class LIBTOKEN_EXPORT LeftBracket : public lib_token::ITokenDefine, public std::enable_shared_from_this<LeftBracket> {
|
2024-03-17 07:58:28 +00:00
|
|
|
|
// TokenDefine interface
|
|
|
|
|
public:
|
2024-06-19 04:05:43 +00:00
|
|
|
|
virtual QString typeName() const override;
|
|
|
|
|
virtual int typeMark() const override;
|
2024-03-17 07:58:28 +00:00
|
|
|
|
virtual QString regex() const override;
|
2024-06-20 04:49:26 +00:00
|
|
|
|
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;
|
2024-03-17 07:58:28 +00:00
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class LIBTOKEN_EXPORT RightBracket : public LeftBracket {
|
|
|
|
|
public:
|
2024-06-19 04:05:43 +00:00
|
|
|
|
virtual QString typeName() const override;
|
|
|
|
|
virtual int typeMark() const override;
|
2024-03-17 07:58:28 +00:00
|
|
|
|
virtual QString regex() const override;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class LIBTOKEN_EXPORT ReferMark : public LeftBracket {
|
|
|
|
|
public:
|
2024-06-19 04:05:43 +00:00
|
|
|
|
virtual QString typeName() const override;
|
|
|
|
|
virtual int typeMark() const override;
|
2024-03-17 07:58:28 +00:00
|
|
|
|
virtual QString regex() const override;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class LIBTOKEN_EXPORT Split : public LeftBracket {
|
|
|
|
|
public:
|
2024-06-19 04:05:43 +00:00
|
|
|
|
virtual QString typeName() const override;
|
|
|
|
|
virtual int typeMark() const override;
|
2024-03-17 07:58:28 +00:00
|
|
|
|
virtual QString regex() const override;
|
|
|
|
|
};
|
|
|
|
|
|
2024-06-20 04:49:26 +00:00
|
|
|
|
class LIBTOKEN_EXPORT Keywords : public lib_token::ITokenDefine, public std::enable_shared_from_this<Keywords> {
|
2024-03-17 07:58:28 +00:00
|
|
|
|
private:
|
2024-06-22 10:53:51 +00:00
|
|
|
|
QString means_store, name_store;
|
2024-06-19 04:05:43 +00:00
|
|
|
|
int type_code;
|
2024-03-17 07:58:28 +00:00
|
|
|
|
|
|
|
|
|
public:
|
2024-06-19 04:05:43 +00:00
|
|
|
|
Keywords(const QString& val, const QString& nm, uint type_code);
|
2024-03-17 07:58:28 +00:00
|
|
|
|
|
|
|
|
|
// TokenDefine interface
|
|
|
|
|
public:
|
2024-06-19 04:05:43 +00:00
|
|
|
|
virtual QString typeName() const override;
|
|
|
|
|
virtual int typeMark() const override;
|
2024-03-17 07:58:28 +00:00
|
|
|
|
virtual QString regex() const override;
|
2024-06-20 04:49:26 +00:00
|
|
|
|
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;
|
2024-03-17 07:58:28 +00:00
|
|
|
|
};
|
|
|
|
|
|
2024-06-20 04:49:26 +00:00
|
|
|
|
class LIBTOKEN_EXPORT Numbers : public lib_token::ITokenDefine, public std::enable_shared_from_this<Numbers> {
|
2024-03-17 07:58:28 +00:00
|
|
|
|
// TokenDefine interface
|
|
|
|
|
public:
|
2024-06-19 04:05:43 +00:00
|
|
|
|
virtual QString typeName() const override;
|
|
|
|
|
virtual int typeMark() const override;
|
2024-03-17 07:58:28 +00:00
|
|
|
|
virtual QString regex() const override;
|
2024-06-20 04:49:26 +00:00
|
|
|
|
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;
|
2024-03-17 07:58:28 +00:00
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
2024-06-20 04:49:26 +00:00
|
|
|
|
class LIBTOKEN_EXPORT NameSection : public lib_token::ITokenDefine, public std::enable_shared_from_this<NameSection> {
|
2024-03-17 07:58:28 +00:00
|
|
|
|
// TokenDefine interface
|
|
|
|
|
public:
|
2024-06-19 04:05:43 +00:00
|
|
|
|
virtual QString typeName() const override;
|
|
|
|
|
virtual int typeMark() const override;
|
2024-03-17 07:58:28 +00:00
|
|
|
|
virtual QString regex() const override;
|
2024-06-20 04:49:26 +00:00
|
|
|
|
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;
|
2024-03-17 07:58:28 +00:00
|
|
|
|
};
|
|
|
|
|
|
2024-06-20 04:49:26 +00:00
|
|
|
|
class LIBTOKEN_EXPORT VTextSection : public lib_token::ITokenDefine, public std::enable_shared_from_this<VTextSection> {
|
2024-03-17 07:58:28 +00:00
|
|
|
|
// TokenDefine interface
|
|
|
|
|
public:
|
2024-06-19 04:05:43 +00:00
|
|
|
|
virtual QString typeName() const override;
|
|
|
|
|
virtual int typeMark() const override;
|
2024-03-17 07:58:28 +00:00
|
|
|
|
virtual QString regex() const override;
|
2024-06-20 04:49:26 +00:00
|
|
|
|
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:
|
|
|
|
|
// ͨ<><CDA8> TokenDefine <20>̳<EFBFBD>
|
|
|
|
|
virtual QString typeName() 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;
|
|
|
|
|
|
2024-03-17 07:58:28 +00:00
|
|
|
|
};
|
|
|
|
|
} // namespace example_novel
|