用于TeX文件的Lua语法分析器

时间:2015-04-26 15:54:25

标签: parsing lua tex

我想为一个能够检查常见错误的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

由于

0 个答案:

没有答案