X-Git-Url: https://code.kerkeslager.com/?p=fur;a=blobdiff_plain;f=conversion.py;h=fd469fad104b4c22ccbeb01ceeca70ef8b340ce9;hp=965f86e2cb3aab72ea1b1bccd6c55e59c57ff0d7;hb=aa339c441f43849a8cae256aa130278ca7618b7e;hpb=68eb624cc15463008b9ed38e17315e9a1f8bdeb0 diff --git a/conversion.py b/conversion.py index 965f86e..fd469fa 100644 --- a/conversion.py +++ b/conversion.py @@ -18,6 +18,14 @@ CPSIntegerLiteralExpression = collections.namedtuple( ), ) +CPSLambdaExpression = collections.namedtuple( + 'CPSLambdaExpression', + ( + 'argument_name_list', + 'statement_list', + ), +) + CPSListConstructExpression = collections.namedtuple( 'CPSListConstructExpression', ( @@ -152,6 +160,12 @@ def convert_function_call_expression(expression): def convert_integer_literal_expression(expression): return CPSIntegerLiteralExpression(integer=expression.integer) +def convert_lambda_expression(expression): + return CPSLambdaExpression( + argument_name_list=expression.argument_name_list, + statement_list=tuple(convert_statement(s) for s in expression.statement_list), + ) + def convert_list_construct_expression(expression): return CPSListConstructExpression(allocate=expression.allocate) @@ -175,6 +189,7 @@ def convert_expression(expression): return { normalization.NormalFunctionCallExpression: convert_function_call_expression, normalization.NormalIntegerLiteralExpression: convert_integer_literal_expression, + normalization.NormalLambdaExpression: convert_lambda_expression, normalization.NormalListConstructExpression: convert_list_construct_expression, normalization.NormalStringLiteralExpression: convert_string_literal_expression, normalization.NormalStructureLiteralExpression: convert_structure_literal_expression,