pub(crate) fn epsilon_closure(
    nfa: &NFA,
    start_nfa_id: StateID,
    look_have: LookSet,
    stack: &mut Vec<StateID>,
    set: &mut SparseSet,
)Expand description
Compute the epsilon closure for the given NFA state. The epsilon closure
consists of all NFA state IDs, including start_nfa_id, that can be
reached from start_nfa_id without consuming any input. These state IDs
are written to set in the order they are visited, but only if they are
not already in set. start_nfa_id must be a valid state ID for the NFA
given.
look_have consists of the satisfied assertions at the current
position. For conditional look-around epsilon transitions, these are
only followed if they are satisfied by look_have.
stack must have length 0. It is used as scratch space for depth first
traversal. After returning, it is guaranteed that stack will have length
0.