class Journey::Visitors::Dot

Public Class Methods

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

Public Instance Methods

accept(node) click to toggle source
Calls superclass method
# File lib/journey/visitors.rb, line 130
      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 144
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 151
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 183
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 158
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 168
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 163
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 178
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 173
def visit_STAR node
  @nodes << "#{node.object_id} [label=\"*\"];"
  super
end