ANTLR 4默认情况下使用 ASCII 字符集来识别 token,因此不能直接识别Unicode字符。要解决这个问题,需要使用 Unicode 转义字符来代替 Unicode 字符,然后在词法规则中定义相应规则。例如:
fragment A: [\u0041-\u005A\u0061-\u007A];
fragment IDSTART: [$_A];
fragment IDCHAR: [\-\p{Alnum}];
Identifier : IDSTART IDCHAR* ;
这里,'\u0041'代表字符 A 的 Unicode 转义字符。在词法规则中,使用Unicode 转义字符来定义各种字符集,然后将它们用作 token。