parser cleanups, l3 ast, and parser implementation