【问题标题】:How to fix the "multi-character literals are not allowed" error in antlr4 lexer rule?如何修复 antlr4 词法分析器规则中的“不允许使用多字符文字”错误?
【发布时间】:2019-05-27 08:36:18
【问题描述】:

我要写的规则是:

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

但是当尝试对定义它的词法分析器文件运行 antlr 工具时,我收到以下错误:

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

如何解决这个问题?

【问题讨论】:

    标签: antlr4 lexer


    【解决方案1】:

    尝试使用{} 包装多字符文字,并使用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\u{XXXXXX}。要获取]\-,您必须使用\ 转义它们。

    【讨论】:

    • 并不总是需要转义-。他们只应该逃脱而不是在边界上。例如,以下定义可以正常工作:[+-].
    猜你喜欢
    • 2019-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-15
    • 2021-10-22
    • 2017-12-24
    相关资源
    最近更新 更多