import unittest from crowbar_reference_compiler import build_ast, build_ssa, parse_header, parse_implementation, scan class TestHelloWorld(unittest.TestCase): def test_ssa(self): code = r""" //include "stdio.hro"; int32 main() { printf("Hello, world!\n"); return 0; } """ tokens = scan(code) parse_tree = parse_implementation(tokens) ast = build_ast(parse_tree, []) actual_ssa = build_ssa(ast) expected_ssa = r""" data $data0 = { b "Hello, world!\n", b 0 } export function l $main() { @start %t0 =l copy $data0 call $printf(l %t0, ...) %t1 =l copy 0 ret %t1 } """.strip() self.assertEqual(expected_ssa, actual_ssa) if __name__ == '__main__': unittest.main()