如何在python编写的解释器中实现多重赋值?

2024-06-10 09:12:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用python编写一个解释器,下面是这个例子http://www.dabeaz.com/ply/example.html

我想知道如何实施多重任务,例如:

a=b=c=1和{}

我试过一些规则,但都是徒劳的。我知道解析应该是这样的。在

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

我不知道怎么用PLY写这个。在


Tags: comhttp规则examplehtmlwww解释器例子
1条回答
网友
1楼 · 发布于 2024-06-10 09:12:05

大多数语言通过将赋值声明为一个表达式来逃避它。在

在您的示例中,赋值变为:

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

我刚刚将函数名和docstring语法中的“statement”更改为“expression”,并“返回”(assigned to t[0])正在分配的值。在

我之所以说“逍遥法外”,是因为其他语言(如Python)更进一步,因为它们允许多个赋值,但禁止在任何其他类型的表达式中使用赋值的结果。在

但是你的第二个例子a=(b=1)*1告诉我你想要前一种更宽松(或类似C)的多重赋值形式。在

相关问题 更多 >