Add an interpreter
[fur] / main.py
diff --git a/main.py b/main.py
index 198072e..44dbbc6 100644 (file)
--- a/main.py
+++ b/main.py
@@ -3,14 +3,15 @@ import sys
 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()
@@ -21,18 +22,21 @@ desugared = desugaring.desugar(parsed)
 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)
-optimized = optimization.optimize(crossplatform_ir)
-outputted = crossplatform_ir_generation.output(optimized)
-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)