Well, wouldn’t you know it, I’m currently in finals week for my Computing Theory class and I finally came across a list of tools to help with the class when looking for some CFG to CNF examples to make sure I understood said translation correctly. I wish I’d came across these earlier to check my work–doh! It looks like they’ve combined most of the tools into one Java application titled JFLAP which will basically create and transform both regular and context-free languages. From my limited use thus far its certainly lacking in usability, but it does seem to do what I was looking for weeks ago. Given that it’s a cross-platform Java GUI app, I didn’t really have big hopes as far as the interface goes anyway.
If you haven’t taken a similar class or aren’t very familiar with Computer Science theory, let me just say that this is the most challenging CS class I’ve taken thus far. I’ve spoke to a few other people with CS degrees and they seem to agree with my sentiments– it’s one of those early “sink or swim” classes that usually separate the wheat from the chaff as far as CS majors are concerned.
Anyhow, to summarize, my interpretation of this class is that it’s essentially math theory that was mostly invented before computers existed which represents ways to parse and generate languages. This allows you to mathmatically express a way to generate language parsers from language generators and vice versa. I think I’m finally coming to have a pretty good understanding of it, but those first few weeks of class were pretty difficult until I got my head wrapped around the material. Aforementioned weeks were certainly quite humbling– I’d highly recommend self-studying it if you’re a non CS major yet are confident in your abilities as a programmer. Then again, I’m not one of those uber brainy MIT type geeks for which I’m sure this class was a breeze.
It’s been an interesting but challenging class, and if anything it’s nice to know that there is actually some sort of math theory wrapped around Regular Expressions rather than them being the brainchild of some basement dwelling Perl wonk. I’m now a little interested in attempting to create a ColdFusion Parser Generator using something like JavaCC, but I doubt that will be happening anytime soon…