我的 .g4 文件中有以下代码。
@lexer::members{
public static final int WHITESPACE = 1;
public static final int COMMENTS = 2;
}
WS : (' '|'\t'|'\f')+ -> channel(WHITESPACE)
;
COMMENT
: '//' ~('\n'|'\r')* -> channel(COMMENTS)
;
LINE_COMMENT
: '/*' .*? '*/' NEWLINE? -> channel(WHITESPACE)
;
我收到以下错误:
警告(155):Shiro.g4:239:34:规则“WS”包含具有无法识别的常量值的词法分析器命令;词法分析器解释器可能会产生不正确的输出
警告(155):Shiro.g4:243:38:规则“COMMENT”包含具有无法识别的常量值的词法分析器命令;词法分析器解释器可能会产生不正确的输出
警告(155):Shiro.g4:247:42:规则“LINE_COMMENT”包含具有无法识别的常量值的词法分析器命令;词法分析器解释器可能会产生不正确的输出
这是 Terrence 在 ANTLR4 书中描述的将令牌放在单独通道上的技术。为什么我会收到这些警告?我应该担心吗?
您没有收到错误;这是一个警告。特别是,它是UNKNOWN_LEXER_CONSTANT警告,这是 ANTLR 4.2 的新增内容。
编译器警告 155。
rule 'rule' 包含具有无法识别的常量值的词法分析器命令;词法分析器解释器可能会产生不正确的输出
词法分析器规则包含标准词法分析器命令,但该命令的常量值参数是无法识别的字符串。因此,词法分析器命令将被转换为自定义词法分析器操作,从而防止该命令在某些解释模式下执行。词法分析器解释器的输出可能与生成的词法分析器的输出不匹配。
以下规则会产生此警告。
@members {
public static final int CUSTOM = HIDDEN + 1;
}
X : 'foo' -> channel(HIDDEN); // ok
Y : 'bar' -> channel(CUSTOM); // warning 155
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)