开始实现AST,在基类中加入了visit方法