tmp/tmpv6f0bzmg/{from.md → to.md}
RENAMED
|
@@ -44,10 +44,11 @@ control-line:
|
|
| 44 |
'# define ' identifier lparen '... )' replacement-list new-line
|
| 45 |
'# define ' identifier lparen identifier-list ', ... )' replacement-list new-line
|
| 46 |
'# undef ' identifier new-line
|
| 47 |
'# line ' pp-tokens new-line
|
| 48 |
'# error ' pp-tokensₒₚₜ new-line
|
|
|
|
| 49 |
'# pragma ' pp-tokensₒₚₜ new-line
|
| 50 |
'# 'new-line
|
| 51 |
```
|
| 52 |
|
| 53 |
``` bnf
|
|
@@ -69,10 +70,12 @@ elif-groups:
|
|
| 69 |
```
|
| 70 |
|
| 71 |
``` bnf
|
| 72 |
elif-group:
|
| 73 |
'# elif ' constant-expression new-line groupₒₚₜ
|
|
|
|
|
|
|
| 74 |
```
|
| 75 |
|
| 76 |
``` bnf
|
| 77 |
else-group:
|
| 78 |
'# else ' new-line groupₒₚₜ
|
|
@@ -93,11 +96,11 @@ conditionally-supported-directive:
|
|
| 93 |
pp-tokens new-line
|
| 94 |
```
|
| 95 |
|
| 96 |
``` bnf
|
| 97 |
lparen:
|
| 98 |
-
a '(' character not immediately preceded by
|
| 99 |
```
|
| 100 |
|
| 101 |
``` bnf
|
| 102 |
identifier-list:
|
| 103 |
identifier
|
|
@@ -185,16 +188,16 @@ At the start of phase 4 of translation, the *group* of a
|
|
| 185 |
|
| 186 |
When in a group that is skipped [[cpp.cond]], the directive syntax is
|
| 187 |
relaxed to allow any sequence of preprocessing tokens to occur between
|
| 188 |
the directive name and the following new-line character.
|
| 189 |
|
| 190 |
-
The only
|
| 191 |
tokens within a preprocessing directive (from just after the
|
| 192 |
directive-introducing token through just before the terminating new-line
|
| 193 |
character) are space and horizontal-tab (including spaces that have
|
| 194 |
-
replaced comments or possibly other
|
| 195 |
-
|
| 196 |
|
| 197 |
The implementation can process and skip sections of source files
|
| 198 |
conditionally, include other source files, import macros from header
|
| 199 |
units, and replace macros. These capabilities are called
|
| 200 |
*preprocessing*, because conceptually they occur before translation of
|
|
|
|
| 44 |
'# define ' identifier lparen '... )' replacement-list new-line
|
| 45 |
'# define ' identifier lparen identifier-list ', ... )' replacement-list new-line
|
| 46 |
'# undef ' identifier new-line
|
| 47 |
'# line ' pp-tokens new-line
|
| 48 |
'# error ' pp-tokensₒₚₜ new-line
|
| 49 |
+
'# warning' pp-tokensₒₚₜ new-line
|
| 50 |
'# pragma ' pp-tokensₒₚₜ new-line
|
| 51 |
'# 'new-line
|
| 52 |
```
|
| 53 |
|
| 54 |
``` bnf
|
|
|
|
| 70 |
```
|
| 71 |
|
| 72 |
``` bnf
|
| 73 |
elif-group:
|
| 74 |
'# elif ' constant-expression new-line groupₒₚₜ
|
| 75 |
+
'# elifdef ' identifier new-line groupₒₚₜ
|
| 76 |
+
'# elifndef' identifier new-line groupₒₚₜ
|
| 77 |
```
|
| 78 |
|
| 79 |
``` bnf
|
| 80 |
else-group:
|
| 81 |
'# else ' new-line groupₒₚₜ
|
|
|
|
| 96 |
pp-tokens new-line
|
| 97 |
```
|
| 98 |
|
| 99 |
``` bnf
|
| 100 |
lparen:
|
| 101 |
+
a '(' character not immediately preceded by whitespace
|
| 102 |
```
|
| 103 |
|
| 104 |
``` bnf
|
| 105 |
identifier-list:
|
| 106 |
identifier
|
|
|
|
| 188 |
|
| 189 |
When in a group that is skipped [[cpp.cond]], the directive syntax is
|
| 190 |
relaxed to allow any sequence of preprocessing tokens to occur between
|
| 191 |
the directive name and the following new-line character.
|
| 192 |
|
| 193 |
+
The only whitespace characters that shall appear between preprocessing
|
| 194 |
tokens within a preprocessing directive (from just after the
|
| 195 |
directive-introducing token through just before the terminating new-line
|
| 196 |
character) are space and horizontal-tab (including spaces that have
|
| 197 |
+
replaced comments or possibly other whitespace characters in translation
|
| 198 |
+
phase 3).
|
| 199 |
|
| 200 |
The implementation can process and skip sections of source files
|
| 201 |
conditionally, include other source files, import macros from header
|
| 202 |
units, and replace macros. These capabilities are called
|
| 203 |
*preprocessing*, because conceptually they occur before translation of
|