Use visitor to interpret the AST