https://docs.python.org/3/reference/expressions.html#conditional-expressions
(&mut self)
| 2000 | |
| 2001 | // https://docs.python.org/3/reference/expressions.html#conditional-expressions |
| 2002 | fn parse_expression(&mut self) -> Result<Expression, ParsingError> { |
| 2003 | let node = self.start_node(); |
| 2004 | // This is a hack to make this function parse () as tuple |
| 2005 | if self.at(Kind::LeftParen) && matches!(self.peek_kind(), Ok(Kind::RightParen)) { |
| 2006 | self.bump_any(); |
| 2007 | self.bump_any(); |
| 2008 | return Ok(Expression::Tuple(Box::new(Tuple { |
| 2009 | node: self.finish_node(node), |
| 2010 | elements: vec![], |
| 2011 | }))); |
| 2012 | } |
| 2013 | if self.eat(Kind::Lambda) { |
| 2014 | let params_list = self.parse_parameters(true).expect("lambda params"); |
| 2015 | self.expect(Kind::Colon)?; |
| 2016 | let expr = self.parse_expression()?; |
| 2017 | |
| 2018 | return Ok(Expression::Lambda(Box::new(Lambda { |
| 2019 | node: self.finish_node(node), |
| 2020 | args: params_list, |
| 2021 | body: expr, |
| 2022 | }))); |
| 2023 | } |
| 2024 | self.parse_conditional_expression() |
| 2025 | } |
| 2026 | |
| 2027 | // https://docs.python.org/3/reference/expressions.html#boolean-operations |
| 2028 | fn parse_or_test(&mut self) -> Result<Expression, ParsingError> { |
no test coverage detected