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
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. [...]
The text was updated successfully, but these errors were encountered:
jensmaurer
changed the title
[lex.phases] Grammar for preprocessing-file has no normative effect
CWG2937 [lex.phases] Grammar for preprocessing-file has no normative effect
Oct 2, 2024
Full name of submitter: Brian Bi
Reference (section label): [lex.phases]
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:
Edit [lex.phases]/1.7:
The text was updated successfully, but these errors were encountered: