2015-09-25 21:16 GMT+02:00 Eliot Miranda <[email protected]>: > Hi Nicolas, > > On Thu, Sep 24, 2015 at 5:01 AM, Nicolas Cellier < > [email protected]> wrote: > >> >> >> 2015-09-24 13:23 GMT+02:00 Thierry Goubier <[email protected]>: >> >>> Then, given that negative numbers are correctly tokenified by the >>> RBParser, I would remove that logic in Pharo's RBParser. >>> >>> (From a front-end implementor point of view, I also would have no issue >>> with someone specifying a negative literal as - (\s)* [0-9]+ either. There >>> is so much silliness in your average language front-end anyway). >>> >>> >> My grief was the interpretation of literal arrays: #(1 - 2) is currently >> not #(1 -2), so if space is gobbled at tokenization, that's a semantic >> shift... >> Do we want to keep #(1 - 2) or shall we force some more pedantic #(1 #- >> 2)? >> > > We should keep #(1 - 2) provided it is interpreted as #(1 #'-' 2). The # > tags are noisy (if not ugly) and have never been necessary for literal > symbols inside arrays. -2 is quite different from - 2. > > Agree, that's one good reason to not accept - 2 as a valid literal, for me it's different than -2. Separators have one semantic: they separrate. white spaces are separators.
> Also why do you think this means? > > 1.0 > > Given that this means two different statements > > nil.nil > > IMO, . as a statement separator should be followed by whitespace to > eliminate this ambiguity. i.e. nil.nil would be a syntax error, and nil. > nil would be acceptable. This opens up the use of . in selectors to do > cool things like the old multiple inheritance syntax where one could do > directed sends such as super Dictionary.at: key if in a subclass with > multiple superclasses and wanting to disambiguate which of multiple > superclass implementations one wanted to invoke. > Dan said that he didn't want to make the separator mandatory, but I guess he meant to apply this rule to an expression. Forcing a separator between sentences would not hurt IMO too. In any case, I never saw code written without separators between sentences. > > >> >> >>> What is the state of RBParser in Squeak about that? >>> >> >> RBParser is not in trunk, it's an add-on. >> No idea which/where is the latest Squeak-compatible version... >> >> >>> >>> Thierry >>> >>> >>> 2015-09-24 12:03 GMT+02:00 Nicolas Cellier < >>> [email protected]>: >>> >>>> Oh, and I suspect an instability in the numbering of squeak-dev >>>> archive... >>>> The reference thread is (today) >>>> http://lists.squeakfoundation.org/pipermail/squeak-dev/2006-May/103684.html >>>> >>>> 2015-09-24 11:39 GMT+02:00 Nicolas Cellier < >>>> [email protected]>: >>>> >>>>> 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... >>>>> There is no such thing in the language. >>>>> >>>>> Oh, and this even has changed in Squeak a few years ago: >>>>> >>>>> ------------------------------------------------------- >>>>> >>>>> 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 <[email protected]>: >>>>> >>>>>> >>>>>> >>>>>> 2015-09-24 8:19 GMT+02:00 Peter Uhnák <[email protected]>: >>>>>> >>>>>>> > - 250 * 1.5 returns -2.25 >>>>>>> >>>>>>> why 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 <[email protected]> >>>>>>> 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 < >>>>>>>> [email protected]> 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 [email protected] <[email protected] >>>>>>>> >: >>>>>>>> >> >>>>>>>> >> debug it on the first one gives "MNU: receiver of >>>>>>>> "doSemanticAnalyisIn:" >>>>>>>> >> is nil. >>>>>>>> >> >>>>>>>> >> Weird. >>>>>>>> >> >>>>>>>> >> On Wed, Sep 23, 2015 at 8:40 AM, stepharo <[email protected]> >>>>>>>> wrote: >>>>>>>> >>> >>>>>>>> >>> Hi guys >>>>>>>> >>> >>>>>>>> >>> I think that this is quite bad that >>>>>>>> >>> - 250 * 1.5 returns -2.25 >>>>>>>> >>> >>>>>>>> >>> while >>>>>>>> >>> >>>>>>>> >>> -250 * 1.5 return 375 >>>>>>>> >>> >>>>>>>> >>> stef >>>>>>>> >>> >>>>>>>> >> >>>>>>>> > >>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> >> > > > -- > _,,,^..^,,,_ > best, Eliot >
