Finally, finally, the _right_ way to build the parser