static void Main(string[] args) { Console.Write("This project contains 13 packages demonstrating requirement 3:\n"); Console.Write("1) DemoExecutive\n"); Console.Write("2) DemoReqs\n"); Console.Write("3) DependencyAnalysis\n"); Console.Write("4) Display\n"); Console.Write("5) Element\n"); Console.Write("6) FileMgr\n"); Console.Write("7) Parser\n"); Console.Write("8) SemiExp\n"); Console.Write("9) StrongComponent\n"); Console.Write("10) TestHarness\n"); Console.Write("11) Toker\n"); Console.Write("12) TypeTable\n"); Console.Write("13) AutomatedTestUnit\n"); Console.Write("\n ======================\n"); Console.Write("\n Demonstrating Parser"); Console.Write("\n ======================\n"); ShowCommandLine(args); List <string> files = ProcessCommandline(args); DepAnalysis da = new DepAnalysis(); foreach (string file in files) { Console.Write("\n Processing file {0}\n", System.IO.Path.GetFileName(file)); ITokenCollection semi = Factory.create(); //semi.displayNewLines = false; if (!semi.open(file as string)) { Console.Write("\n Can't open {0}\n\n", args[0]); return; } Console.Write("\n Type and Function Analysis"); Console.Write("\n ----------------------------"); BuildCodeAnalyzer builder = new BuildCodeAnalyzer(semi); Parser parser = builder.build(); try { while (semi.get().Count > 0) { parser.parse(semi); } } catch (Exception ex) { Console.Write("\n\n {0}\n", ex.Message); } Repository rep = Repository.getInstance(); List <Elem> table = rep.locations; TypeTable.TypeTable tt = new TypeTable.TypeTable(); ///shows typetable foreach (Elem e in table) { tt.add(e.type, e.name); if (e.type == "using") { da.add(System.IO.Path.GetFileName(file), e.name); } } tt.show(); Console.WriteLine("Showing TypeTables of files demonstrating requirement 5:\n"); Console.Write("\n TypeTable contains types: "); foreach (var elem in tt.table) { Console.Write("{0} ", elem.Key); } ////Display.showMetricsTable(table); Console.Write("\n"); semi.close(); } var nodes = new List <CsNode <string, string> >(); foreach (var elem in da.table) { nodes.Add(new CsNode <string, string>(elem.Key)); //Console.Write("\n {0} depends on", elem.Key); } nodes.ToArray(); //foreach (var elem in da.table) //{ // foreach (var item in elem.Value) // { // //nodes[IndexOf(elem.Key)].addChild(nodes[IndexOf(item.file)], "edge" + elem.Key + " " + item.file); // //nodes[0].addChild(item.file, "edge" + elem.Key + " " + item.file); // //nodes[nodes.IndexOf(elem.Value)].addChild(nodes[nodes.IndexOf(item.file)], "edge" + elem.Key + " " + item.file); // Console.Write("\n {0}.cs", item.file); // } //} //iterate through list of list elements of a file //da.table --gets table, for (int i = 0; i < da.table.Count; i++) { var item = da.table.ElementAt(i); for (int j = 0; j < item.Value.Count; j++) { //Console.WriteLine(i+"^"+ da.table.Values); nodes[i].addChild(nodes[j], "edge" + i + j); } } Graph <string, string> graph = new Graph <string, string>("Fred"); for (int i = 0; i < da.table.Count; i++) { graph.addNode(nodes[i]); } graph.startNode = nodes[0]; //Console.WriteLine("\n Showing graph walk starting at node[0]\n"); //Console.Write("\n\n starting walk at {0}", graph.startNode.name); //Console.Write("\n not showing backtracks"); //graph.walk(); Console.WriteLine("Showing dependencies between files demonstrating requrement 4:\n\n"); //shows dependency analysis da.show(); Console.Write("\n\n"); Console.Write("Showing all strong components, if any, in the file collection, based on the dependency analysis demonstrating requirement 6:\n\n"); graph.startNode = nodes[0]; graph.Tarjan(); Console.Write("\n\n"); Console.WriteLine("This demo executive file demonstrates all the outputs and is well formatted as per requirement 7 and 8\n"); Console.ReadLine(); }