Пример #1
0
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
}
Пример #2
0
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;
}
Пример #3
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;
}