package ru.naumen.gintonic.utils; import org.eclipse.jdt.core.ICompilationUnit; import org.eclipse.jdt.core.dom.AST; import org.eclipse.jdt.core.dom.ASTParser; import org.eclipse.jdt.core.dom.Block; import org.eclipse.jdt.core.dom.CompilationUnit; import org.eclipse.jdt.core.dom.Statement; import org.eclipse.jdt.core.dom.TypeDeclaration; public class ASTParserUtils { /** * synonym for parseCompilationUnitAst3(compilationUnit, true, false); */ public static CompilationUnit parseCompilationUnitAst3( ICompilationUnit compilationUnit) { return parseCompilationUnitAst3(compilationUnit, true, false); } public static CompilationUnit parseCompilationUnitAst3( ICompilationUnit compilationUnit, boolean resolveBindings, boolean recoverBindings) { @SuppressWarnings("deprecation") ASTParser astParser = ASTParser.newParser(AST.JLS3); astParser.setSource(compilationUnit); astParser.setResolveBindings(resolveBindings); astParser.setBindingsRecovery(recoverBindings); astParser.setKind(ASTParser.K_COMPILATION_UNIT); CompilationUnit astRoot = (CompilationUnit) astParser.createAST(null); return astRoot; } public static Statement parseStatementAst3(String statementAsString) { @SuppressWarnings("deprecation") ASTParser astParser = ASTParser.newParser(AST.JLS3); astParser.setSource(statementAsString.toCharArray()); astParser.setKind(ASTParser.K_STATEMENTS); astParser.setResolveBindings(true); Block astBindingExpr = (Block) astParser.createAST(null); Statement statement = (Statement) astBindingExpr.statements().get(0); return statement; } public static TypeDeclaration parseTypeDeclaration(String methodCode) { @SuppressWarnings("deprecation") ASTParser astParser = ASTParser.newParser(AST.JLS3); astParser.setSource(methodCode.toCharArray()); astParser.setKind(ASTParser.K_CLASS_BODY_DECLARATIONS); astParser.setResolveBindings(true); TypeDeclaration typeDeclaration = (TypeDeclaration) astParser.createAST(null); return typeDeclaration; } }