- 1、本文档共16页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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块,如图:
您可能关注的文档
最近下载
- Unit 6 Understanding ideas Longji Rice Terraces 课件-高中英语外研版(2019)必修第一册.pptx VIP
- 护理学导论(高职)教学教案.docx
- 2024年部编新改版语文六年级上册全册月考试题含答案(共4套).docx
- 饮用水和环境卫生公众健康宣教及风险沟通答案-2024年全国疾控系统“大学习”活动.docx VIP
- 新型冠状病毒、甲型和乙型流感病毒全预混冻干多重荧光PCR检测试剂盒及其检测方法发明专利.pdf VIP
- 基金会捐赠协议.doc VIP
- XX市智慧安居工程(一期)报警求助综合受理指挥分系详细设计方案.doc VIP
- 《乡土中国》 第11篇 《长老统治》.ppt
- [知识]职业生涯人物访谈(教师).pdf VIP
- 第六单元整本书阅读《西游记》课件 2024—2025学年统编版语文七年级上册.pptx VIP
文档评论(0)