• entries
    626
  • comments
    1446
  • views
    1008203

Refactoring makes my brain hurt.

Sign in to follow this  
ApochPiQ

791 views

So as threatened, I implemented generic types last weekend. Took about a solid afternoon to make it happen, so not bad at all.

In the process, I realized that there's just a ton of code in the Epoch compiler in particular that's... gross. So I took a few days and cleaned it up substantially. As a bonus, adding namespaces to the language should be pretty smooth now, once I get around to it.

There's still a lot of cleanup left to do, and even more documentation; the code is in a sorry state these days due to a combination of neglect and churn... which, now that I say it out loud, is a weird combination.

Anyways, bottom line is that I need to spend a healthy chunk of time just going through the entire code base and making it sleek. Apparently people actually download the code on occasion, so it's worth making sure that the quality reflects on my actual programming habits and not my quick-and-dirty prototyping habits :-D


I'll probably split the next few weeks between minor cleanup tasks and implementing generic (i.e. templatized) code generation. That's going to be a nightmare.
Sign in to follow this  


1 Comment


Recommended Comments

I know your pain, I'm 3/4 of the way through the front end of the compiler for my scripting language Mir (similar to C#) and things can get pretty unmanageable if you don't have a clear design in mind. My parser alone is over 3000 lines of code.

What kind of syntax are you using for generics? The <> style has proven to be hell to parse correctly in expressions because in my case it makes the grammar context sensitive. I ended up having to defer expression parsing until the contextual analysis phase. The parser just determines the set of tokens that correspond to each place an expression should be and passes those on to the next phase. The contextual analyzer then checks each identifier as it parses to see if it is declared as a template and then if so parses the '<' as the start of a template instantiation, rather than a less-than expression.

Share this comment


Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now