int main(int argc, string *argv) { #if 0 Temp_temp a1 = Temp_namedtemp(1), a2 = Temp_namedtemp(2), a3 = Temp_namedtemp(3), a4 = Temp_namedtemp(4), a5 = Temp_namedtemp(5); Temp_tempList a = Temp_TempList(a1, Temp_TempList(a2, Temp_TempList(a3, NULL))), b = Temp_TempList(a2, Temp_TempList(a4, NULL)); printf("union: "); printTempList(unionn(a, b)); printf("except: "); printTempList(except(a,b)); #endif #if 1 A_exp absyn_root; S_table base_env, base_tenv; F_fragList frags; char outfile[100]; FILE *out = stdout; if (argc==2) { absyn_root = parse(argv[1]); if (!absyn_root) return 1; //pr_exp(stdout,absyn_root, 4); frags = SEM_transProg(absyn_root); if (anyErrors) return 1; /* don't continue */ /* convert the filename */ sprintf(outfile, "%s.s", argv[1]); out = fopen(outfile, "w"); for (;frags;frags=frags->tail) { if (frags->head->kind == F_procFrag) { //puts(Temp_labelstring(F_name(frags->head->u.proc.frame))); doProc(out, frags->head->u.proc.frame, frags->head->u.proc.body); } else if (frags->head->kind == F_stringFrag) { fprintf(out, "%s: %s\n",Temp_labelstring(frags->head->u.stringg.label), frags->head->u.stringg.str); } else assert(0); } fclose(out); return 0; } EM_error(0,"usage: tiger file.tig"); return 1; #endif }
int main(int argc, string *argv) { root = NULL; string file_name = argv[1]; FILE *tree_out = stdout; FILE *graph_out; graph_out = fopen("graph.dot", "w+"); F_fragList fragList; parse(file_name); fragList = SEM_transProg(root); // print_graph_frag_exp(graph_out, fragList); doProc(graph_out, fragList->head->u.proc.frame, fragList->head->u.proc.body); return 0; }
int main(int argc, char *argv[]) { A_exp absyn_root; F_fragList frags; char outfile[100]; FILE *out = NULL; if (argc == 2) { absyn_root = parse(argv[1]); if (!absyn_root) return 1; #if 0 pr_exp(out, absyn_root, 0); /* print absyn data structure */ fprintf(out, "\n"); #endif Esc_findEscape(absyn_root); /* set varDec's escape field */ frags = SEM_transProg(absyn_root); if (anyErrors) return 1; /* don't continue */ /* convert the filename */ sprintf(outfile, "%s.s", argv[1]); /* Chapter 8 */ for (;frags;frags=frags->tail) if (frags->head->kind == F_procFrag) doProc(out, frags->head->u.proc.frame, frags->head->u.proc.body); else if (frags->head->kind == F_stringFrag) { if (out == NULL) { out = fopen(outfile, "w"); if (out == NULL) assert(0 && "Cannot create file."); } fprintf(out, "%s\n", frags->head->u.stringg.str); } if (out) fclose(out); return 0; } EM_error(0,"usage: tiger file.tig"); return 1; }