【发布时间】:2016-11-28 10:35:30
【问题描述】:
您能否解释一下用于链式比较的句法分析树是什么样的?
据我了解,在大多数语言中,它基于运算符关联性构造节点,因此在 a < b < c 中将有一个布尔值作为左手或右手操作数。
但在 Python 中,这样的表达式几乎等同于 a < b and b < c(b 只计算一次)。
这种转换的生成语法规则是什么?基本上,在这种情况下,Python 解释器如何构建解析树?
【问题讨论】:
-
语法规则就是
comparison: expr (comp_op expr)*。 -
"这样的表达几乎等同于
a < b and b < c"。a < b < c与a < b and b < c完全等价,除了b表达式保证被评估一次(最多)。 -
@PM2Ring 是的,这就是为什么我写“几乎”它们是等效的,如果在计算 b 时没有副作用
-
明白。为了其他读者的利益,我只是添加了我的评论。
标签: python parsing comparison-operators python-internals