X-Git-Url: https://code.kerkeslager.com/?p=fur;a=blobdiff_plain;f=normalization.py;h=1cba840d4fbb5220b8e75f7002a2fca7eea17124;hp=3fa52ac3714ef17663e6255afae2c73982c5ad07;hb=d6af7d074bf65e782e42055623a197863b5f8000;hpb=c9f47106ccf806533783a551b5c51d9280869635 diff --git a/normalization.py b/normalization.py index 3fa52ac..1cba840 100644 --- a/normalization.py +++ b/normalization.py @@ -67,6 +67,14 @@ NormalExpressionStatement = collections.namedtuple( ], ) +NormalAssignmentStatement = collections.namedtuple( + 'NormalAssignmentStatement', + [ + 'target', + 'expression', + ], +) + NormalIfElseStatement = collections.namedtuple( 'NormalIfElseStatement', [ @@ -80,6 +88,7 @@ NormalFunctionDefinitionStatement = collections.namedtuple( 'NormalFunctionDefinitionStatement', [ 'name', + 'argument_name_list', 'statement_list', ], ) @@ -322,13 +331,25 @@ def normalize_function_definition_statement(counter, statement): (), NormalFunctionDefinitionStatement( name=statement.name, + argument_name_list=statement.argument_name_list, statement_list=normalize_statement_list(statement.statement_list), ), ) +def normalize_assignment_statement(counter, statement): + counter, prestatements, normalized_expression = normalize_expression(counter, statement.expression) + return ( + counter, + prestatements, + NormalAssignmentStatement( + target=statement.target, + expression=normalized_expression, + ), + ) + def normalize_statement(counter, statement): return { - parsing.FurAssignmentStatement: fake_normalization, # TODO unfake this + parsing.FurAssignmentStatement: normalize_assignment_statement, parsing.FurExpressionStatement: normalize_expression_statement, parsing.FurFunctionDefinitionStatement: normalize_function_definition_statement, }[type(statement)](counter, statement)