From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 24082 invoked by alias); 8 Aug 2018 16:05:44 -0000 Mailing-List: contact zsh-workers-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Workers List List-Post: List-Help: List-Unsubscribe: X-Seq: 43261 Received: (qmail 1318 invoked by uid 1010); 8 Aug 2018 16:05:44 -0000 X-Qmail-Scanner-Diagnostics: from mailout2.w1.samsung.com by f.primenet.com.au (envelope-from , uid 7791) with qmail-scanner-2.11 (clamdscan: 0.99.2/21882. spamassassin: 3.4.1. Clear:RC:0(210.118.77.12):SA:0(-6.9/5.0):. Processed in 2.579071 secs); 08 Aug 2018 16:05:44 -0000 X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-6.9 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_HI, SPF_HELO_PASS,SPF_PASS,T_DKIMWL_WL_HIGH,T_DKIM_INVALID autolearn=ham autolearn_force=no version=3.4.1 X-Envelope-From: p.stephenson@samsung.com X-Qmail-Scanner-Mime-Attachments: | X-Qmail-Scanner-Zip-Files: | DKIM-Filter: OpenDKIM Filter v2.11.0 mailout2.w1.samsung.com 20180808160538euoutp02b1bb00a4dd6035320c51d4cc4653dc47~I9FlrFeZL1783917839euoutp02N DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1533744338; bh=zIW5RdQjofkm4j0QzCasn9S8wSqKsq+Nduf7VXQn+OQ=; h=Date:From:To:Subject:In-Reply-To:References:From; b=MJsAPBnxCkHgTXHUigOW7AXNLqFzlYe8/BCDV+PAprKNEK0LFSCDXjf1uAGE6JJ3G 6SBNteo6LYWIL/5u/LU9tmLftFTT1DAAdYujMx/+YxUbK99WmmyFPtGzahMhgVpNLf ZJ4TfJ+FKUr9O8OfV6Ucm3ShVFyX0yuhWxgSfKwQ= X-AuditID: cbfec7f5-367ff700000012c6-d0-5b6b14d0a0e6 Date: Wed, 8 Aug 2018 17:05:34 +0100 From: Peter Stephenson To: Zsh hackers list Subject: Re: negative bases in arithmetic expressions In-Reply-To: <20180808153706.GB16265@chaz.gmail.com> Organization: SCSC X-Mailer: Claws Mail 3.13.2 (GTK+ 2.24.30; x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrHIsWRmVeSWpSXmKPExsWy7djP87oXRLKjDf7dlLE42PyQyYHRY9XB D0wBjFFcNimpOZllqUX6dglcGR8+zWcs2M9Vsf+oVgPjdfYuRk4OCQETifb//9m6GLk4hARW MEocu7uKEcLpY5KYuesElNPLJLF+7jxmmJZZm7ZDtSxnlNj87iQTXNXmng1MIFVCAqcZJa6v DYRInGeU+PPuM1iCRUBF4tqFJhYQm03AUGLqptmMILaIgJbEjpMnwWqEBUwlFj55BLaOE2jd 7UObgWo4OPgFhCQuNNtCXGEvcXQPRDmvgKDEyZlPwEYyC8hLbH87hxlkr4TAezaJu1P+sUAU lUk0nbjMBNHsInF83Wqod4QlXh3fAg0NGYn/O+czQTS3M0qsmfSaHcLpYZTYdPQOI0SVtUTf 7YtgFzELaEqs36UPEXaU2LJkFRNIWEKAT+LGW0GIg/gkJm2bzgwR5pXoaBOCqFaT2NG0lXEC o/IsJC/MQvLCLIT5CxiZVzGKp5YW56anFhvnpZbrFSfmFpfmpesl5+duYgSmgtP/jn/dwbjv T9IhRgEORiUe3gt82dFCrIllxZW5hxglOJiVRHiT6zKjhXhTEiurUovy44tKc1KLDzFKc7Ao ifPyaaVFCwmkJ5akZqemFqQWwWSZODilGhiFA+Tiix58WMx0dhafyOON+a2SKjsvHDa+yV+R uunPPMtCq/Ov/k9y0dZPXTHFs3RKZe23lzYbrvI9Ebh7TeKZ/e+ipkL93MhNfbYKdvbu4rvz X5+dx6k0T2ytvoDD6n/Syv7m6UcP2BY5r1549DnDgvcfuK5K6d/kfpYkX/OPdY1HkNdX3Rwl luKMREMt5qLiRACly+NUAQMAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFuplkeLIzCtJLcpLzFFi42I5/e/4Pd3zItnRBpMniVkcbH7I5MDoserg B6YAxig9m6L80pJUhYz84hJbpWhDCyM9Q0sLPSMTSz1DY/NYKyNTJX07m5TUnMyy1CJ9uwS9 jA+f5jMW7Oeq2H9Uq4HxOnsXIyeHhICJxKxN29m6GLk4hASWMkqsaNzDCpGQkfh05SNUkbDE n2tdUEXdTBJbzs5jgXBOM0o8P7iWFcI5zyhxa+ZVZpAWFgEViWsXmlhAbDYBQ4mpm2Yzgtgi AloSO06eZAKxhQVMJRY+eQRWzyvgLPFpyRSwek6gm24f2swIMbSdUWLDk7NAGzg4+AWEJC40 20KcZC9xdA/EHF4BQYmTM5+A9TIL6EicWHWMGcKWl9j+dg7zBEbhWUjKZiEpm4WkbAEj8ypG kdTS4tz03GJDveLE3OLSvHS95PzcTYzAqNh27OfmHYyXNgYfYhTgYFTi4b3Alx0txJpYVlyZ e4hRgoNZSYQ3uS4zWog3JbGyKrUoP76oNCe1+BCjKTAwJjJLiSbnAyM2ryTe0NTQ3MLS0NzY 3NjMQkmc97xBZZSQQHpiSWp2ampBahFMHxMHp1QDY8/W0/ol7cXvrRl4Clf+9g7o+L1h+snv nIf/9aiv1xPU26sznWfio0M5fw9NVdw8OexGA0PtvIolb9UtTyof3ZIZ8o4j5/+KlT5tz0z3 +Zvv6fH9eivfaU/6wXfRq35rNlhNYioN4gpZIh+8w5hnn+o7WY6NKydy2ni8NvCr4bW8Jb+0 WcY+WYmlOCPRUIu5qDgRALhFX4SgAgAA Message-Id: <20180808160535eucas1p2f17bcad971b1f1190aed12c5bd707b6c~I9FjdWE6a1044010440eucas1p2I@eucas1p2.samsung.com> X-CMS-MailID: 20180808160535eucas1p2f17bcad971b1f1190aed12c5bd707b6c X-Msg-Generator: CA Content-Type: text/plain; charset="utf-8" X-RootMTR: 20180808153741epcas3p346a9ba58cddb7bd5d5e91aaf3a63d51c X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20180808153741epcas3p346a9ba58cddb7bd5d5e91aaf3a63d51c References: <20180808153706.GB16265@chaz.gmail.com> On Wed, 8 Aug 2018 16:37:06 +0100 Stephane Chazelas wrote: > $ zsh -c 'echo $((-8#10))' > zsh:1: invalid base (must be 2 to 36 inclusive): -8 > $ zsh -c 'echo $((- 8#10))' > -8 > > I'd rather zsh interpreted $((-8#10)) the same as $((- 8#10)) > like other shells do as it's a bit pointless to consider the > sign as being part of the base and then reject anything negative > afterwise. No real argument there, I don't think. pws diff --git a/Src/math.c b/Src/math.c index 4b7ecf0..b08e05c 100644 --- a/Src/math.c +++ b/Src/math.c @@ -640,8 +640,19 @@ zzlex(void) } if (unary) { if (idigit(*ptr) || *ptr == '.') { - ptr--; - return lexconstant(); + int ctype = lexconstant(); + if (ctype == NUM) + { + if (yyval.type == MN_FLOAT) + { + yyval.u.d = -yyval.u.d; + } + else + { + yyval.u.l = -yyval.u.l; + } + } + return ctype; } else return UMINUS; } else diff --git a/Test/C01arith.ztst b/Test/C01arith.ztst index 77a46eb..f1364ab 100644 --- a/Test/C01arith.ztst +++ b/Test/C01arith.ztst @@ -467,3 +467,7 @@ >6 >4 ?(eval):6: bad math expression: lvalue required + + print $(( -2#101-16#f )) +0: Unary minus doesn't apply to base but to number as a whole. +>-20