From Jason Turner

[gram.expr]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmpkkw2dsi7/{from.md → to.md} +54 -15
tmp/tmpkkw2dsi7/{from.md → to.md} RENAMED
@@ -7,26 +7,28 @@ primary-expression:
7
  '(' expression ')'
8
  id-expression
9
  lambda-expression
10
  fold-expression
11
  requires-expression
 
12
  ```
13
 
14
  ``` bnf
15
  id-expression:
16
  unqualified-id
17
  qualified-id
 
18
  ```
19
 
20
  ``` bnf
21
  unqualified-id:
22
  identifier
23
  operator-function-id
24
  conversion-function-id
25
  literal-operator-id
26
  '~' type-name
27
- '~' decltype-specifier
28
  template-id
29
  ```
30
 
31
  ``` bnf
32
  qualified-id:
@@ -36,15 +38,27 @@ qualified-id:
36
  ``` bnf
37
  nested-name-specifier:
38
  '::'
39
  type-name '::'
40
  namespace-name '::'
41
- decltype-specifier '::'
 
42
  nested-name-specifier identifier '::'
43
  nested-name-specifier templateₒₚₜ simple-template-id '::'
44
  ```
45
 
 
 
 
 
 
 
 
 
 
 
 
46
  ``` bnf
47
  lambda-expression:
48
  lambda-introducer attribute-specifier-seqₒₚₜ lambda-declarator compound-statement
49
  lambda-introducer '<' template-parameter-list '>' requires-clauseₒₚₜ attribute-specifier-seqₒₚₜ
50
  lambda-declarator compound-statement
@@ -56,14 +70,15 @@ lambda-introducer:
56
  ```
57
 
58
  ``` bnf
59
  lambda-declarator:
60
  lambda-specifier-seq noexcept-specifierₒₚₜ attribute-specifier-seqₒₚₜ trailing-return-typeₒₚₜ
61
- noexcept-specifier attribute-specifier-seqₒₚₜ trailing-return-typeₒₚₜ
62
- trailing-return-typeₒₚₜ
 
63
  '(' parameter-declaration-clause ')' lambda-specifier-seqₒₚₜ noexcept-specifierₒₚₜ attribute-specifier-seqₒₚₜ
64
- trailing-return-typeₒₚₜ requires-clauseₒₚₜ
65
  ```
66
 
67
  ``` bnf
68
  lambda-specifier:
69
  consteval
@@ -72,12 +87,11 @@ lambda-specifier:
72
  static
73
  ```
74
 
75
  ``` bnf
76
  lambda-specifier-seq:
77
- lambda-specifier
78
- lambda-specifier lambda-specifier-seq
79
  ```
80
 
81
  ``` bnf
82
  lambda-capture:
83
  capture-default
@@ -106,11 +120,11 @@ capture:
106
  ``` bnf
107
  simple-capture:
108
  identifier '...'ₒₚₜ
109
  '&' identifier '...'ₒₚₜ
110
  this
111
- '*' 'this'
112
  ```
113
 
114
  ``` bnf
115
  init-capture:
116
  '...'ₒₚₜ identifier initializer
@@ -148,12 +162,11 @@ requirement-body:
148
  '{' requirement-seq '}'
149
  ```
150
 
151
  ``` bnf
152
  requirement-seq:
153
- requirement
154
- requirement requirement-seq
155
  ```
156
 
157
  ``` bnf
158
  requirement:
159
  simple-requirement
@@ -168,10 +181,12 @@ simple-requirement:
168
  ```
169
 
170
  ``` bnf
171
  type-requirement:
172
  typename nested-name-specifierₒₚₜ type-name ';'
 
 
173
  ```
174
 
175
  ``` bnf
176
  compound-requirement:
177
  '{' expression '}' noexceptₒₚₜ return-type-requirementₒₚₜ ';'
@@ -185,21 +200,30 @@ return-type-requirement:
185
  ``` bnf
186
  nested-requirement:
187
  requires constraint-expression ';'
188
  ```
