`
sxw7362693
  • 浏览: 60751 次
  • 性别: Icon_minigender_1
  • 来自: 南京
文章分类
社区版块
存档分类
最新评论

JDT-AST Java文件源码分析示例--标记一下

阅读更多
AST对Java文件的结构解析--标记一下


import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.List;

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.FieldDeclaration;
import org.eclipse.jdt.core.dom.MethodDeclaration;
import org.eclipse.jdt.core.dom.PackageDeclaration;
import org.eclipse.jdt.core.dom.TypeDeclaration;
import org.eclipse.jdt.core.dom.VariableDeclarationFragment;

public class TestAST
{
	public static void main(String[] args)
	{
		String content = "";
		try
		{
			File file = new File("G:\\workspaces_base\\plugins_workspaces\\ToolbarDemo\\src\\com\\sxw\\toolbar\\TableViewer5.java");
			FileReader fr = new FileReader(file);
			BufferedReader br = new BufferedReader(fr);
			String record = null;
			int recCount = 0;
			while ((record = br.readLine()) != null)
			{
				recCount++;
				// System.out.println("Line " + recCount + ": " + record);
				content = content + record;
			}
			br.close();
			fr.close();
		}
		catch (IOException e)
		{
			e.printStackTrace();
		}

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

		parsert.setSource(content.toCharArray());

		CompilationUnit result = (CompilationUnit) parsert.createAST(null);
		AST ast = result.getAST();

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

		List importList = result.imports();
		PackageDeclaration packetDec = result.getPackage();
		String className = typeDec.getName().toString();
		MethodDeclaration methodDec[] = typeDec.getMethods();
		FieldDeclaration fieldDec[] = typeDec.getFields();

		System.out.println("Field:");
		for(FieldDeclaration fieldDesc : fieldDec)
		{
			System.out.println(((VariableDeclarationFragment)fieldDesc.fragments().get(0)).getName().getFullyQualifiedName());
		}
		System.out.println("Method:");
		for (MethodDeclaration method : methodDec)
		{
			System.out.println(method.getName());
			// System.out.println(method.getBody());
			Block block = method.getBody();
			// 怎样继续下去得到上面代码1的第7行使用了ClassA 类和它的getClassbMethod 方法
		}

	}
}
 
分享到:
评论
1 楼 lywybo 2010-11-05  
hi,能共享下这个工程么,我需要依赖那些jar包呢?

相关推荐

    jdt-compiler-3.1.1.jar

    java开发常用 jdt-compiler-3.1.1.jar

    jasper-compiler-jdt-5.5.15.jar

    《jasper-compiler-jdt-5.5.15.jar:解决IReporter编译问题的利器》 在IT行业中,报告生成是企业级应用的重要组成部分,而 JasperReports 是一款广泛使用的开源报表工具,它允许开发者创建复杂的报表并嵌入到Java...

    Java解析语法树(AST)使用JDT相关库

    包括以下包:jdt-3.2.1-r321_v20060823.jar、 jdt-3.3.0-v20070607-1300.jar、jdt-3.4.2_r894.jar、jdt-compiler.jar、org.eclipse.datatools.enablement.jdt.classpath_1.0.1.v201107221501.jar、org.eclipse.jdt....

    jdt-language-server-0.45.0-201910031256.tar.gz

    标题中的"jdt-language-server-0.45.0-201910031256.tar.gz"是一个软件包,基于其命名规则,我们可以推断它是一个使用tar.gz格式压缩的文件,这种格式在Linux和Unix环境中常见。"jdt-language-server"部分表明这是...

    AST整理.txt学习JDT的AST相关网站和资料收集

    而AST则是Eclipse JDT中一个非常重要的概念,它是Java源代码的一种内部表示形式,可以被用来分析和修改程序结构。 ##### 2.1 AST基本概念 - **AST**:抽象语法树是一种树形的数据结构,它表示程序的语法结构。在...

    jdt.rar_jdt-compiler.jar

    标题中的"jdt.rar_jdt-compiler.jar"指的是Java Development Toolkit (JDT) 的一部分,具体是JDT的编译器组件,即`jdt-compiler.jar`。JDT是Eclipse IDE的一个核心插件,它提供了强大的Java编程支持,包括代码编辑、...

    eclipse3.0.1 and NLpack-eclipse-JDT-SDK-3.0.x

    Eclipse 3.0.1 和 NLpack-eclipse-JDT-SDK-3.0.x 是两个重要的组件,它们在IT领域特别是Java开发中扮演着关键角色。Eclipse是一款开源的集成开发环境(IDE),而NLpack-eclipse-JDT-SDK则是针对Eclipse的一款插件,...

    eclipse-JDT-3.2.2免费下载 完全版

    eclipse-JDT-3.2.2 免费下载 完全版eclipse-JDT-3.2.2 免费下载 完全版eclipse-JDT-3.2.2 免费下载 完全版eclipse-JDT-3.2.2 免费下载 完全版eclipse-JDT-3.2.2 免费下载 完全版eclipse-JDT-3.2.2 免费下载 完全版...

    homebrew-jdt-language-server:Eclipse JDT语言服务器的Homebrew公式

    **Homebrew-JDT-Language-Server:Eclipse JDT 语言服务器的Homebrew公式** Homebrew 是一个开源的包管理器,主要用于 macOS 系统,它允许用户方便地安装、管理和升级命令行工具。Eclipse JDT(Java Development ...

    jdt-compiler-3.1.1 + itext-2.1.7 + iTextAsian的jar包组合

    总结来说,"jdt-compiler-3.1.1 + itext-2.1.7 + iTextAsian"的组合为Java开发提供了强大的PDF生成和中文显示功能,尤其是在ireport报表设计中。同时,正确配置字体是确保中文正确显示的关键。开发者需要理解这些库...

    jdt需要的jar包

    总的来说,"jdt-needed"这个压缩包是Eclipse ASTView的运行必需组件,它涵盖了从Java源代码解析到图形化展示AST的全过程所涉及的关键技术,对于Java开发人员和语言处理工具的开发者来说,这些都是深入理解Java语言...

    eclipse-JDT-3.3.1.zip

    在标题中提到的“eclipse-JDT-3.3.1.zip”是一个Eclipse JDT的特定版本,即3.3.1版本的归档文件。这个版本发布于2007年,作为Eclipse 3.3(Europa)的一部分,它包含了用于开发Java应用程序的各种工具和API。 ...

    eclipse-jdt-3.6.1-6.13.el6.i686.rpm

    eclipse-jdt-3.6.1-6.13.el6.i686.rpm

    clicy:使用JDT生成Java文件AST的点格式的Eclipse插件

    Clicy是Eclipse的插件,可生成Java文件AST的图布局。 首先,使用Eclipse JDT(Java开发工具)生成并解析Abstract语法树,然后将其转换为点格式。 在您的eclipse文件夹中写入了一个包含点格式AST的新文件。 到目前...

    基于Eclipse-JDT生成Java源代码的AST并可视化.zip

    在Java编程领域,抽象语法树(Abstract Syntax Tree,AST)是一种表示源代码结构的数据结构,它将源代码的语句和表达式转化为树状结构,便于解析、分析和操作。Eclipse JDT(Java Development Tools)是Eclipse IDE...

    PyPI 官网下载 | jdt-0.0.2.linux-x86_64.tar.gz

    标题中的"PyPI 官网下载 | jdt-0.0.2.linux-x86_64.tar.gz"指的是Python Package Index(PyPI)上发布的名为“jdt”的软件包的一个版本,版本号为0.0.2,是专为Linux x86_64架构编译的。PyPI是Python开发者发布自己...

    org.eclipse.jdt.astview_1.1.7.201103211622.jar

    org.eclipse.jdt.astview_1.1.7.201103211622.jar

Global site tag (gtag.js) - Google Analytics