TB - represents a DFA transition fragment. This type is used for both intermediate and
final results.public abstract class StateTransitionCanonicalizer<SI extends StateIndex<? super S>,S extends AbstractState<S,T>,T extends AbstractTransition<S,T>,TB extends TransitionBuilder<SI,S,T>> extends Object
TransitionBuilder,
TransitionSet| Constructor and Description |
|---|
StateTransitionCanonicalizer(SI stateIndex,
boolean forward,
boolean prioritySensitive) |
| Modifier and Type | Method and Description |
|---|---|
void |
addArgument(T transition,
CodePointSet charSet)
Submits an argument to be processed by
StateTransitionCanonicalizer.run(CompilationBuffer). |
protected abstract boolean |
canMerge(TB a,
TB b)
Returns
true if two DFA transitions are allowed to be merged into one. |
protected abstract TB[] |
createResultArray(int size)
Returns an array suitable for holding the result of
StateTransitionCanonicalizer.run(CompilationBuffer). |
protected abstract T[] |
createTransitionArray(int size) |
protected abstract TB |
createTransitionBuilder(T[] transitions,
StateSet<SI,S> targetStateSet,
CodePointSet matcherBuilder) |
protected boolean |
isPrioritySensitive()
If priority-sensitive mode, transition sets are pruned after transitions to final states.
|
TB[] |
run(CompilationBuffer compilationBuffer)
Runs the NFA to DFA transition conversion algorithm on the NFA transitions given by previous
calls to
StateTransitionCanonicalizer.addArgument(AbstractTransition, CodePointSet). |
public StateTransitionCanonicalizer(SI stateIndex, boolean forward, boolean prioritySensitive)
protected boolean isPrioritySensitive()
public void addArgument(T transition, CodePointSet charSet)
StateTransitionCanonicalizer.run(CompilationBuffer).public TB[] run(CompilationBuffer compilationBuffer)
StateTransitionCanonicalizer.addArgument(AbstractTransition, CodePointSet). This algorithm has two
phases:
TransitionBuilders whose CodePointSets have no more
intersections.TransitionBuilders generated by the first phase if their target
state is equal and StateTransitionCanonicalizer.canMerge(TransitionBuilder, TransitionBuilder) returns
true.protected abstract TB createTransitionBuilder(T[] transitions, StateSet<SI,S> targetStateSet, CodePointSet matcherBuilder)
protected abstract boolean canMerge(TB a, TB b)
true if two DFA transitions are allowed to be merged into one.protected abstract T[] createTransitionArray(int size)
protected abstract TB[] createResultArray(int size)
StateTransitionCanonicalizer.run(CompilationBuffer).