INTERFACENFAState ; IMPORT NFA; IMPORT Word; CONST Brand = "NFAState"; TYPE T <: REFANY;
An NFAState.T represents a collection of NFANode.T's which are the nodes occupied after an input sequence
Targets = REF ARRAY CHAR OF T;
Don't forget to call NFA.AssignIDs(a) before calling New
PROCEDURE New(a: NFA.T): T; (* the start state *)
PROCEDURE Step(s: T; key: CHAR; VAR keyEnd: CHAR): T;
(* copy and advance to the next state.
same results will apply up to key=keyEnd. *)
PROCEDURE Steps(s: T): Targets; (* low-performance version of Step.
Some elements in the returned array can be NIL, signifying Dead *)
PROCEDURE Dead(s: T): BOOLEAN; (* Are there no more transitions to be made? *)
PROCEDURE Output(s: T): INTEGER; (* lowest output from last step, or
0 if none *)
PROCEDURE Equal(s, t: T): BOOLEAN;
PROCEDURE Hash(s: T): Word.T;
PROCEDURE Test(a: NFA.T);
PROCEDURE Format(s: T): TEXT;
END NFAState.