diff options
| author | Li Jin <dragon-fly@qq.com> | 2023-02-01 15:22:54 +0800 |
|---|---|---|
| committer | Li Jin <dragon-fly@qq.com> | 2023-02-01 15:22:54 +0800 |
| commit | 72cc9bd0ae4bf847c4519b0c508c300db8141eb3 (patch) | |
| tree | 0808337894562193606a27225da5aef02a7523cc | |
| parent | e3e45fb330e29cc9b203a70b649e61f62697f88d (diff) | |
| download | yuescript-72cc9bd0ae4bf847c4519b0c508c300db8141eb3.tar.gz yuescript-72cc9bd0ae4bf847c4519b0c508c300db8141eb3.tar.bz2 yuescript-72cc9bd0ae4bf847c4519b0c508c300db8141eb3.zip | |
fix yue.to_ast().
Diffstat (limited to '')
| -rw-r--r-- | CMakeLists.txt | 59 | ||||
| -rw-r--r-- | src/yuescript/yuescript.cpp | 6 | ||||
| -rw-r--r-- | yuescript-dev-1.rockspec | 2 |
3 files changed, 46 insertions, 21 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 2de475c..fc2c234 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt | |||
| @@ -1,27 +1,50 @@ | |||
| 1 | project(yue CXX) | 1 | project(yue CXX) |
| 2 | cmake_minimum_required(VERSION 3.1) | 2 | cmake_minimum_required(VERSION 3.1) |
| 3 | 3 | ||
| 4 | set(LUA_LIBDIR ${LUA_INCDIR}/../lib " " ${LUA_INCDIR}/../../lib) | 4 | set(LUA_LIBDIR ${LUA_INCDIR}/../lib ${LUA_INCDIR}/../../lib) |
| 5 | set(LUA_INCLUDE_DIR "${LUA_INCDIR}") | ||
| 6 | |||
| 7 | get_filename_component(LUA_EXEC_NAME ${LUA} NAME) | ||
| 8 | if (LUA_EXEC_NAME STREQUAL "luajit") | ||
| 9 | find_library(LUA_LIBRARIES | ||
| 10 | NAMES luajit libluajit | ||
| 11 | PATHS ${LUA_LIBDIR} | ||
| 12 | NO_DEFAULT_PATH) | ||
| 13 | elseif (LUA_EXEC_NAME MATCHES "lua5\.4" OR LUA_EXEC_NAME MATCHES "lua54") | ||
| 14 | find_library(LUA_LIBRARIES | ||
| 15 | NAMES lua54 lua5.4 liblua54 liblua5.4 lua liblua | ||
| 16 | PATHS ${LUA_LIBDIR} | ||
| 17 | NO_DEFAULT_PATH) | ||
| 18 | elseif (LUA_EXEC_NAME MATCHES "lua5\.3" OR LUA_EXEC_NAME MATCHES "lua53") | ||
| 19 | find_library(LUA_LIBRARIES | ||
| 20 | NAMES lua53 lua5.3 liblua53 liblua5.3 lua liblua | ||
| 21 | PATHS ${LUA_LIBDIR} | ||
| 22 | NO_DEFAULT_PATH) | ||
| 23 | elseif (LUA_EXEC_NAME MATCHES "lua5\.2" OR LUA_EXEC_NAME MATCHES "lua52") | ||
| 24 | find_library(LUA_LIBRARIES | ||
| 25 | NAMES lua52 lua5.2 liblua52 liblua5.2 lua liblua | ||
| 26 | PATHS ${LUA_LIBDIR} | ||
| 27 | NO_DEFAULT_PATH) | ||
| 28 | elseif (LUA_EXEC_NAME MATCHES "lua5\.1" OR LUA_EXEC_NAME MATCHES "lua51") | ||
| 29 | find_library(LUA_LIBRARIES | ||
| 30 | NAMES lua51 lua5.1 liblua51 liblua5.1 lua liblua | ||
| 31 | PATHS ${LUA_LIBDIR} | ||
| 32 | NO_DEFAULT_PATH) | ||
| 33 | else () | ||
| 34 | find_library(LUA_LIBRARIES | ||
| 35 | NAMES lua liblua | ||
| 36 | PATHS ${LUA_LIBDIR} | ||
| 37 | NO_DEFAULT_PATH) | ||
| 38 | endif() | ||
| 5 | 39 | ||
| 6 | find_package(Lua) | 40 | if (LUA_LIBRARIES MATCHES "LUA_LIBRARIES-NOTFOUND") |
| 7 | if (LUA_FOUND) | 41 | find_package(Lua) |
| 8 | set(LUA_LIBRARIES "${LUA_LIBRARY}") | 42 | if (LUA_FOUND) |
| 43 | set(LUA_LIBRARIES "${LUA_LIBRARY}") | ||
| 44 | endif() | ||
| 9 | else () | 45 | else () |
| 10 | message(STATUS "Lua: using information from luarocks") | 46 | message(STATUS "Lua: using information from luarocks") |
| 11 | set(LUA_INCLUDE_DIR "${LUA_INCDIR}") | 47 | endif() |
| 12 | get_filename_component(LUA_EXEC_NAME ${LUA} NAME_WE) | ||
| 13 | if (LUA_EXEC_NAME STREQUAL "luajit") | ||
| 14 | find_library(LUA_LIBRARIES | ||
| 15 | NAMES luajit libluajit | ||
| 16 | PATHS ${LUA_LIBDIR} | ||
| 17 | NO_DEFAULT_PATH) | ||
| 18 | elseif () | ||
| 19 | find_library(LUA_LIBRARIES | ||
| 20 | NAMES lua lua54 lua53 lua52 lua51 liblua liblua54 liblua53 liblua52 liblua51 liblua5.4 liblua5.3 liblua5.2 liblua5.1 | ||
| 21 | PATHS ${LUA_LIBDIR} | ||
| 22 | NO_DEFAULT_PATH) | ||
| 23 | endif() | ||
| 24 | endif() | ||
| 25 | 48 | ||
| 26 | message(STATUS "Lua: " ${LUA}) | 49 | message(STATUS "Lua: " ${LUA}) |
| 27 | message(STATUS "Lua include: " ${LUA_INCLUDE_DIR}) | 50 | message(STATUS "Lua include: " ${LUA_INCLUDE_DIR}) |
diff --git a/src/yuescript/yuescript.cpp b/src/yuescript/yuescript.cpp index 20fa258..ed09aaa 100644 --- a/src/yuescript/yuescript.cpp +++ b/src/yuescript/yuescript.cpp | |||
| @@ -161,7 +161,7 @@ struct yue_stack { | |||
| 161 | static int yuetoast(lua_State* L) { | 161 | static int yuetoast(lua_State* L) { |
| 162 | size_t size = 0; | 162 | size_t size = 0; |
| 163 | const char* input = luaL_checklstring(L, 1, &size); | 163 | const char* input = luaL_checklstring(L, 1, &size); |
| 164 | int flattenLevel = 2; | 164 | int flattenLevel = 0; |
| 165 | if (lua_isnoneornil(L, 2) == 0) { | 165 | if (lua_isnoneornil(L, 2) == 0) { |
| 166 | flattenLevel = static_cast<int>(luaL_checkinteger(L, 2)); | 166 | flattenLevel = static_cast<int>(luaL_checkinteger(L, 2)); |
| 167 | flattenLevel = std::max(std::min(2, flattenLevel), 0); | 167 | flattenLevel = std::max(std::min(2, flattenLevel), 0); |
| @@ -270,8 +270,10 @@ static int yuetoast(lua_State* L) { | |||
| 270 | lua_pushinteger(L, node->m_begin.m_col); | 270 | lua_pushinteger(L, node->m_begin.m_col); |
| 271 | lua_rawseti(L, -2, 3); | 271 | lua_rawseti(L, -2, 3); |
| 272 | for (int i = count, j = 4; i >= 1; i--, j++) { | 272 | for (int i = count, j = 4; i >= 1; i--, j++) { |
| 273 | lua_rawgeti(L, tableIndex, len); | 273 | lua_rawgeti(L, tableIndex, len - i + 1); |
| 274 | lua_rawseti(L, -2, j); | 274 | lua_rawseti(L, -2, j); |
| 275 | } | ||
| 276 | for (int i = 1; i <= count; i++) { | ||
| 275 | lua_pushnil(L); | 277 | lua_pushnil(L); |
| 276 | lua_rawseti(L, tableIndex, len); | 278 | lua_rawseti(L, tableIndex, len); |
| 277 | len--; | 279 | len--; |
diff --git a/yuescript-dev-1.rockspec b/yuescript-dev-1.rockspec index bcf4933..397254b 100644 --- a/yuescript-dev-1.rockspec +++ b/yuescript-dev-1.rockspec | |||
| @@ -19,8 +19,8 @@ dependencies = { | |||
| 19 | build = { | 19 | build = { |
| 20 | type = "cmake", | 20 | type = "cmake", |
| 21 | variables = { | 21 | variables = { |
| 22 | LUA_INCDIR = "$(LUA_INCDIR)", | ||
| 23 | LUA = "$(LUA)", | 22 | LUA = "$(LUA)", |
| 23 | LUA_INCDIR = "$(LUA_INCDIR)", | ||
| 24 | CMAKE_BUILD_TYPE="Release" | 24 | CMAKE_BUILD_TYPE="Release" |
| 25 | }, | 25 | }, |
| 26 | install = { | 26 | install = { |
