From a2668659a130310863f53be30e0526cbcd7601ba Mon Sep 17 00:00:00 2001 From: Mahmoud Abumandour Date: Wed, 1 Nov 2023 11:48:00 -0700 Subject: [PATCH] Parser: Don't use an Option unnecessarily in parse_expression_internal --- src/syntax_analysis/parser.rs | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/src/syntax_analysis/parser.rs b/src/syntax_analysis/parser.rs index 63a90e1..c52437d 100644 --- a/src/syntax_analysis/parser.rs +++ b/src/syntax_analysis/parser.rs @@ -243,15 +243,15 @@ impl Parser { if self.is_assignment() { return self.parse_assignment_expression(); } - let mut left = None; + let mut left: Expression; let unary_op_precedence = unary_operator_precedence(&self.current().token_type); if unary_op_precedence != 0 && unary_op_precedence >= parent_precedence { - left = Some(Expression::Unary( + left = Expression::Unary( self.consume().clone(), Box::new(self.parse_expression_internal(unary_op_precedence)), - )); + ); } else { - left = Some(self.parse_primary_expression()); + left = self.parse_primary_expression(); } loop { let operator_token = self.current().clone(); @@ -264,13 +264,9 @@ impl Parser { } self.advance(); let right = self.parse_expression_internal(operator_precedence); - left = Some(Expression::Binary( - operator_token, - Box::new(left.unwrap()), - Box::new(right), - )) + left = Expression::Binary(operator_token, Box::new(left), Box::new(right)); } - left.unwrap() + left } fn parse_parenthesized_expression(&mut self) -> Expression {