Oh, and this even has changed in Squeak a few years ago:There is no such thing in the language.A space used to be accepted between minus sign and number in old versions of Squeak compiler (before 2010)But I doubt this was decided on purpose.
IMO it was more a side effect of the implementation, which had messy corners
(the fact that the tokenizer did produce two tokens $- and positive number)
I would add that this was undocumented, dialect specific, and a false good idea letting newbies think that they can use unary prefixed operators...
-------------------------------------------------------
http://source.squeak.org/trunk/Compiler-nice.120.mcz
==================== Summary ====================
Name: Compiler-nice.120
Author: nice
Time: 23 February 2010, 5:14:44.049 pm
UUID: 9429cc05-281b-484e-94c2-bd0baf4f5230
Ancestors: Compiler-nice.119
Authorize - at any position in binary selectors (like VW 7.7)
See http://bugs.squeak.org/view.php?id=3616
Address the problem of compiling 1@-2 with following strategy:
If compiler is non interactive, then compile with backward compatibility 1 @ (-2).
If compiler is interactive, propose a menu to disambiguate and insert a proper space.
1@ -2 -> MessageSend receiver: 1 selector: #'@' argument: -2
1@- 2 -> MessageSend receiver: 1 selector: #'@-' argument: 2
Warning: Squeak did understand (1@-�� ��2) as (1 @ (-2))....
I didn't do anything to support this vicious Squeakism, and by now the semantics are change.2015-09-24 9:25 GMT+02:00 Cl��ment Bera <bera.clement@gmail.com>:2015-09-24 8:19 GMT+02:00 Peter Uhn��k <i.uhnak@gmail.com>:>���� - 250 * 1.5 returns -2.25why is this valid syntax?It should not. RBParser bug. This is not valid Smalltalk syntax. As Ben showed similar cases raise an error but this one generate incorrect compiledMethod instead.��On Thu, Sep 24, 2015 at 5:35 AM, Ben Coman <btc@openinworld.com> wrote:RBParser parseExpression: '-250 * 1.5' => "RBMessageNode(-250 * 1.5)"
RBParser parseExpression: '- 250 * 1.5'�� ��=>�� ��"RBMessageNode(*1.5 * 1.5)"
RBParser parseExpression: '250 * -1.5'�� �� =>�� ��"RBMessageNode(250 * -1.5)"
RBParser parseExpression: '250 * - 1.5'�� ��=>�� ��MNU RBToken>>realvalue.
RBParser parseExpression: '-250'�� ��=>�� "RBLiteralValueNode(-250)"
RBParser parseExpression: '- 250' =>�� ��MNU RBToken>>realvalue.
So how significant should be the space between the negative sign and its number?
cheers -ben
On Thu, Sep 24, 2015 at 6:34 AM, Cl��ment Bera <bera.clement@gmail.com> wrote:
> RBParser parseExpression: '- 250 * 1.5'�� �� => Answers�� RBMessageNode(*1.5 *
> 1.5)
>
> Second expression looks correct.
>
> Hence RBParser bug.
>
> 2015-09-23 23:42 GMT+02:00 phil@highoctane.be <phil@highoctane.be>:
>>
>> debug it on the first one gives "MNU: receiver of "doSemanticAnalyisIn:"
>> is nil.
>>
>> Weird.
>>
>> On Wed, Sep 23, 2015 at 8:40 AM, stepharo <stepharo@free.fr> wrote:
>>>
>>> Hi guys
>>>
>>> I think that this is quite bad that
>>>�� �� ��- 250 * 1.5 returns -2.25
>>>
>>> while
>>>
>>>�� �� ��-250 * 1.5 return 375
>>>
>>> stef
>>>
>>
>