antlr4 - 如何导入(或使用 tokenVocab)不同目​​录/包中的语法文件?

标签 antlr4

我在这样的目录中有两个语法文件:

 +- 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/

相关文章:

ANTLR4 使用 HIDDEN channel 会导致错误,而使用跳过不会

antlr4 - ANTLR - 用单引号括起来的数字

java - Antlr4 - 是否有使用 ParseTree Walker 的简单示例?

java - 使用ANTLR和Java创建数据绑定(bind)代码生成器

parsing - ANTLR词法分析器如何消除其规则的歧义(或者为什么我的解析器会产生 "mismatched input"错误)?

ANTLR4 力 LL(1)

antlr4 - 处理以ANTLR4中的转义引号结尾的字符串文字

antlrworks - 如何在ANTLR 4字符串匹配中排除“和\?

java - 如何使用 ANTLR 构建交互式解析器?

antlr4 - 关于处理 ANTLR 4 语法中不明确运算符的建议