예제 #1
0
        /// <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));
        }
예제 #2
0
 internal Automaton Repeat(int min)
 {
     return(BasicOperations.Repeat(this, min));
 }
예제 #3
0
 internal Automaton Repeat()
 {
     return(BasicOperations.Repeat(this));
 }