Nach diesem alter Artikel sollten Sie in der Lage sein, den AST-Parser unabhängig von Ihrem Anwendungskontext (Eclipse-Plugin oder nicht) aufzurufen.
ASTParser parser = ASTParser.newParser(AST.JLS2);
parser.setSource("".toCharArray());
CompilationUnit unit = (CompilationUnit) parser.createAST(null);
unit.recordModifications();
AST ast = unit.getAST();
(Quelle: <a href="http://www.ibm.com/developerworks/opensource/library/os-ast/astexplorer.gif" rel="nofollow noreferrer">ibm.de </a>)
Von diesem Fehlereintrag :
ASTParser in 3.0 kann in einem anderen eigenständigen Programm verwendet werden, um Eclipse ASTs zu erstellen, ohne Eclipse zu starten. Wie die Dokumentation sagt:
char[] source = ...;
ASTParser parser = ASTParser.newParser(AST.JLS2); // handles JLS2 (J2SE 1.4)
parser.setSource(source);
CompilationUnit result = (CompilationUnit) parser.createAST(null);
Daher dieses Thema versucht, einen sehr kurzen Java-Quelltext zu parsen:
import org.eclipse.jdt.core.dom.*;
import org.eclipse.jface.text.Document;
import org.eclipse.text.edits.TextEdit;
public class Test{
public static void main(String[] args){
Test t= new Test();
t.runtest();
}
void runtest(){
Document doc = new Document("import java.util.List;\nclass X {}\n");
ASTParser parser = ASTParser.newParser(AST.JLS3);
parser.setResolveBindings(true);
parser.setSource(doc.get().toCharArray());
CompilationUnit cu = (CompilationUnit) parser.createAST(null);
cu.recordModifications();
AST ast = cu.getAST();
ImportDeclaration id = ast.newImportDeclaration();
id.setName(ast.newName(new String[] {"java", "util", "Set"}));
cu.imports().add(id); // add import declaration at end
TextEdit edits = cu.rewrite(doc, null);
}
}