class Journey::Visitors::Dot

Public Class Methods

new() click to toggle source
# File lib/journey/visitors.rb, line 124
def initialize
  @nodes = []
  @edges = []
end

Public Instance Methods

accept(node) click to toggle source
Calls superclass method
# File lib/journey/visitors.rb, line 129
      def accept node
        super
        <<-eodot
digraph parse_tree {
  size="8,5"
  node [shape = none];
  edge [dir = none];
  #{@nodes.join "\n"}
  #{@edges.join("\n")}
}
        eodot
      end

Private Instance Methods

binary(node) click to toggle source
Calls superclass method
# File lib/journey/visitors.rb, line 143
def binary node
  node.children.each do |c|
    @edges << "#{node.object_id} -> #{c.object_id};"
  end
  super
end
nary(node) click to toggle source
Calls superclass method
# File lib/journey/visitors.rb, line 150
def nary node
  node.children.each do |c|
    @edges << "#{node.object_id} -> #{c.object_id};"
  end
  super
end
terminal(node) click to toggle source
# File lib/journey/visitors.rb, line 182
def terminal node
  value = node.left

  @nodes << "#{node.object_id} [label=\"#{value}\"];"
end
unary(node) click to toggle source
Calls superclass method
# File lib/journey/visitors.rb, line 157
def unary node
  @edges << "#{node.object_id} -> #{node.left.object_id};"
  super
end
visit_CAT(node) click to toggle source
Calls superclass method
# File lib/journey/visitors.rb, line 167
def visit_CAT node
  @nodes << "#{node.object_id} [label=\"○\"];"
  super
end
visit_GROUP(node) click to toggle source
Calls superclass method
# File lib/journey/visitors.rb, line 162
def visit_GROUP node
  @nodes << "#{node.object_id} [label=\"()\"];"
  super
end
visit_OR(node) click to toggle source
Calls superclass method
# File lib/journey/visitors.rb, line 177
def visit_OR node
  @nodes << "#{node.object_id} [label=\"|\"];"
  super
end
visit_STAR(node) click to toggle source
Calls superclass method
# File lib/journey/visitors.rb, line 172
def visit_STAR node
  @nodes << "#{node.object_id} [label=\"*\"];"
  super
end