Add crossplatform IR generation up to the point of if/else statements
[fur] / main.py
1 import sys
2
3 import conversion
4 import crossplatform_ir_generation
5 import desugaring
6 import generation
7 import normalization
8 import parsing
9 import tokenization
10 import transformation
11
12 source_path = sys.argv[1]
13
14 with open(source_path, 'r') as f:
15     source = f.read()
16
17 tokens = tokenization.tokenize(source)
18 parsed = parsing.parse(tokens)
19 desugared = desugaring.desugar(parsed)
20 normalized = normalization.normalize(desugared)
21 converted = conversion.convert(normalized)
22
23 # This is the C generation path
24 transformed = transformation.transform(converted)
25 generated = generation.generate(transformed)
26
27 assert source_path.endswith('.fur')
28 destination_path = source_path + '.c'
29
30 with open(destination_path, 'w') as f:
31     f.write(generated)
32
33 # This is the crossplatform IR generation path
34 crossplatform_ir = crossplatform_ir_generation.generate(converted)
35 outputted = crossplatform_ir_generation.output(crossplatform_ir)
36 print(outputted)