如何在Scala 2.10 AST中递归搜索元素?
这些树可能是power.trees(code)
或mirror.mkToolBox().parseExpr(code)
的结果。
编辑。在2.10.0-RC1中,parseExpr
已重命名为parse
。
我具体想要做的是通过方法名从给定类/对象代码中提取方法的代码,但我认为如果问题以更通用的方式表达,对其他人的帮助也会更大。
如何在Scala 2.10 AST中递归搜索元素?
这些树可能是power.trees(code)
或mirror.mkToolBox().parseExpr(code)
的结果。
编辑。在2.10.0-RC1中,parseExpr
已重命名为parse
。
我具体想要做的是通过方法名从给定类/对象代码中提取方法的代码,但我认为如果问题以更通用的方式表达,对其他人的帮助也会更大。
Tree.substituteSymbols
, Tree.substituteTypes
或Tree.substituteThis
)。如果您想从树中提取一个方法,可以使用Traverser并重写traverse方法。在traverse方法中,检查节点是否与所需的方法匹配。如果匹配,您就完成了。如果不匹配,则调用super.traverse
。
super.transform
和copyAttrs
部分。 - Eugene Burmako