尝试升级antlr4,我在语法中有2行产生错误信息:
分配给不是一组的块的标签tok
特别是对于如下所示的语法行:
contextRadius: tok=('radius' 'change-authorize-nas-ip') (IP4_ADDRESS|IP6_ADDRESS) 'encrypted' 'key' ID 'port' INT_TOK 'event-timestamp-window' INT_TOK 'no-reverse-path-forward-check'
;
Run Code Online (Sandbox Code Playgroud)
这究竟意味着什么 - 成为一个"未设置的块"并且是否有一般解决方案?
我正在尝试使用在 antlr3 中工作的有点大的语法的 antlr4。完成了 2 个所需的语法更改,现在我有了生成词法分析器和解析器的工具。
但是,词法分析器有一个编译错误:
1)类型生成需要65535字节以上的字符串在常量池中以utf8格式编码
该错误显示在 Eclipse 中的类名上,因此不确定它到底在谈论哪个字符串,但我怀疑它是这个很长的字符串:
public static final String _serializedATN =
"\1\2\u01c5\u1741\6\uffff\2\0\7\0\2\1\7\1\2\2\7\2\2\3\7\3\2\4\7\4\2\5\7"+
"\5\2\6\7\6\2\7\7\7\2\b\7\b\2\t\7\t\2\n\7\n\2\13\7\13\2\f\7\f\2\r\7\r\2"+
... etc, etc (few hundred lines of unicode)
Run Code Online (Sandbox Code Playgroud)
看起来像解析器生成器中的一个错误,但可能 antlr4 需要一些我不知道的新设置(?)
antlr4 ×2