[squeak-dev] The Trunk: Compiler-eem.403.mcz

karl ramberg karlramberg at gmail.com
Tue Mar 19 21:29:42 UTC 2019


I thought that was a deliberate typo. He he

Best,
Karl

On Tue, Mar 19, 2019 at 8:00 PM Eliot Miranda <eliot.miranda at gmail.com>
wrote:

>
>
> On Tue, Mar 19, 2019 at 11:58 AM <commits at source.squeak.org> wrote:
>
>> Eliot Miranda uploaded a new version of Compiler to project The Trunk:
>> http://source.squeak.org/trunk/Compiler-eem.403.mcz
>>
>> ==================== Summary ====================
>>
>> Name: Compiler-eem.403
>> Author: eem
>> Time: 19 March 2019, 11:58:47.238202 am
>> UUID: a0f07dce-0a58-422e-af37-32d5a3bd6546
>> Ancestors: Compiler-eem.402
>>
>> Fixed yhree typos in a comment, and improved the class comments for
>> ParseNodeEnumerator & subclass.
>>
>
> Oh really?  Three steps forward, one step back.  Boy this is a humiliating
> business ;-)
>
>
>>
>> =============== Diff against Compiler-eem.402 ===============
>>
>> Item was changed:
>>   ParseNodeVisitor subclass: #ParseNodeEnumerator
>>         instanceVariableNames: 'theBlock theSelectBlock'
>>         classVariableNames: ''
>>         poolDictionaries: ''
>>         category: 'Compiler-Support'!
>>
>> + !ParseNodeEnumerator commentStamp: 'eem 3/19/2019 11:58' prior: 0!
>> - !ParseNodeEnumerator commentStamp: 'eem 8/31/2010 11:41' prior: 0!
>>   ParseNodeEnumerator implements ParseNode>>nodesDo:.  It can be used to
>> enumerate an entire tree via
>>         aParseNode accept: (ParseNodeEnumerator ofBlock: aBlock)
>>   or selectively, excluding the node and subnodes for which selectBlock
>> answers false, via
>>         aParseNode accept: (ParseNodeEnumerator
>>                                                         ofBlock: aBlock
>>                                                         select:
>> selectBlock)
>> + Instance Variables
>> +       theBlock:                       <BlockClosure>
>> +       theSelectBlock:         <BlockClosure | nil>
>>
>> + theBlock
>> +       - the block that is evaluated with the parse nodes the receiver
>> visits.
>> +
>> + theSelectBlock
>> +       - an optional block used to select blocks to visit and descend
>> into.
>> +
>>   Here's a doIt that generates and compiles the visiting methods:
>>
>>   self superclass selectors do:
>>         [:s|
>>         self compile: (String streamContents:
>>                 [:str| | arg |
>>                 arg := 'a', (s allButFirst: 5) allButLast.
>>                 str nextPutAll: s, ' ', arg; crtab;
>>                         nextPutAll: '(theSelectBlock isNil or:
>> [theSelectBlock value: '; nextPutAll: arg; nextPutAll: ']) ifFalse:'; crtab;
>>                         tab: 2; nextPutAll: '[^nil].'; crtab;
>>                         nextPutAll: 'theBlock value: '; nextPutAll: arg;
>> nextPut: $.; crtab;
>>                         nextPutAll: '^super '; nextPutAll: s, ' ', arg])]!
>>
>> Item was changed:
>>   ParseNodeEnumerator subclass: #ParseNodeWithPrecedingStatementEnumerator
>>         instanceVariableNames: 'precedingStatement'
>>         classVariableNames: ''
>>         poolDictionaries: ''
>>         category: 'Compiler-Support'!
>> +
>> + !ParseNodeWithPrecedingStatementEnumerator commentStamp: 'eem 3/19/2019
>> 11:55' prior: 0!
>> + A ParseNodeWithPrecedingStatementEnumerator is a ParseNodeEnumerator
>> that accepts a binary block in ofBlock:, and hence enumerates statement
>> nodes with their preceding statement, or nil if they are the first.
>> +
>> + Instance Variables
>> +       precedingStatement:             <ParseNode | nil>
>> +
>> + precedingStatement
>> +       - the preceding statement node, if any
>> + !
>>
>> Item was changed:
>>   ----- Method: ParseNodeWithPrecedingStatementEnumerator>>ofBlock: (in
>> category 'initialize-release') -----
>>   ofBlock: aBlock
>>         "N.B. This enumerator visits a node before any of the node's
>> children.
>> +        Hence, when enumerating statements in a block, we can ensure that
>> +        the second argument to the block, the preceding statement, is
>> non-nil
>> +        only for top-level statements in the block by nilling out
>> precedingStatement
>> -        Hence, when enumewrating statements in a block, we can ensure
>> that
>> -        the second argument to the block, the preceeding statement, is
>> non-nil
>> -        only for top-level statements in the block by nilling out
>> preceedingStatement
>>          once the block is evaluated. Perhaps stronger would be to
>> capture its value
>>          in a temporary and nil it before evaluating, but this is good
>> enough."
>>         theBlock := [:node|
>>                                 aBlock value: node value:
>> precedingStatement.
>>                                 precedingStatement := nil]!
>>
>>
>>
>
> --
> _,,,^..^,,,_
> best, Eliot
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20190319/1621b828/attachment.html>


More information about the Squeak-dev mailing list