From Jason Turner

[gram.cpp]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmplkl1a1mf/{from.md → to.md} +67 -6
tmp/tmplkl1a1mf/{from.md → to.md} RENAMED
@@ -37,10 +37,11 @@ group-part:
37
 
38
  ``` bnf
39
  control-line:
40
  '# include' pp-tokens new-line
41
  pp-import
 
42
  '# define ' identifier replacement-list new-line
43
  '# define ' identifier lparen identifier-listₒₚₜ ')' replacement-list new-line
44
  '# define ' identifier lparen '... )' replacement-list new-line
45
  '# define ' identifier lparen identifier-list ', ... )' replacement-list new-line
46
  '# undef ' identifier new-line
@@ -63,12 +64,11 @@ if-group:
63
  '# ifndef ' identifier new-line groupₒₚₜ
64
  ```
65
 
66
  ``` bnf
67
  elif-groups:
68
- elif-group
69
- elif-groups elif-group
70
  ```
71
 
72
  ``` bnf
73
  elif-group:
74
  '# elif ' constant-expression new-line groupₒₚₜ
@@ -112,12 +112,52 @@ replacement-list:
112
  pp-tokensₒₚₜ
113
  ```
114
 
115
  ``` bnf
116
  pp-tokens:
117
- preprocessing-token
118
- pp-tokens preprocessing-token
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
119
  ```
120
 
121
  ``` bnf
122
  new-line:
123
  the new-line character
@@ -134,12 +174,11 @@ h-preprocessing-token:
134
  any *preprocessing-token* other than '>'
135
  ```
136
 
137
  ``` bnf
138
  h-pp-tokens:
139
- h-preprocessing-token
140
- h-pp-tokens h-preprocessing-token
141
  ```
142
 
143
  ``` bnf
144
  header-name-tokens:
145
  string-literal
@@ -150,20 +189,42 @@ header-name-tokens:
150
  has-include-expression:
151
  '__has_include' '(' header-name ')'
152
  '__has_include' '(' header-name-tokens ')'
153
  ```
154
 
 
 
 
 
 
 
155
  ``` bnf
156
  has-attribute-expression:
157
  '__has_cpp_attribute (' pp-tokens ')'
158
  ```
159
 
160
  ``` bnf
161
  pp-module:
162
  exportₒₚₜ module pp-tokensₒₚₜ ';' new-line
163
  ```
164
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
165
  ``` bnf
166
  pp-import:
167
  exportₒₚₜ import header-name pp-tokensₒₚₜ ';' new-line
168
  exportₒₚₜ import header-name-tokens pp-tokensₒₚₜ ';' new-line
169
  exportₒₚₜ import pp-tokens ';' new-line
 
37
 
38
  ``` bnf
39
  control-line:
40
  '# include' pp-tokens new-line
41
  pp-import
42
+ '# embed ' pp-tokens new-line
43
  '# define ' identifier replacement-list new-line
44
  '# define ' identifier lparen identifier-listₒₚₜ ')' replacement-list new-line
45
  '# define ' identifier lparen '... )' replacement-list new-line
46
  '# define ' identifier lparen identifier-list ', ... )' replacement-list new-line
47
  '# undef ' identifier new-line
 
64
  '# ifndef ' identifier new-line groupₒₚₜ
65
  ```
66
 
67
  ``` bnf
68
  elif-groups:
69
+ elif-group elif-groupsₒₚₜ
 
70
  ```
71
 
72
  ``` bnf
73
  elif-group:
74
  '# elif ' constant-expression new-line groupₒₚₜ
 
112
  pp-tokensₒₚₜ
113
  ```
114
 
115
  ``` bnf
116
  pp-tokens:
117
+ preprocessing-token pp-tokensₒₚₜ
118
+ ```
119
+
120
+ ``` bnf
121
+ embed-parameter-seq:
122
+ embed-parameter embed-parameter-seqₒₚₜ
123
+ ```
124
+
125
+ ``` bnf
126
+ embed-parameter:
127
+ embed-standard-parameter
128
+ embed-prefixed-parameter
129
+ ```
130
+
131
+ ``` bnf
132
+ embed-standard-parameter:
133
+ 'limit' '(' pp-balanced-token-seq ')'
134
+ 'prefix' '(' pp-balanced-token-seqₒₚₜ ')'
135
+ 'suffix' '(' pp-balanced-token-seqₒₚₜ ')'
136
+ 'if_empty' '(' pp-balanced-token-seqₒₚₜ ')'
137
+ ```
138
+
139
+ ``` bnf
140
+ embed-prefixed-parameter:
141
+ identifier :: identifier
142
+ identifier :: identifier '(' pp-balanced-token-seqₒₚₜ ')'
143
+ ```
144
+
145
+ ``` bnf
146
+ pp-balanced-token-seq:
147
+ pp-balanced-token pp-balanced-token-seqₒₚₜ
148
+ ```
149
+
150
+ ``` bnf
151
+ pp-balanced-token:
152
+ '(' pp-balanced-token-seqₒₚₜ ')'
153
+ '[' pp-balanced-token-seqₒₚₜ ']'
154
+ '{' pp-balanced-token-seqₒₚₜ '}'
155
+ any pp-token except:
156
+ parenthesis (U+0028 (left parenthesis) and U+0029 (right parenthesis)),
157
+ bracket (U+005b (left square bracket) and U+005d (right square bracket)), or
158
+ brace (U+007b (left curly bracket) and U+007d (right curly bracket)).
159
  ```
160
 
161
  ``` bnf
162
  new-line:
163
  the new-line character
 
174
  any *preprocessing-token* other than '>'
175
  ```
176
 
177
  ``` bnf
178
  h-pp-tokens:
179
+ h-preprocessing-token h-pp-tokensₒₚₜ
 
180
  ```
181
 
182
  ``` bnf
183
  header-name-tokens:
184
  string-literal
 
189
  has-include-expression:
190
  '__has_include' '(' header-name ')'
191
  '__has_include' '(' header-name-tokens ')'
192
  ```
193
 
194
+ ``` bnf
195
+ has-embed-expression:
196
+ '__has_embed' '(' header-name pp-balanced-token-seqₒₚₜ ')'
197
+ '__has_embed' '(' header-name-tokens pp-balanced-token-seqₒₚₜ ')'
198
+ ```
199
+
200
  ``` bnf
201
  has-attribute-expression:
202
  '__has_cpp_attribute (' pp-tokens ')'
203
  ```
204
 
205
  ``` bnf
206
  pp-module:
207
  exportₒₚₜ module pp-tokensₒₚₜ ';' new-line
208
  ```
209
 
210
+ ``` bnf
211
+ pp-module-name:
212
+ pp-module-name-qualifierₒₚₜ identifier
213
+ ```
214
+
215
+ ``` bnf
216
+ pp-module-partition:
217
+ ':' pp-module-name-qualifierₒₚₜ identifier
218
+ ```
219
+
220
+ ``` bnf
221
+ pp-module-name-qualifier:
222
+ identifier '.'
223
+ pp-module-name-qualifier identifier '.'
224
+ ```
225
+
226
  ``` bnf
227
  pp-import:
228
  exportₒₚₜ import header-name pp-tokensₒₚₜ ';' new-line
229
  exportₒₚₜ import header-name-tokens pp-tokensₒₚₜ ';' new-line
230
  exportₒₚₜ import pp-tokens ';' new-line