X-Git-Url: https://code.kerkeslager.com/?p=fur;a=blobdiff_plain;f=conversion.py;h=29a40d7d330d4450036e63cb9b88c6befc40cf1b;hp=2b6ccbd9fef6db31dbda452b5f6dd3ad4566a527;hb=7abf5e459b2ef02c8e59c05f0a83d8213ade0427;hpb=f378cbf85e3dbd26d5a97b6ac9b1aeb0811ecf74 diff --git a/conversion.py b/conversion.py index 2b6ccbd..29a40d7 100644 --- a/conversion.py +++ b/conversion.py @@ -2,6 +2,13 @@ import collections import normalization +CPSBuiltinExpression = collections.namedtuple( + 'CPSBuiltinExpression', + ( + 'symbol', + ), +) + CPSFunctionCallExpression = collections.namedtuple( 'CPSFunctionCallExpression', ( @@ -101,14 +108,6 @@ CPSIfElseExpression = collections.namedtuple( ), ) -CPSListAppendStatement = collections.namedtuple( - 'CPSListAppendStatement', - ( - 'list_expression', - 'item_expression', - ), -) - CPSPushStatement = collections.namedtuple( 'CPSPushStatement', ( @@ -139,6 +138,9 @@ CPSProgram = collections.namedtuple( ), ) +def convert_builtin_expression(expression): + return CPSBuiltinExpression(symbol=expression.symbol) + def convert_function_call_expression(expression): return CPSFunctionCallExpression( metadata=expression.metadata, @@ -178,6 +180,7 @@ def convert_variable_expression(expression): def convert_expression(expression): return { + normalization.NormalBuiltinExpression: convert_builtin_expression, normalization.NormalFunctionCallExpression: convert_function_call_expression, normalization.NormalIfElseExpression: convert_if_else_expression, normalization.NormalIntegerLiteralExpression: convert_integer_literal_expression, @@ -211,13 +214,6 @@ def convert_if_else_expression(statement): else_statement_list=else_statement_list, ) -def convert_list_append_statement(statement): - return CPSListAppendStatement( - list_expression=convert_expression(statement.list_expression), - item_expression=convert_expression(statement.item_expression), - ) - - def convert_push_statement(statement): return CPSPushStatement( expression=convert_expression(statement.expression), @@ -233,7 +229,6 @@ def convert_statement(statement): return { normalization.NormalAssignmentStatement: convert_assignment_statement, normalization.NormalExpressionStatement: convert_expression_statement, - normalization.NormalListAppendStatement: convert_list_append_statement, normalization.NormalPushStatement: convert_push_statement, normalization.NormalVariableInitializationStatement: convert_variable_initialization_statement, }[type(statement)](statement)