Ragel compiles executable finite state machines from regular
languages. Ragel targets C, C++, Objective-C, D, Java and Ruby.
Ragel state machines can not only recognize byte sequences as regular
expression machines do, but can also execute code at arbitrary points
in the recognition of a regular language. Code embedding is done using
inline operators that do not disrupt the regular language syntax.
NOTE: before building this it's recommended to remove any previous
version you might have installed.