java ast 解析_使用Eclipse的Ast解析java源代码~~~~ - rwl6813021 - Jav...

Eclipse的Ast包可以对.java的源码文件进行分析,得到其中的变量,函数等等属性,对于制作代码生成器来说是一个比较好的选择。

以下是我的部分测试代码,供大家参考:

引用

String content = "";

try {

content = FileUtil.read("F:/RWL_SPACE/work/eclipse_plugin_ws/dddd/src/com/test/Test.java");

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

//创建解析器

ASTParser parsert = ASTParser.newParser(AST.JLS2);

//设定解析器的源代码字符

parsert.setSource(content.toCharArray());

//使用解析器进行解析并返回AST上下文结果(CompilationUnit为根节点)

CompilationUnit result = (CompilationUnit) parsert.createAST(null);

//获取类型

List types = result.types();

//取得类型声明

TypeDeclaration typeDec = (TypeDeclaration) types.get(0);

//##############获取源代码结构信息#################

//引用import

List importList = result.imports();

//取得包名

PackageDeclaration packetDec = result.getPackage();

//取得类名

String className = typeDec.getName().toString();

//取得函数(Method)声明列表

MethodDeclaration methodDec[] = typeDec.getMethods();

//取得函数(Field)声明列表

FieldDeclaration fieldDec[] = typeDec.getFields();

//输出包名

System.out.println("包:");

System.out.println(packetDec.getName());

//输出引用import

System.out.println("引用import:");

for(Object obj : importList) {

ImportDeclaration importDec = (ImportDeclaration)obj;

System.out.println(importDec.getName());

}

//输出类名

System.out.println("类:");

System.out.println(className);

//循环输出函数名称

System.out.println("函数:");

for(MethodDeclaration method : methodDec) {

System.out.println(method.getName());

}

//循环输出变量

System.out.println("变量:");

for(FieldDeclaration fieldDecEle : fieldDec) {

//public static

for(Object modifiObj : fieldDecEle.modifiers()) {

Modifier modify = (Modifier)modifiObj;

System.out.print(modify+"-");

}

System.out.println(fieldDecEle.getType());

for(Object obj : fieldDecEle.fragments()) {

VariableDeclarationFragment frag = (VariableDeclarationFragment)obj;

System.out.println("[FIELD_NAME:]"+frag.getName());

}

}

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值