2017-06-15 59 views
1

當前嘗試瞭解'分析器'包,因爲我需要從另一個文件(可能這是一個可怕的想法)分析和編輯.dart文件。分析器包 - 如何遞歸搜索parseDartFile()的結果

我想我理解如何深入到childEntities樹。 但無法理解如何在其中搜索。

我的意思是,理論上我可以編寫一個遞歸搜索,找到我一個名爲「FindABetterSolution」的類。但是有沒有內置的方法呢?

我想要做的事:

var file = parseDartFile("test.dart"); 
file.childEntities.forEach((SyntacticEntity entity) { 
    if(entity is AstNode) { 
    //then it has its own child nodes which can be AstNode-s or Tokens. 
    } else if(entity is Token) { 
    Token token = entity; 
    print("${token.lexeme} ${token.type} ${token.runtimeType} ${token.keyword}"); 
    //this will output "class KEYWORD KeywordToken CLASS" for "class" in "class MyClass {" 
    } 
}); 
//I need a way to find certain functions/classes/variables/methods e.t.c. 
var myClassNode = file.searchClass("MyClass", abstract: false); 
var myMethod = myClassNode.searchMethod("myMethod", static: true); 
var globalFunction = file.searchFunction("myFunc", returns: "bool"); 

UPD:好吧,我想我找到了一種方法來搜索和替換節點。但如何在另一個之前/之後插入新節點?

+0

一些演示你想要做什麼的代碼可能有助於理解問題的內容。 –

+0

增加了一些代碼。 – user64675

回答