MCPcopy Create free account
hub / github.com/Glyphack/enderpy / parse_yield_expression

Method parse_yield_expression

parser/src/parser/parser.rs:2814–2839  ·  view source on GitHub ↗

https://docs.python.org/3/reference/expressions.html#yield-expressions

(&mut self)

Source from the content-addressed store, hash-verified

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> {

Callers 4

parse_atomMethod · 0.80

Calls 9

YieldFromClass · 0.85
YieldClass · 0.85
start_nodeMethod · 0.80
expectMethod · 0.80
eatMethod · 0.80
parse_expressionMethod · 0.80
finish_nodeMethod · 0.80
atMethod · 0.80
parse_expression_listMethod · 0.80

Tested by

no test coverage detected