[Cuis-dev] Parser gets confused when using $| in binary selectors

Juan Vuletich JuanVuletich at zoho.com
Fri May 13 07:30:54 PDT 2022


I'm pretty sure I can tweak the parser to treat specially $- as last 
char of a binary selector, so that

1 at -2 creates a Point.
1 @ -2 also creates a Point.
1 @- 2 (note the space between - and 2) sends #@-, whatever that might mean.

I know it wouldn't be strictly ANSI, but that shouldn't be too important.

Do you folks think this would be reasonable behavior?

Thanks,

On 5/13/2022 11:07 AM, Luciano Notarfrancesco via Cuis-dev wrote:
> Can you think of other characters that could be problematic when 
> allowing them in binary selectors? I don’t use selectors ending with 
> $-, and I agree that the original behavior is more convenient and 
> intuitive. The only disadvantage of keeping the original behavior for 
> this case would be not being ANSI compliant, not a problem for me.
>
> On Fri, 13 May 2022 at 8:58 PM Luciano Notarfrancesco 
> <luchiano at gmail.com <mailto:luchiano at gmail.com>> wrote:
>
>     Personally I don’t mind if we decide to make an exception for the
>     special case of $-, but only for that character, because I want to
>     have more options available for binary operators (for example with
>     $|).
>
>     On Fri, 13 May 2022 at 8:53 PM Hernan Wilkinson
>     <hernan.wilkinson at 10pines.com
>     <mailto:hernan.wilkinson at 10pines.com>> wrote:
>
>         Even more... this change makes things like: 1*-2 or 1/-2 or
>         1//-2 or 1+-2, etc etc etc to generate an error.
>         I think it does not make sense.... any common programmer will
>         expect 1*-2 to return -2 and not an error.
>         I think we should get back to the previous behavior.
>
>         What do you think?
>
>         Hernan.
>
>         On Fri, May 13, 2022 at 10:34 AM Hernan Wilkinson
>         <hernan.wilkinson at 10pines.com
>         <mailto:hernan.wilkinson at 10pines.com>> wrote:
>
>             Hi all!
>              I'm just wondering why you guys think that having @- as a
>             unary selector is better than interpreting it as valid for
>             a negative y of a point...
>              I mean, it is much more common to write 1 at -1 as a point
>             whose y is -1 than to use @- as a selector...
>              Newcomers will have bit time problems to understand why
>             1 at -1 does not generate a point with a -1 as the y, unless
>             the @- message is implemented in Point to create a point
>             with the negation of the parameter which is for me an
>             unnecessary indirection...
>              I mean, what other class is going to implement a message
>             such as @- ?
>              It seems to me more useful the behavior we had previous
>             to this change.
>
>             Hernan.
>
>             On Fri, May 13, 2022 at 9:52 AM Luciano Notarfrancesco via
>             Cuis-dev <cuis-dev at lists.cuis.st
>             <mailto:cuis-dev at lists.cuis.st>> wrote:
>
>                 If you don't mind, I think these printOns look better
>                 (either one)
>
>                 On Fri, May 13, 2022 at 2:36 AM Luciano Notarfrancesco
>                 <luchiano at gmail.com <mailto:luchiano at gmail.com>> wrote:
>
>                     Oh, great, thanks! I was just thinking that
>                     “1@(-1)” could have been a better choice for the
>                     fix, and that maybe we should have a preference to
>                     avoid overwriting timestamp and other people’s
>                     initials when we do trivial changes like this.
>
>
>                     On Fri, 13 May 2022 at 3:41 AM Juan Vuletich
>                     <JuanVuletich at zoho.com
>                     <mailto:JuanVuletich at zoho.com>> wrote:
>
>                         Thanks Folks!
>
>                         Luciano, I just pushed your changes. I also
>                         found an instance of '\\-' that I fixed too.
>                         There are several changes required for
>                         optional packages in the Cuis-Smalltalk
>                         organization. Will push them tomorrow.
>
>                         WRT to Decompiler, decompiled code is actually
>                         OK, with a space after binary selectors. What
>                         was wrong was the #storeString of literal
>                         Points. Fixed Point>>#printOn: for that. Now
>                         DecompilerTests pass.
>
>                         Cheers!
>
>
>                         On 5/9/2022 3:21 PM, Luciano Notarfrancesco
>                         via Cuis-dev wrote:
>>                         Martin,
>>                         Thanks for the very detailed explanation! I
>>                         went ahead and replaced '@-' with '@ -' in
>>                         the image and the tests. There are still 10
>>                         tests producing errors because the decompiler
>>                         decompiles it without the space, tho.
>>
>>
>>                         On Mon, May 9, 2022 at 5:04 PM Martin McClure
>>                         <martin at hand2mouse.com
>>                         <mailto:martin at hand2mouse.com>> wrote:
>>
>>                             The ANSI Smalltalk grammar says that "@-"
>>                             should be a valid binary selector, and
>>                             would require whitespace in "1@ -1" to
>>                             interpret the argument as a literal
>>                             negative one.
>>
>>                             The Blue Book grammar, though, does not
>>                             allow "@-" as a binary selector. The Blue
>>                             Book grammar, as printed, also does not
>>                             allow "," as a binary selector, even
>>                             though that was clearly used as a binary
>>                             selector in Smalltalk-80. The Blue Book
>>                             grammar also does not talk about
>>                             whitespace at all, even though that is
>>                             clearly required in some places, so the
>>                             Blue Book is a bit fuzzier than one would
>>                             want as a grammar reference.
>>
>>                             Going with ANSI-like grammar and putting
>>                             a space in expressions like "1 @- 1"
>>                             makes more sense to me. Allows more valid
>>                             selectors, and the code is more readable
>>                             with the whitespace.
>>
>>                             Regards,
>>                             -Martin
>>
>>                             On 5/9/22 03:48, Luciano Notarfrancesco
>>                             via Cuis-dev wrote:
>>>                             After this change '1 at -1' is parsed as a
>>>                             binary message #@-, and this causes some
>>>                             base image tests to fail. Should we add
>>>                             a space between @ and -1 or should we
>>>                             fix the parser?
>>>
>>>                             On Fri, May 6, 2022 at 1:56 PM Luciano
>>>                             Notarfrancesco <luchiano at gmail.com
>>>                             <mailto:luchiano at gmail.com>> wrote:
>>>
>>>                                 That was quick. Thanks a lot!
>>>
>>>                                 On Fri, 6 May 2022 at 8:55 PM Juan
>>>                                 Vuletich <JuanVuletich at zoho.com
>>>                                 <mailto:JuanVuletich at zoho.com>> wrote:
>>>
>>>                                     On 5/6/2022 10:48 AM, Luciano
>>>                                     Notarfrancesco via Cuis-dev wrote:
>>>>                                     I’m not sure I was clear, I
>>>>                                     meant a method implementing
>>>>                                     those messages, not sending
>>>>                                     those messages.
>>>>
>>>>                                     On Fri, 6 May 2022 at 1:22 PM
>>>>                                     Luciano Notarfrancesco
>>>>                                     <luchiano at gmail.com
>>>>                                     <mailto:luchiano at gmail.com>> wrote:
>>>>
>>>>                                         I’m getting “Argument name
>>>>                                         expected” when trying to
>>>>                                         compile a method with
>>>>                                         selector <|. On the other
>>>>                                         hand, |>, | and || all
>>>>                                         compile fine as binary
>>>>                                         selectors, but || breaks
>>>>                                         syntax highlighting. 
>>>>
>>>
>>>                                     Sure. Fixes at GitHub now.
>>>
>>>                                     A small detail: Now an empty
>>>                                     temporal declaration `||` is
>>>                                     parsed as a binary selector, and
>>>                                     therefore marked as invalid. Not
>>>                                     a big deal. We'd just remove any
>>>                                     such.
>>>
>>>                                     Cheers,
>>>
>>>                                     -- 
>>>                                     Juan Vuletich
>>>                                     www.cuis-smalltalk.org  <http://www.cuis-smalltalk.org>
>>>                                     https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev
>>>                                     https://github.com/jvuletich
>>>                                     https://www.linkedin.com/in/juan-vuletich-75611b3
>>>                                     https://independent.academia.edu/JuanVuletich
>>>                                     https://www.researchgate.net/profile/Juan-Vuletich
>>>                                     https://patents.justia.com/inventor/juan-manuel-vuletich
>>>                                     https://twitter.com/JuanVuletich
>>>
>>>
>>
>
>
>                         -- 
>                         Juan Vuletich
>                         www.cuis-smalltalk.org  <http://www.cuis-smalltalk.org>
>                         https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev
>                         https://github.com/jvuletich
>                         https://www.linkedin.com/in/juan-vuletich-75611b3
>                         https://independent.academia.edu/JuanVuletich
>                         https://www.researchgate.net/profile/Juan-Vuletich
>                         https://patents.justia.com/inventor/juan-manuel-vuletich
>                         https://twitter.com/JuanVuletich
>
>                 -- 
>                 Cuis-dev mailing list
>                 Cuis-dev at lists.cuis.st <mailto:Cuis-dev at lists.cuis.st>
>                 https://lists.cuis.st/mailman/listinfo/cuis-dev
>
>
>
>             -- 
>             <https://10pines.com/>
>
>
>               Hernán Wilkinson
>
>
>                 Software Developer & Coach
>
>             Alem 896, Floor 6, Buenos Aires, Argentina
>
>             +54 11 6091 3125
>
>             @HernanWilkinson
>
>
>
>         -- 
>         <https://10pines.com/>
>
>
>           Hernán Wilkinson
>
>
>             Software Developer & Coach
>
>         Alem 896, Floor 6, Buenos Aires, Argentina
>
>         +54 11 6091 3125
>
>         @HernanWilkinson
>


-- 
Juan Vuletich
www.cuis-smalltalk.org
https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev
https://github.com/jvuletich
https://www.linkedin.com/in/juan-vuletich-75611b3
https://independent.academia.edu/JuanVuletich
https://www.researchgate.net/profile/Juan-Vuletich
https://patents.justia.com/inventor/juan-manuel-vuletich
https://twitter.com/JuanVuletich

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.cuis.st/mailman/archives/cuis-dev/attachments/20220513/574e5787/attachment-0001.htm>


More information about the Cuis-dev mailing list