wx-compiler/src/wxml/rpx.cpp
2023-09-23 12:04:56 +08:00

186 lines
9.2 KiB
C++

#include "../include/wxml.h"
namespace WXML
{
namespace RPX
{
// 0x0051FE20
int id_nextPos[0x850u];
uint8_t id_accept[] = {0x0,0x1,0x24,0x48,0x65,0x61,0x64,0x55,0x52,0x4c,0x24,0x20,0x24,0x49,0x64,0x24,0x20,0x30,0x5f,0x5f,0x66,0x69,0x6c,0x65,0x5f,0x5f,0x0,0x0,0x0,0x0,0x24,0x48,0x65,0x61,0x64,0x55,0x52,0x4c,0x24,0x20,0x24,0x49,0x64,0x24,0x20,0x30,0x5f,0x5f,0x66,0x69,0x6c,0x65,0x5f,0x5f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x24,0x48,0x65,0x61,0x64,0x55,0x52,0x4c,0x24,0x20,0x24,0x49,0x64,0x24,0x20,0x30,0x5f,0x5f,0x66,0x69,0x6c,0x65,0x5f,0x5f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x54,0xf6,0x50,0x0,0x5c,0xf6,0x50,0x0,0x3,0xf6,0x50,0x0,0xa,0xf6,0x50,0x0,0x15,0xf6,0x50,0x0,0x28,0xf6,0x50,0x0,0x65,0xf6,0x50,0x0,0x6f,0xf6,0x50,0x0,0x7e,0xf6,0x50,0x0,0x8a,0xf6,0x50,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0};
Table id;
// 0x0051E520
int str_nextPos[0x18F0u];
uint8_t str_accept[] = {0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x1,0x24,0x48,0x65,0x61,0x64,0x55,0x52,0x4c,0x24,0x20,0x24,0x49,0x64,0x24,0x20,0x30,0x5f,0x5f,0x66,0x69,0x6c,0x65,0x5f,0x5f,0x0,0x0,0x0,0x0,0x24,0x48,0x65,0x61,0x64,0x55,0x52,0x4c,0x24,0x20,0x24,0x49,0x64,0x24,0x20,0x30,0x5f,0x5f,0x66,0x69,0x6c,0x65,0x5f,0x5f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x24,0x48,0x65,0x61,0x64,0x55,0x52,0x4c,0x24,0x20,0x24,0x49,0x64,0x24,0x20,0x30,0x5f,0x5f,0x66,0x69,0x6c,0x65,0x5f,0x5f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x54,0xf6,0x50,0x0,0x5c,0xf6,0x50,0x0,0x3,0xf6,0x50,0x0,0xa,0xf6,0x50,0x0,0x15,0xf6,0x50,0x0,0x28,0xf6,0x50,0x0,0x65,0xf6,0x50,0x0,0x6f,0xf6,0x50,0x0,0x7e,0xf6,0x50,0x0,0x8a,0xf6,0x50,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0};
Table str;
// 0x0051D040
int num_nextPos[0x14C8u];
uint8_t num_accept[] = {0x0,0x0,0x1,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x1,0x24,0x48,0x65,0x61,0x64,0x55,0x52,0x4c,0x24,0x20,0x24,0x49,0x64,0x24,0x20,0x30,0x5f,0x5f,0x66,0x69,0x6c,0x65,0x5f,0x5f,0x0,0x0,0x0,0x0,0x24,0x48,0x65,0x61,0x64,0x55,0x52,0x4c,0x24,0x20,0x24,0x49,0x64,0x24,0x20,0x30,0x5f,0x5f,0x66,0x69,0x6c,0x65,0x5f,0x5f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x24,0x48,0x65,0x61,0x64,0x55,0x52,0x4c,0x24,0x20,0x24,0x49,0x64,0x24,0x20,0x30,0x5f,0x5f,0x66,0x69,0x6c,0x65,0x5f,0x5f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x54,0xf6,0x50,0x0,0x5c,0xf6,0x50,0x0,0x3,0xf6,0x50,0x0,0xa,0xf6,0x50,0x0,0x15,0xf6,0x50,0x0,0x28,0xf6,0x50,0x0,0x65,0xf6,0x50,0x0,0x6f,0xf6,0x50,0x0,0x7e,0xf6,0x50,0x0,0x8a,0xf6,0x50,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0};
Table num;
/**
*
*/
int accept(int *a1, uint8_t a2[266], int &a3, char const *a4)
{
int v4 = 0;
int v7 = 0;
int i;
for (i = a3; i > 0; i--)
{
v7 = v4;
v4 = a1[266 * v4 + *a4]; // 266 * 4 = 0x428
if (v4 == -1)
{
break;
}
a4++;
}
if (a2[v7])
{
a3 = i;
return 0;
}
return -1;
}
int acceptID(char const *a1, int &a2)
{
if (!id.inited)
{
id.nextPos = id_nextPos;
id.canAccept = id_accept;
// 0x0051FE20
memset(id.nextPos, 255, 0x850u);
int v2 = 0;
id.nextPos[(0x51FF9C - 0x0051FE20) / 4] = 1;
id.nextPos[(0x5203C4 - 0x0051FE20) / 4] = 1;
do
{
id.nextPos[(0x51FFA4 - 0x0051FE20) / 4 + v2] = 1;
id.nextPos[(0x51FF24 - 0x0051FE20) / 4 + v2] = 1;
id.nextPos[(0x5203CC - 0x0051FE20) / 4 + v2] = 1;
id.nextPos[(0x52034C - 0x0051FE20) / 4 + v2++] = 1;
}
while(v2 != 26);
id.nextPos[(0x520308 - 0x0051FE20) / 4] = 1;
id.nextPos[(0x52030C - 0x0051FE20) / 4] = 1;
id.nextPos[(0x520310 - 0x0051FE20) / 4] = 1;
id.nextPos[(0x520314 - 0x0051FE20) / 4] = 1;
id.nextPos[(0x520318 - 0x0051FE20) / 4] = 1;
id.nextPos[(0x52031C - 0x0051FE20) / 4] = 1;
id.nextPos[(0x520320 - 0x0051FE20) / 4] = 1;
id.nextPos[(0x520324 - 0x0051FE20) / 4] = 1;
id.nextPos[(0x520328 - 0x0051FE20) / 4] = 1;
id.nextPos[(0x52032C - 0x0051FE20) / 4] = 1;
id.inited = true;
}
return accept(id.nextPos, id.canAccept, a2, a1);
}
int acceptStr(char const *a1, int & a2)
{
if (!str.inited)
{
str.nextPos = str_nextPos;
str.canAccept = str_accept;
// 0x0051E520
memset(str.nextPos, 255, 0x18F0u);
for (int i = 0; i != 256; ++i )
{
str.nextPos[(0x51E948 - 0x0051E520) / 4 + i] = 1;
str.nextPos[(0x51ED70 - 0x0051E520) / 4 + i] = 2;
str.nextPos[(0x51F198 - 0x0051E520) / 4 + i] = 1;
str.nextPos[(0x51F5C0 - 0x0051E520) / 4 + i] = 2;
}
str.nextPos[(0x51E5A8 - 0x0051E520) / 4] = 1;
str.nextPos[(0x51E5BC - 0x0051E520) / 4] = 2;
str.nextPos[(0x51EAB8 - 0x0051E520) / 4] = 3;
str.nextPos[(0x51EEE0 - 0x0051E520) / 4] = 4;
str.nextPos[(0x51E9D0 - 0x0051E520) / 4] = 5;
str.nextPos[(0x51EE0C - 0x0051E520) / 4] = 5;
str.inited = true;
}
return accept(str.nextPos, str.canAccept, a2, a1);
}
int acceptNum(char const *a1, int & a2)
{
if (!num.inited)
{
num.nextPos = num_nextPos;
num.canAccept = num_accept;
// 0x0051D040
memset(num.nextPos, 255, 0x18F0u);
int v2 = 0;
num.nextPos[(0x51D0EC - 0x0051D040) / 4] = 1;
num.nextPos[(0x51D0F4 - 0x0051D040) / 4] = 1;
num.nextPos[(0x51D0F8 - 0x0051D040) / 4] = 3;
num.nextPos[(0x51D520 - 0x0051D040) / 4] = 3;
num.nextPos[(0x51D948 - 0x0051D040) / 4] = 4;
do
{
num.nextPos[(0x51D100 - 0x0051D040) / 4 + v2] = 2;
num.nextPos[(0x51D528 - 0x0051D040) / 4 + v2] = 2;
num.nextPos[(0x51D950 - 0x0051D040) / 4 + v2] = 2;
num.nextPos[(0x51DD78 - 0x0051D040) / 4 + v2] = 4;
num.nextPos[(0x51E1A0 - 0x0051D040) / 4 + v2++] = 4;
}
while ( v2 != 10 );
num.inited = true;
}
return accept(num.nextPos, num.canAccept, a2, a1);
}
int acceptSymbol(char const *a1, int &a2, int &a3)
{
const char *v3 = a1;
int v4 = a2;
int v5 = a2 - 1;
a2 = v5;
switch (a1[1])
{
case '(':
a3 = 3;
break;
case ')':
a3 = 4;
break;
case '+':
a3 = 1;
break;
case ',':
a3 = 6;
break;
case '-':
a3 = 2;
case '.':
a3 = 5;
break;
default:
a2 = v4;
if (a1[0] == ' ' || a1[0] == '\t')
{
while (a2 > 0 && (*v3 == ' ' || *v3 == '\t'))
{
v3++;
a2--;
}
a3 = 7;
}
else
{
a2 = v5;
a3 = 0;
}
break;
}
return 0;
}
}
}