2013-04-29 8 views
0

Я использую Ragel для оценки FSA, и мне нужно, чтобы сегмент кода запускался после каждой оценки символа на входе. Ragel имеет операторы, которые позволяют встраивать пользовательские действия в переходы и состояния; однако после некоторого тестирования кажется, что эти действия пользователя выполняются только при первом запуске машины в заданное состояние. Таким образом, если машина остается в одном состоянии по нескольким символам, никакие действия пользователя не будут выполняться. Есть ли способ запуска действия пользователя каждый раз, когда ragel обрабатывает входной символ?Вставить действие пользователя после обработки каждого символа в Ragel

ответ

0

Похоже, что «Все действия перехода» (раздел 3.1.3 руководства) - это то, что вам нужно.

main := (your machine) $YourAction; 

Например

main := (any* ('foo'|'bar') any*) ${printf ("char: %c\n", *p);};