From Jason Turner

[gram.expr]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmpsd66vj4i/{from.md → to.md} +28 -6
tmp/tmpsd66vj4i/{from.md → to.md} RENAMED
@@ -5,10 +5,11 @@ primary-expression:
5
  literal
6
  'this'
7
  '(' expression ')'
8
  id-expression
9
  lambda-expression
 
10
  ```
11
 
12
  ``` bnf
13
  id-expression:
14
  unqualified-id
@@ -49,10 +50,16 @@ lambda-expression:
49
  ``` bnf
50
  lambda-introducer:
51
  '[' lambda-captureₒₚₜ ']'
52
  ```
53
 
 
 
 
 
 
 
54
  ``` bnf
55
  lambda-capture:
56
  capture-default
57
  capture-list
58
  capture-default ',' capture-list
@@ -79,29 +86,39 @@ capture:
79
  ``` bnf
80
  simple-capture:
81
  identifier
82
  '&' identifier
83
  'this'
 
84
  ```
85
 
86
  ``` bnf
87
  init-capture:
88
  identifier initializer
89
  '&' identifier initializer
90
  ```
91
 
92
  ``` bnf
93
- lambda-declarator:
94
- '(' parameter-declaration-clause ')' 'mutable'ₒₚₜ
95
- exception-specificationₒₚₜ attribute-specifier-seqₒₚₜ trailing-return-typeₒₚₜ
 
 
 
 
 
 
 
 
 
 
96
  ```
97
 
98
  ``` bnf
99
  postfix-expression:
100
  primary-expression
101
- postfix-expression '[' expression ']'
102
- postfix-expression '[' braced-init-list ']'
103
  postfix-expression '(' expression-listₒₚₜ ')'
104
  simple-type-specifier '(' expression-listₒₚₜ ')'
105
  typename-specifier '(' expression-listₒₚₜ ')'
106
  simple-type-specifier braced-init-list
107
  typename-specifier braced-init-list
@@ -126,11 +143,11 @@ expression-list:
126
 
127
  ``` bnf
128
  pseudo-destructor-name:
129
  nested-name-specifierₒₚₜ type-name ':: ~' type-name
130
  nested-name-specifier 'template' simple-template-id ':: ~' type-name
131
- nested-name-specifierₒₚₜ '~' type-name
132
  '~' decltype-specifier
133
  ```
134
 
135
  ``` bnf
136
  unary-expression:
@@ -282,10 +299,15 @@ logical-or-expression:
282
  conditional-expression:
283
  logical-or-expression
284
  logical-or-expression '?' expression ':' assignment-expression
285
  ```
286
 
 
 
 
 
 
287
  ``` bnf
288
  assignment-expression:
289
  conditional-expression
290
  logical-or-expression assignment-operator initializer-clause
291
  throw-expression
 
5
  literal
6
  'this'
7
  '(' expression ')'
8
  id-expression
9
  lambda-expression
10
+ fold-expression
11
  ```
12
 
13
  ``` bnf
14
  id-expression:
15
  unqualified-id
 
50
  ``` bnf
51
  lambda-introducer:
52
  '[' lambda-captureₒₚₜ ']'
53
  ```
54
 
55
+ ``` bnf
56
+ lambda-declarator:
57
+ '(' parameter-declaration-clause ')' decl-specifier-seqₒₚₜ
58
+ noexcept-specifierₒₚₜ attribute-specifier-seqₒₚₜ trailing-return-typeₒₚₜ
59
+ ```
60
+
61
  ``` bnf
62
  lambda-capture:
63
  capture-default
64
  capture-list
65
  capture-default ',' capture-list
 
86
  ``` bnf
87
  simple-capture:
88
  identifier
89
  '&' identifier
90
  'this'
91
+ '* this'
92
  ```
93
 
94
  ``` bnf
95
  init-capture:
96
  identifier initializer
97
  '&' identifier initializer
98
  ```
99
 
100
  ``` bnf
101
+ fold-expression:
102
+ '(' cast-expression fold-operator '...' ')'
103
+ '(' '...' fold-operator cast-expression ')'
104
+ '(' cast-expression fold-operator '...' fold-operator cast-expression ')'
105
+ ```
106
+
107
+ ``` bnf
108
+ %% Ed. note: character protrusion would misalign operators with leading `-`.
109
+
110
+ fold-operator: one of
111
+ '+ ' '- ' '* ' '/ ' '% ' '^ ' '& ' '| ' '<< ' '>> '
112
+ '+=' '-=' '*=' '/=' '%=' '^=' '&=' '|=' '<<=' '>>=' '='
113
+ '==' '!=' '< ' '> ' '<=' '>=' '&&' '||' ', ' '.* ' '->*'
114
  ```
115
 
116
  ``` bnf
117
  postfix-expression:
118
  primary-expression
119
+ postfix-expression '[' expr-or-braced-init-list ']'
 
120
  postfix-expression '(' expression-listₒₚₜ ')'
121
  simple-type-specifier '(' expression-listₒₚₜ ')'
122
  typename-specifier '(' expression-listₒₚₜ ')'
123
  simple-type-specifier braced-init-list
124
  typename-specifier braced-init-list
 
143
 
144
  ``` bnf
145
  pseudo-destructor-name:
146
  nested-name-specifierₒₚₜ type-name ':: ~' type-name
147
  nested-name-specifier 'template' simple-template-id ':: ~' type-name
148
+ '~' type-name
149
  '~' decltype-specifier
150
  ```
151
 
152
  ``` bnf
153
  unary-expression:
 
299
  conditional-expression:
300
  logical-or-expression
301
  logical-or-expression '?' expression ':' assignment-expression
302
  ```
303
 
304
+ ``` bnf
305
+ throw-expression:
306
+ 'throw' assignment-expressionₒₚₜ
307
+ ```
308
+
309
  ``` bnf
310
  assignment-expression:
311
  conditional-expression
312
  logical-or-expression assignment-operator initializer-clause
313
  throw-expression