如何理解 java antlr4 词法分析器文件中的 CHAR_LITERAL 规则

问题描述 投票:0回答:0

java antlr4 词法分析器文件

CHAR_LITERAL:       '\'' (~['\\\r\n] | EscapeSequence) '\'';

fragment EscapeSequence
    : '\\' 'u005c'? [btnfr"'\\]
    | '\\' 'u005c'? ([0-3]? [0-7])? [0-7]
    | '\\' 'u'+ HexDigit HexDigit HexDigit HexDigit
    ;

为什么 ', ' ', ''', '' 在第一部分被排除,而' ', ' ', ' ', '"' 在第一部分不被排除?

如果我把规则改成这样,是不是等同于之前的规则

CHAR_LITERAL:       '\'' (~['\\\r\n\b\f\t\"] | EscapeSequence) '\'';

或者改成这样

CHAR_LITERAL:       '\'' (~['\\] | EscapeSequence) '\'';
java compiler-construction antlr4 lexer
© www.soinside.com 2019 - 2024. All rights reserved.