#[derive(Clone, Debug, PartialEq, Eq)]
pub enum SExp {
List(Vec<SExp>, SExpBookendStyle),
Atom(String),
Null(SExpBookendStyle),
}
#[derive(Clone, Copy, PartialEq, Eq, Debug)]
pub enum SExpBookendStyle {
Parentheses,
SquareBrackets,
CurlyBraces,
}
impl SExpBookendStyle {
pub fn open_char(self) -> char {
match self {
Self::Parentheses => '(',
Self::SquareBrackets => '[',
Self::CurlyBraces => '{',
}
}
pub fn close_char(self) -> char {
match self {
Self::Parentheses => ')',
Self::SquareBrackets => ']',
Self::CurlyBraces => '}',
}
}
}