9ec852afb955227dfc5ef8a7f0eb74f5945edb18
[fur] / main.py
1 import sys
2
3 import conversion
4 import crossplatform_ir_generation
5 import desugaring
6 import c_generation
7 import normalization
8 import optimization
9 import parsing
10 import tokenization
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 crossplatform_ir = crossplatform_ir_generation.generate(converted)
24 optimized = optimization.optimize(crossplatform_ir)
25 outputted = crossplatform_ir_generation.output(optimized)
26 print(outputted)
27
28 generated = c_generation.generate(optimized)
29
30 assert source_path.endswith('.fur')
31 destination_path = source_path + '.c'
32
33 with open(destination_path, 'w') as f:
34     f.write(generated)