X-Git-Url: https://code.kerkeslager.com/?p=fur;a=blobdiff_plain;f=crossplatform_ir_generation.py;h=fad62225667612884085be3b6ae4b094f4fdae05;hp=9d3ab4b1807dae78a18adc135ae51e9a9fbd1227;hb=f378cbf85e3dbd26d5a97b6ac9b1aeb0811ecf74;hpb=a9ab9dd833ed081abbed647aa16eeaa2f61b85d7 diff --git a/crossplatform_ir_generation.py b/crossplatform_ir_generation.py index 9d3ab4b..fad6222 100644 --- a/crossplatform_ir_generation.py +++ b/crossplatform_ir_generation.py @@ -114,6 +114,15 @@ def generate_string_literal_expression(counters, expression): return referenced_entry_list, instruction_list +def generate_structure_literal_expression(counters, expression): + referenced_entry_list = () + instruction_list = (CIRInstruction( + instruction='structure', + argument=expression.field_count, + ),) + + return referenced_entry_list, instruction_list + def generate_symbol_expression(counters, expression): referenced_entry_list = () instruction_list = (CIRInstruction( @@ -123,6 +132,15 @@ def generate_symbol_expression(counters, expression): return referenced_entry_list, instruction_list +def generate_symbol_literal_expression(counters, expression): + referenced_entry_list = () + instruction_list = (CIRInstruction( + instruction='push_value', + argument=generate_symbol_literal(expression.symbol), + ),) + + return referenced_entry_list, instruction_list + def generate_variable_expression(counters, expression): referenced_entry_list = () instruction_list = (CIRInstruction( @@ -140,7 +158,9 @@ def generate_expression(counters, expression): conversion.CPSLambdaExpression: generate_lambda_expression, conversion.CPSListConstructExpression: generate_list_construct_expression, conversion.CPSStringLiteralExpression: generate_string_literal_expression, + conversion.CPSStructureLiteralExpression: generate_structure_literal_expression, conversion.CPSSymbolExpression: generate_symbol_expression, + conversion.CPSSymbolLiteralExpression: generate_symbol_literal_expression, conversion.CPSVariableExpression: generate_variable_expression, }[type(expression)](counters, expression)