[][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.

  1. make_dfa! must take states{...} first.
  2. make_dfa! may take any of start{...}, accept{...}, dead{...}, goal{...} in any order.
  3. make_dfa! may take any of transitions{...}, 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 }"
    }
};