2010-08-11 64 views
1

我只是想知道使用org.eclipse.jdt.core.dom.ASTParser是否有可能只解析一個java函數?Eclipse ASTParser只解析一個java函數?

這是我嘗試:我通過一個函數的代碼到ASTParser.setSource(的char [] S)如下:

ASTParser parser = ASTParser.newParser(AST.JLS3); 
    parser.setKind(ASTParser.K_COMPILATION_UNIT); 
    parser.setSource(unit); //set source 
    CompilationUnit cu = (CompilationUnit) parser.createAST(null /* IProgressMonitor */); // parse 
    List list = node.types(); 
    for(int i = 0; i < list.size(); i++){ 
     ASTNode typeNode = (ASTNode) list.get(i); 
     System.out.println(ASTNode.nodeClassForType(typeNode.getNodeType())); 
    } 

但我看到的類型列表中沒有任何(大小= 0)。

請建議。 謝謝。 Fahim

回答

1

只是一個小的錯字,在行List list = node.types();它應該是List list = cu.types();。你不能只傳遞一個函數。它需要是有效的Java編譯單元,所以它必須有一個類型定義。確保你用一個類包裝你的功能。任何班級。它應該工作得很好。

如果它不起作用,請記住,您可以要求cu.getProblems()並查看它失敗的位置。

+0

非常感謝您的回覆。這有幫助。 – Fahim 2010-08-12 08:59:42

+0

我很高興它有幫助。現在,將其標記爲正確答案:-) – zvikico 2010-08-12 09:39:31