eclipseJDT,eclipseast,抽象语法树.doc

  1. 1、本文档共16页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
eclipseJDT,eclipseast,抽象语法树

Eclipse JDT -- AST 介绍 1,什么是AST(Abstract Syntax Tree(AST,中文为抽象语法树) 1-1,Eclipse JDT 有自己的文档对象模型(DOM),这个文档模型就是AST, 1-2,AST就是表示一个java文件的代码层次结果,java中的每个代码在AST都表示为结点(ASTNOde),所以我们可以对其中的结(ASTNode)点进行增加删除,修改,遍历。 1-3,综上我们可能得出,得用eclipse AST我们可以解析java代码。 2,使用eclipse AST所用到的包,eclpise安装目录plugins下面可以找到如下: Eclipse JDT -- AST 遍历(1)ASTNode介绍 1-1,实例ComilationUnit 新建:Util类: public static CompilationUnit getCompilationUnit(String javaContent){ ASTParser parser = ASTParser.newParser(AST.JLS3); //*1 parser.setKind(ASTParser.K_COMPILATION_UNIT); //*2 parser.setSource(javaContent.toCharArray()); //*3 parser.setResolveBindings(true); //*4 CompilationUnit result = (CompilationUnit) parser.createAST(null); //*5 return result; } CompilationUnit 是AST的根节点类 *1,实例化ASTParser,你要告诉parser要解析的java语法,如下三种: AST.JLS2:Java Language Specification, 2nd Edition,本文只针对JLS3或都JLS4,如果你想用JLS2,请自行参考:/developerworks/cn/opensource/os-ast/ AST.JLS3:Java Language Specification, 3rd Edition AST.JLS4:有try,catch语句块,用JLS4, *2,你要告诉parser需要解析的内容类型。ASTParser支持对以下四种内容的解析: a. K_COMPILATION_UNIT: 一个编译单元,一般就是完整的Java文件 b. K_STATEMENTS: Java statements,比如赋值语句,或是if语句块,while语句块等。此类型不需要文件是完整的编译单元,但需要是完整的statements。比如if语句块要作为一个完整的statement输入,否则会报错。 c. K_EXPRESSION: Java expressions d. K_CLASS_BODY_DECLARATIONS: Java class里的元素 *3,设置java代码,java代码可以通过文件流从java文件中得到,也可以自己拼接String,记得需要的是一个char[] *4,如果解析的内容类型的一个完整的java类,则可以不用设置,如果只是片断,则需要设定为true. *5,需要Parser得到一个AST根对象CompilationUnit 1-2,在Util类添加一个读取java文件的方法: public static String getJavaFromFile(String javaFilePath) throws Exception{ FileInputStream reader = new FileInputStream(new File(javaFilePath)); byte[] bs = new byte[reader.available()]; reader.read(bs, 0, reader.available()); String javaContent = new String(bs); return javaContent; } 2-1,ASTNode结构图 2-2,java结构说明: 2-2-1,一个java文件中:主要包含三大块(如图):其中包引入可以有多个,类申明也可以有多个。 当然还有注释和注解两部分: 2-2-2 在类中也主要包含三大块:全局变量(Field),方法(Method),内部类(InnerClass),另外还有:方法注解,变量注解,方法注释,字段注释,static块,如图:

文档评论(0)

haocen + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档