aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLi Jin <dragon-fly@qq.com>2021-11-29 14:42:36 +0800
committerLi Jin <dragon-fly@qq.com>2021-11-29 14:42:36 +0800
commit8953ecec306536cd0b18c9de316461ad4c35166f (patch)
treeb58d7e30d428048ea727bbb0568eb2c49267ee98
parent2d1a087a70272dc32183bbd3d5b0c036bc26ffdb (diff)
downloadyuescript-8953ecec306536cd0b18c9de316461ad4c35166f.tar.gz
yuescript-8953ecec306536cd0b18c9de316461ad4c35166f.tar.bz2
yuescript-8953ecec306536cd0b18c9de316461ad4c35166f.zip
fix issue #70.
-rw-r--r--src/yue.cpp12
-rwxr-xr-xsrc/yuescript/yue_compiler.cpp2
-rw-r--r--src/yuescript/yuescript.cpp4
3 files changed, 17 insertions, 1 deletions
diff --git a/src/yue.cpp b/src/yue.cpp
index 1704b57..133a081 100644
--- a/src/yue.cpp
+++ b/src/yue.cpp
@@ -37,7 +37,12 @@ int luaopen_yue(lua_State* L);
37static void openlibs(void* state) { 37static void openlibs(void* state) {
38 lua_State* L = static_cast<lua_State*>(state); 38 lua_State* L = static_cast<lua_State*>(state);
39 luaL_openlibs(L); 39 luaL_openlibs(L);
40#if LUA_VERSION_NUM > 501
40 luaL_requiref(L, "yue", luaopen_yue, 1); 41 luaL_requiref(L, "yue", luaopen_yue, 1);
42#else
43 lua_pushcfunction(L, luaopen_yue);
44 lua_call(L, 0, 0);
45#endif
41 lua_pop(L, 1); 46 lua_pop(L, 1);
42} 47}
43 48
@@ -238,7 +243,14 @@ int main(int narg, const char** args) {
238 if (success) { 243 if (success) {
239 if (retCount > 1) { 244 if (retCount > 1) {
240 for (int i = 1; i < retCount; ++i) { 245 for (int i = 1; i < retCount; ++i) {
246#if LUA_VERSION_NUM > 501
241 std::cout << Val << luaL_tolstring(L, -retCount + i, nullptr) << Stop; 247 std::cout << Val << luaL_tolstring(L, -retCount + i, nullptr) << Stop;
248#else // LUA_VERSION_NUM
249 lua_getglobal(L, "tostring");
250 lua_pushvalue(L, -retCount + i - 1);
251 lua_call(L, 1, 1);
252 std::cout << Val << lua_tostring(L, -1) << Stop;
253#endif // LUA_VERSION_NUM
242 lua_pop(L, 1); 254 lua_pop(L, 1);
243 } 255 }
244 } 256 }
diff --git a/src/yuescript/yue_compiler.cpp b/src/yuescript/yue_compiler.cpp
index d4996a7..e93324e 100755
--- a/src/yuescript/yue_compiler.cpp
+++ b/src/yuescript/yue_compiler.cpp
@@ -60,7 +60,7 @@ using namespace parserlib;
60 60
61typedef std::list<std::string> str_list; 61typedef std::list<std::string> str_list;
62 62
63const std::string_view version = "0.9.2"sv; 63const std::string_view version = "0.9.3"sv;
64const std::string_view extension = "yue"sv; 64const std::string_view extension = "yue"sv;
65 65
66class YueCompilerImpl { 66class YueCompilerImpl {
diff --git a/src/yuescript/yuescript.cpp b/src/yuescript/yuescript.cpp
index b83a454..87aa917 100644
--- a/src/yuescript/yuescript.cpp
+++ b/src/yuescript/yuescript.cpp
@@ -133,7 +133,11 @@ static const luaL_Reg yuelib[] = {
133}; 133};
134 134
135int luaopen_yue(lua_State* L) { 135int luaopen_yue(lua_State* L) {
136#if LUA_VERSION_NUM > 501
136 luaL_newlib(L, yuelib); // yue 137 luaL_newlib(L, yuelib); // yue
138#else
139 luaL_register(L, "yue", yuelib); // yue
140#endif
137 lua_pushlstring(L, &yue::version.front(), yue::version.size()); // yue version 141 lua_pushlstring(L, &yue::version.front(), yue::version.size()); // yue version
138 lua_setfield(L, -2, "version"); // yue["version"] = version, yue 142 lua_setfield(L, -2, "version"); // yue["version"] = version, yue
139 lua_createtable(L, 0, 0); // yue options 143 lua_createtable(L, 0, 0); // yue options