From fd48534de3427de16c3077f7d112d0bcfb030b73 Mon Sep 17 00:00:00 2001 From: SoniEx2 Date: Sun, 7 Apr 2019 12:54:48 -0300 Subject: [PATCH] Fix Lua 5.1/Lua 5.2/LuaJIT compat --- parser.lua | 12 +++++++++--- test.lua | 2 +- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/parser.lua b/parser.lua index 4f4e166..12397ef 100644 --- a/parser.lua +++ b/parser.lua @@ -71,9 +71,15 @@ local function get_next_common(state, in_pos, token) recheck = true end end - for i, hook in ipairs(st) do - if hook then -- allow overriding/disabling hooks - hook(state, token, rule) + do -- post-hooks CANNOT USE ipairs HERE BECAUSE Lua 5.1/5.2 + local pos = 1 + local hook = st[pos] + while hook ~= nil do + if hook then + hook(state, token, rule) + end + pos = pos + 1 + hook = st[pos] end end state[STATE] = transition -- may be nil or false diff --git a/test.lua b/test.lua index ef0a586..f9648eb 100644 --- a/test.lua +++ b/test.lua @@ -315,7 +315,7 @@ end -- keywords do -- FUCK local luatokens = require "luatokens" - local luatokens_file = io.open("./luatokens.lua", "r"):read((_VERSION == "5.1" or _VERSION == "5.2") and "*a" or "a") + local luatokens_file = io.open("./luatokens.lua", "r"):read((_VERSION == "Lua 5.1" or _VERSION == "Lua 5.2") and "*a" or "a") local tokens = luatokens.defs local state, err, etoken, estate = parser.parse(tokens, luatokens_file) local case = case()