我使用Antlr4构建解析器,我使用Netbeans作为IDE,ant
作为构建系统。 Ant运行Antlr,在项目的parser.java
目录中生成lexer.java
和src/
。
他们都需要一个包指令,因此我必须手动添加它。
有没有办法在一个目录中为Ant中的所有源文件添加一行文本?或者还有其他解决方案吗? (也许和Antlr一起?)
答案 0 :(得分:1)
您可以在语法中使用-o
选项与antlr4命令行和@header{...}
的组合:
-o
允许您指定将生成所有输出的输出目录,
@header{...}
会将您编写的代码插入{..}
作为生成的代码标头,以便将包声明放入此块中。
例如:
grammar myGrammar;
@header {
package my.package;
}
...
如果您不想将语法与特定语言联系起来,可以使用-package
选项(允许您为生成的文件指定包或命名空间)并从{删除包声明{1}}代码。
答案 1 :(得分:0)
有一个奇怪的警告,其中@header {...}用于组合词法分析器+解析器的语法。但是对于单独的词法分析器和解析器语法文件,每个文件都必须将头部声明为
@lexer::header { ... }
// or
@parser::header { ... }
或者只有解析器会添加一个标题(这是警告)。
另外,正如文森特所提到的,有一个命令行选项,但同样的警告适用。