在ANTRL4书的第74页上,它说任何Unicode字符都可以通过以这种方式指定其代码点来在语法中使用:
'\uxxxx'
其中xxxx
是Unicode代码点的十六进制值。
因此,我在ID令牌的标记规则中使用了该技术:
grammar ID;
id : ID EOF ;
ID : ('a' .. 'z' | 'A' .. 'Z' | '\u0100' .. '\u017E')+ ;
WS : [ \t\r\n]+ -> skip ;
当我尝试解析这个输入时:
Gŭnter
ANTLR出现错误,提示无法识别ŭ
。(ŭ字符是十六进制016D,因此在指定范围内)
请问我做错了什么?
java -Dfile.encoding=UTF-8 org.antlr.v4.runtime.misc.TestRig ID ...
- Gunther