public override void Execute(VirtualMachine vm, IList<string> parameters)
 {
     string rValue = vm.ReturnValue;
     if (rValue != null)
     {
         vm.ReturnValue = null;
         if (vm.IsIdentifier(rValue))
         {
             if (!vm.HasItemInHeap(parameters[1]))
             {
                 var val = vm.GetHeapItemByValue(rValue);
                 if (val.Count > 0)
                 {
                     vm.SetVariable(parameters[1], vm.GetVariable(val[vm.GetHeapItemByValue(rValue).Count - 1]).Value);
                 }
                 else
                 {
                     vm.SetVariable(parameters[1], null);
                 }
                 vm.SetHeapItem(parameters[1], rValue);
             }
         }
         else
         {
             vm.SetVariable(parameters[1], rValue);
         }
     }
 }
Example #2
0
 public override void Execute(VirtualMachine vm, IList<string> parameters)
 {
     Variable variable1 = vm.GetVariable(parameters[1]);
     Variable variable2 = vm.GetVariable(parameters[2]);
     variable1 = new Variable(variable2);
     foreach (var item in vm.GetHeapItem(parameters[1]))
     {
         //System.Console.WriteLine("Set Variable "+item+"-> Value: "+variable1.Value);
         vm.SetVariable(item, variable1.Value);
     }
 }
        // ~1 = var x
        // ~2 = while x
        // ~4 = while 0
        public override void Execute(VirtualMachine vm, IList<string> parameters)
        {
            Variable variable1 = vm.GetVariable(parameters[1]);
            Variable variable2 = vm.GetVariable(parameters[2]);

            if (variable1.Type == TokenType.NUMBER || variable2.Type == TokenType.NUMBER)
            {
                vm.ReturnValue = (int.Parse(variable1.Value) != int.Parse(variable2.Value)).ToString();
            }
            else
            {
                vm.ReturnValue = (variable1.Value != variable2.Value).ToString();
            }
        }
Example #4
0
        public override void Execute(VirtualMachine vm, IList<string> parameters)
        {
            Variable variable1 = vm.GetVariable(parameters[1]);
            Variable variable2 = vm.GetVariable(parameters[2]);

            if (variable1.Type == TokenType.NUMBER || variable2.Type == TokenType.NUMBER)
            {
                vm.ReturnValue = (int.Parse(variable1.Value) / int.Parse(variable2.Value)).ToString();
            }
            else
            {
                //throw new Exception(String.Format("Unexpected Type {0} ", ))
            }
        }
Example #5
0
        public override void Execute(VirtualMachine vm, IList<string> parameters)
        {
            Variable variable1 = vm.GetVariable(parameters[1]);
            Variable variable2 = vm.GetVariable(parameters[2]);

            if (variable1.Type == TokenType.BOOLEAN || variable2.Type == TokenType.BOOLEAN)
            {
                bool one = Boolean.Parse(variable1.Value);
                bool two = Boolean.Parse(variable2.Value);
                vm.ReturnValue = true.ToString();
                if (one == false)
                {
                    vm.ReturnValue = one.ToString();
                }
                if (two == false)
                {
                    vm.ReturnValue = two.ToString();
                }
            }
            else
            {
                // Throw Error
            }
        }
Example #6
0
        public void VmAcceptsCommands2(Op[] ops, int[] vsInts, int expected)
        {
            var vm = new VirtualMachine.VirtualMachine();

            Assert.Equal(expected, vm.STM(ops, vsInts.Select(x => (float)x)));
        }
 public override void Execute(VirtualMachine vm, IList<string> parameters)
 {
     vm.ReturnValue = parameters[1];
     vm.SetIdentifier(parameters[1]);
 }
 public override void Execute(VirtualMachine vm, IList<string> parameters)
 {
     vm.ReturnValue = parameters[1];
     //System.Console.WriteLine("Return to Value: "+vm.ReturnValue);
 }