/// <summary> /// Accepts <code>min</code> or more concatenated repetitions of the language of the given /// automaton. /// </summary> /// <param name="a">The automaton.</param> /// <param name="min">The minimum concatenated repetitions of the language of the given /// automaton.</param> /// <returns>Returns an automaton that accepts <code>min</code> or more concatenated /// repetitions of the language of the given automaton. /// </returns> /// <remarks> /// Complexity: linear in number of states and in <code>min</code>. /// </remarks> internal static Automaton Repeat(Automaton a, int min) { if (min == 0) { return(BasicOperations.Repeat(a)); } var @as = new List <Automaton>(); while (min-- > 0) { @as.Add(a); } @as.Add(BasicOperations.Repeat(a)); return(BasicOperations.Concatenate(@as)); }
internal Automaton Repeat(int min) { return(BasicOperations.Repeat(this, min)); }
internal Automaton Repeat() { return(BasicOperations.Repeat(this)); }