private void RemoveUnreachableBlocks() { var root = graph.Roots().Single(v => v.IsSpecialBlock); var reachableBlocks = graph.ReachableBlocks(root); var unreachableBlocks = graph.Vertices.Except(reachableBlocks).ToList(); foreach (var unreachableBlock in unreachableBlocks) { graph.RemoveVertex(unreachableBlock); } }
public void makeModel(BidirectionalGraph<CFGBlock, TaggedEdge<CFGBlock, EdgeTag>> graph, IncludeResolver resolver, string path) { this.graph = graph; this.resolver = resolver; var root = graph.Roots ().Single (v => v.IsSpecialBlock); BFS (root, this.graph); Console.WriteLine("Finished BFS Traversal, generating if sentences..."); GenerateIf (); Console.WriteLine("Writing to file..."); WriteToFile (path); }
public BasicBlock getRoot() { return(CFG.Roots().First()); }