说我有一个功能:
function hi()
print('hi')
end
我希望能够将此函数作为参数并对其进行分析,例如列出其中的所有函数调用,查看它引用的所有变量等。
请注意,我不是在谈论分析源代码;我没有函数的源文本,我只有函数对象,即这是在运行时完成的。
我认为你这样做的方式是获取函数的 AST。但我不知道该怎么做。那么我将如何获取函数的 AST(或者如果有更好的方法则对其进行分析)?
说我有一个功能:
function hi()
print('hi')
end
我希望能够将此函数作为参数并对其进行分析,例如列出其中的所有函数调用,查看它引用的所有变量等。
请注意,我不是在谈论分析源代码;我没有函数的源文本,我只有函数对象,即这是在运行时完成的。
我认为你这样做的方式是获取函数的 AST。但我不知道该怎么做。那么我将如何获取函数的 AST(或者如果有更好的方法则对其进行分析)?
你可能想试试我的lbci,一个字节码检查器库。
我不得不问。你怎么没有源码?是否以某种方式被混淆了?
无论如何,如前所述,AST——即使在 Lua 中真的没有一个开始,也不能通过任何运行时机制获得。
尽管在许多情况下很容易获得对源代码的访问,因为它是否被馈送到嵌入的解释器中(当然,除非它们只发送字节码......