我可以在Groovy中使用AST转换来扩展其语法吗?

时间:2009-03-20 10:27:43

标签: groovy abstract-syntax-tree

我已经看到了如何使用Groovy AST转换来扩展语言的示例,例如:在方法调用之前和之后记录,如here所示。但是,是否也可以使用此框架来扩展语言本身的语法?例如,如果我希望能够将以下内容解析并转换为AST然后生成一组语句,那该怎么办:

newClassKeyword C { /* something here */ }

2 个答案:

答案 0 :(得分:2)

我不是Groovy专家,但我一直在研究1.6版本中出现的一些新框架,我特别感兴趣的是Spock。这可能正是您正在寻找的,因为他们使用AST转换来定义用于测试的整个规范语言。

我忘了添加InfoQ has an article,它概述了Groovy 1.6的新功能。 Guillaume LaForge写了这篇文章,并在其中描述了一些关于AST的内容。

答案 1 :(得分:1)

您无法使用AST转换扩展Groovy的语法,但您可以为现有语法提供全新的语义。因为Groovy的语法非常灵活,所以这可以让你走得很远。