Я пытаюсь создать DSL и использую Global AST Transform для этого. Скрипт отлично компилируется с groovyc
, но я бы хотел, чтобы пользователь мог использовать Grab / Grape для извлечения JAR-файла и просто выполнить его сразу же, как отличный скрипт.
Затем я обнаружил, что не могу сделать это правильно, потому что в скрипте есть ошибка синтаксического анализа, если после вызова @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
Попытка разных вещей заставляет это работать, как оператор 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!"
Это ошибка в парсере?