Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
12/20/16 22:57:11 (7 years ago)
Author:
pkimmesw
Message:

#2665 Added Problem.ProgramSynthesis Project, Fixed Expression Issues, Fixed Code Generation

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/PushGP/HeuristicLab.Algorithms.PushGP/HeuristicLab.Algorithms.PushGP/Expressions/StackdepthExpressions.cs

    r14398 r14513  
    1 using HeuristicLab.Algorithms.PushGP.Interpreter;
    2 using HeuristicLab.Algorithms.PushGP.Stack;
     1namespace HeuristicLab.Algorithms.PushGP.Expressions {
     2  using HeuristicLab.Algorithms.PushGP.Interpreter;
     3  using HeuristicLab.Algorithms.PushGP.Stack;
    34
    4 namespace HeuristicLab.Algorithms.PushGP.Expressions
    5 {
    6     /// <summary>
    7     /// Pushes the stack depth onto the INTEGER stack (thereby increasing it!).
    8     /// </summary>
    9     /// <typeparam name="T">Stacktype</typeparam>
    10     public abstract class StackdepthExpression<T> : StatelessExpression
    11     {
    12         public void Eval(IStack<T> stack, IStack<long> integerStack, bool incremental = false)
    13         {
    14             var count = stack.Count;
     5  /// <summary>
     6  ///     Pushes the stack depth onto the INTEGER stack (thereby increasing it!).
     7  /// </summary>
     8  /// <typeparam name="T">Stacktype</typeparam>
     9  public abstract class StackdepthExpression<T> : StatelessExpression {
     10    public void Eval(IStack<T> stack, IStack<long> integerStack, bool incremental = false) {
     11      var count = stack.Count;
    1512
    16             if (incremental)
    17             {
    18                 count += 1;
    19             }
     13      if (incremental) count += 1;
    2014
    21             integerStack.Push(count);
    22         }
     15      integerStack.Push(count);
     16    }
     17  }
     18
     19  public class IntegerStackdepthExpression : StackdepthExpression<long> {
     20    protected override string InitStringRepresentation() {
     21      return "INTEGER.STACKDEPTH";
    2322    }
    2423
    25     public class IntegerStackdepthExpression : StackdepthExpression<long>
    26     {
    27         protected override string InitStringRepresentation() { return "INTEGER.STACKDEPTH"; }
     24    public override void Eval(IPushGpInterpreter interpreter) {
     25      this.Eval(interpreter.IntegerStack, interpreter.IntegerStack, true);
     26    }
     27  }
    2828
    29         public override void Eval(IInterpreter interpreter)
    30         {
    31             Eval(interpreter.IntegerStack, interpreter.IntegerStack, true);
    32         }
     29  public class FloatStackdepthExpression : StackdepthExpression<double> {
     30    protected override string InitStringRepresentation() {
     31      return "FLOAT.STACKDEPTH";
    3332    }
    3433
    35     public class FloatStackdepthExpression : StackdepthExpression<double>
    36     {
    37         protected override string InitStringRepresentation() { return "FLOAT.STACKDEPTH"; }
     34    public override void Eval(IPushGpInterpreter interpreter) {
     35      this.Eval(interpreter.FloatStack, interpreter.IntegerStack);
     36    }
     37  }
    3838
    39         public override void Eval(IInterpreter interpreter)
    40         {
    41             Eval(interpreter.FloatStack, interpreter.IntegerStack);
    42         }
     39  public class BooleanStackdepthExpression : StackdepthExpression<bool> {
     40    protected override string InitStringRepresentation() {
     41      return "BOOLEAN.STACKDEPTH";
    4342    }
    4443
    45     public class BooleanStackdepthExpression : StackdepthExpression<bool>
    46     {
    47         protected override string InitStringRepresentation() { return "BOOLEAN.STACKDEPTH"; }
     44    public override void Eval(IPushGpInterpreter interpreter) {
     45      this.Eval(interpreter.BooleanStack, interpreter.IntegerStack);
     46    }
     47  }
    4848
    49         public override void Eval(IInterpreter interpreter)
    50         {
    51             Eval(interpreter.BooleanStack, interpreter.IntegerStack);
    52         }
     49  public class NameStackdepthExpression : StackdepthExpression<string> {
     50    protected override string InitStringRepresentation() {
     51      return "NAME.STACKDEPTH";
    5352    }
    5453
    55     public class NameStackdepthExpression : StackdepthExpression<string>
    56     {
    57         protected override string InitStringRepresentation() { return "NAME.STACKDEPTH"; }
     54    public override void Eval(IPushGpInterpreter interpreter) {
     55      this.Eval(interpreter.NameStack, interpreter.IntegerStack);
     56    }
     57  }
    5858
    59         public override void Eval(IInterpreter interpreter)
    60         {
    61             Eval(interpreter.NameStack, interpreter.IntegerStack);
    62         }
     59  public class ExecStackdepthExpression : StackdepthExpression<Expression> {
     60    protected override string InitStringRepresentation() {
     61      return "EXEC.STACKDEPTH";
    6362    }
    6463
    65     public class ExecStackdepthExpression : StackdepthExpression<Expression>
    66     {
    67         protected override string InitStringRepresentation() { return "EXEC.STACKDEPTH"; }
     64    public override void Eval(IPushGpInterpreter interpreter) {
     65      this.Eval(interpreter.ExecStack, interpreter.IntegerStack);
     66    }
     67  }
    6868
    69         public override void Eval(IInterpreter interpreter)
    70         {
    71             Eval(interpreter.ExecStack, interpreter.IntegerStack);
    72         }
     69  public class CodeStackdepthExpression : StackdepthExpression<Expression> {
     70    protected override string InitStringRepresentation() {
     71      return "CODE.STACKDEPTH";
    7372    }
    7473
    75     public class CodeStackdepthExpression : StackdepthExpression<Expression>
    76     {
    77         protected override string InitStringRepresentation() { return "CODE.STACKDEPTH"; }
    78 
    79         public override void Eval(IInterpreter interpreter)
    80         {
    81             Eval(interpreter.CodeStack, interpreter.IntegerStack);
    82         }
     74    public override void Eval(IPushGpInterpreter interpreter) {
     75      this.Eval(interpreter.CodeStack, interpreter.IntegerStack);
    8376    }
     77  }
    8478}
Note: See TracChangeset for help on using the changeset viewer.