X-Git-Url: https://code.kerkeslager.com/?p=fur;a=blobdiff_plain;f=desugaring.py;h=c951fd5d830f27bb8f42e0745a0386f9abe5f9a2;hp=e671e04c2c3292eaaa3f88e7da790801f51f12a9;hb=aa339c441f43849a8cae256aa130278ca7618b7e;hpb=3a076cfd2c46c9f3b51815facd613445722a340b diff --git a/desugaring.py b/desugaring.py index e671e04..c951fd5 100644 --- a/desugaring.py +++ b/desugaring.py @@ -27,6 +27,14 @@ DesugaredIntegerLiteralExpression = collections.namedtuple( ), ) +DesugaredLambdaExpression = collections.namedtuple( + 'DesugaredLambdaExpression', + ( + 'argument_name_list', + 'statement_list', + ), +) + DesugaredListLiteralExpression = collections.namedtuple( 'DesugaredListLiteralExpression', ( @@ -187,6 +195,12 @@ def desugar_integer_literal_expression(expression): integer=expression.integer, ) +def desugar_lambda_expression(expression): + return DesugaredLambdaExpression( + argument_name_list=expression.argument_name_list, + statement_list=tuple(desugar_statement(s) for s in expression.statement_list), + ) + def desugar_list_item_expression(expression): return DesugaredFunctionCallExpression( metadata=expression.metadata, @@ -244,6 +258,7 @@ def desugar_expression(expression): parsing.FurIfExpression: desugar_if_expression, parsing.FurInfixExpression: desugar_infix_expression, parsing.FurIntegerLiteralExpression: desugar_integer_literal_expression, + parsing.FurLambdaExpression: desugar_lambda_expression, parsing.FurListItemExpression: desugar_list_item_expression, parsing.FurListLiteralExpression: desugar_list_literal_expression, parsing.FurNegationExpression: desugar_negation_expression,