A couple of weeks ago I rewrote my parser from scratch, it is now much smaller, more recursive, and has test cases to verify that it actually works.