-def normalize_infix_expression(counter, expression):
- # TODO Unfake this normalization
- return {
- '+': normalize_basic_infix_operation,
- '-': normalize_basic_infix_operation,
- '*': normalize_basic_infix_operation,
- '//': normalize_basic_infix_operation,
- '%': normalize_basic_infix_operation,
- '==': fake_normalization,
- '<=': fake_normalization,
- '>=': fake_normalization,
- '!=': fake_normalization,
- '<': fake_normalization,
- '>': fake_normalization,
- 'and': fake_normalization,
- 'or': fake_normalization,
- }[expression.operator](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,
+ ),
+ )