diff --git a/html_cover.png b/html_cover.png new file mode 100644 index 0000000..de27f94 Binary files /dev/null and b/html_cover.png differ diff --git a/src/parser/mod.rs b/src/parser/mod.rs index a2f7dca..52704b2 100644 --- a/src/parser/mod.rs +++ b/src/parser/mod.rs @@ -239,7 +239,7 @@ impl Parser { literal: String::from(&self.cur_token.literal), type_: self.cur_token.type_, }, - expression: self.parse_expression(Precedence::Lowest).unwrap(), + expression: self.parse_expression(Precedence::Lowest)?, }; if self.peek_token_is(TokenType::Semicolon) { diff --git a/src/repl/mod.rs b/src/repl/mod.rs index ba09512..5838570 100644 --- a/src/repl/mod.rs +++ b/src/repl/mod.rs @@ -3,7 +3,7 @@ use std::rc::Rc; use crate::evaluator; use crate::lexer::new; -use crate::object::Environment; +use crate::object::{Environment, ObjectType}; use crate::parser::Parser; use crate::parser::new_parser; @@ -30,8 +30,10 @@ pub fn start_repl() { for err in parser.errors() { eprintln!("ERROR: {}", err); } - if !evaluated.is_none() { - println!("{}", evaluated.unwrap().inspect()); + if let Some(obj) = evaluated { + if obj.object_type() != ObjectType::NULL { + println!("{}", obj.inspect()); + } } } }