MCPcopy Create free account
hub / github.com/astral-sh/ruff / parse_lhs_expression

Method parse_lhs_expression

crates/ruff_python_parser/src/parser/expression.rs:346–364  ·  view source on GitHub ↗

Parses the left-hand side of an expression. This includes prefix expressions such as unary operators, boolean `not`, `await`, `lambda`. It also parses atoms and postfix expressions. The given [`OperatorPrecedence`] is used to determine if the parsed expression is valid in that context. For example, a unary operator is not valid in an `await` expression in which case the `left_precedence` would b

(
        &mut self,
        left_precedence: OperatorPrecedence,
        context: ExpressionContext,
    )

Source from the content-addressed store, hash-verified

344 /// in an `await` expression in which case the `left_precedence` would
345 /// be [`OperatorPrecedence::Await`].
346 fn parse_lhs_expression(
347 &mut self,
348 left_precedence: OperatorPrecedence,
349 context: ExpressionContext,
350 ) -> ParsedExpr {
351 let token = self.current_token_kind();
352 if !Self::token_starts_recursive_lhs(token) {
353 return self.parse_lhs_expression_inner(left_precedence, context, token);
354 }
355
356 if let Some(result) = self.with_recursion(|parser| {
357 parser.parse_lhs_expression_inner(left_precedence, context, token)
358 }) {
359 result
360 } else {
361 self.report_recursion_limit_exceeded(self.current_token_range());
362 self.recursion_recovery_expr()
363 }
364 }
365
366 /// Returns whether parsing an expression that starts with `token` can
367 /// immediately recurse through another expression parse.

Callers 1

Calls 6

current_token_kindMethod · 0.80
with_recursionMethod · 0.80
current_token_rangeMethod · 0.80

Tested by

no test coverage detected