1

我有一个用于 ObjectScript 的解析器(Java 中),它运行良好,除了一件事:我不解析“Unicode 变量名”。

问题是文档对这个主题的解释性不是很好。更重要的是,它错误地将 Unicode 定义为“16 位”。这告诉我只允许 BMP 中的字符。

但哪些?JDK中定义的 Unicode 块的数量多得吓人,而且脚本也好不到哪里去。

我也许可以使用Character.isLetter()(注意,我选择了带有 char 而不是 int 的版本),但我确信即使这样也会太大......

4

2 回答 2

2

请参阅此处此处的文档。总结一下:

局部变量名称必须是有效的标识符。它的第一个字符必须是字母或百分号 (%) 字符。以“%”字符开头的变量名被称为“百分比变量”并且有不同的范围规则。

于 2016-02-17T09:36:40.827 回答
2

Eduard 非常正确,即局部变量可以从百分比或“字母”字符开始,然后是“字母”字符或数字。

[\p{Alphabetic}%][\p{Alphabetic}\d]*

这里最重要的是要注意 - 什么是“字母”?这意味着当前 Caché 语言环境中的拉丁字母或字母。即安装了俄语/Unicode 语言环境后,您可以编写如下内容:

set порусски = 1

或在日语语言环境中:

USER>set a=$c(12354)

USER>set @a=88

USER>write

a="あ"
あ=88
于 2016-02-18T21:25:31.363 回答