a little closer to a working parser generator