如何解决antlr4 lexer规则中的“不允许使用多字符文字”错误?

时间:2019-05-27 08:36:18

标签: antlr4 lexer

我要写的规则是:

Character : '\u0000'..'\u10FFF';

但是尝试对定义了该词法的lexer文件运行antlr工具时,出现以下错误:

multi-character literals are not allowed in lexer sets: '\u10FFF'

如何解决此问题?

1 个答案:

答案 0 :(得分:2)

尝试用{}包装多字符文字,并使用v4样式的字符集[...]

Character : [\u0000-\u{10FFF}];

来自https://github.com/antlr/antlr4/blob/master/doc/lexer-rules.md#lexer-rule-elements

  

[...]匹配字符集中指定的字符之一。将x-y解释为范围xy之间的一组字符。以下转义字符被解释为单个特殊字符:\n\r\b\t\f\uXXXX和{{ 1}}。要获取\u{XXXXXX}]\,您必须使用-对其进行转义。

相关问题