public Execute ( AbstractMachineState state ) : void | ||
state | AbstractMachineState | |
Résultat | void |
public override void Execute(AbstractMachineState state)
{
AMProgram program = (AMProgram)state.Program;
AMTrail trail = (AMTrail)state.Trail;
AMHeap heap = (AMHeap)state.DataArea;
ProgramClause nextClause = program[_label];
Choicepoint B = new Choicepoint(program.NumberOfArguments, state.E, program.CP, state.B, nextClause, trail.TR, heap.H);
B.SaveRegisters(state, program.NumberOfArguments);
state.B = B;
program.Next();
}
public void TryMeElse() { AbstractMachineState state = SetupMachine(); AMProgram program = (AMProgram)state.Program; AMTrail trail = (AMTrail)state.Trail; program.AddLabel("foobar/2", new ProgramClause()); TryMeElseInstruction i = new TryMeElseInstruction(); object[] args = { "foobar/2" }; i.Process(args); program.NumberOfArguments = 2; i.Execute(state); Assert.AreEqual("try_me_else", i.Name()); Assert.AreEqual(1, i.NumberOfArguments()); Assert.AreEqual(2, state.B.Arity); Assert.IsNull(state.B.B); Assert.AreSame(state.B.CE, state.E); Assert.AreSame(state.B.CP, program.CP); Assert.AreSame(state.B.NextClause, program["foobar/2"]); Assert.AreEqual(state.B.TR, trail.TR); }