mirror of
https://github.com/msojocs/wx-compiler.git
synced 2025-07-19 00:00:04 +08:00
fix: 处理部分错误
This commit is contained in:
parent
b1f1178e06
commit
9459266bf4
@ -75,12 +75,12 @@ namespace WXML
|
|||||||
*/
|
*/
|
||||||
private:
|
private:
|
||||||
/* data */
|
/* data */
|
||||||
std::string offset_0 = ""; // content
|
|
||||||
bool offset_28 = false; // 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 = false; // hasCache attrContent
|
||||||
std::string offset_88; // chcheData attrContent
|
std::string offset_88; // chcheData attrContent
|
||||||
public:
|
public:
|
||||||
|
std::string offset_0 = ""; // content
|
||||||
int offset_8 = 0; // ???
|
int offset_8 = 0; // ???
|
||||||
int offset_12 = 0; // ???
|
int offset_12 = 0; // ???
|
||||||
int offset_16 = 0; // pos
|
int offset_16 = 0; // pos
|
||||||
@ -88,7 +88,7 @@ namespace WXML
|
|||||||
int offset_24 = 0; // ???
|
int offset_24 = 0; // ???
|
||||||
int offset_40 = 0; // AttrsCompartor用到,怎么来不知道
|
int offset_40 = 0; // AttrsCompartor用到,怎么来不知道
|
||||||
int offset_56 = 0; // ??? -3, -1
|
int offset_56 = 0; // ??? -3, -1
|
||||||
std::string offset_60; // ???
|
std::string offset_60 = ""; // ???
|
||||||
Token();
|
Token();
|
||||||
Token(std::string &);
|
Token(std::string &);
|
||||||
Token(WXML::DOMLib::Token&&);
|
Token(WXML::DOMLib::Token&&);
|
||||||
@ -228,9 +228,10 @@ namespace WXML
|
|||||||
class WXMLDom
|
class WXMLDom
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
/* data */
|
/*
|
||||||
|
偏移应该不超过0x128u, 296
|
||||||
|
*/
|
||||||
bool offset_28;
|
bool offset_28;
|
||||||
std::map<std::string, WXML::DOMLib::Token> offset_48;
|
|
||||||
// std::string offset_52;
|
// std::string offset_52;
|
||||||
int offset_92; // pos1
|
int offset_92; // pos1
|
||||||
int offset_96; // pos2
|
int offset_96; // pos2
|
||||||
@ -243,6 +244,7 @@ namespace WXML
|
|||||||
std::string offset_0; // type
|
std::string offset_0; // type
|
||||||
std::map<std::string, WXML::DOMLib::Token> offset_12;
|
std::map<std::string, WXML::DOMLib::Token> offset_12;
|
||||||
std::string offset_24; // ???
|
std::string offset_24; // ???
|
||||||
|
std::map<std::string, WXML::DOMLib::Token> offset_48;
|
||||||
std::vector<std::shared_ptr<WXML::DOMLib::WXMLDom>> offset_72; //
|
std::vector<std::shared_ptr<WXML::DOMLib::WXMLDom>> offset_72; //
|
||||||
int offset_256; // ???
|
int offset_256; // ???
|
||||||
WXML::DOMLib::Token offset_84; // token
|
WXML::DOMLib::Token offset_84; // token
|
||||||
@ -324,19 +326,20 @@ namespace WXML
|
|||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
/* data */
|
/* data */
|
||||||
std::shared_ptr<WXML::DOMLib::WXMLDom> dom;
|
std::shared_ptr<WXML::DOMLib::WXMLDom> dom; // offset_4 ?
|
||||||
std::vector<WXML::DOMLib::Token> tokenList;
|
int offset_4 = 0;
|
||||||
int offset_4;
|
|
||||||
std::deque<std::string> dequeStr;// offset_8
|
std::deque<std::string> dequeStr;// offset_8
|
||||||
int offset_16;
|
int offset_16 = 0;
|
||||||
int offset_32; // _DWORD * a1[8]
|
int offset_32 = 0; // _DWORD * a1[8]
|
||||||
int offset_36; //
|
int offset_36 = 0; //
|
||||||
int offset_40;
|
int offset_40 = 0;
|
||||||
int offset_44;
|
int offset_44 = 0;
|
||||||
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
|
||||||
|
std::vector<WXML::DOMLib::Token> tokenList; // offset_88
|
||||||
int peekIndex = 0; // offset_100
|
int peekIndex = 0; // offset_100
|
||||||
WXML::DOMLib::Token offset_104;
|
WXML::DOMLib::Token offset_104;
|
||||||
int offset_128;
|
int offset_128 = 0;
|
||||||
|
WXML::DOMLib::Token offset_216;
|
||||||
std::string filePath;
|
std::string filePath;
|
||||||
public:
|
public:
|
||||||
Parser(/* args */);
|
Parser(/* args */);
|
||||||
@ -443,7 +446,7 @@ namespace WXML
|
|||||||
std::string& a7
|
std::string& a7
|
||||||
);
|
);
|
||||||
|
|
||||||
// void GetFuncId();
|
std::string GetFuncId(std::map<std::string,int> &, std::string const&);
|
||||||
void GetVersionInfo(std::string &a1, std::string a2);
|
void GetVersionInfo(std::string &a1, std::string a2);
|
||||||
int RenderDefine(
|
int RenderDefine(
|
||||||
WXML::DOMLib::WXMLDom &,
|
WXML::DOMLib::WXMLDom &,
|
||||||
|
@ -61,9 +61,9 @@ namespace WXML{
|
|||||||
}
|
}
|
||||||
ss << fMark;
|
ss << fMark;
|
||||||
ss << "['";
|
ss << "['";
|
||||||
//ss << ToStringCode(fileName);
|
ss << WXML::Rewrite::ToStringCode(filePath);
|
||||||
ss << "']['";
|
ss << "']['";
|
||||||
//ss << ToStringCode(t);
|
ss << WXML::Rewrite::ToStringCode(t);
|
||||||
ss << "'] =";
|
ss << "'] =";
|
||||||
|
|
||||||
int r = 1;
|
int r = 1;
|
||||||
@ -94,19 +94,19 @@ namespace WXML{
|
|||||||
throw 1;
|
throw 1;
|
||||||
}
|
}
|
||||||
ss << "f_['";
|
ss << "f_['";
|
||||||
// ss << ToStringCode(v81);
|
// ss << WXML::Rewrite::ToStringCode(v81);
|
||||||
ss << "'] || ";
|
ss << "'] || ";
|
||||||
|
|
||||||
ss << "nv_require(\"";
|
ss << "nv_require(\"";
|
||||||
// ss << ToStringCode("p_" + v81);
|
// ss << WXML::Rewrite::ToStringCode("p_" + v81);
|
||||||
ss << "\");";
|
ss << "\");";
|
||||||
ss << lineEndMark;
|
ss << lineEndMark;
|
||||||
|
|
||||||
ss << fMark;
|
ss << fMark;
|
||||||
ss << "['";
|
ss << "['";
|
||||||
// ss << ToStringCode(fileName);
|
ss << WXML::Rewrite::ToStringCode(filePath);
|
||||||
ss << "']['";
|
ss << "']['";
|
||||||
// ss << ToStringCode(v74);
|
// ss << WXML::Rewrite::ToStringCode(v74);
|
||||||
ss << "']();";
|
ss << "']();";
|
||||||
ss << lineEndMark;
|
ss << lineEndMark;
|
||||||
|
|
||||||
@ -257,10 +257,11 @@ namespace WXML{
|
|||||||
std::stringstream info;
|
std::stringstream info;
|
||||||
info << "WXML::Compiler::CompileLazy: file name to paths:\n";
|
info << "WXML::Compiler::CompileLazy: file name to paths:\n";
|
||||||
info << " all files: [ ";
|
info << " all files: [ ";
|
||||||
// for (size_t i = 0; i < count; i++)
|
for (size_t i = 0; i < 6; i++)
|
||||||
// {
|
{
|
||||||
// /* code */
|
/* code */
|
||||||
// }
|
info << " ";
|
||||||
|
}
|
||||||
info << "];\n";
|
info << "];\n";
|
||||||
|
|
||||||
|
|
||||||
@ -461,6 +462,17 @@ namespace WXML{
|
|||||||
{
|
{
|
||||||
result.assign(aIfThisThisGUnd);
|
result.assign(aIfThisThisGUnd);
|
||||||
}
|
}
|
||||||
|
std::string GetFuncId(std::map<std::string,int> & a2, std::string const& a3)
|
||||||
|
{
|
||||||
|
std::string result = "";
|
||||||
|
if(!a2.count(a3))
|
||||||
|
{
|
||||||
|
// a2.insert({})
|
||||||
|
}
|
||||||
|
auto v5 = a2[a3];
|
||||||
|
sprintf(&result[0], "np_%d", v5);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
} // namespace Compiler
|
} // namespace Compiler
|
||||||
|
|
||||||
|
|
||||||
|
@ -405,17 +405,22 @@ namespace WXML
|
|||||||
this->lineLength++;
|
this->lineLength++;
|
||||||
if (bittest(&v46, 0x12u)) // 0x12 -> 18
|
if (bittest(&v46, 0x12u)) // 0x12 -> 18
|
||||||
{
|
{
|
||||||
|
WXML::DOMLib::Token v49;
|
||||||
|
v49.offset_8 = this->offset_16;
|
||||||
|
v49.offset_12 = this->offset_20;
|
||||||
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;
|
||||||
if (WXML::DOMLib::Machine::STT[v45] == 3)
|
v49.offset_16 = this->offset_4;
|
||||||
|
v49.offset_20 = this->lineLength + 1 - this->offset_4;
|
||||||
|
int stt = WXML::DOMLib::Machine::STT[v45];
|
||||||
|
v49.offset_24 = stt;
|
||||||
|
if (stt == 3)
|
||||||
{
|
{
|
||||||
WXML::DOMLib::Token v49;
|
|
||||||
a5.push_back(v49);
|
a5.push_back(v49);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
WXML::DOMLib::Token v49;
|
|
||||||
a3.push_back(v49);
|
a3.push_back(v49);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -24,10 +24,10 @@ namespace WXML
|
|||||||
{
|
{
|
||||||
// if(!token)
|
// if(!token)
|
||||||
// throw "unexpected attribute name"
|
// throw "unexpected attribute name"
|
||||||
int v20;
|
int v20 = token.offset_24;
|
||||||
for (int i = 0; i < v20; i++)
|
for (int i = 0; i < v20; i++)
|
||||||
{
|
{
|
||||||
char v3;
|
char v3 = token.offset_16 + token.offset_0[i];
|
||||||
if ((v3 & 0xDF) - 'A' > 25
|
if ((v3 & 0xDF) - 'A' > 25
|
||||||
&& (v3 - '0') > 10
|
&& (v3 - '0') > 10
|
||||||
&& v3 != '_'
|
&& v3 != '_'
|
||||||
@ -52,11 +52,13 @@ namespace WXML
|
|||||||
{
|
{
|
||||||
this->peekIndex++;
|
this->peekIndex++;
|
||||||
auto v7 = this->dequeDom.back();
|
auto v7 = this->dequeDom.back();
|
||||||
|
v7->offset_48[v4] = v6;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
auto v9 = this->dequeDom.back();
|
auto v9 = this->dequeDom.back();
|
||||||
|
v9->offset_48[v4] = this->offset_216;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -135,9 +137,9 @@ namespace WXML
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
this->offset_32 += 24;
|
this->offset_32 += 24; // 0x18h
|
||||||
}
|
}
|
||||||
std::shared_ptr<WXML::DOMLib::WXMLDom> domPtr;
|
std::shared_ptr<WXML::DOMLib::WXMLDom> domPtr(new WXML::DOMLib::WXMLDom());
|
||||||
domPtr->offset_0.assign(tag);
|
domPtr->offset_0.assign(tag);
|
||||||
domPtr->offset_24.assign(domPtr->offset_0);
|
domPtr->offset_24.assign(domPtr->offset_0);
|
||||||
domPtr->offset_84 = token;
|
domPtr->offset_84 = token;
|
||||||
|
@ -157,7 +157,7 @@ namespace WXML {
|
|||||||
{
|
{
|
||||||
a6 << "cs.push(\"";
|
a6 << "cs.push(\"";
|
||||||
std::string sc = WXML::Rewrite::ToStringCode(a2);
|
std::string sc = WXML::Rewrite::ToStringCode(a2);
|
||||||
a6 << sc << ":" << this->offset_0 << ":" << this->offset_92 << ":" << this->offset_96 << "\")";
|
a6 << sc << ":" << this->offset_24 << ":" << this->offset_92 << ":" << this->offset_96 << "\")";
|
||||||
}
|
}
|
||||||
if (this->offset_0 == "TEXTNODE")
|
if (this->offset_0 == "TEXTNODE")
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user