| 899 | } |
| 900 | |
| 901 | State Next(const State& state, Char letter) const |
| 902 | { |
| 903 | State next; |
| 904 | next.reserve(20); |
| 905 | for (auto&& from : state) { |
| 906 | const auto& part = mFsm.Destinations(from, letter); |
| 907 | std::copy(part.begin(), part.end(), std::back_inserter(next)); |
| 908 | } |
| 909 | |
| 910 | std::sort(next.begin(), next.end()); |
| 911 | next.erase(std::unique(next.begin(), next.end()), next.end()); |
| 912 | PIRE_IFDEBUG(Cdbg << "Returning transition [" << Join(state.begin(), state.end(), ", ") << "] --" << letter |
| 913 | << "--> [" << Join(next.begin(), next.end(), ", ") << "]" << Endl); |
| 914 | return next; |
| 915 | } |
| 916 | |
| 917 | void AcceptStates(const TVector<State>& states) |
| 918 | { |