【问题标题】:antlr panic on pascal grammarantlr 对帕斯卡语法的恐慌
【发布时间】:2016-11-29 23:40:16
【问题描述】:

我想生成Pascal java 解析器,然后在我的gradle 应用程序中使用它。

对于Pascal我使用了这个语法 https://github.com/antlr/grammars-v4/tree/master/pascal

我的build.gradle 看起来像这样。我使用了antlr 插件。

apply plugin: 'groovy'
apply plugin: 'antlr'

repositories {
    jcenter()
}

dependencies {
    compile 'org.codehaus.groovy:groovy-all:2.4.6'
    compile 'org.antlr:antlr4:4.5.3'

    testCompile 'org.spockframework:spock-core:1.0-groovy-2.4'
    testCompile 'junit:junit:4.12'
}

但是当我尝试运行任务 generateGrammarSource 时,我得到了这个错误

:generateGrammarSource
L:\app\src\main\antlr\pascal.g4:36:1: unexpected token: grammar
error: Token stream error reading grammar(s):
L:\app\src\main\antlr\pascal.g4:804:8: expecting ''', found '='
L:\app\src\main\antlr\pascal.g4:36:1: unexpected token: grammar
error: Token stream error reading grammar(s):
L:\app\src\main\antlr\pascal.g4:804:8: expecting ''', found '='
L:\app\src\main\antlr\pascal.g4:36:1: rule grammar trapped:
L:\app\src\main\antlr\pascal.g4:36:1: unexpected token: grammar
TokenStreamException: expecting ''', found '='
:generateGrammarSource FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':generateGrammarSource'.
> There was 1 error during grammar generation
   > ANTLR Panic: TokenStreamException: expecting ''', found '='

这是什么问题?

【问题讨论】:

    标签: java gradle antlr


    【解决方案1】:

    来自https://docs.gradle.org/current/userguide/antlr_plugin.html#sec:antlr_dependency_management的插件文档

    “antlr:antlr:2.7.7 将被用作默认值。”

    要更改这个,只需说出要使用的版本,如下所示

    dependencies {
        //antlr "org.antlr:antlr:3.5.2" // use ANTLR version 3
        antlr "org.antlr:antlr4:4.5" // use ANTLR version 4
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-21
      • 1970-01-01
      • 1970-01-01
      • 2011-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-19
      相关资源
      最近更新 更多