Here's the download: Epoch Release 1 - Prototype.rar (47KB)
Please be as anal-retentive with this as possible. If I missed a comment on a code block, point it out. If I slipped up with some inconsistent formatting, get on my case (my personal formatting conventions are different from the ones I use at work and so I occasionally use the wrong one). Most importantly, if you notice any design or architecture issues, dumb C++ mistakes, or whatever, shoot me a note.
Two minor caveats:
- There are some hardcoded paths in the source; change these to suit your local install setup. Just do a global search for "d:\\epoch" and you should find all of them.
- The project is only in VS2005 format at the moment. It may not be portable to other compilers. Actually, getting portability is something I'm very much interested in, so if someone wouldn't mind pumping this through GCC on some flavour of Unix, I'd be much obliged.
I'm very interested in getting reactions to the language itself and starting to generate a bit of exposure and interest. So lay it on thick - this is your chance to help shape the language of the future!
(OK, so that was cheesy and melodramatic. Shoot me.)
[edit/afterthought] You may find it handy to have an example program to run through the VM. This is my current test code:
entrypoint : () -> (){ string(inputstring, "") integer(inputnumber, 0) integer(randomnumber, 0) boolean(quit, false) assign(randomnumber, random(99)) assign(randomnumber, add(randomnumber, 1)) testfunction() debugwritestring("Guess my secret number... it's between 1 and 100.") do { assign(inputstring, debugreadstring()) assign(inputnumber, lexicalcast(integer, inputstring)) if(equal(inputnumber, 0)) { assign(quit, true) } else { if(less(inputnumber, randomnumber)) { debugwritestring("Too low! Try again.") } if(greater(inputnumber, randomnumber)) { debugwritestring("Too high! Try again.") } if(equal(inputnumber, randomnumber)) { debugwritestring("You're right! You win!") assign(quit, true) } } } while(notequal(quit, true))}testfunction : () -> (){ debugwritestring("Test of external function calls")}