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

Method parse_atom

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

Parses an atom. See:

(&mut self, context: ExpressionContext)

Source from the content-addressed store, hash-verified

581 ///
582 /// See: <https://docs.python.org/3/reference/expressions.html#atoms>
583 fn parse_atom(&mut self, context: ExpressionContext) -> ParsedExpr {
584 let start = self.node_start();
585
586 let lhs = match self.current_token_kind() {
587 TokenKind::Float => {
588 let value = self.bump_float();
589
590 Expr::NumberLiteral(ast::ExprNumberLiteral {
591 value: Number::Float(value),
592 range: self.node_range(start),
593 node_index: AtomicNodeIndex::NONE,
594 })
595 }
596 TokenKind::Complex => {
597 let (real, imag) = self.bump_complex();
598 Expr::NumberLiteral(ast::ExprNumberLiteral {
599 value: Number::Complex { real, imag },
600 range: self.node_range(start),
601 node_index: AtomicNodeIndex::NONE,
602 })
603 }
604 TokenKind::Int => {
605 let value = self.bump_int();
606 Expr::NumberLiteral(ast::ExprNumberLiteral {
607 value: Number::Int(value),
608 range: self.node_range(start),
609 node_index: AtomicNodeIndex::NONE,
610 })
611 }
612 TokenKind::True => {
613 self.bump(TokenKind::True);
614 Expr::BooleanLiteral(ast::ExprBooleanLiteral {
615 value: true,
616 range: self.node_range(start),
617 node_index: AtomicNodeIndex::NONE,
618 })
619 }
620 TokenKind::False => {
621 self.bump(TokenKind::False);
622 Expr::BooleanLiteral(ast::ExprBooleanLiteral {
623 value: false,
624 range: self.node_range(start),
625 node_index: AtomicNodeIndex::NONE,
626 })
627 }
628 TokenKind::None => {
629 self.bump(TokenKind::None);
630 Expr::NoneLiteral(ast::ExprNoneLiteral {
631 range: self.node_range(start),
632 node_index: AtomicNodeIndex::NONE,
633 })
634 }
635 TokenKind::Ellipsis => {
636 self.bump(TokenKind::Ellipsis);
637 Expr::EllipsisLiteral(ast::ExprEllipsisLiteral {
638 range: self.node_range(start),
639 node_index: AtomicNodeIndex::NONE,
640 })

Callers 1

parse_lhs_expressionMethod · 0.80

Calls 15

NameClass · 0.85
node_startMethod · 0.80
current_token_kindMethod · 0.80
bump_floatMethod · 0.80
node_rangeMethod · 0.80
bump_complexMethod · 0.80
bump_intMethod · 0.80
parse_nameMethod · 0.80
parse_stringsMethod · 0.80

Tested by

no test coverage detected