Ragel compiles finite state machines from regular languages into C, C++, Objective-C, D, Java, or Ruby code. It allows the programmer to embed actions at any point in a regular language, and to control non-determinism in the resulting machines. It understands concatenation, union, kleene star, subtraction, intersection, epsilon transitions, and various other common operators. It also supports the construction of scanners and the building of state machines using state charts. It can be used to create very fast recognizers and parsers that are also robust.
License: GNU General Public License (GPL)
Changes:
The "write eof" directive was removed in favor of a new execution variable that marks the end of file. The entering, leaving, and error embedding operators were reverted back to the 3.X semantics. The "ragel" program now executes the appropriate backend program. The guarded concatenation operators were strengthened. The tokstart and tokend variables where shortened to ts and te. Many more improvements were made.
More...