From 971ab9ba21f2e2e9d1113b06e7b59c990657927a Mon Sep 17 00:00:00 2001 From: greg Date: Wed, 30 Dec 2015 21:14:23 -0800 Subject: [PATCH] Implement paren expressions --- src/parser.rs | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/parser.rs b/src/parser.rs index d0f7ec4..7527126 100644 --- a/src/parser.rs +++ b/src/parser.rs @@ -145,8 +145,20 @@ impl Parser { } fn factor(&mut self) -> ParseResult { - let n = try!(self.expect_num_literal()); - Ok(AST::Number(n)) + use tokenizer::Token::*; + match self.lookahead() { + Some(LParen) => { + self.next(); + let expr = try!(self.expr()); + try!(self.expect(RParen)); + Ok(expr) + }, + Some(NumLiteral(n)) => { + self.next(); + Ok(AST::Number(n)) + }, + _ => Err(ParseError { err: format!("Expected LParen or NumLiteral") }) + } } }