【发布时间】:2013-08-30 19:37:57
【问题描述】:
我有一个语法正确的 Lua 5.1 源代码文件。
我在该文件中有一个位置(行和字符偏移)。
我需要获取包含该位置的最里面的function() 主体的右括号的字节偏移量(或确定该位置属于文件的主块)。
即:
本地函数 foo() ^ 结果 打印(“酒吧”) ^ 输入 结尾 本地 foo = 函数() ^ 结果 打印(“酒吧”) ^ 输入 结尾 本地 foo = 函数() 返回函数() ^ 结果 打印(“酒吧”) ^ 输入 结尾 结尾...等等。
我如何稳健地做到这一点?
【问题讨论】:
-
您可以使用哪些类型的库?你可能需要一个 Lua 解析器。
-
无论我需要什么,只要它是理智的(并且最好不要在 GPL 下)。
-
实际上,在这种特定情况下,我认为单独使用正则表达式应该是可行的(可能在反向源操作时)。但是基于库的解决方案会更好。
-
"我如何稳健地做到这一点?" 你编写了一个解析器。如果您想“稳健地”进行严格的源代码操作,您可以编写一个解析器。 Lua's syntax 并不复杂。因此,只需获取您最喜欢的解析工具并编写一个。
-
嗯,有有几个 Lua 解析器。 Metalua、luafish、Cheese、LuaParse、LuaInspect、Leg 等
标签: lua