[英]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
有許多preVisit
, visit
和postVisit
方法,您可以覆蓋postVisit
方法以查看不同的AST節點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.