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

Method parse_expression

parser/src/parser/parser.rs:2002–2025  ·  view source on GitHub ↗

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

(&mut self)

Source from the content-addressed store, hash-verified

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

Calls 10

TupleClass · 0.85
LambdaClass · 0.85
start_nodeMethod · 0.80
atMethod · 0.80
bump_anyMethod · 0.80
finish_nodeMethod · 0.80
eatMethod · 0.80
expectMethod · 0.80
parse_parametersMethod · 0.80

Tested by

no test coverage detected