快速业务通道

探索Eclipse的ASTParser - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17
是一组 SimpleNames。QualifiedName 的外部表示是(比方说) org.eclipse.swt.widgets。因此,实质上只要您使用点(dot),您就是在使用 QualifiedName。ast.newName() 方法接收一个字符串数组来创建 Name 节点。在代码示例 中,我提供了一各方便的方法来解析带点(dot)的字符串,并创建字符串数组。

有 6 种主要的节点组:BodyDeclaration、Comment、Expression、Statement、Type 和 VariableDeclaration。BodyDeclarations 可以是类中的任何声明。比如,声明 private Point minimumSize; 的创建代码如下所示:

清单 3. 创建 VariableDeclaration

VariableDeclarationFragment vdf = ast.newVariableDeclarationFragment (); vdf.setName(ast.newSimpleName("minimumSize")); FieldDeclaration fd = ast.newFieldDeclaration(vdf); fd.setModifiers(Modifier.PRIVATE); fd.setType(ast.newSimpleType(ast.newSimpleName("Point")));

探索Eclipse的ASTParser(3)

时间:2011-04-11 IBM Manoel Marques

要注意如何从 VariableDeclarationFragment 创建 FieldDeclaration。AST 编程就是 组合不同的节点。您不需要使用像 XML DOM 中的 appendChild() 或 insertBefore() 这 样的方法。相反,不同的节点类型有不同的创建和初始化方法。

刚刚看到的是一种 VariableDeclaration 类型的例子,即 VariableDeclarationFragment。还有一种类型 SingleVariableDeclaration,它主要用于 参数列表。比如,清单 4 说明了如何在 ControlAdapterImpl(Point size) 中创建参数 size。

清单 4. 创建方法参数

SingleVariableDeclaration variableDeclaration = ast.newSingleVariableDeclaration(); variableDeclaration.setModifiers(Modifier.NONE); variableDeclaration.setType(ast.newSimpleType(ast.newSimpleName ("Point"))); variableDeclaration.setName(ast.newSimpleName("size")); methodConstructor.parameters().add(variableDeclaration);

有三种类型的注释节点:BlockComment、Javadoc 和 LineComment。

AST Tree 仅支持 Javadoc 节点的创建和插入,它认为 BlockComment 和 LineComment 节点的具体定位存在问题,因此只在解析已有代码时才会看到这类节点。清单 5 显示了如 何创建 Javadoc 节点。

清单 5. 创建 Javadoc 节点

Javadoc jc = ast.newJavadoc(); TagElement tag = ast.newTagElement(); TextElement te = ast.newTextElement(); tag.fragments().add(te); te.setText("Sample SWT Composite class created using the ASTParser"); jc.tags().add(tag); tag = ast.newTagElement(); tag.setTagName(TagElement.TAG_AUTHOR); tag.fragments().add(ast.newSimpleName("Manoel Marques")); jc.tags().add(tag); classType.setJavadoc(jc);

Expression 和 Statement 节点是最常用的节点类型。示例代码中包含创建表达式和语 句节点的多个例子。可以使用 GridLayout gridLayout = new GridLayout() 创建一个简 单的语句:

清单 6. 创建语句

VariableDeclarationFragment vdf = ast.newVariableDeclarationFragment (); vdf.setName(ast.newSimpleName("gridLayout")); VariableDeclarationStatement vds = ast.newVariableDeclarationStatement (vdf); vds.setType(ast.newSimpleType(ast.newSimpleName("GridLayout"))); ClassInstanceCreation cc = ast.newClassInstanceCreation(); cc.setName(ast.newSimpleName("GridLayout")); vdf.setInitializer(cc); constructorBlock.statements().add(vds);

探索Eclipse的

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号