Ragel | |
---|---|
Tipo de | compilador de máquinas de estado |
Desarrollador | Adrián Thurston [1] |
Escrito en | C++ [2] |
Sistema operativo | Similar a Unix , Windows |
ultima versión | 6.10 (2017-03-24) |
Licencia | Licencia Pública General GNU |
Sitio web | complang.org/ragel/ |
Archivos multimedia en Wikimedia Commons |
Ragel es un compilador de máquinas de estado que produce código fuente en C , C++ , C# , Objective-C , D , Java , OCaml , Go y Ruby [3] .
El código fuente de la máquina de estado de Ragel es un lenguaje de expresión regular extendido [4] y/o un diagrama de estado de máquina de estado . Ragel es muy adecuado para construir analizadores léxicos y especificar protocolos de transferencia de datos [5] .
Ragel le permite inyectar acciones definidas por el usuario en cualquier punto de la ejecución de un autómata. Para resolver el no determinismo, se proporciona un sistema de prioridad para los operadores de lenguaje regular.
Ragel admite la visualización del autómata generado utilizando graphviz .
Zed Shaw usó Ragel para su servidor web Mongrel al escribir un analizador de solicitudes personalizadas HTTP de alto rendimiento [6] .