antlr:生成的Lexer源中缺少包声明

Gel*_*Luo 1 java antlr

我正在为lexer和parser使用一个.g文件.我在语法文件中有以下几行:

@header {
package foo.bar;
}
Run Code Online (Sandbox Code Playgroud)

但是我发现包行只被放入生成的解析器源文件中,并且在FooLexer.java文件中丢失.有谁知道如何处理这个?

Bar*_*ers 7

@header {
package foo.bar;
}
Run Code Online (Sandbox Code Playgroud)

是短的:

@parser::header {
package foo.bar;
}
Run Code Online (Sandbox Code Playgroud)

要将包声明放在词法分析器中,请执行以下操作:

@lexer::header {
package foo.bar;
}
Run Code Online (Sandbox Code Playgroud)

同样适用@members { ... },这是短暂的@parser::members { ... }.还有@lexer::members { ... }将变量/方法等放在词法分析器中.