Changeset 14777 for branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Parser
- Timestamp:
- 03/23/17 01:11:18 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Parser/PushParser.cs
r14745 r14777 16 16 private static readonly char[] symbolTrim = { '\r', '\n' }; 17 17 18 public static PushProgramParse(string source, int startIndex = 0) {18 public static Expression Parse(string source, int startIndex = 0) { 19 19 var symbols = source.Split(delimiter); 20 20 … … 23 23 } 24 24 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) { 26 32 var expressions = new List<Expression>(); 27 33 … … 39 45 case closeBrace: 40 46 endIndex = i; 41 return new PushProgram(expressions .ToArray());47 return new PushProgram(expressions); 42 48 } 43 49 … … 51 57 // expression 52 58 if (ExpressionTable.TryGetStatelessExpression(symbol, out expression) 53 || ExpressionTable.TryGetStateful lExpression(symbol, out expression)) {59 || ExpressionTable.TryGetStatefulExpression(symbol, out expression)) { 54 60 expressions.Insert(0, expression); 55 61 continue; … … 62 68 endIndex = symbols.Length - 1; 63 69 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 } 65 78 } 66 79
Note: See TracChangeset
for help on using the changeset viewer.