Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
02/06/18 13:52:00 (6 years ago)
Author:
lkammere
Message:

#2886: Add parsing to infix form for debugging purpose.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2886_SymRegGrammarEnumeration/HeuristicLab.Algorithms.DataAnalysis.SymRegGrammarEnumeration/GrammarEnumeration/Grammar.cs

    r15723 r15724  
    155155    #endregion
    156156    */
    157    
     157
    158158    #region Hashing
    159159    public int CalcHashCode(SymbolString sentence) {
     
    282282    }
    283283    #endregion
     284
     285    #region Parse to Infix string
     286
     287    public SymbolString PostfixToInfixParser(SymbolString phrase) {
     288      Stack<Symbol> parseStack = new Stack<Symbol>(phrase);
     289
     290      return PostfixToInfixSubtreeParser(parseStack);
     291    }
     292
     293    private SymbolString PostfixToInfixSubtreeParser(Stack<Symbol> parseStack) {
     294      Symbol head = parseStack.Pop();
     295
     296      SymbolString result = new SymbolString();
     297
     298      if (ReferenceEquals(head, Addition) || ReferenceEquals(head, Multiplication)) {
     299        result.AddRange(PostfixToInfixSubtreeParser(parseStack));
     300        result.Add(head);
     301        result.AddRange(PostfixToInfixSubtreeParser(parseStack));
     302      } else {
     303        result.Add(head);
     304      }
     305      return result;
     306    }
     307
     308    #endregion
    284309  }
    285310}
Note: See TracChangeset for help on using the changeset viewer.