众所周知,我们可以使用类似的工具从源代码中获取抽象语法树
org.eclipse.jdt.astview
但是给定编译后的类文件,如何获取 AST?有现成的工具吗? 烟灰能做到吗?
谢谢!
最佳答案
But given the compiled class files, how to get the ASTs?
你不能。从技术上来说,从“.class”文件重建原始源代码的 AST 是不可能的。许多需要的信息不再以任何形式存在,而其他信息已经发生了不可逆转的转变。
Is there any existing tools?
没有。
标准的“答案”是使用反编译器,但是:
- 反编译器无法重建原始 AST(见上文)
- 反编译器的输出通常与原始源代码相差甚远
- 通常反编译的代码甚至无法编译。
关于java - 在Java中,如何从类文件中获取抽象语法树?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11099787/