implement a deepcopy function for AST pointer
solve the argument duplicate problem