Path: ...!news.mixmin.net!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail From: Janis Papanagnou Newsgroups: comp.lang.awk Subject: Re: Operator precedence Date: Fri, 24 May 2024 04:41:11 +0200 Organization: A noiseless patient Spider Lines: 55 Message-ID: References: <20240523092856.646@kylheku.com> <87sey8movv.fsf@axel-reichert.de> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Injection-Date: Fri, 24 May 2024 04:41:13 +0200 (CEST) Injection-Info: dont-email.me; posting-host="20166a1be4904517f87802e214b70893"; logging-data="2265327"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX190HYM4SjRl9U6b3Ym6OJ+H" User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.8.0 Cancel-Lock: sha1:MQSuI34N8nCpfOMzg0dJrW5by4g= X-Enigmail-Draft-Status: N1110 In-Reply-To: Bytes: 2687 After pondering a bit more I think this is my personal resume... On 24.05.2024 01:53, Janis Papanagnou wrote: > [...] > Moreover, what seams reasonable (to me) is that _unary_ operators > should (typically/always?) bind tighter than _binary_ operators! An example may make things probably more apparent; in the expression 5 * -3 ^ 2 it would never occur to me to not consider the "-3" as an entity. Because of the typical inherently tight coupling of unary operators. (Assuming an interpretation of 5 * -(3 ^ 2) would look just wrong to me.) > This would imply that exponentiation does not bind higher than the > unary minus. (And that the order of the upthread posted Shell and > Algol 68 expressions would thus fit better.) BTW, Unix 'bc' also behaves that way $ bc -l <<< " 5 * -3 ^ 2 " 45 Let me add an Algol 68 anecdote (sort of)... You can of course adjust the operator precedences in that language to fit your preferences. And since you have more than one representation for the exponentiation in Algol 68 - in the Genie compiler for example '^', 'UP', and '**' - you can even change just one of them (if you like), for example BEGIN PRIO UP = 5; INT a=5; print ((a ^ 2, - a ^ 2, 0 - a ^ 2, newline)); print ((a UP 2, -a UP 2, 0-a UP 2, newline)); print ((a ** 2, -a ** 2, 0-a ** 2, newline)); SKIP END produces +25 +25 -25 +25 +25 +25 +25 +25 -25 Scary! :-) Janis