Path: ...!feeds.phibee-telecom.net!3.eu.feeder.erje.net!feeder.erje.net!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail From: James Kuyper Newsgroups: comp.lang.c Subject: Re: Top 10 most common hard skills listed on resumes... Date: Sun, 1 Sep 2024 13:12:53 -0400 Organization: A noiseless patient Spider Lines: 33 Message-ID: References: <87mskwy9t1.fsf@bsb.me.uk> <875xrkxlgo.fsf@bsb.me.uk> <87o75bwlp8.fsf@bsb.me.uk> <871q27weeh.fsf@bsb.me.uk> <20240829083200.195@kylheku.com> <87v7zjuyd8.fsf@bsb.me.uk> <20240829084851.962@kylheku.com> <87mskvuxe9.fsf@bsb.me.uk> <875xrivrg0.fsf@bsb.me.uk> <20240829191404.887@kylheku.com> <86cylqw2f8.fsf@linuxsc.com> <871q2568vl.fsf@nosuchdomain.example.com> <87cylo494u.fsf@nosuchdomain.example.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Injection-Date: Sun, 01 Sep 2024 19:12:54 +0200 (CEST) Injection-Info: dont-email.me; posting-host="bfea014010ea0677172ff56261af70a9"; logging-data="1649991"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19PjUxqZpZpSDH9EJx/o0/lJIHFd1+i7HU=" User-Agent: Mozilla Thunderbird Cancel-Lock: sha1:XDoFhd/dK7qj5qu1XWmpRiblBZ4= Content-Language: en-US In-Reply-To: Bytes: 3381 Bart writes: > On 31/08/2024 23:31, Keith Thompson wrote: >> Bart writes: .... > I can also say that the C grammar is buggy: > > assignment-expression: > conditional-expression > unary-expression asssignment-operator assignment-expression > > When attempting to parse an assignment-expression, do you go for a > conditional-expression or unary-expression? Why are you attempting to parse an assignment-expression? At the start a new statement, once you've gotten far enough to rule out any other kind of statement, you should to parse it as an expression statement (6.8.3), which starts with an expression. If you have already parsed the statement far enough to recognize a unary expression, and then find it followed by an assignment operator, then you should check to see if the rest of the statement is an assignment-expression. If the first part isn't a unary-expression, then with few exceptions (such as inside a _Generic() expression), it's a syntax error. > The latter is a subset of the former. If you go for a > conditional-expression and find that an assignment-operator follows, > now you have to perform some analysis on the LHS to see if that > conditional-expression contains only a unary-expression. It qualifies as a conditional-expression only because being a unary-expression is one of the ways it can qualify as conditional expression. You can discard information about having recognized it as a unary-expression if it's convenient, but you can't argue that it's convenient to discard it and at the same time complain about the fact the consequences of having discarded it.