X-Git-Url: https://code.kerkeslager.com/?p=fur;a=blobdiff_plain;f=conversion.py;h=49e27fd18188eac5c8ddbfa0dd6fd9b0c60cecaa;hp=965f86e2cb3aab72ea1b1bccd6c55e59c57ff0d7;hb=37d4a702fda63b87c1482a59b2ef4c1bba2e3696;hpb=68eb624cc15463008b9ed38e17315e9a1f8bdeb0 diff --git a/conversion.py b/conversion.py index 965f86e..49e27fd 100644 --- a/conversion.py +++ b/conversion.py @@ -18,6 +18,15 @@ CPSIntegerLiteralExpression = collections.namedtuple( ), ) +CPSLambdaExpression = collections.namedtuple( + 'CPSLambdaExpression', + ( + 'name', + 'argument_name_list', + 'statement_list', + ), +) + CPSListConstructExpression = collections.namedtuple( 'CPSListConstructExpression', ( @@ -78,15 +87,6 @@ CPSExpressionStatement = collections.namedtuple( ), ) -CPSFunctionDefinitionStatement = collections.namedtuple( - 'CPSFunctionDefinitionStatement', - ( - 'name', - 'argument_name_list', - 'statement_list', - ) -) - CPSIfElseStatement = collections.namedtuple( 'CPSIfElseStatement', ( @@ -152,6 +152,13 @@ def convert_function_call_expression(expression): def convert_integer_literal_expression(expression): return CPSIntegerLiteralExpression(integer=expression.integer) +def convert_lambda_expression(expression): + return CPSLambdaExpression( + name=expression.name, + 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 +182,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, @@ -199,13 +207,6 @@ def convert_expression_statement(statement): expression=convert_expression(statement.expression), ) -def convert_function_definition_statement(statement): - return CPSFunctionDefinitionStatement( - name=statement.name, - argument_name_list=statement.argument_name_list, - statement_list=tuple(convert_statement(s) for s in statement.statement_list), - ) - def convert_if_else_statement(statement): return CPSIfElseStatement( condition_expression=convert_expression(statement.condition_expression), @@ -248,7 +249,6 @@ def convert_statement(statement): normalization.NormalArrayVariableInitializationStatement: convert_array_variable_initialization_statement, normalization.NormalAssignmentStatement: convert_assignment_statement, normalization.NormalExpressionStatement: convert_expression_statement, - normalization.NormalFunctionDefinitionStatement: convert_function_definition_statement, normalization.NormalIfElseStatement: convert_if_else_statement, normalization.NormalListAppendStatement: convert_list_append_statement, normalization.NormalPushStatement: convert_push_statement,