【发布时间】:2011-04-20 08:10:56
【问题描述】:
我正在尝试构建一个 DSL 并使用全局 AST 转换来完成它。该脚本正在使用groovyc 进行编译,但我希望能够让用户使用 Grab/Grape 来拉取 JAR 并让它作为一个 groovy 脚本立即执行。
然后我发现我无法正确执行它,因为如果在@Grab调用之后没有方法声明或导入语句,则脚本中存在解析错误。
这是一个例子:
@Grab(group='mysql', module='mysql-connector-java', version='5.1.6')
println "Hello World!"
它看起来应该可以工作,但它抱怨(这是GroovyConsole Script的输出):
startup failed:
Script1.groovy: 4: unexpected token: println @ line 4, column 1.
println "hello"
^
1 error
尝试不同的东西让它起作用,比如导入语句:
@Grab(group='mysql', module='mysql-connector-java', version='5.1.6')
import groovy.lang.Object
println "Hello World!"
或者方法声明:
@Grab(group='mysql', module='mysql-connector-java', version='5.1.6')
def hello() {}
println "Hello World!"
这是解析器中的错误吗?
【问题讨论】:
-
当前时间(7 年后!v 2.4.13)
import groovy.lang.Object给出“无法解析类”错误。我改用java.lang.Object。
标签: syntax groovy abstract-syntax-tree