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

来源:百度文库 编辑:神马文学网 时间:2024/04/25 17:54:49

使用Eclipse的Ast解析java源代码~~~~

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());
}
}