В то время как Ragel основан на регулярных выражениях, это не генератор регулярных выражений FSM. Он позволяет рекурсии с использованием дополнительного синтаксиса call/return, а также других функций, которые позволяют анализировать нерегулярные языки. Поэтому, в то время как Ragel создает FSM, он позволяет создавать несколько разных FSM и предоставляет механизмы для перехода между ними в произвольных точках или с использованием специального синтаксиса машинного перехода. Он также позволяет выполнять произвольный код при переходах состояний.
Другое, что делает Ragel уникальным в том, что он онлайн. Другими словами, его легко использовать для сканирования данных из асинхронного источника, такого как неблокирующий сокет. Он также не использует динамические ресурсы, за исключением того, что для call/return вы можете использовать статическую, автоматическую или динамическую память для стека; как вы хотите.Там нет глобального государства.
Ragel является уникальным. В отличие от большинства (всех?) Традиционных генераторов, это было сделано для сетевого программирования.
«новой для Worl d компиляторов "Добро пожаловать. – umlcat