Java Doc for SAutomaton.java in » Net » Terracotta » com » tc » jrexx » set » Java Source Code / Java DocumentationJava Source Code and Java Documentation
This class represents a (non-)deterministic final automaton (NFA/DFA).
Use this class to create an automaton manually by adding states to the automaton and transitions to other states
or to browse through the automaton's states and implement your own matching strategies.
to create an automaton manually try
import com.karneim.util.collection.set.*;
public class Test {
public static void main(String[] args) {
SAutomaton automaton = new SAutomaton();
IStatePro s1 = automaton.addState(false);
IStatePro s2 = automaton.addState(true);
s1.addTransition(new
CharSet ("0123456789"),s2);
s2.addTransition(new CharSet("0123456789"),s2);
automaton.setStartState(s1);
}
}
to browse through the automaton's states try
final
IStatePro startState = automaton.getStartState();
final
StateProSet states = new StateProSet(startState);
final
StateProSet.Iterator it = states.iterator();
for (IStatePro state=it.next(); state!=null; state=it.next()) {
IStatePro.ITransition[] transitions = state.getTransitions();
for (int i=0; i transitions.length; ++i) {
states.add(transitions[i].getToState());
System.out.println(
"from " + transitions[i].getFromState()
+ " through " + transitions[i].getCharSet()
+ " to " + transitions[i].getToState()
);
}
}
to implement own matching strategies try
/**
* returns true if input is an existing path through automaton's states
* otherwise false.
*
public static boolean incompleteMatch(SAutomaton automaton,String input) {
IState current = automaton.getStartState().visit();
for (int i=0; i input.length(); ++i) {
current = current.next(input.charAt(i));
if (current == null) return false;
}
return true;
}
author: Ralf Meyer version: 1.0
Adds the specified listener to receive change events from this automaton.
The listener will be registered as listener in any case, even if it has been registered yet.
If a listener instance is added two times, it will receive events twice.
important: don't forget to remove the listener, if you don't need it any longer but still have the automaton in use.
Otherwise your listener won't be carbage collected (because it is registered with this automaton)
and still will receive events.
Returns the current start state of the automaton.
important: The result is null, if and only if the current start state is null
the current start state of the automaton
Minimizes this automaton as much as possible.
The resulting automaton has as less states as possible.
important: the current implementation removes all properties from all transitions
Removes the specified listener so that it no longer receives change events from this automaton.
If the listener instance is registered more than ones, only one instance will be removed.
Parameters: listener - true if the listener was registered else false
Removes the specified state from this automaton.
First all transitions pointing to state are removed and then the state itself.
If state is this automaton's start state then first of all this automaton's start state is set to null.
important: the specified state must have been created via the addState method of this automaton
otherwise an IllegalArgumentException is thrown.
Parameters: state - true if this automaton owns the specified state else false
Sets the automaton's start state to the specified state.
If the automaton should have no start state pass null.
important: the specified state must be a state of this automaton which means
a) the state must have been created via the addState() method of this automaton
b) the state must not have been removed from this automaton via the removeState method
Parameters: state -