add base class to create a visitor for AST
fix ast_walker as 'visitor of visitor'

ast_walker is visitor for AST, which contains a visitor to operator AST
node.
improve ast_walker using lambda block to execute callbacks consistently