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) '\'';