// Traverses the tree and generates output code public void Generate(CilEmitter emitter) { emitter.BeginProgram(); ILabel begin = emitter.GenerateLabel(); ILabel end = emitter.GenerateLabel(); begin.Emit(); root.Generate(emitter, begin, end); end.Emit(); emitter.WriteExecutable(); }
/* * emit int32 * emit int32 * emit + * emit assignment * */ public void Test() { emitter.BeginMethod("main", typeof(Int32), new Type[0]); // TestWriteInt(); // TestWriteLine(); // TestIf(); // TestAddition(); // TestComparison(); // TestLocalVars(); // TestInputParsing(); TestComplexExpression(); emitter.EmitEmptyRead(); emitter.WriteExecutable(); }