intellij-idea - Gradle 找不到 Antlr token 文件

标签 intellij-idea antlr4

我创建了一个文件 MyLexer.g4myproject/src/main/antlr/com/mypackage喜欢:

lexer grammar MyLexer;

DIGIT : '0' .. '9' ;

...
WS  : [ \t\r\n]+ -> skip ;

然后尝试在 MyParser.g4 中编写解析器在同一目录中:
grammar MyParser;

options
   { tokenVocab = MyLexer; }

SHORT_YEAR: DIGIT DIGIT;

不幸的是,当我运行 generateGrammarSource 的 gradle 任务时,出现以下错误:
error(160): com\mypackage\MyParser.g4:4:18: cannot find tokens file MYPROJECT\build\generated-src\antlr\main\MyLexer.tokens

IE。在不正确的位置寻找文件。

实际文件是在 MYPROJECT\build\generated-src\antlr\main\com\mypackage\MyLexer.tokens 中创建的

最佳答案

正如 Steven Spungin 所说,您需要将 ANTLR 源文件放在目录 src/main/antlr/ 中。而不是在该目录的子目录中。

您不需要添加 @header到您的 ANTLR 源文件。请改用以下内容。

在您的 build.gradle您应该具有(针对您的 ANTLR 版本进行了修改):

apply plugin: 'antlr'

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

generateGrammarSource {
    arguments += ['-package', 'com.mypackage']
    outputDirectory = new File(buildDir.toString() + "/generated-src/antlr/main/com/mypackage/")
}

关于intellij-idea - Gradle 找不到 Antlr token 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40995727/

相关文章:

java - Maven:从编译中排除文件在 IntelliJ IDEA 中不起作用

intellij-idea - 如何将新文件添加到 Go 项目

java - 返回不同类型的对象时,将访问者或监听器与 ANTLR4 一起使用

java - Antlr4 在自己的 Maven 模块中

ANTLR4 解析规则以匹配开/关括号

java - 如何为 getInstance 方法编写 Javadoc?

intellij-idea - 如何在Pycharm中使用 "Replace in selection"

java - intellij 中的方法范围搜索 - 查找所有异常

java - ANTLR4 解析器,未创建访客

c - 如何在 ANTLR 中为 C 解析器实现词法分析器 hack