-def normalize_infix_expression(counter, expression):
- # TODO Unfake this normalization
- return {
- 'multiplication_level': normalize_basic_infix_operation,
- 'addition_level': normalize_basic_infix_operation,
- 'comparison_level': fake_normalization,
- 'and_level': fake_normalization,
- 'or_level': fake_normalization,
- }[expression.order](counter, expression)
+def normalize_if_expression(counter, expression):
+ counter, condition_prestatements, condition_expression = normalize_expression(
+ counter,
+ expression.condition_expression,
+ )
+
+ counter, if_statement_list = normalize_statement_list(
+ counter,
+ expression.if_statement_list,
+ )
+ counter, else_statement_list = normalize_statement_list(
+ counter,
+ expression.else_statement_list,
+ )
+
+ return (
+ counter,
+ condition_prestatements,
+ NormalIfElseExpression(
+ condition_expression=condition_expression,
+ if_statement_list=if_statement_list,
+ else_statement_list=else_statement_list,
+ ),
+ )