|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Objectmorfologik.fsa.FSA
morfologik.fsa.CFSA2
public final class CFSA2
CFSA (Compact Finite State Automaton) binary format implementation, version 2:
BIT_TARGET_NEXT applicable on all arcs, not necessarily the last one.The encoding of automaton body is as follows.
---- CFSA header
Byte Description
+-+-+-+-+-+-+-+-+\
0 | | | | | | | | | +------ '\'
+-+-+-+-+-+-+-+-+/
+-+-+-+-+-+-+-+-+\
1 | | | | | | | | | +------ 'f'
+-+-+-+-+-+-+-+-+/
+-+-+-+-+-+-+-+-+\
2 | | | | | | | | | +------ 's'
+-+-+-+-+-+-+-+-+/
+-+-+-+-+-+-+-+-+\
3 | | | | | | | | | +------ 'a'
+-+-+-+-+-+-+-+-+/
+-+-+-+-+-+-+-+-+\
4 | | | | | | | | | +------ version (fixed 0xc6)
+-+-+-+-+-+-+-+-+/
+-+-+-+-+-+-+-+-+\
5 | | | | | | | | | +----\
+-+-+-+-+-+-+-+-+/ \ flags [MSB first]
+-+-+-+-+-+-+-+-+\ /
6 | | | | | | | | | +----/
+-+-+-+-+-+-+-+-+/
+-+-+-+-+-+-+-+-+\
7 | | | | | | | | | +------ label lookup table size
+-+-+-+-+-+-+-+-+/
+-+-+-+-+-+-+-+-+\
8-32 | | | | | | | | | +------ label value lookup table
: : : : : : : : : |
+-+-+-+-+-+-+-+-+/
---- Start of a node; only if automaton was compiled with NUMBERS option.
Byte
+-+-+-+-+-+-+-+-+\
0 | | | | | | | | | \
+-+-+-+-+-+-+-+-+ +
1 | | | | | | | | | | number of strings recognized
+-+-+-+-+-+-+-+-+ +----- by the automaton starting
: : : : : : : : : | from this node. v-coding
+-+-+-+-+-+-+-+-+ +
| | | | | | | | | /
+-+-+-+-+-+-+-+-+/
---- A vector of this node's arcs. An arc's layout depends on the combination of flags.
1) NEXT bit set, mapped arc label.
+----------------------- node pointed to is next
| +--------------------- the last arc of the node
| | +------------------- this arc leads to a final state (acceptor)
| | | _______+--------- arc's label; indexed if M > 0, otherwise explicit label follows
| | | / | | | |
+-+-+-+-+-+-+-+-+\
0 |N|L|F|M|M|M|M|M| +------ flags + (M) index of the mapped label.
+-+-+-+-+-+-+-+-+/
+-+-+-+-+-+-+-+-+\
1 | | | | | | | | | +------ optional label if M == 0
+-+-+-+-+-+-+-+-+/
: : : : : : : : :
+-+-+-+-+-+-+-+-+\
|A|A|A|A|A|A|A|A| +------ v-coded goto address
+-+-+-+-+-+-+-+-+/
| Field Summary | |
|---|---|
byte[] |
arcs
An array of bytes with the internal representation of the automaton. |
static int |
BIT_FINAL_ARC
The arc corresponds to the last character of a sequence available when building the automaton (acceptor transition). |
static int |
BIT_LAST_ARC
The arc is the last one from the current node's arcs list. |
static int |
BIT_TARGET_NEXT
The target node of this arc follows the last arc of the current state (no goto field). |
byte[] |
labelMapping
Label mapping for M-indexed labels. |
static byte |
VERSION
Automaton header version value. |
| Constructor Summary | |
|---|---|
CFSA2(java.io.InputStream in)
Reads an automaton from a byte stream. |
|
| Method Summary | |
|---|---|
int |
getArc(int node,
byte label)
|
byte |
getArcLabel(int arc)
Return the label associated with a given arc. |
int |
getEndNode(int arc)
Return the end node pointed to by a given arc. |
int |
getFirstArc(int node)
|
java.util.Set<FSAFlags> |
getFlags()
Returns a set of flags for this FSA instance. |
int |
getNextArc(int arc)
|
int |
getRightLanguageCount(int node)
|
int |
getRootNode()
|
boolean |
isArcFinal(int arc)
Returns true if the destination node at the end of this
arc corresponds to an input sequence created when building
this automaton. |
boolean |
isArcLast(int arc)
Returns true if this arc has NEXT bit set. |
boolean |
isArcTerminal(int arc)
Returns true if this arc does not have a
terminating node (@link FSA.getEndNode(int) will throw an
exception). |
boolean |
isNextSet(int arc)
|
| Methods inherited from class morfologik.fsa.FSA |
|---|
getArcCount, getSequences, getSequences, iterator, read, visitAllStates, visitInPostOrder, visitInPostOrder, visitInPreOrder, visitInPreOrder |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
public static final byte VERSION
public static final int BIT_TARGET_NEXT
public static final int BIT_LAST_ARC
public static final int BIT_FINAL_ARC
public byte[] arcs
public final byte[] labelMapping
| Constructor Detail |
|---|
public CFSA2(java.io.InputStream in)
throws java.io.IOException
java.io.IOException| Method Detail |
|---|
public int getRootNode()
getRootNode in class FSApublic final int getFirstArc(int node)
getFirstArc in class FSAnode
or 0 if the node has no outgoing arcs.public final int getNextArc(int arc)
getNextArc in class FSAarc and
leaving node. Zero is returned if no more arcs are
available for the node.
public int getArc(int node,
byte label)
getArc in class FSAnode and
labeled with label. An identifier equal to 0 means
the node has no outgoing arc labeled label.public int getEndNode(int arc)
arc. Terminal arcs
(those that point to a terminal state) have no end node representation
and throw a runtime exception.
getEndNode in class FSApublic byte getArcLabel(int arc)
arc.
getArcLabel in class FSApublic int getRightLanguageCount(int node)
getRightLanguageCount in class FSAFSAFlags.NUMBERS. The size of
the right language of the state, in other words.public boolean isArcFinal(int arc)
true if the destination node at the end of this
arc corresponds to an input sequence created when building
this automaton.
isArcFinal in class FSApublic boolean isArcTerminal(int arc)
true if this arc does not have a
terminating node (@link FSA.getEndNode(int) will throw an
exception). Implies FSA.isArcFinal(int).
isArcTerminal in class FSApublic boolean isArcLast(int arc)
true if this arc has NEXT bit set.
BIT_LAST_ARCpublic boolean isNextSet(int arc)
BIT_TARGET_NEXTpublic java.util.Set<FSAFlags> getFlags()
getFlags in class FSA
|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||