class RegularExpression::CFG::Graph
A graph is a set of EBBs.
Attributes
blocks[R]
exit_map[R]
Public Class Methods
new(blocks, exit_map)
click to toggle source
# File lib/regular_expression/cfg.rb, line 118 def initialize(blocks, exit_map) @blocks = blocks @exit_map = exit_map end
Public Instance Methods
dump()
click to toggle source
# File lib/regular_expression/cfg.rb, line 127 def dump output = StringIO.new blocks.each { |block| block.dump(exit_map, io: output) } output.string end
start()
click to toggle source
# File lib/regular_expression/cfg.rb, line 123 def start blocks.first end
to_dot(graph)
click to toggle source
# File lib/regular_expression/cfg.rb, line 133 def to_dot(graph) nodes = {} blocks.each do |block| label = [] label.push("#{block.name}:") block.insns.each { |insn| label.push(" #{insn}") } nodes[block] = graph.add_node(block.object_id, label: label.join($/), labeljust: "l", shape: "box") end blocks.each do |block| successors = block.exits.map { |exit| nodes[exit_map[exit]] }.uniq successors.each do |successor| nodes[block].connect(successor) end end end