我想使用AstBuilder创建groovy代码,但之后,我想看看实际的groovy代码是什么样子的。是否可以将AST节点的输出转换为如下所示的字符串:
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[
] }]]]
回到常规代码中?
2条答案
按热度按时间jgwigjjp1#
您可以使用我最喜欢的代码片段,我在处理AST转换时会用到它:
它将提供几乎正确的Groovy代码。它仍然不是100%正确的(我的意思是,如果你将它编译回来,那么它可能不会编译),但足够调试了。
MacroGroovy中的示例:
https://github.com/bsideup/MacroGroovy/blob/950193cb2d12443bf0c7b7af9635f24712d3bad0/src/main/groovy/ru/trylogic/groovy/macro/MacroTransformation.java#L58
gtlvzcf82#
类
AstNodeToScriptVisitor
现在是groovy子项目groovy-console包的一部分,在这里您可以找到从AST节点生成代码的类。在您的项目中,您可以导入此包,例如通过Gradle。