我有一个用于ObjectScript的解析器(用Java语言),它工作得很好,除了一件事:我不解析"Unicode变量名“。
问题是,文档在这个主题上没有很好的解释性;而且,它错误地将Unicode定义为"16位“。这告诉我,只允许BMP中的字符。
但是哪一个呢?在JDK 高得吓人中定义的Unicode块的数量,以及脚本再好不过了。
我也许可以使用Character.isLetter() (注意,我选择的版本使用的是char,而不是int),但我确信即使这样也太大了……
发布于 2016-02-18 21:25:31
Eduard基本上是正确的,即局部变量可以从百分比或“字母”字符开始,然后是“字母”字符或数字。
[\p{Alphabetic}%][\p{Alphabetic}\d]*这里最重要的是什么是“字母”?这意味着拉丁语字母或字母在当前Cachélocale中。例如,在安装了俄语/Unicode语言环境之后,您可以编写如下内容:
set порусски = 1或在日本地区:
USER>set a=$c(12354)
USER>set @a=88
USER>write
a="あ"
あ=88发布于 2016-02-17 09:36:40
参见docs、这里和这里。总括而言:
局部变量名必须是有效的标识符。它的第一个字符必须是字母或百分比(%)字符。以“%”字符开头的变量名称为“百分比变量”,具有不同的范围规则。
https://stackoverflow.com/questions/35452352
复制相似问题