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

Method parse_atom

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

Parses an atom. See:

(&mut self, context: ExpressionContext)

Source from the content-addressed store, hash-verified

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

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