Add a very basic optimization pass
[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 optimization
9 import parsing
10 import tokenization
11 import transformation
12
13 source_path = sys.argv[1]
14
15 with open(source_path, 'r') as f:
16     source = f.read()
17
18 tokens = tokenization.tokenize(source)
19 parsed = parsing.parse(tokens)
20 desugared = desugaring.desugar(parsed)
21 normalized = normalization.normalize(desugared)
22 converted = conversion.convert(normalized)
23
24 # This is the C generation path
25 transformed = transformation.transform(converted)
26 generated = generation.generate(transformed)
27
28 assert source_path.endswith('.fur')
29 destination_path = source_path + '.c'
30
31 with open(destination_path, 'w') as f:
32     f.write(generated)
33
34 # This is the crossplatform IR generation path
35 crossplatform_ir = crossplatform_ir_generation.generate(converted)
36 optimized = optimization.optimize(crossplatform_ir)
37 outputted = crossplatform_ir_generation.output(optimized)
38 print(outputted)