mirror of
https://github.com/msojocs/wx-compiler.git
synced 2025-07-19 00:00:04 +08:00
perf: 完善部分逻辑
This commit is contained in:
parent
0bd30975f3
commit
b1f1178e06
@ -62,11 +62,22 @@ namespace WXML
|
|||||||
{
|
{
|
||||||
class Token
|
class Token
|
||||||
{
|
{
|
||||||
|
|
||||||
|
/*
|
||||||
|
Token
|
||||||
|
00(起点) B6 BF 00(文件内容) 80 CC BF 00 01 00 00 00(行数?) 01 00 00 00(行长度?) // 15
|
||||||
|
01 00 00 00(pos) 04 00 00 00(size) 00 00 00 00 00(布尔值) F6 97 00 // 31
|
||||||
|
38 F0 97 00 00 00 00 00 00 CC FA 00 CC F0 97 00 // 47(40是32字符串的 缓冲区起点)
|
||||||
|
00 00 BF 00 00 00 00 00 FF FF FF FF 54 F0 97 00 // 63
|
||||||
|
00 00 00 00 00 3A 53 00 00 00 00 00 78 F0 97 00 // 79
|
||||||
|
00 00 00 00 00(?) F2 97 00 70 F0 97 00 00 00 00 00
|
||||||
|
00 00 00 00 62 00 00 40 F8 F1 97 00 7A 15 46 00
|
||||||
|
*/
|
||||||
private:
|
private:
|
||||||
/* data */
|
/* data */
|
||||||
std::string offset_0; // content
|
std::string offset_0 = ""; // content
|
||||||
bool offset_28; // hasCache toString
|
bool offset_28 = false; // hasCache toString
|
||||||
std::string offset_32; // chcheData toString
|
std::string offset_32 = ""; // chcheData toString
|
||||||
bool offset_84; // hasCache attrContent
|
bool offset_84; // hasCache attrContent
|
||||||
std::string offset_88; // chcheData attrContent
|
std::string offset_88; // chcheData attrContent
|
||||||
public:
|
public:
|
||||||
@ -324,6 +335,7 @@ namespace WXML
|
|||||||
int offset_44;
|
int offset_44;
|
||||||
std::deque<std::shared_ptr<WXML::DOMLib::WXMLDom>> dequeDom; // offset_48 int a1 + 48, _DWORD * a1 + 12
|
std::deque<std::shared_ptr<WXML::DOMLib::WXMLDom>> dequeDom; // offset_48 int a1 + 48, _DWORD * a1 + 12
|
||||||
int peekIndex = 0; // offset_100
|
int peekIndex = 0; // offset_100
|
||||||
|
WXML::DOMLib::Token offset_104;
|
||||||
int offset_128;
|
int offset_128;
|
||||||
std::string filePath;
|
std::string filePath;
|
||||||
public:
|
public:
|
||||||
|
@ -378,18 +378,23 @@ namespace WXML
|
|||||||
{
|
{
|
||||||
if (this->offset_4 < this->fileLength)
|
if (this->offset_4 < this->fileLength)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
WXML::DOMLib::Token token;
|
||||||
|
token.offset_8 = this->offset_16;
|
||||||
|
token.offset_12 = this->offset_20;
|
||||||
|
token.offset_16 = this->offset_4;
|
||||||
|
token.offset_20 = this->fileLength - this->offset_4;
|
||||||
|
|
||||||
this->offset_4 = this->fileLength;
|
this->offset_4 = this->fileLength;
|
||||||
this->offset_20 = this->lineLength;
|
this->offset_20 = this->lineLength;
|
||||||
this->offset_16 = this->lineCount;
|
this->offset_16 = this->lineCount;
|
||||||
|
token.offset_24 = WXML::DOMLib::Machine::STT[v45];
|
||||||
if(WXML::DOMLib::Machine::STT[v45] == 3)
|
if(token.offset_24 == 3)
|
||||||
{
|
{
|
||||||
WXML::DOMLib::Token token;
|
|
||||||
a5.push_back(token);
|
a5.push_back(token);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
WXML::DOMLib::Token token;
|
|
||||||
a3.push_back(token);
|
a3.push_back(token);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -433,7 +438,7 @@ namespace WXML
|
|||||||
this->fileLength = 0;
|
this->fileLength = 0;
|
||||||
this->offset_4 = 0;
|
this->offset_4 = 0;
|
||||||
this->lineCount = 1;
|
this->lineCount = 1;
|
||||||
this->lineLength = 1;
|
this->lineLength = 0;
|
||||||
this->offset_16 = 1;
|
this->offset_16 = 1;
|
||||||
this->offset_20 = 1;
|
this->offset_20 = 1;
|
||||||
this->offset_24 = 1;
|
this->offset_24 = 1;
|
||||||
|
@ -184,7 +184,7 @@ namespace WXML
|
|||||||
this->peekIndex++;
|
this->peekIndex++;
|
||||||
this->dequeStr.pop_back();
|
this->dequeStr.pop_back();
|
||||||
this->dequeDom.pop_back();
|
this->dequeDom.pop_back();
|
||||||
auto v47 = this->Peek();
|
v47 = this->Peek();
|
||||||
if (!v47.IsMatch(">"))
|
if (!v47.IsMatch(">"))
|
||||||
{
|
{
|
||||||
throw this->Error("unexpected token", 0);
|
throw this->Error("unexpected token", 0);
|
||||||
@ -237,7 +237,9 @@ namespace WXML
|
|||||||
|
|
||||||
WXML::DOMLib::Token Parser::Peek()
|
WXML::DOMLib::Token Parser::Peek()
|
||||||
{
|
{
|
||||||
return tokenList[this->peekIndex];
|
if (this->peekIndex < tokenList.size())
|
||||||
|
return tokenList[this->peekIndex];
|
||||||
|
return this->offset_104;
|
||||||
}
|
}
|
||||||
|
|
||||||
WXML::DOMLib::ParseException Parser::Error(char const*, WXML::DOMLib::Token *)
|
WXML::DOMLib::ParseException Parser::Error(char const*, WXML::DOMLib::Token *)
|
||||||
|
@ -5,16 +5,6 @@ namespace WXML
|
|||||||
{
|
{
|
||||||
namespace DOMLib
|
namespace DOMLib
|
||||||
{
|
{
|
||||||
/*
|
|
||||||
Token
|
|
||||||
00(起点) B6 BF 00(文件内容) 80 CC BF 00 01 00 00 00(行数?) 01 00 00 00(行长度?) // 15
|
|
||||||
01 00 00 00(pos) 04 00 00 00(size) 00 00 00 00 00(布尔值) F6 97 00 // 31
|
|
||||||
38 F0 97 00 00 00 00 00 00 CC FA 00 CC F0 97 00 // 47
|
|
||||||
00 00 BF 00 00 00 00 00 FF FF FF FF 54 F0 97 00 // 63
|
|
||||||
00 00 00 00 00 3A 53 00 00 00 00 00 78 F0 97 00 // 79
|
|
||||||
00 00 00 00 00(?) F2 97 00 70 F0 97 00 00 00 00 00
|
|
||||||
00 00 00 00 62 00 00 40 F8 F1 97 00 7A 15 46 00
|
|
||||||
*/
|
|
||||||
Token::Token()
|
Token::Token()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
@ -25,18 +15,18 @@ namespace WXML
|
|||||||
}
|
}
|
||||||
|
|
||||||
Token::Token(WXML::DOMLib::Token&& token):
|
Token::Token(WXML::DOMLib::Token&& token):
|
||||||
offset_0(token.offset_0),
|
offset_0(token.offset_0),
|
||||||
offset_8(token.offset_8),
|
offset_8(token.offset_8),
|
||||||
offset_12(token.offset_12),
|
offset_12(token.offset_12),
|
||||||
offset_16(token.offset_16),
|
offset_16(token.offset_16),
|
||||||
offset_20(token.offset_20),
|
offset_20(token.offset_20),
|
||||||
offset_28(token.offset_28),
|
offset_28(token.offset_28),
|
||||||
offset_32(token.offset_32),
|
offset_32(token.offset_32),
|
||||||
offset_40(token.offset_40),
|
offset_40(token.offset_40),
|
||||||
offset_56(token.offset_56),
|
offset_56(token.offset_56),
|
||||||
offset_60(token.offset_60),
|
offset_60(token.offset_60),
|
||||||
offset_84(token.offset_84),
|
offset_84(token.offset_84),
|
||||||
offset_88(token.offset_88)
|
offset_88(token.offset_88)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
Token::Token(WXML::DOMLib::Token const& token)
|
Token::Token(WXML::DOMLib::Token const& token)
|
||||||
|
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user