189
 
 
 
 
 
 
 
 
190
  ``` bnf
191
  postfix-expression:
192
  primary-expression
193
  postfix-expression '[' expression-listₒₚₜ ']'
194
  postfix-expression '(' expression-listₒₚₜ ')'
195
  simple-type-specifier '(' expression-listₒₚₜ ')'
196
  typename-specifier '(' expression-listₒₚₜ ')'
197
  simple-type-specifier braced-init-list
198
  typename-specifier braced-init-list
199
- postfix-expression '.' 'template'ₒₚₜ id-expression
200
- postfix-expression '->' 'template'ₒₚₜ id-expression
 
 
201
  postfix-expression '++'
202
  postfix-expression '--'
203
  dynamic_cast '<' type-id '>' '(' expression ')'
204
  static_cast '<' type-id '>' '(' expression ')'
205
  reinterpret_cast '<' type-id '>' '(' expression ')'
@@ -227,10 +251,11 @@ unary-expression:
227
  sizeof '...' '(' identifier ')'
228
  alignof '(' type-id ')'
229
  noexcept-expression
230
  new-expression
231
  delete-expression
 
232
  ```
233
 
234
  ``` bnf
235
  %% Ed. note: character protrusion would misalign operators.
236
 
@@ -238,11 +263,11 @@ unary-operator: one of
238
  '* & + - ! ~'
239
  ```
240
 
241
  ``` bnf
242
  await-expression:
243
- 'co_await' cast-expression
244
  ```
245
 
246
  ``` bnf
247
  noexcept-expression:
248
  noexcept '(' expression ')'
@@ -286,10 +311,24 @@ new-initializer:
286
  delete-expression:
287
  '::'ₒₚₜ delete cast-expression
288
  '::'ₒₚₜ delete '[' ']' cast-expression
289
  ```
290
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
291
  ``` bnf
292
  cast-expression:
293
  unary-expression
294
  '(' type-id ')' cast-expression
295
  ```
@@ -381,12 +420,12 @@ conditional-expression:
381
  logical-or-expression '?' expression ':' assignment-expression
382
  ```
383
 
384
  ``` bnf
385
  yield-expression:
386
- 'co_yield' assignment-expression
387
- 'co_yield' braced-init-list
388
  ```
389
 
390
  ``` bnf
391
  throw-expression:
392
  throw assignment-expressionₒₚₜ
 
7
  '(' expression ')'
8
  id-expression
9
  lambda-expression
10
  fold-expression
11
  requires-expression
12
+ splice-expression
13
  ```
14
 
15
  ``` bnf
16
  id-expression:
17
  unqualified-id
18
  qualified-id
19
+ pack-index-expression
20
  ```
21
 
22
  ``` bnf
23
  unqualified-id:
24
  identifier
25
  operator-function-id
26
  conversion-function-id
27
  literal-operator-id
28
  '~' type-name
29
+ '~' computed-type-specifier
30
  template-id
31
  ```
32
 
33
  ``` bnf
34
  qualified-id:
 
38
  ``` bnf
39
  nested-name-specifier:
40
  '::'
41
  type-name '::'
42
  namespace-name '::'
43
+ computed-type-specifier '::'
44
+ splice-scope-specifier '::'
45
  nested-name-specifier identifier '::'
46
  nested-name-specifier templateₒₚₜ simple-template-id '::'
47
  ```
48
 
49
+ ``` bnf
50
+ splice-scope-specifier:
51
+ splice-specifier
52
+ templateₒₚₜ splice-specialization-specifier
53
+ ```
54
+
55
+ ``` bnf
56
+ pack-index-expression:
57
+ id-expression '...' '[' constant-expression ']'
58
+ ```
59
+
60
  ``` bnf
61
  lambda-expression:
62
  lambda-introducer attribute-specifier-seqₒₚₜ lambda-declarator compound-statement
63
  lambda-introducer '<' template-parameter-list '>' requires-clauseₒₚₜ attribute-specifier-seqₒₚₜ
64
  lambda-declarator compound-statement
 
70
  ```
71
 
72
  ``` bnf
73
  lambda-declarator:
74
  lambda-specifier-seq noexcept-specifierₒₚₜ attribute-specifier-seqₒₚₜ trailing-return-typeₒₚₜ
75
+ function-contract-specifier-seqₒₚₜ
76
+ noexcept-specifier attribute-specifier-seqₒₚₜ trailing-return-typeₒₚₜ function-contract-specifier-seqₒₚₜ
77
+ trailing-return-typeₒₚₜ function-contract-specifier-seqₒₚₜ
78
  '(' parameter-declaration-clause ')' lambda-specifier-seqₒₚₜ noexcept-specifierₒₚₜ attribute-specifier-seqₒₚₜ
79
+ trailing-return-typeₒₚₜ requires-clauseₒₚₜ function-contract-specifier-seqₒₚₜ
80
  ```
