private static void RunExecutionGraphExamples() { // Generate a DOT graph from the an execution graph's last node var dotFactory = new DotExecutionGraphAlgebra(); var dotExecutionGraph = CreateExecutionGraph(null, dotFactory); Console.WriteLine("--- DOT graph ---"); Console.WriteLine("digraph dotGraph {"); Console.Write(dotExecutionGraph.Last().GenerateDotGraph(null)); Console.WriteLine("}"); Console.WriteLine(); // Create the same execution graph, but now with elements translatable to C# var csharpTranslatableFactory = new CSharpTranslatableGraphAlgebra(); var csharpTranslatableGraph = CreateExecutionGraph(null, csharpTranslatableFactory); Console.WriteLine("--- C# translated graph ---"); Console.WriteLine("void Func()"); Console.WriteLine("{"); foreach (var node in csharpTranslatableGraph) { Console.Write(node.TranslateVariables()); } foreach (var node in csharpTranslatableGraph) { Console.Write(node.TranslatePureFunctions()); } foreach (var node in csharpTranslatableGraph) { Console.Write(node.TranslateStates()); } Console.WriteLine("}"); }
private static void RunDataGraphExamples() { // Create an evaluable data graph and evaluate it var evaluableFactory = new EvaluableGraphAlgebra(); var evaluableDataGraph = CreateDataGraph(evaluableFactory); Console.Write("--- Evaluable graph ---"); Console.WriteLine("Last node outputs:"); foreach ((var odp, var value) in evaluableDataGraph.Last().Evaluate()) { Console.WriteLine(value); } // Generate a DOT graph from the same data graph's last node var dotFactory = new DotExecutionGraphAlgebra(); var dotExecutionGraph = CreateDataGraph(dotFactory); Console.WriteLine("--- DOT graph ---"); Console.WriteLine("digraph dotGraph {"); Console.Write(dotExecutionGraph.Last().GenerateDotGraph(null)); Console.WriteLine("}"); Console.WriteLine(); // Create the same data graph, but now with elements translatable to C# var csharpTranslatableFactory = new CSharpTranslatableGraphAlgebra(); var csharpTranslatableGraph = CreateDataGraph(csharpTranslatableFactory); Console.WriteLine("--- C# translated graph ---"); Console.WriteLine("void Func()"); Console.WriteLine("{"); foreach (var node in csharpTranslatableGraph) { Console.Write(node.TranslateVariables()); } foreach (var node in csharpTranslatableGraph) { Console.Write(node.TranslatePureFunctions()); } // Since we don't have any states, translate a call to the last pure node instead. Console.WriteLine(string.Join("\n", csharpTranslatableGraph.Last().TranslateCallPureFunction().Distinct())); Console.WriteLine("}"); }