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
|
||||
{
|
||||
|
||||
/*
|
||||
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:
|
||||
/* data */
|
||||
std::string offset_0; // content
|
||||
bool offset_28; // hasCache toString
|
||||
std::string offset_32; // chcheData toString
|
||||
std::string offset_0 = ""; // content
|
||||
bool offset_28 = false; // hasCache toString
|
||||
std::string offset_32 = ""; // chcheData toString
|
||||
bool offset_84; // hasCache attrContent
|
||||
std::string offset_88; // chcheData attrContent
|
||||
public:
|
||||
@ -324,6 +335,7 @@ namespace WXML
|
||||
int offset_44;
|
||||
std::deque<std::shared_ptr<WXML::DOMLib::WXMLDom>> dequeDom; // offset_48 int a1 + 48, _DWORD * a1 + 12
|
||||
int peekIndex = 0; // offset_100
|
||||
WXML::DOMLib::Token offset_104;
|
||||
int offset_128;
|
||||
std::string filePath;
|
||||
public:
|
||||
|
@ -378,18 +378,23 @@ namespace WXML
|
||||
{
|
||||
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_20 = this->lineLength;
|
||||
this->offset_16 = this->lineCount;
|
||||
|
||||
if(WXML::DOMLib::Machine::STT[v45] == 3)
|
||||
token.offset_24 = WXML::DOMLib::Machine::STT[v45];
|
||||
if(token.offset_24 == 3)
|
||||
{
|
||||
WXML::DOMLib::Token token;
|
||||
a5.push_back(token);
|
||||
}
|
||||
else
|
||||
{
|
||||
WXML::DOMLib::Token token;
|
||||
a3.push_back(token);
|
||||
}
|
||||
}
|
||||
@ -433,7 +438,7 @@ namespace WXML
|
||||
this->fileLength = 0;
|
||||
this->offset_4 = 0;
|
||||
this->lineCount = 1;
|
||||
this->lineLength = 1;
|
||||
this->lineLength = 0;
|
||||
this->offset_16 = 1;
|
||||
this->offset_20 = 1;
|
||||
this->offset_24 = 1;
|
||||
|
@ -184,7 +184,7 @@ namespace WXML
|
||||
this->peekIndex++;
|
||||
this->dequeStr.pop_back();
|
||||
this->dequeDom.pop_back();
|
||||
auto v47 = this->Peek();
|
||||
v47 = this->Peek();
|
||||
if (!v47.IsMatch(">"))
|
||||
{
|
||||
throw this->Error("unexpected token", 0);
|
||||
@ -237,7 +237,9 @@ namespace WXML
|
||||
|
||||
WXML::DOMLib::Token Parser::Peek()
|
||||
{
|
||||
if (this->peekIndex < tokenList.size())
|
||||
return tokenList[this->peekIndex];
|
||||
return this->offset_104;
|
||||
}
|
||||
|
||||
WXML::DOMLib::ParseException Parser::Error(char const*, WXML::DOMLib::Token *)
|
||||
|
@ -5,16 +5,6 @@ namespace WXML
|
||||
{
|
||||
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()
|
||||
{
|
||||
}
|
||||
|
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user