Antlr4 如何为不同目录/包中的语法文件导入(或使用tokenVocab)?
我在如下目录中有两个语法文件:Antlr4 如何为不同目录/包中的语法文件导入(或使用tokenVocab)?,antlr4,Antlr4,我在如下目录中有两个语法文件: +- antlr4 +- common | +- Numbers.g4 +- lang +- Lang.g4 在Lang.g4中,我尝试: grammar Lang; options { tokenVocab = common.Numbers; } 但我有一个错误: cannot find tokens file <PROJECT_LOCATION>/target/g
+- antlr4
+- common
| +- Numbers.g4
+- lang
+- Lang.g4
在Lang.g4
中,我尝试:
grammar Lang;
options {
tokenVocab = common.Numbers;
}
但我有一个错误:
cannot find tokens file <PROJECT_LOCATION>/target/generated-sources/antlr4/common.Numbers.tokens
找不到令牌文件/target/generated sources/antlr4/common.Numbers.tokens
我是否仅限于将所有语法和lexer文件放在同一个目录中?您不受限制
在Lang.g4
语法目录中应该有一个Numbers.token
文件。之后,您可以通过以下方式使用tokenVocab
:
options {
tokenVocab = Numbers;
}
要将生成的文件放置到自定义位置,可以使用
-o
命令行参数。请参见此处:。我认为问题在于Antlr Intellij插件。它显示错误,当我实际生成解析器时不会发生错误。。令牌
的解析规则与词法语法
的解析规则不同。我到处都有坏令牌def