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

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

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

            AbstractTerm Vn = (AbstractTerm)state[_vn];
            // Fix for Ticket #12, #4, had to dereference
            AbstractTerm Ai = ((AbstractTerm)state[_ai]).Dereference();

            if (!Vn.Unify(Ai))
            {
                state.Backtrack();
            }
            else
            {
                program.Next();
            }
        }

Usage Example

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

            GetValueInstruction i = new GetValueInstruction();

            object[] args = { "X1", "X0" };

            i.Process(args);

            AbstractTerm X0 = (AbstractTerm)state["X0"];
            AbstractTerm X1 = (AbstractTerm)state["X1"];

            X0.Assign(new ConstantTerm("ali"));

            i.Execute(state);

            Assert.AreEqual("get_value", i.Name());
            Assert.AreEqual(2, i.NumberOfArguments());
            Assert.AreEqual(X1.Data(), "ali");
        }