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:
|
||||
/* data */
|
||||
std::string offset_0 = ""; // content
|
||||
bool offset_28 = false; // hasCache toString
|
||||
std::string offset_32 = ""; // chcheData toString
|
||||
bool offset_84; // hasCache attrContent
|
||||
bool offset_84 = false; // hasCache attrContent
|
||||
std::string offset_88; // chcheData attrContent
|
||||
public:
|
||||
std::string offset_0 = ""; // content
|
||||
int offset_8 = 0; // ???
|
||||
int offset_12 = 0; // ???
|
||||
int offset_16 = 0; // pos
|
||||
@ -88,7 +88,7 @@ namespace WXML
|
||||
int offset_24 = 0; // ???
|
||||
int offset_40 = 0; // AttrsCompartor用到,怎么来不知道
|
||||
int offset_56 = 0; // ??? -3, -1
|
||||
std::string offset_60; // ???
|
||||
std::string offset_60 = ""; // ???
|
||||
Token();
|
||||
Token(std::string &);
|
||||
Token(WXML::DOMLib::Token&&);
|
||||
@ -228,9 +228,10 @@ namespace WXML
|
||||
class WXMLDom
|
||||
{
|
||||
private:
|
||||
/* data */
|
||||
/*
|
||||
偏移应该不超过0x128u, 296
|
||||
*/
|
||||
bool offset_28;
|
||||
std::map<std::string, WXML::DOMLib::Token> offset_48;
|
||||
// std::string offset_52;
|
||||
int offset_92; // pos1
|
||||
int offset_96; // pos2
|
||||
@ -243,6 +244,7 @@ namespace WXML
|
||||
std::string offset_0; // type
|
||||
std::map<std::string, WXML::DOMLib::Token> offset_12;
|
||||
std::string offset_24; // ???
|
||||
std::map<std::string, WXML::DOMLib::Token> offset_48;
|
||||
std::vector<std::shared_ptr<WXML::DOMLib::WXMLDom>> offset_72; //
|
||||
int offset_256; // ???
|
||||
WXML::DOMLib::Token offset_84; // token
|
||||
@ -324,19 +326,20 @@ namespace WXML
|
||||
{
|
||||
private:
|
||||
/* data */
|
||||
std::shared_ptr<WXML::DOMLib::WXMLDom> dom;
|
||||
std::vector<WXML::DOMLib::Token> tokenList;
|
||||
int offset_4;
|
||||
std::shared_ptr<WXML::DOMLib::WXMLDom> dom; // offset_4 ?
|
||||
int offset_4 = 0;
|
||||
std::deque<std::string> dequeStr;// offset_8
|
||||
int offset_16;
|
||||
int offset_32; // _DWORD * a1[8]
|
||||
int offset_36; //
|
||||
int offset_40;
|
||||
int offset_44;
|
||||
int offset_16 = 0;
|
||||
int offset_32 = 0; // _DWORD * a1[8]
|
||||
int offset_36 = 0; //
|
||||
int offset_40 = 0;
|
||||
int offset_44 = 0;
|
||||
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
|
||||
WXML::DOMLib::Token offset_104;
|
||||
int offset_128;
|
||||
int offset_128 = 0;
|
||||
WXML::DOMLib::Token offset_216;
|
||||
std::string filePath;
|
||||
public:
|
||||
Parser(/* args */);
|
||||
@ -443,7 +446,7 @@ namespace WXML
|
||||
std::string& a7
|
||||
);
|
||||
|
||||
// void GetFuncId();
|
||||
std::string GetFuncId(std::map<std::string,int> &, std::string const&);
|
||||
void GetVersionInfo(std::string &a1, std::string a2);
|
||||
int RenderDefine(
|
||||
WXML::DOMLib::WXMLDom &,
|
||||
|
@ -61,9 +61,9 @@ namespace WXML{
|
||||
}
|
||||
ss << fMark;
|
||||
ss << "['";
|
||||
//ss << ToStringCode(fileName);
|
||||
ss << WXML::Rewrite::ToStringCode(filePath);
|
||||
ss << "']['";
|
||||
//ss << ToStringCode(t);
|
||||
ss << WXML::Rewrite::ToStringCode(t);
|
||||
ss << "'] =";
|
||||
|
||||
int r = 1;
|
||||
@ -94,19 +94,19 @@ namespace WXML{
|
||||
throw 1;
|
||||
}
|
||||
ss << "f_['";
|
||||
// ss << ToStringCode(v81);
|
||||
// ss << WXML::Rewrite::ToStringCode(v81);
|
||||
ss << "'] || ";
|
||||
|
||||
ss << "nv_require(\"";
|
||||
// ss << ToStringCode("p_" + v81);
|
||||
// ss << WXML::Rewrite::ToStringCode("p_" + v81);
|
||||
ss << "\");";
|
||||
ss << lineEndMark;
|
||||
|
||||
ss << fMark;
|
||||
ss << "['";
|
||||
// ss << ToStringCode(fileName);
|
||||
ss << WXML::Rewrite::ToStringCode(filePath);
|
||||
ss << "']['";
|
||||
// ss << ToStringCode(v74);
|
||||
// ss << WXML::Rewrite::ToStringCode(v74);
|
||||
ss << "']();";
|
||||
ss << lineEndMark;
|
||||
|
||||
@ -257,10 +257,11 @@ namespace WXML{
|
||||
std::stringstream info;
|
||||
info << "WXML::Compiler::CompileLazy: file name to paths:\n";
|
||||
info << " all files: [ ";
|
||||
// for (size_t i = 0; i < count; i++)
|
||||
// {
|
||||
// /* code */
|
||||
// }
|
||||
for (size_t i = 0; i < 6; i++)
|
||||
{
|
||||
/* code */
|
||||
info << " ";
|
||||
}
|
||||
info << "];\n";
|
||||
|
||||
|
||||
@ -461,6 +462,17 @@ namespace WXML{
|
||||
{
|
||||
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
|
||||
|
||||
|
||||
|
@ -405,17 +405,22 @@ namespace WXML
|
||||
this->lineLength++;
|
||||
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_20 = this->lineLength;
|
||||
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);
|
||||
}
|
||||
else
|
||||
{
|
||||
WXML::DOMLib::Token v49;
|
||||
a3.push_back(v49);
|
||||
}
|
||||
}
|
||||
|
@ -24,10 +24,10 @@ namespace WXML
|
||||
{
|
||||
// if(!token)
|
||||
// throw "unexpected attribute name"
|
||||
int v20;
|
||||
int v20 = token.offset_24;
|
||||
for (int i = 0; i < v20; i++)
|
||||
{
|
||||
char v3;
|
||||
char v3 = token.offset_16 + token.offset_0[i];
|
||||
if ((v3 & 0xDF) - 'A' > 25
|
||||
&& (v3 - '0') > 10
|
||||
&& v3 != '_'
|
||||
@ -52,11 +52,13 @@ namespace WXML
|
||||
{
|
||||
this->peekIndex++;
|
||||
auto v7 = this->dequeDom.back();
|
||||
v7->offset_48[v4] = v6;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
auto v9 = this->dequeDom.back();
|
||||
v9->offset_48[v4] = this->offset_216;
|
||||
|
||||
}
|
||||
}
|
||||
@ -135,9 +137,9 @@ namespace WXML
|
||||
}
|
||||
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_24.assign(domPtr->offset_0);
|
||||
domPtr->offset_84 = token;
|
||||
|
@ -157,7 +157,7 @@ namespace WXML {
|
||||
{
|
||||
a6 << "cs.push(\"";
|
||||
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")
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user