May 28, 2007

ECMA-262试译:7.6 Identifiers

7.6 标识符

描述

解释标识符的文法根据在章节5.16中给出,对于 Unicode 标准的升级版3.0有一些小更正。此文法同时基于 Unicode 标准所具体指明的常规及非常规字符类别。在 Unicode 标准2.1版中具体指明的类别中的字符,必须被所有符合标准的 ECMAScript 实现认作是其它类别中的字符;不过,符合标准的 ECMAScript 实现可以允许附加那些基于 Unicode 早期版本中的类别分配的、合法的标识符字符集。

本标准具体指明了一个背离给定的 Unicode 标准的文法:允许美元号($)和下划线 (_)出现在标识符的任何位置。美元号仅应在机械生成的代码中使用。

标识符中同样允许有 Unicode 转义序列,它们在此处给标识符提供单个字符,由 Unicode转义序列的 CV 算法计算(参见7.8.4)。在 Unicode转义序列之 前提前出现的 \ 不为标识符提供字符。Unicode转义序列不 能被用于向标识符中放置一个字符,否则是违法的。换句话说,如果 \ Unicode 转义序列的序列被它的Unicode转义序列的 CV 替换,结果必定仍是合法的标 识符,与原始的标识符有完全相同的字符序列。

根据 Unicode 标准来判断两个标识符不相等时,不考虑它们是否被呈现为完全相同的代码点序列(换句话说,仅要求符合标准的 ECMAScript 实现对标识符作以比特为单位的比较)。这意味着,所得到的源代码文本在到达编译器之前就已经被转化成常规的形式 C。

语法
标识符
::
标识符名 but not保留 字
标识符名 ::
标识符开始
标识符名 标识符体

标识符开始 ::
Unicode字母
$
_
\Unicode转义序列
标识符体 ::
标识符开始
Unicode联合标记
Unicode数字
Unicode连接标点符号

\Unicode转义序列
Unicode字母
以下 Unicode 分类中的任何字符: "Uppercase letter(Lu,大写字母)", "Lower caseletter(Ll,小写字母)", "Titlecase letter(Lt,标题字母)", "Modifier letter (Lm,修饰字母)","Other etter(Lo,其它字母)", 或 "Letter number(Nl,字母数字)"。
Unicode联合标记
以下 Unicode 分类中的任何字符: "Non-spacing mark(Mn,非空格标记)" 或 "Combining spacing mark(Mc,联合空格标记)"。
Unicode数字
以下 Unicode 分类中的任何字符:"Decimal number(Nd,十进制数)"。
Unicode连接标点符号
以下 Unicode 分类中的任何字符:"Connector punctuation (Pc,连接标点符号)"。
Unicode转义序列
参见7.8.4
十六进制数字:: one of
0 1 2 3 4 5 6 7 8 9 a b c d e f A B C D E F

No comments: