From e70b078b350c91042a20f6702500e5fe09a26a3e Mon Sep 17 00:00:00 2001 From: Bananymous Date: Mon, 29 Apr 2024 22:18:10 +0300 Subject: [PATCH] Make optimization optional with flag --- 04_semantics_and_running/main.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/04_semantics_and_running/main.py b/04_semantics_and_running/main.py index 4765d51..141fb5d 100644 --- a/04_semantics_and_running/main.py +++ b/04_semantics_and_running/main.py @@ -903,6 +903,7 @@ if __name__ == '__main__': group.add_argument('-f', '--file', help='filename to process') parser.add_argument('-o', '--output', help='output filename for compiled code. default (a.out)', default='a.out') parser.add_argument('-a', '--assembly', help='output filename for generated assembly code') + parser.add_argument('-O', '--optimize', action='store_true', help='run simple optimization steps on the generated assembly code') parser.add_argument('-r', '--run', action='store_true', help='run the compiled code after compilation') args = parser.parse_args() @@ -923,7 +924,9 @@ if __name__ == '__main__': compile_data = CompileData(sem_data) compile_ast(ast, compile_data) - compile_data.optimize_assembly() + if args.optimize: + compile_data.optimize_assembly() + assembly = compile_data.get_full_code() if args.assembly is not None: @@ -933,4 +936,7 @@ if __name__ == '__main__': subprocess.run(['gcc', '-x', 'assembler', '-o', args.output, '-static', '-'], input=assembly, encoding='utf-8') if args.run: - subprocess.run([f'./{args.output}']) + if args.output.startswith('/'): + subprocess.run([args.output]) + else: + subprocess.run([f'./{args.output}'])