我想为一个能够检查常见错误的Context文档做一个简单的解析器(比如一个未闭合的括号,缺少重要命令等等 - 我有一个完整的案例列表)。在输出中将有行数和错误描述。 所以我做了一些能够将输入保存到Lua表的函数。然而,我可以将括号和更多字母的订单保存到表格中,我知道它们在表格中的键。 但是现在我卡住了。任何建议如何继续? 这是我的代码:
function pairsByKeys (t, f)
local a = {}
for n in pairs(t) do table.insert(a, n) end
table.sort(a, f)
local i = 0
local iter = function ()
i = i + 1
if a[i] == nil then return nil else return a[i], t[a[i]] end
end
return iter
end
function zapis(ts,kde,kam,sym)
ts[kde]={}
ts[kde]['sym']=sym
ts[kde]['k']=kam
return ts
end
-------
io.input([[C:\Lua\input.txt]])
io.output([[C:\Lua\output.txt]])
local brackets="(){}[]"
local ts={}
skonci=false
--while skonci==false do
t = io.read("*all")
for sym in string.gmatch(t,"\\%a+") do
kde,kam=string.find(t,sym,z)
ts=zapis(ts,kde,kam,sym)
end
for i=1,#t do
if string.find(brackets,string.sub(t,i,i)) ~= nil then
ts=zapis(ts,i,i,string.sub(t,i,i))
end
end
-----
for pos, info in pairsByKeys(ts) do
print(pos, info['sym'], info['k'])
end
--end
由于