summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--luatokens.lua52
-rw-r--r--test.lua3
2 files changed, 26 insertions, 29 deletions
diff --git a/luatokens.lua b/luatokens.lua
index 406fba5..d50f6c1 100644
--- a/luatokens.lua
+++ b/luatokens.lua
@@ -484,38 +484,34 @@ do local tmaybe_comment = setmetatable({["-"] = "comment"}, {__index=defs})
         mknewline(tmcomment, 1, defs)
         mknewline(tmcomment.comment_proper, 1, defs)
         tmcomment.comment_proper[""] = "self"
-        do local tlongcomment = {}
-            tmcomment.longcomment = tlongcomment
-            do local tllongcomment_proper = selfify({[""] = "self", ["]"] = function(state, token) state.longcomment_close = 0 return "maybe_end" end})
-                do local tllmaybe_end = selfify({comment = tcomment}, "maybe_end")
-                    tllongcomment_proper.maybe_end = tllmaybe_end
-                    tllmaybe_end = tllongcomment_proper
-                    tllmaybe_end["="] = function(state, token)
-                        state.longcomment_close = state.longcomment_close + 1
+        do local tllongcomment_proper = selfify({[""] = "self", ["]"] = function(state, token) state.longcomment_close = 0 return "maybe_end" end})
+            tmcomment.longcomment = tllongcomment_proper
+            do local tllmaybe_end = selfify({defs = defs}, "maybe_end")
+                tllongcomment_proper.maybe_end = tllmaybe_end
+                tllmaybe_end.longcomment_proper = tllongcomment_proper
+                tllmaybe_end["="] = function(state, token)
+                    state.longcomment_close = state.longcomment_close + 1
+                    return "maybe_end"
+                end
+                tllmaybe_end["]"] = function(state, token)
+                    if state.longcomment_close == state.longcomment_count then
+                        state.longcomment_close = nil
+                        state.longcomment_count = nil
+                        return "defs"
+                    else
+                        state.longcomment_close = 0
                         return "maybe_end"
                     end
-                    tllmaybe_end["]"] = function(state, token)
-                        if state.longcomment_close == state.longcomment_count then
-                            state.longcomment_close = nil
-                            state.longcomment_count = nil
-                            return "defs"
-                        else
-                            state.longcomment_close = 0
-                            return "maybe_end"
-                        end
-                    end
-                    tllmaybe_end[""] = "longcomment_proper"
-                    tllmaybe_end[-1] = function(state, token, rule)
-                        if not rule then
-                            state.longcomment_close = nil
-                        end
+                end
+                tllmaybe_end[""] = "longcomment_proper"
+                tllmaybe_end[-1] = function(state, token, rule)
+                    if not rule then
+                        state.longcomment_close = nil
                     end
                 end
-
-                tlongcomment.longcomment_proper = tllongcomment_proper
-                mknewline(tlongcomment, 1, tllongcomment_proper)
-                setmetatable(tlongcomment, {__index=tllongcomment_proper})
             end
+
+            mknewline(tllongcomment_proper, 1, tllongcomment_proper)
         end
 
         tmcomment.maybe_longcomment = setmetatable({
@@ -536,7 +532,7 @@ do local tmaybe_comment = setmetatable({["-"] = "comment"}, {__index=defs})
                     return "longcomment_count"
                 elseif token == "[" then
                     state.longcomment_count = 0
-                    return "longstring"
+                    return "longcomment"
                 end
             end,
         }, {__index=tmcomment})
diff --git a/test.lua b/test.lua
index a8a830d..4e9b132 100644
--- a/test.lua
+++ b/test.lua
@@ -385,6 +385,7 @@ do -- long comments
     local luatokens = require "luatokens"
     local tokens = luatokens.defs
     local state, err, etoken, estate = parser.parse(tokens, [==[--[[
+      
     --]]]==])
     local case = case()
     if not state then
@@ -396,7 +397,7 @@ do -- long comments
         print(case, "---- OUT TOKENS ----")
     else
         assert(table.remove(state, 1) == nil)
-        assert(state.line == 2)
+        assert(state.line == 3)
     end
 end -- long comments