import conversion
import crossplatform_ir_generation
import desugaring
-import generation
+import c_generation
import normalization
+import optimization
import parsing
import tokenization
-import transformation
-source_path = sys.argv[1]
+command = sys.argv[1]
+
+source_path = sys.argv[2]
with open(source_path, 'r') as f:
source = f.read()
normalized = normalization.normalize(desugared)
converted = conversion.convert(normalized)
-# This is the C generation path
-transformed = transformation.transform(converted)
-generated = generation.generate(transformed)
+crossplatform_ir = crossplatform_ir_generation.generate(converted)
+optimized = optimization.optimize(crossplatform_ir)
-assert source_path.endswith('.fur')
-destination_path = source_path + '.c'
+if command == 'compile':
+ generated = c_generation.generate(optimized)
-with open(destination_path, 'w') as f:
- f.write(generated)
+ assert source_path.endswith('.fur')
+ destination_path = source_path + '.c'
-# This is the crossplatform IR generation path
-crossplatform_ir = crossplatform_ir_generation.generate(converted)
-outputted = crossplatform_ir_generation.output(crossplatform_ir)
-print(outputted)
+ with open(destination_path, 'w') as f:
+ f.write(generated)
+
+elif command == 'ir':
+ outputted = crossplatform_ir_generation.output(optimized)
+ print(outputted)
+
+elif command == 'interpret':
+ interpreter.interpret(optimized)