public static DotGraph ToLowLevelGraphViz(this AstMacro macro) { var random = new Random(); var macroBinding = GMacMacroBinding.Create(macro); var lowLevelParameters = macro.InputParameters.SelectMany(p => p.DatastoreValueAccess.ExpandAll()); foreach (var llp in lowLevelParameters) { if (random.Next(1, 10) > -1) { macroBinding.BindToVariables(llp); } else { macroBinding.BindScalarToConstant(llp, 1); } } lowLevelParameters = macro.OutputParameter.DatastoreValueAccess.ExpandAll(); foreach (var llp in lowLevelParameters) { macroBinding.BindToVariables(llp); } var codeBlock = macroBinding.CreateOptimizedCodeBlock(); //var visitor = new MacroBindingToGraphViz(macroBinding, codeBlock); var visitor = new GMacCodeBlockToGraphViz(codeBlock); return(visitor.ToGraphViz()); }
public static DotGraph ToGraphViz(this GMacCodeBlock codeBlock) { var visitor = new GMacCodeBlockToGraphViz(codeBlock); return(visitor.ToGraphViz()); }