是否可以获得"中间体"在生成字节码之前的Java代码(或语法树)

时间:2017-07-29 13:16:39

标签: java javacompiler

关于Java基础知识的书籍讲述了一些编译器行为。例如,在书中 - OCA Oracle认证助理Java SE 8程序员I学习指南

  • 第1章Java构建块>创建对象>构造函数:对于大多数类,您不必编写构造函数 - 编译器将提供do 没什么"默认构造函数。
  • 第2章运算符和语句>了解Java语句> for Statement> for-each 声明>真实世界场景 - 比较 for for-each 循环:Java实际上将for-each循环转换为编译期间的标准for循环
  • ...

所有的书只告诉了这一点,但他们从来没有用一些特殊的工具来证明它。所以我想知道是否可以通过某些工具或只是通过编程方式看到这样的编译器行为,以便我们可以深入了解书籍中的解释?

我尝试了javap,其中只列出了public 实例成员和汇编指令。我还尝试了在线反编译工具http://www.javadecompilers.com/,它反映了中间代码以外的原始源代码。

1 个答案:

答案 0 :(得分:0)

可能没有办法证明这些书是对的"这就是编译器的工作原理,而且没有办法逐步看到

编辑:好的,如果你想证明书籍是正确的,你可以查看编译器来源和AST,但这一切