X-Git-Url: https://code.kerkeslager.com/?p=fur;a=blobdiff_plain;f=main.py;h=7b31d2c3aa241f2d14c667eed0c6ecbc18900291;hp=9ec852afb955227dfc5ef8a7f0eb74f5945edb18;hb=d70666abc2db430300d48691046ada2395b2f0d5;hpb=c45c61444aae3df328e4dc84acf7e31e58a1f64e diff --git a/main.py b/main.py index 9ec852a..7b31d2c 100644 --- a/main.py +++ b/main.py @@ -4,12 +4,15 @@ import conversion import crossplatform_ir_generation import desugaring import c_generation +import interpreter import normalization import optimization import parsing import tokenization -source_path = sys.argv[1] +command = sys.argv[1] + +source_path = sys.argv[2] with open(source_path, 'r') as f: source = f.read() @@ -22,13 +25,19 @@ converted = conversion.convert(normalized) crossplatform_ir = crossplatform_ir_generation.generate(converted) optimized = optimization.optimize(crossplatform_ir) -outputted = crossplatform_ir_generation.output(optimized) -print(outputted) -generated = c_generation.generate(optimized) +if command == 'compile': + generated = c_generation.generate(optimized) + + assert source_path.endswith('.fur') + destination_path = source_path + '.c' + + with open(destination_path, 'w') as f: + f.write(generated) -assert source_path.endswith('.fur') -destination_path = source_path + '.c' +elif command == 'ir': + outputted = crossplatform_ir_generation.output(optimized) + print(outputted) -with open(destination_path, 'w') as f: - f.write(generated) +elif command == 'interpret': + interpreter.interpret(optimized)