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