X-Git-Url: https://code.kerkeslager.com/?p=fur;a=blobdiff_plain;f=generation.py;h=1e1243a06baad9b59a675f3327b1452dfd585e2c;hp=149a5e247571dc322cdac5ac0352af9e4a324c39;hb=ab984279c92601b321db123984c753aa862daad8;hpb=1852539af30c364a11d2e2a0bb7944102293dcf6 diff --git a/generation.py b/generation.py index 149a5e2..1e1243a 100644 --- a/generation.py +++ b/generation.py @@ -64,10 +64,12 @@ def generate_negation_expression(c_negation_expression): generate_expression(c_negation_expression.value) ) -def generate_function_call(c_function_call): - return '{}({})'.format( - c_function_call.name, - ', '.join(generate_expression(argument) for argument in c_function_call.arguments), +def generate_function_call(function_call): + return '{}({}, {})'.format( + function_call.name, + function_call.argument_count, + # TODO This is just a single item containing a reference to the items list--make that clearer + generate_expression(function_call.argument_items), ) def generate_expression_statement(statement): @@ -81,6 +83,12 @@ def generate_symbol_assignment_statement(c_assignment_statement): generate_expression(c_assignment_statement.expression), ) +def generate_array_variable_initialization_statement(statement): + return 'Object {}[] = {{ {} }};'.format( + statement.variable, + ', '.join(generate_expression(i) for i in statement.items), + ) + def generate_variable_initialization_statement(statement): return 'Object {} = {};'.format( statement.variable, @@ -110,6 +118,7 @@ def generate_statement(statement): transformation.CExpressionStatement: generate_expression_statement, transformation.CIfElseStatement: generate_if_else_statement, transformation.CSymbolAssignmentStatement: generate_symbol_assignment_statement, + transformation.CArrayVariableInitializationStatement: generate_array_variable_initialization_statement, transformation.CVariableInitializationStatement: generate_variable_initialization_statement, transformation.CVariableReassignmentStatement: generate_variable_reassignment_statement, }[type(statement)](statement)