Skip to content

CWG2937 [lex.phases] Grammar for preprocessing-file has no normative effect #615

Description

@t3nsor

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:

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. [...]

Activity

  1. jensmaurer commented on Oct 2, 2024

    @jensmaurer
    Member
  2. 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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions