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

View File

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

View File

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

View File

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

View File

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