from compiler import run_compiler from r0_parser import parse_rvar from interpreter import eval_rvar from cs202_support import eval_x86 for file_name in sorted(os.listdir('tests')): if file_name.endswith('.r0'): with open('tests/' + file_name) as f: print(f'Testing program {file_name}...') try: program = f.read() ast = parse_rvar(program) interpreter_result = eval_rvar(ast) x86_program = run_compiler(program, logging=False) emu = eval_x86.X86Emulator(logging=False) x86_output = emu.eval_program(x86_program) if len(x86_output ) == 1 and x86_output[0] == interpreter_result: print('Test passed') else: print('Test failed!') print('Interpreter result:', interpreter_result) print('Compiled x86 result:', x86_output) print() except Exception as e: print('Test FAILED! Error:', e)
files = sorted(os.listdir('data')) data = [] for file_name in files: if file_name.endswith('.rfun'): with open('data/' + file_name) as f: print(f'Running file {file_name}...') try: program = f.read() ast = parse_rfun(program) interpreter_result = eval_rfun(ast) emu = eval_x86.X86Emulator(logging=False) x86_program, live_data = run_compiler( program, "graph_color", logging=False ) #TODO: edit compiler to take in allocation method start = timeit.default_timer() x86_output = emu.eval_program(x86_program) stop = timeit.default_timer() gc_runtime = start - stop x86_program, live_data = run_compiler( program, "linear_scan", logging=False ) #TODO: edit compiler to take in allocation method start = timeit.default_timer() x86_output = emu.eval_program(x86_program) stop = timeit.default_timer() ls_runtime = start - stop if gc_runtime > ls_runtime: