[−][src]Macro nifty::make_dfa
macro_rules! make_dfa { ( states {$( $state:expr ),*} accept{$( $accept:expr ),*} dead{$( $dead:expr ),*} goal{$( $goal:expr ),*} start{ $start:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} accept{$( $accept:expr ),*} dead{$( $dead:expr ),*} start{ $start:expr } goal{$( $goal:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} accept{$( $accept:expr ),*} goal{$( $goal:expr ),*} dead{$( $dead:expr ),*} start{ $start:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} accept{$( $accept:expr ),*} goal{$( $goal:expr ),*} start{ $start:expr } dead{$( $dead:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} accept{$( $accept:expr ),*} start{ $start:expr } dead{$( $dead:expr ),*} goal{$( $goal:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} accept{$( $accept:expr ),*} start{ $start:expr } goal{$( $goal:expr ),*} dead{$( $dead:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} dead{$( $dead:expr ),*} accept{$( $accept:expr ),*} start{ $start:expr } goal{$( $goal:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} dead{$( $dead:expr ),*} accept{$( $accept:expr ),*} goal{$( $goal:expr ),*} start{ $start:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} dead{$( $dead:expr ),*} goal{$( $goal:expr ),*} start{ $start:expr } accept{$( $accept:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} dead{$( $dead:expr ),*} goal{$( $goal:expr ),*} accept{$( $accept:expr ),*} start{ $start:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} dead{$( $dead:expr ),*} start{ $start:expr } goal{$( $goal:expr ),*} accept{$( $accept:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} dead{$( $dead:expr ),*} start{ $start:expr } accept{$( $accept:expr ),*} goal{$( $goal:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} goal{$( $goal:expr ),*} accept{$( $accept:expr ),*} dead{$( $dead:expr ),*} start{ $start:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} goal{$( $goal:expr ),*} accept{$( $accept:expr ),*} start{ $start:expr } dead{$( $dead:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} goal{$( $goal:expr ),*} dead{$( $dead:expr ),*} accept{$( $accept:expr ),*} start{ $start:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} goal{$( $goal:expr ),*} dead{$( $dead:expr ),*} start{ $start:expr } accept{$( $accept:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} goal{$( $goal:expr ),*} start{ $start:expr } accept{$( $accept:expr ),*} dead{$( $dead:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} goal{$( $goal:expr ),*} start{ $start:expr } dead{$( $dead:expr ),*} accept{$( $accept:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} start{ $start:expr } accept{$( $accept:expr ),*} goal{$( $goal:expr ),*} dead{$( $dead:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} start{ $start:expr } accept{$( $accept:expr ),*} dead{$( $dead:expr ),*} goal{$( $goal:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} start{ $start:expr } dead{$( $dead:expr ),*} goal{$( $goal:expr ),*} accept{$( $accept:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} start{ $start:expr } dead{$( $dead:expr ),*} accept{$( $accept:expr ),*} goal{$( $goal:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} start{ $start:expr } goal{$( $goal:expr ),*} dead{$( $dead:expr ),*} accept{$( $accept:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} start{ $start:expr } goal{$( $goal:expr ),*} accept{$( $accept:expr ),*} dead{$( $dead:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} goal{$( $goal:expr ),*} start{ $start:expr } accept{$( $accept:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} goal{$( $goal:expr ),*} start{ $start:expr } dead{$( $dead:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} goal{$( $goal:expr ),*} dead{$( $dead:expr ),*} accept{$( $accept:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} goal{$( $goal:expr ),*} dead{$( $dead:expr ),*} start{ $start:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} goal{$( $goal:expr ),*} accept{$( $accept:expr ),*} start{ $start:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} goal{$( $goal:expr ),*} accept{$( $accept:expr ),*} dead{$( $dead:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} accept{$( $accept:expr ),*} start{ $start:expr } goal{$( $goal:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} accept{$( $accept:expr ),*} start{ $start:expr } dead{$( $dead:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} accept{$( $accept:expr ),*} goal{$( $goal:expr ),*} dead{$( $dead:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} accept{$( $accept:expr ),*} goal{$( $goal:expr ),*} start{ $start:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} accept{$( $accept:expr ),*} dead{$( $dead:expr ),*} goal{$( $goal:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} accept{$( $accept:expr ),*} dead{$( $dead:expr ),*} start{ $start:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} start{ $start:expr } dead{$( $dead:expr ),*} accept{$( $accept:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} start{ $start:expr } dead{$( $dead:expr ),*} goal{$( $goal:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} start{ $start:expr } goal{$( $goal:expr ),*} dead{$( $dead:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} start{ $start:expr } goal{$( $goal:expr ),*} accept{$( $accept:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} start{ $start:expr } accept{$( $accept:expr ),*} goal{$( $goal:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} start{ $start:expr } accept{$( $accept:expr ),*} dead{$( $dead:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} dead{$( $dead:expr ),*} goal{$( $goal:expr ),*} accept{$( $accept:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} dead{$( $dead:expr ),*} goal{$( $goal:expr ),*} start{ $start:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} dead{$( $dead:expr ),*} start{ $start:expr } goal{$( $goal:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} dead{$( $dead:expr ),*} start{ $start:expr } accept{$( $accept:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} dead{$( $dead:expr ),*} accept{$( $accept:expr ),*} start{ $start:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} dead{$( $dead:expr ),*} accept{$( $accept:expr ),*} goal{$( $goal:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} start{ $start:expr } dead{$( $dead:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} start{ $start:expr } goal{$( $goal:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} start{ $start:expr } accept{$( $accept:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} dead{$( $dead:expr ),*} accept{$( $accept:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} dead{$( $dead:expr ),*} goal{$( $goal:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} dead{$( $dead:expr ),*} start{ $start:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} goal{$( $goal:expr ),*} dead{$( $dead:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} goal{$( $goal:expr ),*} accept{$( $accept:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} goal{$( $goal:expr ),*} start{ $start:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} accept{$( $accept:expr ),*} start{ $start:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} accept{$( $accept:expr ),*} goal{$( $goal:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} accept{$( $accept:expr ),*} dead{$( $dead:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} start{ $start:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} goal{$( $goal:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} dead{$( $dead:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} accept{$( $accept:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} accept{$( $accept:expr ),*} dead{$( $dead:expr ),*} goal{$( $goal:expr ),*} start{ $start:expr } recognizes { $description:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} accept{$( $accept:expr ),*} dead{$( $dead:expr ),*} start{ $start:expr } goal{$( $goal:expr ),*} recognizes { $description:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} accept{$( $accept:expr ),*} goal{$( $goal:expr ),*} dead{$( $dead:expr ),*} start{ $start:expr } recognizes { $description:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} accept{$( $accept:expr ),*} goal{$( $goal:expr ),*} start{ $start:expr } dead{$( $dead:expr ),*} recognizes { $description:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} accept{$( $accept:expr ),*} start{ $start:expr } dead{$( $dead:expr ),*} goal{$( $goal:expr ),*} recognizes { $description:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} accept{$( $accept:expr ),*} start{ $start:expr } goal{$( $goal:expr ),*} dead{$( $dead:expr ),*} recognizes { $description:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} dead{$( $dead:expr ),*} accept{$( $accept:expr ),*} start{ $start:expr } goal{$( $goal:expr ),*} recognizes { $description:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} dead{$( $dead:expr ),*} accept{$( $accept:expr ),*} goal{$( $goal:expr ),*} start{ $start:expr } recognizes { $description:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} dead{$( $dead:expr ),*} goal{$( $goal:expr ),*} start{ $start:expr } accept{$( $accept:expr ),*} recognizes { $description:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} dead{$( $dead:expr ),*} goal{$( $goal:expr ),*} accept{$( $accept:expr ),*} start{ $start:expr } recognizes { $description:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} dead{$( $dead:expr ),*} start{ $start:expr } goal{$( $goal:expr ),*} accept{$( $accept:expr ),*} recognizes { $description:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} dead{$( $dead:expr ),*} start{ $start:expr } accept{$( $accept:expr ),*} goal{$( $goal:expr ),*} recognizes { $description:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} goal{$( $goal:expr ),*} accept{$( $accept:expr ),*} dead{$( $dead:expr ),*} start{ $start:expr } recognizes { $description:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} goal{$( $goal:expr ),*} accept{$( $accept:expr ),*} start{ $start:expr } dead{$( $dead:expr ),*} recognizes { $description:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} goal{$( $goal:expr ),*} dead{$( $dead:expr ),*} accept{$( $accept:expr ),*} start{ $start:expr } recognizes { $description:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} goal{$( $goal:expr ),*} dead{$( $dead:expr ),*} start{ $start:expr } accept{$( $accept:expr ),*} recognizes { $description:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} goal{$( $goal:expr ),*} start{ $start:expr } accept{$( $accept:expr ),*} dead{$( $dead:expr ),*} recognizes { $description:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} goal{$( $goal:expr ),*} start{ $start:expr } dead{$( $dead:expr ),*} accept{$( $accept:expr ),*} recognizes { $description:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} start{ $start:expr } accept{$( $accept:expr ),*} goal{$( $goal:expr ),*} dead{$( $dead:expr ),*} recognizes { $description:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} start{ $start:expr } accept{$( $accept:expr ),*} dead{$( $dead:expr ),*} goal{$( $goal:expr ),*} recognizes { $description:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} start{ $start:expr } dead{$( $dead:expr ),*} goal{$( $goal:expr ),*} accept{$( $accept:expr ),*} recognizes { $description:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} start{ $start:expr } dead{$( $dead:expr ),*} accept{$( $accept:expr ),*} goal{$( $goal:expr ),*} recognizes { $description:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} start{ $start:expr } goal{$( $goal:expr ),*} dead{$( $dead:expr ),*} accept{$( $accept:expr ),*} recognizes { $description:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} start{ $start:expr } goal{$( $goal:expr ),*} accept{$( $accept:expr ),*} dead{$( $dead:expr ),*} recognizes { $description:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} goal{$( $goal:expr ),*} start{ $start:expr } accept{$( $accept:expr ),*} recognizes { $description:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} goal{$( $goal:expr ),*} start{ $start:expr } dead{$( $dead:expr ),*} recognizes { $description:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} goal{$( $goal:expr ),*} dead{$( $dead:expr ),*} accept{$( $accept:expr ),*} recognizes { $description:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} goal{$( $goal:expr ),*} dead{$( $dead:expr ),*} start{ $start:expr } recognizes { $description:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} goal{$( $goal:expr ),*} accept{$( $accept:expr ),*} start{ $start:expr } recognizes { $description:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} goal{$( $goal:expr ),*} accept{$( $accept:expr ),*} dead{$( $dead:expr ),*} recognizes { $description:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} accept{$( $accept:expr ),*} start{ $start:expr } goal{$( $goal:expr ),*} recognizes { $description:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} accept{$( $accept:expr ),*} start{ $start:expr } dead{$( $dead:expr ),*} recognizes { $description:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} accept{$( $accept:expr ),*} goal{$( $goal:expr ),*} dead{$( $dead:expr ),*} recognizes { $description:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} accept{$( $accept:expr ),*} goal{$( $goal:expr ),*} start{ $start:expr } recognizes { $description:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} accept{$( $accept:expr ),*} dead{$( $dead:expr ),*} goal{$( $goal:expr ),*} recognizes { $description:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} accept{$( $accept:expr ),*} dead{$( $dead:expr ),*} start{ $start:expr } recognizes { $description:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} start{ $start:expr } dead{$( $dead:expr ),*} accept{$( $accept:expr ),*} recognizes { $description:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} start{ $start:expr } dead{$( $dead:expr ),*} goal{$( $goal:expr ),*} recognizes { $description:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} start{ $start:expr } goal{$( $goal:expr ),*} dead{$( $dead:expr ),*} recognizes { $description:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} start{ $start:expr } goal{$( $goal:expr ),*} accept{$( $accept:expr ),*} recognizes { $description:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} start{ $start:expr } accept{$( $accept:expr ),*} goal{$( $goal:expr ),*} recognizes { $description:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} start{ $start:expr } accept{$( $accept:expr ),*} dead{$( $dead:expr ),*} recognizes { $description:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} dead{$( $dead:expr ),*} goal{$( $goal:expr ),*} accept{$( $accept:expr ),*} recognizes { $description:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} dead{$( $dead:expr ),*} goal{$( $goal:expr ),*} start{ $start:expr } recognizes { $description:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} dead{$( $dead:expr ),*} start{ $start:expr } goal{$( $goal:expr ),*} recognizes { $description:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} dead{$( $dead:expr ),*} start{ $start:expr } accept{$( $accept:expr ),*} recognizes { $description:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} dead{$( $dead:expr ),*} accept{$( $accept:expr ),*} start{ $start:expr } recognizes { $description:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} dead{$( $dead:expr ),*} accept{$( $accept:expr ),*} goal{$( $goal:expr ),*} recognizes { $description:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} start{ $start:expr } dead{$( $dead:expr ),*} recognizes { $description:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} start{ $start:expr } goal{$( $goal:expr ),*} recognizes { $description:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} start{ $start:expr } accept{$( $accept:expr ),*} recognizes { $description:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} dead{$( $dead:expr ),*} accept{$( $accept:expr ),*} recognizes { $description:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} dead{$( $dead:expr ),*} goal{$( $goal:expr ),*} recognizes { $description:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} dead{$( $dead:expr ),*} start{ $start:expr } recognizes { $description:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} goal{$( $goal:expr ),*} dead{$( $dead:expr ),*} recognizes { $description:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} goal{$( $goal:expr ),*} accept{$( $accept:expr ),*} recognizes { $description:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} goal{$( $goal:expr ),*} start{ $start:expr } recognizes { $description:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} accept{$( $accept:expr ),*} start{ $start:expr } recognizes { $description:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} accept{$( $accept:expr ),*} goal{$( $goal:expr ),*} recognizes { $description:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} accept{$( $accept:expr ),*} dead{$( $dead:expr ),*} recognizes { $description:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} start{ $start:expr } recognizes { $description:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} goal{$( $goal:expr ),*} recognizes { $description:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} dead{$( $dead:expr ),*} recognizes { $description:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} accept{$( $accept:expr ),*} recognizes { $description:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} recognizes { $description:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} accept{$( $accept:expr ),*} dead{$( $dead:expr ),*} goal{$( $goal:expr ),*} start{ $start:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} accept{$( $accept:expr ),*} dead{$( $dead:expr ),*} start{ $start:expr } goal{$( $goal:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} accept{$( $accept:expr ),*} goal{$( $goal:expr ),*} dead{$( $dead:expr ),*} start{ $start:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} accept{$( $accept:expr ),*} goal{$( $goal:expr ),*} start{ $start:expr } dead{$( $dead:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} accept{$( $accept:expr ),*} start{ $start:expr } dead{$( $dead:expr ),*} goal{$( $goal:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} accept{$( $accept:expr ),*} start{ $start:expr } goal{$( $goal:expr ),*} dead{$( $dead:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} dead{$( $dead:expr ),*} accept{$( $accept:expr ),*} start{ $start:expr } goal{$( $goal:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} dead{$( $dead:expr ),*} accept{$( $accept:expr ),*} goal{$( $goal:expr ),*} start{ $start:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} dead{$( $dead:expr ),*} goal{$( $goal:expr ),*} start{ $start:expr } accept{$( $accept:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} dead{$( $dead:expr ),*} goal{$( $goal:expr ),*} accept{$( $accept:expr ),*} start{ $start:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} dead{$( $dead:expr ),*} start{ $start:expr } goal{$( $goal:expr ),*} accept{$( $accept:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} dead{$( $dead:expr ),*} start{ $start:expr } accept{$( $accept:expr ),*} goal{$( $goal:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} goal{$( $goal:expr ),*} accept{$( $accept:expr ),*} dead{$( $dead:expr ),*} start{ $start:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} goal{$( $goal:expr ),*} accept{$( $accept:expr ),*} start{ $start:expr } dead{$( $dead:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} goal{$( $goal:expr ),*} dead{$( $dead:expr ),*} accept{$( $accept:expr ),*} start{ $start:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} goal{$( $goal:expr ),*} dead{$( $dead:expr ),*} start{ $start:expr } accept{$( $accept:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} goal{$( $goal:expr ),*} start{ $start:expr } accept{$( $accept:expr ),*} dead{$( $dead:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} goal{$( $goal:expr ),*} start{ $start:expr } dead{$( $dead:expr ),*} accept{$( $accept:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} start{ $start:expr } accept{$( $accept:expr ),*} goal{$( $goal:expr ),*} dead{$( $dead:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} start{ $start:expr } accept{$( $accept:expr ),*} dead{$( $dead:expr ),*} goal{$( $goal:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} start{ $start:expr } dead{$( $dead:expr ),*} goal{$( $goal:expr ),*} accept{$( $accept:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} start{ $start:expr } dead{$( $dead:expr ),*} accept{$( $accept:expr ),*} goal{$( $goal:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} start{ $start:expr } goal{$( $goal:expr ),*} dead{$( $dead:expr ),*} accept{$( $accept:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} start{ $start:expr } goal{$( $goal:expr ),*} accept{$( $accept:expr ),*} dead{$( $dead:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} goal{$( $goal:expr ),*} start{ $start:expr } accept{$( $accept:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} goal{$( $goal:expr ),*} start{ $start:expr } dead{$( $dead:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} goal{$( $goal:expr ),*} dead{$( $dead:expr ),*} accept{$( $accept:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} goal{$( $goal:expr ),*} dead{$( $dead:expr ),*} start{ $start:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} goal{$( $goal:expr ),*} accept{$( $accept:expr ),*} start{ $start:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} goal{$( $goal:expr ),*} accept{$( $accept:expr ),*} dead{$( $dead:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} accept{$( $accept:expr ),*} start{ $start:expr } goal{$( $goal:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} accept{$( $accept:expr ),*} start{ $start:expr } dead{$( $dead:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} accept{$( $accept:expr ),*} goal{$( $goal:expr ),*} dead{$( $dead:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} accept{$( $accept:expr ),*} goal{$( $goal:expr ),*} start{ $start:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} accept{$( $accept:expr ),*} dead{$( $dead:expr ),*} goal{$( $goal:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} accept{$( $accept:expr ),*} dead{$( $dead:expr ),*} start{ $start:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} start{ $start:expr } dead{$( $dead:expr ),*} accept{$( $accept:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} start{ $start:expr } dead{$( $dead:expr ),*} goal{$( $goal:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} start{ $start:expr } goal{$( $goal:expr ),*} dead{$( $dead:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} start{ $start:expr } goal{$( $goal:expr ),*} accept{$( $accept:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} start{ $start:expr } accept{$( $accept:expr ),*} goal{$( $goal:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} start{ $start:expr } accept{$( $accept:expr ),*} dead{$( $dead:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} dead{$( $dead:expr ),*} goal{$( $goal:expr ),*} accept{$( $accept:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} dead{$( $dead:expr ),*} goal{$( $goal:expr ),*} start{ $start:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} dead{$( $dead:expr ),*} start{ $start:expr } goal{$( $goal:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} dead{$( $dead:expr ),*} start{ $start:expr } accept{$( $accept:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} dead{$( $dead:expr ),*} accept{$( $accept:expr ),*} start{ $start:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} dead{$( $dead:expr ),*} accept{$( $accept:expr ),*} goal{$( $goal:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} start{ $start:expr } dead{$( $dead:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} start{ $start:expr } goal{$( $goal:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} start{ $start:expr } accept{$( $accept:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} dead{$( $dead:expr ),*} accept{$( $accept:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} dead{$( $dead:expr ),*} goal{$( $goal:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} dead{$( $dead:expr ),*} start{ $start:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} goal{$( $goal:expr ),*} dead{$( $dead:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} goal{$( $goal:expr ),*} accept{$( $accept:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} goal{$( $goal:expr ),*} start{ $start:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} accept{$( $accept:expr ),*} start{ $start:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} accept{$( $accept:expr ),*} goal{$( $goal:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} accept{$( $accept:expr ),*} dead{$( $dead:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} start{ $start:expr } transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} goal{$( $goal:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} dead{$( $dead:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} accept{$( $accept:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} transitions {$( d($from:expr, $edge:expr) = $to:expr )*} ) => { ... }; ( states {$( $state:expr ),*} accept{$( $accept:expr ),*} dead{$( $dead:expr ),*} goal{$( $goal:expr ),*} start{ $start:expr } recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} accept{$( $accept:expr ),*} dead{$( $dead:expr ),*} start{ $start:expr } goal{$( $goal:expr ),*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} accept{$( $accept:expr ),*} goal{$( $goal:expr ),*} dead{$( $dead:expr ),*} start{ $start:expr } recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} accept{$( $accept:expr ),*} goal{$( $goal:expr ),*} start{ $start:expr } dead{$( $dead:expr ),*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} accept{$( $accept:expr ),*} start{ $start:expr } dead{$( $dead:expr ),*} goal{$( $goal:expr ),*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} accept{$( $accept:expr ),*} start{ $start:expr } goal{$( $goal:expr ),*} dead{$( $dead:expr ),*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} dead{$( $dead:expr ),*} accept{$( $accept:expr ),*} start{ $start:expr } goal{$( $goal:expr ),*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} dead{$( $dead:expr ),*} accept{$( $accept:expr ),*} goal{$( $goal:expr ),*} start{ $start:expr } recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} dead{$( $dead:expr ),*} goal{$( $goal:expr ),*} start{ $start:expr } accept{$( $accept:expr ),*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} dead{$( $dead:expr ),*} goal{$( $goal:expr ),*} accept{$( $accept:expr ),*} start{ $start:expr } recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} dead{$( $dead:expr ),*} start{ $start:expr } goal{$( $goal:expr ),*} accept{$( $accept:expr ),*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} dead{$( $dead:expr ),*} start{ $start:expr } accept{$( $accept:expr ),*} goal{$( $goal:expr ),*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} goal{$( $goal:expr ),*} accept{$( $accept:expr ),*} dead{$( $dead:expr ),*} start{ $start:expr } recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} goal{$( $goal:expr ),*} accept{$( $accept:expr ),*} start{ $start:expr } dead{$( $dead:expr ),*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} goal{$( $goal:expr ),*} dead{$( $dead:expr ),*} accept{$( $accept:expr ),*} start{ $start:expr } recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} goal{$( $goal:expr ),*} dead{$( $dead:expr ),*} start{ $start:expr } accept{$( $accept:expr ),*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} goal{$( $goal:expr ),*} start{ $start:expr } accept{$( $accept:expr ),*} dead{$( $dead:expr ),*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} goal{$( $goal:expr ),*} start{ $start:expr } dead{$( $dead:expr ),*} accept{$( $accept:expr ),*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} start{ $start:expr } accept{$( $accept:expr ),*} goal{$( $goal:expr ),*} dead{$( $dead:expr ),*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} start{ $start:expr } accept{$( $accept:expr ),*} dead{$( $dead:expr ),*} goal{$( $goal:expr ),*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} start{ $start:expr } dead{$( $dead:expr ),*} goal{$( $goal:expr ),*} accept{$( $accept:expr ),*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} start{ $start:expr } dead{$( $dead:expr ),*} accept{$( $accept:expr ),*} goal{$( $goal:expr ),*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} start{ $start:expr } goal{$( $goal:expr ),*} dead{$( $dead:expr ),*} accept{$( $accept:expr ),*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} start{ $start:expr } goal{$( $goal:expr ),*} accept{$( $accept:expr ),*} dead{$( $dead:expr ),*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} goal{$( $goal:expr ),*} start{ $start:expr } accept{$( $accept:expr ),*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} goal{$( $goal:expr ),*} start{ $start:expr } dead{$( $dead:expr ),*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} goal{$( $goal:expr ),*} dead{$( $dead:expr ),*} accept{$( $accept:expr ),*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} goal{$( $goal:expr ),*} dead{$( $dead:expr ),*} start{ $start:expr } recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} goal{$( $goal:expr ),*} accept{$( $accept:expr ),*} start{ $start:expr } recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} goal{$( $goal:expr ),*} accept{$( $accept:expr ),*} dead{$( $dead:expr ),*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} accept{$( $accept:expr ),*} start{ $start:expr } goal{$( $goal:expr ),*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} accept{$( $accept:expr ),*} start{ $start:expr } dead{$( $dead:expr ),*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} accept{$( $accept:expr ),*} goal{$( $goal:expr ),*} dead{$( $dead:expr ),*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} accept{$( $accept:expr ),*} goal{$( $goal:expr ),*} start{ $start:expr } recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} accept{$( $accept:expr ),*} dead{$( $dead:expr ),*} goal{$( $goal:expr ),*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} accept{$( $accept:expr ),*} dead{$( $dead:expr ),*} start{ $start:expr } recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} start{ $start:expr } dead{$( $dead:expr ),*} accept{$( $accept:expr ),*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} start{ $start:expr } dead{$( $dead:expr ),*} goal{$( $goal:expr ),*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} start{ $start:expr } goal{$( $goal:expr ),*} dead{$( $dead:expr ),*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} start{ $start:expr } goal{$( $goal:expr ),*} accept{$( $accept:expr ),*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} start{ $start:expr } accept{$( $accept:expr ),*} goal{$( $goal:expr ),*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} start{ $start:expr } accept{$( $accept:expr ),*} dead{$( $dead:expr ),*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} dead{$( $dead:expr ),*} goal{$( $goal:expr ),*} accept{$( $accept:expr ),*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} dead{$( $dead:expr ),*} goal{$( $goal:expr ),*} start{ $start:expr } recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} dead{$( $dead:expr ),*} start{ $start:expr } goal{$( $goal:expr ),*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} dead{$( $dead:expr ),*} start{ $start:expr } accept{$( $accept:expr ),*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} dead{$( $dead:expr ),*} accept{$( $accept:expr ),*} start{ $start:expr } recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} dead{$( $dead:expr ),*} accept{$( $accept:expr ),*} goal{$( $goal:expr ),*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} start{ $start:expr } dead{$( $dead:expr ),*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} start{ $start:expr } goal{$( $goal:expr ),*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} start{ $start:expr } accept{$( $accept:expr ),*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} dead{$( $dead:expr ),*} accept{$( $accept:expr ),*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} dead{$( $dead:expr ),*} goal{$( $goal:expr ),*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} dead{$( $dead:expr ),*} start{ $start:expr } recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} goal{$( $goal:expr ),*} dead{$( $dead:expr ),*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} goal{$( $goal:expr ),*} accept{$( $accept:expr ),*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} goal{$( $goal:expr ),*} start{ $start:expr } recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} accept{$( $accept:expr ),*} start{ $start:expr } recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} accept{$( $accept:expr ),*} goal{$( $goal:expr ),*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} accept{$( $accept:expr ),*} dead{$( $dead:expr ),*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} start{ $start:expr } recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} goal{$( $goal:expr ),*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} dead{$( $dead:expr ),*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} accept{$( $accept:expr ),*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} recognizes { $description:expr } ) => { ... }; ( states {$( $state:expr ),*} accept{$( $accept:expr ),*} dead{$( $dead:expr ),*} goal{$( $goal:expr ),*} start{ $start:expr } ) => { ... }; ( states {$( $state:expr ),*} accept{$( $accept:expr ),*} dead{$( $dead:expr ),*} start{ $start:expr } goal{$( $goal:expr ),*} ) => { ... }; ( states {$( $state:expr ),*} accept{$( $accept:expr ),*} goal{$( $goal:expr ),*} dead{$( $dead:expr ),*} start{ $start:expr } ) => { ... }; ( states {$( $state:expr ),*} accept{$( $accept:expr ),*} goal{$( $goal:expr ),*} start{ $start:expr } dead{$( $dead:expr ),*} ) => { ... }; ( states {$( $state:expr ),*} accept{$( $accept:expr ),*} start{ $start:expr } dead{$( $dead:expr ),*} goal{$( $goal:expr ),*} ) => { ... }; ( states {$( $state:expr ),*} accept{$( $accept:expr ),*} start{ $start:expr } goal{$( $goal:expr ),*} dead{$( $dead:expr ),*} ) => { ... }; ( states {$( $state:expr ),*} dead{$( $dead:expr ),*} accept{$( $accept:expr ),*} start{ $start:expr } goal{$( $goal:expr ),*} ) => { ... }; ( states {$( $state:expr ),*} dead{$( $dead:expr ),*} accept{$( $accept:expr ),*} goal{$( $goal:expr ),*} start{ $start:expr } ) => { ... }; ( states {$( $state:expr ),*} dead{$( $dead:expr ),*} goal{$( $goal:expr ),*} start{ $start:expr } accept{$( $accept:expr ),*} ) => { ... }; ( states {$( $state:expr ),*} dead{$( $dead:expr ),*} goal{$( $goal:expr ),*} accept{$( $accept:expr ),*} start{ $start:expr } ) => { ... }; ( states {$( $state:expr ),*} dead{$( $dead:expr ),*} start{ $start:expr } goal{$( $goal:expr ),*} accept{$( $accept:expr ),*} ) => { ... }; ( states {$( $state:expr ),*} dead{$( $dead:expr ),*} start{ $start:expr } accept{$( $accept:expr ),*} goal{$( $goal:expr ),*} ) => { ... }; ( states {$( $state:expr ),*} goal{$( $goal:expr ),*} accept{$( $accept:expr ),*} dead{$( $dead:expr ),*} start{ $start:expr } ) => { ... }; ( states {$( $state:expr ),*} goal{$( $goal:expr ),*} accept{$( $accept:expr ),*} start{ $start:expr } dead{$( $dead:expr ),*} ) => { ... }; ( states {$( $state:expr ),*} goal{$( $goal:expr ),*} dead{$( $dead:expr ),*} accept{$( $accept:expr ),*} start{ $start:expr } ) => { ... }; ( states {$( $state:expr ),*} goal{$( $goal:expr ),*} dead{$( $dead:expr ),*} start{ $start:expr } accept{$( $accept:expr ),*} ) => { ... }; ( states {$( $state:expr ),*} goal{$( $goal:expr ),*} start{ $start:expr } accept{$( $accept:expr ),*} dead{$( $dead:expr ),*} ) => { ... }; ( states {$( $state:expr ),*} goal{$( $goal:expr ),*} start{ $start:expr } dead{$( $dead:expr ),*} accept{$( $accept:expr ),*} ) => { ... }; ( states {$( $state:expr ),*} start{ $start:expr } accept{$( $accept:expr ),*} goal{$( $goal:expr ),*} dead{$( $dead:expr ),*} ) => { ... }; ( states {$( $state:expr ),*} start{ $start:expr } accept{$( $accept:expr ),*} dead{$( $dead:expr ),*} goal{$( $goal:expr ),*} ) => { ... }; ( states {$( $state:expr ),*} start{ $start:expr } dead{$( $dead:expr ),*} goal{$( $goal:expr ),*} accept{$( $accept:expr ),*} ) => { ... }; ( states {$( $state:expr ),*} start{ $start:expr } dead{$( $dead:expr ),*} accept{$( $accept:expr ),*} goal{$( $goal:expr ),*} ) => { ... }; ( states {$( $state:expr ),*} start{ $start:expr } goal{$( $goal:expr ),*} dead{$( $dead:expr ),*} accept{$( $accept:expr ),*} ) => { ... }; ( states {$( $state:expr ),*} start{ $start:expr } goal{$( $goal:expr ),*} accept{$( $accept:expr ),*} dead{$( $dead:expr ),*} ) => { ... }; ( states {$( $state:expr ),*} goal{$( $goal:expr ),*} start{ $start:expr } accept{$( $accept:expr ),*} ) => { ... }; ( states {$( $state:expr ),*} goal{$( $goal:expr ),*} start{ $start:expr } dead{$( $dead:expr ),*} ) => { ... }; ( states {$( $state:expr ),*} goal{$( $goal:expr ),*} dead{$( $dead:expr ),*} accept{$( $accept:expr ),*} ) => { ... }; ( states {$( $state:expr ),*} goal{$( $goal:expr ),*} dead{$( $dead:expr ),*} start{ $start:expr } ) => { ... }; ( states {$( $state:expr ),*} goal{$( $goal:expr ),*} accept{$( $accept:expr ),*} start{ $start:expr } ) => { ... }; ( states {$( $state:expr ),*} goal{$( $goal:expr ),*} accept{$( $accept:expr ),*} dead{$( $dead:expr ),*} ) => { ... }; ( states {$( $state:expr ),*} accept{$( $accept:expr ),*} start{ $start:expr } goal{$( $goal:expr ),*} ) => { ... }; ( states {$( $state:expr ),*} accept{$( $accept:expr ),*} start{ $start:expr } dead{$( $dead:expr ),*} ) => { ... }; ( states {$( $state:expr ),*} accept{$( $accept:expr ),*} goal{$( $goal:expr ),*} dead{$( $dead:expr ),*} ) => { ... }; ( states {$( $state:expr ),*} accept{$( $accept:expr ),*} goal{$( $goal:expr ),*} start{ $start:expr } ) => { ... }; ( states {$( $state:expr ),*} accept{$( $accept:expr ),*} dead{$( $dead:expr ),*} goal{$( $goal:expr ),*} ) => { ... }; ( states {$( $state:expr ),*} accept{$( $accept:expr ),*} dead{$( $dead:expr ),*} start{ $start:expr } ) => { ... }; ( states {$( $state:expr ),*} start{ $start:expr } dead{$( $dead:expr ),*} accept{$( $accept:expr ),*} ) => { ... }; ( states {$( $state:expr ),*} start{ $start:expr } dead{$( $dead:expr ),*} goal{$( $goal:expr ),*} ) => { ... }; ( states {$( $state:expr ),*} start{ $start:expr } goal{$( $goal:expr ),*} dead{$( $dead:expr ),*} ) => { ... }; ( states {$( $state:expr ),*} start{ $start:expr } goal{$( $goal:expr ),*} accept{$( $accept:expr ),*} ) => { ... }; ( states {$( $state:expr ),*} start{ $start:expr } accept{$( $accept:expr ),*} goal{$( $goal:expr ),*} ) => { ... }; ( states {$( $state:expr ),*} start{ $start:expr } accept{$( $accept:expr ),*} dead{$( $dead:expr ),*} ) => { ... }; ( states {$( $state:expr ),*} dead{$( $dead:expr ),*} goal{$( $goal:expr ),*} accept{$( $accept:expr ),*} ) => { ... }; ( states {$( $state:expr ),*} dead{$( $dead:expr ),*} goal{$( $goal:expr ),*} start{ $start:expr } ) => { ... }; ( states {$( $state:expr ),*} dead{$( $dead:expr ),*} start{ $start:expr } goal{$( $goal:expr ),*} ) => { ... }; ( states {$( $state:expr ),*} dead{$( $dead:expr ),*} start{ $start:expr } accept{$( $accept:expr ),*} ) => { ... }; ( states {$( $state:expr ),*} dead{$( $dead:expr ),*} accept{$( $accept:expr ),*} start{ $start:expr } ) => { ... }; ( states {$( $state:expr ),*} dead{$( $dead:expr ),*} accept{$( $accept:expr ),*} goal{$( $goal:expr ),*} ) => { ... }; ( states {$( $state:expr ),*} start{ $start:expr } dead{$( $dead:expr ),*} ) => { ... }; ( states {$( $state:expr ),*} start{ $start:expr } goal{$( $goal:expr ),*} ) => { ... }; ( states {$( $state:expr ),*} start{ $start:expr } accept{$( $accept:expr ),*} ) => { ... }; ( states {$( $state:expr ),*} dead{$( $dead:expr ),*} accept{$( $accept:expr ),*} ) => { ... }; ( states {$( $state:expr ),*} dead{$( $dead:expr ),*} goal{$( $goal:expr ),*} ) => { ... }; ( states {$( $state:expr ),*} dead{$( $dead:expr ),*} start{ $start:expr } ) => { ... }; ( states {$( $state:expr ),*} goal{$( $goal:expr ),*} dead{$( $dead:expr ),*} ) => { ... }; ( states {$( $state:expr ),*} goal{$( $goal:expr ),*} accept{$( $accept:expr ),*} ) => { ... }; ( states {$( $state:expr ),*} goal{$( $goal:expr ),*} start{ $start:expr } ) => { ... }; ( states {$( $state:expr ),*} accept{$( $accept:expr ),*} start{ $start:expr } ) => { ... }; ( states {$( $state:expr ),*} accept{$( $accept:expr ),*} goal{$( $goal:expr ),*} ) => { ... }; ( states {$( $state:expr ),*} accept{$( $accept:expr ),*} dead{$( $dead:expr ),*} ) => { ... }; ( states {$( $state:expr ),*} start{ $start:expr } ) => { ... }; ( states {$( $state:expr ),*} goal{$( $goal:expr ),*} ) => { ... }; ( states {$( $state:expr ),*} dead{$( $dead:expr ),*} ) => { ... }; ( states {$( $state:expr ),*} accept{$( $accept:expr ),*} ) => { ... }; ( states {$( $state:expr ),*} ) => { ... }; }
Creates a DFA using the DFABuilder.
make_dfa!
must takestates{...}
first.make_dfa!
may take any ofstart{...}
,accept{...}
,dead{...}
,goal{...}
in any order.make_dfa!
may take any oftransitions{...}
,recognizes{...}
in any order.
Example
Code
use nifty::make_dfa; let q0 = "Seen { }"; let q1 = "Seen { b }"; let q2 = "Seen { ba }"; let q3 = "Seen { bab }"; let mut dfa = make_dfa! { states { q0, q1, q2, q3 } start { q0 } goal { q3 } transitions { d(q0, 'a') = q0 d(q1, 'a') = q2 d(q2, 'a') = q0 d(q0, 'b') = q1 d(q1, 'b') = q1 d(q2, 'b') = q3 } recognizes { "contains { bab }" } };