/** * Returns an automaton that accepts <code>min</code> or more concatenated * repetitions of the language of the given automaton. * <p> * Complexity: linear in number of states and in <code>min</code>. */ static public Automaton repeat(Automaton a, int count) { if (count == 0) { return repeat(a); } List<Automaton> as = new ArrayList<>(); while (count-- > 0) { as.add(a); } as.add(repeat(a)); return concatenate(as); }
break; case REGEXP_REPEAT: a = Operations.repeat(exp1.toAutomatonInternal( automata, automaton_provider, maxDeterminizedStates)); a = MinimizationOperations.minimize(a, maxDeterminizedStates); throw new TooComplexToDeterminizeException(a, minNumStates); a = Operations.repeat(a, min); a = MinimizationOperations.minimize(a, maxDeterminizedStates); break; throw new TooComplexToDeterminizeException(a, minMaxNumStates); a = Operations.repeat(a, min, max); break; case REGEXP_COMPLEMENT:
/** * Returns an automaton that accepts <code>min</code> or more concatenated * repetitions of the language of the given automaton. * <p> * Complexity: linear in number of states and in <code>min</code>. */ static public Automaton repeat(Automaton a, int count) { if (count == 0) { return repeat(a); } List<Automaton> as = new ArrayList<>(); while (count-- > 0) { as.add(a); } as.add(repeat(a)); return concatenate(as); }
/** * Returns an automaton that accepts <code>min</code> or more concatenated * repetitions of the language of the given automaton. * <p> * Complexity: linear in number of states and in <code>min</code>. */ static public Automaton repeat(Automaton a, int count) { if (count == 0) { return repeat(a); } List<Automaton> as = new ArrayList<>(); while (count-- > 0) { as.add(a); } as.add(repeat(a)); return concatenate(as); }
/** * Returns an automaton that accepts <code>min</code> or more concatenated * repetitions of the language of the given automaton. * <p> * Complexity: linear in number of states and in <code>min</code>. */ static public Automaton repeat(Automaton a, int count) { if (count == 0) { return repeat(a); } List<Automaton> as = new ArrayList<>(); while (count-- > 0) { as.add(a); } as.add(repeat(a)); return concatenate(as); }
private static Automaton toContextAutomaton(final Map<IntsRef, ContextMetaData> contexts, final boolean matchAllContexts) { final Automaton matchAllAutomaton = Operations.repeat(Automata.makeAnyString()); final Automaton sep = Automata.makeChar(ContextSuggestField.CONTEXT_SEPARATOR); if (matchAllContexts || contexts.size() == 0) { return Operations.concatenate(matchAllAutomaton, sep); } else { Automaton contextsAutomaton = null; for (Map.Entry<IntsRef, ContextMetaData> entry : contexts.entrySet()) { final ContextMetaData contextMetaData = entry.getValue(); final IntsRef ref = entry.getKey(); Automaton contextAutomaton = Automata.makeString(ref.ints, ref.offset, ref.length); if (contextMetaData.exact == false) { contextAutomaton = Operations.concatenate(contextAutomaton, matchAllAutomaton); } contextAutomaton = Operations.concatenate(contextAutomaton, sep); if (contextsAutomaton == null) { contextsAutomaton = contextAutomaton; } else { contextsAutomaton = Operations.union(contextsAutomaton, contextAutomaton); } } return contextsAutomaton; } }
break; case REGEXP_REPEAT: a = Operations.repeat(exp1.toAutomatonInternal( automata, automaton_provider, maxDeterminizedStates)); a = MinimizationOperations.minimize(a, maxDeterminizedStates); break; case REGEXP_REPEAT_MIN: a = Operations.repeat( exp1.toAutomatonInternal(automata, automaton_provider, maxDeterminizedStates), break; case REGEXP_REPEAT_MINMAX: a = Operations.repeat( exp1.toAutomatonInternal(automata, automaton_provider, maxDeterminizedStates),
break; case REGEXP_REPEAT: a = Operations.repeat(exp1.toAutomatonInternal( automata, automaton_provider, maxDeterminizedStates)); a = MinimizationOperations.minimize(a, maxDeterminizedStates); break; case REGEXP_REPEAT_MIN: a = Operations.repeat( exp1.toAutomatonInternal(automata, automaton_provider, maxDeterminizedStates), break; case REGEXP_REPEAT_MINMAX: a = Operations.repeat( exp1.toAutomatonInternal(automata, automaton_provider, maxDeterminizedStates),
break; case REGEXP_REPEAT: a = Operations.repeat(exp1.toAutomatonInternal( automata, automaton_provider, maxDeterminizedStates)); a = MinimizationOperations.minimize(a, maxDeterminizedStates); throw new TooComplexToDeterminizeException(a, minNumStates); a = Operations.repeat(a, min); a = MinimizationOperations.minimize(a, maxDeterminizedStates); break; throw new TooComplexToDeterminizeException(a, minMaxNumStates); a = Operations.repeat(a, min, max); break; case REGEXP_COMPLEMENT: