|
1 | 1 | %!TEX root = std.tex
|
2 |
| -\infannex{uaxid}{Conformance with UAX \#31} |
| 2 | +\infannex{uaxid}{Conformance with \UAX{31}} |
3 | 3 |
|
4 | 4 | \rSec1[uaxid.general]{General}
|
5 | 5 |
|
6 | 6 | \pnum
|
7 | 7 | This Annex describes the choices made in application of
|
8 |
| -UAX \#31 (``Unicode Identifier and Pattern Syntax'') |
9 |
| -to \Cpp{} in terms of the requirements from UAX \#31 and |
| 8 | +\UAX{31} (``Unicode Identifier and Pattern Syntax'') |
| 9 | +to \Cpp{} in terms of the requirements from \UAX{31} and |
10 | 10 | how they do or do not apply to \Cpp{}.
|
11 |
| -In terms of UAX \#31, |
| 11 | +In terms of \UAX{31}, |
12 | 12 | \Cpp{} conforms by meeting the requirements
|
13 | 13 | R1 ``Default Identifiers'' and
|
14 | 14 | R4 ``Equivalent Normalized Identifiers''.
|
|
20 | 20 | \rSec2[uaxid.def.general]{General}
|
21 | 21 |
|
22 | 22 | \pnum
|
23 |
| -UAX \#31 specifies a default syntax for identifiers |
24 |
| -based on properties from the Unicode Character Database, UAX \#44. |
| 23 | +\UAX{31} specifies a default syntax for identifiers |
| 24 | +based on properties from the Unicode Character Database, \UAX{44}. |
25 | 25 | The general syntax is
|
26 | 26 | \begin{codeblock}
|
27 | 27 | <Identifier> := <Start> <Continue>* (<Medial> <Continue>+)*
|
|
33 | 33 | to the set of permitted \tcode{<Start>} characters,
|
34 | 34 | the \tcode{<Medial>} set is empty, and
|
35 | 35 | the \tcode{<Continue>} characters are unmodified.
|
36 |
| -In the grammar used in UAX \#31, this is |
| 36 | +In the grammar used in \UAX{31}, this is |
37 | 37 | \begin{codeblock}
|
38 | 38 | <Identifier> := <Start> <Continue>*
|
39 | 39 | <Start> := XID_Start + @\textrm{\ucode{005f}}@
|
|
49 | 49 | \rSec2[uaxid.def.rfmt]{R1a Restricted format characters}
|
50 | 50 |
|
51 | 51 | \pnum
|
52 |
| -If an implementation of UAX \#31 wishes to allow format characters |
53 |
| -such as ZERO WIDTH JOINER or ZERO WIDTH NON-JOINER |
| 52 | +If an implementation of \UAX{31} wishes to allow format characters |
| 53 | +such as \unicode{200d}{zero width joiner} or \unicode{200c}{zero width non-joiner} |
54 | 54 | it must define a profile allowing them, or
|
55 | 55 | describe precisely which combinations are permitted.
|
56 | 56 |
|
|
60 | 60 | \rSec2[uaxid.def.stable]{R1b Stable identifiers}
|
61 | 61 |
|
62 | 62 | \pnum
|
63 |
| -An implementation of UAX \#31 may choose to guarantee |
| 63 | +An implementation of \UAX{31} may choose to guarantee |
64 | 64 | that identifiers are stable across versions of the Unicode Standard.
|
65 | 65 | Once a string qualifies as an identifier it does so in all future versions.
|
66 | 66 |
|
67 | 67 | \pnum
|
68 | 68 | \Cpp{} does not make this guarantee,
|
69 |
| -except to the extent that UAX \#31 guarantees |
| 69 | +except to the extent that \UAX{31} guarantees |
70 | 70 | the stability of the XID_Start and XID_Continue properties.
|
71 | 71 |
|
72 | 72 | \rSec1[uaxid.immutable]{R2 Immutable identifiers}
|
|
85 | 85 | \rSec1[uaxid.pattern]{R3 Pattern_White_Space and Pattern_Syntax characters}
|
86 | 86 |
|
87 | 87 | \pnum
|
88 |
| -UAX \#31 describes how formal languages |
| 88 | +\UAX{31} describes how formal languages |
89 | 89 | such as computer languages should describe and implement
|
90 | 90 | their use of whitespace and syntactically significant characters
|
91 | 91 | during the processes of lexing and parsing.
|
|
96 | 96 | \rSec1[uaxid.eqn]{R4 Equivalent normalized identifiers}
|
97 | 97 |
|
98 | 98 | \pnum
|
99 |
| -UAX \#31 requires that implementations describe |
| 99 | +\UAX{31} requires that implementations describe |
100 | 100 | how identifiers are compared and considered equivalent.
|
101 | 101 |
|
102 | 102 | \pnum
|
|
115 | 115 |
|
116 | 116 | \pnum
|
117 | 117 | If any characters are excluded from normalization,
|
118 |
| -UAX \#31 requires a precise specification of those exclusions. |
| 118 | +\UAX{31} requires a precise specification of those exclusions. |
119 | 119 |
|
120 | 120 | \pnum
|
121 | 121 | \Cpp{} does not make any such exclusions.
|
|
0 commit comments