ack/util/topgen/main.c
2015-06-24 23:41:47 +01:00

70 lines
1.5 KiB
C

/* $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 <stdlib.h>
#include <stdio.h>
#include <stdarg.h>
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;
}