4

说我有一个功能:

function hi()
    print('hi')
end

我希望能够将此函数作为参数并对其进行分析,例如列出其中的所有函数调用,查看它引用的所有变量等。

请注意,我不是在谈论分析源代码;我没有函数的源文本,我只有函数对象,即这是在运行时完成的。

我认为你这样做的方式是获取函数的 AST。但我不知道该怎么做。那么我将如何获取函数的 AST(或者如果有更好的方法则对其进行分析)?

4

3 回答 3

2

你可能想试试我的lbci,一个字节码检查器库。

于 2011-09-18T23:07:00.500 回答
1

我不得不问。你怎么没有源码?是否以某种方式被混淆了?

无论如何,如前所述,AST——即使在 Lua 中真的没有一个开始,也不能通过任何运行时机制获得。

尽管在许多情况下很容易获得对源代码的访问,因为它是否被馈送到嵌入的解释器中(当然,除非它们只发送字节码......

于 2011-09-18T21:59:17.790 回答
0

抽象语法树(几乎按照定义)是一个源级概念。

因此,您可能在非反射编译语言中寻找的是“反编译器”

这行得通吗?

http://luadec.luaforge.net/

于 2011-09-18T21:45:46.833 回答