>>> f"{f"{f"{f"{f"{f"{1+1}"}"}"}"}"}"
'2'
Is anyone aware of the change to the interpreter that allows for this?
>>> f"{f"{f"{f"{f"{f"{1+1}"}"}"}"}"}"
'2'
Is anyone aware of the change to the interpreter that allows for this?
> When f-strings were originally introduced in PEP 498, the specification was provided without providing a formal grammar for f-strings. Additionally, the specification contains several restrictions that are imposed so the parsing of f-strings could be implemented into CPython without modifying the existing lexer. [...]
> The other issue that f-strings have is that the current implementation in CPython relies on tokenising f-strings as STRING tokens and a post processing of these tokens. This has the following problems: [...]
At https://peps.python.org/pep-0701/#rationale
> By building on top of the new Python PEG Parser (PEP 617), this PEP proposes to redefine “f-strings”, especially emphasizing the clear separation of the string component and the expression (or replacement, {...}) component.
s = `something ${cond ? `(${v})` : ''} something` > `${`${`${`${`${1 + 1}`}`}`}`}`
'2'
It was simply a limitation with the Python parser.Heck, it even works in Vimscript
:echo $'{$'{$'{1 + 1}'}'}'
2 "Hello, it's #{"#{Time.now}"}"
=> "Hello, it's 2023-10-02 09:41:40 -0400"> puts “h#{”#{i}”}”
You “just” have to make your parser understand how to have all expressions or whatever inside braces. No idea how the python parser works but think about how you can nest json arbitrarily.
$ node
> `${`${`${1+1}`}`}`
'2'Why answer your question when I could just brag about how my personal favorite language has supported this for awhile?
/s