void move(Vector nfa_set,
SparseBitSet nfa_bit,
int b,
CBunch bunch) {
int size;
int index;
CNfa state;
bunch.m_nfa_set = null;
bunch.m_nfa_bit = null;
size = nfa_set.size();
for (index = 0; index < size; ++index)
{
state = (CNfa) nfa_set.elementAt(index);
if (b == state.m_edge
|| (CNfa.CCL == state.m_edge
&& true == state.m_set.contains(b)))
{
if (null == bunch.m_nfa_set)
{
if (CUtility.DEBUG)
{
CUtility.assert(null == bunch.m_nfa_bit);
}
bunch.m_nfa_set = new Vector();
/*bunch.m_nfa_bit
= new SparseBitSet(m_spec.m_nfa_states.size());*/
bunch.m_nfa_bit = new SparseBitSet();
}
bunch.m_nfa_set.addElement(state.m_next);
/*System.out.println("Size of bitset: " + bunch.m_nfa_bit.size());
System.out.println("Reference index: " + state.m_next.m_label);
System.out.flush();*/
bunch.m_nfa_bit.set(state.m_next.m_label);
}
}
if (null != bunch.m_nfa_set)
{
if (CUtility.DEBUG)
{
CUtility.assert(null != bunch.m_nfa_bit);
}
sortStates(bunch.m_nfa_set);
}
return;
}
Function: move
Description: Returns null if resulting NFA set is empty. |