using HeuristicLab.Algorithms.PushGP.Stack; namespace HeuristicLab.Algorithms.PushGP.Expressions { public class ExecIfExpression : Expression { public ExecIfExpression() : base(OpCode.ExecIf) { } public override void Eval(IInterpreterService interpreterService) { // not enough arguments on stack if (interpreterService.BooleanStack.Count == 0 || interpreterService.ExecStack.Count < 2) return; var condition = interpreterService.BooleanStack.Pop(); var expressionTrue = interpreterService.ExecStack.Pop(); var expressionFalse = interpreterService.ExecStack.Pop(); interpreterService.ExecStack.Push(condition ? expressionTrue : expressionFalse); } } }