public Execute ( AbstractMachineState state ) : void | ||
state | AbstractMachineState | |
return | void |
public override void Execute(AbstractMachineState state)
{
AMProgram program = (AMProgram)state.Program;
AbstractTerm Ai = ((AbstractTerm)state[_ai]).Dereference();
if (Ai.IsReference)
{
Ai.Assign(new ConstantTerm(_constant));
AMTrail trail = (AMTrail)state.Trail;
trail.Trail(Ai);
}
else if (Ai.IsConstant)
{
state.Fail = ((string)Ai.Data() != _constant);
}
else
{
state.Fail = true;
}
if (state.Fail)
{
state.Backtrack();
}
else
{
program.Next();
}
}
public void GetConstant() { AbstractMachineState state = SetupMachine(); GetConstantInstruction i = new GetConstantInstruction(); object[] args = { "ali", "X0" }; i.Process(args); i.Execute(state); Assert.AreEqual("get_constant", i.Name()); Assert.AreEqual(2, i.NumberOfArguments()); AbstractTerm X0 = ((AbstractTerm)state["X0"]).Dereference(); Assert.IsTrue(X0.IsConstant); Assert.AreEqual("ali", X0.Data()); }