2024-09-27 21:24:48 发布
网友
我正在用python编写一个解释器,下面是这个例子http://www.dabeaz.com/ply/example.html
我想知道如何实施多重任务,例如:
a=b=c=1和{}
a=b=c=1
我试过一些规则,但都是徒劳的。我知道解析应该是这样的。在
a b c 1 \ \ \/ \ \ / \ \ / \ /
我不知道怎么用PLY写这个。在
大多数语言通过将赋值声明为一个表达式来逃避它。在
在您的示例中,赋值变为:
def p_expression_assign(t): 'expression : NAME EQUALS expression' t[0] = names[t[1]] = t[3]
我刚刚将函数名和docstring语法中的“statement”更改为“expression”,并“返回”(assigned to t[0])正在分配的值。在
t[0]
我之所以说“逍遥法外”,是因为其他语言(如Python)更进一步,因为它们允许多个赋值,但禁止在任何其他类型的表达式中使用赋值的结果。在
但是你的第二个例子a=(b=1)*1告诉我你想要前一种更宽松(或类似C)的多重赋值形式。在
a=(b=1)*1
大多数语言通过将赋值声明为一个表达式来逃避它。在
在您的示例中,赋值变为:
我刚刚将函数名和docstring语法中的“statement”更改为“expression”,并“返回”(assigned to
t[0]
)正在分配的值。在我之所以说“逍遥法外”,是因为其他语言(如Python)更进一步,因为它们允许多个赋值,但禁止在任何其他类型的表达式中使用赋值的结果。在
但是你的第二个例子
a=(b=1)*1
告诉我你想要前一种更宽松(或类似C)的多重赋值形式。在相关问题 更多 >
编程相关推荐