HELMER%SDNET.BITNET@vm1.nodak.edu (Guy Helmer) (07/31/89)
This posting contains the diffs and modified yasystem.h file that I
have created to port David Clunie's yacc to MINIX. I have compiled
my port with both TurboC and the MINIX C compiler, and each appears
to work. I have not included a makefile, and I have not tried using
the makefile that David posted.
Warnings:
1) This version does not use unique names for the files it
stores in /tmp, so don't run more than one copy at one
time (I'll fix this shortly).
2) This version uses _lots_ of temporary disk space. Running
yacc on the included csyntax.y file required more than the
155K I had available on /dev/ram; mounting a floppy as /tmp
fixed allowed 'yacc csyntax.y' to run to completion.
3) This program is _not_ speedy.
I compiled yacc by executing 'cc -T. -F -S -c ya*.c' and then
'cc -T. -i -o yacc *.s'. 'yacc' will abort with errors if it
doesn't have enough stack, so I used 'chmem =64000 /usr/bin/yacc'
on the executable I compiled with TurboC. Make sure that the
file 'yaccpar' gets put in '/usr/lib' with proper permissions.
File 'yalr0.c' had a broken line when it arrived in my mailbox
on BITNET; a corrected line is included as part of the fixes, so
if patch doesn't like one hunk of the fix to that file you'll
know why.
Enjoy!
-- Guy Helmer BITNET: HELMER@SDNET
Dakota State University Computing Services AT&T: (605) 256-5315
Madison, SD
----------------------------- cut here ---------------------------------
echo x - yacc.cdif
sed '/^X/s///' > yacc.cdif << '/'
X*** ../yacc/yaaug.c Sun Jul 30 16:10:56 1989
X--- yaaug.c Sun Jul 30 17:05:36 1989
X***************
X*** 27,35 ****
X /* Augment grammar with $accept : start $end ; */
X
X rule=addrule();
X! settok(send=chksym(ENDNAME),ENDTOKEN);
X! addlist(rule,sstart);
X! addlist(rule,send);
X setnont(sstart=chksym(ACCEPTNAME));
X sstart->rule=rule;
X rule->sym=sstart; /* not filled by addrule() */
X--- 27,35 ----
X /* Augment grammar with $accept : start $end ; */
X
X rule=addrule();
X! settok(mx_send=chksym(ENDNAME),ENDTOKEN);
X! addlist(rule,sstart);
X! addlist(rule,mx_send);
X setnont(sstart=chksym(ACCEPTNAME));
X sstart->rule=rule;
X rule->sym=sstart; /* not filled by addrule() */
X*** ../yacc/yacc.c Sun Jul 30 16:11:08 1989
X--- yacc.c Sun Jul 30 16:02:26 1989
X***************
X*** 38,44 ****
X int yyparse();
X void rdstr(),rdsym(),rdrule();
X #ifdef TRACE
X! dumpglbl();
X #endif
X void mkfirst(),frfirst();
X void lr0();
X--- 38,44 ----
X int yyparse();
X void rdstr(),rdsym(),rdrule();
X #ifdef TRACE
X! void dumpglbl();
X #endif
X void mkfirst(),frfirst();
X void lr0();
X***************
X*** 49,60 ****
X void txsort(),shsort();
X void rdprec(),frprec(),conf(),pack();
X void oppars();
X! clock_t t,f;
X!
X! init1(argc,argv); /* Phase 1 */
X if (o_debug) {
X t=clock();
X }
X if (yyparse() cnfatal) {
X exit(1);
X }
X--- 49,64 ----
X void txsort(),shsort();
X void rdprec(),frprec(),conf(),pack();
X void oppars();
X! #ifndef MINIX
X! clock_t t,f;
X! #endif
X!
X! init1(argc,argv); /* Phase 1 */
X! #ifndef MINIX
X if (o_debug) {
X t=clock();
X }
X+ #endif
X if (yyparse() cnfatal) {
X exit(1);
X }
X***************
X*** 115,126 ****
X--- 119,132 ----
X unlink(ngoto);
X oppars(); /* Phase 3 */
X unlink(naction);
X+ #ifndef MINIX
X if (o_debug) {
X f=100/CLK_TCK; /* make sure we have 1/100ths of a second */
X t=(clock()-t)*f;
X printf("Elapsed time %lu.%02lu seconds \n",
X (long)(t/100),(long)(t%100));
X }
X+ #endif
X exit(0);
X }
X
X*** ../yacc/yaconf.c Sun Jul 30 16:11:34 1989
X--- yaconf.c Sun Jul 30 16:02:31 1989
X***************
X*** 62,69 ****
X
X message("conf:");
X
X! ftrans=xopen(ntrans,"rb");
X! fshift=xopen(nshift,"wb");
X if (o_verbose) {
X foutput=xopen(noutput,"w");
X fconflict=foutput; /* Conflicts go with description */
X--- 62,69 ----
X
X message("conf:");
X
X! ftrans=xopen(ntrans,READ_BINARY);
X! fshift=xopen(nshift,WRITE_BINARY);
X if (o_verbose) {
X foutput=xopen(noutput,"w");
X fconflict=foutput; /* Conflicts go with description */
X***************
X*** 71,77 ****
X else {
X fconflict=stderr; /* Conflicts go to stderr */
X }
X! fitem=xopen(nitem,"rb");
X
X yxdef=(int *)xalloc(cnstate*sizeof(int));
X
X--- 71,77 ----
X else {
X fconflict=stderr; /* Conflicts go to stderr */
X }
X! fitem=xopen(nitem,READ_BINARY);
X
X yxdef=(int *)xalloc(cnstate*sizeof(int));
X
X*** ../yacc/yadefs.h Sun Jul 30 16:11:57 1989
X--- yadefs.h Sun Jul 30 17:06:19 1989
X***************
X*** 305,311 ****
X
X /* ****** Storage declaration/definition ****** */
X
X! DEFMAC SYMBOL *send; /* Define end marker */
X DEFMAC SYMBOL *sstart; /* Define start symbol */
X DEFMAC SYMBOL *shead; /* Head of thread thru symbols */
X
X--- 305,311 ----
X
X /* ****** Storage declaration/definition ****** */
X
X! DEFMAC SYMBOL *mx_send; /* Define end marker */
X DEFMAC SYMBOL *sstart; /* Define start symbol */
X DEFMAC SYMBOL *shead; /* Head of thread thru symbols */
X
X*** ../yacc/yagoto.c Sun Jul 30 16:12:34 1989
X--- yagoto.c Sun Jul 30 16:02:52 1989
X***************
X*** 28,34 ****
X
X message("mkgoto:");
X
X! fgoto=xopen(ngoto,"wb");
X
X trace(("mkgoto: cnntx=%d sizeof(NTXTAB)=%d *=%d\n",
X cnntx,sizeof(NTXTAB),cnntx*sizeof(NTXTAB) ));
X--- 28,34 ----
X
X message("mkgoto:");
X
X! fgoto=xopen(ngoto,WRITE_BINARY);
X
X trace(("mkgoto: cnntx=%d sizeof(NTXTAB)=%d *=%d\n",
X cnntx,sizeof(NTXTAB),cnntx*sizeof(NTXTAB) ));
X*** ../yacc/yaincon.c Sun Jul 30 16:12:40 1989
X--- yaincon.c Sun Jul 30 16:02:55 1989
X***************
X*** 29,35 ****
X cnincon,sizeof(int),cnincon*sizeof(int)));
X ist=(int *)xalloc(cnincon*sizeof(int));
X
X! fitem=xopen(nitem,"rb");
X
X n=basest=ibase=i=0; /* fitem file sorted by state number */
X for (;;) {
X--- 29,35 ----
X cnincon,sizeof(int),cnincon*sizeof(int)));
X ist=(int *)xalloc(cnincon*sizeof(int));
X
X! fitem=xopen(nitem,READ_BINARY);
X
X n=basest=ibase=i=0; /* fitem file sorted by state number */
X for (;;) {
X*** ../yacc/yainit1.c Sun Jul 30 16:12:52 1989
X--- yainit1.c Sun Jul 30 16:02:59 1989
X***************
X*** 22,27 ****
X--- 22,31 ----
X
X #include "yadefs.h"
X
X+ #ifdef MINIX
X+ #include <ctype.h>
X+ #endif
X+
X void
X init1(argc,argv)
X int argc;
X*** ../yacc/yalr0.c Sun Jul 30 16:13:53 1989
X--- yalr0.c Sun Jul 30 16:03:13 1989
X***************
X*** 53,59 ****
X
X cnstate=0;
X cnrtx=cnntx=cnttx=0;
X! ftrans=xopen(ntrans,"wb");
X
X stlast=NULL; /* None added yet */
X
X--- 53,59 ----
X
X cnstate=0;
X cnrtx=cnntx=cnttx=0;
X! ftrans=xopen(ntrans,WRITE_BINARY);
X
X stlast=NULL; /* None added yet */
X
X***************
X*** 125,132 ****
X TRANS *tr;
X int itemcmp();
X
X! trace2(("mrgtrans: entering atrlist=%08lx
X! trlist=%08lx\n",atrlist,*atrlist));
X
X while (tr= *atrlist) { /* "= *" avoids old assignment op */
X trace2(("mrgtrans: transition on %s from state number %d\n",
X--- 125,131 ----
X TRANS *tr;
X int itemcmp();
X
X! trace2(("mrgtrans: entering atrlist=%08lx trlist=%08lx\n",
X atrlist,*atrlist));
X
X while (tr= *atrlist) { /* "= *" avoids old assignment op */
X trace2(("mrgtrans: transition on %s from state number %d\n",
X***************
X*** 386,392 ****
X void opstate();
X STATE *st;
X
X! fitem=xopen(nitem,"wb");
X cnincon=0; /* Count of complete items in inconsistent states */
X cncxst=0; /* Count of complex states */
X cncxit=0; /* Count of complete items in complex states */
X--- 385,391 ----
X void opstate();
X STATE *st;
X
X! fitem=xopen(nitem,WRITE_BINARY);
X cnincon=0; /* Count of complete items in inconsistent states */
X cncxst=0; /* Count of complex states */
X cncxit=0; /* Count of complete items in complex states */
X***************
X*** 463,467 ****
X printf("\n");
X }
X
X! #endif
X!
X--- 462,488 ----
X printf("\n");
X }
X
X! #else
X! #ifdef TRACE
X!
X! static void
X! dpitem(it)
X! ITEM *it;
X! {
X! int i,end,dposn;
X!
X! end=lngrule(it->rule)+1;
X! dposn=it->dposn ? it->dposn : end;
X! printf("\t%s\t: ",namesym(rulesymit->rule|));
X! for (i=1; i<dposn; ++i) {
X! printf("%s ",namesym(rhssym(it,i)));
X! }
X! printf("_ ");
X! for (i=dposn; i<end; ++i) {
X! printf("%s ",namesym(rhssym(it,i)));
X! }
X! printf("\n");
X! }
X!
X! #endif
X! #endif
X*** ../yacc/yaoppars.c Sun Jul 30 16:14:02 1989
X--- yaoppars.c Sun Jul 30 16:03:18 1989
X***************
X*** 28,34 ****
X for (;;) {
X if ((c=getc(fyaccpar)) == '$') {
X if ((c=getc(fyaccpar)) == 'A') {
X! faction=xopen(naction,"rb");
X for (;;) {
X c=getc(faction);
X if (iseofchar(c)) break;
X--- 28,34 ----
X for (;;) {
X if ((c=getc(fyaccpar)) == '$') {
X if ((c=getc(fyaccpar)) == 'A') {
X! faction=xopen(naction,READ_BINARY);
X for (;;) {
X c=getc(faction);
X if (iseofchar(c)) break;
X*** ../yacc/yaopsym.c Sun Jul 30 16:14:16 1989
X--- yaopsym.c Sun Jul 30 16:03:21 1989
X***************
X*** 72,79 ****
X }
X } while (swap);
X
X! fsymbol=xopen(nsymbol,"wb");
X! fstring=xopen(nstring,"wb");
X
X stroff=0;
X
X--- 72,79 ----
X }
X } while (swap);
X
X! fsymbol=xopen(nsymbol,WRITE_BINARY);
X! fstring=xopen(nstring,WRITE_BINARY);
X
X stroff=0;
X
X***************
X*** 218,225 ****
X nonterminals having sequence from cntok onwards
X */
X
X! frule=xopen(nrule,"wb");
X! frhs=xopen(nrhs,"wb");
X ruleoff=0;
X rhsoff=0;
X
X--- 218,225 ----
X nonterminals having sequence from cntok onwards
X */
X
X! frule=xopen(nrule,WRITE_BINARY);
X! frhs=xopen(nrhs,WRITE_BINARY);
X ruleoff=0;
X rhsoff=0;
X
X*** ../yacc/yapack.c Sun Jul 30 16:14:43 1989
X--- yapack.c Sun Jul 30 16:03:27 1989
X***************
X*** 117,123 ****
X /* space to avoid old assign op */
X head=NULL; /* No groups to start with */
X
X! fshift=xopen(nshift,"rb");
X vhead=NULL; /* No value list yet */
X getshift(); /* Lookahead */
X nont=0; /* isbase() doesn't check gotos yet */
X--- 117,123 ----
X /* space to avoid old assign op */
X head=NULL; /* No groups to start with */
X
X! fshift=xopen(nshift,READ_BINARY);
X vhead=NULL; /* No value list yet */
X getshift(); /* Lookahead */
X nont=0; /* isbase() doesn't check gotos yet */
X***************
X*** 127,133 ****
X }
X xclose(fshift,nshift);
X
X! fgoto=xopen(ngoto,"rb");
X clearv(&vhead);
X getgoto();
X st=cnstate; /* Make isbase() check all states */
X--- 127,133 ----
X }
X xclose(fshift,nshift);
X
X! fgoto=xopen(ngoto,READ_BINARY);
X clearv(&vhead);
X getgoto();
X st=cnstate; /* Make isbase() check all states */
X*** ../yacc/yaparse.c Sun Jul 30 16:15:10 1989
X--- yaparse.c Sun Jul 30 16:03:33 1989
X***************
X*** 261,267 ****
X #endif
X
X #if YYFULLERR
X! static void yyterror();
X #endif
X
X #if YYUNION
X--- 261,268 ----
X #endif
X
X #if YYFULLERR
X! /*static void yyterror();*/
X! extern void yyterror();
X #endif
X
X #if YYUNION
X***************
X*** 451,457 ****
X
X #line 62
X
X! faction=xopen(naction,"wb");
X
X section=RULES;
X nextrule=1;
X--- 452,458 ----
X
X #line 62
X
X! faction=xopen(naction,WRITE_BINARY);
X
X section=RULES;
X nextrule=1;
X***************
X*** 654,660 ****
X SYMBOL *sym;
X static char name13| = "$$";
X
X! itoa(nextrule,&name2|,10); /* Use seq number */
X sym=chksym(name);
X setnont(sym); /* As dummy nont */
X sym->rule=r=addrule(sym);
X--- 655,665 ----
X SYMBOL *sym;
X static char name13| = "$$";
X
X! #ifdef MINIX
X! strcpy(&name2|, itoa(nextrule)); /* Use seq number */
X! #else
X! itoa(nextrule,&name2|,10); /* Use seq number */
X! #endif
X sym=chksym(name);
X setnont(sym); /* As dummy nont */
X sym->rule=r=addrule(sym);
X*** ../yacc/yardprec.c Sun Jul 30 16:15:37 1989
X--- yardprec.c Sun Jul 30 16:03:36 1989
X***************
X*** 22,28 ****
X
X message("rdprec:");
X
X! fsymbol=xopen(nsymbol,"rb"); /* Read symbols */
X
X (void)getw(fsymbol);
X (void)getw(fsymbol);
X--- 22,28 ----
X
X message("rdprec:");
X
X! fsymbol=xopen(nsymbol,READ_BINARY); /* Read symbols */
X
X (void)getw(fsymbol);
X (void)getw(fsymbol);
X***************
X*** 42,48 ****
X
X xclose(fsymbol,nsymbol);
X
X! frule=xopen(nrule,"rb"); /* Read rules */
X
X (void)getw(frule);
X (void)getw(frule);
X--- 42,48 ----
X
X xclose(fsymbol,nsymbol);
X
X! frule=xopen(nrule,READ_BINARY); /* Read rules */
X
X (void)getw(frule);
X (void)getw(frule);
X*** ../yacc/yardtx.c Sun Jul 30 16:15:44 1989
X--- yardtx.c Sun Jul 30 16:03:39 1989
X***************
X*** 27,33 ****
X
X message("rdtx:");
X
X! ftrans=xopen(ntrans,"rb");
X
X trace(("rdtx: allocating ntxtab size cnntx %u * size %u = %u\n",
X cnntx,sizeof(NTXTAB),cnntx*sizeof(NTXTAB)));
X--- 27,33 ----
X
X message("rdtx:");
X
X! ftrans=xopen(ntrans,READ_BINARY);
X
X trace(("rdtx: allocating ntxtab size cnntx %u * size %u = %u\n",
X cnntx,sizeof(NTXTAB),cnntx*sizeof(NTXTAB)));
X*** ../yacc/yaread.c Sun Jul 30 16:15:53 1989
X--- yaread.c Sun Jul 30 16:03:42 1989
X***************
X*** 34,40 ****
X
X message("rdstr:");
X
X! fstring=xopen(nstring,"rb"); /* Read string file */
X cnstr=getw(fstring);
X p=strarea=xalloc(cnstr);
X for (i=0; i<cnstr; ++i) {
X--- 34,40 ----
X
X message("rdstr:");
X
X! fstring=xopen(nstring,READ_BINARY); /* Read string file */
X cnstr=getw(fstring);
X p=strarea=xalloc(cnstr);
X for (i=0; i<cnstr; ++i) {
X***************
X*** 50,56 ****
X
X message("rdsym:");
X
X! fsymbol=xopen(nsymbol,"rb"); /* Read symbols */
X
X cntok=getw(fsymbol);
X cnnont=getw(fsymbol);
X--- 50,56 ----
X
X message("rdsym:");
X
X! fsymbol=xopen(nsymbol,READ_BINARY); /* Read symbols */
X
X cntok=getw(fsymbol);
X cnnont=getw(fsymbol);
X***************
X*** 109,115 ****
X
X message("rdrule:");
X
X! frule=xopen(nrule,"rb"); /* Read rules */
X
X cnrule=getw(frule);
X cntok=getw(frule); /* cntok gives offset for nont seq */
X--- 109,115 ----
X
X message("rdrule:");
X
X! frule=xopen(nrule,READ_BINARY); /* Read rules */
X
X cnrule=getw(frule);
X cntok=getw(frule); /* cntok gives offset for nont seq */
X***************
X*** 138,144 ****
X }
X xclose(frule,nrule);
X
X! frhs=xopen(nrhs,"rb");
X cnrhs=getw(frhs);
X rulerhscnrule|=cnrhs; /* Note dummy entry */
X rhs=(int *)xalloc(cnrhs*sizeof(int));
X--- 138,144 ----
X }
X xclose(frule,nrule);
X
X! frhs=xopen(nrhs,READ_BINARY);
X cnrhs=getw(frhs);
X rulerhscnrule|=cnrhs; /* Note dummy entry */
X rhs=(int *)xalloc(cnrhs*sizeof(int));
X*** ../yacc/yareln.c Sun Jul 30 16:16:06 1989
X--- yareln.c Sun Jul 30 16:03:46 1989
X***************
X*** 76,82 ****
X }
X }
X
X! ftr2=xopen(ntr2,"rb");
X
X lastrule=-1; /* For first time through */
X /* Don't finish off rule -1 ! */
X--- 76,82 ----
X }
X }
X
X! ftr2=xopen(ntr2,READ_BINARY);
X
X lastrule=-1; /* For first time through */
X /* Don't finish off rule -1 ! */
X*** ../yacc/yasort.c Sun Jul 30 16:16:18 1989
X--- yasort.c Sun Jul 30 16:03:50 1989
X***************
X*** 102,108 ****
X
X gname(high);
X unlink(outname);
X! rename(name,outname);
X return 0;
X }
X
X--- 102,115 ----
X
X gname(high);
X unlink(outname);
X! #ifdef MINIX
X! if (link(name,outname))
X! perror("sort() : error returned from link");
X! if (unlink(name))
X! perror("sort() : error returned from unlink");
X! #else
X! rename(name,outname);
X! #endif
X return 0;
X }
X
X***************
X*** 138,144 ****
X
X strcpy(name,namepath);
X strcat(name,prefix);
X! (void)itoa(n,name+strlen(name),10);
X strcat(name,suffix);
X trace(("gname: <%s>\n",name));
X }
X--- 145,155 ----
X
X strcpy(name,namepath);
X strcat(name,prefix);
X! #ifdef MINIX
X! strcat(name,itoa(n)); /* #$%@! MINIX itoa() is screwy! */
X! #else
X! (void)itoa(n,name+strlen(name),10);
X! #endif
X strcat(name,suffix);
X trace(("gname: <%s>\n",name));
X }
X*** ../yacc/yasym.c Sun Jul 30 16:16:24 1989
X--- yasym.c Sun Jul 30 16:05:30 1989
X***************
X*** 93,99 ****
X
X i=0;
X while (*s) {
X! i+=*s++ & HASHMASK;
X if (*s) i+=(*s++ & HASHMASK)<<HASHIFT;
X }
X return i%HASHSIZE;
X--- 93,99 ----
X
X i=0;
X while (*s) {
X! i += (*s++) & HASHMASK;
X if (*s) i+=(*s++ & HASHMASK)<<HASHIFT;
X }
X return i%HASHSIZE;
X*** ../yacc/yatxsort.c Sun Jul 30 16:16:40 1989
X--- yatxsort.c Sun Jul 30 16:03:59 1989
X***************
X*** 53,66 ****
X rtxrop(name)
X char *name;
X {
X! return xopen(name,"rb");
X }
X
X static FILE *
X rtxwop(name)
X char *name;
X {
X! return xopen(name,"wb");
X }
X
X static void
X--- 53,66 ----
X rtxrop(name)
X char *name;
X {
X! return xopen(name,READ_BINARY);
X }
X
X static FILE *
X rtxwop(name)
X char *name;
X {
X! return xopen(name,WRITE_BINARY);
X }
X
X static void
/
echo x - yasystem.h
sed '/^X/s///' > yasystem.h << '/'
X/* yapcdos.h 08-Jul-89 Implementation dependent things for IBM PC DOS */
X
X/* Copyright 1987,1988,1989 David A. Clunie. All rights reserved.
X PO Box 811, Parkville 3052 AUSTRALIA.
X This program may be freely distributed for non-commercial use. */
X
X#define MINIX
X/* defined for debugging */
X/* #define TRACE */
X
X#ifdef __ZTC__
X#define SYSTEM "PC-DOS ZTC (file)"
X#else
X#ifdef MINIX
X#define SYSTEM "MINIX"
X#else
X#define SYSTEM "PC-DOS (file)"
X#endif
X#endif
X
X/* #define PCDOS */
X
X#ifdef __ZTC__
X
X#define STDLIBHEAD <stdlib.h> /* define if stdlib.h needed */
X#define STRINGHEAD <string.h> /* define if string.h needed */
X#define TIMEHEAD <time.h> /* define if time.h needed */
X
X#else /* assume Aztec C */
X
Xchar *malloc();
Xchar *realloc();
X
Xtypedef long clock_t;
X#define clock() (0l)
X
X#endif
X
X#ifdef __ZTC__
X#define TTYHEAD <io.h> /* define only if isatty() needs io.h */
X#else /* assume Aztec C */
X#define TTYHEAD <sgtty.h> /* define only if isatty() needs sgtty.h */
X#endif
X
X#ifdef MINIX
X#define iseofchar(c) ( (c) == EOF (c) == 0x04 ) /* ctrl-D? */
X#else
X#define iseofchar(c) ( c == EOF c == 0x1a ) /* ctrl-Z */
X#endif
X
X#define BITSTR unsigned int /* Type of word used for bit strings */
X
X#define SORTTABLE 3000 /* size of pointer table in txsort() */
X /* larger -> longer runs */
X#ifdef __ZTC__
X#define NEEDGETW /* include x...w() in yautil.c */
X#define getw(f) xgetw(f)
X#define putw(u,f) xputw(u,f)
X#define rdstrch(f) xgetw(f)
X#define wrstrch(u,f) xputw(u,f)
X#else /* assume Aztec C */
X#ifdef MINIX
X#define NEEDGETW /* include x...w() in yautil.c */
X#define getw(f) xgetw(f)
X#define putw(u,f) xputw(u,f)
X#define rdstrch(f) xgetw(f)
X#define wrstrch(u,f) xputw(u,f)
X#else
X#define rdstrch(f) getc(f)
X#define wrstrch(u,f) putc(u,f)
X#endif
X#endif
X
X/* set PATHSEPARATOR to null string "" if paths not implemented */
X#ifndef PATHSEPARATOR
X#ifdef MINIX
X#define PATHSEPARATOR "/"
X#else
X#define PATHSEPARATOR "\\"
X#endif
X#endif
X
X/* leave TMPENVPATH undefined if compiler can't access environment */
X#ifndef TMPENVPATH /* if not defined on compile line */
X#define TMPENVPATH "TMP" /* where to find path for temp files */
X#endif
X/* set TMPDEFPATH to null string "" (current directory) if no paths */
X#ifndef TMPDEFPATH /* if not defined on compile line */
X#ifdef MINIX
X#define TMPDEFPATH "/tmp"
X#else
X#define TMPDEFPATH "" /* path to use if not in environment */
X#endif
X#endif
X
X/* leave SKELENVPATH undefined if compiler can't access environment */
X#ifndef SKELENVPATH /* if not defined on compile line */
X#define SKELENVPATH "YYSKELETON" /* where to find path for skeleton */
X#endif
X/* set SKELDEFPATH to null string "" (current directory) if no paths */
X#ifndef SKELDEFPATH /* if not defined on compile line */
X#ifdef MINIX
X#define SKELDEFPATH "/usr/lib"
X#else
X#define SKELDEFPATH "c:\\util" /* path to use if not in environment */
X#endif
X#endif
X#ifndef SKELDEFNAME /* if not defined on compile line */
X#define SKELDEFNAME "yaccpar" /* path to use if not in environment */
X#endif
X
X#ifndef YTABHDEFNAME /* if not defined on compile line */
X#define YTABHDEFNAME "ytab.h"
X#endif
X#ifndef YTABCDEFNAME /* if not defined on compile line */
X#define YTABCDEFNAME "ytab.c"
X#endif
X#ifndef YOUTDEFNAME /* if not defined on compile line */
X#define YOUTDEFNAME "youtput"
X#endif
X
X#ifdef MINIX
X#define READ_BINARY "r"
X#define WRITE_BINARY "w"
X#else
X#define READ_BINARY "rb"
X#define WRITE_BINARY "wb"
X#endif
X
/
exit 0