build ast and parser, add code gen