diff --git a/WsNovelParser/WsNovelParser.vcxproj.user b/WsNovelParser/WsNovelParser.vcxproj.user
index cb29a3a..f29c08d 100644
--- a/WsNovelParser/WsNovelParser.vcxproj.user
+++ b/WsNovelParser/WsNovelParser.vcxproj.user
@@ -6,12 +6,12 @@
--path "D:\手作小说\科学+修仙+创造世界"
- 2024-06-18T15:36:03.6534384Z
+ 2024-06-19T03:41:21.9792038Z
- 2024-06-18T15:36:03.7471721Z
+ 2024-06-19T03:41:22.1198275Z
diff --git a/libParse/libParse.vcxproj.user b/libParse/libParse.vcxproj.user
index 9d18e80..1471a2c 100644
--- a/libParse/libParse.vcxproj.user
+++ b/libParse/libParse.vcxproj.user
@@ -5,12 +5,12 @@
WindowsLocalDebugger
- 2024-06-18T15:36:03.9815477Z
+ 2024-06-19T03:41:22.1667034Z
- 2024-06-18T15:36:04.0440621Z
+ 2024-06-19T03:41:22.2604525Z
diff --git a/libSyntax/libSyntax.vcxproj.user b/libSyntax/libSyntax.vcxproj.user
index 5fc4fad..79b07d0 100644
--- a/libSyntax/libSyntax.vcxproj.user
+++ b/libSyntax/libSyntax.vcxproj.user
@@ -5,12 +5,12 @@
WindowsLocalDebugger
- 2024-06-18T15:36:03.7784470Z
+ 2024-06-19T03:41:22.4167016Z
- 2024-06-18T15:36:03.8565020Z
+ 2024-06-19T03:41:22.5104526Z
diff --git a/libSyntax/libsyntax.cpp b/libSyntax/libsyntax.cpp
index 1ef54b8..146aae7 100644
--- a/libSyntax/libsyntax.cpp
+++ b/libSyntax/libsyntax.cpp
@@ -12,7 +12,7 @@ QList> TokenMatch::children() const { return QLi
std::tuple> TokenMatch::match(std::shared_ptr remains_head) const {
QString token_seqs = this->token_present();
- if (remains_head && remains_head->define()->name() == define_peer->name())
+ if (remains_head && remains_head->define()->typeMark() == define_peer->typeMark())
return std::make_tuple(MatchResult::Success, 1, remains_head->nextToken());
return std::make_tuple(MatchResult::Fail, 0, nullptr);
@@ -24,7 +24,7 @@ std::tuple, std::shared_ptr> Toke
if (!head)
throw std::make_shared();
- if (head->define()->name() == define_peer->name()) {
+ if (head->define()->typeMark() == define_peer->typeMark()) {
rt_inst->currentInst()->addToken(head);
return std::make_tuple(nullptr, head->nextToken());
}
@@ -33,7 +33,7 @@ std::tuple, std::shared_ptr> Toke
}
QString TokenMatch::token_present() const {
- return QString(u8"<%1>").arg(this->define_peer->name());
+ return QString(u8"<%1>").arg(this->define_peer->typeName());
}
Rept::Rept(std::shared_ptr rule, int min, int max) : rule_peer(rule), min_match(min), max_match(max) {}
diff --git a/libSyntax/syntax_novel.cpp b/libSyntax/syntax_novel.cpp
index 7ea6861..242ab2c 100644
--- a/libSyntax/syntax_novel.cpp
+++ b/libSyntax/syntax_novel.cpp
@@ -12,11 +12,11 @@ auto leftb = std::make_shared(); // {
auto rightb = std::make_shared(); // }
auto refers = std::make_shared(); // @
-auto story_key = std::make_shared(u8"", u8"story-mark"); //
+auto story_key = std::make_shared(u8"", u8"story-mark", 0xAAu); //
auto numbers = std::make_shared(); // [0-9]+
-auto frag_key = std::make_shared(u8"", u8"fragment-mark"); //
-auto volume_key = std::make_shared(u8"־", u8"volume-mark"); // ־
-auto article_key = std::make_shared(u8"½", u8"article-mark"); // ½
+auto frag_key = std::make_shared(u8"", u8"fragment-mark", 0xABu); //
+auto volume_key = std::make_shared(u8"־", u8"volume-mark", 0xACu); // ־
+auto article_key = std::make_shared(u8"½", u8"article-mark", 0xADu); // ½
auto split_mark = std::make_shared(); // &
auto vtext = std::make_shared(); // ^([^\\{\\}\\n@&]+)
auto name_text = std::make_shared(); // ^([^:\\{\\}\\n@&][^\\{\\}\\n@&]*)
@@ -53,7 +53,7 @@ QList> LinesMerge(std::shared_ptrExpressionRule::TokenSeqs {
ExpressionRule::TokenSeqs result;
for (auto& n : p) {
- if (n->define()->name() == newl->name())
+ if (n->define()->typeMark() == newl->typeMark())
continue;
result.append(n);
}
diff --git a/libToken/libToken.vcxproj.user b/libToken/libToken.vcxproj.user
index 1ac2b50..2a2203b 100644
--- a/libToken/libToken.vcxproj.user
+++ b/libToken/libToken.vcxproj.user
@@ -2,12 +2,12 @@
- 2024-06-18T15:36:03.8877508Z
+ 2024-06-19T03:41:22.3229534Z
- 2024-06-18T15:36:03.9502420Z
+ 2024-06-19T03:41:22.3698305Z
diff --git a/libToken/libtoken.h b/libToken/libtoken.h
index 15d281c..a49e2d4 100644
--- a/libToken/libtoken.h
+++ b/libToken/libtoken.h
@@ -68,7 +68,13 @@ namespace lib_token {
* @brief
* @return
*/
- virtual QString name() const = 0;
+ virtual QString typeName() const = 0;
+ /**
+ * @brief ͱʶ.
+ *
+ * \return
+ */
+ virtual int typeMark() const = 0;
/**
* @brief ƹؼ
* @return
diff --git a/libToken/tokens_novel.cpp b/libToken/tokens_novel.cpp
index a2eac41..dd1cd53 100644
--- a/libToken/tokens_novel.cpp
+++ b/libToken/tokens_novel.cpp
@@ -3,7 +3,12 @@
using namespace example_novel;
using namespace lib_token;
-QString LeftBracket::name() const { return u8"left-bracket"; }
+QString LeftBracket::typeName() const { return u8"left-bracket"; }
+
+int example_novel::LeftBracket::typeMark() const
+{
+ return 0x01000000;
+}
QString LeftBracket::regex() const { return u8"{"; }
@@ -23,17 +28,32 @@ LeftBracket::analysis(std::shared_ptr content) const {
return std::make_tuple(token_inst, nullptr);
}
-QString RightBracket::name() const { return u8"right-bracket"; }
+QString RightBracket::typeName() const { return u8"right-bracket"; }
+
+int example_novel::RightBracket::typeMark() const
+{
+ return 0x02000000;
+}
QString RightBracket::regex() const { return u8"}"; }
-QString ReferMark::name() const { return u8"refer-mark"; }
+QString ReferMark::typeName() const { return u8"refer-mark"; }
+
+int example_novel::ReferMark::typeMark() const
+{
+ return 0x03000000;
+}
QString ReferMark::regex() const { return u8"@"; }
-Keywords::Keywords(const QString& val, const QString& nm) : value_store(val), name_store(nm) {}
+Keywords::Keywords(const QString& val, const QString& nm, uint type_code) : value_store(val), name_store(nm), type_code(type_code) {}
-QString Keywords::name() const { return name_store; }
+QString Keywords::typeName() const { return name_store; }
+
+int example_novel::Keywords::typeMark() const
+{
+ return 0x06000000 | (0x00ffffff & type_code);
+}
QString Keywords::regex() const { return value_store; }
@@ -47,11 +67,21 @@ Keywords::analysis(std::shared_ptr content) const {
return std::make_tuple(token_inst, nullptr);
}
-QString NewLine::name() const { return u8"new-line"; }
+QString NewLine::typeName() const { return u8"new-line"; }
+
+int example_novel::NewLine::typeMark() const
+{
+ return 0x04000000;
+}
QString NewLine::regex() const { return u8"\n"; }
-QString Numbers::name() const { return u8"numbers"; }
+QString Numbers::typeName() const { return u8"numbers"; }
+
+int example_novel::Numbers::typeMark() const
+{
+ return 0x07000000;
+}
QString Numbers::regex() const { return u8"^([0-9]+)$"; }
@@ -66,7 +96,12 @@ Numbers::analysis(std::shared_ptr content) const {
return std::make_tuple(tinst, nullptr);
}
-QString VTextSection::name() const { return u8"text-section"; }
+QString VTextSection::typeName() const { return u8"text-section"; }
+
+int example_novel::VTextSection::typeMark() const
+{
+ return 0x09000000;
+}
QString VTextSection::regex() const { return u8"^([^\\{\\}\\n@&]+)"; }
@@ -89,11 +124,21 @@ VTextSection::analysis(std::shared_ptr content) const {
return std::make_tuple(tinst, nullptr);
}
-QString Split::name() const { return u8"split-mark"; }
+QString Split::typeName() const { return u8"split-mark"; }
+
+int example_novel::Split::typeMark() const
+{
+ return 0x05000000;
+}
QString Split::regex() const { return u8"&"; }
-QString NameSection::name() const { return u8"name-section"; }
+QString NameSection::typeName() const { return u8"name-section"; }
+
+int example_novel::NameSection::typeMark() const
+{
+ return 0x08000000;
+}
QString NameSection::regex() const { return u8"^([^:\\{\\}\\n@&][^\\{\\}\\n@&]*)"; }
diff --git a/libToken/tokens_novel.h b/libToken/tokens_novel.h
index 8676a31..06447df 100644
--- a/libToken/tokens_novel.h
+++ b/libToken/tokens_novel.h
@@ -11,7 +11,8 @@ namespace example_novel {
class LIBTOKEN_EXPORT LeftBracket : public lib_token::TokenDefine, public std::enable_shared_from_this {
// TokenDefine interface
public:
- virtual QString name() const override;
+ 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;
@@ -19,38 +20,44 @@ namespace example_novel {
class LIBTOKEN_EXPORT RightBracket : public LeftBracket {
public:
- virtual QString name() const override;
+ virtual QString typeName() const override;
+ virtual int typeMark() const override;
virtual QString regex() const override;
};
class LIBTOKEN_EXPORT ReferMark : public LeftBracket {
public:
- virtual QString name() const override;
+ virtual QString typeName() const override;
+ virtual int typeMark() const override;
virtual QString regex() const override;
};
class LIBTOKEN_EXPORT NewLine : public LeftBracket {
public:
- virtual QString name() const override;
+ virtual QString typeName() const override;
+ virtual int typeMark() const override;
virtual QString regex() const override;
};
class LIBTOKEN_EXPORT Split : public LeftBracket {
public:
- virtual QString name() const override;
+ virtual QString typeName() const override;
+ virtual int typeMark() const override;
virtual QString regex() const override;
};
class LIBTOKEN_EXPORT Keywords : public lib_token::TokenDefine, public std::enable_shared_from_this {
private:
QString value_store, name_store;
+ int type_code;
public:
- Keywords(const QString& val, const QString& nm);
+ Keywords(const QString& val, const QString& nm, uint type_code);
// TokenDefine interface
public:
- virtual QString name() const override;
+ 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;
@@ -59,7 +66,8 @@ namespace example_novel {
class LIBTOKEN_EXPORT Numbers : public lib_token::TokenDefine, public std::enable_shared_from_this {
// TokenDefine interface
public:
- virtual QString name() const override;
+ 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;
@@ -69,7 +77,8 @@ namespace example_novel {
class LIBTOKEN_EXPORT NameSection : public lib_token::TokenDefine, public std::enable_shared_from_this {
// TokenDefine interface
public:
- virtual QString name() const override;
+ 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;
@@ -78,7 +87,8 @@ namespace example_novel {
class LIBTOKEN_EXPORT VTextSection : public lib_token::TokenDefine, public std::enable_shared_from_this {
// TokenDefine interface
public:
- virtual QString name() const override;
+ 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;