Я реализовал простой Scanner-Generator, который работает правильно во всех ситуациях.
Это не проблема кода, а вопрос о том, как оптимизировать DFA. Минимизация для одного принимающего узла с использованием алгоритма Хопкрофта и принимающих узлов для принятия одного и того же правила работала хорошо, но алгоритм не сводил к минимуму DFA с несколькими разными принимающими узлами.
Например, если вы создаете DFA, который принимает два «if», «[a-z] [a-z0-9] *», а затем запускаете алгоритм Хопкрофта, уникальный узел принятия исчезает. Конечно, каждый узел с самого начала был сгруппирован в разные группы.
Я хотел бы знать, как минимизировать этот тип DFA.
Я хотел бы, чтобы вы ответили, даже если нет способа решить эти проблемы минимизации.
Мой код: https://github.com/rollrat/compiler-compiler