2 * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
3 * See the copyright notice in the ACK home directory, in the file "Copyright".
11 static char rcs_id[] = "$Id: mktables.c,v 2.4 1994/06/24 10:12:56 ceriel Exp $" ;
23 main(argc,argv) char **argv ; {
27 for ( i=2 ; i<argc ; i++ ) {
35 start(dir) char *dir ; {
40 if ( tail!=dname ) *tail++= '/' ;
42 intab= fopen("intable.c","w");
43 dmach= fopen("dmach.c","w");
44 if ( intab==NULL || dmach==NULL ) {
45 fprintf(stderr,"Couln't create output file(s)\n");
48 fprintf(dmach,"#include \"dmach.h\"\n\ndmach\tmassoc[] = {\n") ;
49 fprintf(intab,"char intable[] = {\n") ;
53 fprintf(dmach,"\t{\"\",\t-1\t}\n} ;\n") ;
54 if ( !filled ) fprintf(intab,"\t0\n") ;
55 fprintf(intab,"\n} ;\n") ;
56 fclose(dmach); fclose(intab) ;
59 FILE *do_open(file) char *file ; {
65 if ((fd = fopen(dname,"r")) != NULL) return fd;
66 strcpy(tail,"descr/");
68 return fopen(dname,"r");
78 fprintf(stderr,"Cannot open %s\n",fname) ;
82 fprintf(dmach,"\t{\"%s\",\t%d\t},\n",fname,index) ;
83 fprintf(intab,"\n/* %s */\n\t",fname) ;
88 fprintf(intab,"\n\t") ;
93 if ( !isascii(token) || !(isprint(token) || isspace(token)) ){
95 fprintf(stderr,"warning: non-ascii in %s\n",fname) ;
96 fprintf(intab,"%4d,",token) ;
98 fprintf(intab," 0,",token) ;
101 } else if ( isprint(token) ) {
103 case '\'': fprintf(intab,"'\\''") ; break ;
104 case '\\': fprintf(intab,"'\\\\'") ; break ;
105 default: fprintf(intab," '%c'",token) ; break ;
107 } else switch ( token ) {
108 case '\n' : fprintf(intab,"'\\n'") ; break ;
109 case '\t' : fprintf(intab,"'\\t'") ; break ;
110 case '\r' : fprintf(intab,"'\\r'") ; break ;
111 case '\f' : fprintf(intab,"'\\f'") ; break ;
112 case ' ' : fprintf(intab," ' '") ; break ;
113 default : fprintf(stderr,"warning: unrec. %d\n",
115 fprintf(intab,"%4d",token) ;