In gh-138418, `!` was added to links to rules that don't exist in
the docs, in order to silence broken link warnings.
However, productionlist doesn't parse the `!`, which ends up in
the rendered documentation. (It's possible that gh-127835 broke
the `!` support.)
Replace the names with ones that appear in docs:
- `star_named_expression` in the grammar corresponds to
`flexible_expression` in the docs
- `star_named_expressions` in the grammar corresponds to
`flexible_expression_list` in the docs
- `named_expression` in the grammar corresponds to
`assignment_expression` in the docs
Having two sets of names isn't great of course. Consolidating them
is tracked in (subissues of) gh-127833.
.. productionlist:: python-grammar
match_stmt: 'match' `subject_expr` ":" NEWLINE INDENT `case_block`+ DEDENT
- subject_expr: `!star_named_expression` "," `!star_named_expressions`?
- : | `!named_expression`
+ subject_expr: `flexible_expression` "," [`flexible_expression_list` [',']]
+ : | `assignment_expression`
case_block: 'case' `patterns` [`guard`] ":" `!block`
.. note::
.. index:: ! guard
.. productionlist:: python-grammar
- guard: "if" `!named_expression`
+ guard: "if" `assignment_expression`
A ``guard`` (which is part of the ``case``) must succeed for code inside
the ``case`` block to execute. It takes the form: :keyword:`if` followed by an