如何让ant将包指令放在几个源文件中?

时间:2015-02-19 04:21:07

标签: java ant antlr4

我使用Antlr4构建解析器,我使用Netbeans作为IDE,ant作为构建系统。 Ant运行Antlr,在项目的parser.java目录中生成lexer.javasrc/

他们都需要一个包指令,因此我必须手动添加它。

有没有办法在一个目录中为Ant中的所有源文件添加一行文本?或者还有其他解决方案吗? (也许和Antlr一起?)

2 个答案:

答案 0 :(得分:1)

您可以在语法中使用-o选项与antlr4命令行和@header{...}的组合:

  • -o允许您指定将生成所有输出的输出目录,

  • @header{...}会将您编写的代码插入{..}作为生成的代码标头,以便将包声明放入此块中。

例如:

grammar myGrammar;

@header {
    package my.package;
}
...

如果您不想将语法与特定语言联系起来,可以使用-package选项(允许您为生成的文件指定包或命名空间)并从{删除包声明{1}}代码。

答案 1 :(得分:0)

有一个奇怪的警告,其中@header {...}用于组合词法分析器+解析器的语法。但是对于单独的词法分析器和解析器语法文件,每个文件都必须将头部声明为

@lexer::header { ... }
// or 
@parser::header { ... }

或者只有解析器会添加一个标题(这是警告)。

另外,正如文森特所提到的,有一个命令行选项,但同样的警告适用。