使用Java编译器树API,可以使用TreeVisitor
遍历TreePath
及其子项的叶子树。
是否有TreeVisitor
实施以评估顺序访问所有“节点”?例如,如果7 - 8 * 2 + 10
被解析为:
_____+__ / \ - 10 / \ 7 * / \ 8 2
是否有TreeVisitor
访问8 * 2
的{{3}},然后访问BinaryTree
7 - (8 * 2)
,BinaryTree
(7 - (8 * 2)) + 10
{1}}?
答案 0 :(得分:0)
比javac
(langtools)的来源更好看!
在Analyze and Generate phase of compilation中,通过每个编译单元语法树进行多次传递。特别是一次通过Gen,生成方法实现的字节码编译。 Gen传递的大部分显然位于com.sun.tools.javac.jvm.Gen
,实现了JCTree.Visitor
。