fix: 处理部分错误

This commit is contained in:
msojocs 2023-06-29 22:44:29 +08:00
parent b1f1178e06
commit 9459266bf4
5 changed files with 55 additions and 33 deletions

View File

@ -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 &,

View File

@ -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

View File

@ -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);
}
}

View File

@ -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;

View File

@ -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")
{