• 使用JDT转java代码为AST


    maven依赖
    <dependency>
    <groupId>org.eclipse.jdt</groupId>
    <artifactId>org.eclipse.jdt.core</artifactId>
    <version>3.13.0</version>
    </dependency>

    代码:
    import org.apache.commons.io.FileUtils;
    import org.eclipse.jdt.core.JavaCore;
    import org.eclipse.jdt.core.dom.AST;
    import org.eclipse.jdt.core.dom.ASTParser;
    import org.eclipse.jdt.core.dom.CompilationUnit;

    import java.io.File;
    import java.util.Map;

    import static org.eclipse.jdt.core.dom.AST.JLS8;

    public class JdtTest {

    public static void main(String[] args) {
    ASTParser parser = ASTParser.newParser(AST.JLS8); //设置Java语言规范版本
    parser.setKind(ASTParser.K_COMPILATION_UNIT);

    parser.setCompilerOptions(null);
    parser.setResolveBindings(true);

    Map<String, String> compilerOptions = JavaCore.getOptions();
    compilerOptions.put(JavaCore.COMPILER_COMPLIANCE, JavaCore.VERSION_1_8); //设置Java语言版本
    compilerOptions.put(JavaCore.COMPILER_CODEGEN_TARGET_PLATFORM, JavaCore.VERSION_1_8);
    compilerOptions.put(JavaCore.COMPILER_SOURCE, JavaCore.VERSION_1_8);
    parser.setCompilerOptions(compilerOptions); //设置编译选项

    String src = null;
    try {
    src = FileUtils.readFileToString(new File("LoginController.java"),"UTF-8"); //要解析的文件
    } catch (Exception e) {
    e.printStackTrace();
    }
    parser.setSource(src.toCharArray());
    CompilationUnit cu = (CompilationUnit) parser.createAST(null); //下个断点可以看看cu的types成员就是整个语法树
    System.out.println(cu);
    }
    }
  • 相关阅读:
    【读书笔记】iOS-UDID
    【读书笔记】iOS-优化内存
    【读书笔记】iOS-处理内存警告
    【读书笔记】iOS-方法声明
    【读书笔记】iOS-属性
    【读书笔记】iOS-强类型与弱类型
    【读书笔记】iOS-Objective-C编程
    【读书笔记】iOS-Interface Builder
    【读书笔记】iOS-开发者证书
    【读书笔记】iOS-成为一名开发者
  • 原文地址:https://www.cnblogs.com/fsqsec/p/7845222.html
Copyright © 2020-2023  润新知