如何让蚂蚁把一个包指令放在几个源文件中?
How to make ant put a package directive in several source files?
我正在使用 Antlr4 构建解析器,我正在使用 Netbeans 作为 IDE 和 ant
作为构建系统。 Ant 运行 Antlr,它在项目的 src/
目录中生成 parser.java
和 lexer.java
。
它们都需要一个包指令,所以我必须手动添加它。
有没有办法用 Ant 为目录中的所有源文件添加一行文本?或者还有其他解决方案吗? (也许使用 Antlr?)
您可以使用 antlr4 命令行的 -o
选项和语法中的 @header{...}
的组合:
-o
允许您指定将生成所有输出的输出目录,
@header{...}
会将您编写的代码插入 {..}
作为生成的代码头,这样您就可以将包声明放入此块中。
例如:
grammar myGrammar;
@header {
package my.package;
}
...
如果您不想将语法绑定到特定语言,可以使用 -package
选项(允许您为生成的文件指定包或命名空间)并从中删除包声明您的 @header{...}
代码。
有一个奇怪的警告,其中 @header {...} 在组合词法分析器+解析器的语法中有效。但是,对于单独的词法分析器和解析器语法文件,每个文件都必须将 header 声明为
@lexer::header { ... }
// or
@parser::header { ... }
否则只有解析器会添加 header(注意事项)。
此外,正如 Vincent 所提到的,有一个命令行选项,但同样需要注意。
我正在使用 Antlr4 构建解析器,我正在使用 Netbeans 作为 IDE 和 ant
作为构建系统。 Ant 运行 Antlr,它在项目的 src/
目录中生成 parser.java
和 lexer.java
。
它们都需要一个包指令,所以我必须手动添加它。
有没有办法用 Ant 为目录中的所有源文件添加一行文本?或者还有其他解决方案吗? (也许使用 Antlr?)
您可以使用 antlr4 命令行的 -o
选项和语法中的 @header{...}
的组合:
-o
允许您指定将生成所有输出的输出目录,@header{...}
会将您编写的代码插入{..}
作为生成的代码头,这样您就可以将包声明放入此块中。
例如:
grammar myGrammar;
@header {
package my.package;
}
...
如果您不想将语法绑定到特定语言,可以使用 -package
选项(允许您为生成的文件指定包或命名空间)并从中删除包声明您的 @header{...}
代码。
有一个奇怪的警告,其中 @header {...} 在组合词法分析器+解析器的语法中有效。但是,对于单独的词法分析器和解析器语法文件,每个文件都必须将 header 声明为
@lexer::header { ... }
// or
@parser::header { ... }
否则只有解析器会添加 header(注意事项)。
此外,正如 Vincent 所提到的,有一个命令行选项,但同样需要注意。