【发布时间】:2021-03-18 10:19:40
【问题描述】:
我有一个用 Lua 5.1 编写的脚本,它导入第三方模块并从中调用一些函数。我想从带有参数的模块中获取函数调用列表(当它们在执行之前已知时)。
因此,我需要编写另一个脚本,它获取我的第一个脚本的源代码,对其进行解析,并从其代码中提取信息。
考虑最小的例子。
我有以下模块:
local mod = {}
function mod.foo(a, ...)
print(a, ...)
end
return mod
还有如下驱动代码:
local M = require "mod"
M.foo('a', 1)
M.foo('b')
使用M.foo 函数的“使用”事件来检索数据的更好方法是什么?
理想情况下,我想获取包含被调用函数名称及其参数值的信息。从上面的示例代码中,得到这样的映射就足够了:{'foo': [('a', 1), ('b')]}。
我不确定 Lua 是否有反射函数来检索这些信息。所以我可能需要使用现有的 Lua 解析器之一来获取完整的 AST 并找到我感兴趣的函数调用。
还有其他建议吗?
【问题讨论】:
标签: reflection lua abstract-syntax-tree