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]).Dereference();
if (state.IsReadMode)
{
state.Fail = !Vn.Unify((AbstractTerm)state.S);
}
else
{
AbstractTerm newVariable = new AbstractTerm();
newVariable.Assign(Vn);
heap.Push(newVariable);
}
state.S = state.S.Next;
if (state.Fail)
{
state.Backtrack();
}
else
{
program.Next();
}
}
public void UnifyValue() { AbstractMachineState state = SetupMachine(); UnifyValueInstruction i = new UnifyValueInstruction(); object[] args = { "X0" }; state.S = new ConstantTerm("ali"); i.Process(args); i.Execute(state); AbstractTerm X0 = (AbstractTerm)state["X0"]; Assert.AreEqual("unify_value", i.Name()); Assert.AreEqual(1, i.NumberOfArguments()); Assert.AreEqual("ali", X0.Data()); }