Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
03/23/17 01:11:18 (7 years ago)
Author:
pkimmesw
Message:

#2665 simplifier, push solution results view, performance improvements, small bug fixes, ui fixes

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Parser/PushParser.cs

    r14745 r14777  
    1616    private static readonly char[] symbolTrim = { '\r', '\n' };
    1717
    18     public static PushProgram Parse(string source, int startIndex = 0) {
     18    public static Expression Parse(string source, int startIndex = 0) {
    1919      var symbols = source.Split(delimiter);
    2020
     
    2323    }
    2424
    25     private static PushProgram Parse(string[] symbols, int startIndex, out int endIndex) {
     25    public static PushProgram ParseProgram(string source, int startIndex = 0) {
     26      var expression = Parse(source, startIndex);
     27
     28      return expression as PushProgram ?? new PushProgram(new[] { expression });
     29    }
     30
     31    private static Expression Parse(string[] symbols, int startIndex, out int endIndex) {
    2632      var expressions = new List<Expression>();
    2733
     
    3945          case closeBrace:
    4046            endIndex = i;
    41             return new PushProgram(expressions.ToArray());
     47            return new PushProgram(expressions);
    4248        }
    4349
     
    5157        // expression
    5258        if (ExpressionTable.TryGetStatelessExpression(symbol, out expression)
    53             || ExpressionTable.TryGetStatefullExpression(symbol, out expression)) {
     59            || ExpressionTable.TryGetStatefulExpression(symbol, out expression)) {
    5460          expressions.Insert(0, expression);
    5561          continue;
     
    6268      endIndex = symbols.Length - 1;
    6369
    64       return new PushProgram(expressions.ToArray());
     70      switch (expressions.Count) {
     71        case 0:
     72          return PushProgram.Empty;
     73        case 1:
     74          return expressions[0];
     75        default:
     76          return new PushProgram(expressions);
     77      }
    6578    }
    6679
Note: See TracChangeset for help on using the changeset viewer.