+def transform_list_construct_expression(accumulators, expression):
+ return CListConstructExpression(allocate=expression.allocate)
+
+def transform_list_get_expression(accumulators, expression):
+ return CListGetExpression(
+ list_expression=transform_expression(accumulators, expression.list_expression),
+ index_expression=transform_expression(accumulators, expression.index_expression),
+ )
+
+def transform_list_append_statement(accumulators, expression):
+ return CListAppendStatement(
+ list_expression=transform_expression(accumulators, expression.list_expression),
+ item_expression=transform_expression(accumulators, expression.item_expression),
+ )
+
+def transform_expression(accumulators, expression):
+ # TODO Clean up handlers for parsing expressions
+ return {
+ parsing.FurInfixExpression: transform_infix_expression,
+ parsing.FurIntegerLiteralExpression: transform_integer_literal_expression,
+ parsing.FurNegationExpression: transform_negation_expression,
+ parsing.FurStringLiteralExpression: transform_string_literal_expression,
+ normalization.NormalDotExpression: transform_dot_expression,
+ normalization.NormalFunctionCallExpression: transform_function_call_expression,
+ normalization.NormalInfixExpression: transform_infix_expression,
+ normalization.NormalIntegerLiteralExpression: transform_integer_literal_expression,
+ normalization.NormalListConstructExpression: transform_list_construct_expression,
+ normalization.NormalListGetExpression: transform_list_get_expression,
+ normalization.NormalNegationExpression: transform_negation_expression,
+ normalization.NormalStructureLiteralExpression: transform_structure_literal_expression,
+ normalization.NormalStringLiteralExpression: transform_string_literal_expression,
+ normalization.NormalSymbolExpression: transform_symbol_expression,
+ normalization.NormalVariableExpression: transform_variable_expression,
+ }[type(expression)](accumulators, expression)
+
+def transform_symbol_assignment_statement(accumulators, assignment_statement):