Axiom.Runtime.Instructions.UnifyVariableInstruction.Execute C# (CSharp) Метод

Execute() публичный Метод

public Execute ( AbstractMachineState state ) : void
state AbstractMachineState
Результат void
        public override void Execute(AbstractMachineState state)
        {
            AMProgram program = (AMProgram)state.Program;
            AMHeap heap = (AMHeap)state.DataArea;

            AbstractTerm Vn = (AbstractTerm)state[_vn];
            if (state.IsReadMode)
            {
                Vn.Assign((AbstractTerm)state.S);
            }
            else
            {
                heap.Push(new AbstractTerm());
                Vn.Assign((AbstractTerm)heap.Top());
            }
            if (state.S != null)
            {
                state.S = state.S.Next;
            }
            program.Next();
        }

Usage Example

        public void UnifyVariable()
        {
            AbstractMachineState state = SetupMachine();

            state.IsReadMode = true;

            AbstractTerm sVar = new AbstractTerm();
            state.S = sVar;

            UnifyVariableInstruction i = new UnifyVariableInstruction();

            object[] args = { "X0" };

            i.Process(args);
            i.Execute(state);

            Assert.AreEqual("unify_variable", i.Name());
            Assert.AreEqual(1, i.NumberOfArguments());
            AbstractTerm X0 = ((AbstractTerm)state["X0"]).Dereference();
            Assert.AreSame(X0.Dereference(), sVar);
            Assert.IsNull(state.S);
        }