Я учусь использовать машины с конечным числом состояний для некоторых задач, но у меня возникают проблемы с навигацией по моей таблице состояний и выполнением функций, чтобы сделать ее полезной системой.
Рассмотрим мой конечный автомат:
конечный автомат http://upload.wikimedia.org/wikipedia/en/3/30/Automata_that_prints_the_first_word_of_each_line.png
Пояснение:
* = Печатать символ на стандартный вывод
N = '\ n'
S = ''
A = aA-zZ
Код, с которого я начал с Программирование на основе автоматов в Википедии работает для такой простой машины, но я хочу изменить его, чтобы иметь более надежную таблицу переходов состояний и вызывать функции, основанные на эти состояния.
Я опубликовал рабочий базовый код в Pastebin вместе с стилем таблицы переходов, который я хочу использовать .
Ранее я не использовал указатели на функции, поэтому я не уверен, как писать функции перехода на основе данных, полученных process_event
. В конце концов я хотел бы иметь шаблон, который позволял бы мне иметь функции ввода / вывода и перехода / выхода, чтобы я мог писать более сложные пользовательские меню и даже алгоритмы программирования гораздо более эффективно.