def run_compiler(s, logging=False): """ Run the compiler on an input program. :param s: An RVar program, as a string. :param logging: Whether or not to print out debugging information. :return: An x86 program, as a string """ current_program = parse_rvar(s) if logging == True: print() print('==================================================') print(' Input program') print('==================================================') print() print(print_ast(current_program)) for pass_name, pass_fn in compiler_passes.items(): current_program = pass_fn(current_program) if logging == True: print() print('==================================================') print(f' Output of pass: {pass_name}') print('==================================================') print() print(print_ast(current_program)) return current_program
def __str__(self): pairs = set() for k in self.graph.keys(): new_pairs = set((k, v) for v in self.graph[k]) pairs = pairs.union(new_pairs) for a, b in list(pairs): if (b, a) in pairs: pairs.remove((a, b)) strings = [print_ast(a) + ' -- ' + print_ast(b) for a, b in pairs] return 'InterferenceGraph{\n ' + ',\n '.join(strings) + '\n}'
def __str__(self): strings = [] for k, v in dict(self.graph).items(): if isinstance(k, (x86.Var, x86.VecVar)): t = ', '.join([print_ast(i) for i in v]) tt = '\n '.join(textwrap.wrap(t)) strings.append(f'{print_ast(k)}: {tt}') lines = '\n '.join(strings) return f'InterferenceGraph (\n {lines}\n )\n'
def run_compiler(s, logging=False): current_program = parse_rvar(s) if logging == True: print() print('==================================================') print(' Input program') print('==================================================') print() print(print_ast(current_program)) for pass_name, pass_fn in compiler_passes.items(): current_program = pass_fn(current_program) if logging == True: print() print('==================================================') print(f' Output of pass: {pass_name}') print('==================================================') print() print(print_ast(current_program)) return current_program