簡體   English   中英

將java代碼解析為抽象語法樹

[英]Parsing java code into Abstract Syntax Tree

我使用eclipse(org.eclipse.jdt)作為AST。

我想(?)我在網上得到了一些有用的代碼來獲取字段的聲明和用法。 但我陷入了如何獲得根節點的困境。

ASTParser parser = ASTParser.newParser(AST.JLS3);
parser.setKind(ASTParser.K_COMPILATION_UNIT);
parser.setSource(buffer.toString().toCharArray());
parser.setResolveBindings(true);

CompilationUnit cu = (CompilationUnit) parser.createAST(null);
ASTNode root = cu.getRoot();
System.out.println(root.toString());

如果我執行以下操作,那么它會打印出我放入的整個java代碼,而不是根AST節點。

我不知道我是否誤解了AST,但是我把它想象成二分搜索樹,除了一個節點可以有多個孩子。 圖片

有任何澄清或幫助嗎?

toString方法只是將AST轉換回Java。

如果要查看完整的AST結構,則需要使用ASTVisitor類並調用accept方法:

root.accept(visitor);

其中visitor是擴展ASTVisitor的類的實例。 ASTVisitor有許多preVisitvisitpostVisit方法,您可以覆蓋postVisit方法以查看不同的AST節點。

暫無
暫無

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

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