Я экспериментирую с плагином antlr для gradle и пытаюсь сгенерировать некоторые исходные файлы для моей грамматики.Использование учебника ANTLR Mega в качестве руководства.Когда я вручную запускаю инструмент antlr4 на своей грамматике через терминал, он успешно работает и генерирует файлы * .java, * .tokens & * .interp.Я пытаюсь сгенерировать эти файлы с помощью плагина gradle и получаю сообщение об ошибке "> ANTLR Panic: TokenStreamException: неожиданный символ: '-'".
Ожидаю ли я, что gradle generateGrammarSources будет иметь эквивалентную функциональность для запуска команды antlr непосредственно в моей грамматике?
Файл грамматики основан на одном из примеров Antlr: https://github.com/antlr/grammars-v4/blob/master/arithmetic/arithmetic.g4
user-MBP:antlr user$ antlr4
ANTLR Parser Generator Version 4.7.2
user-MBP:main-project user$ ls src/main/antlr/
arithmetic.g4
user-MBP:antlr user$ antlr4 arithmetic.g4
user-MBP:antlr user$ ls
arithmetic.g4 arithmetic.tokens arithmeticLexer.interp arithmeticLexer.tokens arithmeticParser.java
arithmetic.interp arithmeticBaseListener.java arithmeticLexer.java arithmeticListener.java
Код Gradle, чтобы сделать то же самое:
apply plugin: 'antlr'
...
dependencies {
...
compile group: 'org.antlr', name: 'antlr4-runtime', version: '4.7.1'
...
}
// as the .g4 grammar file is already present in src/main/antlr, not // explicitly specifying any package directory
Выполнение команды gradle
user-MBP:main-project user$ gradle generateGrammarSource --stacktrace
Caused by: java.lang.RuntimeException: ANTLR Panic: TokenStreamException: unexpected char: '-'
at antlr.Utils.error(Utils.java:34)
at antlr.Tool.fatalError(Tool.java:445)
at antlr.Tool.doEverything(Tool.java:280)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
Я ожидаю, что вышеупомянутая команда gradle успешно выполнится и сгенерирует эквивалентные исходные файлы вкаталог build /, но он не работает.