对Java.g4的更改
文件开头
grammar Java;
@lexer::members {
public static final int WHITESPACE = 1;
public static final int COMMENTS = 2;
}文件末尾
//
// Whitespace and comments
//
WS : [ \t\r\n\u000C]+ -> channel(WHITESPACE) ; // channel(1)
COMMENT : '/*' .*? '*/' -> channel(COMMENTS) ; // channel(2)
LINE_COMMENT : '//' ~[\r\n]* -> channel(COMMENTS) ; // channel(2)尝试将注释和空格发送到不同的通道,如"The Definitive ANTLR 4 Reference“一书中所述,第12.1章在不同通道上广播令牌
执行antlr4 Java.g4时,将显示以下错误
java org.antlr.v4.Tool Java.g4
warning(155): Java.g4:1017:35: rule WS contains a lexer command with an unrecognized constant value; lexer interpreters may produce incorrect output
warning(155): Java.g4:1019:40: rule COMMENT contains a lexer command with an unrecognized constant value; lexer interpreters may produce incorrect output
warning(155): Java.g4:1021:45: rule LINE_COMMENT contains a lexer command with an unrecognized constant value; lexer interpreters may produce incorrect output我看不出有什么问题?
发布于 2016-07-22 00:13:39
您应该替换以下片段:
@lexer::members {
public static final int WHITESPACE = 1;
public static final int COMMENTS = 2;
}使用字符串:
channels { WHITESPACE, COMMENTS }发布于 2016-07-22 16:02:33
解决方案是拆分lexer和parser文件。并且作为kvanttt在lexer文件中使用channels { WHITESPACE, COMMENTS },完整的文件将被上传到我的https://github.com/nkv123/grammars-v4分支存储库。
https://stackoverflow.com/questions/38507707
复制相似问题