antlr4在.g4语法文件上运行良好,但gradle generateGrammarSources在同一文件上失败,该文件带有TokenStreamException:unexpected char:'-'/&引用;

antlr4在.g4语法文件上运行良好,但gradle generateGrammarSources在同一文件上失败,该文件带有TokenStreamException:unexpected char:'-'/&引用;,exception,gradle,antlr,antlr4,Exception,Gradle,Antlr,Antlr4,我正在试验gradle的antlr插件,并试图为我的语法生成一些源文件。使用ANTLR Mega教程作为指南。当我通过终端在语法上手动运行antlr4工具时,它成功地生成了*.java、*.tokens和*.interp文件。我试图通过gradle插件生成这些文件,但得到了一个错误 “>ANTLR恐慌:TokenStreamException:意外字符:'-'” 我是否希望gradle generateGrammarSources具有直接在我的语法上运行antlr命令的同等功能 语法文件基于An

我正在试验gradle的antlr插件,并试图为我的语法生成一些源文件。使用ANTLR Mega教程作为指南。当我通过终端在语法上手动运行antlr4工具时,它成功地生成了*.java、*.tokens和*.interp文件。我试图通过gradle插件生成这些文件,但得到了一个错误 “>ANTLR恐慌:TokenStreamException:意外字符:'-'”

我是否希望gradle generateGrammarSources具有直接在我的语法上运行antlr命令的同等功能

语法文件基于Antlr的一个示例:

执行相同操作的渐变代码:

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/目录中生成等效的源文件,但失败了。

我缺少在gradle依赖项中生成语法的antlr工具。ANTLR有两个组件: -用于从语法生成lexer和解析器的工具(antlr依赖项) -运行生成的源文件所需的运行时(antlr4运行时)

在my gradle dependencies中添加以下行解决了这个问题

    dependencies {
        ...
        antlr "org.antlr:antlr4:4.7.1"
        ...
    }
    dependencies {
        ...
        antlr "org.antlr:antlr4:4.7.1"
        ...
    }