mirror of
https://github.com/VectorCamp/vectorscan.git
synced 2025-06-28 16:41:01 +03:00
determinisation: cleanups, remove shrinkStateSet
This commit is contained in:
parent
c17085ba35
commit
725de51f89
@ -379,7 +379,9 @@ public:
|
|||||||
NFAVertex v = sq.first;
|
NFAVertex v = sq.first;
|
||||||
u32 vert_id = graph[v].index;
|
u32 vert_id = graph[v].index;
|
||||||
squash.set(vert_id);
|
squash.set(vert_id);
|
||||||
squash_mask[vert_id] = shrinkStateSet(sq.second);
|
squash_mask[vert_id]
|
||||||
|
= Automaton_Traits::copy_states(std::move(sq.second),
|
||||||
|
numStates);
|
||||||
}
|
}
|
||||||
|
|
||||||
cr_by_index = populateCR(graph, v_by_index, alpha);
|
cr_by_index = populateCR(graph, v_by_index, alpha);
|
||||||
@ -387,21 +389,11 @@ public:
|
|||||||
dynamic_bitset<> temp(numStates);
|
dynamic_bitset<> temp(numStates);
|
||||||
markToppableStarts(graph, unused, single_trigger, triggers,
|
markToppableStarts(graph, unused, single_trigger, triggers,
|
||||||
&temp);
|
&temp);
|
||||||
toppable = Automaton_Traits::copy_states(temp, numStates);
|
toppable = Automaton_Traits::copy_states(std::move(temp),
|
||||||
|
numStates);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
|
||||||
// Convert an NFAStateSet (as used by the squash code) into a StateSet
|
|
||||||
StateSet shrinkStateSet(const NFAStateSet &in) const {
|
|
||||||
StateSet out = Automaton_Traits::init_states(numStates);
|
|
||||||
for (size_t i = in.find_first(); i != in.npos && i < out.size();
|
|
||||||
i = in.find_next(i)) {
|
|
||||||
out.set(i);
|
|
||||||
}
|
|
||||||
return out;
|
|
||||||
}
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
void transition(const StateSet &in, StateSet *next) {
|
void transition(const StateSet &in, StateSet *next) {
|
||||||
transition_graph(*this, v_by_index, in, next);
|
transition_graph(*this, v_by_index, in, next);
|
||||||
@ -475,7 +467,7 @@ struct Big_Traits {
|
|||||||
return StateSet(num);
|
return StateSet(num);
|
||||||
}
|
}
|
||||||
|
|
||||||
static StateSet copy_states(const dynamic_bitset<> &in, UNUSED u32 num) {
|
static StateSet copy_states(dynamic_bitset<> in, UNUSED u32 num) {
|
||||||
assert(in.size() == num);
|
assert(in.size() == num);
|
||||||
return in;
|
return in;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user