Changeset 14328 for branches/PushGP/HeuristicLab.Algorithms.PushGP/HeuristicLab.Algorithms.PushGP/Expressions/Exec/ExecDefineExpression.cs
- Timestamp:
- 10/08/16 12:04:25 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/PushGP/HeuristicLab.Algorithms.PushGP/HeuristicLab.Algorithms.PushGP/Expressions/Exec/ExecDefineExpression.cs
r14320 r14328 1 using HeuristicLab.Algorithms.PushGP.Stack; 1 using HeuristicLab.Algorithms.PushGP.Expressions.Exec; 2 using HeuristicLab.Algorithms.PushGP.Interpreter; 2 3 3 namespace HeuristicLab.Algorithms.PushGP.Expressions 4 namespace HeuristicLab.Algorithms.PushGP.Expressions.Code 4 5 { 5 6 public class ExecDefineExpression : Expression 6 7 { 7 public ExecDefineExpression() : base(OpCode.ExecDefine) 8 { } 8 public override bool IsCodeOp { get { return false; } } 9 9 10 public override void Eval(IInterpreter Service interpreterService)10 public override void Eval(IInterpreter interpreter) 11 11 { 12 Define( 13 interpreterService.ExecStack, 14 interpreterService.NameStack, 15 interpreterService.CustomExpressions, 16 value => new ExecPushExpression(value)); 12 // not enough arguments on stack 13 if (interpreter.NameStack.Count == 0 || 14 interpreter.CodeStack.Count == 0) 15 return; 17 16 18 // as the interpreter does not pop code expressions 19 interpreterService.ExecStack.Pop(); 17 var name = interpreter.NameStack.Pop(); 18 var expression = new ExecPushExpression(interpreter.ExecStack.Top); 19 20 if (interpreter.CustomExpressions.ContainsKey(name)) 21 { 22 interpreter.CustomExpressions[name] = expression; 23 } 24 else 25 { 26 interpreter.CustomExpressions.Add(name, expression); 27 } 28 29 interpreter.ExecStack.Pop(); 30 } 31 32 public override string ToString() 33 { 34 return Symbols.CodeDefine; 20 35 } 21 36 }
Note: See TracChangeset
for help on using the changeset viewer.