Deutsch   English   Français   Italiano  
<86seuktkcg.fsf@linuxsc.com>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: ...!feeds.phibee-telecom.net!news.mixmin.net!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: Tim Rentsch <tr.17687@z991.linuxsc.com>
Newsgroups: comp.lang.c
Subject: Re: Top 10 most common hard skills listed on resumes...
Date: Sat, 31 Aug 2024 15:10:07 -0700
Organization: A noiseless patient Spider
Lines: 51
Message-ID: <86seuktkcg.fsf@linuxsc.com>
References: <vab101$3er$1@reader1.panix.com> <vai1ec$2fns2$1@dont-email.me> <874j75zftu.fsf@bsb.me.uk> <valrj7$367a8$2@dont-email.me> <87mskwy9t1.fsf@bsb.me.uk> <vanq4h$3iieb$1@dont-email.me> <875xrkxlgo.fsf@bsb.me.uk> <vapitn$3u1ub$1@dont-email.me> <87o75bwlp8.fsf@bsb.me.uk> <vaps06$3vg8l$1@dont-email.me> <871q27weeh.fsf@bsb.me.uk> <20240829083200.195@kylheku.com> <87v7zjuyd8.fsf@bsb.me.uk> <20240829084851.962@kylheku.com> <87mskvuxe9.fsf@bsb.me.uk> <vaq9tu$1te8$1@dont-email.me> <875xrivrg0.fsf@bsb.me.uk> <20240829191404.887@kylheku.com> <86cylqw2f8.fsf@linuxsc.com> <871q2568vl.fsf@nosuchdomain.example.com> <vavmbk$13k4n$1@dont-email.me>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Injection-Date: Sun, 01 Sep 2024 00:10:07 +0200 (CEST)
Injection-Info: dont-email.me; posting-host="1ccc4d5fef9c2c82c9c978d9286151e6";
	logging-data="1240558"; mail-complaints-to="abuse@eternal-september.org";	posting-account="U2FsdGVkX19I7476rlyunOr9xmTsMGEVCB79I3Rlxmc="
User-Agent: Gnus/5.11 (Gnus v5.11) Emacs/22.4 (gnu/linux)
Cancel-Lock: sha1:ynVyIKRtDtEiNdf6hx4p2AIJkl8=
	sha1:4lPCx8fus5KuIrT8+au9MU1iNEY=
Bytes: 3269

Bart <bc@freeuk.com> writes:

> On 30/08/2024 21:41, Keith Thompson wrote:
>
>> Tim Rentsch <tr.17687@z991.linuxsc.com> writes:
>>
>>> Kaz Kylheku <643-408-1753@kylheku.com> writes:
>>>
>>>> On 2024-08-29, Ben Bacarisse <ben@bsb.me.uk> wrote:
>>>>
>>>>> Bart <bc@freeuk.com> writes:
>>>>>
>>>>>> I think that these (with x, y having compatible scalar types):
>>>>>>
>>>>>>     x + 1 = y;
>>>>>>     (x + 1) = y;         // in case above was parsed differently
>>>>>>
>>>>>> are both valid syntax in C. It will fail for a different reason:
>>>>>> an '+' term is not a valid lvalue.
>>>>>
>>>>> The compiler must tell you that neither is valid C.  That's
>>>>> because what is required on each side of assignment is not
>>>>> exactly the same thing.  It's a distraction to argue about why
>>>>> each is not valid C as both have errors that require diagnostic
>>>>> at compile time.
>>>>
>>>> Bart is only saying that it's valid syntax, not that it's valid C.
>>>>
>>>> According to the ISO C syntax (not taking into account contraints,
>>>> which are not syntax) that view is justified.
>>>
>>> The second line is syntactically well-formed.  The first line is
>>> not.
>>
>> Right, because the LHS of an assignment is a unary-expression.
>> `(x + 1)` can be parsed as a unary-expression, but `x + 1` cannot.
>
> AFAICT both terms are parsed the same way.
>
> Given this:
>
>    x + y = z;
>    (x + y) = z;
>
> My compiler produces the same AST for the LHS of '=' in both
> cases.

To understand why they are different, try drawing parse trees
rather than abstract syntax trees.

https://en.wikipedia.org/wiki/Parse_tree