Ejemplo n.º 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
}
Ejemplo n.º 2
0
int main(int argc, char **argv) {
    if (argc != 2){
		fprintf(stderr, "usage: a.out filename\n");
		exit(1);
	}
	A_exp temp = parse(argv[1]);
	if (temp) {
		pr_exp(stdout, temp, 4);
		printf("\n-------------------------\n");
		SEM_transProg(temp);
	}
	return 0;
}
Ejemplo n.º 3
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;
}
int main(int argc, char **argv)
{
  extern int yydebug;
  yydebug = 1;

  if (argc < 2) {
    fprintf(stderr,"Utilize o comando da seguinte forma: compilador.tge filename -options\n");
    exit(1);
  }

  char *filename = argv[1];

  A_exp prg = parse(filename);
  int IS_ERRORS;
  if (prg != NULL)
  {
    printf("\n[ ANALISE SINTATICA ] Completada!! :) \n");
    printf("[ ANALISE SEMANTICA ] Iniciando!\n");
    SEM_transProg(prg, &IS_ERRORS);
    printf("[ ANALISE SEMANTICA ] Completada! :D \n");
  }else{
    printf("[ ANALISE SEMANTICA ] Não entrou! (ಠ_ಠ) \n");
  }

  if(!IS_ERRORS){
    char *treeFileName = malloc(500);
    sprintf(treeFileName, "%s",filename);
    treeFileName = remove_ext(treeFileName, '.', '/');
    strcat(treeFileName, ".arv");
    FILE* treefile = fopen(treeFileName, "w+");
    printf("[ EMISSÃO DA ARVORE ] Iniciando!\n");
    pr_exp(treefile, prg, 0);
    printf("[ EMISSÃO DA ARVORE ] Completada! XD \n");

    char *emit = "-llvm-emit";
    if(argc == 3 && (strcmp(emit, argv[2]) == 0)){
      printf("[ GERACAO DE CODIGO ] Iniciando!\n");
      geraCodigoIntermediario(filename, prg);
      printf("[ GERACAO DE CODGIO ] Completada! (͡° ͜ʖ ͡°)\n");
    }
  }

  return 0;
}
Ejemplo n.º 5
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;
}
Ejemplo n.º 6
0
int main(int argc,char **argv)
{
	T_exp IR_tree = NULL;
	char *filename=argv[1];
	A_exp AbstractSyntaxTree=NULL;


	/**********************************/
	/* [1] Build Abstract Syntax Tree */
	/**********************************/
	AbstractSyntaxTree = parse(filename);
	if (AbstractSyntaxTree == NULL) return 0;
	ABSYN_PrintTree(AbstractSyntaxTree,"ABSYN_Graph.txt");

	/*************************/
	/* [2] Semantic Analysis */
	/*************************/
	SEM_transProg(AbstractSyntaxTree);

	/***********************************/
	/* [3] Intermediate Representation */
	/***********************************/
	IR_tree = IR_transProg(AbstractSyntaxTree);
	IR_PrintTree(IR_tree,"IR_Graph.txt");

	/***********************/
	/* [4] Code Generation */
	/***********************/

	MIPS_ASM_CodeGeneration(IR_tree, "tiger_prog.s");

	/*************************/
	/* [5] Liveness Analysis */
	/*************************/

	/***************************/
	/* [6] Register Allocation */
	/***************************/
}
Ejemplo n.º 7
0
int main(int argc, char **argv) {
  if (argc!=2) {fprintf(stderr,"usage: a.out filename\n"); exit(1);}
  SEM_transProg(parse(argv[1]));
  printf("\n");
  return 0;
}