C++ Logo

liaison

Advanced search

Re: [wg14/wg21 liaison] P2961R1 syntax for Contracts: viable for C?

From: Jens Maurer <jens.maurer_at_[hidden]>
Date: Fri, 6 Oct 2023 18:28:49 +0200
On 06/10/2023 18.27, Timur Doumler wrote:
>
>
>> On 6 Oct 2023, at 19:24, Jens Maurer <jens.maurer_at_[hidden]> wrote:
>>
>> On 06/10/2023 18.11, Aaron Ballman via Liaison wrote:
>>> On Fri, Oct 6, 2023 at 9:58 AM Timur Doumler <cpp_at_[hidden]> wrote:
>>> It's a footnote, so we're a bit imprecise with the wording of it. But
>>> the intent here is "parse" means "lex and eat tokens until the closing
>>> ]], paying attention to balance (, [, and { with ), ], and }". It's
>>> "parsing" because of the balanced tokens and needing to find the
>>> closing ]]. But the goal is for it to be a valid implementation to see
>>> [[, eat balanced tokens until the closing ]], and drop everything on
>>> the floor.
>>
>> That's not what the normative text says, though.
>>
>> C23 6.7.12p2 still says you need to parse the basic
>> structure of attributes. For example, a ":" appearing
>> as an attribute-token is required to be diagnosed as
>> ill-formed.
>
> If that is indeed the case, then the attribute-like syntax for Contracts would not be ignorable in C, either.

Right, but the argument is that implementations can add the small extension
to parse-ignore ":" in that spot right now, and then be future-proof for
ignoring future attribute-like contracts.

Jens

Received on 2023-10-06 16:28:54