+ result_statement_list.append(s)
+ result_statement_list.append(normalized)
+
+ # TODO The way we fix the last statement is really confusing
+ last_statement = result_statement_list[-1]
+
+ if isinstance(last_statement, NormalExpressionStatement) and isinstance(last_statement.expression, NormalVariableExpression):
+ if assign_result_to is not None:
+ result_expression = result_statement_list.pop().expression
+ result_statement_list.append(
+ NormalVariableReassignmentStatement(
+ variable=assign_result_to,
+ expression=result_expression,
+ )
+ )
+
+ return (
+ counter,
+ result_statement_list,
+ )
+
+def normalize(program):
+ _, statement_list = normalize_statement_list(0, program.statement_list)