Class: Jievro::AstVisitor::Visitor

Inherits:
Object
  • Object
show all
Defined in:
lib/jievro/ast_visitor/ast_visitor.rb

Instance Method Summary collapse

Instance Method Details

#visit(node, preorder = nil, postorder = nil) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# File 'lib/jievro/ast_visitor/ast_visitor.rb', line 4

def visit(node, preorder = nil, postorder = nil)
  preorder.call(node) unless preorder.nil?

  node.each do |n|
    if n.is_a?(Array)
      n.each do |m|
        visit(m, preorder, postorder) if to_be_visited?(m)
      end
    else
      visit(n, preorder, postorder) if to_be_visited?(n)
    end
  end

  postorder.call(node) unless postorder.nil?
end