重构token
This commit is contained in:
parent
3c320da2cd
commit
dba8c71f84
|
@ -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);
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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())) {
|
||||
|
|
Loading…
Reference in New Issue