Added some additional interface to VMS. This will be useful for some of the trickier steppers and selectors. In particular
Added a way to associate arbitrary state (extra information) with the tree nodes. This is most useful for nodes that need to be stepped more than once. For example, ExpSeq nodes need to be stepped once at the start to create the new stack frame (if there are any variable declarations in the sequence) and a second time once all the expressions are evaluated to map the sequence to the value of the last expression of the sequence. Some extra information can be associated with the expression sequence node on the first step. Then on the second step, the stepper can see that extra information and know to do the second step. While loops are another example.
Added a way clear all state and values below a given tree node. This is useful for while loops. When a while is restarted, all the information associated with its children needs to be cleared so that they can be evaluated again.
Added some additional interface to VMS. This will be useful for some of the trickier steppers and selectors. In particular
Added a way to associate arbitrary state (extra information) with the tree nodes. This is most useful for nodes that need to be stepped more than once. For example, ExpSeq nodes need to be stepped once at the start to create the new stack frame (if there are any variable declarations in the sequence) and a second time once all the expressions are evaluated to map the sequence to the value of the last expression of the sequence. Some extra information can be associated with the expression sequence node on the first step. Then on the second step, the stepper can see that extra information and know to do the second step. While loops are another example.
Added a way clear all state and values below a given tree node. This is useful for while loops. When a while is restarted, all the information associated with its children needs to be cleared so that they can be evaluated again.