public override void Execute(AbstractMachineState state)
{
AMProgram program = (AMProgram)state.Program;
AbstractTerm X0 = ((AbstractTerm)state["X0"]).Dereference();
if (X0.IsConstant)
{
string constantData = (string)X0.Data();
constantData = constantData.Trim(new char[] { '\'' });
if (constantData.Length == 1)
{
program.Next();
}
else
{
state.Backtrack();
return;
}
}
else if (X0.IsReference)
{
if (X0.Reference() == X0)
{
program.Next();
}
else
{
state.Backtrack();
return;
}
}
else
{
state.Backtrack();
}
}