def write_to_code_file(mode, data, path_to_load, path_to_export, path_raw_code): g = data.grammar nt = {v: reverse_typename(k) for k, v in g.node_type_to_id.items()} #print(nt,g.node_type_to_id) v = data.terminal_vocab raw = [] with open(path_raw_code, 'r') as f: for line in f: raw.append(line[:-1]) with open(path_to_load, 'r') as f: l = json.load(f, encoding='utf8') l_code = [] for i in range(len(l)): # print(raw[i]) try: t = ASTNode.from_dict(l[i], nt, v) ast_tree = parse.decode_tree_to_python_ast(t) code = astor.to_source(ast_tree)[:-1] real_code = parse.de_canonicalize_code(code, raw[i]) if (mode == "hs"): real_code = " ".join(parse.tokenize_code_adv( real_code, True)).replace("\n", "#NEWLINE#").replace( "#NEWLINE# ", "").replace("#INDENT# ", "") real_code = " ".join(parse.tokenize_code_adv(real_code, False)) #print(real_code,raw[i]) l_code.append(real_code) except: print "Tree %d impossible to parse" % (i) l_code.append("") with open(path_to_export, 'w') as f: for c in l_code: f.write(c + "\n")
return reverse_typename(t[:-1]) else: return vars(ast)[t] if __name__ == '__main__': flag = "hs" path_to_load = "../data/exp/results/test_hs_10_iter.json" if flag == "django": train_data, dev_data, test_data = deserialize_from_file("../../django.cleaned.dataset.freq5.par_info.refact.space_only.bin") elif flag == "hs": train_data, dev_data, test_data = deserialize_from_file("../../hs.freq3.pre_suf.unary_closure.bin") data = test_data g = data.grammar nt = {v:reverse_typename(k) for k,v in g.node_type_to_id.items()} #print(nt,g.node_type_to_id) v = data.terminal_vocab results = [] with open(path_to_load,'r') as f: l = json.load(f, encoding='utf8') for i in range(len(l)): t = ASTNode.from_dict(l[i], nt,v) ast_tree = parse.decode_tree_to_python_ast(t) results.append(ast_tree) evaluate_decode_results(flag, test_data, results, verbose=True)