Jump to content

  • Log In with Google      Sign In   
  • Create Account

We're offering banner ads on our site from just $5!

1. Details HERE. 2. GDNet+ Subscriptions HERE. 3. Ad upload HERE.






Refactoring makes my brain hurt.

Posted by ApochPiQ, 09 November 2012 · 623 views

Epoch
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.




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.

December 2014 »

S M T W T F S
 123456
78910111213
14151617 18 1920
21222324252627
28293031   

Recent Entries

Recent Comments

PARTNERS