public Execute ( AbstractMachineState state ) : void | ||
state | AbstractMachineState | |
return | 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();
}
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); }