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

Method parse_atom

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

Parses an atom. See:

(&mut self, context: ExpressionContext)

Source from the content-addressed store, hash-verified

646 ///
647 /// See: <https://docs.python.org/3/reference/expressions.html#atoms>
648 fn parse_atom(&mut self, context: ExpressionContext) -> ParsedExpr {
649 let start = self.node_start();
650
651 let lhs = match self.current_token_kind() {
652 TokenKind::Float => {
653 let value = self.bump_float();
654
655 Expr::NumberLiteral(ast::ExprNumberLiteral {
656 value: Number::Float(value),
657 range: self.node_range(start),
658 node_index: AtomicNodeIndex::NONE,
659 })
660 }
661 TokenKind::Complex => {
662 let (real, imag) = self.bump_complex();
663 Expr::NumberLiteral(ast::ExprNumberLiteral {
664 value: Number::Complex { real, imag },
665 range: self.node_range(start),
666 node_index: AtomicNodeIndex::NONE,
667 })
668 }
669 TokenKind::Int => {
670 let value = self.bump_int();
671 Expr::NumberLiteral(ast::ExprNumberLiteral {
672 value: Number::Int(value),
673 range: self.node_range(start),
674 node_index: AtomicNodeIndex::NONE,
675 })
676 }
677 TokenKind::True => {
678 self.bump(TokenKind::True);
679 Expr::BooleanLiteral(ast::ExprBooleanLiteral {
680 value: true,
681 range: self.node_range(start),
682 node_index: AtomicNodeIndex::NONE,
683 })
684 }
685 TokenKind::False => {
686 self.bump(TokenKind::False);
687 Expr::BooleanLiteral(ast::ExprBooleanLiteral {
688 value: false,
689 range: self.node_range(start),
690 node_index: AtomicNodeIndex::NONE,
691 })
692 }
693 TokenKind::None => {
694 self.bump(TokenKind::None);
695 Expr::NoneLiteral(ast::ExprNoneLiteral {
696 range: self.node_range(start),
697 node_index: AtomicNodeIndex::NONE,
698 })
699 }
700 TokenKind::Ellipsis => {
701 self.bump(TokenKind::Ellipsis);
702 Expr::EllipsisLiteral(ast::ExprEllipsisLiteral {
703 range: self.node_range(start),
704 node_index: AtomicNodeIndex::NONE,
705 })

Callers 1

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