Проблема Проблема, которую я пытаюсь решить is-- У меня есть приложение python, которое принимает вход пользователя различными способами и создает события на основе этих входов. Я хочу, чтобы мы использовали конечный конечный автомат для обработки переходов состояний и в настоящее время имеем график конечного автомата, представленный в самом коде python.Представление конечного состояния машины в Python Application Logic
Вот то, что я пытался до сих пор, реализуя эквивалент большого заявления переключателя в питоне, например:
if input == 0 and prev_state == 1:
cur_state = 3
elif input == 1 and prev_state == 2:
cur_state = 4
Это неуклюжее и подвержены ошибкам, поэтому я хотел бы, чтобы переместить это определение графика этого вне кода python и в отдельный файл, который использует что-то вроде BNF или аналогично, чтобы упростить управление графом конечной машины.
ФШМ файл график может выглядеть следующим образом:
current_state == 1 and input == 2 -> next_state = 0
код питон может выглядеть примерно так (псевдопользователей):
fms = MyFsm("my_graph.txt")
while(True):
input = console.get_input()
current_state = fsm.transition(previous_state, input)
Мой вопрос: как я могу представить конечный конечный автомат в python без использования команд if/elif?
Может ли кто-нибудь объяснить объяснения? Хотелось бы узнать здесь, и downvotes не дают мне многого, чтобы пойти ... –
* «любые существующие библиотеки python ... есть ли какие-либо существующие простые методы нотации, вы бы порекомендовали» * - запросы для нас, чтобы найти или рекомендовать инструменты любых видов вне темы здесь, на SO. – jonrsharpe
Вопросы, предлагающие нам рекомендовать или находить книгу, инструмент, библиотеку программного обеспечения, учебное пособие или другие ресурсы за пределами сайта, не относятся к теме для переполнения стека, поскольку они, как правило, привлекают упрямые ответы и спам. Вместо этого опишите проблему и то, что было сделано до сих пор, чтобы ее решить. – Selcuk