Eclipse JDT--ASTParser介绍

原创 2011年02月16日 11:21:00

要解析Java源码,首先要建立ASTParser的实例。此过程最重要的一点是,你要告诉parser需要解析的内容类型。ASTParser支持对以下四种内容的解析:

1. K_COMPILATION_UNIT: 一个编译单元,一般就是完整的Java文件

2. K_STATEMENTS: Java statements,比如赋值语句,或是if语句块,while语句块等。此类型不需要文件是完整的编译单元,但需要是完整的statements。比如if语句块要作为一个完整的statement输入,否则会报错。

3. K_EXPRESSION: Java expressions

4. K_CLASS_BODY_DECLARATIONS: Java class里的元素

 

以下的例子以K_COMPILATION_UNIT为例创建ASTParser,也就是解析一个完整的Java文件。

 

其中,变量content是一个字符串,储存了读入的java源文件内容。最后一行,parser.createAST方法返回了一个ASTNode类。ASTNode是语法树各节点的抽象基类,它的子类分别代表各种类型的节点比如CompilationUnit, Statement, Expression, Comment, PackageDeclaration等等。具体参见

http://help.eclipse.org/helios/index.jsp?topic=/org.eclipse.jdt.doc.isv/reference/api/org/eclipse/jdt/core/dom/WhileStatement.html。

这里,我们将其转换成CompilationUnit类。

 

其实以上这四种类型是存在层次关系的:一个完整的编译单元包括imported packages, class。Class里又包括field和methods,而method又可以被分成一系列statements。也就是说,一个完整的java文件被分成几个基本部分,每个部分又可以继续往下分。

比如说,Statement的子类包括IfStatement, WhileStatement, ExpressionStatement等等。IfStatment类提供getElseStatement, getThenStatment,还有提取if条件等各种方法。像是ExpressionStatement类,支持通过getExpression方法得到源文件对应的Expression,而Expression类则包括如Assignment, MethodInvocation,ArrayCreation种种类型。

关于Statement的类层次结构和各类的方法可以参见:

http://help.eclipse.org/helios/index.jsp?topic=/org.eclipse.jdt.doc.isv/reference/api/org/eclipse/jdt/core/dom/WhileStatement.html

 

至此,利用createAST,java的源文件已经被解析成AST并且储存于Compilation的实例result中了。我会在下一篇文章介绍一些使用AST的具体操作。

 

(From my CSDN blog---转载请注明)

Java代码分析器(一): JDT入门

这是一个关于抽象语法树(Abstract Syntax Tree, AST)的故事。 抽象语法树是对程序代码的结构化表示,是对代码进行词法分析、语法分析后得到的产物。编译器要用到它,很多生产力工...

Eclipse JDT--ASTParser使用

上一篇文章介绍了一些背景知识以及如何创建一个ASTParser,下面给出一些使用AST的例子。创建ASTParser并将Java源文件解析成AST:// Initialize ASTParser ...

如何开启Eclipse JDT ASTParser的ResolveBindings功能

抽象语法树AST(Abstract Syntax Tree)是对程序代码的结构化表示,是对代码进行词法分析、语法分析后得到的产物。Eclipse作为开源的Java IDE就提供了一个库来帮助我们达到将...

eclipse ASTParser研究实例

import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.util.Li...

探索 Eclipse 的 ASTParser

探索 Eclipse 的 ASTParser如何使用这种解析器生成代码简介: 如果曾经编写过处理代码的应用程序,就会知道事情可能变得非常复杂,尤其在使用像 Java™ 这样复杂的语言时。不过对于那些使...

Eclipse JDT之APT那些事之一

转载,翻译,批注 原文链接:http://deors.wordpress.com/2011/09/26/annotation-types/ 献给天朝内非翻墙不能访问该网址的童鞋们。总共三篇,会陆续...

使用Eclipse JDT 构建AST

众所周知,Eclipse JDT就是Eclipse支持JAVA语言的插件. 这个插件有个功能能够帮助用户建立JAVA语言的AST. 首先,在JAVA 工程的buildPath中添加如下几个E...

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

  • 2016年07月16日 17:15
  • 23.36MB
  • 下载

JDT Icons (eclipse和mycelipse提示图标)大全

Objects compilation unit (*.java file) Java file which is not on a build path ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Eclipse JDT--ASTParser介绍
举报原因:
原因补充:

(最多只允许输入30个字)