module Dentaku::Visitor::Infix

def process(_ast)

def process(_ast)
  raise NotImplementedError
end

def visit(ast)

def visit(ast)
  ast.accept(self)
end

def visit_access(node)

def visit_access(node)
  process(node)
end

def visit_array(node)

def visit_array(node)
  process(node)
end

def visit_case(node)

def visit_case(node)
  process(node)
end

def visit_case_conditional(node)

def visit_case_conditional(node)
  process(node)
end

def visit_else(node)

def visit_else(node)
  process(node)
end

def visit_function(node)

def visit_function(node)
  node.args.each do |arg|
    visit(arg)
  end
  process(node)
end

def visit_identifier(node)

def visit_identifier(node)
  process(node)
end

def visit_literal(node)

def visit_literal(node)
  process(node)
end

def visit_negation(node)

def visit_negation(node)
  process(node)
end

def visit_nil(node)

def visit_nil(node)
  process(node)
end

def visit_operand(node)

def visit_operand(node)
  process(node)
end

def visit_operation(node)

def visit_operation(node)
  visit(node.left) if node.left
  process(node)
  visit(node.right) if node.right
end

def visit_switch(node)

def visit_switch(node)
  process(node)
  end

def visit_then(node)

def visit_then(node)
  process(node)
end

def visit_when(node)

def visit_when(node)
  process(node)
end