An extremely terse stack-based object-oriented language. You could compile more readable object-oriented code into this language, and potentially run a Smalltalk-esque 'live environment' within Scratch. Instructions: "*(value)" Pushes a literal value onto the stack. Space and other instruction characters within the value must be escaped with "\". "/" Pops the top value off the stack. "&" Duplicates the top of the stack. "?" Swaps the top two values on the stack. "<" 'Dips' into the stack, popping a value temporarily. ">" Undips, pushing a previously dipped value. "^" Pushes the current object to the stack. "$(varname)" Gets the value of a variable in the current object. Escapes can be used. "=(varname)" Pops the top value off the stack and assigns it to the variable. ":(method)" Calls the given method on the object at the top of the stack. """ (just a quote symbol) Takes the rest of the code and pushes it to the stack. This always lasts until the end of the line; no escapes required, but no code can be ran either. (TODO: replace this with nestable brackets!) "[" Sets the current 'REPL receiver' to the top object. Code you enter into the ask box will be ran in the context of this object. This will not affect the currently running code. Primitive objects: "objectBasicClass": You can call the 'new' method on this object to create a new class. To add new methods, enter the object with "[" and set variables.
Examples: *objectBasicClass:new[ creates a basic class "*this*a*is*test<?> writes some code to the stack =test sets the test variable to it ^:new[ creates an instance of our class ^:test calls the test method which BasicClass looks up in the variables of our class