mod error; mod parser; use std::rc::Rc; use crate::span::Spanned; pub use error::Error; pub use parser::Parser; #[cfg(test)] mod tests; #[derive(Clone, Debug, PartialEq)] pub enum Atom { Float(f64), Integer(i64), String(Rc), Symbol(Rc), Bool(bool), Nil, } #[derive(Clone, Debug, PartialEq)] pub enum Expr { Atom(Atom), List(Vec>), } #[derive(Clone, Debug, PartialEq)] pub struct Program(Vec>); impl Program { pub fn inner(&self) -> &[Spanned] { &self.0 } pub fn into_inner(self) -> Vec> { self.0 } }