Example #1
0
 /// <summary>
 /// Get all the allowed permutations of child nodes.
 /// </summary>
 private static IEnumerable <List <ParseTreeNode> > AllowedChildPermutations(ParseTreeNode pt)
 {
     // Check if pt is a commutative binop operation
     if (ExcelFormulaParser.IsBinaryOperation(pt) &&
         _communativeBinOps.Contains(ExcelFormulaParser.GetFunction(pt)))
     {
         var reversed = new List <ParseTreeNode>(pt.ChildNodes);
         reversed.Reverse();
         return(new[] { pt.ChildNodes, reversed });
     }
     else
     {
         // Only original childnodes order allowed
         return(Enumerable.Repeat(pt.ChildNodes, 1));
     }
 }