我正在建立一种语言,一种玩具语言。语法\#0061应该将给定的Unicode转换为字符:

String temp = yytext().subtring(2);

然后,在尝试将'\u'附加到字符串之后,我注意到生成了一个错误。

我也尝试"\\" + "u" + temp;这种方式不做任何转换。

我基本上是通过仅向方法,帮助提供'0061'来尝试将Unicode转换为字符。

最佳答案

去除'#'并使用Integer.parseInt("0061", 16)将十六进制数字转换为int。然后转换为char

(如果您是手工实现的lexer,另一种方法是在您的lexer与unicode字面值匹配时立即进行转换。但是在重读问题时,我发现您正在使用lexer生成器……这是个好方法! )

10-04 22:05
查看更多