https://docs.python.org/3/reference/expressions.html#yield-expressions
(&mut self)
| 2812 | |
| 2813 | // https://docs.python.org/3/reference/expressions.html#yield-expressions |
| 2814 | fn parse_yield_expression(&mut self) -> Result<Expression, ParsingError> { |
| 2815 | let yield_node = self.start_node(); |
| 2816 | self.expect(Kind::Yield)?; |
| 2817 | |
| 2818 | if self.eat(Kind::From) { |
| 2819 | let value = self.parse_expression()?; |
| 2820 | return Ok(Expression::YieldFrom(Box::new(YieldFrom { |
| 2821 | node: self.finish_node(yield_node), |
| 2822 | value, |
| 2823 | }))); |
| 2824 | } |
| 2825 | if self.at(Kind::NewLine) || self.at(Kind::Eof) { |
| 2826 | return Ok(Expression::Yield(Box::new(Yield { |
| 2827 | node: self.finish_node(yield_node), |
| 2828 | value: None, |
| 2829 | }))); |
| 2830 | } |
| 2831 | let value = match self.parse_expression_list() { |
| 2832 | Ok(expr) => Some(expr), |
| 2833 | _ => None, |
| 2834 | }; |
| 2835 | Ok(Expression::Yield(Box::new(Yield { |
| 2836 | node: self.finish_node(yield_node), |
| 2837 | value, |
| 2838 | }))) |
| 2839 | } |
| 2840 | |
| 2841 | // https://docs.python.org/3/reference/expressions.html#expression-lists |
| 2842 | fn parse_expression_list(&mut self) -> Result<Expression, ParsingError> { |
no test coverage detected