我正在为词法分析器和解析器使用一个.g文件。我在语法文件中包含以下几行:

@header {
package foo.bar;
}


但是,我发现打包行仅放入生成的解析器源文件中,而在FooLexer.java文件中丢失。有人知道如何处理吗?

最佳答案

@header {
package foo.bar;
}


的缩写:

@parser::header {
package foo.bar;
}


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

@lexer::header {
package foo.bar;
}


@members { ... }也是一样,@parser::members { ... }的缩写。还有@lexer::members { ... }将变量/方法等放在词法分析器中。

关于java - antlr:生成的Lexer源代码中缺少程序包声明,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11202450/

10-10 18:07