public static ExpressionBase <T> RepeatNonGreedy(ExpressionBase <T> expression, int minOccur, int?maxOccur = null)
 {
     return(new RepetitionExpr <T>(expression, minOccur, maxOccur ?? minOccur, false));
 }
 public static ExpressionBase <T> OneOrManyNonGreedy(ExpressionBase <T> expression)
 {
     return(RepeatNonGreedy(expression, 1, int.MaxValue));
 }
 public static ExpressionBase <T> ZeroOrMany(ExpressionBase <T> expression)
 {
     return(Repeat(expression, 0, int.MaxValue));
 }
 public static ExpressionBase <T> ZeroOrOneNonGreedy(ExpressionBase <T> expression)
 {
     return(RepeatNonGreedy(expression, 0, 1));
 }
 public static ExpressionBase <T> ZeroOrOne(ExpressionBase <T> expression)
 {
     return(Repeat(expression, 0, 1));
 }