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---转载请注明)

Eclipse JDT--ASTParser使用

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

【Eclipse AST】AST的获取与访问

从本文开始将由浅入深向大家介绍AST的使用。Eclipse中的Eclipse JDT提供了一组访问和操作Java源代码的API,Eclipse AST是其中一个重要组成部分,它提供了AST、ASTPa...
  • LoveLion
  • LoveLion
  • 2014年02月10日 23:47
  • 20826

如何开启Eclipse JDT ASTParser的ResolveBindings功能

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

ASTParser抽象语法树API详细解释

  • 2011年06月17日 00:14
  • 154KB
  • 下载

javaparser, Java 1.5 Parser and AST

https://code.google.com/p/javaparser/
  • guotong1988
  • guotong1988
  • 2013年12月03日 15:23
  • 1968

AST 使用笔记

   最近公司要求我做一个可以生成代码的工具,需求为像SWT-Desinger那样,多页编辑器,一页显示源代码,另外一页用表格的形式显示类的属性,要求可以修改,这也不是什么和困难的事情,不过以前没做过...
  • vwpolo
  • vwpolo
  • 2008年04月29日 19:18
  • 3439

【eclipse高效开发】——AST的获取与访问

【eclipse高效开发】——AST的获取与访问 Eclipse中的Eclipse JDT提供了一组访问和操作Java源代码的API,Eclipse AST是其中一个重要组成部分,它提供了...
  • Syes_lei
  • Syes_lei
  • 2016年12月02日 17:09
  • 818

由于项目原因又用到了以前没接触到的东东(JAVACC,ASTParser,Java Development Tooling (JDT) )

由于项目原因又用到了以前没接触到的东东(JAVACC,ASTParser,Java Development Tooling (JDT) ) 初步学习中.......加油啊!!!!!         J...
  • it_man
  • it_man
  • 2006年11月02日 16:30
  • 3221

探索 Eclipse 的 ASTParser

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

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

这是一个关于抽象语法树(Abstract Syntax Tree, AST)的故事。 抽象语法树是对程序代码的结构化表示,是对代码进行词法分析、语法分析后得到的产物。编译器要用到它,很多生产力工...
  • zhangkongzhongyun
  • zhangkongzhongyun
  • 2016年03月15日 20:33
  • 1299
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Eclipse JDT--ASTParser介绍
举报原因:
原因补充:

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