Currently it just parses the syntax, without doing any semantic analysis. I expect that actually getting the semantics shifted over into the VM will be the real hard part, especially since I have to come up with a good way to handle syntax errors.
The happy part of all this is that Epoch is now officially out of the realm of a VM-only hack; it's actually a viable language with a working syntax that is nearly ready for actual in-the-wild usage. I'm really looking forward to tackling the semantic analysis part of things and getting externally written code to run in the VM.
So what's next after the VM can run live code? I'm not entirely sure yet, but there's a few candidates:
- Integration with C/C++ to allow calls into Win32 (with plans to build a marshalling layer for .Net interoperability later on)
- More low-level services like file IO (so I can do the Sudoku program I originally planned on doing)
- Starting to play with the type system a bit
- Starting to work on the syntactic sugar preparser
- Working on expanding the builtin type support for things beyond strings (arrays, hashmaps, etc.)
Whatever ends up getting picked, there's certainly plenty of work left to do before this thing is a truly viable language.
I have a feeling that I've finished the easy part, and it's all heavy lifting from here. But I guess we'll find out soon enough.