81
 
82
  ``` bnf
83
  lambda-specifier:
84
  consteval
 
87
  static
88
  ```
89
 
90
  ``` bnf
91
  lambda-specifier-seq:
92
+ lambda-specifier lambda-specifier-seqₒₚₜ
 
93
  ```
94
 
95
  ``` bnf
96
  lambda-capture:
97
  capture-default
 
120
  ``` bnf
121
  simple-capture:
122
  identifier '...'ₒₚₜ
123
  '&' identifier '...'ₒₚₜ
124
  this
125
+ '*' this
126
  ```
127
 
128
  ``` bnf
129
  init-capture:
130
  '...'ₒₚₜ identifier initializer
 
162
  '{' requirement-seq '}'
163
  ```
164
 
165
  ``` bnf
166
  requirement-seq:
167
+ requirement requirement-seqₒₚₜ
 
168
  ```
169
 
170
  ``` bnf
171
  requirement:
172
  simple-requirement
 
181
  ```
182
 
183
  ``` bnf
184
  type-requirement:
185
  typename nested-name-specifierₒₚₜ type-name ';'
186
+ typename splice-specifier
187
+ typename splice-specialization-specifier
188
  ```
189
 
190
  ``` bnf
191
  compound-requirement:
192
  '{' expression '}' noexceptₒₚₜ return-type-requirementₒₚₜ ';'
 
200
  ``` bnf
201
  nested-requirement:
202
  requires constraint-expression ';'
203
  ```
204
 
205
+ ``` bnf
206
+ splice-expression:
207
+ splice-specifier
208
+ template splice-specifier
209
+ template splice-specialization-specifier
210
+ ```
211
+
212
  ``` bnf
213
  postfix-expression:
214
  primary-expression
215
  postfix-expression '[' expression-listₒₚₜ ']'
216
  postfix-expression '(' expression-listₒₚₜ ')'
217
  simple-type-specifier '(' expression-listₒₚₜ ')'
218
  typename-specifier '(' expression-listₒₚₜ ')'
219
  simple-type-specifier braced-init-list
220
  typename-specifier braced-init-list
221
+ postfix-expression '.' templateₒₚₜ id-expression
222
+ postfix-expression '.' splice-expression
223
+ postfix-expression '->' templateₒₚₜ id-expression
224
+ postfix-expression '->' splice-expression
225
  postfix-expression '++'
226
  postfix-expression '--'
227
  dynamic_cast '<' type-id '>' '(' expression ')'
228
  static_cast '<' type-id '>' '(' expression ')'
229
  reinterpret_cast '<' type-id '>' '(' expression ')'
 
251
  sizeof '...' '(' identifier ')'
252
  alignof '(' type-id ')'
253
  noexcept-expression
254
  new-expression
255
  delete-expression
256
+ reflect-expression
257
  ```
258
 
259
  ``` bnf
260
  %% Ed. note: character protrusion would misalign operators.
261
 
 
263
  '* & + - ! ~'
264
  ```
265
 
266
  ``` bnf
267
  await-expression:
268
+ co_await cast-expression
269
  ```
270
 
271
  ``` bnf
272
  noexcept-expression:
273
  noexcept '(' expression ')'
 
311
  delete-expression:
312
  '::'ₒₚₜ delete cast-expression
313
  '::'ₒₚₜ delete '[' ']' cast-expression
314
  ```
315
 
316
+ ``` bnf
317
+ reflect-expression:
318
+ '^^' '::'
319
+ '^^' reflection-name
320
+ '^^' type-id
321
+ '^^' id-expression
322
+ ```
323
+
324
+ ``` bnf
325
+ reflection-name:
326
+ nested-name-specifierₒₚₜ identifier
327
+ nested-name-specifier template identifier
328
+ ```
329
+
330
  ``` bnf
331
  cast-expression:
332
  unary-expression
333
  '(' type-id ')' cast-expression
334
  ```
 
420
  logical-or-expression '?' expression ':' assignment-expression
421
  ```
422
 
423
  ``` bnf
424
  yield-expression:
425
+ co_yield assignment-expression
426
+ co_yield braced-init-list
427
  ```
428
 
429
  ``` bnf
430
  throw-expression:
431
  throw assignment-expressionₒₚₜ