我正在查看 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
不是在这里吗
starred_expression ::= expression […]
expression
必须包含 9
。