pub trait NonTerminal: Copy {
fn is_auto_generated(&self) -> bool {
self.nonterm_type().is_some()
}
fn is_augmented(&self) -> bool {
self.nonterm_type() == Some(NonTerminalType::Augmented)
}
fn is_trace(&self) -> bool;
fn nonterm_type(&self) -> Option<NonTerminalType>;
fn as_str(&self) -> &'static str;
fn to_usize(&self) -> usize;
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum NonTerminalType {
Star,
PlusLeft,
PlusRight,
Optional,
Augmented,
Error,
TerminalSet,
Lookahead,
Group,
LiteralString,
}