Skip to content

Commit

Permalink
Parser: Don't use an Option unnecessarily in parse_expression_internal
Browse files Browse the repository at this point in the history
  • Loading branch information
i3abghany committed Nov 1, 2023
1 parent eb5894b commit a266865
Showing 1 changed file with 6 additions and 10 deletions.
16 changes: 6 additions & 10 deletions src/syntax_analysis/parser.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand All @@ -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 {
Expand Down

0 comments on commit a266865

Please sign in to comment.