🎉 Celebrating 25 Years of GameDev.net! 🎉

Not many can claim 25 years on the Internet! Join us in celebrating this milestone. Learn more about our history, and thank you for being a part of our community!

Major milestone passed

Published March 01, 2009
Advertisement
My big area of focus lately has been on Exegen, the linker for Win32 Epoch programs. The utility no longer emits hard-coded resources, but reads a simple resource script file to define the resources. Similarly, the input/output files and locations are now controlled by a simple project file.

Here's a peek at the resource script:
[icongroup]id 101language 1033[icon]id 1language 1033group 101source "scribble.ico"[menu]id 153language 1033{	popup "&File"	{		item 106 "No op"		separator		item 105 "E&xit"	}	popup "&Help"	{		item 104 "&About..."	}}


Very terse and to the point; and, as a bonus, it should be trivial to convert standard .RC files to this format. That will allow us to use existing resource editing tools (like Visual Studio) to create and modify resources, then hand them over to the Epoch toolchain.

The project file is similarly spartan:
[sourcecode]scribble.epoch[resources]scribble.erc[output]intermediates-path buildoutput-path compiledoutput-file scribble.exe


The only significant piece of work left is to make the error handling a bit more robust; this will basically just involve throwing exceptions and aborting as early as possible in case things go pear-shaped. I don't plan on doing anything too sophisticated in terms of error recovery.


Finishing up Exegen is a major milestone, since it gives me the tool set I need to start working on the Era IDE. In turn, working on Era will reveal a lot of deficiencies and weaknesses in the current implementation of Epoch; so along the road to building the IDE I'll be able to do lots of improvement to the language itself.

I'm a little skeptical about whether or not I'll hit my self-imposed GDC deadline, but so far things are moving pretty quickly and I should at least have an impressive unstable fork ready to go. Obviously it'd be nicer to have a stable fork/Release 6 ready, but there's a lot of work standing between me and R6.


To be precise, this is the work:
Critical Features
  • Short circuiting on logical operators

  • Decide between variadic functions and functions that take a transparently consed list

  • Finish nested structure access

  • Improve syntax for initializing nested structures

  • Expand capabilities of libraries to register types, constants, etc.


Cleanup/Refactoring
  • Finish use of DetermineEffectiveType() in ParserState::CreateOperation()

  • Check binary loader in Fugue for improvements


Nice Features
  • Buffer entities (stack/heap allocated)

  • Improve exception handling and error reporting

  • Implement a basic alias function similar to typedefs


Era IDE Project
  • Rewrite era.epoch to use constants, bitwise operators, etc.

  • Create basic shell window with menus

  • Add rudimentary editor

  • Implement multiple source files in a single project

  • Add project support to IDE

  • Implement basic REPL

  • Implement support for editing resource scripts


Exegen Improvements
  • Improve exception response



Should be an exciting month [smile]
0 likes 0 comments

Comments

Nobody has left a comment. You can be the first!
You must log in to join the conversation.
Don't have a GameDev.net account? Sign up!
Profile
Author
Advertisement
Advertisement