diff --git a/CMakeLists.txt b/CMakeLists.txt index 904b154..b3d2de7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,7 +1,13 @@ cmake_minimum_required(VERSION 3.0.0) project(wx_complier VERSION 0.1.0 LANGUAGES C CXX) +set(CMAKE_CXX_STANDARD 11) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) +# set (CMAKE_CXX_STANDARD 14) +# set(CMAKE_VERBOSE_MAKEFILE ON) +# message("before: ${CMAKE_CXX_FLAGS_DEBUG}") +# set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O1") +# message("after: ${CMAKE_CXX_FLAGS_DEBUG}") include(CTest) enable_testing() diff --git a/src/include/wxml.h b/src/include/wxml.h index 7882f6e..06296dd 100644 --- a/src/include/wxml.h +++ b/src/include/wxml.h @@ -42,10 +42,10 @@ namespace WXML { bool inited = false; int *nextPos; - int canAccept[266]; + uint8_t *canAccept; }; - int accept(int *,int *[266],int &,char const*); + int accept(int *,uint8_t *[266],int &,char const*); int acceptID(char const*,int &); int acceptStr(char const*,int &); int acceptNum(char const*,int &); diff --git a/src/include/wxss.h b/src/include/wxss.h index 158f11d..b6b047c 100644 --- a/src/include/wxss.h +++ b/src/include/wxss.h @@ -134,7 +134,7 @@ namespace WXSS std::vector> offset_120; std::shared_ptr offset_132; // 类型未确定,不是布尔值 std::shared_ptr offset_140; - std::shared_ptr offset_148; + std::shared_ptr> offset_148; std::shared_ptr offset_156; int offset_164 = 0; int offset_168 = 0; diff --git a/src/wxml/expr_lib/transit_table.cpp b/src/wxml/expr_lib/transit_table.cpp index 1cb7fbc..e18f44d 100644 --- a/src/wxml/expr_lib/transit_table.cpp +++ b/src/wxml/expr_lib/transit_table.cpp @@ -137,7 +137,6 @@ namespace WXML if (!this->offset_24) { this->offset_24 = true; - std::map> map1 = this->ret[1]; int root; std::vector keyList; diff --git a/src/wxml/rpx.cpp b/src/wxml/rpx.cpp index 3e45d99..db6eeea 100644 --- a/src/wxml/rpx.cpp +++ b/src/wxml/rpx.cpp @@ -6,826 +6,26 @@ namespace WXML namespace RPX { + // 0x0051FE20 int id_nextPos[0x850u]; - Table id = { - false, - id_nextPos, - {1210319104, - 1432641893, - 539249746, - 610552100, - 1600073760, - 1701603686, - 24415, - 1210318848, - 1432641893, - 539249746, - 610552100, - 1600073760, - 1701603686, - 24415, - 0, - 1210318848, - 1432641893, - 539249746, - 610552100, - 1600073760, - 1701603686, - 24415, - 0, - -162267136, - -161742768, - -167575472, - -167116720, - -166395824, - -165150640, - -161152944, - -160497584, - -159514544, - -158728112, - 80, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0}}; + 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]; - Table str = { - false, - str_nextPos, - {0, - 16777472, - 1634027556, - 1280464228, - 1227104292, - 807412836, - 1768316767, - 1600087404, - 0, - 1634027556, - 1280464228, - 1227104292, - 807412836, - 1768316767, - 1600087404, - 0, - 0, - 1634027556, - 1280464228, - 1227104292, - 807412836, - 1768316767, - 1600087404, - 0, - 0, - 5305940, - 5305948, - 5305859, - 5305866, - 5305877, - 5305896, - 5305957, - 5305967, - 5305982, - 5305994, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0}}; + 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]; - Table num = { - false, - num_nextPos, - {65536, - 1, - 0, - 16777472, - 1634027556, - 1280464228, - 1227104292, - 807412836, - 1768316767, - 1600087404, - 0, - 1634027556, - 1280464228, - 1227104292, - 807412836, - 1768316767, - 1600087404, - 0, - 0, - 1634027556, - 1280464228, - 1227104292, - 807412836, - 1768316767, - 1600087404, - 0, - 0, - 5305940, - 5305948, - 5305859, - 5305866, - 5305877, - 5305896, - 5305957, - 5305967, - 5305982, - 5305994, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0}}; + 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; /** * TODO: 逻辑待验证 */ - int accept(int *a1, int a2[266], int &a3, char const *a4) + int accept(int *a1, uint8_t a2[266], int &a3, char const *a4) { int v4 = 0; int v7 = 0; @@ -852,6 +52,8 @@ namespace WXML { if (!id.inited) { + id.nextPos = id_nextPos; + id.canAccept = id_accept; // 0x0051FE20 memset(id.nextPos, 255, 0x850u); int v2 = 0; @@ -885,6 +87,8 @@ namespace WXML { if (!str.inited) { + str.nextPos = str_nextPos; + str.canAccept = str_accept; // 0x0051E520 memset(str.nextPos, 255, 0x18F0u); @@ -909,6 +113,8 @@ namespace WXML { if (!num.inited) { + num.nextPos = num_nextPos; + num.canAccept = num_accept; // 0x0051D040 memset(num.nextPos, 255, 0x18F0u); int v2 = 0; diff --git a/src/wxss/css_tree_lib/css_syntax_tree.cpp b/src/wxss/css_tree_lib/css_syntax_tree.cpp index d34cf00..aeac800 100644 --- a/src/wxss/css_tree_lib/css_syntax_tree.cpp +++ b/src/wxss/css_tree_lib/css_syntax_tree.cpp @@ -98,7 +98,7 @@ namespace WXSS auto cur = this->offset_120[i]; if (cur->offset_0 == "SELECTORS") { - auto v148 = this->offset_148.get(); + auto v148 = *this->offset_148; std::string v14 = v148[0].substr(2, v148[0].length() - 7); std::string v15 = WXML::Rewrite::ToStringCode2(v14); v15.insert(0, "[is=\""); @@ -125,7 +125,7 @@ namespace WXSS else { cur->RenderCode(a2, true); - auto v148 = this->offset_148.get(); + auto v148 = *this->offset_148; std::string v14 = v148[0].substr(2, v148[0].length() - 7); auto v15 = WXML::Rewrite::ToStringCode2(v14); v15.insert(0, "[is=\""); diff --git a/src/wxss/css_tree_lib/lexical_checker.cpp b/src/wxss/css_tree_lib/lexical_checker.cpp index d31243f..868fcf1 100644 --- a/src/wxss/css_tree_lib/lexical_checker.cpp +++ b/src/wxss/css_tree_lib/lexical_checker.cpp @@ -203,7 +203,7 @@ namespace WXSS { std::stringstream v31; v31 << ";wxcs_fileinfo: "; - v31 << a2->offset_148[0]; + v31 << (*a2->offset_148)[0]; v31 << " " << v25->offset_24.offset_20; v31 << " " << v25->offset_24.offset_24 << ";"; @@ -314,7 +314,7 @@ namespace WXSS auto v10 = *j; *v5 = v10->offset_24; std::shared_ptr str(new std::string()); - *str = a2->offset_148[0]; + *str = (*a2->offset_148)[0]; a2->offset_156->offset_4 = str; return 1; } @@ -326,7 +326,7 @@ namespace WXSS auto v10 = *j; *v5 = v10->offset_24; std::shared_ptr str(new std::string()); - *str = a2->offset_148[0]; + *str = (*a2->offset_148)[0]; a2->offset_156->offset_4 = str; return 1; } @@ -402,7 +402,7 @@ namespace WXSS auto v10 = *j; *v5 = v10->offset_24; std::shared_ptr str(new std::string()); - *str = a2->offset_148[0]; + *str = (*a2->offset_148)[0]; a2->offset_156->offset_4 = str; return 1; } @@ -414,7 +414,7 @@ namespace WXSS auto v10 = *j; *v5 = v10->offset_24; std::shared_ptr str(new std::string()); - *str = a2->offset_148[0]; + *str = (*a2->offset_148)[0]; a2->offset_156->offset_4 = str; return 1; } @@ -462,7 +462,7 @@ namespace WXSS } } std::shared_ptr str(new std::string()); - *str = a2->offset_148[0]; + *str = (*a2->offset_148)[0]; a2->offset_156->offset_4 = str; return 1; @@ -474,7 +474,7 @@ namespace WXSS std::string lit = a2->offset_24.GetLiteral(); std::string v10; auto la = a2->offset_24.offset_24; - int v5 = WXML::Rewrite::RewriteImg(lit, v10, a2->offset_148[0], a2->offset_24.offset_20, la); + int v5 = WXML::Rewrite::RewriteImg(lit, v10, (*a2->offset_148)[0], a2->offset_24.offset_20, la); if (!v5) { return 1; diff --git a/src/wxss/css_tree_lib/parser.cpp b/src/wxss/css_tree_lib/parser.cpp index 11d18d3..46007f0 100644 --- a/src/wxss/css_tree_lib/parser.cpp +++ b/src/wxss/css_tree_lib/parser.cpp @@ -60,9 +60,9 @@ namespace WXSS this->offset_8.push_back(v104); // Parse - 15 - std::shared_ptr v9(new std::string[3]()); - v9[0].assign(a3); - v9[1].assign(a5); + std::shared_ptr> v9(new std::array()); + (*v9)[0].assign(a3); + (*v9)[1].assign(a5); std::shared_ptr v14(new WXSS::Token()); v14->offset_4.reset(new std::string()); *v14->offset_4 = a3;