On Fri, Apr 11, 2008 at 5:32 AM, Patrick R. Michaud <[EMAIL PROTECTED]> wrote:
> With some recent PCT-related changes I think we may want to
>  update the tutorials a bit.
>
>  1.  Remove the custom "List" class.
>
>  ResizablePMCArray now has built-in shift/unshift/push/pop
>  methods, so we can use it directly from NQP and don't need
>  to create a custom List class to be able to invoke these
>  operations.
>
>  2.  Remove :scope attribute from PAST::Var nodes.
>
>  My intent has been that most PAST::Var nodes for simple variables
>  would not require individual scope attributes; with the changes
>  I checked into Parrot tonight this should be easier.  In Squaak's
>  case this means that the C<identifier> action method should now
>  read:
>
>     method identifier($/) {
>         make PAST::Var.new( :name($name),
>                             :viviself('Undef'),
>                             :node($/) );
>     }
>
>  In particular, note that there's no longer a need to
>  explicitly search outer blocks for the scope -- PCT
>  will handle this automatically.
>
>  To indicate that all undeclared variables should default
>  to 'package' scope, we use the C<symbol_defaults> method on
>  the top-level block.  For Squaak, we add the following to its
>  TOP action method:
>
>     $?BLOCK.symbol_defaults(:scope('package'));
>
>  This says that 'package' scope is to be used for any PAST::Var
>  node that doesn't have its own :scope and that doesn't have a
>  scope provided by an outer block's symbol hash.
>
>
>  3. (Bonus problem)  Eliminate @?BLOCK
>
>  Since PAST::Var nodes no longer need to search outer blocks
>  (PCT will handle that), we no longer need to maintain a @?BLOCK
>  array.  So, for bonus points, eliminate @?BLOCK from the Squaak
>  methods.
>

I don't really see immediately that @?BLOCK can be removed...

blocks open and close, but $?BLOCk should always point to the current
block, right?
So, in order to restore $?BLOCK, we need to store the old one
somewhere, and this must be done in a LIFO order (to allow for
multiple nested blocks).

Maybe I'm missing something. Could you explain this a bit?

thanks!
kjs
>
>  If I can help explain or demonstrate any of the above, let me know.
>  Thanks!
>
>  Pm
>

Reply via email to