private void ExtractGVNodes(InstNode root, Dictionary <InstNode, GraphVizNode> nodeDict) { GraphTraversal.PerformTraversal <InstNode>(root, (node, fringeAdder) => { if (!nodeDict.ContainsKey(node)) { var ms = new MemoryStream(); var sw = new StreamWriter(ms); PrettyPrinter.PrettyPrint(node.Content, sw); sw.Flush(); ms.Seek(0, SeekOrigin.Begin); var data = new StreamReader(ms).ReadToEnd(); nodeDict.Add(node, new GraphVizNode() { Id = IdC++, Label = data }); if (node.Left != null) { fringeAdder(node.Left); } if (node.Right != null) { fringeAdder(node.Right); } } }); }
string Evaluate(string input) { bool result_set; object result; try { input = evaluator.Evaluate(input, out result, out result_set); if (result_set) { PrettyPrinter.PrettyPrint(logTextWriter, result); WriteLine(); } } catch (Exception ex) { Debug.WriteLine(ex.ToString()); return(null); } return(input); }
private void ExtractGVNodes2(Node <IList <IInstruction> > node, Dictionary <Node <IList <IInstruction> >, GraphVizNode> nodeDict) { if (!nodeDict.ContainsKey(node)) { var ms = new MemoryStream(); var sw = new StreamWriter(ms); PrettyPrinter.PrettyPrint(node.Content, sw); sw.Flush(); ms.Seek(0, SeekOrigin.Begin); var data = new StreamReader(ms).ReadToEnd(); nodeDict.Add(node, new GraphVizNode() { Id = IdC++, Label = data }); if (node.Left != null) { ExtractGVNodes(node.Left, nodeDict); } if (node.Right != null) { ExtractGVNodes(node.Right, nodeDict); } } }