[squeak-dev] The Inbox: ShoutCore-ct.69.mcz

JOHN SARKELA wiljo at mac.com
Sun Aug 18 19:09:56 UTC 2019


The ANSI standard has the following rules for blocks:
<block constructor> ::= '[' <block body> ']'
<block body> ::= [<block argument>* '|'] [<temporaries>] [<statements>]

The standard does not recognize [:x] as legal syntax for a block.    

> On Aug 18, 2019, at 3:03 PM, Levente Uzonyi <leves at caesar.elte.hu <mailto:leves at caesar.elte.hu>> wrote:
> 
> Hi Nicolas,
> 
> Thanks for investigating this.
> I still think that it's just a parser bug, which is accidentally "used" sometimes, especially because it only works when the block is empty.
> Or does it work in other dialects with non-empty blocks?
> Is it used in other dialects?
> 
> Levente
> 
> On Sun, 18 Aug 2019, Nicolas Cellier wrote:
> 
>> Le jeu. 15 août 2019 à 12:21, Levente Uzonyi <leves at caesar.elte.hu <mailto:leves at caesar.elte.hu>> a écrit :
>>      On Thu, 15 Aug 2019, Tobias Pape wrote:
>> 
>>      >
>>      >> On 15.08.2019, at 03:29, Levente Uzonyi <leves at caesar.elte.hu <mailto:leves at caesar.elte.hu>> wrote:
>>      >>
>>      >> On Wed, 14 Aug 2019, commits at source.squeak.org <mailto:commits at source.squeak.org> wrote:
>>      >>
>>      >>> A new version of ShoutCore was added to project The Inbox:
>>      >>> http://source.squeak.org/inbox/ShoutCore-ct.69.mcz <http://source.squeak.org/inbox/ShoutCore-ct.69.mcz>
>>      >>>
>>      >>> ==================== Summary ====================
>>      >>>
>>      >>> Name: ShoutCore-ct.69
>>      >>> Author: ct
>>      >>> Time: 14 August 2019, 10:43:04.7164 pm
>>      >>> UUID: 7d165f4e-09bf-a445-a664-5e8edb9867b8
>>      >>> Ancestors: ShoutCore-ul.68
>>      >>>
>>      >>> Fix bug in SHParserST80: Wrong styling after blocks with arguments without statements
>>      >>
>>      >> If you mean that Shout should accept [ :x ], then no, I'm pretty sure that's not valid smalltalk syntax, even if Parser accepts it.
>>      >> The vertical bar, even though I consider it unnecessary in all cases, is mandatory when there are arguments.
>>      >
>>      > I only got to know this "shortcut syntax" because eliot used it either Cog or somewhere in trunk when preparing something (Spur? full block closures? I forgot). So this is a syntax idiosyncrasy that is in active use, not only "old code".
>>      >
>>      > Either we forbid it in the parser and change all of the image or allow it in Shout.
>> 
>>      Can you give me examples?
>>      I suspect those are just typos, which the parser accidentally accepted
>>      (and Shout as well before my fixes).
>> 
>>      Levente
>> I don't remember seeing this syntax before and found it a bit surprising.
>> So, for the sake of curiosity, I tried in some other dialects.
>> [:x ] is accepted syntax in
>> - Visualworks (8.3),
>> - Pharo (v7 with OpalCompiler)
>> - Smalltalk-80 (apple v0.?)
>> [:x ] is invalid in
>> - Dolphin
>> - Smalltalk/X (jv branch)
>> So it seems that it's something originating from original Smalltalk-80, but not reproducted in non derivated dialects...
>> The bar is mandatory in blue book specification (see the last pages)
>> Capture d’écran 2019-08-18 à 17.11.53.png
>> So it seems that implementation did not agree with specifications for ages...
>> Capture d’écran 2019-08-18 à 18.56.05.png
>> 
>>      >
>>      > Best regards
>>      >       -Tobias
>>      >
>>      >>
>>      >> Levente
>>      >>
>>      >>>
>>      >>> Thanks Jakob for the report!
>>      >>>
>>      >>> =============== Diff against ShoutCore-ul.68 ===============
>>      >>>
>>      >>> Item was changed:
>>      >>> ----- Method: SHParserST80>>parseBlockArguments (in category 'parse') -----
>>      >>> parseBlockArguments
>>      >>>
>>      >>>     currentTokenFirst == $: ifFalse: [ ^self ].
>>      >>>     [ currentTokenFirst == $: ] whileTrue: [
>>      >>>             self
>>      >>>                     scanPast: #blockArgColon;
>>      >>>                     parseArgument: #blockPatternArg ].
>>      >>> +   ((self parseVerticalBarForTemporaries: #blockArgsBar) and: [
>>      >>> +           currentTokenFirst ~= $] ])
>>      >>> +                   ifFalse: [
>>      >>> +                           self fail ": Missing block args bar" ]!
>>      >>> -   (self parseVerticalBarForTemporaries: #blockArgsBar) ifFalse: [
>>      >>> -           self fail ": Missing block args bar" ]!
>>      >>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20190818/1e1ccfc3/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: page21image64736448.png
Type: image/png
Size: 124 bytes
Desc: not available
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20190818/1e1ccfc3/attachment.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: page21image37471328.png
Type: image/png
Size: 104 bytes
Desc: not available
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20190818/1e1ccfc3/attachment-0001.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: page21image64735680.png
Type: image/png
Size: 112 bytes
Desc: not available
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20190818/1e1ccfc3/attachment-0002.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: page21image64733952.png
Type: image/png
Size: 112 bytes
Desc: not available
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20190818/1e1ccfc3/attachment-0003.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: page21image64746816.png
Type: image/png
Size: 112 bytes
Desc: not available
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20190818/1e1ccfc3/attachment-0004.png>


More information about the Squeak-dev mailing list