# File lib/journey/visitors.rb, line 124 def initialize @nodes = [] @edges = [] end
# 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
# 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
# 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
# File lib/journey/visitors.rb, line 182 def terminal node value = node.left @nodes << "#{node.object_id} [label=\"#{value}\"];" end
# File lib/journey/visitors.rb, line 157 def unary node @edges << "#{node.object_id} -> #{node.left.object_id};" super end
# File lib/journey/visitors.rb, line 167 def visit_CAT node @nodes << "#{node.object_id} [label=\"○\"];" super end
# File lib/journey/visitors.rb, line 162 def visit_GROUP node @nodes << "#{node.object_id} [label=\"()\"];" super end
# File lib/journey/visitors.rb, line 177 def visit_OR node @nodes << "#{node.object_id} [label=\"|\"];" super end
# File lib/journey/visitors.rb, line 172 def visit_STAR node @nodes << "#{node.object_id} [label=\"*\"];" super end