using HeuristicLab.Algorithms.PushGP.Interpreter; namespace HeuristicLab.Algorithms.PushGP.Expressions.Exec { public class ExecIfExpression : Expression { public override bool IsCodeOp { get { return false; } } public override void Eval(IInterpreter interpreter) { // not enough arguments on stack if (interpreter.BooleanStack.Count == 0 || interpreter.ExecStack.Count < 2) return; var condition = interpreter.BooleanStack.Pop(); var expressionTrue = interpreter.ExecStack.Pop(); var expressionFalse = interpreter.ExecStack.Pop(); interpreter.ExecStack.Push(condition ? expressionTrue : expressionFalse); } public override string ToString() { return Symbols.ExecIf; } } }