ragel(1)
NAME
- rlcodegen - code generator for Ragel State Machine Compil
- er
SYNOPSIS
rlcodegen [options] file
DESCRIPTION
- Note: this is the backend component of Ragel. This program
- accepts a machine compiled by the frontend program ragel(1) and
- generates either code or a graphviz dot file.
OPTIONS
- -h, -H, -?, --help
- Display help and exit.
- -o file
- Write output to file. If -o is not given, a default
- file name is chosen by replacing the suffix of the input. For
- source files ending in .rh the suffix .h is used. For all other
- source files a suffix based on the output language is used (.c,
- .cpp, .m, .dot)
- -V Generate a Graphviz dotfile instead of code. By de
- fault this option writes the dotfile to standard output. The
- frontend options -M and -S can be used to specify a subset of the
- grammar to write.
- -p Print printable characters in Graphviz output.
- -T0 Generate a table driven FSM. This is the default
- code style. The table driven FSM represents the state machine as
- static data. There are tables of states, transitions, indicies
- and actions. The current state is stored in a variable. The exe
- cution is a loop that looks that given the current state and cur
- rent character to process looks up the transition to take using a
- binary search, executes any actions and moves to the target
- state. In general, the table driven FSM produces a smaller binary
- and requires a less expensive host language compile but results
- in slower running code. The table driven FSM is suitable for any
- FSM.
- -T1 Generate a faster table driven FSM by expanding ac
- tion lists in the action execute code.
- -F0 Generate a flat table driven FSM. Transitions are
- represented as an array indexed by the current alphabet charac
- ter. This eliminates the need for a binary search to locate tran
- sitions and produces faster code, however it is only suitable for
- small alphabets.
- -F1 Generate a faster flat table driven FSM by expand
- ing action lists in the action execute code.
- -G0 Generate a goto driven FSM. The goto driven FSM
- represents the state machine as a series of goto statements.
- While in the machine, the current state is stored by the proces
- sor's instruction pointer. The execution is a flat function where
- control is passed from state to state using gotos. In general,
- the goto FSM produces faster code but results in a larger binary
- and a more expensive host language compile.
- -G1 Generate a faster goto driven FSM by expanding ac
- tion lists in the action execute code.
- -G2 Generate a really fast goto driven FSM by embedding
- action lists in the state machine control code.
BUGS
- Ragel is still under development and has not yet matured.
- There are probably many bugs.
CREDITS
- Ragel was written by Adrian Thurston <thurston@cs.queen
- su.ca>. Objective-C output contributed by Eric Ocean. D output
- contributed by Alan West.
SEE ALSO
ragel(1), re2c(1), flex(1)
- Homepage: http://www.cs.queensu.ca/home/thurston/ragel/
- Ragel 5.14 October 2006