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:
Scanners now ensure that any leaving actions at
the end of a pattern are executed. They are always
executed before the pattern action. The -d option
for turning off the removal of duplicate actions
from actions lists was added.