Compare commits
2 commits
f56e1bd7e7
...
893ca6ca0d
Author | SHA1 | Date | |
---|---|---|---|
893ca6ca0d | |||
772e7a9755 |
2 changed files with 34 additions and 32 deletions
|
@ -386,7 +386,8 @@ end
|
||||||
do local tlongstring = {}
|
do local tlongstring = {}
|
||||||
defs.longstring = tlongstring
|
defs.longstring = tlongstring
|
||||||
do local tllongstring_proper = selfify({[""] = "self", ["]"] = function(state, token) state.longstring_close = 0 return "maybe_end" end})
|
do local tllongstring_proper = selfify({[""] = "self", ["]"] = function(state, token) state.longstring_close = 0 return "maybe_end" end})
|
||||||
tllongstring_proper[1] = collect_fallback
|
tllongstring_proper[1] = false -- placeholder for newline handling
|
||||||
|
tllongstring_proper[2] = collect_fallback
|
||||||
|
|
||||||
do local tllmaybe_end = selfify({defs = defs}, "maybe_end")
|
do local tllmaybe_end = selfify({defs = defs}, "maybe_end")
|
||||||
tllongstring_proper.maybe_end = tllmaybe_end
|
tllongstring_proper.maybe_end = tllmaybe_end
|
||||||
|
@ -484,12 +485,11 @@ do local tmaybe_comment = setmetatable({["-"] = "comment"}, {__index=defs})
|
||||||
mknewline(tmcomment, 1, defs)
|
mknewline(tmcomment, 1, defs)
|
||||||
mknewline(tmcomment.comment_proper, 1, defs)
|
mknewline(tmcomment.comment_proper, 1, defs)
|
||||||
tmcomment.comment_proper[""] = "self"
|
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 tllongcomment_proper = selfify({[""] = "self", ["]"] = function(state, token) state.longcomment_close = 0 return "maybe_end" end})
|
||||||
do local tllmaybe_end = selfify({comment = tcomment}, "maybe_end")
|
tmcomment.longcomment = tllongcomment_proper
|
||||||
|
do local tllmaybe_end = selfify({defs = defs}, "maybe_end")
|
||||||
tllongcomment_proper.maybe_end = tllmaybe_end
|
tllongcomment_proper.maybe_end = tllmaybe_end
|
||||||
tllmaybe_end = tllongcomment_proper
|
tllmaybe_end.longcomment_proper = tllongcomment_proper
|
||||||
tllmaybe_end["="] = function(state, token)
|
tllmaybe_end["="] = function(state, token)
|
||||||
state.longcomment_close = state.longcomment_close + 1
|
state.longcomment_close = state.longcomment_close + 1
|
||||||
return "maybe_end"
|
return "maybe_end"
|
||||||
|
@ -512,10 +512,7 @@ do local tmaybe_comment = setmetatable({["-"] = "comment"}, {__index=defs})
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
tlongcomment.longcomment_proper = tllongcomment_proper
|
mknewline(tllongcomment_proper, 1, tllongcomment_proper)
|
||||||
mknewline(tlongcomment, 1, tllongcomment_proper)
|
|
||||||
setmetatable(tlongcomment, {__index=tllongcomment_proper})
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
tmcomment.maybe_longcomment = setmetatable({
|
tmcomment.maybe_longcomment = setmetatable({
|
||||||
|
@ -536,7 +533,7 @@ do local tmaybe_comment = setmetatable({["-"] = "comment"}, {__index=defs})
|
||||||
return "longcomment_count"
|
return "longcomment_count"
|
||||||
elseif token == "[" then
|
elseif token == "[" then
|
||||||
state.longcomment_count = 0
|
state.longcomment_count = 0
|
||||||
return "longstring"
|
return "longcomment"
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
}, {__index=tmcomment})
|
}, {__index=tmcomment})
|
||||||
|
|
11
test.lua
11
test.lua
|
@ -260,7 +260,7 @@ end -- long string
|
||||||
do -- long string edge cases
|
do -- long string edge cases
|
||||||
local luatokens = require "luatokens"
|
local luatokens = require "luatokens"
|
||||||
local tokens = luatokens.defs
|
local tokens = luatokens.defs
|
||||||
local state, err, etoken, estate = parser.parse(tokens, "[==[]=]==][==[]]==][=[] ]=]")
|
local state, err, etoken, estate = parser.parse(tokens, "[==[]=]==][==[]]==][=[] ]=][[\n]][[\n ]]")
|
||||||
local case = case()
|
local case = case()
|
||||||
if not state then
|
if not state then
|
||||||
print(case, "---- IN TOKENS ----")
|
print(case, "---- IN TOKENS ----")
|
||||||
|
@ -276,8 +276,12 @@ do -- long string edge cases
|
||||||
assert(table.remove(state, 1) == "]")
|
assert(table.remove(state, 1) == "]")
|
||||||
assert(table.remove(state, 1) == luatokens.tokens.TK_STRING)
|
assert(table.remove(state, 1) == luatokens.tokens.TK_STRING)
|
||||||
assert(table.remove(state, 1) == "] ")
|
assert(table.remove(state, 1) == "] ")
|
||||||
|
assert(table.remove(state, 1) == luatokens.tokens.TK_STRING)
|
||||||
|
assert(table.remove(state, 1) == "")
|
||||||
|
assert(table.remove(state, 1) == luatokens.tokens.TK_STRING)
|
||||||
|
assert(table.remove(state, 1) == " ")
|
||||||
assert(table.remove(state, 1) == nil)
|
assert(table.remove(state, 1) == nil)
|
||||||
assert(state.line == 1 or not state.line)
|
assert(state.line == 3 or not state.line)
|
||||||
end
|
end
|
||||||
end -- long string
|
end -- long string
|
||||||
|
|
||||||
|
@ -385,6 +389,7 @@ do -- long comments
|
||||||
local luatokens = require "luatokens"
|
local luatokens = require "luatokens"
|
||||||
local tokens = luatokens.defs
|
local tokens = luatokens.defs
|
||||||
local state, err, etoken, estate = parser.parse(tokens, [==[--[[
|
local state, err, etoken, estate = parser.parse(tokens, [==[--[[
|
||||||
|
|
||||||
--]]]==])
|
--]]]==])
|
||||||
local case = case()
|
local case = case()
|
||||||
if not state then
|
if not state then
|
||||||
|
@ -396,7 +401,7 @@ do -- long comments
|
||||||
print(case, "---- OUT TOKENS ----")
|
print(case, "---- OUT TOKENS ----")
|
||||||
else
|
else
|
||||||
assert(table.remove(state, 1) == nil)
|
assert(table.remove(state, 1) == nil)
|
||||||
assert(state.line == 2)
|
assert(state.line == 3)
|
||||||
end
|
end
|
||||||
end -- long comments
|
end -- long comments
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue