From Jason Turner

[gram.expr]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmp0bjc41q0/{from.md → to.md} +31 -9
tmp/tmp0bjc41q0/{from.md → to.md} RENAMED
@@ -43,23 +43,41 @@ nested-name-specifier:
43
  nested-name-specifier templateₒₚₜ simple-template-id '::'
44
  ```
45
 
46
  ``` bnf
47
  lambda-expression:
48
- lambda-introducer lambda-declaratorₒₚₜ compound-statement
49
- lambda-introducer '<' template-parameter-list '>' requires-clauseₒₚₜ lambda-declaratorₒₚₜ compound-statement
 
50
  ```
51
 
52
  ``` bnf
53
  lambda-introducer:
54
  '[' lambda-captureₒₚₜ ']'
55
  ```
56
 
57
  ``` bnf
58
  lambda-declarator:
59
- '(' parameter-declaration-clause ')' decl-specifier-seqₒₚₜ
60
- noexcept-specifierₒₚₜ attribute-specifier-seqₒₚₜ trailing-return-typeₒₚₜ requires-clauseₒₚₜ
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
61
  ```
62
 
63
  ``` bnf
64
  lambda-capture:
65
  capture-default
@@ -120,22 +138,22 @@ requires-expression:
120
  requires requirement-parameter-listₒₚₜ requirement-body
121
  ```
122
 
123
  ``` bnf
124
  requirement-parameter-list:
125
- '(' parameter-declaration-clauseₒₚₜ ')'
126
  ```
127
 
128
  ``` bnf
129
  requirement-body:
130
  '{' requirement-seq '}'
131
  ```
132
 
133
  ``` bnf
134
  requirement-seq:
135
  requirement
136
- requirement-seq requirement
137
  ```
138
 
139
  ``` bnf
140
  requirement:
141
  simple-requirement
@@ -170,20 +188,20 @@ nested-requirement:
170
  ```
171
 
172
  ``` bnf
173
  postfix-expression:
174
  primary-expression
175
- postfix-expression '[' expr-or-braced-init-list ']'
176
  postfix-expression '(' expression-listₒₚₜ ')'
177
  simple-type-specifier '(' expression-listₒₚₜ ')'
178
  typename-specifier '(' expression-listₒₚₜ ')'
179
  simple-type-specifier braced-init-list
180
  typename-specifier braced-init-list
181
  postfix-expression '.' 'template'ₒₚₜ id-expression
182
  postfix-expression '->' 'template'ₒₚₜ id-expression
183
  postfix-expression '++'
184
- postfix-expression '-{-}'
185
  dynamic_cast '<' type-id '>' '(' expression ')'
186
  static_cast '<' type-id '>' '(' expression ')'
187
  reinterpret_cast '<' type-id '>' '(' expression ')'
188
  const_cast '<' type-id '>' '(' expression ')'
189
  typeid '(' expression ')'
@@ -194,15 +212,17 @@ postfix-expression:
194
  expression-list:
195
  initializer-list
196
  ```
197
 
198
  ``` bnf
 
 
199
  unary-expression:
200
  postfix-expression
201
  unary-operator cast-expression
202
  '++' cast-expression
203
- '-{-}' cast-expression
204
  await-expression
205
  sizeof unary-expression
206
  sizeof '(' type-id ')'
207
  sizeof '...' '(' identifier ')'
208
  alignof '(' type-id ')'
@@ -210,10 +230,12 @@ unary-expression:
210
  new-expression
211
  delete-expression
212
  ```
213
 
214
  ``` bnf
 
 
215
  unary-operator: one of
216
  '* & + - ! ~'
217
  ```
218
 
219
  ``` bnf
 
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
51
  ```
52
 
53
  ``` bnf
54
  lambda-introducer:
55
  '[' lambda-captureₒₚₜ ']'
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
70
+ constexpr
71
+ mutable
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
 
138
  requires requirement-parameter-listₒₚₜ requirement-body
139
  ```
140
 
141
  ``` bnf
142
  requirement-parameter-list:
143
+ '(' parameter-declaration-clause ')'
144
  ```
145
 
146
  ``` bnf
147
  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
 
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 ')'
206
  const_cast '<' type-id '>' '(' expression ')'
207
  typeid '(' expression ')'
 
212
  expression-list:
213
  initializer-list
214
  ```
215
 
216
  ``` bnf
217
+ %% Ed. note: character protrusion would misalign operators.
218
+
219
  unary-expression:
220
  postfix-expression
221
  unary-operator cast-expression
222
  '++' cast-expression
223
+ '--' cast-expression
224
  await-expression
225
  sizeof unary-expression
226
  sizeof '(' type-id ')'
227
  sizeof '...' '(' identifier ')'
228
  alignof '(' type-id ')'
 
230
  new-expression
231
  delete-expression
232
  ```
233
 
234
  ``` bnf
235
+ %% Ed. note: character protrusion would misalign operators.
236
+
237
  unary-operator: one of
238
  '* & + - ! ~'
239
  ```
240
 
241
  ``` bnf