【发布时间】:2018-11-03 11:21:26
【问题描述】:
JavaCC 中 JAVA_UNICODE_ESCAPE 的作用是什么,我看过文档,解释的很模糊。
【问题讨论】:
-
从某种意义上说,其目的是让为 Java 和类似 Java 的语言(如 JavaCC 本身)编写解析器变得容易。
标签: java compiler-construction javacc
JavaCC 中 JAVA_UNICODE_ESCAPE 的作用是什么,我看过文档,解释的很模糊。
【问题讨论】:
标签: java compiler-construction javacc
documentation 是这么说的:
JAVA_UNICODE_ESCAPE:这是一个布尔选项,默认值为 false。当设置为 true 时,生成的解析器在将字符发送到令牌管理器之前使用处理 Java Unicode 转义符 (\u...) 的输入流对象。默认情况下,不处理 Java Unicode 转义。
这是什么意思?
Java Unicode 转义是一个以\u 开头并后跟4 个十六进制数字的序列。在普通 Java 中,这样的序列被翻译成 UTF-16 代码单元。如JLS 3.3 中所述,此翻译发生在 标记化之前。 (正如 JLS 所解释的,不在基本代码明文中的 Unicode 代码点需要表示为两个转义序列,代表 Unicode 代码点的 UTF-16 代理对。)
所以JAVA_UNICODE_ESCAPE 选项基本上告诉JavaCC 生成的词法分析器/解析器 是否应该像Java 编译器一样进行Unicode 转义处理。默认是不处理\uxxxx 转义序列。
【讨论】:
\uxxxx 会导致任何问题吗?