|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectcom.karneim.util.collection.set.SAutomaton
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;
}
Nested Class Summary | |
static interface |
SAutomaton.IChangeListener
The listener interface for receiving change events of a SAutomaton. |
protected class |
SAutomaton.State
|
protected class |
SAutomaton.StatePro
|
protected class |
SAutomaton.Transition
|
Field Summary | |
protected AutomatonSet_String |
automaton
|
protected Automaton.IChangedListener |
automatonChangedListener
|
protected java.util.LinkedList |
listeners
|
protected java.util.HashMap |
state2wrapper
|
protected java.util.HashMap |
transition2wrapper
|
Constructor Summary | |
|
SAutomaton()
Creates a new empty automaton |
protected |
SAutomaton(AutomatonSet_String automaton)
|
|
SAutomaton(FSAData data)
|
|
SAutomaton(java.io.InputStream automatonDataStream)
|
Method Summary | |
void |
addAll(SAutomaton automaton)
|
void |
addChangeListener(SAutomaton.IChangeListener listener)
Adds the specified listener to receive change events from this automaton. |
IStatePro |
addState()
Adds a new non final state to this automaton. |
IStatePro |
addState(boolean isFinal)
Adds a new final or non final state to this automaton. |
void |
clear()
Removes all states of this automaton. |
void |
complement()
|
protected Automaton.IChangedListener |
getAutomatonChangedListener()
|
IStatePro |
getStartState()
Returns the current start state of the automaton. |
StateProSet |
getStates()
Returns all states of this automaton whatever they are reachable through the current start state or not. |
protected void |
init(FSAData a)
|
boolean |
isDeterministic()
|
void |
minimize()
Minimizes this automaton as much as possible. |
void |
removeAll(SAutomaton automaton)
|
boolean |
removeChangeListener(SAutomaton.IChangeListener listener)
Removes the specified listener so that it no longer receives change events from this automaton. |
boolean |
removeState(IStatePro state)
Removes the specified state from this automaton. |
void |
retainAll(SAutomaton automaton)
|
void |
setStartState(IStatePro state)
Sets the automaton's start state to the specified state. |
FSAData |
toData()
|
void |
toData(java.io.OutputStream automatonDataStream)
|
protected static FSAData |
toFSAData(java.lang.Object obj)
|
java.lang.String |
toString()
|
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Field Detail |
protected transient java.util.HashMap state2wrapper
protected transient java.util.HashMap transition2wrapper
protected transient Automaton.IChangedListener automatonChangedListener
protected transient java.util.LinkedList listeners
protected transient AutomatonSet_String automaton
Constructor Detail |
public SAutomaton()
public SAutomaton(FSAData data)
public SAutomaton(java.io.InputStream automatonDataStream) throws java.io.IOException, java.lang.ClassNotFoundException
protected SAutomaton(AutomatonSet_String automaton)
Method Detail |
protected Automaton.IChangedListener getAutomatonChangedListener()
public void addChangeListener(SAutomaton.IChangeListener listener)
public boolean removeChangeListener(SAutomaton.IChangeListener listener)
listener
-
protected static FSAData toFSAData(java.lang.Object obj)
public boolean isDeterministic()
public IStatePro getStartState()
public void setStartState(IStatePro state)
state
- public IStatePro addState()
public IStatePro addState(boolean isFinal)
public boolean removeState(IStatePro state)
state
-
public void clear()
public void minimize()
public StateProSet getStates()
public void complement()
public void addAll(SAutomaton automaton)
public void retainAll(SAutomaton automaton)
public void removeAll(SAutomaton automaton)
public java.lang.String toString()
public FSAData toData()
protected void init(FSAData a)
public void toData(java.io.OutputStream automatonDataStream) throws java.io.IOException
java.io.IOException
|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |