X-Git-Url: https://code.kerkeslager.com/?p=fur;a=blobdiff_plain;f=transformation.py;h=d68014504d8961f8ff066015e79061f5d26aefe7;hp=1fe7dc938b55e51674750a7db5a66cc621e3b474;hb=fb83d523f8eb241d5ccafe8d391a9edd62150b48;hpb=f60d1b48bbf73c51d214c5ae5c22ea3cdee087c1 diff --git a/transformation.py b/transformation.py index 1fe7dc9..d680145 100644 --- a/transformation.py +++ b/transformation.py @@ -16,6 +16,13 @@ CStringLiteral = collections.namedtuple( ], ) +CNegationExpression = collections.namedtuple( + 'CNegationExpression', + [ + 'value', + ], +) + CAdditionExpression = collections.namedtuple( 'CAdditionExpression', [ @@ -79,6 +86,9 @@ BUILTINS = { } def transform_expression(builtin_dependencies, expression): + if isinstance(expression, parsing.FurNegationExpression): + return transform_negation_expression(builtin_dependencies, expression) + if isinstance(expression, parsing.FurFunctionCallExpression): return transform_function_call_expression(builtin_dependencies, expression) @@ -103,6 +113,9 @@ def transform_expression(builtin_dependencies, expression): right=transform_expression(builtin_dependencies, expression.right), ) +def transform_negation_expression(builtin_dependencies, negation_expression): + return CNegationExpression(value=transform_expression(builtin_dependencies, negation_expression.value)) + def transform_function_call_expression(builtin_dependencies, function_call): if function_call.name in BUILTINS.keys(): builtin_dependencies.add(function_call.name)