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

Martin McClure martin at hand2mouse.com
Mon May 9 10:04:40 PDT 2022


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> wrote:
>
>     That was quick. Thanks a lot!
>
>     On Fri, 6 May 2022 at 8:55 PM Juan Vuletich
>     <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> 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
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.cuis.st/mailman/archives/cuis-dev/attachments/20220509/25c104a4/attachment.htm>


More information about the Cuis-dev mailing list