【问题标题】:Searching inside scala 2.10 ASTs在 scala 2.10 AST 中搜索
【发布时间】:2012-08-25 15:05:51
【问题描述】:

在 scala 2.10 AST 中递归搜索元素的最佳方法是什么?

这些树可能是power.trees(code)mirror.mkToolBox().parseExpr(code) 的结果 编辑。在 2.10.0-RC1 中,parseExpr 已重命名为 parse

我的具体用例是通过方法名称从给定的类/对象代码中提取方法的代码, 但我认为如果以更通用的方式表述,这个问题对其他人来说会更相关。

【问题讨论】:

    标签: scala abstract-syntax-tree scala-2.10 parse-tree


    【解决方案1】:

    也许你应该看看https://github.com/scala/scala/blob/2.10.x/src/reflect/scala/reflect/api/Trees.scala#L606,尤其是Traverser、Transformer 类和替换方法(Tree.substituteSymbolsTree.substituteTypesTree.substituteThis)。如果要从树中提取方法,可以使用Traverser 并覆盖traverse 方法。在 traverse 方法中,您检查节点是否与您想要的方法匹配。如果是这样,你就完成了。如果没有,请致电super.traverse

    【讨论】:

    猜你喜欢
    • 2012-10-08
    • 2012-07-25
    • 1970-01-01
    • 1970-01-01
    • 2011-01-13
    • 1970-01-01
    • 2012-10-25
    • 2013-10-27
    • 1970-01-01
    相关资源
    最近更新 更多