Ragel

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
Ragel
Тип компилятор конечных автоматов
Разработчик Adrian Thurston[1]
Написана на C++[2]
Операционные системы Unix-like, Windows
Последняя версия 6.10 (2017-03-24)
Репозиторий github.com/adrian-thurst…
Лицензия GNU General Public License
Сайт complang.org/ragel/
Логотип Викисклада Медиафайлы на Викискладе

Ragel — компилятор конечных автоматов, производящий исходный код на C, C++, C#, Objective-C, D, Java, OCaml, Go и Ruby[3].

Особенности[править | править код]

Исходным текстом конечного автомата для Ragel служит расширенный язык регулярных выражений[4] и/или диаграмма состояний конечного автомата. Ragel хорошо подходит для построения лексических анализаторов и спецификации протоколов передачи данных[5].

Ragel позволяет внедрять в любой точке выполнения автомата определяемые пользователем действия. С целью разрешения недетерминизма предусмотрена система приоритетов для операторов регулярного языка.

Ragel поддерживает визуализацию генерируемого автомата с помощью graphviz.

Примеры применения[править | править код]

Зед Шоу[en] использовал Ragel для своего веб-сервера Mongrel при написании высокопроизводительного анализатора пользовательских HTTP-запросов[6].

См. также[править | править код]

Примечания[править | править код]

  1. Dr. Adrian D. Thurston Архивная копия от 24 декабря 2013 на Wayback Machine at complang.org Last changed: Jul 14, 2013
  2. The ragel Open Source Project on Open Hub: Languages Page — 2006.
  3. Adrian D. Thurston. «Parsing Computer Languages with an Automaton Compiled from a Single Regular Expression. Архивировано 7 сентября 2012 года.» 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.
  4. Liqun Chen, Chris J. Mitchell, Andrew Martin (2009) Trusted Computing: Second International Conference, Trust 2009 Oxford, UK, April 6-8, 2009, Proceedings. p. 111
  5. В. С. Гуров, М. А. Мазин, А. А. Шалыто. Текстовый язык автоматного программирования // Научно-технический вестник СПбГУ ИТМО. — 2008. — Вып. 53. — С. 258—263. Архивировано 20 августа 2018 года.
  6. Ragel State Charts (англ.). Zed A. Shaw[en]. Дата обращения: 12 марта 2016. Архивировано из оригинала 10 марта 2016 года.

Ссылки[править | править код]