获得函数的AST

时间:2011-09-18 21:41:02

标签: function lua analysis abstract-syntax-tree decompiler

说我有一个功能:

function hi()
    print('hi')
end

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

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

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

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

我要问。你为什么没有这个来源?是以某种方式混淆了吗?

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

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

答案 2 :(得分:0)

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

所以你可能用非反射编译语言寻找的是"decompiler"

这会有用吗?

http://luadec.luaforge.net/