- "class" is a macro. It expands to a "module", with calls to MO. The "module" AST is like: # A module is a "class" without the methods and attributes. class Module { has $.name is Str; # Module Name; has $.body is Lit::Code; # body of code } - Macros are implemented in the grammar. - It might be better to implement syntax for macros first, and then implement "token" and "class" using real macros - Method calls can either be implemented with mo subroutine calls, or native method calls. It depends on the emitter - mp6-mo should not depend on external syntax sugar, such as Moose - " our $.class_var; " is not supported, because MP6 does not support 'our'. TODO: - Extend the grammar with MO words: Roles, inheritance, etc. - Compiler bootstrap with MO - test " Obj.new( attr=>value ) " - unnamed classes (see 2007-01-02 irc log) - rename lib/MiniPerl6 to lib/MiniPerl6_MO in order to co-exist with mp6-no-mo DONE: - "Module" AST - new "CompUnit" macro - Class variables - alias 'create_instance' to 'new' - test " ::Obj( attr=>value ) " FOR LATER: - 'our' - containers - type-checking - Add a new method to an existing class - wait for MO emit_class()