I've committed the latest revisions of the Cola compiler.
Primitive OOP is supported now. See the commit notes:

"Cola 0.0.6 now supports primitive OOP. You can define
class methods and call by class or instance. Instance
calls are currently faked into class calls and there
isn't yet support for member variables, only methods and
constants. Cola programs must have a static void Main
in one of the classes in order to be executable."

I'll be committing a ton of mods that will allow member variables
faked on top of a PerlHash or PerlArray as well as an
asm { } inline pragma that will allow us to write opaque system
classes to implement native Cola classes and namespaces.

I'm also going to encapsulate the Parrot VM inside a Parrot class
to make debugging the VM easier. Something like

public class Parrot {
     string GetVMStats()
     void GCCollect()
     int Eval()
     void SetDebug()
}

Also I'll be adding a lot more primitives so we can actually write
serious programs in Cola soon.

You can now include classes that you write with the C# using directive.

// Sample
using System;

class Test {
     public static void Main(string args) {
         Console.WriteLine("Parrot!\n");
     }
}


For now, modules are imported at the source level by colac,
which is simply a Perl wrapper that calls colacc, the raw
compiler. When we have fleshed out the class format and
bytecode symbol tables, I'll be able to simply scan symbol pbcs instead.

It's kludgy, but it sure is fun. :)

-Melvin

Reply via email to