5 CStringLiteral = collections.namedtuple(
12 CFunctionCallStatement = collections.namedtuple(
13 'CFunctionCallStatement',
20 CProgram = collections.namedtuple(
30 'print': ['stdio.h.'],
33 def transform_argument(builtin_dependencies, argument):
34 if isinstance(argument, parsing.StringLiteral):
35 return CStringLiteral(value=argument.value)
39 def transform_function_call_statement(builtin_dependencies, function_call):
40 if function_call.name in BUILTINS.keys():
41 builtin_dependencies.add(function_call.name)
43 return CFunctionCallStatement(
44 name='builtin$' + function_call.name,
45 arguments=tuple(transform_argument(builtin_dependencies, arg) for arg in function_call.arguments),
51 def transform(function_call):
54 statement = transform_function_call_statement(builtins, function_call)
56 standard_libraries = set()
57 for builtin in builtins:
58 for standard_library in BUILTINS[builtin]:
59 standard_libraries.add(standard_library)
63 statements=[statement],
64 standard_libraries=standard_libraries,
68 if __name__ == '__main__':