| (\r
left:variable_identifier\r
{SP}* operator:conditional_expression_operator_operations {SP}*\r
- right:variable_identifier\r
+ right:conditional_expression\r
)\r
;\r
\r
'<=': 'lteq',\r
}\r
\r
- return nodes.Compare(\r
- parse_variable(ast['left']),\r
- [\r
+ expr = parse_variable(ast['left'])\r
+ operator = operand_map.get(ast['operator'], ast['operator'])\r
+ operands = []\r
+\r
+ right = parse_conditional_expression(ast['right'])\r
+\r
+ if isinstance(right, nodes.Compare):\r
+ operands.append(\r
nodes.Operand(\r
- operand_map.get(ast['operator'], ast['operator']),\r
- parse_variable(ast['right'])\r
+ operator,\r
+ right.expr\r
)\r
- ],\r
+ )\r
+ operands.extend(right.ops)\r
+ else:\r
+\r
+ operands.append(\r
+ nodes.Operand(\r
+ operator,\r
+ right\r
+ )\r
+ )\r
+\r
+ return nodes.Compare(\r
+ expr,\r
+ operands,\r
lineno=lineno_from_parseinfo(ast['parseinfo'])\r
)\r
\r