我想使用AstBuilder创建groovy代码,但之后,我想看看实际的groovy代码是什么样的。 是否可以将AST节点的toString输出转换为:
org.codehaus.groovy.ast.stmt.BlockStatement@5b7a5baa[
org.codehaus.groovy.ast.stmt.ExpressionStatement@776aec5c[
expression:org.codehaus.groovy.ast.expr.DeclarationExpression@1d296da[
org.codehaus.groovy.ast.expr.VariableExpression@7c7a06ec[
variable: cl]("=" at 2:17: "=" )org.codehaus.groovy.ast.expr.ClosureExpression@13c9d689[
]{ org.codehaus.groovy.ast.stmt.BlockStatement@75d4a5c2[
] }]]]
回到groovy代码?
答案 0 :(得分:3)
您可以使用我在使用AST转换时使用的最喜欢的代码段:
java.io.StringWriter writer = new java.io.StringWriter();
groovy.inspect.swingui.AstNodeToScriptVisitor visitor = new groovy.inspect.swingui.AstNodeToScriptVisitor(writer);
visitor.visitClass(node); // replace with proper visit****
System.out.println(writer.toString());
它将提供几乎正确的Groovy代码。它仍然不是100%正确(我的意思是,如果你将它编译回来然后它可能无法编译),但绰绰有余的调试。
MacroGroovy中的示例: