Python 赋值语句

问题描述 投票:0回答:1

我正在查看 python 赋值语句 docs .

这里 python 使用下面的 Backus–Naur 形式来进行赋值语句。

assignment_stmt ::=  (target_list "=")+ (starred_expression | yield_expression)
target_list     ::=  target ("," target)* [","]
target          ::=  identifier
                     | "(" [target_list] ")"
                     | "[" [target_list] "]"
                     | attributeref
                     | subscription
                     | slicing
                     | "*" target

starred_expression 在巴科斯-诺尔范式中的位置是

starred_expression ::=  expression | (starred_item ",")* [starred_item]
starred_item       ::=  assignment_expression | "*" or_expr
巴科斯-诺尔形式中的

yield_expression

yield_atom       ::=  "(" yield_expression ")"
yield_expression ::=  "yield" [expression_list | "from" expression]

递归遍历上面给出的每个子表达式的所有相关 backnaur 形式之后。我仍然在摸不着头脑,像

a=9
这样的简单赋值如何适合上面的 back naur 形式。特别是给定语句右侧的
9
如何落入yield_expression或starred_exression

python bnf
1个回答
0
投票

不是在这里吗

starred_expression ::=  expression […]

expression
必须包含
9

© www.soinside.com 2019 - 2024. All rights reserved.