java.lang.Object
org.eclipse.ant.internal.ui.dtd.schema.NfmNode
- All Implemented Interfaces:
- org.eclipse.ant.internal.ui.dtd.util.FactoryObject
- public class NfmNode
- extends java.lang.Object
- implements org.eclipse.ant.internal.ui.dtd.util.FactoryObject
Non-deterministic finite state machine node.
Following Aho & Ullman, nfm nodes contain two
transition links. The graph is constructed so
that no node requires more than two links.
There are exactly these kinds of nodes:
Symbol Next1 Next2 Meaning
"a" fwd null Regexp "a"
null null null Accepting node
null fwd1 fwd2 Start node of ? and * regexp
fwd2 points to stop node
null fwd bkw Internal node of + and * regexp
fwd points to stop node
bkw points, e.g., in "a*" to start node of "a"
null fwd1 fwd2 Start node of | regexp, e.g., "a|b",
fwd nodes point to start nodes of "a" and "b".
null fwd null Internal node of |.
fwd points to stop node.
See Nfm for pictures of how nodes are used.
|
Constructor Summary |
private |
NfmNode()
|
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
symbol
public org.eclipse.ant.internal.ui.dtd.IAtom symbol
next1
public NfmNode next1
next2
public NfmNode next2
dfm
public Dfm dfm
mark
public int mark
next
private NfmNode next
fFactory
private static org.eclipse.ant.internal.ui.dtd.util.Factory fFactory
fUsed
private static org.eclipse.ant.internal.ui.dtd.util.FactoryObject fUsed
NfmNode
private NfmNode()
nfmNode
public static NfmNode nfmNode(org.eclipse.ant.internal.ui.dtd.IAtom symbol,
NfmNode next)
nfmNode
public static NfmNode nfmNode(NfmNode next)
nfmNode
public static NfmNode nfmNode()
freeAll
public static void freeAll()
- Free all NfmNodes in use.
next
public org.eclipse.ant.internal.ui.dtd.util.FactoryObject next()
- Specified by:
next in interface org.eclipse.ant.internal.ui.dtd.util.FactoryObject
next
public void next(org.eclipse.ant.internal.ui.dtd.util.FactoryObject obj)
- Specified by:
next in interface org.eclipse.ant.internal.ui.dtd.util.FactoryObject
getFree
private static NfmNode getFree()
setFree
private static void setFree(NfmNode nfm)