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/EqualsExpressions.cs

    r14398 r14513  
    1 using HeuristicLab.Algorithms.PushGP.Interpreter;
    2 using HeuristicLab.Algorithms.PushGP.Stack;
     1namespace HeuristicLab.Algorithms.PushGP.Expressions
     2{
     3  using HeuristicLab.Algorithms.PushGP.Interpreter;
     4  using HeuristicLab.Algorithms.PushGP.Stack;
    35
    4 namespace HeuristicLab.Algorithms.PushGP.Expressions
    5 {
    6     /// <summary>
    7     /// Pushes TRUE onto the BOOLEAN stack if the top two items are equal, or FALSE otherwise
    8     /// </summary>
    9     /// <typeparam name="T">Stacktype</typeparam>
    10     public abstract class EqualsExpression<T> : StatelessExpression
     6  /// <summary>
     7  ///     Pushes TRUE onto the BOOLEAN stack if the top two items are equal, or FALSE otherwise
     8  /// </summary>
     9  /// <typeparam name="T">Stacktype</typeparam>
     10  public abstract class EqualsExpression<T> : StatelessExpression
     11  {
     12    public void Eval(IStack<T> stack, IStack<bool> booleanStack)
    1113    {
    12         public void Eval(IStack<T> stack, IStack<bool> booleanStack)
    13         {
    14             if (stack.Count < 2)
    15                 return;
     14      if (stack.Count < 2) return;
    1615
    17             var items = stack.Pop(2);
     16      var items = stack.Pop(2);
    1817
    19             booleanStack.Push(items[0].Equals(items[1]));
    20         }
     18      booleanStack.Push(items[0].Equals(items[1]));
     19    }
     20  }
     21
     22  public class IntegerEqualsExpression : EqualsExpression<long>
     23  {
     24    protected override string InitStringRepresentation()
     25    {
     26      return "INTEGER.=";
    2127    }
    2228
    23     public class IntegerEqualsExpression : EqualsExpression<long>
     29    public override void Eval(IPushGpInterpreter interpreter)
    2430    {
    25         protected override string InitStringRepresentation() { return "INTEGER.="; }
     31      this.Eval(interpreter.IntegerStack, interpreter.BooleanStack);
     32    }
     33  }
    2634
    27         public override void Eval(IInterpreter interpreter)
    28         {
    29             Eval(interpreter.IntegerStack, interpreter.BooleanStack);
    30         }
     35  public class FloatEqualsExpression : EqualsExpression<double>
     36  {
     37    protected override string InitStringRepresentation()
     38    {
     39      return "FLOAT.=";
    3140    }
    3241
    33     public class FloatEqualsExpression : EqualsExpression<double>
     42    public override void Eval(IPushGpInterpreter interpreter)
    3443    {
    35         protected override string InitStringRepresentation() { return "FLOAT.="; }
     44      this.Eval(interpreter.FloatStack, interpreter.BooleanStack);
     45    }
     46  }
    3647
    37         public override void Eval(IInterpreter interpreter)
    38         {
    39             Eval(interpreter.FloatStack, interpreter.BooleanStack);
    40         }
     48  public class BooleanEqualsExpression : EqualsExpression<bool>
     49  {
     50    protected override string InitStringRepresentation()
     51    {
     52      return "BOOLEAN.=";
    4153    }
    4254
    43     public class BooleanEqualsExpression : EqualsExpression<bool>
     55    public override void Eval(IPushGpInterpreter interpreter)
    4456    {
    45         protected override string InitStringRepresentation() { return "BOOLEAN.="; }
     57      this.Eval(interpreter.BooleanStack, interpreter.BooleanStack);
     58    }
     59  }
    4660
    47         public override void Eval(IInterpreter interpreter)
    48         {
    49             Eval(interpreter.BooleanStack, interpreter.BooleanStack);
    50         }
     61  public class NameEqualsExpression : EqualsExpression<string>
     62  {
     63    protected override string InitStringRepresentation()
     64    {
     65      return "NAME.=";
    5166    }
    5267
    53     public class NameEqualsExpression : EqualsExpression<string>
     68    public override void Eval(IPushGpInterpreter interpreter)
    5469    {
    55         protected override string InitStringRepresentation() { return "NAME.="; }
     70      this.Eval(interpreter.NameStack, interpreter.BooleanStack);
     71    }
     72  }
    5673
    57         public override void Eval(IInterpreter interpreter)
    58         {
    59             Eval(interpreter.NameStack, interpreter.BooleanStack);
    60         }
     74  public class ExecEqualsExpression : EqualsExpression<Expression>
     75  {
     76    protected override string InitStringRepresentation()
     77    {
     78      return "EXEC.=";
    6179    }
    6280
    63     public class ExecEqualsExpression : EqualsExpression<Expression>
     81    public override void Eval(IPushGpInterpreter interpreter)
    6482    {
    65         protected override string InitStringRepresentation() { return "EXEC.="; }
     83      this.Eval(interpreter.ExecStack, interpreter.BooleanStack);
     84    }
     85  }
    6686
    67         public override void Eval(IInterpreter interpreter)
    68         {
    69             Eval(interpreter.ExecStack, interpreter.BooleanStack);
    70         }
     87  public class CodeEqualsExpression : EqualsExpression<Expression>
     88  {
     89    protected override string InitStringRepresentation()
     90    {
     91      return "CODE.=";
    7192    }
    7293
    73     public class CodeEqualsExpression : EqualsExpression<Expression>
     94    public override void Eval(IPushGpInterpreter interpreter)
    7495    {
    75         protected override string InitStringRepresentation() { return "CODE.="; }
    76 
    77         public override void Eval(IInterpreter interpreter)
    78         {
    79             Eval(interpreter.CodeStack, interpreter.BooleanStack);
    80         }
     96      this.Eval(interpreter.CodeStack, interpreter.BooleanStack);
    8197    }
     98  }
    8299}
Note: See TracChangeset for help on using the changeset viewer.