use crate::token::Token;
pub enum AST {
Node(Token),
Con(Token, Vec<AST>),
}
impl core::fmt::Display for AST {
fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
match self {
AST::Node(token) => write!(f, " {}", token),
AST::Con(head, rest) => {
write!(f, "({}", head)?;
for node in rest {
write!(f, "{}", node)?;
}
write!(f, ")")
}
}
}
}