使用Java编译器树API,可以使用TreeVisitor
遍历TreePath
及其子级的叶树。
是否有访问评估顺序中所有"节点"的TreeVisitor
实现?例如,如果7 - 8 * 2 + 10
被解析为:
_____+__/\-10/\7*/\8 2
是否有一个TreeVisitor
将访问8 * 2
的BinaryTree
,然后访问7 - (8 * 2)
的BinaryTree
,再访问(7 - (8 * 2)) + 10
的BinaryTree
?
哪里比javac
(langtools)的源代码更好看!
在编译的分析和生成阶段,对每个编译单元语法树进行多次遍历。特别是Gen,它生成方法实现的字节码编译。Gen过程的大部分显然在实现JCTree.Visitor
的com.sun.tools.javac.jvm.Gen
中。