2013-04-10 10 views
6

私はPythonでインタプリタを書いていますし、私はこの例にhttp://www.dabeaz.com/ply/example.htmlPythonで書かれたインタプリタで複数の代入を実装する方法は?私はいくつかを試してみました</p> <p><code>a=b=c=1</code>と<code>a=(b=1)*1</code></p> <p>:私は私のような複数の割り当てを実装する方法を知っているしたいと思います

を以下のいルールがすべて無駄だ。私は構文解析がこのようなものでなければならないことを知っています。

a b c 1 
\ \ \/ 
    \ \ /
    \ \/
    \/

PLYを使用してこれを書き込む方法はわかりません。

答えて

4

ほとんどの言語は、代入を式と宣言することでそれを取り除きます。 (t[0]に割り当てられている)

def p_expression_assign(t): 
    'expression : NAME EQUALS expression' 
    t[0] = names[t[1]] = t[3] 

私は関数名におよびドキュメンテーション文字列の構文の両方で、「表現」に「文」に変更し、「返却」:

あなたの例では、割り当てになるには値が割り当てられています。

私は、他の言語(Pythonなど)が複数の割り当てを許可しているため、他の種類の式で割り当ての結果を使用することを禁止しているため、

しかし、2つ目の例であるa=(b=1)*1では、前者の、より緩やかな(またはCのような)複数の割り当ての形式が必要です。

関連する問題

 関連する問題