使用Groovy AST Transformation处理一堆任意文字

时间:2015-01-23 07:02:35

标签: groovy compiler-construction transformation dsl abstract-syntax-tree

我现在阅读了很多关于AST转换的内容,现在我想处理一些Groovy不知道的任意文字。具体的想法是启用groovy处理普通sql。

如果你在GroovyConsole中编写select a from tab where b = 'x',AST在某些时候看起来像这样

MethodCall - this.select(a).from(tab).where((b = x))

通过一些努力,应该可以将其转换为sql语句。 所以一切都很好,只要我不使用星号。 如果我写select * from tab,则无法构建AST(无论哪个阶段)并且发生错误:

Unable to produce AST for this phase due to earlier compilation error:
startup failed:
script123.groovy: 1: expecting EOF, found 'tab' @ line1, column 15.

所以这就是问题:

如何将星号变成可处理的东西?

1 个答案:

答案 0 :(得分:0)

解析完成后我试图获得CST。但它总是空的,我无法找到原因。 但我找到了另一种方法: http://java.dzone.com/articles/run-your-antlr-dsl-groovy