.TP
.B \-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)
+replacing the file extenstion of the input file. 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, etc.).
.TP
.B \-s
Print some statistics on standard error.
Minimize after every operation.
.TP
.B \-x
-Run the frontend only: emit XML intermediate format.
+Compile the state machines and emit an XML representation of the host data and
+the machines.
.TP
.B \-V
Generate a dot file for Graphviz.
Display printable characters on labels.
.TP
.B \-S <spec>
-FSM specification to output
+FSM specification to output.
.TP
.B \-M <machine>
-Machine definition/instantiation to output
+Machine definition/instantiation to output.
.TP
.B \-C
The host language is C, C++, Obj-C or Obj-C++. This is the default host language option.
Inhibit writing of #line directives.
.TP
.B \-T0
-Table driven FSM (default).
+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 execution is a loop that looks that given the current state and current
+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.
.TP
.B \-T1
-Faster table driven FSM.
+Generate a faster table driven FSM by expanding action lists in the action
+execute code.
.TP
.B \-F0
-Flat table driven FSM.
+Generate a flat table driven FSM. Transitions are represented as an array
+indexed by the current alphabet character. This eliminates the need for a
+binary search to locate transitions and produces faster code, however it is
+only suitable for small alphabets.
.TP
.B \-F1
-Faster flat table-driven FSM.
+Generate a faster flat table driven FSM by expanding action lists in the action
+execute code.
.TP
.B \-G0
-Goto-driven FSM.
+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 processor'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.
.TP
.B \-G1
-Faster goto-driven FSM.
+Generate a faster goto driven FSM by expanding action lists in the action
+execute code.
.TP
.B \-G2
-Really fast goto-driven FSM.
+Generate a really fast goto driven FSM by embedding action lists in the state
+machine control code.
.TP
.B \-P<N>
N-Way Split really fast goto-driven FSM.
.TP
.I fbreak;
Save the current state and immediately break out of the machine.
-.SH BUGS
-Ragel is still under development and has not yet matured. There are probably
-many bugs.
.SH CREDITS
Ragel was written by Adrian Thurston <thurston@complang.org>. Objective-C
-output contributed by Erich Ocean. D output contributed by Alan West.
+output contributed by Erich Ocean. D output contributed by Alan West. Ruby
+output contributed by Victor Hugo Borja. C Sharp code generation contributed by
+Daniel Tang.
.SH "SEE ALSO"
-.BR rlgen-cd (1),
-.BR rlgen-dot (1),
-.BR rlgen-java (1),
.BR re2c (1),
.BR flex (1)
-Homepage: http://www.cs.queensu.ca/~thurston/ragel/
+Homepage: http://www.complang.org/ragel/