+ return referenced_entry_list, instruction_list
+
+def generate_lambda_expression(counters, expression):
+ if expression.name is None or 'lambda' in expression.name.lower():
+ import ipdb; ipdb.set_trace()
+
+ name_counter = counters.get(expression.name, 0)
+ counters[expression.name] = name_counter + 1
+ label = '{}${}'.format(expression.name, name_counter)
+
+ for argument_name in expression.argument_name_list:
+ import ipdb; ipdb.set_trace()
+
+ referenced_entry_list_list = []
+ instruction_list_list = []
+
+ for statement in expression.statement_list:
+ referenced_entry_list, instruction_list = generate_statement(counters, statement)
+ referenced_entry_list_list.append(referenced_entry_list)
+ instruction_list_list.append(instruction_list)
+
+ referenced_entry_list_list.append(
+ (CIRLabel(label=label),) + flatten(instruction_list_list),
+ )
+
+ instruction_list = (
+ CIRInstruction(instruction='close', argument=label),
+ )
+
+ return flatten(referenced_entry_list_list), instruction_list
+
+def generate_string_literal_expression(counters, expression):
+ referenced_entry_list = ()
+ instruction_list = (CIRInstruction(