class RDG::Analysis::Propagater
Public Instance Methods
analyse()
click to toggle source
# File lib/rdg/analysis/propagater.rb, line 6 def analyse add_internal_flow_edges propogate_incoming_flow propogate_outgoing_flow remove_non_flow_vertices add_equivalences end
Private Instance Methods
add_equivalences()
click to toggle source
# File lib/rdg/analysis/propagater.rb, line 46 def add_equivalences equivalences.add(@ast_node, nodes) end
add_internal_flow_edges()
click to toggle source
# File lib/rdg/analysis/propagater.rb, line 24 def add_internal_flow_edges internal_flow_edges.each { |s, t| graph.add_edge(s, t) } end
children()
click to toggle source
# File lib/rdg/analysis/propagater.rb, line 16 def children @ast_node.children end
nodes()
click to toggle source
# File lib/rdg/analysis/propagater.rb, line 20 def nodes children.reject(&:empty?) end
propogate_incoming_flow()
click to toggle source
# File lib/rdg/analysis/propagater.rb, line 28 def propogate_incoming_flow graph.each_predecessor(@ast_node) do |predecessor| graph.remove_edge(predecessor, @ast_node) graph.add_edge(predecessor, start_node) end end
propogate_outgoing_flow()
click to toggle source
# File lib/rdg/analysis/propagater.rb, line 35 def propogate_outgoing_flow graph.each_successor(@ast_node) do |successor| graph.remove_edge(@ast_node, successor) end_nodes.each { |n| graph.add_edge(n, successor) } end end
remove_non_flow_vertices()
click to toggle source
# File lib/rdg/analysis/propagater.rb, line 42 def remove_non_flow_vertices graph.remove_vertex(@ast_node) end