Changeset 14328 for branches/PushGP/HeuristicLab.Algorithms.PushGP/HeuristicLab.Algorithms.PushGP/Expressions/Exec/ExecDoRangeExpression.cs
- Timestamp:
- 10/08/16 12:04:25 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/PushGP/HeuristicLab.Algorithms.PushGP/HeuristicLab.Algorithms.PushGP/Expressions/Exec/ExecDoRangeExpression.cs
r14320 r14328 1 using HeuristicLab.Algorithms.PushGP. Stack;1 using HeuristicLab.Algorithms.PushGP.Interpreter; 2 2 3 namespace HeuristicLab.Algorithms.PushGP.Expressions 3 namespace HeuristicLab.Algorithms.PushGP.Expressions.Exec 4 4 { 5 5 public class ExecDoRangeExpression : Expression 6 6 { 7 public ExecDoRangeExpression() : base(OpCode.ExecDoXRange) 8 { } 7 public override bool IsCodeOp { get { return false; } } 9 8 10 public override void Eval(IInterpreter Service interpreterService)9 public override void Eval(IInterpreter interpreter) 11 10 { 12 11 // not enough arguments on stack 13 if (interpreter Service.IntegerStack.Count < 2 ||14 interpreter Service.ExecStack.Count == 0)12 if (interpreter.IntegerStack.Count < 2 || 13 interpreter.ExecStack.Count == 0) 15 14 return; 16 15 17 var destinationIndex = interpreter Service.IntegerStack.Pop();18 var currentIndex = interpreter Service.IntegerStack.Pop();19 var loopBody = interpreter Service.ExecStack.Pop();16 var destinationIndex = interpreter.IntegerStack.Pop(); 17 var currentIndex = interpreter.IntegerStack.Pop(); 18 var loopBody = interpreter.ExecStack.Pop(); 20 19 21 20 if (destinationIndex == currentIndex) 22 21 { 23 interpreter Service.IntegerStack.Push(currentIndex);24 interpreter Service.ExecStack.Push(loopBody);22 interpreter.IntegerStack.Push(currentIndex); 23 interpreter.ExecStack.Push(loopBody); 25 24 } 26 25 else … … 30 29 : currentIndex + 1; 31 30 32 interpreter Service.IntegerStack.Push(currentIndex);33 interpreter Service.IntegerStack.Push(nextIndex);34 interpreter Service.IntegerStack.Push(destinationIndex);31 interpreter.IntegerStack.Push(currentIndex); 32 interpreter.IntegerStack.Push(nextIndex); 33 interpreter.IntegerStack.Push(destinationIndex); 35 34 36 35 var expression = new ExecDoRangeExpression(); 37 interpreter Service.ExecStack.Push(loopBody);38 interpreter Service.ExecStack.Push(loopBody);39 interpreter Service.ExecStack.Push(expression);36 interpreter.ExecStack.Push(loopBody); 37 interpreter.ExecStack.Push(loopBody); 38 interpreter.ExecStack.Push(expression); 40 39 } 40 } 41 42 public override string ToString() 43 { 44 return Symbols.ExecDoXRange; 41 45 } 42 46 }
Note: See TracChangeset
for help on using the changeset viewer.