我创建了一个文件 MyLexer.g4
内myproject/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/