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

Method parse_string

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

Parses a single string, byte literal, f-string, or t-string.

(&mut self)

Source from the content-addressed store, hash-verified

1393
1394 /// Parses a single string, byte literal, f-string, or t-string.
1395 fn parse_string(&mut self) -> StringType {
1396 if self.at(TokenKind::String) {
1397 self.parse_string_or_byte_literal()
1398 } else if self.at(TokenKind::FStringStart) {
1399 StringType::FString(
1400 self.parse_interpolated_string(InterpolatedStringKind::FString)
1401 .into(),
1402 )
1403 } else if self.at(TokenKind::TStringStart) {
1404 // test_ok template_strings_py314
1405 // # parse_options: {"target-version": "3.14"}
1406 // t"{hey}"
1407 // t'{there}'
1408 // t"""what's
1409 // happening?"""
1410
1411 // test_err template_strings_py313
1412 // # parse_options: {"target-version": "3.13"}
1413 // t"{hey}"
1414 // t'{there}'
1415 // t"""what's
1416 // happening?"""
1417 let string_type = StringType::TString(
1418 self.parse_interpolated_string(InterpolatedStringKind::TString)
1419 .into(),
1420 );
1421 self.add_unsupported_syntax_error(
1422 UnsupportedSyntaxErrorKind::TemplateStrings,
1423 string_type.range(),
1424 );
1425 string_type
1426 } else {
1427 unreachable!("Expected to parse a string")
1428 }
1429 }
1430
1431 /// Handles implicitly concatenated strings.
1432 ///

Callers 1

parse_stringsMethod · 0.45

Calls 7

TStringClass · 0.85
FStringClass · 0.50
atMethod · 0.45
rangeMethod · 0.45

Tested by

no test coverage detected