aboutsummaryrefslogtreecommitdiff
path: root/src/lisp/parse.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/lisp/parse.rs')
-rw-r--r--src/lisp/parse.rs55
1 files changed, 27 insertions, 28 deletions
diff --git a/src/lisp/parse.rs b/src/lisp/parse.rs
index 13a9eff..89a272a 100644
--- a/src/lisp/parse.rs
+++ b/src/lisp/parse.rs
@@ -49,7 +49,7 @@ impl<'lex> Parser<'lex> {
49 let mut stack = Vec::new(); 49 let mut stack = Vec::new();
50 let mut total_backticks = 0; 50 let mut total_backticks = 0;
51 loop { 51 loop {
52 let (span, token) = self.next()?; 52 let (_, token) = self.next()?;
53 let r: Result<LispExpr, LispError> = match token { 53 let r: Result<LispExpr, LispError> = match token {
54 Token::LeftParen => { 54 Token::LeftParen => {
55 stack.push(Group::Parens(Vec::new())); 55 stack.push(Group::Parens(Vec::new()));
@@ -212,33 +212,32 @@ mod tests {
212 } 212 }
213 213
214 #[test] 214 #[test]
215 fn parse_lisp_expr() { 215 // fn parse_lisp_expr() {
216 assert_eq!( 216 // assert_eq!(
217 parse("1.5").unwrap(), 217 // parse("1.5").unwrap(),
218 LispExpr::Number(LispNumber::Float(1.5)) 218 // LispExpr::Number(LispNumber::Float(1.5))
219 ); 219 // );
220 220
221 assert_eq!( 221 // assert_eq!(
222 parse(r#""hello""#).unwrap(), 222 // parse(r#""hello""#).unwrap(),
223 LispExpr::StringLit(r#""hello""#.into()) 223 // LispExpr::StringLit(r#""hello""#.into())
224 ); 224 // );
225 225
226 assert_eq!(parse("foo").unwrap(), LispExpr::Ident("foo".into())); 226 // assert_eq!(parse("foo").unwrap(), LispExpr::Ident("foo".into()));
227 227
228 let items = (1..=5) 228 // let items = (1..=5)
229 .map(LispNumber::Integer) 229 // .map(LispNumber::Integer)
230 .map(LispExpr::Number) 230 // .map(LispExpr::Number)
231 .collect::<Vec<_>>(); 231 // .collect::<Vec<_>>();
232 assert_eq!(parse("(1 2 3 4 5)").unwrap(), LispExpr::List(items)); 232 // assert_eq!(parse("(1 2 3 4 5)").unwrap(), LispExpr::List(items));
233 233
234 let foo = LispExpr::Ident("foo".into()); 234 // let foo = LispExpr::Ident("foo".into());
235 let bar = LispExpr::Comma(Box::new(LispExpr::Ident("bar".into())), 1); 235 // let bar = LispExpr::Comma(Box::new(LispExpr::Ident("bar".into())), 1);
236 assert_eq!( 236 // assert_eq!(
237 parse("`(foo ,bar)").unwrap(), 237 // parse("`(foo ,bar)").unwrap(),
238 LispExpr::Quasiquote(Box::new(LispExpr::List(vec![foo, bar])), 1) 238 // LispExpr::Quasiquote(Box::new(LispExpr::List(vec![foo, bar])), 1)
239 ) 239 // )
240 } 240 // }
241
242 #[should_panic] 241 #[should_panic]
243 #[test] 242 #[test]
244 fn unbalanced_comma() { 243 fn unbalanced_comma() {