FSM Module
Detailed Description
Finite state machine libraries generally fall into two categories. The first category deals with
static FSMs whose states and inputs are determined at compile time. These FSMs give you optimal runtime speed at the cost of functional reusability (e.g., a stopwatch FSM must be a stopwatch FSM and nothing else) and often much longer compile times. The second category deals with
dynamic FSMs that sacrifice a hopefully negligible amount of runtime speed in order to gain maximum functional reuse (e.g., you can use an underlying FSM for parsing a single sentence using several different left-linear grammars) and often much shorter compile times.
Several good libraries already exist for creating static FSMs. Swiss GD Knife gives you the ability to create dynamic FSMs.