mirror of
https://github.com/msojocs/wx-compiler.git
synced 2025-07-19 00:00:04 +08:00
feat: 增加部分方法
This commit is contained in:
parent
6f3f2500d0
commit
fc4f2347f2
@ -30,8 +30,10 @@ add_executable(wcc
|
||||
src/night/ns_stream.cpp
|
||||
src/night/ns_token.cpp
|
||||
src/night/ns_god/ns_god.cpp
|
||||
src/wxml/expr_lib/parser.cpp
|
||||
src/wxml/expr_lib/common.cpp
|
||||
src/wxml/expr_lib/expr_syntax_tree.cpp
|
||||
src/wxml/expr_lib/parser.cpp
|
||||
src/wxml/expr_lib/token.cpp
|
||||
src/wxml/compiler.cpp
|
||||
src/wxml/dom_lib/str_cache.cpp
|
||||
src/wxml/dom_lib/wxml_dom.cpp
|
||||
|
@ -259,7 +259,6 @@ namespace WXML
|
||||
/*
|
||||
偏移应该不超过0x128u, 296
|
||||
*/
|
||||
bool offset_28 = 0;
|
||||
// std::string offset_52;
|
||||
int offset_92 = 0; // pos1
|
||||
int offset_96 = 0; // pos2
|
||||
@ -344,6 +343,7 @@ namespace WXML
|
||||
std::vector<std::string> const& a3
|
||||
);
|
||||
void RecordAllPath(void);
|
||||
void RewriteTree(void);
|
||||
void Print(int,char const*, std::stringstream *);
|
||||
void PrintMe(int,char const*, std::stringstream *);
|
||||
bool operator==(std::string tag);
|
||||
@ -520,6 +520,8 @@ namespace WXML
|
||||
|
||||
namespace EXPRLib
|
||||
{
|
||||
void OutputAsStringOrKeyWord(std::stringstream &,std::string const&,std::string const&, bool &);
|
||||
|
||||
class Parser
|
||||
{
|
||||
private:
|
||||
@ -546,19 +548,6 @@ namespace WXML
|
||||
~Tokenizer();
|
||||
};
|
||||
|
||||
class ExprSyntaxTree
|
||||
{
|
||||
private:
|
||||
/* data */
|
||||
public:
|
||||
ExprSyntaxTree(/* args */);
|
||||
~ExprSyntaxTree();
|
||||
void RenderAsOps(
|
||||
std::stringstream & a2,
|
||||
std::string const& a3,
|
||||
bool & a4
|
||||
);
|
||||
};
|
||||
|
||||
class Token
|
||||
{
|
||||
@ -569,15 +558,46 @@ namespace WXML
|
||||
*/
|
||||
private:
|
||||
/* data */
|
||||
int type;
|
||||
std::string tokenName;
|
||||
public:
|
||||
int offset_0;
|
||||
std::string offset_4;
|
||||
Token(/* args */);
|
||||
~Token();
|
||||
std::string GetLiteral(void);
|
||||
const char * GetTokenName();
|
||||
};
|
||||
|
||||
|
||||
class ExprSyntaxTree
|
||||
{
|
||||
private:
|
||||
/* data */
|
||||
public:
|
||||
std::string offset_0;
|
||||
WXML::EXPRLib::Token offset_24;
|
||||
// offset_52
|
||||
ExprSyntaxTree(/* args */);
|
||||
~ExprSyntaxTree();
|
||||
void RenderAsOps(
|
||||
std::stringstream & a2,
|
||||
std::string const& a3,
|
||||
bool & a4
|
||||
);
|
||||
};
|
||||
enum OPShort
|
||||
{
|
||||
AOP = 2,
|
||||
CONST = 1,
|
||||
CON_LIST = 5,
|
||||
CS_GLOBAL = 11,
|
||||
DO_FUNC = 12,
|
||||
EX_DICT = 10,
|
||||
GET_FROM_ENV = 7,
|
||||
GET_NAME = 6,
|
||||
MAKE_KV = 8,
|
||||
MAKE_LIST = 4,
|
||||
NAME = 3,
|
||||
UNION_KV = 9
|
||||
};
|
||||
|
||||
} // namespace EXPRLib
|
||||
|
||||
|
@ -17,7 +17,7 @@ int readFile (const char* fileName, std::string &result) {
|
||||
char buf[1024];
|
||||
unsigned int len;
|
||||
|
||||
result = "\0";
|
||||
result = "";
|
||||
if (fileName)
|
||||
f = fopen(fileName, "r");
|
||||
if (!f) {
|
||||
@ -29,7 +29,12 @@ int readFile (const char* fileName, std::string &result) {
|
||||
while (fgets(buf, 1024, f))
|
||||
{
|
||||
len = strlen(buf);
|
||||
result.append(buf, len);
|
||||
for (int i = 0; i < len; i++)
|
||||
{
|
||||
if (buf[i] != '\r')
|
||||
result.push_back(buf[i]);
|
||||
}
|
||||
|
||||
}
|
||||
if (f) {
|
||||
fclose(f);
|
||||
|
@ -235,6 +235,7 @@ namespace WXML{
|
||||
v311, // ??? a11
|
||||
(mark & 4) != 0, // a11 -> mark a12
|
||||
(mark & 0x20) != 0); // a13
|
||||
// printf("parse result: %d", parseResult);
|
||||
}
|
||||
// mark - 5
|
||||
std::shared_ptr<std::stringstream> v301_localCommonStream1(new std::stringstream()); // v301
|
||||
@ -325,6 +326,7 @@ namespace WXML{
|
||||
// mark - 45
|
||||
for (auto i = v304.begin(); i != v304.end(); i++)
|
||||
{
|
||||
i->second->RewriteTree();
|
||||
std::string v328 = "ALL";
|
||||
auto v51 = componentListMap[v328];
|
||||
auto v282 = i->second;
|
||||
|
@ -125,7 +125,7 @@ namespace WXML
|
||||
if (token.IsMatch("<"))
|
||||
{
|
||||
this->peekIndex++;
|
||||
auto token = this->Peek();
|
||||
token = this->Peek();
|
||||
auto tag = token.ToString();
|
||||
if (!WXML::DOMLib::Parser::IsValidTag(tag))
|
||||
{
|
||||
|
@ -245,7 +245,7 @@ namespace WXML {
|
||||
}
|
||||
else
|
||||
{
|
||||
for (auto i = this->offset_48.begin(); i != this->offset_48.end(); i++)
|
||||
for (auto i = this->offset_48.rbegin(); i != this->offset_48.rend(); i++)
|
||||
{
|
||||
if (
|
||||
i->second.offset_20
|
||||
@ -254,8 +254,8 @@ namespace WXML {
|
||||
)
|
||||
{
|
||||
if (
|
||||
this->offset_0 == "wx-template" && i->first == "data"
|
||||
|| this->offset_0 == "wx-scope" && i->first == "wx:scope-data"
|
||||
(this->offset_0 == "wx-template" && i->first == "data")
|
||||
|| (this->offset_0 == "wx-scope" && i->first == "wx:scope-data")
|
||||
)
|
||||
{
|
||||
this->DealSingleTokenToOps(a2, a3, a4, a5, &i->second, 1, 1, 0, a6, a7, a8);
|
||||
@ -272,6 +272,7 @@ namespace WXML {
|
||||
}
|
||||
|
||||
}
|
||||
return;
|
||||
}
|
||||
void WXMLDom::RenderMeAsFunction(
|
||||
std::string const& a2,
|
||||
@ -358,6 +359,174 @@ namespace WXML {
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
void WXMLDom::RewriteTree(void)
|
||||
{
|
||||
// RewriteTree - 0
|
||||
for (int i = 0; i < this->offset_72.size(); i++)
|
||||
{
|
||||
auto cur = this->offset_72[i];
|
||||
auto forItem = cur->offset_48.find("wx:for");
|
||||
if (forItem != cur->offset_48.end())
|
||||
{
|
||||
WXML::DOMLib::Token v4 = forItem->second;
|
||||
// token.offset_0 = "wx:for-items";
|
||||
cur->offset_48.emplace("wx:for-items", v4);
|
||||
cur->offset_48.erase("wx:for");
|
||||
}
|
||||
}
|
||||
|
||||
// RewriteTree - 5
|
||||
for (int i = 0; i < this->offset_72.size(); i++)
|
||||
{
|
||||
auto cur = this->offset_72[i];
|
||||
auto forItems = cur->offset_48.find("wx:for-items");
|
||||
if (forItems == cur->offset_48.end() && cur->offset_0 != "block")
|
||||
{
|
||||
const char **v38 = WXML::DOMLib::szWXIFControlAttrs;
|
||||
while (*v38)
|
||||
{
|
||||
std::string v101 = *v38;
|
||||
auto v9 = cur->offset_48.find(v101);
|
||||
++v38;
|
||||
if (v9 != cur->offset_48.end())
|
||||
{
|
||||
std::shared_ptr<WXML::DOMLib::WXMLDom> v98(new WXML::DOMLib::WXMLDom());
|
||||
auto v11 = v9->second;
|
||||
v98->offset_48.emplace(v101, v9->second);
|
||||
v98->offset_0 = "block";
|
||||
v98->offset_24.assign(cur->offset_24);
|
||||
v98->offset_84 = cur->offset_84;
|
||||
cur->offset_48.erase(v101);
|
||||
v98->offset_72.push_back(cur);
|
||||
this->offset_72[i] = v98;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
// RewriteTree - 10
|
||||
for (int i = 0; i < this->offset_72.size(); i++)
|
||||
{
|
||||
std::string v35;
|
||||
bool v52 = false;
|
||||
auto cur = this->offset_72[i];
|
||||
if (cur->offset_0 != "template")
|
||||
{
|
||||
continue;
|
||||
}
|
||||
if (cur->offset_48.end() == cur->offset_48.find("is"))
|
||||
{
|
||||
v52 = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
v52 = cur->offset_48.end() == cur->offset_48.find("name");
|
||||
}
|
||||
if (v52)
|
||||
{
|
||||
v35 = "wx-template";
|
||||
}
|
||||
else
|
||||
{
|
||||
v35 = "wx-define";
|
||||
}
|
||||
this->offset_72[i]->offset_0 = v35;
|
||||
}
|
||||
|
||||
// RewriteTree - 15
|
||||
for (int i = 0; i < this->offset_72.size(); i++)
|
||||
{
|
||||
auto cur = this->offset_72[i];
|
||||
if (cur->offset_0 == "block")
|
||||
{
|
||||
// TODO...
|
||||
}
|
||||
}
|
||||
|
||||
// RewriteTree - 20
|
||||
for (int i = 0; i < this->offset_72.size(); i++)
|
||||
{
|
||||
auto cur = this->offset_72[i];
|
||||
if (cur->offset_0 != "wx-repeat")
|
||||
{
|
||||
if (cur->offset_0 != "wx-define")
|
||||
{
|
||||
if (cur->offset_0 != "wx-import")
|
||||
{
|
||||
if (cur->offset_0 != "import")
|
||||
{
|
||||
auto v19 = cur->offset_48.find("wx:for-items");
|
||||
if (v19 != cur->offset_48.end())
|
||||
{
|
||||
std::shared_ptr<WXML::DOMLib::WXMLDom> v91(new WXML::DOMLib::WXMLDom());
|
||||
v91->offset_0 = "wx-repeat";
|
||||
v91->offset_24.assign(cur->offset_24);
|
||||
v91->offset_84 = cur->offset_84;
|
||||
v91->offset_72.push_back(cur);
|
||||
WXML::DOMLib::Token v21 = cur->offset_48["wx:for-items"];
|
||||
v91->offset_48.emplace("wx:for-items", v21);
|
||||
cur->offset_48.erase("wx:for-items");
|
||||
auto v59 = cur->offset_48.find("wx:for-item");
|
||||
if (cur->offset_48.end() != v59)
|
||||
{
|
||||
WXML::DOMLib::Token v22 = v59->second;
|
||||
v91->offset_48.emplace("wx:for-item", v22);
|
||||
cur->offset_48.erase("wx:for-item");
|
||||
}
|
||||
|
||||
//////////////////////////////"wx:for-index"
|
||||
auto v63 = cur->offset_48.find("wx:for-index");
|
||||
if (v63 != cur->offset_48.end())
|
||||
{
|
||||
WXML::DOMLib::Token v102 = v63->second;
|
||||
v91->offset_48.emplace("wx:for-index", v102);
|
||||
cur->offset_48.erase("wx:for-index");
|
||||
}
|
||||
|
||||
///////////////////////////////"wx:key"
|
||||
auto v67 = cur->offset_48.find("wx:key");
|
||||
if (cur->offset_48.end() != v67)
|
||||
{
|
||||
WXML::DOMLib::Token v24 = v67->second;
|
||||
v91->offset_48.emplace("wx:key", v24);
|
||||
cur->offset_48.erase("wx:key");
|
||||
}
|
||||
this->offset_72[i] = v91;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// RewriteTree - 25
|
||||
for (int i = 0; i < this->offset_72.size(); i++)
|
||||
{
|
||||
auto cur = this->offset_72[i];
|
||||
auto v28 = cur->offset_48.find("wx:scope-data");
|
||||
if (v28 != cur->offset_48.end())
|
||||
{
|
||||
std::shared_ptr<WXML::DOMLib::WXMLDom> v71(new WXML::DOMLib::WXMLDom());
|
||||
v71->offset_0 = "wx-scope";
|
||||
v71->offset_24.assign(cur->offset_24);
|
||||
v71->offset_84 = cur->offset_84;
|
||||
v71->offset_72.push_back(cur);
|
||||
WXML::DOMLib::Token v30 = cur->offset_48["wx:scope-data"];
|
||||
v71->offset_48.emplace("wx:scope-data", v30);
|
||||
cur->offset_48.erase("wx:scope-data");
|
||||
this->offset_72[i] = v71;
|
||||
}
|
||||
}
|
||||
|
||||
// RewriteTree - 30
|
||||
for (int i = 0; i < this->offset_72.size(); i++)
|
||||
{
|
||||
this->offset_72[i]->RewriteTree();
|
||||
}
|
||||
|
||||
}
|
||||
/**
|
||||
* 有点问题
|
||||
@ -672,7 +841,7 @@ namespace WXML {
|
||||
std::map<std::string,std::string> * a15
|
||||
)
|
||||
{
|
||||
if (a13 && this->offset_28)
|
||||
if (a13 && this->offset_24.size())
|
||||
{
|
||||
a6 << "cs.push(\"";
|
||||
std::string sc = WXML::Rewrite::ToStringCode(a2);
|
||||
@ -697,7 +866,7 @@ namespace WXML {
|
||||
a6 << a12;
|
||||
|
||||
// goto LABEL_169;
|
||||
if (a13 && this->offset_28)
|
||||
if (a13 && this->offset_24.size())
|
||||
{
|
||||
a6 << "cs.pop()" << a12;
|
||||
}
|
||||
@ -705,12 +874,12 @@ namespace WXML {
|
||||
|
||||
} // TEXTNODE end
|
||||
if (this->offset_0 == "wx-define"
|
||||
||this->offset_0 == "wx-import"
|
||||
||this->offset_0 == "import"
|
||||
||this->offset_0 == "template")
|
||||
|| this->offset_0 == "wx-import"
|
||||
|| this->offset_0 == "import"
|
||||
|| this->offset_0 == "template")
|
||||
{
|
||||
|
||||
if (a13 && this->offset_28)
|
||||
if (a13 && this->offset_24.size())
|
||||
{
|
||||
a6 << "cs.pop()" << a12;
|
||||
}
|
||||
@ -784,6 +953,15 @@ namespace WXML {
|
||||
throw "RenderException" + err;
|
||||
}
|
||||
|
||||
if (target2_1.size() == 0)
|
||||
{
|
||||
target2_1 = "index";
|
||||
}
|
||||
if (target3_1.size() == 0)
|
||||
{
|
||||
target3_1 = "item";
|
||||
}
|
||||
|
||||
std::string name1;
|
||||
a7->GetNextName(name1);
|
||||
|
||||
@ -850,10 +1028,9 @@ namespace WXML {
|
||||
{
|
||||
goto LABEL_57;
|
||||
}
|
||||
|
||||
v336 = t->second.ToAttrContent();
|
||||
v47 = v336.find('.', 0);
|
||||
|
||||
|
||||
if (v47 != -1)
|
||||
{
|
||||
auto Str = v336.substr(0, v47);
|
||||
@ -907,7 +1084,36 @@ namespace WXML {
|
||||
}
|
||||
}
|
||||
}
|
||||
// if (WXML::DOMLib::Token::IsValidVariableNam(v336))
|
||||
if (!WXML::DOMLib::Token::IsValidVariableName(v336))
|
||||
{
|
||||
if (v336.length())
|
||||
{
|
||||
if (v336 == "0")
|
||||
goto LABEL_56;
|
||||
if (v336[0] != '0')
|
||||
{
|
||||
for (int i_0 = 0; i_0 < v336.length(); i_0++)
|
||||
{
|
||||
if (v336[i_0] - '0' > 9u)
|
||||
{
|
||||
goto LABEL_189;
|
||||
}
|
||||
}
|
||||
|
||||
goto LABEL_56;
|
||||
}
|
||||
}
|
||||
LABEL_189:
|
||||
if (v336 != "*this")
|
||||
{
|
||||
a6 << "_wp('" << WXML::Rewrite::ToStringCode(a2) << ":";
|
||||
a6 << this->offset_24 << ":" << this->offset_92 << ":" << this->offset_96;
|
||||
a6 << ": wx:key=\"" << WXML::Rewrite::ToStringCode(v336);
|
||||
a6 << "\" does not look like a valid key name.')" << a12;
|
||||
|
||||
goto LABEL_56;
|
||||
}
|
||||
}
|
||||
LABEL_56: //...
|
||||
LABEL_57: //...
|
||||
if (this->offset_256)
|
||||
@ -925,7 +1131,7 @@ namespace WXML {
|
||||
a6 << target3_1 << "," << target2_1 << ",";
|
||||
a6 << this->offset_48[wxKey].ToAttrContent() << ")" << a12;
|
||||
goto LABEL_84;
|
||||
}
|
||||
} // wx-repeat end
|
||||
if (this->offset_0 == "block")
|
||||
{
|
||||
|
||||
@ -957,13 +1163,13 @@ namespace WXML {
|
||||
a6 << this->offset_248.GetStrID(a2);
|
||||
a6 << "]," << a8 << "," << a9 << "," << a5 << "," << a10 << ");" << a12;
|
||||
// goto LABEL_68;
|
||||
if (a13 && this->offset_28)
|
||||
if (a13 && this->offset_24.size())
|
||||
{
|
||||
a6 << "cs.pop()" << a12;
|
||||
}
|
||||
return;
|
||||
}
|
||||
if (this->offset_0 == "ex-template")
|
||||
if (this->offset_0 == "wx-template")
|
||||
{
|
||||
v281 = this->offset_48.find("is");
|
||||
if (v281 == this->offset_48.end())
|
||||
@ -983,7 +1189,7 @@ namespace WXML {
|
||||
a6 << a12;
|
||||
|
||||
// goto LABEL_169;
|
||||
if (a13 && this->offset_28)
|
||||
if (a13 && this->offset_24.size())
|
||||
{
|
||||
a6 << "cs.pop()" << a12;
|
||||
}
|
||||
@ -1156,7 +1362,7 @@ namespace WXML {
|
||||
// if ((a14 & 1) != 0)
|
||||
// this->AddTestAttr(a5, a6, '\n'/*10*/);
|
||||
LABEL_169:
|
||||
if (a13 && this->offset_28)
|
||||
if (a13 && this->offset_24.size())
|
||||
{
|
||||
a6 << "cs.pop()" << a12;
|
||||
}
|
||||
@ -1452,7 +1658,7 @@ namespace WXML {
|
||||
}
|
||||
bool WXMLDom::operator==(std::string tag)
|
||||
{
|
||||
return this->offset_0.compare(tag) == 0;
|
||||
return this->offset_0 == tag;
|
||||
}
|
||||
std::string WXMLDom::Error(
|
||||
std::string const& a2,
|
||||
|
30
src/wxml/expr_lib/common.cpp
Normal file
30
src/wxml/expr_lib/common.cpp
Normal file
@ -0,0 +1,30 @@
|
||||
#include "../../include/wxml.h"
|
||||
|
||||
namespace WXML
|
||||
{
|
||||
|
||||
namespace EXPRLib
|
||||
{
|
||||
void OutputAsStringOrKeyWord(
|
||||
std::stringstream & a1,
|
||||
std::string const& a2,
|
||||
std::string const& a3,
|
||||
bool &a4)
|
||||
{
|
||||
if (a2 == "true")
|
||||
{
|
||||
a1 << WXML::EXPRLib::OPShort::CONST << ",true";
|
||||
return;
|
||||
}
|
||||
if (a2 == "false")
|
||||
{
|
||||
a1 << WXML::EXPRLib::OPShort::CONST << ",false";
|
||||
}
|
||||
if (a2 != "$global")
|
||||
{
|
||||
a1 << WXML::EXPRLib::OPShort::NAME << ",'" << a2 << "'";
|
||||
}
|
||||
a1 << WXML::EXPRLib::OPShort::CS_GLOBAL;
|
||||
}
|
||||
}
|
||||
}
|
@ -20,7 +20,155 @@ namespace WXML
|
||||
bool & a4
|
||||
)
|
||||
{
|
||||
// RenderAsOps - 0
|
||||
a2 << "[";
|
||||
if (this->offset_0[0] == '$')
|
||||
{
|
||||
if (this->offset_0 == "$VAR")
|
||||
{
|
||||
std::string v47 = this->offset_24.GetLiteral();
|
||||
WXML::EXPRLib::OutputAsStringOrKeyWord(a2, v47, a3, a4);
|
||||
}
|
||||
else if(this->offset_0 == "$STRING")
|
||||
{
|
||||
a2 << WXML::EXPRLib::OPShort::CONST << ",'";
|
||||
std::string v6 = this->offset_24.GetLiteral();
|
||||
// WXML::Rewrite::ToStringCode(v6.size(), ,a2);
|
||||
const char off_5542FA[] = {'\'','\0','[','\0'};
|
||||
a2 << off_5542FA;
|
||||
}
|
||||
else
|
||||
{
|
||||
a2 << WXML::EXPRLib::OPShort::CONST << ",'";
|
||||
std::string v33 = this->offset_24.GetLiteral();
|
||||
a2 << v33;
|
||||
|
||||
}
|
||||
a2 << "]";
|
||||
return ;
|
||||
|
||||
}
|
||||
// RenderAsOps - 5
|
||||
if (
|
||||
this->offset_0[0] == 'O'
|
||||
&& this->offset_0[0] == 'P'
|
||||
&& this->offset_0[0] == '_'
|
||||
)
|
||||
{
|
||||
if (this->offset_0 == "OP_PATH")
|
||||
{
|
||||
// if (this->offset_52.size() != 1)
|
||||
// {
|
||||
// a2 << "]";
|
||||
// return;
|
||||
// }
|
||||
a2 << "[" << WXML::EXPRLib::OPShort::GET_FROM_ENV << "],";
|
||||
|
||||
WXML::EXPRLib::ExprSyntaxTree::RenderAsOps(a2, a3, a4);
|
||||
a2 << "]";
|
||||
return;
|
||||
}
|
||||
if (this->offset_0 == "OP_LIST")
|
||||
{
|
||||
a2 << "[" << WXML::EXPRLib::OPShort::MAKE_LIST << "],";
|
||||
// if (this->offset_52.size() == 0)
|
||||
// {
|
||||
// a2 << "]";
|
||||
// return;
|
||||
// }
|
||||
WXML::EXPRLib::ExprSyntaxTree::RenderAsOps(a2, a3, a4);
|
||||
a2 << "]";
|
||||
return;
|
||||
|
||||
}
|
||||
if (this->offset_0 == "OP_LIST_CONCAT")
|
||||
{
|
||||
a2 << "[" << WXML::EXPRLib::OPShort::CON_LIST << "]";
|
||||
// for (int i = 0; i < this->offset_52.size(); i++)
|
||||
// {
|
||||
// a2 << ",";
|
||||
// WXML::EXPRLib::ExprSyntaxTree::RenderAsOps(a2, a3, a4);
|
||||
// }
|
||||
|
||||
}
|
||||
else if (this->offset_0 == "OP_DICT_CONCAT")
|
||||
{
|
||||
a2 << "[" << WXML::EXPRLib::OPShort::UNION_KV << "]";
|
||||
// for (int i = 0; i < this->offset_52.size(); i++)
|
||||
// {
|
||||
// a2 << ",";
|
||||
// WXML::EXPRLib::ExprSyntaxTree::RenderAsOps(a2, a3, a4);
|
||||
// }
|
||||
}
|
||||
else if (this->offset_0 == "OP_MAKE_DICT")
|
||||
{
|
||||
a2 << "[" << WXML::EXPRLib::OPShort::MAKE_KV << "],'";
|
||||
// this->offset_52.offset_24;
|
||||
// a2 << ;
|
||||
a2 << "',";
|
||||
// if (this->offset_52.size() == 0)
|
||||
// {
|
||||
// a2 << "[" << "[7],";
|
||||
// WXML::EXPRLib::ExprSyntaxTree::RenderAsOps(a2, a3, a4);
|
||||
// a2 << "]";
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// WXML::EXPRLib::ExprSyntaxTree::RenderAsOps(a2, a3, a4);
|
||||
// }
|
||||
}
|
||||
else
|
||||
{
|
||||
if (this->offset_0 == "OP_EXPAND")
|
||||
{
|
||||
a2 << "[" << WXML::EXPRLib::OPShort::EX_DICT << "],";
|
||||
WXML::EXPRLib::ExprSyntaxTree::RenderAsOps(a2, a3, a4);
|
||||
|
||||
a2 << "]";
|
||||
return;
|
||||
|
||||
}
|
||||
if (this->offset_0 == "OP_DICT")
|
||||
{
|
||||
a2 << "[" << WXML::EXPRLib::OPShort::GET_NAME << "]";
|
||||
// for (int i = 0; i < this->offset_52.size(); i++)
|
||||
// {
|
||||
// a2 << ",";
|
||||
// WXML::EXPRLib::ExprSyntaxTree::RenderAsOps(a2, a3, a4);
|
||||
|
||||
// }
|
||||
}
|
||||
else if (this->offset_0 == "OP_FUNC")
|
||||
{
|
||||
a2 << "[" << WXML::EXPRLib::OPShort::DO_FUNC << "]";
|
||||
// for (int i = 0; i < this->offset_52.size(); i++)
|
||||
// {
|
||||
// a2 << ",";
|
||||
// WXML::EXPRLib::ExprSyntaxTree::RenderAsOps(a2, a3, a4);
|
||||
|
||||
// }
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
// RenderAsOps - 10
|
||||
else
|
||||
{
|
||||
a2 << "[" << WXML::EXPRLib::OPShort::AOP;
|
||||
a2 << ",'" << this->offset_0 << "'],";
|
||||
// for (int i = 0; i < this->offset_52.size(); i++)
|
||||
// {
|
||||
// if (i)
|
||||
// {
|
||||
// a2 << ",";
|
||||
// }
|
||||
// WXML::EXPRLib::ExprSyntaxTree::RenderAsOps(a2, a3, a4);
|
||||
// }
|
||||
|
||||
}
|
||||
// RenderAsOps - 15
|
||||
a2 << "]";
|
||||
}
|
||||
}
|
||||
}
|
@ -15,10 +15,10 @@ namespace WXML
|
||||
const char * Token::GetTokenName()
|
||||
{
|
||||
const char *result;
|
||||
switch ( this->type )
|
||||
switch ( this->offset_0 )
|
||||
{
|
||||
case 0u:
|
||||
result = this->tokenName.c_str();
|
||||
result = this->offset_4.data();
|
||||
break;
|
||||
case 1u:
|
||||
result = "$DECIMAL";
|
||||
@ -37,7 +37,24 @@ namespace WXML
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
|
||||
std::string Token::GetLiteral(void)
|
||||
{
|
||||
std::string result = this->offset_4;
|
||||
if (this->offset_0)
|
||||
{
|
||||
result = "$";
|
||||
if (this->offset_0 != 5)
|
||||
{
|
||||
if (this->offset_4.size())
|
||||
{
|
||||
// return
|
||||
}
|
||||
}
|
||||
}
|
||||
return "";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -14045,7 +14045,7 @@ struct _Unwind_Exception *__cdecl WXML::Compiler::CompileLazy(
|
||||
break;
|
||||
WXML::DOMLib::WXMLDom::RewriteTree(*(_DWORD *)(jj + 40));
|
||||
v282 = *((_DWORD *)lpuexcptj + 10);
|
||||
std::string::basic_string((void **)&v328, (char *)off_550B3F);
|
||||
std::string::basic_string((void **)&v328, (char *)off_550B3F); // "ALL"
|
||||
v51 = std::map<std::string,std::vector<std::string>>::operator[](a6, &v328);
|
||||
WXML::DOMLib::WXMLDom::MarkIfHasDescendant(v282, v51);
|
||||
std::string::_M_dispose((void **)&v328);
|
||||
@ -22719,7 +22719,8 @@ int __fastcall WXML::DOMLib::WXMLDom::RewriteTree(int a1)
|
||||
void *v100[6]; // [esp+F4h] [ebp-94h] BYREF
|
||||
const char *v101; // [esp+10Ch] [ebp-7Ch] BYREF
|
||||
char v102[120]; // [esp+110h] [ebp-78h] BYREF
|
||||
|
||||
|
||||
// RewriteTree - 0
|
||||
for ( Str = 0; ; ++Str )
|
||||
{
|
||||
v1 = *(_DWORD *)(a1 + 72);
|
||||
@ -22727,33 +22728,40 @@ int __fastcall WXML::DOMLib::WXMLDom::RewriteTree(int a1)
|
||||
break;
|
||||
v74 = *(_DWORD *)(v1 + 8 * (_DWORD)Str);
|
||||
std::string::basic_string((void **)&v101, "wx:for");
|
||||
v2 = std::_Rb_tree<std::string,std::pair<std::string const,WXML::DOMLib::Token>,std::_Select1st<std::pair<std::string const,WXML::DOMLib::Token>>,std::less<std::string>,std::allocator<std::pair<std::string const,WXML::DOMLib::Token>>>::find(
|
||||
(_DWORD *)(v74 + 48),
|
||||
(int)&v101);
|
||||
v2 = std::_Rb_tree<std::string,std::pair<std::string const,WXML::DOMLib::Token>,std::_Select1st<std::pair<std::string const,WXML::DOMLib::Token>>,std::less<std::string>,std::allocator<std::pair<std::string const,WXML::DOMLib::Token>>>
|
||||
::find(
|
||||
(_DWORD *)(v74 + 48), // cur->offset_48
|
||||
(int)&v101); // "wx:for"
|
||||
v34 = v3;
|
||||
Block = v2;
|
||||
std::string::_M_dispose((void **)&v101);
|
||||
if ( Block != (void *)(v74 + 52) )
|
||||
{
|
||||
v75 = *(_DWORD *)(*(_DWORD *)(a1 + 72) + 8 * (_DWORD)Str);
|
||||
v75 = *(_DWORD *)(*(_DWORD *)(a1 + 72) + 8 * (_DWORD)Str); // cur
|
||||
std::string::basic_string(v100, "wx:for");
|
||||
v4 = std::map<std::string,WXML::DOMLib::Token>::operator[](
|
||||
(_DWORD *)(*(_DWORD *)(*(_DWORD *)(a1 + 72) + 8 * (_DWORD)Str) + 48),
|
||||
v100);
|
||||
(_DWORD *)(*(_DWORD *)(*(_DWORD *)(a1 + 72) + 8 * (_DWORD)Str) + 48), // cur->offset_48
|
||||
v100); // "wx:for"
|
||||
// cur->offset_48["wx:for"]
|
||||
v101 = "wx:for-items";
|
||||
// v4
|
||||
WXML::DOMLib::Token::Token((int)v102, (WXML::DOMLib::Token *)v4, v36);
|
||||
std::_Rb_tree<std::string,std::pair<std::string const,WXML::DOMLib::Token>,std::_Select1st<std::pair<std::string const,WXML::DOMLib::Token>>,std::less<std::string>,std::allocator<std::pair<std::string const,WXML::DOMLib::Token>>>::_M_emplace_unique<std::pair<char const*,WXML::DOMLib::Token>>(
|
||||
std::_Rb_tree<std::string,std::pair<std::string const,WXML::DOMLib::Token>,std::_Select1st<std::pair<std::string const,WXML::DOMLib::Token>>,std::less<std::string>,std::allocator<std::pair<std::string const,WXML::DOMLib::Token>>>
|
||||
::_M_emplace_unique<std::pair<char const*,WXML::DOMLib::Token>>(
|
||||
(_DWORD *)(v75 + 48),
|
||||
(char **)&v101);
|
||||
(char **)&v101); // "wx:for-items"
|
||||
WXML::DOMLib::Token::~Token((int)v102);
|
||||
std::string::_M_dispose(v100);
|
||||
v76 = (_DWORD *)(*(_DWORD *)(*(_DWORD *)(a1 + 72) + 8 * (_DWORD)Str) + 48);
|
||||
// cur->offset_48
|
||||
std::string::basic_string((void **)&v101, "wx:for");
|
||||
std::map<std::string,WXML::DOMLib::Token>::erase(v76, (int)&v101);
|
||||
v34 = v5;
|
||||
std::string::_M_dispose((void **)&v101);
|
||||
}
|
||||
}
|
||||
|
||||
// RewriteTree - 5
|
||||
for ( i = 0; ; ++i )
|
||||
{
|
||||
v6 = *(_DWORD *)(a1 + 72);
|
||||
@ -22762,12 +22770,15 @@ int __fastcall WXML::DOMLib::WXMLDom::RewriteTree(int a1)
|
||||
v50 = (char *)(8 * i);
|
||||
Strg = *(char **)(v6 + 8 * i);
|
||||
std::string::basic_string((void **)&v101, "wx:for-items");
|
||||
v7 = (char *)std::_Rb_tree<std::string,std::pair<std::string const,WXML::DOMLib::Token>,std::_Select1st<std::pair<std::string const,WXML::DOMLib::Token>>,std::less<std::string>,std::allocator<std::pair<std::string const,WXML::DOMLib::Token>>>::find(
|
||||
v7 = (char *)std::_Rb_tree<std::string,std::pair<std::string const,WXML::DOMLib::Token>,std::_Select1st<std::pair<std::string const,WXML::DOMLib::Token>>,std::less<std::string>,std::allocator<std::pair<std::string const,WXML::DOMLib::Token>>>
|
||||
::find(
|
||||
(_DWORD *)Strg + 12,
|
||||
(int)&v101);
|
||||
v34 = v8;
|
||||
Blocka = v7;
|
||||
std::string::_M_dispose((void **)&v101);
|
||||
// cur->offset_52
|
||||
// char *Strg
|
||||
if ( Blocka == Strg + 52 && !std::operator==<char>(*(_DWORD *)(*(_DWORD *)(a1 + 72) + 8 * i), "block") )
|
||||
{
|
||||
v38 = WXML::DOMLib::szWXIFControlAttrs;
|
||||
@ -22776,9 +22787,10 @@ int __fastcall WXML::DOMLib::WXMLDom::RewriteTree(int a1)
|
||||
Stra = *v38;
|
||||
if ( !*v38 )
|
||||
break;
|
||||
Blockb = *(_DWORD **)(*(_DWORD *)(a1 + 72) + 8 * i);
|
||||
Blockb = *(_DWORD **)(*(_DWORD *)(a1 + 72) + 8 * i); // cur
|
||||
std::string::basic_string((void **)&v101, Stra);
|
||||
v9 = std::_Rb_tree<std::string,std::pair<std::string const,WXML::DOMLib::Token>,std::_Select1st<std::pair<std::string const,WXML::DOMLib::Token>>,std::less<std::string>,std::allocator<std::pair<std::string const,WXML::DOMLib::Token>>>::find(
|
||||
v9 = std::_Rb_tree<std::string,std::pair<std::string const,WXML::DOMLib::Token>,std::_Select1st<std::pair<std::string const,WXML::DOMLib::Token>>,std::less<std::string>,std::allocator<std::pair<std::string const,WXML::DOMLib::Token>>>
|
||||
::find(
|
||||
Blockb + 12,
|
||||
(int)&v101);
|
||||
v34 = v10;
|
||||
@ -22789,25 +22801,28 @@ int __fastcall WXML::DOMLib::WXMLDom::RewriteTree(int a1)
|
||||
{
|
||||
std::__shared_ptr<WXML::DOMLib::WXMLDom,(__gnu_cxx::_Lock_policy)2>::__shared_ptr(
|
||||
&v96,
|
||||
&v50[*(_DWORD *)(a1 + 72)]);
|
||||
&v50[*(_DWORD *)(a1 + 72)]); // cur
|
||||
Blockc = operator new(0x128u);
|
||||
WXML::DOMLib::WXMLDom::WXMLDom((int)Blockc);
|
||||
zcc::shared_ptr<WXML::DOMLib::WXMLDom>::shared_ptr(Blockc);
|
||||
Blockd = v98;
|
||||
std::string::basic_string(v100, Stra);
|
||||
// v96 + 12 -> cur->offset_48[*v38]
|
||||
v11 = std::map<std::string,WXML::DOMLib::Token>::operator[](v96 + 12, v100);
|
||||
v101 = Stra;
|
||||
v101 = Stra; // *v38
|
||||
WXML::DOMLib::Token::Token((int)v102, (WXML::DOMLib::Token *)v11, v36);
|
||||
std::_Rb_tree<std::string,std::pair<std::string const,WXML::DOMLib::Token>,std::_Select1st<std::pair<std::string const,WXML::DOMLib::Token>>,std::less<std::string>,std::allocator<std::pair<std::string const,WXML::DOMLib::Token>>>::_M_emplace_unique<std::pair<char const*,WXML::DOMLib::Token>>(
|
||||
Blockd + 12,
|
||||
std::_Rb_tree<std::string,std::pair<std::string const,WXML::DOMLib::Token>,std::_Select1st<std::pair<std::string const,WXML::DOMLib::Token>>,std::less<std::string>,std::allocator<std::pair<std::string const,WXML::DOMLib::Token>>>
|
||||
::_M_emplace_unique<std::pair<char const*,WXML::DOMLib::Token>>(
|
||||
Blockd + 12, // cur->offset_48
|
||||
(char **)&v101);
|
||||
WXML::DOMLib::Token::~Token((int)v102);
|
||||
std::string::_M_dispose(v100);
|
||||
std::string::operator=(v98, "block");
|
||||
// v96 -> cur
|
||||
WXML::DOMLib::Token::operator=((int)(v98 + 21), (int)(v96 + 21));
|
||||
std::string::_M_assign((int)(v98 + 6), (int)(v96 + 6));
|
||||
Blocke = v96 + 12;
|
||||
std::string::basic_string((void **)&v101, Stra);
|
||||
std::string::basic_string((void **)&v101, Stra); // *v38
|
||||
std::map<std::string,WXML::DOMLib::Token>::erase(Blocke, (int)&v101);
|
||||
std::string::_M_dispose((void **)&v101);
|
||||
std::vector<zcc::shared_ptr<WXML::DOMLib::WXMLDom>>::push_back(v98 + 18, &v96);
|
||||
@ -22822,6 +22837,8 @@ int __fastcall WXML::DOMLib::WXMLDom::RewriteTree(int a1)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// RewriteTree - 10
|
||||
for ( Strb = 0; ; ++Strb )
|
||||
{
|
||||
v14 = *(_DWORD *)(a1 + 72);
|
||||
@ -22829,9 +22846,11 @@ int __fastcall WXML::DOMLib::WXMLDom::RewriteTree(int a1)
|
||||
break;
|
||||
if ( !std::operator==<char>(*(_DWORD *)(v14 + 8 * (_DWORD)Strb), "template") )
|
||||
goto LABEL_23;
|
||||
v51 = *(_DWORD **)(*(_DWORD *)(a1 + 72) + 8 * (_DWORD)Strb);
|
||||
v51 = *(_DWORD **)(*(_DWORD *)(a1 + 72) + 8 * (_DWORD)Strb); // cur
|
||||
std::string::basic_string(v100, "is");
|
||||
if ( v51 + 13 == std::_Rb_tree<std::string,std::pair<std::string const,WXML::DOMLib::Token>,std::_Select1st<std::pair<std::string const,WXML::DOMLib::Token>>,std::less<std::string>,std::allocator<std::pair<std::string const,WXML::DOMLib::Token>>>::find(
|
||||
// 13 * 4 = 52
|
||||
if ( v51 + 13 == std::_Rb_tree<std::string,std::pair<std::string const,WXML::DOMLib::Token>,std::_Select1st<std::pair<std::string const,WXML::DOMLib::Token>>,std::less<std::string>,std::allocator<std::pair<std::string const,WXML::DOMLib::Token>>>
|
||||
::find(
|
||||
v51 + 12,
|
||||
(int)v100) )
|
||||
{
|
||||
@ -22849,12 +22868,12 @@ int __fastcall WXML::DOMLib::WXMLDom::RewriteTree(int a1)
|
||||
std::string::_M_dispose(v100);
|
||||
if ( v52 )
|
||||
{
|
||||
v15 = *(unsigned int **)(*(_DWORD *)(a1 + 72) + 8 * (_DWORD)Strb);
|
||||
v15 = *(unsigned int **)(*(_DWORD *)(a1 + 72) + 8 * (_DWORD)Strb); // cur
|
||||
v35 = "wx-template";
|
||||
}
|
||||
else
|
||||
{
|
||||
LABEL_23:
|
||||
LABEL_23:
|
||||
if ( !std::operator==<char>(*(_DWORD *)(*(_DWORD *)(a1 + 72) + 8 * (_DWORD)Strb), "template") )
|
||||
continue;
|
||||
v15 = *(unsigned int **)(*(_DWORD *)(a1 + 72) + 8 * (_DWORD)Strb);
|
||||
@ -22862,6 +22881,8 @@ LABEL_23:
|
||||
}
|
||||
v34 = std::string::operator=(v15, v35);
|
||||
}
|
||||
|
||||
// RewriteTree - 15
|
||||
for ( Strc = 0; ; ++Strc )
|
||||
{
|
||||
v16 = *(_DWORD *)(a1 + 72);
|
||||
@ -22873,12 +22894,15 @@ LABEL_23:
|
||||
v34 = v17;
|
||||
}
|
||||
}
|
||||
|
||||
// RewriteTree - 20
|
||||
for ( j = 0; ; ++j )
|
||||
{
|
||||
v18 = *(_DWORD *)(a1 + 72);
|
||||
if ( (*(_DWORD *)(a1 + 76) - v18) >> 3 <= j )
|
||||
break;
|
||||
Strd = (char *)(8 * j);
|
||||
// cur->offset_0
|
||||
if ( (unsigned __int8)std::operator!=<char>(*(_DWORD *)(v18 + 8 * j), "wx-repeat") )
|
||||
{
|
||||
if ( (unsigned __int8)std::operator!=<char>(*(_DWORD *)(*(_DWORD *)(a1 + 72) + 8 * j), "wx-define") )
|
||||
@ -22887,11 +22911,12 @@ LABEL_23:
|
||||
{
|
||||
if ( (unsigned __int8)std::operator!=<char>(*(_DWORD *)(*(_DWORD *)(a1 + 72) + 8 * j), "import") )
|
||||
{
|
||||
v54 = *(_DWORD **)(*(_DWORD *)(a1 + 72) + 8 * j);
|
||||
v54 = *(_DWORD **)(*(_DWORD *)(a1 + 72) + 8 * j); // cur
|
||||
std::string::basic_string((void **)&v101, "wx:for-items");
|
||||
v19 = (char *)std::_Rb_tree<std::string,std::pair<std::string const,WXML::DOMLib::Token>,std::_Select1st<std::pair<std::string const,WXML::DOMLib::Token>>,std::less<std::string>,std::allocator<std::pair<std::string const,WXML::DOMLib::Token>>>::find(
|
||||
v19 = (char *)std::_Rb_tree<std::string,std::pair<std::string const,WXML::DOMLib::Token>,std::_Select1st<std::pair<std::string const,WXML::DOMLib::Token>>,std::less<std::string>,std::allocator<std::pair<std::string const,WXML::DOMLib::Token>>>
|
||||
::find(
|
||||
v54 + 12,
|
||||
(int)&v101);
|
||||
(int)&v101); // "wx:for-items"
|
||||
v34 = v20;
|
||||
Blockf = v19;
|
||||
std::string::_M_dispose((void **)&v101);
|
||||
@ -22900,31 +22925,37 @@ LABEL_23:
|
||||
std::__shared_ptr<WXML::DOMLib::WXMLDom,(__gnu_cxx::_Lock_policy)2>::__shared_ptr(
|
||||
&v89,
|
||||
&Strd[*(_DWORD *)(a1 + 72)]);
|
||||
// cur
|
||||
v55 = operator new(0x128u);
|
||||
WXML::DOMLib::WXMLDom::WXMLDom((int)v55);
|
||||
zcc::shared_ptr<WXML::DOMLib::WXMLDom>::shared_ptr(v55);
|
||||
std::string::operator=(v91, "wx-repeat");
|
||||
// cur->offset_24
|
||||
std::string::_M_assign((int)(v91 + 6), *(_DWORD *)(*(_DWORD *)(a1 + 72) + 8 * j) + 24);
|
||||
WXML::DOMLib::Token::operator=((int)(v91 + 21), (int)(v89 + 21));
|
||||
std::vector<zcc::shared_ptr<WXML::DOMLib::WXMLDom>>::push_back(v91 + 18, &v89);
|
||||
v56 = v91;
|
||||
std::string::basic_string(v100, "wx:for-items");
|
||||
// cur->offset_48["wx:for-items"]
|
||||
v21 = std::map<std::string,WXML::DOMLib::Token>::operator[](v89 + 12, v100);
|
||||
v101 = "wx:for-items";
|
||||
WXML::DOMLib::Token::Token((int)v102, (WXML::DOMLib::Token *)v21, v36);
|
||||
std::_Rb_tree<std::string,std::pair<std::string const,WXML::DOMLib::Token>,std::_Select1st<std::pair<std::string const,WXML::DOMLib::Token>>,std::less<std::string>,std::allocator<std::pair<std::string const,WXML::DOMLib::Token>>>::_M_emplace_unique<std::pair<char const*,WXML::DOMLib::Token>>(
|
||||
std::_Rb_tree<std::string,std::pair<std::string const,WXML::DOMLib::Token>,std::_Select1st<std::pair<std::string const,WXML::DOMLib::Token>>,std::less<std::string>,std::allocator<std::pair<std::string const,WXML::DOMLib::Token>>>
|
||||
::_M_emplace_unique<std::pair<char const*,WXML::DOMLib::Token>>(
|
||||
v56 + 12,
|
||||
(char **)&v101);
|
||||
WXML::DOMLib::Token::~Token((int)v102);
|
||||
std::string::_M_dispose(v100);
|
||||
v57 = v89 + 12;
|
||||
// v89 -> cur
|
||||
std::string::basic_string(v93, "wx:for-items");
|
||||
std::map<std::string,WXML::DOMLib::Token>::erase(v57, (int)v93);
|
||||
std::string::_M_dispose(v93);
|
||||
v58 = v89;
|
||||
Blockg = v89 + 13;
|
||||
v58 = v89; // cur
|
||||
Blockg = v89 + 13; // cur->offset_52 end
|
||||
std::string::basic_string(v94, "wx:for-item");
|
||||
v59 = std::_Rb_tree<std::string,std::pair<std::string const,WXML::DOMLib::Token>,std::_Select1st<std::pair<std::string const,WXML::DOMLib::Token>>,std::less<std::string>,std::allocator<std::pair<std::string const,WXML::DOMLib::Token>>>::find(
|
||||
v59 = std::_Rb_tree<std::string,std::pair<std::string const,WXML::DOMLib::Token>,std::_Select1st<std::pair<std::string const,WXML::DOMLib::Token>>,std::less<std::string>,std::allocator<std::pair<std::string const,WXML::DOMLib::Token>>>
|
||||
::find(
|
||||
v58 + 12,
|
||||
(int)v94);
|
||||
std::string::_M_dispose(v94);
|
||||
@ -22932,34 +22963,41 @@ LABEL_23:
|
||||
{
|
||||
v60 = v91;
|
||||
std::string::basic_string(v100, "wx:for-item");
|
||||
// cur->offset_48["wx:for-item"]
|
||||
v22 = std::map<std::string,WXML::DOMLib::Token>::operator[](v89 + 12, v100);
|
||||
v101 = "wx:for-item";
|
||||
WXML::DOMLib::Token::Token((int)v102, (WXML::DOMLib::Token *)v22, v36);
|
||||
std::_Rb_tree<std::string,std::pair<std::string const,WXML::DOMLib::Token>,std::_Select1st<std::pair<std::string const,WXML::DOMLib::Token>>,std::less<std::string>,std::allocator<std::pair<std::string const,WXML::DOMLib::Token>>>::_M_emplace_unique<std::pair<char const*,WXML::DOMLib::Token>>(
|
||||
std::_Rb_tree<std::string,std::pair<std::string const,WXML::DOMLib::Token>,std::_Select1st<std::pair<std::string const,WXML::DOMLib::Token>>,std::less<std::string>,std::allocator<std::pair<std::string const,WXML::DOMLib::Token>>>
|
||||
::_M_emplace_unique<std::pair<char const*,WXML::DOMLib::Token>>(
|
||||
v60 + 12,
|
||||
(char **)&v101);
|
||||
(char **)&v101); // "wx:for-item"
|
||||
WXML::DOMLib::Token::~Token((int)v102);
|
||||
std::string::_M_dispose(v100);
|
||||
v61 = v89 + 12;
|
||||
v61 = v89 + 12; // cur->offset_48
|
||||
std::string::basic_string(v95, "wx:for-item");
|
||||
std::map<std::string,WXML::DOMLib::Token>::erase(v61, (int)v95);
|
||||
std::string::_M_dispose(v95);
|
||||
}
|
||||
v62 = v89;
|
||||
Blockh = v89 + 13;
|
||||
|
||||
//////////////////////////////////////"wx:for-index"
|
||||
v62 = v89; // cur
|
||||
Blockh = v89 + 13; // cur->offset_48.end()
|
||||
std::string::basic_string((void **)&v96, "wx:for-index");
|
||||
v63 = std::_Rb_tree<std::string,std::pair<std::string const,WXML::DOMLib::Token>,std::_Select1st<std::pair<std::string const,WXML::DOMLib::Token>>,std::less<std::string>,std::allocator<std::pair<std::string const,WXML::DOMLib::Token>>>::find(
|
||||
v62 + 12,
|
||||
(int)&v96);
|
||||
v63 = std::_Rb_tree<std::string,std::pair<std::string const,WXML::DOMLib::Token>,std::_Select1st<std::pair<std::string const,WXML::DOMLib::Token>>,std::less<std::string>,std::allocator<std::pair<std::string const,WXML::DOMLib::Token>>>
|
||||
::find(
|
||||
v62 + 12, // cur->offset_48
|
||||
(int)&v96); // "wx:for-index"
|
||||
std::string::_M_dispose((void **)&v96);
|
||||
if ( v63 != Blockh )
|
||||
{
|
||||
v64 = v91;
|
||||
std::string::basic_string(v100, "wx:for-index");
|
||||
// cur->offset_48
|
||||
v23 = std::map<std::string,WXML::DOMLib::Token>::operator[](v89 + 12, v100);
|
||||
v101 = "wx:for-index";
|
||||
WXML::DOMLib::Token::Token((int)v102, (WXML::DOMLib::Token *)v23, v36);
|
||||
std::_Rb_tree<std::string,std::pair<std::string const,WXML::DOMLib::Token>,std::_Select1st<std::pair<std::string const,WXML::DOMLib::Token>>,std::less<std::string>,std::allocator<std::pair<std::string const,WXML::DOMLib::Token>>>::_M_emplace_unique<std::pair<char const*,WXML::DOMLib::Token>>(
|
||||
std::_Rb_tree<std::string,std::pair<std::string const,WXML::DOMLib::Token>,std::_Select1st<std::pair<std::string const,WXML::DOMLib::Token>>,std::less<std::string>,std::allocator<std::pair<std::string const,WXML::DOMLib::Token>>>
|
||||
::_M_emplace_unique<std::pair<char const*,WXML::DOMLib::Token>>(
|
||||
v64 + 12,
|
||||
(char **)&v101);
|
||||
WXML::DOMLib::Token::~Token((int)v102);
|
||||
@ -22969,7 +23007,9 @@ LABEL_23:
|
||||
std::map<std::string,WXML::DOMLib::Token>::erase(v65, (int)&v98);
|
||||
std::string::_M_dispose((void **)&v98);
|
||||
}
|
||||
v66 = v89;
|
||||
|
||||
////////////////////////////////////////"wx:key"
|
||||
v66 = v89; // cur
|
||||
Blocki = v89 + 13;
|
||||
std::string::basic_string(v100, "wx:key");
|
||||
v67 = std::_Rb_tree<std::string,std::pair<std::string const,WXML::DOMLib::Token>,std::_Select1st<std::pair<std::string const,WXML::DOMLib::Token>>,std::less<std::string>,std::allocator<std::pair<std::string const,WXML::DOMLib::Token>>>::find(
|
||||
@ -22984,8 +23024,8 @@ LABEL_23:
|
||||
v101 = "wx:key";
|
||||
WXML::DOMLib::Token::Token((int)v102, (WXML::DOMLib::Token *)v24, v36);
|
||||
std::_Rb_tree<std::string,std::pair<std::string const,WXML::DOMLib::Token>,std::_Select1st<std::pair<std::string const,WXML::DOMLib::Token>>,std::less<std::string>,std::allocator<std::pair<std::string const,WXML::DOMLib::Token>>>::_M_emplace_unique<std::pair<char const*,WXML::DOMLib::Token>>(
|
||||
v68 + 12,
|
||||
(char **)&v101);
|
||||
v68 + 12, // v91->offset_48
|
||||
(char **)&v101); // "wx:key"
|
||||
WXML::DOMLib::Token::~Token((int)v102);
|
||||
std::string::_M_dispose(v100);
|
||||
v69 = v89 + 12;
|
||||
@ -22993,7 +23033,9 @@ LABEL_23:
|
||||
std::map<std::string,WXML::DOMLib::Token>::erase(v69, (int)&v101);
|
||||
std::string::_M_dispose((void **)&v101);
|
||||
}
|
||||
// Strd = (char *)(8 * j);
|
||||
v25 = (volatile signed __int32 **)&Strd[*(_DWORD *)(a1 + 72) + 4];
|
||||
// cur->offset_16
|
||||
*(v25 - 1) = (volatile signed __int32 *)v91;
|
||||
std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(v25, (int)v92);
|
||||
v34 = v26;
|
||||
@ -23005,17 +23047,20 @@ LABEL_23:
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// RewriteTree - 25
|
||||
for ( Stre = 0; ; ++Stre )
|
||||
{
|
||||
v27 = *(_DWORD *)(a1 + 72);
|
||||
if ( (*(_DWORD *)(a1 + 76) - v27) >> 3 <= (unsigned int)Stre )
|
||||
break;
|
||||
v79 = 8 * (_DWORD)Stre;
|
||||
v70 = *(_DWORD **)(v27 + 8 * (_DWORD)Stre);
|
||||
v79 = 8 * (_DWORD)Stre; // index offset
|
||||
v70 = *(_DWORD **)(v27 + 8 * (_DWORD)Stre); // cur
|
||||
std::string::basic_string((void **)&v101, "wx:scope-data");
|
||||
v28 = (char *)std::_Rb_tree<std::string,std::pair<std::string const,WXML::DOMLib::Token>,std::_Select1st<std::pair<std::string const,WXML::DOMLib::Token>>,std::less<std::string>,std::allocator<std::pair<std::string const,WXML::DOMLib::Token>>>::find(
|
||||
v70 + 12,
|
||||
(int)&v101);
|
||||
v28 = (char *)std::_Rb_tree<std::string,std::pair<std::string const,WXML::DOMLib::Token>,std::_Select1st<std::pair<std::string const,WXML::DOMLib::Token>>,std::less<std::string>,std::allocator<std::pair<std::string const,WXML::DOMLib::Token>>>
|
||||
::find(
|
||||
v70 + 12, // cur->offset_48
|
||||
(int)&v101); // "wx:scope-data"
|
||||
v34 = v29;
|
||||
Blockj = v28;
|
||||
std::string::_M_dispose((void **)&v101);
|
||||
@ -23023,22 +23068,26 @@ LABEL_23:
|
||||
{
|
||||
std::__shared_ptr<WXML::DOMLib::WXMLDom,(__gnu_cxx::_Lock_policy)2>::__shared_ptr(
|
||||
&v96,
|
||||
(_DWORD *)(*(_DWORD *)(a1 + 72) + v79));
|
||||
(_DWORD *)(*(_DWORD *)(a1 + 72) + v79)); // cur
|
||||
v71 = operator new(0x128u);
|
||||
WXML::DOMLib::WXMLDom::WXMLDom((int)v71);
|
||||
zcc::shared_ptr<WXML::DOMLib::WXMLDom>::shared_ptr(v71);
|
||||
std::string::operator=(v98, "wx-scope");
|
||||
// cur->offset_96
|
||||
// int *v98
|
||||
std::string::_M_assign((int)(v98 + 6), *(_DWORD *)(*(_DWORD *)(a1 + 72) + 8 * (_DWORD)Stre) + 24);
|
||||
WXML::DOMLib::Token::operator=((int)(v98 + 21), (int)(v96 + 21));
|
||||
// 18 * 4 = 72
|
||||
std::vector<zcc::shared_ptr<WXML::DOMLib::WXMLDom>>::push_back(v98 + 18, &v96);
|
||||
v72 = v98;
|
||||
std::string::basic_string(v100, "wx:scope-data");
|
||||
v30 = std::map<std::string,WXML::DOMLib::Token>::operator[](v96 + 12, v100);
|
||||
v101 = "wx:scope-data";
|
||||
WXML::DOMLib::Token::Token((int)v102, (WXML::DOMLib::Token *)v30, v36);
|
||||
std::_Rb_tree<std::string,std::pair<std::string const,WXML::DOMLib::Token>,std::_Select1st<std::pair<std::string const,WXML::DOMLib::Token>>,std::less<std::string>,std::allocator<std::pair<std::string const,WXML::DOMLib::Token>>>::_M_emplace_unique<std::pair<char const*,WXML::DOMLib::Token>>(
|
||||
std::_Rb_tree<std::string,std::pair<std::string const,WXML::DOMLib::Token>,std::_Select1st<std::pair<std::string const,WXML::DOMLib::Token>>,std::less<std::string>,std::allocator<std::pair<std::string const,WXML::DOMLib::Token>>>
|
||||
::_M_emplace_unique<std::pair<char const*,WXML::DOMLib::Token>>(
|
||||
v72 + 12,
|
||||
(char **)&v101);
|
||||
(char **)&v101);// "wx:scope-data"
|
||||
WXML::DOMLib::Token::~Token((int)v102);
|
||||
std::string::_M_dispose(v100);
|
||||
v73 = v96 + 12;
|
||||
@ -23053,6 +23102,8 @@ LABEL_23:
|
||||
std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v97);
|
||||
}
|
||||
}
|
||||
|
||||
// RewriteTree - 30
|
||||
for ( Strf = 0; (*(_DWORD *)(a1 + 76) - *(_DWORD *)(a1 + 72)) >> 3 > (unsigned int)Strf; ++Strf )
|
||||
WXML::DOMLib::WXMLDom::RewriteTree((WXML::DOMLib::WXMLDom *)v34);
|
||||
return 0;
|
||||
@ -24626,20 +24677,20 @@ LABEL_69:
|
||||
v275 = (std::ostream::sentry *)(this + 52);
|
||||
if ( (_DWORD *)(this + 52) == std::_Rb_tree<std::string,std::pair<std::string const,WXML::DOMLib::Token>,std::_Select1st<std::pair<std::string const,WXML::DOMLib::Token>>,std::less<std::string>,std::allocator<std::pair<std::string const,WXML::DOMLib::Token>>>
|
||||
::find(
|
||||
(_DWORD *)(this + 48),
|
||||
(int)v312) )
|
||||
(_DWORD *)(this + 48), // this->offset_48
|
||||
(int)v312) ) // "items"
|
||||
std::string::operator=((unsigned int *)v312, "wx:for-items");
|
||||
std::string::basic_string(v313, "index"); // target2
|
||||
if ( v275 == (std::ostream::sentry *)std::_Rb_tree<std::string,std::pair<std::string const,WXML::DOMLib::Token>,std::_Select1st<std::pair<std::string const,WXML::DOMLib::Token>>,std::less<std::string>,std::allocator<std::pair<std::string const,WXML::DOMLib::Token>>>
|
||||
::find(
|
||||
v295,
|
||||
(int)v313) )
|
||||
v295, // this->offset_48
|
||||
(int)v313) ) // "index"
|
||||
std::string::operator=((unsigned int *)v313, "wx:for-index");
|
||||
std::string::basic_string(v314, "item"); // target3
|
||||
if ( v275 == (std::ostream::sentry *)std::_Rb_tree<std::string,std::pair<std::string const,WXML::DOMLib::Token>,std::_Select1st<std::pair<std::string const,WXML::DOMLib::Token>>,std::less<std::string>,std::allocator<std::pair<std::string const,WXML::DOMLib::Token>>>
|
||||
::find(
|
||||
v295,
|
||||
(int)v314) )
|
||||
v295, // this->offset_48
|
||||
(int)v314) ) // "item"
|
||||
std::string::operator=((unsigned int *)v314, "wx:for-item");
|
||||
std::string::basic_string(v315, "wx:key");
|
||||
v316[0] = &v317;
|
||||
@ -24670,10 +24721,12 @@ LABEL_69:
|
||||
v295, // this + 48
|
||||
(int)v313) ) // target2
|
||||
{
|
||||
// target2_1
|
||||
std::string::operator=((unsigned int *)&v318, "index");
|
||||
}
|
||||
else
|
||||
{
|
||||
// this->offset_48[v313]
|
||||
v32 = std::map<std::string,WXML::DOMLib::Token>::operator[](v295, (int)v313);
|
||||
v33 = WXML::DOMLib::Token::ToAttrContent[abi:cxx11]((int)v32);
|
||||
std::string::_M_assign((int)&v318, v33);
|
||||
@ -24683,10 +24736,12 @@ LABEL_69:
|
||||
v295, // this + 48
|
||||
(int)v314) ) // target3
|
||||
{
|
||||
// target3_1
|
||||
std::string::operator=((unsigned int *)&v321, "item");
|
||||
}
|
||||
else
|
||||
{
|
||||
// this->offset_48[v314]
|
||||
v34 = std::map<std::string,WXML::DOMLib::Token>::operator[](v295, (int)v314);
|
||||
v35 = WXML::DOMLib::Token::ToAttrContent[abi:cxx11]((int)v34);
|
||||
std::string::_M_assign((int)&v321, v35);
|
||||
@ -24713,8 +24768,8 @@ LABEL_69:
|
||||
|
||||
if ( v275 != (std::ostream::sentry *)std::_Rb_tree<std::string,std::pair<std::string const,WXML::DOMLib::Token>,std::_Select1st<std::pair<std::string const,WXML::DOMLib::Token>>,std::less<std::string>,std::allocator<std::pair<std::string const,WXML::DOMLib::Token>>>
|
||||
::find(
|
||||
v295,
|
||||
(int)v315)
|
||||
v295, // this->offset_48
|
||||
(int)v315) // "wx:key"
|
||||
&& *((_DWORD *)std::map<std::string,WXML::DOMLib::Token>::operator[](v295, (int)v315) + 14) == -3
|
||||
&& (a14 & 1) == 0 )
|
||||
{
|
||||
@ -24748,8 +24803,8 @@ LABEL_69:
|
||||
v334 = 0;
|
||||
v335[0] = 0;
|
||||
WXML::NameAllocator::GetNextName(a7, (int)&v333);
|
||||
std::string::basic_string((void **)v347, (char *)&byte_5537CA);
|
||||
std::string::basic_string((void **)&Str, (char *)&byte_5537CA);
|
||||
std::string::basic_string((void **)v347, (char *)&byte_5537CA); // "\0"
|
||||
std::string::basic_string((void **)&Str, (char *)&byte_5537CA); // "\0"
|
||||
WXML::DOMLib::WXMLDom::RenderMeAsFunction(
|
||||
a2,
|
||||
a3,
|
||||
@ -24802,8 +24857,8 @@ LABEL_69:
|
||||
goto LABEL_57;
|
||||
if ( v275 == (std::ostream::sentry *)std::_Rb_tree<std::string,std::pair<std::string const,WXML::DOMLib::Token>,std::_Select1st<std::pair<std::string const,WXML::DOMLib::Token>>,std::less<std::string>,std::allocator<std::pair<std::string const,WXML::DOMLib::Token>>>
|
||||
::find(
|
||||
v295,
|
||||
(int)v315) )
|
||||
v295, // this->offset_48
|
||||
(int)v315) ) // "wx:key"
|
||||
{
|
||||
Str = v346;
|
||||
v345 = 0;
|
||||
@ -24824,9 +24879,11 @@ LABEL_69:
|
||||
std::string::_M_dispose((void **)v347);
|
||||
std::string::_M_dispose((void **)&Str);
|
||||
}
|
||||
v45 = (std::ostream::sentry *)std::_Rb_tree<std::string,std::pair<std::string const,WXML::DOMLib::Token>,std::_Select1st<std::pair<std::string const,WXML::DOMLib::Token>>,std::less<std::string>,std::allocator<std::pair<std::string const,WXML::DOMLib::Token>>>::find(
|
||||
v295,
|
||||
(int)v315);
|
||||
|
||||
v45 = (std::ostream::sentry *)std::_Rb_tree<std::string,std::pair<std::string const,WXML::DOMLib::Token>,std::_Select1st<std::pair<std::string const,WXML::DOMLib::Token>>,std::less<std::string>,std::allocator<std::pair<std::string const,WXML::DOMLib::Token>>>
|
||||
::find(
|
||||
v295, // this->offset_48
|
||||
(int)v315); // "wx:key"
|
||||
if ( v45 == v275 )
|
||||
goto LABEL_57;
|
||||
v46 = WXML::DOMLib::Token::ToAttrContent[abi:cxx11]((int)v45 + 40);
|
||||
@ -24834,7 +24891,7 @@ LABEL_69:
|
||||
v339 = (int)v341;
|
||||
v340 = 0;
|
||||
LOBYTE(v341[0]) = 0;
|
||||
v47 = std::string::find(&v336, 46, 0);
|
||||
v47 = std::string::find(&v336, '.'/*46*/, 0);
|
||||
v276 = (std::ostream::sentry *)v47;
|
||||
if ( v47 != (char *)-1 )
|
||||
{
|
||||
@ -24863,7 +24920,7 @@ LABEL_69:
|
||||
{
|
||||
if ( Str1 == 1 || WXML::DOMLib::Token::IsValidVariableName((char **)&v339) )
|
||||
goto LABEL_181;
|
||||
v48 = std::string::find(&v339, 46, 0);
|
||||
v48 = std::string::find(&v339, '.'/*46*/, 0);
|
||||
v277 = (std::ostream::sentry *)v48;
|
||||
if ( v48 != (char *)-1 )
|
||||
{
|
||||
@ -24881,7 +24938,7 @@ LABEL_69:
|
||||
std::string::substr(v347, &v339, (unsigned int)v277 + 1, 0xFFFFFFFF);
|
||||
std::string::operator=((unsigned __int8 **)&v339, (int)v347);
|
||||
std::string::_M_dispose((void **)v347);
|
||||
LABEL_181:
|
||||
LABEL_181:
|
||||
v289 = std::operator<<<std::char_traits<char>>((std::ostream::sentry *)(a6 + 8), "_wp('");
|
||||
WXML::Rewrite::ToStringCode((int)v342, a2);
|
||||
v223 = std::operator<<<char>(v289, v342);
|
||||
@ -24904,7 +24961,7 @@ LABEL_181:
|
||||
std::string::_M_dispose((void **)v347);
|
||||
std::string::_M_dispose((void **)&Str);
|
||||
p_Str = (void **)v342;
|
||||
LABEL_191:
|
||||
LABEL_191:
|
||||
std::string::_M_dispose(p_Str);
|
||||
goto LABEL_56;
|
||||
}
|
||||
@ -24917,7 +24974,7 @@ LABEL_191:
|
||||
{
|
||||
if ( std::operator==<char>((int)&v336, "0") )
|
||||
goto LABEL_56;
|
||||
if ( *(_BYTE *)v336 != 48 )
|
||||
if ( *(_BYTE *)v336 != '0'/*48*/ )
|
||||
{
|
||||
for ( i = 0; v337 != i; ++i )
|
||||
{
|
||||
@ -24927,6 +24984,24 @@ LABEL_191:
|
||||
goto LABEL_56;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
int this,
|
||||
int *a2,
|
||||
int *a3,
|
||||
int a4,
|
||||
int *a5,
|
||||
int a6,
|
||||
int *a7,
|
||||
int *a8,
|
||||
int *a9,
|
||||
int *a10,
|
||||
int *a11,
|
||||
char a12,
|
||||
unsigned __int8 a13,
|
||||
int a14,
|
||||
int a15)
|
||||
*/
|
||||
LABEL_189:
|
||||
if ( !std::operator==<char>((int)&v336, "*this") )
|
||||
{
|
||||
@ -24946,7 +25021,7 @@ LABEL_191:
|
||||
std::operator<<<std::char_traits<char>>(v239, a12);
|
||||
std::string::_M_dispose((void **)v347);
|
||||
p_Str = (void **)&Str;
|
||||
goto LABEL_191;
|
||||
goto LABEL_191; // LABEL_56
|
||||
}
|
||||
}
|
||||
LABEL_56:
|
||||
@ -25028,7 +25103,7 @@ LABEL_57:
|
||||
Str1a = (char *)(this + 52);
|
||||
if ( std::operator==<char>(this, "include") )
|
||||
{
|
||||
std::string::basic_string((void **)v347, (char *)off_5539C8);
|
||||
std::string::basic_string((void **)v347, (char *)off_5539C8); // "src"
|
||||
v279 = (std::ostream::sentry *)std::_Rb_tree<std::string,std::pair<std::string const,WXML::DOMLib::Token>,std::_Select1st<std::pair<std::string const,WXML::DOMLib::Token>>,std::less<std::string>,std::allocator<std::pair<std::string const,WXML::DOMLib::Token>>>
|
||||
::find(
|
||||
v296,
|
||||
@ -25037,17 +25112,17 @@ LABEL_57:
|
||||
// == end
|
||||
if ( v279 == (std::ostream::sentry *)Str1a )
|
||||
goto LABEL_169;
|
||||
std::string::basic_string((void **)v347, (char *)off_5539C8);
|
||||
std::string::basic_string((void **)v347, (char *)off_5539C8); // "src"
|
||||
v280 = (std::ostream::sentry *)*((_DWORD *)std::map<std::string,WXML::DOMLib::Token>::operator[](v296, v347) + 14);
|
||||
std::string::_M_dispose((void **)v347);
|
||||
if ( v280 == (std::ostream::sentry *)-3 )
|
||||
{
|
||||
v251 = __cxa_allocate_exception(0x18u);
|
||||
std::string::basic_string((void **)&Str, (char *)off_5539C8);
|
||||
std::string::basic_string((void **)&Str, (char *)off_5539C8); // "src"
|
||||
// v296 this.offset_48
|
||||
lpuexcptd = (int *)(std::map<std::string,WXML::DOMLib::Token>::operator[](v296, &Str) + 60);
|
||||
std::string::basic_string((void **)v347, (char *)off_5539C8);
|
||||
std::string::basic_string((void **)v342, (char *)off_5539C8);
|
||||
std::string::basic_string((void **)v347, (char *)off_5539C8); // "src"
|
||||
std::string::basic_string((void **)v342, (char *)off_5539C8); // "src"
|
||||
v73 = std::map<std::string,WXML::DOMLib::Token>::operator[](v296, v342);
|
||||
// v296["src"]
|
||||
WXML::DOMLib::WXMLDom::Error((int)v251, a2, (int)v73, v347, lpuexcptd);
|
||||
@ -27129,10 +27204,12 @@ int __thiscall WXML::DOMLib::Machine::Feed(
|
||||
|
||||
lpuexcpt = this;
|
||||
LOBYTE(v46) = a2;
|
||||
if ( a2 == 10 )
|
||||
if ( a2 == '\n'/*10*/ )
|
||||
{
|
||||
v6 = lpuexcpt;
|
||||
// this->offset_8(lineCount)
|
||||
++*((_DWORD *)lpuexcpt + 2);
|
||||
// this->offset_12(lineLength)
|
||||
*((_DWORD *)v6 + 3) = 0;
|
||||
}
|
||||
// v44 喂入的字符
|
||||
@ -27188,6 +27265,7 @@ LABEL_12:
|
||||
v15 = lpuexcpt;
|
||||
v16 = _bittest(&v46, 0x15u);
|
||||
// v46 从TT中取出的
|
||||
// this->offset_24
|
||||
*((_DWORD *)lpuexcpt + 6) = (unsigned __int16)v46;
|
||||
if ( v16 ) // if(_bittest(&v46, 0x15u))
|
||||
{
|
||||
@ -27256,8 +27334,8 @@ LABEL_12:
|
||||
// v46 从TT中取出的
|
||||
if ( _bittest(&v46, 0x11u) )
|
||||
{
|
||||
v22 = *(_DWORD *)lpuexcpt; // offset_0
|
||||
v23 = *((_DWORD *)lpuexcpt + 1); // offset_4
|
||||
v22 = *(_DWORD *)lpuexcpt; // this->offset_0
|
||||
v23 = *((_DWORD *)lpuexcpt + 1); // this->offset_4
|
||||
// offset_1 < offset_0
|
||||
if ( v23 < *(_DWORD *)lpuexcpt )
|
||||
{
|
||||
@ -27272,18 +27350,17 @@ LABEL_12:
|
||||
v25 = *((_DWORD *)lpuexcpt + 4);
|
||||
v67[0] = 0;
|
||||
v58 = 0;
|
||||
// v51 -> v49.offset_8
|
||||
// v51 -> v49.offset_8 = this.offset_16
|
||||
v51 = v25;
|
||||
v59[0] = 0;
|
||||
// this.offset_20
|
||||
v26 = *((_DWORD *)lpuexcpt + 5);
|
||||
v63[0] = 0;
|
||||
v62 = 0;
|
||||
// v52 -> v49.offset_12
|
||||
// v52 -> v49.offset_12 = this.offset_20
|
||||
v52 = v26;
|
||||
v66 = 0;
|
||||
// v54 = this.offset_0(fileLength) - this.offset_4
|
||||
// v54 -> v49.offset_20
|
||||
// v54 -> v49.offset_20 = this.offset_0(fileLength) - this.offset_4
|
||||
v54 = v22 - v23;
|
||||
v27 = lpuexcpt;
|
||||
// v56 -> v49.offset_28
|
||||
@ -27299,7 +27376,7 @@ LABEL_12:
|
||||
v64 = 0;
|
||||
// v45 offset_24
|
||||
v29 = WXML::DOMLib::Machine::STT[v45];
|
||||
// v53 -> v49.offset_16
|
||||
// v53 -> v49.offset_16 = this->offset_4 修改之前的
|
||||
v53 = v23;
|
||||
v60 = -1;
|
||||
// v55 -> v49.offset_24
|
||||
@ -27343,11 +27420,11 @@ LABEL_12:
|
||||
v52 = v36;
|
||||
// v37 = this.offset_4
|
||||
v37 = *((_DWORD *)v31 + 1);
|
||||
// this.offset_4 = this.offset_0 + 1 = this->fileLength
|
||||
// this.offset_4 = this.offset_0 + 1 = this->fileLength 加一之后的值
|
||||
*((_DWORD *)v31 + 1) = v32;
|
||||
// this.offset_8(lineCount)
|
||||
v38 = *((_DWORD *)v31 + 2);
|
||||
// this.offset_20 = this.offset_12(lineLength)
|
||||
// this.offset_20 = this.offset_12(lineLength) 加一之后的值
|
||||
*((_DWORD *)v31 + 5) = v33;
|
||||
// this.offset_16 = this.offset_8(lineCount)
|
||||
*((_DWORD *)v31 + 4) = v38;
|
||||
@ -27362,7 +27439,7 @@ LABEL_12:
|
||||
v56 = 0;
|
||||
v64 = 0;
|
||||
v60 = -1;
|
||||
// token.offset_16 = this->offset_4
|
||||
// token.offset_16 = this->offset_4 修改之前的值
|
||||
v53 = v37;
|
||||
// v49.offset_20 = (this->offset_0 + 1)fileLength - this->offset_4
|
||||
v54 = v34 - v37;
|
||||
@ -27692,11 +27769,14 @@ int __thiscall WXML::EXPRLib::ExprSyntaxTree::RenderAsOps(int *this, int a2, int
|
||||
struct _Unwind_Exception *lpuexcpta; // [esp+18h] [ebp-60h]
|
||||
void *v47[8]; // [esp+58h] [ebp-20h] BYREF
|
||||
|
||||
// RenderAsOps - 0
|
||||
v36 = (std::ostream::sentry *)*this;
|
||||
v44 = (WXML::EXPRLib::Token *)(a2 + 8);
|
||||
std::operator<<<std::char_traits<char>>((std::ostream::sentry *)(a2 + 8), (char *)&off_5542FA[2]);
|
||||
if ( *(_BYTE *)v36 == 36 )
|
||||
// v36 this
|
||||
if ( *(_BYTE *)v36 == '$'/*36*/ )
|
||||
{
|
||||
// this->offset_24
|
||||
v37 = (std::ostream::sentry *)(this + 6);
|
||||
if ( std::operator==<char>((int)this, "$VAR") )
|
||||
{
|
||||
@ -27721,22 +27801,25 @@ int __thiscall WXML::EXPRLib::ExprSyntaxTree::RenderAsOps(int *this, int a2, int
|
||||
v33 = (char *)WXML::EXPRLib::Token::GetLiteral(v37);
|
||||
std::operator<<<std::char_traits<char>>(v44, v33);
|
||||
}
|
||||
goto LABEL_46;
|
||||
goto LABEL_46; // << "]"; return
|
||||
}
|
||||
if ( *(_BYTE *)v36 == 79 && *((_BYTE *)v36 + 1) == 80 && *((_BYTE *)v36 + 2) == 95 )
|
||||
|
||||
// RenderAsOps - 5
|
||||
// v36 -> this
|
||||
if ( *(_BYTE *)v36 == 'O'/*79*/ && *((_BYTE *)v36 + 1) == 'P'/*80*/ && *((_BYTE *)v36 + 2) == '_'/*95*/ )
|
||||
{
|
||||
if ( std::operator==<char>((int)this, "OP_PATH") )
|
||||
{
|
||||
if ( this[14] - this[13] != 8 )
|
||||
goto LABEL_46;
|
||||
goto LABEL_46; // << "]"; return
|
||||
v8 = std::operator<<<std::char_traits<char>>(v44, (char *)&off_5542FA[2]);
|
||||
v9 = std::operator<<<std::char_traits<char>>(v8, WXML::EXPRLib::OPShort::GET_FROM_ENV);
|
||||
std::operator<<<std::char_traits<char>>(v9, "],");
|
||||
v35 = a4;
|
||||
v34 = a3;
|
||||
LABEL_16:
|
||||
LABEL_16:
|
||||
WXML::EXPRLib::ExprSyntaxTree::RenderAsOps(a2, v34, v35);
|
||||
goto LABEL_46;
|
||||
goto LABEL_46; // << "]"; return
|
||||
}
|
||||
if ( std::operator==<char>((int)this, "OP_LIST") )
|
||||
{
|
||||
@ -27745,7 +27828,7 @@ LABEL_16:
|
||||
std::operator<<<std::char_traits<char>>(v11, "]");
|
||||
std::operator<<<std::char_traits<char>>(v44, ",");
|
||||
if ( this[13] == this[14] )
|
||||
goto LABEL_46;
|
||||
goto LABEL_46; // << "]"; return
|
||||
goto LABEL_15;
|
||||
}
|
||||
if ( std::operator==<char>((int)this, "OP_LIST_CONCAT") )
|
||||
@ -27798,7 +27881,7 @@ LABEL_16:
|
||||
v20 = std::operator<<<std::char_traits<char>>(v44, (char *)&off_5542FA[2]);
|
||||
v21 = std::operator<<<std::char_traits<char>>(v20, WXML::EXPRLib::OPShort::EX_DICT);
|
||||
std::operator<<<std::char_traits<char>>(v21, "],");
|
||||
LABEL_15:
|
||||
LABEL_15:
|
||||
v35 = a4;
|
||||
v34 = a3;
|
||||
goto LABEL_16;
|
||||
@ -27827,6 +27910,7 @@ LABEL_15:
|
||||
}
|
||||
}
|
||||
}
|
||||
// RenderAsOps - 10
|
||||
else
|
||||
{
|
||||
v26 = std::operator<<<std::char_traits<char>>(v44, (char *)&off_5542FA[2]);
|
||||
@ -27837,6 +27921,7 @@ LABEL_15:
|
||||
v31 = std::operator<<<std::char_traits<char>>(v30, (char *)off_5542FA);
|
||||
std::operator<<<std::char_traits<char>>(v31, "]");
|
||||
std::operator<<<std::char_traits<char>>(v44, ",");
|
||||
// 13 * 4 = 52
|
||||
for ( n = 0; (this[14] - this[13]) >> 3 > (unsigned int)n; n = (std::ostream::sentry *)((char *)n + 1) )
|
||||
{
|
||||
if ( n )
|
||||
@ -27844,6 +27929,7 @@ LABEL_15:
|
||||
WXML::EXPRLib::ExprSyntaxTree::RenderAsOps(a2, a3, a4);
|
||||
}
|
||||
}
|
||||
// RenderAsOps - 15
|
||||
LABEL_46:
|
||||
std::operator<<<std::char_traits<char>>(v44, "]");
|
||||
return 0;
|
||||
|
Loading…
x
Reference in New Issue
Block a user