快速业务通道

探索Eclipse的ASTParser - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17
实例中运行代码。

探索Eclipse的ASTParser(10)

时间:2011-04-11 IBM Manoel Marques

遍历树

ASTNode 允许使用访问者模式(请参阅参考资料)遍历节点树。然后创建一个从 org.eclipse.jdt.core.dom.ASTVisitor 派生的类,将该类的实例传递给节点方法 accept()。调用该方法时,从当前节点开始向下,树中的每个节点都将被“访问”。对每 个节点都将调用以下方法:

preVisit(ASTNode node)

boolean visit(node)

endVisit(node)

postVisit(ASTNode node)

每种节点类型都有一个方法,visit() 和 endVisit()。参数节点的类型与访问节点对 应。如果 visit() 方法返回 false,那么该节点的子接点将不会被访问。

AST 树中没有显示注释节点,因为它们没有父子关系。方法 getParent() 返回 null。 通过调用编译单元的 getCommentList() 方法可以访问注释。如果需要显示注释,应该调 用该方法来单独访问每个注释节点。

该例中,类 ASTExplorerVisitor 在 preVisit() 方法中包含一段已注释的代码块,如 果没有取消注释,那么该代码块将显示作为编译单元的子节点的所有注释节点。

解析器错误是在编译单元类实例中返回的。getProblems() 方法返回 IProblem 实例数 组。这个 IProblem 类和编译错误使用的类相同。

一定要注意的是,ASTParser 不是一个编译器。只有当源文件中有一些代码影响到 AST 树的完整性时才会标记错误。

比方说,如果输入 classs 而不是输入 class,那么会影响到 TypeDeclaration 节点 的创建,这就是一个错误。另一方面,如果输入 private Stringgg str;,它是合法的, 因为可能存在一个叫做 Stringgg 类。只有编译器才能标记这个错误。要知道,合法的树 并不意味着编译也合法。

结束语

我们介绍了使用 ASTParser 时遇到的所有“窍门”。现在可以将这种 JDT 服务添加到 您的项目中了。还有很多的功能这里没有介绍,您可以直接使用它们。祝解析愉快!

来源:http://www.ibm.com/developerworks/cn/opensource/os-ast/index.html

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号