],
)
+CConstantExpression = collections.namedtuple(
+ 'CConstantExpression',
+ [
+ 'value'
+ ],
+)
+
CSymbolExpression = collections.namedtuple(
'CSymbolExpression',
[
)
BUILTINS = {
+ 'false': [],
'pow': ['math.h'],
'print': ['stdio.h'],
+ 'true': [],
}
def transform_expression(builtin_dependencies, symbol_list, expression):
return transform_function_call_expression(builtin_dependencies, symbol_list, expression)
if isinstance(expression, parsing.FurSymbolExpression):
+ if expression.value in ['true', 'false']:
+ return CConstantExpression(value=expression.value)
+
if expression.value not in symbol_list:
symbol_list.append(expression.value)
def transform_function_call_expression(builtin_dependencies, symbol_list, function_call):
if function_call.function.value in BUILTINS.keys():
+ # TODO Check that the builtin is actually callable
builtin_dependencies.add(function_call.function.value)
return CFunctionCallExpression(