Mini-OOF2 is very similar to Mini-OOF in many respects, but differs
significantly in a few aspects. In particular, Mini-OOF2 has a current
object variable, and uses the primitives >o
and o>
to
manipulate that object stack. All method invocations and instance
variable accesses refer to the current object.
>o
( c-addr – r:c-old ) new “to-o”
Set the current object to c_addr, the previous current object is pushed to the return stack
o>
( r:c-addr – ) new “o-restore”
Restore the previous current object from the return stack
To ease passing an object pointer to method invocation or instance
variable accesses, the additional recognizer rec-moof2
is
activated.
rec-moof2
( addr u – xt translate-moof2 | 0 ) mini-oof2 “rec-moof2”
Very simplistic dot-parser, transforms .
selector/ivar to
>o
selector/ivar o>
.
To assign methods to selectors, use xt class is
selector, so no defines
necessary. For early binding of
methods, [
class ] defers
selector is used, no
need for ::
.