Exemple #1
0
        public override HeronValue InvokeBinaryOperator(VM vm, OpCode opcode, HeronValue val)
        {
            float x = GetValue();
            float y = val.ToFloat();

            switch (opcode)
            {
            case OpCode.opAdd: return(vm.MakeTemporary(x + y));

            case OpCode.opSub: return(vm.MakeTemporary(x - y));

            case OpCode.opMul: return(vm.MakeTemporary(x * y));

            case OpCode.opDiv: return(vm.MakeTemporary(x / y));

            case OpCode.opMod: return(vm.MakeTemporary(x % y));

            case OpCode.opGtEq: return(vm.MakeTemporary(x >= y));

            case OpCode.opLtEq: return(vm.MakeTemporary(x <= y));

            case OpCode.opGt: return(vm.MakeTemporary(x > y));

            case OpCode.opLt: return(vm.MakeTemporary(x < y));

            default: return(base.InvokeBinaryOperator(vm, opcode, val));
            }
        }