Ragel — компилятор конечных автоматов, производящий исходный код на C, C++, C#, Objective-C, D, Java, OCaml, Go и RubyAdrian D. Thurston. «Parsing Computer Languages with an Automaton Compiled from a Single Regular Expression. » In: 11th International Conference on Implementation and Application of Automata (CIAA 2006), Lecture Notes in Computer Science, volume 4094, p. 285—286, Taipei, Taiwan, August 2006..
Особенности Исходным текстом конечного автомата для Ragel служит расширенный язык регулярных выраженийLiqun Chen, Chris J. Mitchell, Andrew Martin (2009) Trusted Computing: Second International Conference, Trust 2009 Oxford, UK, April 6-8, 2009, Proceedings. p. 111 и/или диаграмма состояний конечного автомата. Ragel хорошо подходит для построения лексических анализаторов и спецификации протоколов передачи данных.
Ragel позволяет внедрять в любой точке выполнения автомата определяемые пользователем действия. С целью разрешения недетерминизма предусмотрена система приоритетов для операторов регулярного языка.
Ragel поддерживает визуализацию генерируемого автомата с помощью graphviz.
Примеры применения использовал Ragel для своего веб-сервера Mongrel при написании высокопроизводительного анализатора пользовательских HTTP-запросов.
См. также
Конечный автомат Flex Lex Регулярные выражения
Примечания
Ссылки
Категория:Свободные компиляторы и интерпретаторы Категория:Генераторы синтаксических анализаторов Категория:Сопоставление с образцом