现把一些 Java代码生成对应的ASTNode方式列出来,供参考:
List 1 生成Package
// package astexplorer;java 代码
- PackageDeclaration packageDeclaration = ast.newPackageDeclaration();
- unit.setPackage(packageDeclaration);
- packageDeclaration.setName(ast.newSimpleName("astexplorer"));
List 2 生成Import
// import org.eclipse.swt.SWT;
// import org.eclipse.swt.events.*;
// import org.eclipse.swt.graphics.*;
// import org.eclipse.swt.layout.*;
// import org.eclipse.swt.widgets.*;java 代码
- for (int i = 0; i < IMPORTS.length; ++i) {
- ImportDeclaration importDeclaration = ast.newImportDeclaration();
- importDeclaration.setName(ast.newName(getSimpleNames(IMPORTS[i])));
- if (IMPORTS[i].indexOf("*") > 0)
- importDeclaration.setOnDemand(true);
- else
- importDeclaration.setOnDemand(false);
-
- unit.imports().add(importDeclaration);
- }
List 3 生成Class Declaration
// public class SampleComposite extends Composite
java 代码
- TypeDeclaration classType = ast.newTypeDeclaration();
- classType.setInterface(false);
- classType.setModifiers(Modifier.PUBLIC);
- classType.setName(ast.newSimpleName("SampleComposite"));
- classType.setSuperclass(ast.newSimpleName("Composite"));
- unit.types().add(classType);
List 4 生成Constructor Declaration
// public SampleComposite(Composite parent,int style){}
java 代码
- MethodDeclaration methodConstructor = ast.newMethodDeclaration();
- methodConstructor.setConstructor(true);
- methodConstructor.setModifiers(Modifier.PUBLIC);
- methodConstructor.setName(ast.newSimpleName("SampleComposite"));
- classType.bodyDeclarations().add(methodConstructor);
-
-
-
- SingleVariableDeclaration variableDeclaration = ast.newSingleVariableDeclaration();
- variableDeclaration.setModifiers(Modifier.NONE);
- variableDeclaration.setType(ast.newSimpleType(ast.newSimpleName("Composite")));
- variableDeclaration.setName(ast.newSimpleName("parent"));
- methodConstructor.parameters().add(variableDeclaration);
-
- variableDeclaration = ast.newSingleVariableDeclaration();
- variableDeclaration.setModifiers(Modifier.NONE);
- variableDeclaration.setType(ast.newPrimitiveType(PrimitiveType.INT));
- variableDeclaration.setName(ast.newSimpleName("style"));
- methodConstructor.parameters().add(variableDeclaration);
- Block constructorBlock = ast.newBlock();
- methodConstructor.setBody(constructorBlock);
List 5 生成Spuer Invocation
// super(parent,style)
java 代码
- SuperConstructorInvocation superConstructorInvocation = ast.newSuperConstructorInvocation();
- constructorBlock.statements().add(superConstructorInvocation);
- Expression exp = ast.newSimpleName("parent");
- superConstructorInvocation.arguments().add(exp);
- superConstructorInvocation.arguments().add(ast.newSimpleName("style"));
List 6 生成ClassInstanceCreation
// GridLayout gridLayout = new GridLayout();
java 代码
- VariableDeclarationFragment vdf = ast.newVariableDeclarationFragment();
- vdf.setName(ast.newSimpleName("gridLayout"));
- ClassInstanceCreation cc = ast.newClassInstanceCreation();
- cc.setName(ast.newSimpleName("GridLayout"));
- vdf.setInitializer(cc);
- VariableDeclarationStatement vds = ast.newVariableDeclarationStatement(vdf);
- vds.setType(ast.newSimpleType(ast.newSimpleName("GridLayout")));
- constructBlock.statements().add(vds);
// Label label = new Label(this,SWT.NONE);
java 代码
- VariableDeclarationFragment vdf = ast.newVariableDeclarationFragment();
- vdf.setName(ast.newSimpleName("label"));
- cc = ast.newClassInstanceCreation();
- cc.setName(ast.newSimpleName("Label"));
- cc.arguments().add(ast.newThisExpression());
- cc.arguments().add(ast.newName(getSimpleNames("SWT.NONE")));
- vdf.setInitializer(cc);
- VariableDeclarationStatement vds = ast.newVariableDeclarationStatement(vdf);
- vds.setType(ast.newSimpleType(ast.newSimpleName("Label")));
- constructBlock.statements().add(vds);
List 7生成MethodInvocation
// setLayout(gridLayout);
java 代码
- MethodInvocation mi = ast.newMethodInvocation();
- mi.setName(ast.newSimpleName("setLayout"));
- mi.arguments().add(ast.newSimpleName("gridLayout"));
- constructorBlock.statements().add(ast.newExpressionStatement(mi));
// label.setText("Press the button to close:");
java 代码
- mi = ast.newMethodInvocation();
- mi.setExpression(ast.newSimpleName("label"));
- mi.setName(ast.newSimpleName("setText"));
- StringLiteral sl = ast.newStringLiteral();
- sl.setLiteralValue("Press the button to close:");
- mi.arguments().add(sl);
- constructorBlock.statements().add(ast.newExpressionStatement(mi));
// label.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_CENTER));
java 代码- mi = ast.newMethodInvocation();
- mi.setExpression(ast.newSimpleName("label"));
- mi.setName(ast.newSimpleName("setLayoutData"));
-
- cc = ast.newClassInstanceCreation();
- cc.setName(ast.newSimpleName("GridData"));
- cc.arguments().add(ast.newName(getSimpleNames("GridData.HORIZONTAL_ALIGN_CENTER")));
- mi.arguments().add(cc);
- constructorBlock.statements().add(ast.newExpressionStatement(mi));
// Button button = new Button(this,SWT.PUSH);
java 代码
- vdf = ast.newVariableDeclarationFragment();
- vdf.setName(ast.newSimpleName("button"));
- vds = ast.newVariableDeclarationStatement(vdf);
- vds.setType(ast.newSimpleType(ast.newSimpleName("Button")));
- constructorBlock.statements().add(vds);
-
- cc = ast.newClassInstanceCreation();
- cc.setName(ast.newSimpleName("Button"));
- vdf.setInitializer(cc);
- cc.arguments().add(ast.newThisExpression());
- cc.arguments().add(ast.newName(getSimpleNames("SWT.PUSH")));
// button.addSelectionListener(new SelectionAdapter() {});
java 代码
- mi = ast.newMethodInvocation();
- constructorBlock.statements().add(ast.newExpressionStatement(mi));
- mi.setExpression(ast.newSimpleName("button"));
- mi.setName(ast.newSimpleName("addSelectionListener"));
-
- ClassInstanceCreation ci = ast.newClassInstanceCreation();
- ci.setName(ast.newSimpleName("SelectionAdapter"));
- mi.arguments().add(ci);
- AnonymousClassDeclaration cd = ast.newAnonymousClassDeclaration();
- ci.setAnonymousClassDeclaration(cd);
分享到:
相关推荐
java开发常用 jdt-compiler-3.1.1.jar
本资料“基于Eclipse-JDT生成Java源代码的AST并可视化.zip”着重介绍了如何利用Eclipse JDT来生成Java源代码的抽象语法树(Abstract Syntax Tree, AST)并进行可视化展示。 首先,让我们深入了解什么是AST。AST是一...
标题中的"jdt-language-server-0.45.0-201910031256.tar.gz"是一个软件包,基于其命名规则,我们可以推断它是一个使用tar.gz格式压缩的文件,这种格式在Linux和Unix环境中常见。"jdt-language-server"部分表明这是...
《jasper-compiler-jdt-5.5.15.jar:解决IReporter编译问题的利器》 在IT行业中,报告生成是企业级应用的重要组成部分,而 JasperReports 是一款广泛使用的开源报表工具,它允许开发者创建复杂的报表并嵌入到Java...
Eclipse 3.0.1 和 NLpack-eclipse-JDT-SDK-3.0.x 是两个重要的组件,它们在IT领域特别是Java开发中扮演着关键角色。Eclipse是一款开源的集成开发环境(IDE),而NLpack-eclipse-JDT-SDK则是针对Eclipse的一款插件,...
**Homebrew-JDT-Language-Server:Eclipse JDT 语言服务器的Homebrew公式** Homebrew 是一个开源的包管理器,主要用于 macOS 系统,它允许用户方便地安装、管理和升级命令行工具。Eclipse JDT(Java Development ...
包括以下包:jdt-3.2.1-r321_v20060823.jar、 jdt-3.3.0-v20070607-1300.jar、jdt-3.4.2_r894.jar、jdt-compiler.jar、org.eclipse.datatools.enablement.jdt.classpath_1.0.1.v201107221501.jar、org.eclipse.jdt....
- [Exploring Eclipse AST Parser](http://www.ibm.com/developerworks/cn/opensource/os-ast/index.html#resources) - [Eclipse JDT - AST and Java Model Tutorial]...
eclipse-JDT-3.2.2 免费下载 完全版eclipse-JDT-3.2.2 免费下载 完全版eclipse-JDT-3.2.2 免费下载 完全版eclipse-JDT-3.2.2 免费下载 完全版eclipse-JDT-3.2.2 免费下载 完全版eclipse-JDT-3.2.2 免费下载 完全版...
总结来说,"jdt-compiler-3.1.1 + itext-2.1.7 + iTextAsian"的组合为Java开发提供了强大的PDF生成和中文显示功能,尤其是在ireport报表设计中。同时,正确配置字体是确保中文正确显示的关键。开发者需要理解这些库...
eclipse-jdt-3.6.1-6.13.el6.i686.rpm
首先,使用Eclipse JDT(Java开发工具)生成并解析Abstract语法树,然后将其转换为点格式。 在您的eclipse文件夹中写入了一个包含点格式AST的新文件。 到目前为止,点格式仅包含有关Java代码的基本信息。 例子: ...
标题中的"jdt.rar_jdt-compiler.jar"指的是Java Development Toolkit (JDT) 的一部分,具体是JDT的编译器组件,即`jdt-compiler.jar`。JDT是Eclipse IDE的一个核心插件,它提供了强大的Java编程支持,包括代码编辑、...
总的来说,"jdt-needed"这个压缩包是Eclipse ASTView的运行必需组件,它涵盖了从Java源代码解析到图形化展示AST的全过程所涉及的关键技术,对于Java开发人员和语言处理工具的开发者来说,这些都是深入理解Java语言...
要获取ASTNode的子节点,我们不能直接调用`getChildren()`方法,因为ASTNode没有提供这个方法。相反,子节点通过特定的属性关联到父节点。例如,TypeDeclaration节点(表示类声明)可能包含一个SimpleName节点(表示...
根据给定的文件信息,我们可以总结出以下关于Eclipse JDT 2.0插件开发者指南的相关知识点: ### 一、概述 Eclipse JDT(Java Development Tools)2.0 插件开发者指南是一份由OTI(Open Tooling Initiative)编写的...
在标题中提到的“eclipse-JDT-3.3.1.zip”是一个Eclipse JDT的特定版本,即3.3.1版本的归档文件。这个版本发布于2007年,作为Eclipse 3.3(Europa)的一部分,它包含了用于开发Java应用程序的各种工具和API。 ...