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

时间:2017-03-12 15:25:36

标签: 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

我是否仅限于将所有语法和词法分析器文件放在同一目录中?

1 个答案:

答案 0 :(得分:1)

你不受限制。

Numbers.token语法目录中应该有一个Lang.g4文件。之后,您可以通过以下方式使用tokenVocab

options {
      tokenVocab = Numbers;
}

要将生成的文件放置到自定义位置,您可以使用-o命令行参数。见这里:ANTLR Tool Command Line Options