public static bool IsReduce(Precedence rulePrecedence, Precedence shiftPrecedence) { if (rulePrecedence == null) { throw new ArgumentNullException("rulePrecedence"); } if (shiftPrecedence == null) { throw new ArgumentNullException("shiftPrecedence"); } if (rulePrecedence.Value == shiftPrecedence.Value) { return rulePrecedence.Assoc == Associativity.Left; } return rulePrecedence.Value > shiftPrecedence.Value; }