From 07432dabd3fbc7fcaaec01d50f4036868dca88dd Mon Sep 17 00:00:00 2001 From: Akshay Date: Sat, 20 Mar 2021 21:34:44 +0530 Subject: factor out types into expr.rs --- src/lisp/mod.rs | 43 +++---------------------------------------- 1 file changed, 3 insertions(+), 40 deletions(-) (limited to 'src/lisp/mod.rs') diff --git a/src/lisp/mod.rs b/src/lisp/mod.rs index 5d8965f..b863bba 100644 --- a/src/lisp/mod.rs +++ b/src/lisp/mod.rs @@ -1,46 +1,9 @@ -use std::fmt; - -use number::LispNumber; - mod error; +mod expr; mod lex; mod number; +mod parse; -#[derive(Debug, PartialEq)] -pub enum LispExpr { - Number(LispNumber), - List(Vec), - StringLit(String), - BoolLit(bool), - Ident(String), - Function(LispFunction), -} - -impl fmt::Display for LispExpr { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - match self { - LispExpr::Number(n) => write!(f, "{}", n)?, - LispExpr::List(l) => { - for expr in l.iter() { - write!(f, " {} ", expr)? - } - } - LispExpr::StringLit(s) => write!(f, "{:?}", s)?, - LispExpr::BoolLit(b) => { - if *b { - write!(f, "#t")? - } else { - write!(f, "#f")? - } - } - LispExpr::Ident(s) => write!(f, "{}", s)?, - LispExpr::Function(_) => write!(f, "<#procedure>")?, - }; - Ok(()) - } -} +use expr::LispExpr; pub type Environment = Vec<(String, LispExpr)>; - -#[derive(Debug, PartialEq)] -struct LispFunction {} -- cgit v1.2.3