我正在建立一种语言,一种玩具语言。语法\#0061
应该将给定的Unicode转换为字符:
String temp = yytext().subtring(2);
然后,在尝试将
'\u'
附加到字符串之后,我注意到生成了一个错误。我也尝试
"\\" + "u" + temp;
这种方式不做任何转换。我基本上是通过仅向方法,帮助提供
'0061'
来尝试将Unicode转换为字符。 最佳答案
去除'#'并使用Integer.parseInt("0061", 16)
将十六进制数字转换为int
。然后转换为char
。
(如果您是手工实现的lexer,另一种方法是在您的lexer与unicode字面值匹配时立即进行转换。但是在重读问题时,我发现您正在使用lexer生成器……这是个好方法! )