我们可以直接指向Eclipse AST中的节点,而不是访问所有节点

时间:2017-08-04 10:42:14

标签: java eclipse abstract-syntax-tree eclipse-jdt

我正在尝试使用Eclipse JDT的AST解析java文件。 ASTVisitor提供了一个很好的API来遍历所有节点并使用我们想要的节点。现在我想要的是,我们可以转到目标节点,比如类型MethodDeclaration或该类型的所有节点,而不是遍历所有节点吗?因为如果必须在整个包中获取特定类型的所有节点,这会减少时间。提前谢谢。

1 个答案:

答案 0 :(得分:3)

查找给定类型的所有节点 遍历ASTVisitor适用于此确切的任务。

如果您担心自己感兴趣的节点不必要遍历 ,只需从相应的false方法返回visit(),访问者就不会进入儿童当前节点。

但是,如果穿越实际上是性能瓶颈,我会感到惊讶。首先创建AST比这更昂贵。

如果你只想解决几个节点(例如,通过名称模式识别),那么执行搜索(依赖于索引)可能会更快,但这可能会得到回报只有当可以完全跳过大量文件时才能。

最后,正如你提到MethodDeclaration:也许你甚至不需要AST,但Java模型(重量更轻)足以完成你的任务?