1

요즘 AST 변환에 대해 많이 읽었으므로 groovy가 알지 못하는 임의의 리터럴을 처리하고 싶습니다. 구체적인 생각은 groovy가 plain SQL을 처리 할 수있게하는 것입니다. 당신이 groovyConsole에에 select a from tab where b = 'x'을 작성하는 경우Groovy AST 변환을 사용하여 임의의 리터럴을 처리하십시오.

에서, AST는 어떤 노력으로 어느 시점

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

에서 다음과 같습니다, SQL 문이 점을 설정 할 수 있어야한다. 별표를 사용하지 않는 한 모든 것은 괜찮습니다. 내가 select * from tab 작성하는 경우 더 AST 내장 할 수 없다 (상관없이 상) 및 오류가 occures : 그래서 여기

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

AST 변환을 특별히 찾고 있습니까? 아니면 다른 방법을 사용할 수 있습니까? – robkuz

+0

나는 대서양도 (AST) 방법을 찾고있다. 그러나 다른 접근법도 잘 알고 있습니다. 사실, 처음에 나는 AST 변환없이 그것을 시도했지만, 그것은 AST 변환만을 사용하여 이것을 할 수있는 것처럼 보였다. –

+0

필자는 한번도 해본 적이 없지만 구문이 여전히 해석 될 때 CompilerPhase.PARSING 단계에서 변환을 적용해야한다고 생각합니다. http://groovy.codehaus.org/Compiler+Phase+Guide – bdkosher

답변

관련 문제