使用Eclipse AST生成java源代码(一)

一、AST版“Hello World”

public class HelloWorld {
	public static void main(String[] args) {
		AST ast = AST.newAST(AST.JLS3);
		CompilationUnit compilationUnit = ast.newCompilationUnit();

		// 创建类
		TypeDeclaration programClass = ast.newTypeDeclaration();
		programClass.setName(ast.newSimpleName("HelloWorld"));
		programClass.modifiers().add(
				ast.newModifier(ModifierKeyword.PUBLIC_KEYWORD));
		compilationUnit.types().add(programClass);

		// 创建包
		PackageDeclaration packageDeclaration = ast.newPackageDeclaration();
		packageDeclaration.setName(ast.newName("com.dream"));
		compilationUnit.setPackage(packageDeclaration);

		MethodDeclaration main = ast.newMethodDeclaration();
		main.setName(ast.newSimpleName("main"));
		main.modifiers().add(
				ast.newModifier(Modifier.ModifierKeyword.PUBLIC_KEYWORD));
		main.modifiers().add(ast.newModifier(ModifierKeyword.STATIC_KEYWORD));
		main.setReturnType2(ast.newPrimitiveType(PrimitiveType.VOID));
		programClass.bodyDeclarations().add(main);
		Block mainBlock = ast.newBlock();
		main.setBody(mainBlock);

		// 给main方法定义String[]参数
		SingleVariableDeclaration mainParameter = ast
				.newSingleVariableDeclaration();
		mainParameter.setName(ast.newSimpleName("arg"));
		mainParameter.setType(ast.newArrayType(ast.newSimpleType(ast
				.newName("String"))));
		main.parameters().add(mainParameter);
		
		MethodInvocation println=ast.newMethodInvocation();
		println.setName(ast.newSimpleName("prinln"));
		
		//生成String类型的常量
		StringLiteral s=ast.newStringLiteral();
		s.setLiteralValue("Hello World");
		println.arguments().add(s);
		
		println.setExpression(ast.newName("System.out"));
		
		mainBlock.statements().add(ast.newExpressionStatement(println));
		
		System.out.println(compilationUnit.toString());
	}
}

 上面的代码只是生成了一个只有一个main方法的类,并且main方法里面只有一行System.out.println("Hello World");

需要注意的几点:

  1. AST ast = AST.newAST(AST.JLS3);AST.JLS3为版本,如果生成的代码中用到try的话,要用AST.JLS4这个版本
  2. println.setExpression(ast.newName("System.out"));如果只是调用某个变量的方法,参数可以用ast.newSimpleName和ast.newName,如果中间的表达式很复杂,会出现一些java变量定义不允许的字符,就必须用ast.newName。Name和SimpleName都是从Expression中继承而来,所以只要用到Expression的地方,都可以直接用ast.newName。
  3. 所有的import都要自己手动加入,本例中没有。

二、用AST解析java源代码。

ASTParser parsert = ASTParser.newParser(AST.JLS4);
		String contents = "public class T{public void t(){Object o;o=System.out;}}";
		parsert.setSource(contents.toCharArray());
		// 使用解析器进行解析并返回AST上下文结果(CompilationUnit为根节点)
		CompilationUnit result = (CompilationUnit) parsert.createAST(null);
		TypeDeclaration type = (TypeDeclaration) result.types().get(0);
		MethodDeclaration method = type.getMethods()[0];
		ExpressionStatement ifs = (ExpressionStatement) method.getBody().statements().get(1);
		Assignment expression=(Assignment)ifs.getExpression();
		Expression exp=expression.getRightHandSide();

 在ast中,所有的节点开成一个树,根节点为ast对象,根节点不同的两个节点不能互相添加。所以如果你想把解析出来的节点加到你自己生成的节点上,那你只有去改源代码了。在CompilationUnitResolver类的convert中的276行AST ast = AST.newAST(apiLevel);它每次都会新建一个AST,修改的办法就是重载一下这个方法,加一个AST参数。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要导出Java源代码,可以按照以下步骤操作: 1. 在Eclipse中打开要导出的Java项目。 2. 在Eclipse的菜单栏中选择“File”(文件)选项,然后选择“Export”(导出)。 3. 在弹出的“Export”对话框中,选择“Java”文件夹下的“Java”选项,然后单击“Next”(下一步)按钮。 4. 在“Java”导出向导中,选择要导出的Java项目和要导出的源代码文件夹,然后单击“Finish”(完成)按钮。 5. 在导出完成后,可以在指定的目录中找到导出的Java源代码文件。 希望这些步骤能够帮助您成功导出Java源代码。 ### 回答2: 在Eclipse中,导出Java源代码的步骤如下: 1. 打开要导出的Java项目或文件,点击菜单栏的“File”选项,选择“Export”。 2. 在弹出的导出窗口中,展开“Java”文件夹,选择“Java文件”。 3. 在“Java文件”对话框中,选择要导出的源代码文件所在的项目。 4. 在“Select directory to store Java source files”栏中,选择要将源代码导出到哪个文件夹中。 5. 点击“Finish”按钮,系统即会开始将源代码导出到指定的文件夹中。 需要注意的是,如果要导出整个Java项目,而不是单个Java文件,步骤与上述略有不同。在第3步选择要导出的Java项目,而不是单个文件。在第4步中,也需要选择一个存储Java源代码的文件夹。导出时,系统会自动将整个项目的Java源代码导出到该文件夹中。 ### 回答3: EclipseJava开发的一个集成开发环境(IDE),在开发Java程序时,我们常常需要导出源代码以便交付给别人或者保存自己的备份。下面是如何导出Java源代码的步骤: 1. 在Eclipse的Package Explorer视图中,右击你要导出的项目或文件夹。 2. 在弹出的菜单中,选择“Export…” 3. 在弹出的“Export”对话框中,选择“General”目录下的“File System”选项,然后点击“Next”按钮。 4. 在下一个对话框中,选择你要将导出文件保存的位置和路径,然后点击“Finish”按钮。 5. 在文件系统中打开导出文件夹,你会发现Java源代码已经被导出到指定的位置。 需要注意的是,在导出Java源代码时,可以选择是否包括依赖库等附加文件。同时,如果你需要将Java源代码打包压缩也可以选择其他导出选项,如JAR、WAR、EAR等格式。 总之,导出Java源代码是非常简单的,只需要几个简单的步骤就可以完成。希望这个回答对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值