/* $Id$ */ /* * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands. * See the copyright notice in the ACK home directory, in the file "Copyright". */ /* m a i n . c * * Contains the main program, the error reporting routine, and a routine * to check wether a constraint consists only of space */ #include #include #include extern int lineno, newline; FILE *genc, *genh, *input; static int nerrors; char *linedir = "#line %d \"%s\"\n"; /* format of line directive */ char *inpfile; /* From Lexer */ void LLparse(void); int main(int argc, char *argv[]) { newline = 1; if (argc != 2) { fprintf(stderr,"Usage : %s targetoptimizerdescription\n",argv[0]); exit(1); } if ((input = fopen(argv[1],"r")) == NULL) { fprintf(stderr,"Fatal error : couldn't open %s\n",argv[1]); exit(1); } if ((genc = fopen("gen.c","w")) == NULL) { fputs("Fatal error : couldn't open gen.c\n",stderr); exit(1); } if ((genh = fopen("gen.h","w")) == NULL) { fputs("Fatal error : couldn't open gen.h\n",stderr); exit(1); } inpfile = argv[1]; /* needed for line directives and errors */ LLparse(); exit(nerrors); } /* VARARGS1 */ void error(char *s, ...) { va_list va; nerrors++; fprintf(stderr,"\"%s\", line %d: ",inpfile,lineno); va_start(va, s); vfprintf(stderr, s, va); va_end(va); putc('\n',stderr); } int onlyspace(char *s) { while (*s) { if (*s != ' ' && *s != '\t' && *s != '\n') return 0; s++; } return 1; }