Я отвечаю на этот старый вопрос на тот случай, если кто-то еще посмотрит на него.
Преобразование DFA в PDA можно легко автоматизировать, просто добавив стек. Но могут быть возможные изменения в семантике DFA, и после того, как вы измените его таким образом вручную, вы можете оказаться в КПК с меньшим количеством состояний. Я столкнулся с этой проблемой недавно. Это примерно так,
В системе (не компилятор или что-то в этом роде) код, написанный ранее, был написан с использованием DFA по некоторым причинам. Переходы происходят по мере прохождения пользователем кода через различные функции. Через некоторое время появился новый набор функций переходов, который можно использовать в любом порядке. а также состояние после того, как любая из этих новых функций может вернуться в предыдущее состояние с помощью одной из этих функций. Единственный способ решить эту проблему с помощью FST - добавить большое количество новых состояний для поддержки этого поведения, что требует огромного количества работы. Но вместо этого я просто перешел с DFA на КПК. Стек отслеживает переходы очень хорошо, и проблема решается с гораздо меньшим количеством состояний. На самом деле мне нужно было только добавить N количество состояний, где N - количество новых функций, которые поступили.
Я не знаю, может ли кто-нибудь легко автоматизировать этот процесс. Но вот, пожалуйста, на всякий случай, если кому-то это интересно.