+def desugar_ternary_comparison(counter, expression):
+ counter, left_prestatements, left_expression = normalize_expression(counter, expression.left.left)
+ counter, middle_prestatements, middle_expression = normalize_expression(counter, expression.left.right)
+
+ left_variable = '${}'.format(counter)
+ counter += 1
+ middle_variable = '${}'.format(counter)
+ counter += 1
+
+ juncture_prestatements = (
+ NormalVariableInitializationStatement(
+ variable=left_variable,
+ expression=left_expression,
+ ),
+ NormalVariableInitializationStatement(
+ variable=middle_variable,
+ expression=middle_expression,
+ )
+ )
+
+ counter, boolean_expression_prestatements, boolean_expression = normalize_boolean_expression(
+ counter,
+ parsing.FurInfixExpression(
+ order='and_level',
+ operator='and',
+ left=parsing.FurInfixExpression(
+ order='comparison_level',
+ operator=expression.left.operator,
+ left=NormalVariableExpression(variable=left_variable),
+ right=NormalVariableExpression(variable=middle_variable),
+ ),
+ right=parsing.FurInfixExpression(
+ order='comparison_level',
+ operator=expression.operator,
+ left=NormalVariableExpression(variable=middle_variable),
+ right=expression.right,
+ ),
+ )
+ )
+
+ return (
+ counter,
+ left_prestatements + middle_prestatements + juncture_prestatements + boolean_expression_prestatements,
+ boolean_expression,
+ )