예제 #1
0
        // 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();
        }
예제 #2
0
        /*
         * 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();
        }