Según este old article, debería poder llamar al analizador AST independientemente del contexto de su aplicación (plugin eclipse o no).
ASTParser parser = ASTParser.newParser(AST.JLS2);
parser.setSource("".toCharArray());
CompilationUnit unit = (CompilationUnit) parser.createAST(null);
unit.recordModifications();
AST ast = unit.getAST();
alt text http://www.ibm.com/developerworks/opensource/library/os-ast/astexplorer.gif
De esta bug entry:
ASTParser en 3.0 se puede utilizar en otro programa independiente para crear Eclipse AST sin ejecutar Eclipse. A medida que la documentación dice:
char[] source = ...;
ASTParser parser = ASTParser.newParser(AST.JLS2); // handles JLS2 (J2SE 1.4)
parser.setSource(source);
CompilationUnit result = (CompilationUnit) parser.createAST(null);
De ahí this thread intenta analizar una fuente de Java muy corto:
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);
}
}
roca - He duplicado esto y lo puso en github aquí: https: //github.com/juliangamble/ASTTest – hawkeye
@hawkeye: excelente. +1 para una solución mucho más actualizada. – VonC
¿cómo puedo obtener los frascos necesarios aparte de los comunes-io? –