强制 ANTLR 在特定文件夹中生成输出文件

Foa*_*oad 3 antlr antlr4

我不喜欢将 ANTLR 生成的文件与我的.g4语法和其他版本控制文档放在同一位置。我想将所有生成的文件放在一个单独的嵌套文件夹中,可以通过.gitignore. 到目前为止,我尝试的是<someFolder>在主文件夹内创建一个文件夹,然后从该文件夹内运行:

cd <someFolder>
antlr ../<grammarFile.g4>
Run Code Online (Sandbox Code Playgroud)

但是,它仍然会溢出父文件夹中的所有生成的文件。

PS这应该不重要,但我的环境是 macOS。

jur*_*rez 5

来自https://github.com/antlr/antlr4/blob/master/doc/tool-options.md

-o 外部目录

ANTLR默认在当前目录中生成输出文件。此选项指定 ANTLR 应在其中生成解析器、侦听器、访问者和标记文件的输出目录。

在上面的示例中,从主文件夹运行

antlr <grammarFile.g4> -o <someFolder>
Run Code Online (Sandbox Code Playgroud)

  • 附加说明:如果您使用语法路径运行antlr4 jar(不使用同一文件夹中的语法),它将在输出目录中重新创建相同的文件夹路径结构(这让人想起Java,其中包由文件夹)。如果您不想使用附加参数“-Xexact-output-dir” (9认同)