我现在阅读了很多关于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.
所以这就是问题:
如何将星号变成可处理的东西?
答案 0 :(得分:0)
解析完成后我试图获得CST。但它总是空的,我无法找到原因。 但我找到了另一种方法: http://java.dzone.com/articles/run-your-antlr-dsl-groovy