Esempio n. 1
0
        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);
            }
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
 public BasicBlock getRoot()
 {
     return(CFG.Roots().First());
 }