1
現在、別のファイルから.dartファイルを分析して編集する必要があるため、アナライザパッケージを理解しようとしています(おそらくひどい考えです)。アナライザパッケージ - parseDartFile()の結果を再帰的に検索する方法
私はツリーに深く入る方法を理解していると思います。 しかし、それを検索する方法を理解できません。
つまり、私は理論的に私に "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:[OK]を、私は、ノードを検索および置換する方法を見つけたと思います。しかし、どのノードに新しいノードを挿入するのか?
何をしようとしているかを示すコードは、その質問の内容を理解するのに役立ちます。 –
いくつかのコードを追加しました。 – user64675