Changeset 14744 for branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/ExecExpressions.cs
- Timestamp:
- 03/10/17 21:42:09 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Expressions/ExecExpressions.cs
r14733 r14744 10 10 11 11 public class ExecExpandExpression : StatefulExpression<PushProgram> { 12 public static readonly ExecExpandExpression Empty = new ExecExpandExpression( );12 public static readonly ExecExpandExpression Empty = new ExecExpandExpression(PushProgram.Empty); 13 13 14 14 public ExecExpandExpression(PushProgram program) … … 32 32 } 33 33 34 public override voidEval(IPushInterpreter interpreter) {34 public override bool Eval(IPushInterpreter interpreter) { 35 35 interpreter.ExecStack.Push(this.State.Expressions); 36 return true; 36 37 } 37 38 … … 81 82 [PushExpression(StackType.Exec, "EXEC.IF")] 82 83 public class ExecIfExpression : StatelessExpression { 83 public override voidEval(IPushInterpreter interpreter) {84 public override bool Eval(IPushInterpreter interpreter) { 84 85 // not enough arguments on stack 85 if ((interpreter.BooleanStack.Count == 0) || (interpreter.ExecStack.Count < 2)) return ;86 if ((interpreter.BooleanStack.Count == 0) || (interpreter.ExecStack.Count < 2)) return false; 86 87 87 88 var condition = interpreter.BooleanStack.Pop(); … … 89 90 if (condition) interpreter.ExecStack.RemoveAt(interpreter.ExecStack.Count - 2); 90 91 else interpreter.ExecStack.RemoveTop(); 92 93 return true; 91 94 } 92 95 } … … 98 101 [PushExpression(StackType.Exec, "EXEC.Y")] 99 102 public class ExecYExpression : StatelessExpression { 100 public override voidEval(IPushInterpreter interpreter) {103 public override bool Eval(IPushInterpreter interpreter) { 101 104 // not enough arguments on stack 102 105 if (interpreter.ExecStack.Count == 0 || 103 106 interpreter.Configuration.MaxPointsInProgram < 2) 104 return ;107 return false; 105 108 106 109 var top = interpreter.ExecStack.Top; 107 110 var execYExpression = ExpressionTable.GetStatelessExpression<ExecYExpression>(); 111 108 112 var result = new ExecExpandExpression(top, execYExpression); 109 113 110 //interpreter.ExecStack.Insert(interpreter.ExecStack.Count - 1, result);111 114 interpreter.ExecStack.SetTop(result); 112 115 interpreter.ExecStack.Add(top); 116 117 return true; 113 118 } 114 119 } … … 119 124 [PushExpression(StackType.Exec, "EXEC.K")] 120 125 public class ExecKExpression : StatelessExpression { 121 public override voidEval(IPushInterpreter interpreter) {122 if (interpreter.ExecStack.Count < 2) return ;126 public override bool Eval(IPushInterpreter interpreter) { 127 if (interpreter.ExecStack.Count < 2) return false; 123 128 124 129 var top = interpreter.ExecStack.Pop(); 125 130 interpreter.ExecStack.SetTop(top); 131 132 return true; 126 133 } 127 134 } … … 134 141 [PushExpression(StackType.Exec, "EXEC.S")] 135 142 public class ExecSExpression : StatelessExpression { 136 public override voidEval(IPushInterpreter interpreter) {137 if (interpreter.ExecStack.Count < 3) return ;143 public override bool Eval(IPushInterpreter interpreter) { 144 if (interpreter.ExecStack.Count < 3) return false; 138 145 139 146 var expression = interpreter.ExecStack.Pop(2); … … 146 153 interpreter.ExecStack.SetTop(newTop); 147 154 interpreter.ExecStack.Push(c, a); 155 156 return true; 148 157 } 149 158 }
Note: See TracChangeset
for help on using the changeset viewer.