# New Ticket Created by Jonathan Sillito # Please include the string: [perl #15800] # in the subject line of all future correspondence about this issue. # <URL: http://rt.perl.org/rt2/Ticket/Display.html?id=15800 > The attached patch implements a set of lexical ops. Lexical pads are implemented as a stack of PerlHash PMCs. Here is an example of how to use the ops: new P0, .PerlInt new P1, .PerlInt new P2, .PerlInt new P3, .PerlInt set P0, 10 set P1, 11 set P2, 12 # outer most lexical scope open_lex store_lex P0, "a" find_lex P3, "a" print P3 # prints 10 print "\n" # nested lexical scope open_lex store_lex P1, "b" find_lex P3, "b" print P3 # prints 11 print "\n" store_lex P2, "a" # overwrites previous "a" find_lex P3, "a" print P3 # prints 12 print "\n" close_lex # end of nested lexical scope find_lex P3, "a" print P3 # prints 12 print "\n" end The files affected by the patch are: - core.ops: added implementation for 4 ops: open_lex, close_lex, store_lex and find_lex. - dod.c: added interpreter->ctx.pad_stack to the initial first dod pass (I am not sure how to test if this is correct ...) - interpreter.c and interpreter.h: added pad_stack to Parrot_Context. In addition to the patch a test and example pasm file are attached: - lexicals.t: simple tests for the 4 ops that should to in t/op/ - lexicals.pasm: simple example that should go in examples/assembly/ Comments welcome. -- Jonathan Sillito