2017-08-04 44 views
0

我想用Eclipse JDT的AST來解析java文件。 ASTVisitor提供了一個很好的API來遍歷所有節點並使用我們想要的節點。現在我想要的是,我們可以去目標節點,比如說類型MethodDeclaration還是所有類型的節點,而不是遍歷所有節點?因爲如果我必須在整個包中獲得特定類型的所有節點,這會減少時間。提前致謝。我們可以直接從Eclipse AST指向一個節點,而不是訪問所有節點

回答

3

查找給定類型固有的所有節點遍歷。 ASTVisitor適用於此確切任務。

如果您擔心不必要遍歷下面你感興趣的節點,剛剛從相應visit()方法返回false,和遊客不會下降到當前節點的孩子。

但是,如果遍歷實際上是性能瓶頸,我會感到驚訝。首先創建AST比這更昂貴。如果您只想解決少數節點(例如通過名稱模式識別),那麼執行搜索(它依賴於索引)可能會更快,但這可能只有在重要文件數量可以完全跳過。

最後,正如您所提到的MethodDeclaration:或許您甚至不需要AST,但Java模型(輕量級更輕)足以滿足您的任務需求?

+0

在第二段到最後一段中,您是不是指「......大量***節點可以跳過......」? –

+0

@FrankC。,不,我的意思是「文件」,因爲一旦文件被解析,訪問更多的節點應該不重要。只有當搜索發現整個文件是不相關的,那麼不解析這個文件可能是重要的。 –

相關問題