feat: 完成main方法的大致逻辑

This commit is contained in:
msojocs 2023-06-08 21:34:33 +08:00
parent 787b1cec2f
commit 396b2d11ad
14 changed files with 551 additions and 173 deletions

View File

@ -44,6 +44,13 @@
"stdexcept": "cpp",
"streambuf": "cpp",
"typeinfo": "cpp",
"cstring": "cpp"
"cstring": "cpp",
"map": "cpp"
},
"cmake.debugConfig": {
"args": [
"-llw",
"111,222"
]
}
}

View File

@ -7,6 +7,8 @@ enable_testing()
add_executable(wcc
src/wcc.cpp
src/wcc/usage.cpp
src/wxml/compiler.cpp
src/utils/string_utils.cpp
src/utils/file.cpp
)
add_executable(wcsc

View File

@ -1,7 +1,7 @@
#ifndef __FILE_H__
#define __FILE_H__
int readFile (std::string fileName, std::string result);
void getNextArg(std::string &line, std::string &data, char lineEndMark);
int readFile (const char* fileName, std::string &result);
std::string getNextArg(std::string &data, std::string const & lineEndMark);
#endif

View File

@ -0,0 +1,9 @@
#ifndef __STRING_UTILS_H__
#define __STRING_UTILS_H__
#include <iostream>
#include <vector>
std::string& trim(std::string &s);
void split(std::vector<std::string> result, std::string source, std::string mark);
#endif

View File

@ -2,6 +2,9 @@
#define __WXML_H_
#include <iostream>
#include <sstream>
#include <map>
#include <vector>
namespace WXML{
class Compiler
@ -11,22 +14,41 @@ namespace WXML{
public:
Compiler(/* args */);
~Compiler();
static void CompileLazy();
static void DealWxsTag();
static void GetFuncId();
static void GetVersionInfo(int a1, int *a2);
static void ParseSource();
static void RenderDefine();
static std::string CompileLazy(
std::map<std::string,std::string> const&,
std::string&,
std::map<std::string,std::string>&,
std::map<std::string,std::string>&,
std::map<std::string, std::vector<std::string>, std::less<std::string>, std::allocator<std::pair<const std::string, std::vector<std::string>>>>,
std::allocator<std::pair<const std::string, std::string>>,
std::allocator<std::string> const&,
std::map<std::string,std::string> const&,
bool,
std::string const&,
uint,
char,
std::string const&,
std::string const&,
std::string const&,
std::string const&,
std::string const&,
std::string const&,
std::string const&,
std::string const&,
std::string const&,
std::string const&,
std::string const&);
// static void DealWxsTag();
// static void GetFuncId();
static void GetVersionInfo(std::string &a1, std::string a2);
// static void ParseSource();
// static void RenderDefine();
static void WXMLHelperCode(std::string &result);
};
Compiler::Compiler(/* args */)
{
}
Compiler::~Compiler()
{
}
class DOMLib
{
@ -38,13 +60,16 @@ namespace WXML{
~DOMLib();
};
DOMLib::DOMLib(/* args */)
class Rewrite
{
}
private:
/* data */
public:
Rewrite(/* args */);
~Rewrite();
};
DOMLib::~DOMLib()
{
}
namespace EXPRLib
{
@ -57,13 +82,6 @@ namespace WXML{
~Tokenizer();
};
Tokenizer::Tokenizer(/* args */)
{
}
Tokenizer::~Tokenizer()
{
}
} // namespace EXPRLib

View File

@ -1,6 +1,7 @@
#include <iostream>
#include <cstring>
#include "../include/file.h"
#include "../include/string_utils.h"
/**
*
@ -10,17 +11,15 @@
*
* @return int 0 | -1
*/
int readFile (std::string fileName, std::string &result) {
FILE *f = NULL;
int readFile (const char* fileName, std::string &result) {
FILE *f = stdin;
char temp[1020];
char buf[1024];
unsigned int len;
result = "\0";
if (fileName.empty()) {
return -1;
}
f = fopen(fileName.c_str(), "r");
if (fileName)
f = fopen(fileName, "r");
if (!f) {
return -1;
}
@ -39,25 +38,13 @@ int readFile (std::string fileName, std::string &result) {
return 0;
}
std::string& trim(std::string &s)
{
if (s.empty())
{
return s;
}
s.erase(0,s.find_first_not_of(" "));
s.erase(s.find_last_not_of(" ") + 1);
return s;
}
/**
*
* @param line
* @param data
* @param lineEndMark \n
*/
void getNextArg(std::string &line, std::string &data, char lineEndMark) {
std::string getNextArg(std::string &data, std::string const & lineEndMark) {
int pos = data.find(lineEndMark, 0);
std::string lineData;
if (pos == -1) {
@ -69,5 +56,5 @@ void getNextArg(std::string &line, std::string &data, char lineEndMark) {
data = data.substr(pos);
}
trim(lineData);
line = lineData;
return lineData;
}

View File

@ -0,0 +1,28 @@
#include "../include/string_utils.h"
std::string& trim(std::string &s)
{
if (s.empty())
{
return s;
}
s.erase(0, s.find_first_not_of(" "));
s.erase(s.find_last_not_of(" ") + 1);
return s;
}
void split(std::vector<std::string> result, std::string source, std::string mark) {
int currentPos = 0;
for (int i = source.find(mark, 0); ; i = source.find(mark, currentPos))
{
std::string ele = source.substr(currentPos, i);
trim(ele);
result.emplace_back(ele);
if (i == -1)
break;
currentPos = i + 1;
}
}

View File

@ -1,14 +1,20 @@
#include <iostream>
#include <vector>
#include <algorithm>
#include <map>
#include "include/file.h"
#include "include/usage.h"
#include "include/string_utils.h"
#include "include/wxml.h"
using namespace std;
int main(int argc, char **argv) {
int main(int argc, const char **argv) {
printf("argc: %d\n", argc);
string gwxMark = "$gwx";
string blankStr = " ";
string splitMarkStr = " ";
bool hasConfigParam = false;
string configPathLocation;
vector<string> paramList;
@ -32,28 +38,31 @@ int main(int argc, char **argv) {
// 有配置文件,从配置文件解析
if (hasConfigParam) {
int ret = readFile(configPathLocation, configData);
int ret = readFile(configPathLocation.c_str(), configData);
string line;
if (0 == ret) {
getNextArg(line, configData, '\n');
line = getNextArg(configData, "\n");
paramList.emplace_back(line);
}
}
int mark = 0;
bool end = false;
bool isReadFromStdin = false;
bool version = false;
bool hasXCParam = false;
string xcParam;
bool hasCallbackParam = false;
string callbackParam;
bool hasCompleteCodeParam = false;
bool hasLL = false;
string xc_Or_completeCode_Param;
string outputFileName;
vector<char> temp;
vector<string> temp;
vector<string> splitedData;
map<string, string> mapData1;
map<string, string> fileData;
for (int i = 0; i < paramList.size(); i++)
{
string param = paramList[i];
if (param[0] != '-') {
// 不是参数名,跳过
temp.push_back(param[0]);
temp.push_back(param);
continue;
}
@ -80,8 +89,8 @@ int main(int argc, char **argv) {
continue;
}
if (i + 1 < paramList.size()) {
temp.push_back(param[2]);
end = true;
temp.push_back(paramList[i + 1]);
isReadFromStdin = true;
}
break;
case 'v':
@ -98,7 +107,7 @@ int main(int argc, char **argv) {
if(param[2] == 'c' && i < paramList.size()) {
hasXCParam = true;
if(paramList[i + 1][0] != '-') {
xcParam.assign(paramList[i + 1]);
xc_Or_completeCode_Param.assign(paramList[i + 1]);
i++;
}
continue;
@ -106,12 +115,11 @@ int main(int argc, char **argv) {
break;
case 'c':
// -cc: output compelete code for custom component
// -cb [callback.js...]
/* code */
if(param[2] == 'c' && i + 1 < paramList.size()) {
hasCallbackParam = true;
hasCompleteCodeParam = true;
if(paramList[i + 1][0] != '-') {
callbackParam.assign(paramList[i + 1]);
xc_Or_completeCode_Param.assign(paramList[i + 1]);
i++;
}
continue;
@ -153,9 +161,257 @@ int main(int argc, char **argv) {
default:
break;
}
// switch end
if (param == "--split") {
if (i + 1 < paramList.size()) {
splitMarkStr = paramList[i + 1];
i++;
continue;
}
}
// -cb
if(param[1] == 'c' && param[2] == 'b') {
string callbackFile = paramList[i + 1];
string callbackData;
readFile(callbackFile.c_str(), callbackData);
if (!callbackData.empty()) {
mapData1["life_cycle_callback_content"] = callbackData;
}
}
else {
if(!param.compare("--pm")) {
// 参数是--pm
if (i + 1 < paramList.size()) {
mapData1["plain_text_marker"] = paramList[i + 1];
continue;
}
}
if (param[1] == 'l' && param[2] == 'l') {
// -ll
if (param[3] != 'w') {
// 不是 -llw
if (param[3] != 'a') {
// 不是 -lla
printf("Error: expected -llw or -lla, but got %s\n", param.c_str());
return -1;
}
}
string splitMark;
if (!splitMarkStr.compare(" ")) {
// 空格
splitMark = ",";
}else {
// 不是空格
splitMark = splitMarkStr;
}
split(splitedData, paramList[i + 1], splitMark);
hasLL = true;
}
}
}
if (version) {
std::string versionInfo;
WXML::Compiler::GetVersionInfo(versionInfo, "global");
if (!outputFileName.empty()) {
FILE *f;
f = fopen(outputFileName.c_str(), "w");
fprintf(f, "%s\n", versionInfo.c_str());
fclose(f);
}
}
if (temp.empty()) {
usage(argc, argv);
return 0;
}
if (isReadFromStdin) {
string content;
readFile(0, content);
fileData[temp[0]] = content;
}
else {
// 读取文件内容
for (int i = 0; i < temp.size(); i++)
{
string content;
readFile(temp[i].c_str(), content);
fileData[temp[i]] = content;
}
}
if (true) {
string data;
data = getNextArg(xc_Or_completeCode_Param, splitMarkStr);
unsigned long long count = strtoull(&data[0], 0, 10);
for (unsigned long long i = 0; i < count; i++)
{
string data1 = getNextArg(xc_Or_completeCode_Param, splitMarkStr);
data = getNextArg(xc_Or_completeCode_Param, splitMarkStr);
unsigned long long jCount = strtoull(&data[0], 0, 10);
vector<string> list;
for (unsigned long long i = 0; i < jCount; i++)
{
string data2 = getNextArg(xc_Or_completeCode_Param, splitMarkStr);
list.push_back(data2);
vector<string>::iterator it = find(splitedData.begin(), splitedData.end(), data2);
if (it == splitedData.end()) {
splitedData.push_back(data2);
}
}
auto fileContent = fileData.lower_bound(data1);
if (fileContent == fileData.end()) {
// fileData.ins(data1, 5)
}
//TODO...
}
}
//
if (hasLL) {
for (int i = 0; i < 999; i++)
{
/* code */
}
map<string, string> outputMap;
const char off_5403C3[] = {'s','\0','e','\0'};
int compilerResult = 0;
// compilerResult = WXML::Compiler::CompileLazy(
// &v107,
// (int *)v111,
// outputMap,
// &v101,
// &v121,
// v126,
// (int *)&v92,
// &v105,
// v53,
// (int)gwxMark,
// mark,
// 10,
// &off_5403C3[2],
// off_5403C3,
// "gg",
// "e_",
// "d_",
// "p_",
// "\0",
// "boxofchocolate",
// "$gdwx",
// "f_");
// while()
// if()
if (1) {
string helperCode;
WXML::Compiler::WXMLHelperCode(helperCode);
string data = "var __wxAppData=__wxAppData||{};var __wxAppCode__=__wxAppCode__||{};var global=global||{};var __WXML_GLOBAL__="
"__WXML_GLOBAL__||{entrys:{},defines:{},modules:{},ops:[],wxs_nf_init:undefined,total_ops:0};var Component=Comp"
"onent||function(){};var definePlugin=definePlugin||function(){};var requirePlugin=requirePlugin||function(){};"
"var Behavior=Behavior||function(){};var __vd_version_info__=__vd_version_info__||{};var __GWX_GLOBAL__=__GWX_G"
"LOBAL__||{};var __globalThis=(typeof __vd_version_info__!=='undefined'&&typeof __vd_version_info__.globalThis!"
"=='undefined')?__vd_version_info__.globalThis:(typeof window!=='undefined'?window:globalThis);";
data = data + helperCode;
outputMap["__COMMON__"] = data;
}
else {
string helperCode;
WXML::Compiler::WXMLHelperCode(helperCode);
string commonData = "var __wxAppData=__wxAppData||{};var __wxAppCode__=__wxAppCode__||{};var global=global||{};var __WXML_GLOBAL__="
"__WXML_GLOBAL__||{entrys:{},defines:{},modules:{},ops:[],wxs_nf_init:undefined,total_ops:0};var Component=Comp"
"onent||function(){};var definePlugin=definePlugin||function(){};var requirePlugin=requirePlugin||function(){};"
"var Behavior=Behavior||function(){};var __vd_version_info__=__vd_version_info__||{};var __GWX_GLOBAL__=__GWX_G"
"LOBAL__||{};var __globalThis=(typeof __vd_version_info__!=='undefined'&&typeof __vd_version_info__.globalThis!"
"=='undefined')?__vd_version_info__.globalThis:(typeof window!=='undefined'?window:globalThis);";
commonData += helperCode;
commonData = commonData.append(outputMap["__COMMON__"]);
outputMap["__COMMON__"] = commonData;
}
string dep = ";var __WXML_DEP__=__WXML_DEP__||{};";
// TODO: 起始并不是0
for (string j = ""; ; )
{
/* code */
if (j == "") break;
if (j[11] != j[10]) {
stringstream dep;
dep << "__WXML_DEP__[\"";
dep << "\"]=[";
for (int k = 0; k < 10; k++)
{
/* code */
dep << "\"";
dep << "\",";
}
dep << "];";
}
}
// ???
outputMap["__COMMON__"].append("");
if (compilerResult) {
// CompileLazy出现异常
// 标准错误输出
fprintf(stderr, "Error %d: %s\n", 1, "123");
}
else {
FILE *f = stdout;
if (!outputFileName.empty())
f = fopen(outputFileName.c_str(), "w");
// DictToJsonString
// DictToJsonString
fprintf(f, " {\"generateFunctionContent\":%s,\"generateFunctionName\":%s} ", "", "");
fclose(f);
}
}
else {
const char off_5403C3[] = { 's', '\0', 'e', '\0' };
int compilerResult = 0;
// compilerResult = WXML::Compiler::Compile(
// v3,
// &v107,
// (int *)v111,
// (unsigned __int8 **)v113,
// v126,
// &v105,
// v53,
// (int *)gwxMark,
// mark,
// 10,
// off_5403C3[2], // off_5403C3[2]
// off_5403C3, // off_5403C3
// "gg", // "gg"
// "e_", // "e_"
// "d_", // "d_"
// "p_", // "p_"
// '\0', // '\0'
// "boxofchocolate", // "boxofchocolate"
// "$gdwx", // "$gdwx"
// "f_"); // "f_"
FILE *f;
if (compilerResult) {
f = stderr;
fprintf(f, "%s\n", "error...");
}else {
f = stdout;
if (!outputFileName.empty()) {
f = fopen(outputFileName.c_str(), "w");
}
fprintf(f, "%s\n", "result...");
fclose(f);
}
}
return 0;
}

View File

@ -1,7 +1,7 @@
#include <iostream>
//----- (00401726) --------------------------------------------------------
int usage(int argc, const char **argv)
int usage(int argc, const char **argv)
{
printf("Wechat WXML Compiler, version %s\n", "v0.5vv_20200413_syb_scopedata");
printf(

View File

@ -1,9 +1,18 @@
#include "../include/wxml.h"
#include "../include/define.h"
#include <iostream>
namespace WXML{
void Compiler::GetVersionInfo(int a1, int *a2) {
std::ostream& result = std::cout;
Compiler::Compiler(/* args */)
{
}
Compiler::~Compiler()
{
}
void Compiler::GetVersionInfo(std::string &a1, std::string a2) {
std::stringstream result;
result << "/*";
result << "v0.5vv_20200413_syb_scopedata";
result << "*/";
@ -14,6 +23,7 @@ namespace WXML{
result << "';";
result << a2;
result << ".__wcc_version_info__={\"customComponents\":true,\"fixZeroRpx\":true,\"propValueDeepCopy\":false};";
result.str(a1);
}
void Compiler::WXMLHelperCode(std::string &result) {
result.assign(aIfThisThisGUnd);

View File

@ -0,0 +1,14 @@
#include "../include/wxml.h"
namespace WXML {
DOMLib::DOMLib(/* args */)
{
}
DOMLib::~DOMLib()
{
}
}

View File

@ -0,0 +1,14 @@
#include "../../include/wxml.h"
namespace WXML {
namespace EXPRLib {
Tokenizer::Tokenizer(/* args */)
{
}
Tokenizer::~Tokenizer()
{
}
}
}

14
src/wxml/rewrite.cpp Normal file
View File

@ -0,0 +1,14 @@
#include "../include/wxml.h"
namespace WXML {
Rewrite::Rewrite(/* args */)
{
}
Rewrite::~Rewrite()
{
}
}

View File

@ -46,7 +46,7 @@ int main(int argc, const char **argv, const char **envp)
int v41; // edx
char v43; // [esp+1h] [ebp-38Bh]
char v44; // [esp+2h] [ebp-38Ah]
char v45; // [esp+3h] [ebp-389h]
char isReadFromStdin; // [esp+3h] [ebp-389h]
const char **innerArgv; // [esp+4h] [ebp-388h]
int innerArgc; // [esp+8h] [ebp-384h]
FILE *v48; // [esp+Ch] [ebp-380h]
@ -90,13 +90,13 @@ int main(int argc, const char **argv, const char **envp)
void **v86; // [esp+68h] [ebp-324h] BYREF
void **v87; // [esp+6Ch] [ebp-320h]
int v88; // [esp+70h] [ebp-31Ch]
_DWORD *fileList; // [esp+74h] [ebp-318h] BYREF
_DWORD *paramList; // [esp+74h] [ebp-318h] BYREF
int v90; // [esp+78h] [ebp-314h]
int v91; // [esp+7Ch] [ebp-310h]
void **v92; // [esp+80h] [ebp-30Ch] BYREF
int v93; // [esp+84h] [ebp-308h]
int v94; // [esp+88h] [ebp-304h]
char *v95; // [esp+8Ch] [ebp-300h] BYREF
char *xc_Or_completeCode_Param; // [esp+8Ch] [ebp-300h] BYREF
int v96; // [esp+90h] [ebp-2FCh]
char v97; // [esp+94h] [ebp-2F8h] BYREF
char *configPathData; // [esp+A4h] [ebp-2E8h] BYREF
@ -144,7 +144,7 @@ int main(int argc, const char **argv, const char **envp)
char *v140; // [esp+29Ch] [ebp-F0h] BYREF
int v141; // [esp+2A0h] [ebp-ECh]
int v142[4]; // [esp+2A4h] [ebp-E8h] BYREF
int configPathParamName; // [esp+2B4h] [ebp-D8h] BYREF
int tempData; // [esp+2B4h] [ebp-D8h] BYREF
int v144; // [esp+2B8h] [ebp-D4h]
char v145[4]; // [esp+2BCh] [ebp-D0h] BYREF
char v146[196]; // [esp+2C0h] [ebp-CCh] BYREF
@ -154,7 +154,7 @@ int main(int argc, const char **argv, const char **envp)
innerArgc = argc;
innerArgv = argv;
__main();
v95 = &v97;
xc_Or_completeCode_Param = &v97;
configPathData = &v100;
v86 = 0;
v87 = 0;
@ -163,7 +163,7 @@ int main(int argc, const char **argv, const char **envp)
v97 = 0;
v99 = 0;
v100 = 0;
fileList = 0;
paramList = 0;
v90 = 0;
v91 = 0;
v92 = 0;
@ -183,14 +183,14 @@ int main(int argc, const char **argv, const char **envp)
v106[4] = 0;
for ( argcIndex = 1; argcIndex < innerArgc; ++argcIndex )
{
std::string::basic_string((void **)&configPathParamName, "--config-path");
std::string::basic_string((void **)&tempData, "--config-path");
currentIndex = argcIndex;
currentArg = (char *)&innerArgv[argcIndex];
hasConfigParam = 0;
if ( !std::string::compare((int)&configPathParamName, *(char **)currentArg) )
if ( !std::string::compare((int)&tempData, *(char **)currentArg) )
// 一样
hasConfigParam = argcIndex + 1 < innerArgc;
std::string::_M_dispose((void **)&configPathParamName);
std::string::_M_dispose((void **)&tempData);
if ( hasConfigParam )
{
// 有--config-path参数下一个参数是路径跳过
@ -201,9 +201,9 @@ int main(int argc, const char **argv, const char **envp)
else
{
// 没有--config-path参数
std::string::basic_string((void **)&configPathParamName, *(char **)currentArg);
std::vector<std::string>::emplace_back<std::string>((void **)&fileList, &configPathParamName);
std::string::_M_dispose((void **)&configPathParamName);
std::string::basic_string((void **)&tempData, *(char **)currentArg);
std::vector<std::string>::emplace_back<std::string>((void **)&paramList, &tempData);
std::string::_M_dispose((void **)&tempData);
}
}
@ -217,9 +217,9 @@ int main(int argc, const char **argv, const char **envp)
while ( v138 )
{
std::string::basic_string((void **)&v140, "\n");
GetNextArg((int)&configPathParamName, &v137, (int)&v140);
std::vector<std::string>::emplace_back<std::string>((void **)&fileList, &configPathParamName);
std::string::_M_dispose((void **)&configPathParamName);
GetNextArg((int)&tempData, &v137, (int)&v140);
std::vector<std::string>::emplace_back<std::string>((void **)&paramList, &tempData);
std::string::_M_dispose((void **)&tempData);
std::string::_M_dispose((void **)&v140);
}
std::string::_M_dispose((void **)&v137);
@ -231,13 +231,13 @@ int main(int argc, const char **argv, const char **envp)
v44 = 0;
mark = 0;
v53 = 0;
v55 = -1431655765 * ((v90 - (int)fileList) >> 3);
v45 = 0;
v55 = -1431655765 * ((v90 - (int)paramList) >> 3);
isReadFromStdin = 0;
FileNamea = 0;
while ( (int)Streama < v55 )
{
v67 = 6 * (_DWORD)Streama;
v4 = &fileList[6 * (_DWORD)Streama];
v4 = &paramList[6 * (_DWORD)Streama];
v5 = (_BYTE *)*v4;
// ASCII 45 => '-'
if ( *(_BYTE *)*v4 != '-' /*45*/ )
@ -274,8 +274,8 @@ int main(int argc, const char **argv, const char **envp)
}
if ( (int)&Streama->_ptr + 1 < v55 )
{
std::vector<std::string>::push_back((int)&v86, (int)&fileList[v67 + 6]);
v45 = 1;
std::vector<std::string>::push_back((int)&v86, (int)&paramList[v67 + 6]);
isReadFromStdin = 1;
goto LABEL_84;
}
break;
@ -295,7 +295,7 @@ int main(int argc, const char **argv, const char **envp)
v53 = 1;
if ( *(_BYTE *)v89[v67 + 6] != '-'/*45*/ )
{
std::string::_M_assign((int)&v95, (int)&fileList[v67 + 6]);
std::string::_M_assign((int)&xc_Or_completeCode_Param, (int)&paramList[v67 + 6]);
v53 = 1;
Streama = (FILE *)((char *)Streama + 1);
}
@ -310,7 +310,7 @@ int main(int argc, const char **argv, const char **envp)
v53 = 0;
if ( *(_BYTE *)v89[v67 + 6] != '-'/*45*/ )
{
std::string::_M_assign((int)&v95, (int)&fileList[v67 + 6]);
std::string::_M_assign((int)&xc_Or_completeCode_Param, (int)&paramList[v67 + 6]);
v53 = 0;
Streama = (FILE *)((char *)Streama + 1);
}
@ -323,7 +323,7 @@ int main(int argc, const char **argv, const char **envp)
v8 = (FILE *)((char *)&Streama->_ptr + 1);
if ( (int)&Streama->_ptr + 1 < v55 )
{
FileNamea = (char *)fileList[v67 + 6];
FileNamea = (char *)paramList[v67 + 6];
LABEL_72:
Streama = v8;
goto LABEL_84;
@ -333,7 +333,7 @@ LABEL_72:
// gwxMark
if ( v5[2] == 'n'/*110*/ && (int)&Streama->_ptr + 1 < v55 )
{
std::string::_M_assign((int)gwxMark, (int)&fileList[v67 + 6]);
std::string::_M_assign((int)gwxMark, (int)&paramList[v67 + 6]);
v8 = (FILE *)((char *)&Streama->_ptr + 1);
goto LABEL_72;
}
@ -348,54 +348,56 @@ LABEL_72:
mark |= 0x40u;
goto LABEL_84;
}
std::string::basic_string((void **)&configPathParamName, "--split");
v51 = std::operator==<char>((int)&fileList[v67], (int)&configPathParamName);
// switch end
std::string::basic_string((void **)&tempData, "--split");
v51 = std::operator==<char>((int)&paramList[v67], (int)&tempData);
// 相等
if ( v51 )
v51 = (int)&Streama->_ptr + 1 < v55;
std::string::_M_dispose((void **)&configPathParamName);
std::string::_M_dispose((void **)&tempData);
if ( v51 )
{
Streama = (FILE *)((char *)Streama + 1);
std::string::_M_assign((int)blankStr, (int)&fileList[v67 + 6]);
std::string::_M_assign((int)blankStr, (int)&paramList[v67 + 6]);
goto LABEL_84;
}
v9 = fileList[6 * (_DWORD)Streama];
v9 = paramList[6 * (_DWORD)Streama];
if ( *(_BYTE *)(v9 + 1) == 'c'/*99*/ && *(_BYTE *)(v9 + 2) == 'b'/*98*/ )
{
LOBYTE(v142[0]) = 0;
v140 = (char *)v142;
v10 = (char *)fileList[v67 + 6];
v10 = (char *)paramList[v67 + 6];
Streama = (FILE *)((char *)Streama + 1);
mark |= 0x80u;
v141 = 0;
ReadFile(v10, (unsigned int *)&v140);
if ( v141 )
{
std::string::basic_string((void **)&configPathParamName, "life_cycle_callback_content");
v11 = std::map<std::string,std::string>::operator[](&v105, &configPathParamName);
std::string::basic_string((void **)&tempData, "life_cycle_callback_content");
v11 = std::map<std::string,std::string>::operator[](&v105, &tempData);
std::string::_M_assign((int)v11, (int)&v140);
std::string::_M_dispose((void **)&configPathParamName);
std::string::_M_dispose((void **)&tempData);
}
std::string::_M_dispose((void **)&v140);
}
else
{
if ( !std::string::compare((int)&fileList[v67], "--pm") )
if ( !std::string::compare((int)&paramList[v67], "--pm") )
{
v48 = (FILE *)((char *)&Streama->_ptr + 1);
if ( (int)&Streama->_ptr + 1 < v55 )
{
Streamk = (FILE *)&fileList[v67 + 6];
std::string::basic_string((void **)&configPathParamName, "plain_text_marker");
v12 = std::map<std::string,std::string>::operator[](&v105, &configPathParamName);
Streamk = (FILE *)&paramList[v67 + 6];
std::string::basic_string((void **)&tempData, "plain_text_marker");
v12 = std::map<std::string,std::string>::operator[](&v105, &tempData);
std::string::_M_assign((int)v12, (int)Streamk);
std::string::_M_dispose((void **)&configPathParamName);
std::string::_M_dispose((void **)&tempData);
v8 = v48;
goto LABEL_72;
}
}
v49 = fileList[6 * (_DWORD)Streama];
v49 = paramList[6 * (_DWORD)Streama];
if ( *(_BYTE *)(v49 + 1) == 'l'/*108*/ && *(_BYTE *)(v49 + 2) == 'l'/*108*/ )
{
v13 = *(_BYTE *)(v49 + 3);
@ -411,11 +413,11 @@ LABEL_72:
v51 = 1;
}
if ( !std::string::compare((int)blankStr, " ") )
std::string::basic_string((void **)&configPathParamName, ",");
std::string::basic_string((void **)&tempData, ",");
else
std::string::basic_string((char *)&configPathParamName, (int)blankStr);
std::string::basic_string((char *)&tempData, (int)blankStr);
Streama = (FILE *)((char *)Streama + 1);
Split((int)&v131, &fileList[v67 + 6], (int)&configPathParamName);
Split((int)&v131, &paramList[v67 + 6], (int)&tempData);
v15 = (void **)v131;
v16 = (char *)v92;
v131 = 0;
@ -430,19 +432,23 @@ LABEL_72:
v133 = 0;
std::vector<std::string>::~vector((void ***)&v140, v17);
std::vector<std::string>::~vector((void ***)&v131, v18);
std::string::_M_dispose((void **)&configPathParamName);
std::string::_M_dispose((void **)&tempData);
v43 = 1;
v53 = v51;
}
}
LABEL_84:
Streama = (FILE *)((char *)Streama + 1);
}
// for end
// 查看版本 有-v参数
if ( v44 )
{
std::string::basic_string((void **)&configPathParamName, "global");
WXML::Compiler::GetVersionInfo((int)&v140, &configPathParamName);
std::string::_M_dispose((void **)&configPathParamName);
std::string::basic_string((void **)&tempData, "global");
WXML::Compiler::GetVersionInfo((int)&v140, &tempData);
std::string::_M_dispose((void **)&tempData);
Streamb = ___acrt_iob_func(1u);
if ( FileNamea && *FileNamea )
Streamb = fopen(FileNamea, "w");
@ -450,6 +456,8 @@ LABEL_84:
fclose(Streamb);
std::string::_M_dispose((void **)&v140);
}
// v86 temp
if ( v86 == v87 )
{
v68 = Usage(innerArgc, innerArgv);
@ -467,34 +475,39 @@ LABEL_84:
v110[3] = (int)v110;
v110[4] = 0;
Streamc = 0;
if ( v45 )
// v86 temp
// v107 fileData
if ( isReadFromStdin )
{
configPathParamName = (int)v145;
tempData = (int)v145;
v144 = 0;
v145[0] = 0;
ReadFile(0, (unsigned int *)&configPathParamName);
ReadFile(0, (unsigned int *)&tempData);
v19 = std::map<std::string,std::string>::operator[](&v107, (int)v86);
std::string::_M_assign((int)v19, (int)&configPathParamName);
std::string::_M_dispose((void **)&configPathParamName);
std::string::_M_assign((int)v19, (int)&tempData);
std::string::_M_dispose((void **)&tempData);
// v107[v86] = tempData
}
else
{
while ( -1431655765 * (((char *)v87 - (char *)v86) >> 3) > (unsigned int)Streamc )
{
v145[0] = 0;
configPathParamName = (int)v145;
tempData = (int)v145;
v20 = (char *)v86[6 * (_DWORD)Streamc];
v144 = 0;
ReadFile(v20, (unsigned int *)&configPathParamName);
ReadFile(v20, (unsigned int *)&tempData);
v21 = std::map<std::string,std::string>::operator[](&v107, (int)&v86[6 * (_DWORD)Streamc]);
std::string::_M_assign((int)v21, (int)&configPathParamName);
std::string::_M_dispose((void **)&configPathParamName);
std::string::_M_assign((int)v21, (int)&tempData);
std::string::_M_dispose((void **)&tempData);
// v107[v86[6 * (_DWORD)Streamc]] = tempData
Streamc = (FILE *)((char *)Streamc + 1);
}
}
if ( v96 )
{
GetNextArg((int)String, (int *)&v95, (int)blankStr);
GetNextArg((int)String, (int *)&xc_Or_completeCode_Param, (int)blankStr);
// char -> unsigned long long
v52 = strtoull(String[0], 0, 10);
std::string::_M_dispose((void **)String);
v131 = 0;
@ -506,28 +519,29 @@ LABEL_84:
v140 = (char *)v142;
LOBYTE(v142[0]) = 0;
memset(String, 0, 12);
GetNextArg((int)v135, (int *)&v95, (int)blankStr);
GetNextArg((int)v135, (int *)&xc_Or_completeCode_Param, (int)blankStr);
std::string::operator=((unsigned __int8 **)&v140, (int)v135);
std::string::_M_dispose(v135);
GetNextArg((int)v136, (int *)&v95, (int)blankStr);
GetNextArg((int)v136, (int *)&xc_Or_completeCode_Param, (int)blankStr);
v50 = strtoull(v136[0], 0, 10);
std::string::_M_dispose((void **)v136);
for ( Streamd = 0; (int)Streamd < v50; Streamd = (FILE *)((char *)Streamd + 1) )
{
v144 = 0;
configPathParamName = (int)v145;
tempData = (int)v145;
v145[0] = 0;
GetNextArg((int)&v137, (int *)&v95, (int)blankStr);
std::string::operator=((unsigned __int8 **)&configPathParamName, (int)&v137);
GetNextArg((int)&v137, (int *)&xc_Or_completeCode_Param, (int)blankStr);
std::string::operator=((unsigned __int8 **)&tempData, (int)&v137);
std::string::_M_dispose((void **)&v137);
std::vector<std::string>::push_back((int)String, (int)&configPathParamName);
std::vector<std::string>::push_back((int)String, (int)&tempData);
v69 = v132;
if ( v69 == std::find<__gnu_cxx::__normal_iterator<std::string *,std::vector<std::string>>,std::string>(
v131,
v132,
(int)&configPathParamName) )
std::vector<std::string>::push_back((int)&v131, (int)&configPathParamName);
std::string::_M_dispose((void **)&configPathParamName);
(int)&tempData) )
// v131 splitedData
std::vector<std::string>::push_back((int)&v131, (int)&tempData);
std::string::_M_dispose((void **)&tempData);
}
Streame = (FILE *)std::_Rb_tree<std::string,std::pair<std::string const,std::vector<std::string>>,std::_Select1st<std::pair<std::string const,std::vector<std::string>>>,std::less<std::string>,std::allocator<std::pair<std::string const,std::vector<std::string>>>>::lower_bound(
&v109,
@ -562,10 +576,10 @@ LABEL_84:
std::vector<std::string>::~vector((void ***)String, v23);
std::string::_M_dispose((void **)&v140);
}
std::string::basic_string((void **)&configPathParamName, "ALL");
v24 = std::map<std::string,std::vector<std::string>>::operator[](&v109, &configPathParamName);
std::string::basic_string((void **)&tempData, "ALL");
v24 = std::map<std::string,std::vector<std::string>>::operator[](&v109, &tempData);
std::vector<std::string>::operator=((int)v24, &v131);
std::string::_M_dispose((void **)&configPathParamName);
std::string::_M_dispose((void **)&tempData);
std::vector<std::string>::~vector((void ***)&v131, v25);
}
v111[1] = 0;
@ -579,6 +593,8 @@ LABEL_84:
v118 = &v116;
v119 = &v116;
v120 = 0;
// 有llx参数
if ( v43 )
{
v70 = v93;
@ -586,9 +602,9 @@ LABEL_84:
{
if ( *Streamg->_ptr == 46 && Streamg->_ptr[1] == 47 )
{
std::string::substr(&configPathParamName, Streamg, 2u, 0xFFFFFFFF);
std::string::operator=((unsigned __int8 **)Streamg, (int)&configPathParamName);
std::string::_M_dispose((void **)&configPathParamName);
std::string::substr(&tempData, Streamg, 2u, 0xFFFFFFFF);
std::string::operator=((unsigned __int8 **)Streamg, (int)&tempData);
std::string::_M_dispose((void **)&tempData);
}
}
v122[0] = 0;
@ -596,7 +612,7 @@ LABEL_84:
v123 = v122;
v124 = v122;
v125 = 0;
std::string::basic_string((void **)&configPathParamName, "l_");
std::string::basic_string((void **)&tempData, "l_");
std::string::basic_string((void **)&v140, "f_");
std::string::basic_string((void **)&v137, "$gdwx");
std::string::basic_string((void **)v136, "boxofchocolate");
@ -623,16 +639,17 @@ LABEL_84:
(int)gwxMark,
mark,
10,
(int *)v127,
(int *)v128,
(int *)v129,
(int *)v130,
&v131,
(int *)String,
(int)v135,
(int)v136,
(int)&v137,
(int *)&v140);
(int *)v127, // 'e'
(int *)v128, // const char off_5403C3[] = {'s','\0','e','\0'}
(int *)v129, // "gg"
(int *)v130, // "e_"
&v131, // "d_"
(int *)String, // "p_"
(int)v135, // '\0'
(int)v136, // "boxofchocolate"
(int)&v137, // "$gdwx"
(int *)&v140 // "f_"
);
std::_Rb_tree<std::string,std::pair<std::string const,std::vector<std::string>>,std::_Select1st<std::pair<std::string const,std::vector<std::string>>>,std::less<std::string>,std::allocator<std::pair<std::string const,std::vector<std::string>>>>::~_Rb_tree((int)v126);
std::string::_M_dispose(v127);
std::string::_M_dispose(v128);
@ -644,7 +661,7 @@ LABEL_84:
std::string::_M_dispose((void **)v136);
std::string::_M_dispose((void **)&v137);
std::string::_M_dispose((void **)&v140);
std::string::_M_dispose((void **)&configPathParamName);
std::string::_M_dispose((void **)&tempData);
std::string::basic_string((void **)&v140, "__COMMON__");
v61 = v117;
Streamh = &v116;
@ -682,16 +699,18 @@ LABEL_84:
"var Behavior=Behavior||function(){};var __vd_version_info__=__vd_version_info__||{};var __GWX_GLOBAL__=__GWX_G"
"LOBAL__||{};var __globalThis=(typeof __vd_version_info__!=='undefined'&&typeof __vd_version_info__.globalThis!"
"=='undefined')?__vd_version_info__.globalThis:(typeof window!=='undefined'?window:globalThis);");
std::operator+<char>(&configPathParamName, &v137, (unsigned int *)&v140);
std::operator+<char>(&tempData, &v137, (unsigned int *)&v140);
std::string::basic_string((void **)v136, "__COMMON__");
v33 = (unsigned __int8 **)std::map<std::string,std::string>::operator[](&v115, v136);
std::string::operator=(v33, (int)&configPathParamName);
std::string::operator=(v33, (int)&tempData);
// v115["__COMMON__"] = tempData;
std::string::_M_dispose((void **)v136);
std::string::_M_dispose((void **)&configPathParamName);
std::string::_M_dispose((void **)&tempData);
std::string::_M_dispose((void **)&v137);
}
else
{
// v115 outputMap
std::string::basic_string((void **)&v140, "__COMMON__");
Streamm = (FILE *)std::map<std::string,std::string>::operator[](&v115, &v140);
WXML::Compiler::WXMLHelperCode[abi:cxx11]((void **)v136);
@ -705,18 +724,18 @@ LABEL_84:
"=='undefined')?__vd_version_info__.globalThis:(typeof window!=='undefined'?window:globalThis);");
std::operator+<char>(&v137, v135, (unsigned int *)v136);
v31 = std::string::append(&v137, (int)Streamm);
std::string::basic_string(&configPathParamName, v31);
std::string::basic_string(&tempData, v31);
std::string::basic_string((void **)String, "__COMMON__");
v32 = (unsigned __int8 **)std::map<std::string,std::string>::operator[](&v115, String);
std::string::operator=(v32, (int)&configPathParamName);
std::string::operator=(v32, (int)&tempData);
std::string::_M_dispose((void **)String);
std::string::_M_dispose((void **)&configPathParamName);
std::string::_M_dispose((void **)&tempData);
std::string::_M_dispose((void **)&v137);
std::string::_M_dispose(v135);
std::string::_M_dispose((void **)v136);
}
std::string::_M_dispose((void **)&v140);
std::basic_stringstream<char,std::char_traits<char>,std::allocator<char>>::basic_stringstream((int)&configPathParamName);
std::basic_stringstream<char,std::char_traits<char>,std::allocator<char>>::basic_stringstream((int)&tempData);
std::operator<<<std::char_traits<char>>((std::ostream::sentry *)v145, ";var __WXML_DEP__=__WXML_DEP__||{};");
for ( j = v123; ; j = (int *)std::_Rb_tree_increment((int)Streami) )
{
@ -768,12 +787,12 @@ LABEL_84:
std::string::_M_dispose((void **)&v137);
std::string::_M_dispose((void **)v136);
}
std::basic_stringstream<char,std::char_traits<char>,std::allocator<char>>::~basic_stringstream((int)&configPathParamName);
std::basic_stringstream<char,std::char_traits<char>,std::allocator<char>>::~basic_stringstream((int)&tempData);
std::_Rb_tree<std::string,std::pair<std::string const,std::vector<std::string>>,std::_Select1st<std::pair<std::string const,std::vector<std::string>>>,std::less<std::string>,std::allocator<std::pair<std::string const,std::vector<std::string>>>>::~_Rb_tree((int)&v121);
}
else
{
std::string::basic_string((void **)&configPathParamName, "l_");
std::string::basic_string((void **)&tempData, "l_");
std::string::basic_string((void **)&v140, "f_");
std::string::basic_string((void **)&v137, "$gdwx");
std::string::basic_string((void **)v136, "boxofchocolate");
@ -782,7 +801,7 @@ LABEL_84:
std::string::basic_string((void **)&v131, "d_");
std::string::basic_string(v130, "e_");
std::string::basic_string(v129, "gg");
std::string::basic_string(v128, (char *)off_5403C3);
std::string::basic_string(v128, (char *)off_5403C3); // const char off_5403C3[] = { 's', '\0', 'e', '\0' };
std::string::basic_string(v127, (char *)&off_5403C3[2]);
std::_Rb_tree<std::string,std::pair<std::string const,std::vector<std::string>>,std::_Select1st<std::pair<std::string const,std::vector<std::string>>>,std::less<std::string>,std::allocator<std::pair<std::string const,std::vector<std::string>>>>::_Rb_tree(
v126,
@ -798,16 +817,16 @@ LABEL_84:
(int *)gwxMark,
mark,
10,
(int *)v127,
(int *)v128,
(int *)v129,
(int *)v130,
&v131,
(int *)String,
(int)v135,
(int)v136,
(int)&v137,
(int *)&v140);
(int *)v127, // off_5403C3[2]
(int *)v128, // off_5403C3
(int *)v129, // "gg"
(int *)v130, // "e_"
&v131, // "d_"
(int *)String, // "p_"
(int)v135, // '\0'
(int)v136, // "boxofchocolate"
(int)&v137, // "$gdwx"
(int *)&v140); // "f_"
std::_Rb_tree<std::string,std::pair<std::string const,std::vector<std::string>>,std::_Select1st<std::pair<std::string const,std::vector<std::string>>>,std::less<std::string>,std::allocator<std::pair<std::string const,std::vector<std::string>>>>::~_Rb_tree((int)v126);
std::string::_M_dispose(v127);
std::string::_M_dispose(v128);
@ -819,7 +838,7 @@ LABEL_84:
std::string::_M_dispose((void **)v136);
std::string::_M_dispose((void **)&v137);
std::string::_M_dispose((void **)&v140);
std::string::_M_dispose((void **)&configPathParamName);
std::string::_M_dispose((void **)&tempData);
if ( v68 )
{
Streaml = (FILE *)v111[0];
@ -849,7 +868,7 @@ LABEL_153:
std::vector<std::string>::~vector(&v92, v39);
std::vector<std::string>::~vector((void ***)&v89, v40);
std::string::_M_dispose((void **)&configPathData);
std::string::_M_dispose((void **)&v95);
std::string::_M_dispose((void **)&xc_Or_completeCode_Param);
std::vector<std::string>::~vector(&v86, v41);
return v68;
}