X-Git-Url: https://code.kerkeslager.com/?p=fur;a=blobdiff_plain;f=main.py;h=44dbbc6a398b1147cf6f1b4fd7dc99082a048d7b;hp=5d9f9deb0eed5ace953b1e3fef89710fc26e0a47;hb=732b4ed7f693a328509b94d7137f3210c9c4042f;hpb=4ba4fcfbb2712a22a9f3211182c9ec6cee9dd0f8 diff --git a/main.py b/main.py index 5d9f9de..44dbbc6 100644 --- a/main.py +++ b/main.py @@ -1,22 +1,42 @@ import sys -import generation +import conversion +import crossplatform_ir_generation +import desugaring +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() tokens = tokenization.tokenize(source) parsed = parsing.parse(tokens) -transformed = transformation.transform(parsed) -generated = generation.generate(transformed) +desugared = desugaring.desugar(parsed) +normalized = normalization.normalize(desugared) +converted = conversion.convert(normalized) + +crossplatform_ir = crossplatform_ir_generation.generate(converted) +optimized = optimization.optimize(crossplatform_ir) + +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[:-4] + '.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)