pub type Grammar<S = String> = Grammar<Pat<S>>;
pub struct Grammar<S = String> { /* private fields */ }