簡體   English   中英

使用JDT Eclipse獲取Java方法的抽象語法樹

[英]Get Abstract Syntax tree for Java method using JDT Eclipse

我正在一個必須使用Eclipse JDT來解析Java方法並為其生成抽象語法樹的項目上,我編寫了以下代碼:

String method ="\n"+
    "   public void sayHello() {\n"+
    "   System.out.println(\"Hello \"+name+\"!\");\n"+
    "   }\n";
ASTParser parser = ASTParser.newParser(AST.JLS3);
parser.setKind(ASTParser.K_COMPILATION_UNIT);
parser.setSource(method.toCharArray());
parser.setResolveBindings(true);
parser.setBindingsRecovery(true);
CompilationUnit unit = (CompilationUnit)parser.createAST(null);

這個片段只是創建了AST,但是我被卡住了!! 我想訪問任何Java方法的AST並打印其路徑。 我可以為java方法獲取打印AST嗎?

Eclipse AST(就像大多數AST一樣)廣泛地利用了訪問者模式。

因此,從您的角度出發,您要做的就是實例化一個訪問者,並使其訪問編譯單元。 然后它將自動導航字段,方法,注釋...

對於您的特定需求,我認為您可以從以下代碼開始:

unit.accept(new ASTVisitor() {

    @Override
    public boolean visit(MethodDeclaration node) {
        Type ownerTypeNode = (Type) node.getParent();
        System.out.println("Found method " + node.getName().getFullyQualifiedName() " + " in type " + ownerTypeNode.getName().getFullyQualifiedName());
    }
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM