From 0f8e1d1726819cf36058475caa669a6f7edcc51a Mon Sep 17 00:00:00 2001 From: Alex van de Sandt Date: Sat, 18 May 2024 16:14:49 -0400 Subject: [PATCH] Simplify primary expr parsing --- src/parser.rs | 25 ++++++++++--------------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/src/parser.rs b/src/parser.rs index f9ba819..b481d47 100644 --- a/src/parser.rs +++ b/src/parser.rs @@ -127,24 +127,19 @@ impl Parser { #[tracing::instrument(name = "primary", skip_all)] fn parse_primary(&mut self) -> Result> { - let expr = if let Some(lit) = self.pop_if_map(|t| { - let lit = match t.kind { - TokenKind::StringLit { value: s } => Literal::string(s, t.span), - TokenKind::NumberLit { value: n } => Literal::number(n, t.span), - TokenKind::True => Literal::bool(true, t.span), - TokenKind::False => Literal::bool(false, t.span), - TokenKind::Nil => Literal::nil(t.span), - _ => return None, - }; - Some(lit) + if let Some(lit) = self.pop_if_map(|t| match t.kind { + TokenKind::StringLit { value: s } => Some(Literal::string(s, t.span)), + TokenKind::NumberLit { value: n } => Some(Literal::number(n, t.span)), + TokenKind::True => Some(Literal::bool(true, t.span)), + TokenKind::False => Some(Literal::bool(false, t.span)), + TokenKind::Nil => Some(Literal::nil(t.span)), + _ => None, }) { tracing::debug!(lit = ?&lit, span = ?lit.span(), "parsed literal"); - Expr::literal(lit) + Ok(Expr::literal(lit)) } else { - self.parse_grouping()? - }; - - Ok(expr) + self.parse_grouping() + } } #[tracing::instrument(name = "group", skip_all)] -- 2.51.2