int main(int argc, char *argv[]) { if(argc<2) { printf("Please select an input file\n"); exit(0); } FILE *fp=fopen(argv[1],"r"); if(!fp) { printf("couldn't open file for reading\n"); exit(0); } char funcName[100]; StmtRepresentation* result = NULL; yyin=fp; typeTable = CreateTypeNameTable(); program = CreateProgramNode(); yyparse(); DebugProgramNode(program); printf("Enter a function name to be traced: "); scanf("%s", funcName); opTrace = NULL; symTable = CreateSymTable(); g_operation_id = 0; lastIssueOP = NULL; result = TraceFuncNode(program, funcName, NULL); DeleteStmtRepresentation(result); ShowOPTrace(opTrace); CalculateCriticalPath(opTrace); /* Delete Symbol Table */ DeleteSymbolTable(symTable); DeleteOPTrace(opTrace); DeleteTypeNameTable(typeTable); DeleteProgramNode(program); fclose(fp); }
VOID Error (STRPTR Msg, BOOL PrintLine) { struct FileDetails *f; if (PrintLine) { fprintf (stderr, "%s", Line); fprintf (stderr, "Error: Line %d ", LineNo); } fprintf (stderr, "%s\n", Msg); if (ErrorSym) { printf ("\nSymbol table\n"); DisplaySymbolTable (FALSE); } DeleteSymbolTable (); fclose (In); if (Pass == 2) fclose (Op); while (Fd) { f = Fd->Prev; free (Fd); Fd = f; } if (DoList) fclose (Lst); exit (20); }