AST的一些概念(待续)

本文介绍了Eclipse JDT的重要组成部分EclipseAST,详细解释了ASTNode类及其派生类、AST类、ASTVisitor类和ASTRewrite类的作用。通过示例展示了如何使用ASTRewrite类修改Java源文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Eclipse AST是Eclipse JDT的一个重要组成部分,定义在org.eclipse.jdt.core.dom中,用来表示java语言中的所有语法结构。下面是api中一些核心类的概念:

1.ASTNode类及其派生类
 用于描述各种AST节点的类,每个AST节点表示一个Java源程序中的一个语法结构,例如,类型、表达式、语句或声明等。

2.AST类
 创建AST节点的工厂类,类中包含许多创建各类AST节点的工厂方法,程序员可以利用这些方法来创建AST.

3.ASTVisitor类
 AST的访问者抽象类,类中声明了一组访问各类AST节点的visit(),endVisit(),preVisit()方法。

4.ASTRewrite类
AST中跟持久相关的类,它的功能跟CompilationUnit.rewrite类似,只是它可以很好的处理多个源交替进行覆盖java文件的问题。下面是官方的例子。
Document document = new Document("import java.util.List;\nclass X {}\n");
ASTParser parser = ASTParser.newParser(AST.JLS3);
parser.setSource(document.get().toCharArray());
CompilationUnit cu = (CompilationUnit) parser.createAST(null);
AST ast = cu.getAST();
ImportDeclaration id = ast.newImportDeclaration();
id.setName(ast.newName(new String[] {"java", "util", "Set"}));
ASTRewrite rewriter = ASTRewrite.create(ast);
TypeDeclaration td = (TypeDeclaration) cu.types().get(0);
ITrackedNodePosition tdLocation = rewriter.track(td);
ListRewrite lrw = rewriter.getListRewrite(cu, CompilationUnit.IMPORTS_PROPERTY);
lrw.insertLast(id, null);
TextEdit edits = rewriter.rewriteAST(document, null);
UndoEdit undo = null;
try {
undo = edits.apply(document);
} catch(MalformedTreeException e) {
e.printStackTrace();
} catch(BadLocationException e) {
e.printStackTrace();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值