예제 #1
0
        // a * 3 + b * 2 - c
        private void TestComplexExpression()
        {
            // Initialize  variables a, b and c

            // a = 5
            ILocalVariable aVar = emitter.EmitLocalVarDeclaration("A", typeof(int));

            emitter.EmitInt32(5);
            aVar.EmitAssignment();

            // b = 6
            ILocalVariable bVar = emitter.EmitLocalVarDeclaration("B", typeof(int));

            emitter.EmitInt32(6);
            bVar.EmitAssignment();

            // c = 7
            ILocalVariable cVar = emitter.EmitLocalVarDeclaration("B", typeof(int));

            emitter.EmitInt32(7);
            cVar.EmitAssignment();

            // Emit lhs R Value
            aVar.EmitValue();
            emitter.EmitInt32(3);
            emitter.EmitBinaryOperator("*");

            // Emit rhs R Value
            bVar.EmitValue();
            emitter.EmitInt32(2);
            emitter.EmitBinaryOperator("*");

            emitter.EmitBinaryOperator("+");

            cVar.EmitValue();
            emitter.EmitBinaryOperator("-");

            emitter.EmitWrite(typeof(int));
        }