Как реализовать регулярное выражение NFA с символьными диапазонами?
Когда вы читаете такие сообщения, какРегекс: НФА и Томпсоналгоритм все выглядит довольно просто, пока вы не поймете, что в реальной жизни вам нужны не только прямые символы, такие как "7" или "б", но также:
[A-Z]
[^_]
.
а именно классы символов (или диапазоны). И, таким образом, мой вопрос - как построить NFA, используя диапазоны символов? Использование метасимволов типа "не ","что-нибудь еще" а потом вычислять перекрывающиеся диапазоны? Это привело бы к использованию древовидной структуры при использовании конечного автомата, а не только таблицы.
Обновить: пожалуйста, примите нетривиальный размер (>>256) алфавит.
Я спрашиваю о NFA, но позже я хотел бы также преобразовать NFA в DFA.