
                      Ragel State Machine Compiler -- TODO
                      ====================================

-Possible to split a machine across many files. Need a notion of including
 other sources that have machines in them. This way common machine components
 can be shared.

-All options that are available on the command line should be settable from
 within the fsm specification. This would allow different fsms to be compiled
 differently from within the same source.

-Support an alphabet other than ascii characters, arbitrary structures and an
 arbitrary way of looking into the structure.

-Add more examples, add more tests and write more documentation.

-Remove static data from the parser.

-Sort states/transitions in compiled fsm according to locality to try to
 minimalize cache misses in resulting code.

-In table driven, move the indicies close to corresponding states, better
 locality, faster.

-Better compression of table driven fsms. Can put functions and states in the
 same array then a transitions can be variable size. After looking at the
 target state if the next num is in the function range then there is a
 function, otherwise it is part of the next transition.

-A debugger would be nice. Ragel could emit a special debug version that
 propted for debug commands that allowed the user to step through the machine
 and get details about where they are in their RL.

-Support goto state and other controls in action code. Target state can be any
 variable name used in the construction of the fsm.

-Goto driven machine that inlines each list of functions. Call it -G3.

-Support classes of final states. Would allow various error codes to be
 assigned to states. Would also allow 'branching' of paths through machines. A
 brank would be a path in the machine that does not lead to a final state used
 in further concatenation or star, but is not a dead end path. This would be
 useful for error handling and special cases that are not considered
 'accepting'.

-Exp machine generation.

-Don't generate any output if there are compile errors.
