From Jason Turner

[lex.name]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmp65h0qq4b/{from.md → to.md} +37 -8
tmp/tmp65h0qq4b/{from.md → to.md} RENAMED
@@ -9,11 +9,10 @@ identifier:
9
 
10
  ``` bnf
11
  identifier-nondigit:
12
  nondigit
13
  universal-character-name
14
- other implementation-defined characters
15
  ```
16
 
17
  ``` bnf
18
  nondigit: one of
19
  'a b c d e f g h i j k l m'
@@ -26,16 +25,40 @@ nondigit: one of
26
  digit: one of
27
  '0 1 2 3 4 5 6 7 8 9'
28
  ```
29
 
30
  An identifier is an arbitrarily long sequence of letters and digits.
31
- Each universal-character-name in an identifier shall designate a
32
  character whose encoding in ISO 10646 falls into one of the ranges
33
- specified in  [[charname.allowed]]. The initial element shall not be a
34
- universal-character-name designating a character whose encoding falls
35
- into one of the ranges specified in  [[charname.disallowed]]. Upper- and
36
- lower-case letters are different. All characters are significant.[^10]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
37
 
38
  The identifiers in Table  [[tab:identifiers.special]] have a special
39
  meaning when appearing in a certain context. When referred to in the
40
  grammar, these identifiers are used explicitly rather than using the
41
  *identifier* grammar production. Unless otherwise specified, any
@@ -48,8 +71,14 @@ resolved to interpret the token as a regular *identifier*.
48
  | ---------- | ------- |
49
  | `override` | `final` |
50
 
51
 
52
  In addition, some identifiers are reserved for use by C++
53
- implementations and standard libraries ([[global.names]]) and shall not
54
- be used otherwise; no diagnostic is required.
 
 
 
 
 
 
55
 
 
9
 
10
  ``` bnf
11
  identifier-nondigit:
12
  nondigit
13
  universal-character-name
 
14
  ```
15
 
16
  ``` bnf
17
  nondigit: one of
18
  'a b c d e f g h i j k l m'
 
25
  digit: one of
26
  '0 1 2 3 4 5 6 7 8 9'
27
  ```
28
 
29
  An identifier is an arbitrarily long sequence of letters and digits.
30
+ Each *universal-character-name* in an identifier shall designate a
31
  character whose encoding in ISO 10646 falls into one of the ranges
32
+ specified in Table  [[tab:charname.allowed]]. The initial element shall
33
+ not be a *universal-character-name* designating a character whose
34
+ encoding falls into one of the ranges specified in Table 
35
+ [[tab:charname.disallowed]]. Upper- and lower-case letters are
36
+ different. All characters are significant.[^10]
37
+
38
+ **Table: Ranges of characters allowed** <a id="tab:charname.allowed">[tab:charname.allowed]</a>
39
+
40
+ | | | | | |
41
+ | ------------- | ------------- | ------------- | ------------- | ------------- |
42
+ | `00A8` | `00AA` | `00AD` | `00AF` | `00B2-00B5` |
43
+ | `00B7-00BA` | `00BC-00BE` | `00C0-00D6` | `00D8-00F6` | `00F8-00FF` |
44
+ | `0100-167F` | `1681-180D` | `180F-1FFF` | | |
45
+ | `200B-200D` | `202A-202E` | `203F-2040` | `2054` | `2060-206F` |
46
+ | `2070-218F` | `2460-24FF` | `2776-2793` | `2C00-2DFF` | `2E80-2FFF` |
47
+ | `3004-3007` | `3021-302F` | `3031-D7FF` | | |
48
+ | `F900-FD3D` | `FD40-FDCF` | `FDF0-FE44` | `FE47-FFFD` | |
49
+ | `10000-1FFFD` | `20000-2FFFD` | `30000-3FFFD` | `40000-4FFFD` | `50000-5FFFD` |
50
+ | `60000-6FFFD` | `70000-7FFFD` | `80000-8FFFD` | `90000-9FFFD` | `A0000-AFFFD` |
51
+ | `B0000-BFFFD` | `C0000-CFFFD` | `D0000-DFFFD` | `E0000-EFFFD` | |
52
+
53
+
54
+ **Table: Ranges of characters disallowed initially (combining characters)** <a id="tab:charname.disallowed">[tab:charname.disallowed]</a>
55
+
56
+ | | | | |
57
+ | ----------- | ---------------------------------------------- | ----------- | ----------- |
58
+ | `0300-036F` | % FIXME: Unicode v7 adds 1AB0-1AFF `1DC0-1DFF` | `20D0-20FF` | `FE20-FE2F` |
59
+
60
 
61
  The identifiers in Table  [[tab:identifiers.special]] have a special
62
  meaning when appearing in a certain context. When referred to in the
63
  grammar, these identifiers are used explicitly rather than using the
64
  *identifier* grammar production. Unless otherwise specified, any
 
71
  | ---------- | ------- |
72
  | `override` | `final` |
73
 
74
 
75
  In addition, some identifiers are reserved for use by C++
76
+ implementations and shall not be used otherwise; no diagnostic is
77
+ required.
78
+
79
+ - Each identifier that contains a double underscore `__` or begins with
80
+ an underscore followed by an uppercase letter is reserved to the
81
+ implementation for any use.
82
+ - Each identifier that begins with an underscore is reserved to the
83
+ implementation for use as a name in the global namespace.
84