rewrite grammara and  ast builder need to be rebuild