值
本节中的语法产生式定义了词法语法,因此不允许使用空格。
整数
所有整数 可以使用十进制或十六进制表示法编写。在两种情况下,数字都可以选择用下划线分隔。
\[\begin{split}\begin{array}{llclll@{\qquad}l} \def\mathdef3871#1{{}}\mathdef3871{符号} & \href{../text/values.html#text-sign}{\mathtt{符号}} &::=& \epsilon \Rightarrow {+} ~~|~~ \def\mathdef3910#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3910{+} \Rightarrow {+} ~~|~~ \def\mathdef3911#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3911{-} \Rightarrow {-} \\ \def\mathdef3871#1{{}}\mathdef3871{十进制数字} & \href{../text/values.html#text-digit}{\mathtt{数字}} &::=& \def\mathdef3912#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3912{0} \Rightarrow 0 ~~|~~ \dots ~~|~~ \def\mathdef3913#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3913{9} \Rightarrow 9 \\ \def\mathdef3871#1{{}}\mathdef3871{十六进制数字} & \href{../text/values.html#text-hexdigit}{\mathtt{十六进制数字}} &::=& d{:}\href{../text/values.html#text-digit}{\mathtt{数字}} \Rightarrow d \\ &&|& \def\mathdef3914#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3914{A} \Rightarrow 10 ~~|~~ \dots ~~|~~ \def\mathdef3915#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3915{F} \Rightarrow 15 \\ &&|& \def\mathdef3916#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3916{a} \Rightarrow 10 ~~|~~ \dots ~~|~~ \def\mathdef3917#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3917{f} \Rightarrow 15 \\[1ex] \def\mathdef3871#1{{}}\mathdef3871{十进制数} & \href{../text/values.html#text-num}{\mathtt{数}} &::=& d{:}\href{../text/values.html#text-digit}{\mathtt{数字}} &\Rightarrow& d \\ &&|& n{:}\href{../text/values.html#text-num}{\mathtt{数}}~~\def\mathdef3918#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3918{\_}^?~~d{:}\href{../text/values.html#text-digit}{\mathtt{数字}} &\Rightarrow& 10\cdot n + d \\ \def\mathdef3871#1{{}}\mathdef3871{十六进制数} & \href{../text/values.html#text-hexnum}{\mathtt{十六进制数}} &::=& h{:}\href{../text/values.html#text-hexdigit}{\mathtt{十六进制数字}} &\Rightarrow& h \\ &&|& n{:}\href{../text/values.html#text-hexnum}{\mathtt{十六进制数}}~~\def\mathdef3919#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3919{\_}^?~~h{:}\href{../text/values.html#text-hexdigit}{\mathtt{十六进制数字}} &\Rightarrow& 16\cdot n + h \\ \end{array}\end{split}\]
整数文字的允许语法取决于大小和有符号性。此外,它们的值必须在各自类型的范围内。
\[\begin{split}\begin{array}{llclll@{\qquad}l} \def\mathdef3871#1{{}}\mathdef3871{无符号整数} & \href{../text/values.html#text-int}{\def\mathdef3892#1{{\mathtt{u}#1}}\mathdef3892{N}} &::=& n{:}\href{../text/values.html#text-num}{\mathtt{数}} &\Rightarrow& n & (\mathrel{\mbox{if}} n < 2^N) \\ &&|& \def\mathdef3920#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3920{0x}~~n{:}\href{../text/values.html#text-hexnum}{\mathtt{十六进制数}} &\Rightarrow& n & (\mathrel{\mbox{if}} n < 2^N) \\ \def\mathdef3871#1{{}}\mathdef3871{有符号整数} & \href{../text/values.html#text-int}{\def\mathdef3898#1{{\mathtt{s}#1}}\mathdef3898{N}} &::=& {\pm}{:}\href{../text/values.html#text-sign}{\mathtt{符号}}~~n{:}\href{../text/values.html#text-num}{\mathtt{数}} &\Rightarrow& \pm n & (\mathrel{\mbox{if}} -2^{N-1} \leq \pm n < 2^{N-1}) \\ &&|& {\pm}{:}\href{../text/values.html#text-sign}{\mathtt{符号}}~~\def\mathdef3921#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3921{0x}~~n{:}\href{../text/values.html#text-hexnum}{\mathtt{十六进制数}} &\Rightarrow& \pm n & (\mathrel{\mbox{if}} -2^{N-1} \leq \pm n < 2^{N-1}) \\ \end{array}\end{split}\]
未解释整数 可以写成有符号或无符号,并在抽象语法中被归一化为无符号。
\[\begin{split}\begin{array}{llclll@{\qquad\qquad}l} \def\mathdef3871#1{{}}\mathdef3871{未解释整数} & \href{../text/values.html#text-int}{\def\mathdef3901#1{{\mathtt{i}#1}}\mathdef3901{N}} &::=& n{:}\href{../text/values.html#text-int}{\def\mathdef3892#1{{\mathtt{u}#1}}\mathdef3892{N}} &\Rightarrow& n \\ &&|& i{:}\href{../text/values.html#text-int}{\def\mathdef3898#1{{\mathtt{s}#1}}\mathdef3898{N}} &\Rightarrow& n & (\mathrel{\mbox{if}} i = \href{../exec/numerics.html#aux-signed}{\mathrm{signed}}(n)) \\ \end{array}\end{split}\]
浮点数
浮点数 值可以用十进制或十六进制表示法表示。
\[\begin{split}\begin{array}{llclll@{\qquad\qquad}l} \def\mathdef3871#1{{}}\mathdef3871{十进制浮点数分数} & \href{../text/values.html#text-frac}{\mathtt{分数}} &::=& d{:}\href{../text/values.html#text-digit}{\mathtt{数字}} &\Rightarrow& d/10 \\ &&|& d{:}\href{../text/values.html#text-digit}{\mathtt{数字}}~~\def\mathdef3922#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3922{\_}^?~~p{:}\href{../text/values.html#text-frac}{\mathtt{分数}} &\Rightarrow& (d+p/10)/10 \\ \def\mathdef3871#1{{}}\mathdef3871{十六进制浮点数分数} & \href{../text/values.html#text-hexfrac}{\mathtt{十六进制分数}} &::=& h{:}\href{../text/values.html#text-hexdigit}{\mathtt{十六进制数字}} &\Rightarrow& h/16 \\ &&|& h{:}\href{../text/values.html#text-hexdigit}{\mathtt{十六进制数字}}~~\def\mathdef3923#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3923{\_}^?~~p{:}\href{../text/values.html#text-hexfrac}{\mathtt{十六进制分数}} &\Rightarrow& (h+p/16)/16 \\ \def\mathdef3871#1{{}}\mathdef3871{十进制浮点数} & \href{../text/values.html#text-float}{\mathtt{浮点数}} &::=& p{:}\href{../text/values.html#text-num}{\mathtt{数}}~\def\mathdef3924#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3924{.}^? &\Rightarrow& p \\ &&|& p{:}\href{../text/values.html#text-num}{\mathtt{数}}~\def\mathdef3925#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3925{.}~q{:}\href{../text/values.html#text-frac}{\mathtt{分数}} &\Rightarrow& p+q \\ &&|& p{:}\href{../text/values.html#text-num}{\mathtt{数}}~\def\mathdef3926#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3926{.}^?~(\def\mathdef3927#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3927{E}~|~\def\mathdef3928#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3928{e})~{\pm}{:}\href{../text/values.html#text-sign}{\mathtt{符号}}~e{:}\href{../text/values.html#text-num}{\mathtt{数}} &\Rightarrow& p\cdot 10^{\pm e} \\ &&|& p{:}\href{../text/values.html#text-num}{\mathtt{数}}~\def\mathdef3929#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3929{.}~q{:}\href{../text/values.html#text-frac}{\mathtt{分数}}~(\def\mathdef3930#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3930{E}~|~\def\mathdef3931#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3931{e})~{\pm}{:}\href{../text/values.html#text-sign}{\mathtt{符号}}~e{:}\href{../text/values.html#text-num}{\mathtt{数}} &\Rightarrow& (p+q)\cdot 10^{\pm e} \\ \def\mathdef3871#1{{}}\mathdef3871{十六进制浮点数} & \href{../text/values.html#text-hexfloat}{\mathtt{十六进制浮点数}} &::=& \def\mathdef3932#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3932{0x}~p{:}\href{../text/values.html#text-hexnum}{\mathtt{十六进制数}}~\def\mathdef3933#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3933{.}^? &\Rightarrow& p \\ &&|& \def\mathdef3934#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3934{0x}~p{:}\href{../text/values.html#text-hexnum}{\mathtt{十六进制数}}~\def\mathdef3935#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3935{.}~q{:}\href{../text/values.html#text-hexfrac}{\mathtt{十六进制分数}} &\Rightarrow& p+q \\ &&|& \def\mathdef3936#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3936{0x}~p{:}\href{../text/values.html#text-hexnum}{\mathtt{十六进制数}}~\def\mathdef3937#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3937{.}^?~(\def\mathdef3938#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3938{P}~|~\def\mathdef3939#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3939{p})~{\pm}{:}\href{../text/values.html#text-sign}{\mathtt{符号}}~e{:}\href{../text/values.html#text-num}{\mathtt{数}} &\Rightarrow& p\cdot 2^{\pm e} \\ &&|& \def\mathdef3940#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3940{0x}~p{:}\href{../text/values.html#text-hexnum}{\mathtt{十六进制数}}~\def\mathdef3941#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3941{.}~q{:}\href{../text/values.html#text-hexfrac}{\mathtt{十六进制分数}}~(\def\mathdef3942#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3942{P}~|~\def\mathdef3943#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3943{p})~{\pm}{:}\href{../text/values.html#text-sign}{\mathtt{符号}}~e{:}\href{../text/values.html#text-num}{\mathtt{数}} &\Rightarrow& (p+q)\cdot 2^{\pm e} \end{array}\end{split}\]
文字的值不能超出相应IEEE 754 类型的可表示范围(也就是说,数值不能溢出到 \(\pm\mbox{infinity}\)),但它可能会被舍入到最接近的可表示值。
注意
可以通过使用没有超过所需类型支持的有效位的十六进制表示法来防止舍入。
浮点数也可以写成无穷大或规范 NaN(非数字)的常量。此外,可以通过提供显式的有效负载值来表达任意 NaN 值。
\[\begin{split}\begin{array}{llclll@{\qquad\qquad}l} \def\mathdef3871#1{{}}\mathdef3871{浮点数} & \href{../text/values.html#text-float}{\def\mathdef3906#1{{\mathtt{f}#1}}\mathdef3906{N}} &::=& {\pm}{:}\href{../text/values.html#text-sign}{\mathtt{符号}}~z{:}\href{../text/values.html#text-float}{\def\mathdef3907#1{{\mathtt{f}#1}}\mathdef3907{N}\mathtt{mag}} &\Rightarrow& \pm z \\ \def\mathdef3871#1{{}}\mathdef3871{浮点数幅度} & \href{../text/values.html#text-float}{\def\mathdef3907#1{{\mathtt{f}#1}}\mathdef3907{N}\mathtt{mag}} &::=& z{:}\href{../text/values.html#text-float}{\mathtt{浮点数}} &\Rightarrow& \href{../exec/numerics.html#aux-ieee}{\mathrm{float}}_N(z) & (\mathrel{\mbox{if}} \href{../exec/numerics.html#aux-ieee}{\mathrm{float}}_N(z) \neq \pm \infty) \\ &&|& z{:}\href{../text/values.html#text-hexfloat}{\mathtt{十六进制浮点数}} &\Rightarrow& \href{../exec/numerics.html#aux-ieee}{\mathrm{float}}_N(z) & (\mathrel{\mbox{if}} \href{../exec/numerics.html#aux-ieee}{\mathrm{float}}_N(z) \neq \pm \infty) \\ &&|& \def\mathdef3944#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3944{inf} &\Rightarrow& \infty \\ &&|& \def\mathdef3945#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3945{nan} &\Rightarrow& \href{../syntax/values.html#syntax-float}{\mathsf{nan}}(\href{../syntax/values.html#aux-canon}{\mathrm{canon}}_N) \\ &&|& \def\mathdef3946#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3946{nan{:}0x}~n{:}\href{../text/values.html#text-hexnum}{\mathtt{十六进制数}} &\Rightarrow& \href{../syntax/values.html#syntax-float}{\mathsf{nan}}(n) & (\mathrel{\mbox{if}} 1 \leq n < 2^{\href{../syntax/values.html#aux-significand}{\mathrm{signif}}(N)}) \\ \end{array}\end{split}\]
字符串
字符串表示可以代表文本和二进制数据的字节序列。它们用引号括起来,可以包含除ASCII 控制字符、引号 (\(\def\mathdef3947#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3947{"}\)) 或反斜杠 (\(\def\mathdef3948#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3948{\backslash}\)) 之外的任何字符,除非用转义序列表示。
\[\begin{split}\begin{array}{llclll@{\qquad\qquad}l} \def\mathdef3871#1{{}}\mathdef3871{字符串} & \href{../text/values.html#text-string}{\mathtt{字符串}} &::=& \def\mathdef3949#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3949{"}~(b^\ast{:}\href{../text/values.html#text-string}{\mathtt{字符串元素}})^\ast~\def\mathdef3950#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3950{"} &\Rightarrow& \href{../syntax/conventions.html#notation-concat}{\mathrm{concat}}((b^\ast)^\ast) & (\mathrel{\mbox{if}} |\href{../syntax/conventions.html#notation-concat}{\mathrm{concat}}((b^\ast)^\ast)| < 2^{32}) \\ \def\mathdef3871#1{{}}\mathdef3871{字符串元素} & \href{../text/values.html#text-string}{\mathtt{字符串元素}} &::=& c{:}\href{../text/values.html#text-string}{\mathtt{字符串字符}} &\Rightarrow& \href{../binary/values.html#binary-utf8}{\mathrm{utf8}}(c) \\ &&|& \def\mathdef3951#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3951{\backslash}~n{:}\href{../text/values.html#text-hexdigit}{\mathtt{十六进制数字}}~m{:}\href{../text/values.html#text-hexdigit}{\mathtt{十六进制数字}} &\Rightarrow& 16\cdot n+m \\ \end{array}\end{split}\]
字符串文字中的每个字符都代表其 UTF-8 Unicode(第 2.5 节)编码对应的字节序列,除了十六进制转义序列 \(\mbox{‘}\backslash hh\mbox{’}\),它代表具有相应值的原始字节。
\[\begin{split}\begin{array}{llclll@{\qquad\qquad}l} \def\mathdef3871#1{{}}\mathdef3871{字符串字符} & \href{../text/values.html#text-string}{\mathtt{字符串字符}} &::=& c{:}\href{../text/lexical.html#text-char}{\mathtt{字符}} &\Rightarrow& c \qquad & (\mathrel{\mbox{if}} c \geq \def\mathdef3952#1{\mathrm{U{+}#1}}\mathdef3952{20} \wedge c \neq \def\mathdef3953#1{\mathrm{U{+}#1}}\mathdef3953{7F} \wedge c \neq \def\mathdef3954#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3954{"} \wedge c \neq \def\mathdef3955#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3955{\backslash}) \\ &&|& \def\mathdef3956#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3956{\backslash t} &\Rightarrow& \def\mathdef3957#1{\mathrm{U{+}#1}}\mathdef3957{09} \\ &&|& \def\mathdef3958#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3958{\backslash n} &\Rightarrow& \def\mathdef3959#1{\mathrm{U{+}#1}}\mathdef3959{0A} \\ &&|& \def\mathdef3960#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3960{\backslash r} &\Rightarrow& \def\mathdef3961#1{\mathrm{U{+}#1}}\mathdef3961{0D} \\ &&|& \def\mathdef3962#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3962{\backslash{"}} &\Rightarrow& \def\mathdef3963#1{\mathrm{U{+}#1}}\mathdef3963{22} \\ &&|& \def\mathdef3964#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3964{\backslash{'}} &\Rightarrow& \def\mathdef3965#1{\mathrm{U{+}#1}}\mathdef3965{27} \\ &&|& \def\mathdef3966#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3966{\backslash\backslash} &\Rightarrow& \def\mathdef3967#1{\mathrm{U{+}#1}}\mathdef3967{5C} \\ &&|& \def\mathdef3968#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3968{\backslash u\{}~n{:}\href{../text/values.html#text-hexnum}{\mathtt{十六进制数}}~\def\mathdef3969#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3969{\}} &\Rightarrow& \def\mathdef3970#1{\mathrm{U{+}#1}}\mathdef3970{(n)} & (\mathrel{\mbox{if}} n < \def\mathdef3971#1{\mathtt{0x#1}}\mathdef3971{D800} \vee \def\mathdef3972#1{\mathtt{0x#1}}\mathdef3972{E000} \leq n < \def\mathdef3973#1{\mathtt{0x#1}}\mathdef3973{110000}) \\ \end{array}\end{split}\]
名称
名称 是表示文字字符序列的字符串。名称字符串必须形成有效的 UTF-8 编码,如 Unicode(第 2.5 节)中定义的那样,并被解释为 Unicode 标量值的字符串。
\[\begin{split}\begin{array}{llclll@{\qquad}l} \def\mathdef3871#1{{}}\mathdef3871{name} & \href{../text/values.html#text-name}{\mathtt{name}} &::=& b^\ast{:}\href{../text/values.html#text-string}{\mathtt{string}} &\Rightarrow& c^\ast & (\mathrel{\mbox{if}} b^\ast = \href{../binary/values.html#binary-utf8}{\mathrm{utf8}}(c^\ast)) \\ \end{array}\end{split}\]
注意
假设源文本本身编码正确,不包含任何十六进制字节转义使用的字符串始终是有效的名称。
标识符
索引 可以以数字和符号形式给出。代替索引的符号 *标识符* 以 \(\def\mathdef3974#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3974{\$}\) 开头,后跟任何不包含空格、引号、逗号、分号或括号的可打印 ASCII 字符序列。
\[\begin{split}\begin{array}{llclll@{\qquad}l} \def\mathdef3871#1{{}}\mathdef3871{identifier} & \href{../text/values.html#text-id}{\mathtt{id}} &::=& \def\mathdef3975#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3975{\$}~\href{../text/values.html#text-idchar}{\mathtt{idchar}}^+ \\ \def\mathdef3871#1{{}}\mathdef3871{identifier character} & \href{../text/values.html#text-idchar}{\mathtt{idchar}} &::=& \def\mathdef3976#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3976{0} ~~|~~ \dots ~~|~~ \def\mathdef3977#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3977{9} \\ &&|& \def\mathdef3978#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3978{A} ~~|~~ \dots ~~|~~ \def\mathdef3979#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3979{Z} \\ &&|& \def\mathdef3980#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3980{a} ~~|~~ \dots ~~|~~ \def\mathdef3981#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3981{z} \\ &&|& \def\mathdef3982#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3982{!} ~~|~~ \def\mathdef3983#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3983{\#} ~~|~~ \def\mathdef3984#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3984{\$} ~~|~~ \def\mathdef3985#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3985{\%} ~~|~~ \def\mathdef3986#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3986{\&} ~~|~~ \def\mathdef3987#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3987{'} ~~|~~ \def\mathdef3988#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3988{*} ~~|~~ \def\mathdef3989#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3989{+} ~~|~~ \def\mathdef3990#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3990{-} ~~|~~ \def\mathdef3991#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3991{.} ~~|~~ \def\mathdef3992#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3992{/} \\ &&|& \def\mathdef3993#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3993{:} ~~|~~ \def\mathdef3994#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3994{<} ~~|~~ \def\mathdef3995#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3995{=} ~~|~~ \def\mathdef3996#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3996{>} ~~|~~ \def\mathdef3997#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3997{?} ~~|~~ \def\mathdef3998#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3998{@} ~~|~~ \def\mathdef3999#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef3999{\backslash} ~~|~~ \def\mathdef4000#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef4000{\hat{~~}} ~~|~~ \def\mathdef4001#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef4001{\_} ~~|~~ \def\mathdef4002#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef4002{\grave{~~}} ~~|~~ \def\mathdef4003#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef4003{|} ~~|~~ \def\mathdef4004#1{\mbox{‘}\mathtt{#1}\mbox{’}}\mathdef4004{\tilde{~~}} \\ \end{array}\end{split}\]
约定
某些缩写的扩展规则需要插入 *新的* 标识符。这可以是任何在给定源文本中尚未出现的语法有效的标识符。