重构token

This commit is contained in:
codeboss 2024-06-20 19:18:41 +08:00
parent 3c320da2cd
commit dba8c71f84
3 changed files with 18 additions and 18 deletions

View File

@ -5,7 +5,7 @@
using namespace lib_token;
std::shared_ptr<const IWordBase> TokenReader::wordsFrom(const QString& path) const {
std::shared_ptr<const IWordBase> WordReader::wordsFrom(const QString& path) const {
auto content_list = extract_from(path);
if (!content_list.size())
return nullptr;
@ -19,7 +19,7 @@ std::shared_ptr<const IWordBase> TokenReader::wordsFrom(const QString& path) con
return prev_ptr;
}
QList<std::shared_ptr<const IWordBase>> TokenReader::extract_from(const QString& path) const {
QList<std::shared_ptr<const IWordBase>> WordReader::extract_from(const QString& path) const {
QFile file(path);
if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) {
throw new TokenException(u8"Lex[0x0000]指定文件无法打开:" + path);
@ -38,7 +38,7 @@ QList<std::shared_ptr<const IWordBase>> TokenReader::extract_from(const QString&
}
#include <QRegExp>
QList<std::shared_ptr<const IWordBase>> TokenReader::parse_line(int row, const QString& line_text, const QString& path) const {
QList<std::shared_ptr<const IWordBase>> WordReader::parse_line(int row, const QString& line_text, const QString& path) const {
QRegExp split_char(u8"\\s");
auto words = line_text.split(split_char, QString::SplitBehavior::SkipEmptyParts);

View File

@ -59,7 +59,7 @@ namespace lib_token {
virtual std::shared_ptr<const IWordBase> nextWord() const override;
};
class WordImpl : public IWordBase {
class LIBTOKEN_EXPORT WordImpl : public IWordBase {
private:
std::shared_ptr<const IWordBase> content_ptr;
std::shared_ptr<const IWordBase> next_ptr;
@ -134,7 +134,7 @@ namespace lib_token {
/**
* @brief ´Ê·¨»ñÈ¡Æ÷
*/
class LIBTOKEN_EXPORT TokenReader {
class LIBTOKEN_EXPORT WordReader {
private:
QList<std::shared_ptr<const IWordBase>> parse_line(int row, const QString& line_text, const QString& path) const;
QList<std::shared_ptr<const IWordBase>> extract_from(const QString& path) const;

View File

@ -24,7 +24,7 @@ std::shared_ptr<const ITokenDefine> TokenContent::define() const { return this->
QString LeftBracket::typeName() const { return u8"left-bracket"; }
int example_novel::LeftBracket::typeMark() const
int LeftBracket::typeMark() const
{
return 0x01000000;
}
@ -49,7 +49,7 @@ LeftBracket::analysis(std::shared_ptr<const IWordBase> content) const {
QString RightBracket::typeName() const { return u8"right-bracket"; }
int example_novel::RightBracket::typeMark() const
int RightBracket::typeMark() const
{
return 0x02000000;
}
@ -58,7 +58,7 @@ QString RightBracket::regex() const { return u8"}"; }
QString ReferMark::typeName() const { return u8"refer-mark"; }
int example_novel::ReferMark::typeMark() const
int ReferMark::typeMark() const
{
return 0x03000000;
}
@ -69,7 +69,7 @@ Keywords::Keywords(const QString& val, const QString& nm, uint type_code) : valu
QString Keywords::typeName() const { return name_store; }
int example_novel::Keywords::typeMark() const
int Keywords::typeMark() const
{
return 0x06000000 | (0x00ffffff & type_code);
}
@ -88,7 +88,7 @@ Keywords::analysis(std::shared_ptr<const IWordBase> content) const {
QString NewLine::typeName() const { return u8"new-line"; }
int example_novel::NewLine::typeMark() const
int NewLine::typeMark() const
{
return 0x04000000;
}
@ -97,7 +97,7 @@ QString NewLine::regex() const { return u8"\n"; }
QString Numbers::typeName() const { return u8"numbers"; }
int example_novel::Numbers::typeMark() const
int Numbers::typeMark() const
{
return 0x07000000;
}
@ -117,7 +117,7 @@ Numbers::analysis(std::shared_ptr<const IWordBase> content) const {
QString VTextSection::typeName() const { return u8"text-section"; }
int example_novel::VTextSection::typeMark() const
int VTextSection::typeMark() const
{
return 0x09000000;
}
@ -145,7 +145,7 @@ VTextSection::analysis(std::shared_ptr<const IWordBase> content) const {
QString Split::typeName() const { return u8"split-mark"; }
int example_novel::Split::typeMark() const
int Split::typeMark() const
{
return 0x05000000;
}
@ -154,7 +154,7 @@ QString Split::regex() const { return u8"&"; }
QString NameSection::typeName() const { return u8"name-section"; }
int example_novel::NameSection::typeMark() const
int NameSection::typeMark() const
{
return 0x08000000;
}
@ -180,22 +180,22 @@ std::tuple<std::shared_ptr<const IToken>, std::shared_ptr<const IWordBase> > Nam
return std::make_tuple(tinst, nullptr);
}
QString example_novel::DeclareSymbo::typeName() const
QString DeclareSymbo::typeName() const
{
return u8"ÉùÃ÷·û";
}
int example_novel::DeclareSymbo::typeMark() const
int DeclareSymbo::typeMark() const
{
return 0x0A000000;
}
QString example_novel::DeclareSymbo::regex() const
QString DeclareSymbo::regex() const
{
return u8"#";
}
std::tuple<std::shared_ptr<const IToken>, std::shared_ptr<const IWordBase>> example_novel::DeclareSymbo::analysis(std::shared_ptr<const IWordBase> content) const
std::tuple<std::shared_ptr<const IToken>, std::shared_ptr<const IWordBase>> DeclareSymbo::analysis(std::shared_ptr<const IWordBase> content) const
{
auto text = content->content();
if (content->column() != 1 && !text.startsWith(regex())) {