Lua-lunadry误差
我一直在使用lunadry为我重新格式化代码,但我遇到了错误,即,当我尝试时会发生这种情况:Lua-lunadry误差,lua,pretty-print,lpeg,Lua,Pretty Print,Lpeg,我一直在使用lunadry为我重新格式化代码,但我遇到了错误,即,当我尝试时会发生这种情况: lua: ./lunadry.lua:322: assertion failed! stack traceback: [C]: in function 'assert' ./lunadry.lua:322: in main chunk [C]: in ? 现在我已经阅读了大量的代码,并找到了这个特定函数的错误源 function e.insertvalues(e,...)g(1
lua: ./lunadry.lua:322: assertion failed!
stack traceback:
[C]: in function 'assert'
./lunadry.lua:322: in main chunk
[C]: in ?
现在我已经阅读了大量的代码,并找到了这个特定函数的错误源
function e.insertvalues(e,...)g(1,e,'table')local n,t
if y('#',...)==1 then
n,t=#e+1,...else
n,t=...end
if#t>0 then
for n=#e,n,-1 do
e[n+#t]=e[n]end
local i=1-n
for n=n,n+#t-1 do
e[n]=t[n+i]end
end
return e
end
(是的,它应该看起来像那样难看)
更具体地说,去掉这段代码可以让它再次工作:
if y('#',...)==1 then
n,t=#e+1,...else
n,t=...end
是…其他和…结束位导致了它的混乱
我一直试图让它重新格式化代码,使它看起来很漂亮,但这会导致错误。据我所知,这可能只是作者代码中大量错误的一次复制,但我希望不会。以下是执行以下操作的文件的源:
有人可以看看这个,告诉我需要做些什么来解决这个非常恼人的错误吗?谢谢大家! 这是由于将
…
匹配为关键字造成的。例如,lunadry.lua的实例:
K“…”
应该是
C“…”
使用此修补程序:
diff --git a/lunadry.lua b/lunadry.lua
index e056140..19d714b 100755
--- a/lunadry.lua
+++ b/lunadry.lua
@@ -201,7 +201,7 @@ local lua = lpeg.locale {
K "true" +
V "Number" +
V "String" +
- K "..." +
+ C "..." +
V "function" +
V "tableconstructor" +
V "functioncall" +
@@ -251,8 +251,8 @@ local lua = lpeg.locale {
funcbody = C "(" * V "whitespace" * (V "parlist" * V "whitespace")^-1 * C ")" * INDENT_INCREASE(V "block" * V "whitespace") * INDENT * K "end";
- parlist = V "namelist" * (V "whitespace" * C "," * SPACE * V "whitespace" * K "...")^-1 +
- K "...";
+ parlist = V "namelist" * (V "whitespace" * C "," * SPACE * V "whitespace" * C "...")^-1 +
+ C "...";
tableconstructor = FLATTEN(C "{" * (INDENT_INCREASE(V "filler" * V "fieldlist" * V "filler") * INDENT + V "filler") * C "}");
我将在今天晚些时候提交修复程序。请澄清您正在使用的Lua和LPEG版本,无法复制错误。是的,我们能够在Lua 5.1.5+LPEG 0.10.2-2上复制它。看起来像是Lunadry的一只虫子。你应该在他们的报告中报告这个案子。好的,我已经报告了。谢谢