You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
CWG2937 [lex.phases] Grammar for preprocessing-file has no normative effect #615
Issue description: [cpp.pre] defines the grammar production preprocessing-file but nothing in the standard specifies that a translation unit is ill-formed if it fails to match that grammar. Similarly, translation-unit has no normative effect.
Suggested resolution: Edit [lex.phases]/1.4:
The source file is analyzed as a preprocessing-file ([cpp.pre]). Preprocessing directives are executed, macro invocations are expanded, and _Pragma unary operator expressions are executed. A #include preprocessing directive causes the named header or source file to be processed from phase 1 through phase 4, recursively. All preprocessing directives are then deleted.
Edit [lex.phases]/1.7:
Whitespace characters separating tokens are no longer significant. Each preprocessing token is converted into a token ([lex.token]). The resulting tokens constitute a translation unit and are syntactically and semantically analyzed as a translation-unit ([basic.link]) and translated. [...]
changed the title [-][lex.phases] Grammar for preprocessing-file has no normative effect[/-][+]CWG2937 [lex.phases] Grammar for preprocessing-file has no normative effect[/+]on Oct 2, 2024
Activity
jensmaurer commentedon Oct 2, 2024
CWG2937
[-][lex.phases] Grammar for preprocessing-file has no normative effect[/-][+]CWG2937 [lex.phases] Grammar for preprocessing-file has no normative effect[/+]