Echemos un vistazo a cómo analizar una secuencia de declaración de Java utilizando ASTParser de Eclipse JDT.
Al decir una secuencia de una declaración, me refiero a líneas de código que provienen de un método como el siguiente:
int i = 9; int j = i+1; |
Aquí está el código de cómo hacer esto.
public static void main(String[] args) { ASTParser parser = ASTParser.newParser(AST.JLS3); parser.setSource("int i = 9; n int j = i+1;".toCharArray()); parser.setKind(ASTParser.K_STATEMENTS); Block block = (Block) parser.createAST(null); //here can access the first element of the returned statement list String str = block.statements().get(0).toString(); System.out.println(str); block.accept(new ASTVisitor() { public boolean visit(SimpleName node) { System.out.println("Name: " + node.getFullyQualifiedName()); return true; } }); } |
En el código anterior, parser.setKind (ASTParser.K_STATEMENTS) hace que el analizador acepte una secuencia de declaraciones. Una vez que se establece en esto, parser.createAST (null) devolverá un Bloque en lugar de una CompilationUnit.
Aquí está la jerarquía de clases de Block.
Dado que es una subclase de ASTNode, también tiene un método que puede aceptar un ASTVisitor para atravesar el árbol de sintaxis abstracta.
Puede descargar el archivo jar requerido aquí.
Referencias:
http://help.eclipse.org/helios/index.jsp?topic=%2Forg.eclipse.jdt.doc.isv%2Freference%2Fapi%2Forg%2Feclipse%2Fjdt%2Fcore%2Fdom%2FBlock.html
http://help.eclipse.org/helios/index.jsp?topic=%2Forg.eclipse.jdt.doc.isv%2Freference%2Fapi%2Forg%2Feclipse%2Fjdt%2Fcore%2Fdom%2FASTParser.html