WIM:
文法デルfor文:
del_stmt: 'del' (expr|star_expr) (',' (expr|star_expr))* [',']
これは、スターを付けた表現を削除することができます。ですから、パーサはそれが原因とされるだろうにもかかわらず、これを気にしないSyntaxError: can't use starred expression here
実行時:
>>> ast.parse("del *a")
<_ast.Module at 0xcafef00d>
>>> ast.dump(compile('del *a', filename='wtf.py', mode='single', flags=ast.PyCF_ONLY_AST))
"Interactive(body=[Delete(targets=[Starred(value=Name(id='a', ctx=Del()), ctx=Del())])])"
私はスターあり削除対象を持つことができた欠けているいくつかの使用法はありますか?それは、代わりにシンプルな文法であってはなりません。
del_stmt: 'del' expr (',' expr)* [',']
なぜ文法は主演の表現を削除することができませんか?
ShadowRanger:
実際の文法はで定義されていますexprlist
。以下のように見えるその関連付け日が3.0の前に戻り、star_expr
事になりました。以前、それはだったexpr
独占。
基本的に、文法は、彼らがに新しい機能を追加したので、それを可能にexprlist
し、すべての場合には文法によって違法それを作るのトラブルに行きませんでしたstar_expr
、実際には意味がない、彼らは単に、コンパイラがで無意味な例を拒否作ら後の段階。
それはハックですが、それは動作しますが、私はパーサを簡素化、および/またはそれがために別々の概念を定義し、実装するためにあまりにも多くの問題だいずれかを前提とexprlist
対をmaybe_star_exprlist
。