private void GenCode(Procedure proc, StringWriter sw) { sw.WriteLine("{0}()", proc.Name); sw.WriteLine("{"); var cf = proc.CreateCodeFormatter(new TextFormatter(sw) { UseTabs = false }); cf.WriteStatementList(proc.Body); sw.WriteLine("}"); }
public void WriteProcedure(Procedure proc, TextWriter writer) { var textFormatter = new TextFormatter(writer) { Indentation = 0, }; textFormatter.WriteLine(); var codeFormatter = proc.CreateCodeFormatter(textFormatter); foreach (var stm in proc.Statements) { stm.Instruction.Accept(codeFormatter); } }
private void RunTest(ProcedureBuilder mock, string outFilename) { Procedure proc = mock.Procedure; using (FileUnitTester fut = new FileUnitTester(outFilename)) { ControlFlowGraphCleaner cfgc = new ControlFlowGraphCleaner(proc); cfgc.Transform(); proc.Write(false, fut.TextWriter); fut.TextWriter.WriteLine(); var sa = new StructureAnalysis(new FakeDecompilerEventListener(), program, proc); sa.Structure(); CodeFormatter fmt = proc.CreateCodeFormatter(new TextFormatter(fut.TextWriter)); fmt.Write(proc); fut.TextWriter.WriteLine("==========================="); fut.AssertFilesEqual(); } }