public Execute ( AbstractMachineState state ) : void | ||
state | AbstractMachineState | |
return | void |
public override void Execute(AbstractMachineState state)
{
AMProgram program = (AMProgram)state.Program;
string procedureName = _label + "/" + _arity.ToString();
if (program.IsDefined(procedureName))
{
program.NumberOfArguments = _arity;
program.P = program[procedureName];
}
else
{
state.Backtrack();
}
}
public void Execute() { AbstractMachineState state = new AbstractMachineState(new AMFactory()); ArrayList prog = new ArrayList(); prog.Add(new PutConstantInstruction()); prog.Add(new HaltInstruction()); state.Initialize(prog); AMProgram program = (AMProgram)state.Program; ProgramClause clause = new ProgramClause("male", 2); program.AddLabel("male/2", clause); ExecuteInstruction i = new ExecuteInstruction(); object[] args = { "male", "2" }; i.Process(args); i.Execute(state); Assert.AreEqual("execute", i.Name()); Assert.AreEqual(2, i.NumberOfArguments()); Assert.AreSame(clause, program.P); }