我正在尝试构建一个 DSL 并使用 Global AST Transform 来完成它。该脚本正在编译groovyc
很好,但我希望能够让用户使用 Grab/Grape 来提取 JAR,并让它作为常规脚本立即执行。
然后我发现我无法正确执行此操作,因为如果 @Grab 调用后没有方法声明或导入语句,则脚本中会出现解析错误。
这是一个例子:
@Grab(group='mysql', module='mysql-connector-java', version='5.1.6')
println "Hello World!"
看起来应该可以工作,但它抱怨(这是输出GroovyConsole 脚本 http://groovyconsole.appspot.com/edit/467003):
startup failed:
Script1.groovy: 4: unexpected token: println @ line 4, column 1.
println "hello"
^
1 error
尝试不同的东西让它起作用,比如 import 语句:
@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!"
这是解析器中的错误吗?