我在这样的目录中有两个语法文件:
+- 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
我是否只能将所有语法和词法分析器文件放在同一目录中?
最佳答案
你不受限制。
您应该在 Lang.g4
语法目录中有一个 Numbers.token
文件。之后您可以通过以下方式使用tokenVocab
:
options {
tokenVocab = Numbers;
}
要将生成的文件放置到自定义位置,您可以使用 -o
命令行参数。参见这里:ANTLR Tool Command Line Options .
关于antlr4 - 如何导入(或使用 tokenVocab)不同目录/包中的语法文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42749216/