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:
Ruby code generation was expanded to include more code styles. Two new statements, prepush and postpop, were added. These allow a dynamically resizable stack to be implemented.