blob: ec1ccdd5293cc869caf81db14176852e25ed8904 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
import unittest
from crowbar_reference_compiler import compile_to_ssa, parse_header, parse_implementation, scan
class TestHelloWorld(unittest.TestCase):
def test_ssa(self):
code = r"""
include "stdio.hro";
int main() {
printf("Hello, world!\n");
return 0;
}
"""
tokens = scan(code)
parse_tree = parse_implementation(tokens)
actual_ssa = compile_to_ssa(parse_tree)
expected_ssa = r"""
data $data0 = { b "Hello, world!\n", b 0 }
export function w $main() {
@start
call $printf(l $data0, ...)
ret 0
}
""".strip()
self.assertEqual(expected_ssa, actual_ssa)
if __name__ == '__main__':
unittest.main()
|