【发布时间】:2019-05-27 08:36:18
【问题描述】:
我要写的规则是:
Character : '\u0000'..'\u10FFF';
但是当尝试对定义它的词法分析器文件运行 antlr 工具时,我收到以下错误:
multi-character literals are not allowed in lexer sets: '\u10FFF'
如何解决这个问题?
【问题讨论】:
我要写的规则是:
Character : '\u0000'..'\u10FFF';
但是当尝试对定义它的词法分析器文件运行 antlr 工具时,我收到以下错误:
multi-character literals are not allowed in lexer sets: '\u10FFF'
如何解决这个问题?
【问题讨论】:
尝试使用{ 和} 包装多字符文字,并使用v4 样式字符集[...]:
Character : [\u0000-\u{10FFF}];
来自https://github.com/antlr/antlr4/blob/master/doc/lexer-rules.md#lexer-rule-elements:
[...] 匹配字符集中指定的字符之一。将
x-y解释为范围x和y之间的字符集,包括。以下转义字符被解释为单个特殊字符:\n、\r、\b、\t、\f、\uXXXX和\u{XXXXXX}。要获取]、\或-,您必须使用\转义它们。
【讨论】:
-。他们只应该逃脱而不是在边界上。例如,以下定义可以正常工作:[+-].